2using System.Collections.Generic;
5using System.Runtime.Serialization;
110 SetBonus(1000000000, 50000);
111 SetBonus(100000000, 20000);
112 SetBonus(10000000, 10000);
113 SetBonus(500000, 5000);
114 SetBonus(250000, 3000);
115 SetBonus(100000, 2000);
116 SetBonus(20000, 1000);
121 void SetBonus(
int threshold,
int div)
125 p += (_a - threshold) / div;
143 public int[]
ints =
new int[50];
159 public Dictionary<string, ExcelData>
storyExcel =
new Dictionary<string, ExcelData>();
542 bits.Bits = (uint)
ints[0];
555 if (
build == 0 && r.
id ==
"workbench")
570 if (
item[
"step"] == idStep)
572 return item[
"id"].ToInt();
578 public Dictionary<string, string>
GetStoryRow(
string idBook,
int id)
582 if (
item[
"id"].ToInt() ==
id)
593 if (excelData ==
null)
596 excelData.path = CorePath.DramaData + idBook +
".xlsx";
603 public bool PlayStory(
string idBook,
int id,
bool fromBook =
false)
609 Dictionary<string, string> storyRow =
GetStoryRow(idBook,
id);
610 SoundManager.ForceBGM();
611 LayerDrama.fromBook = fromBook;
841 public Dictionary<string, int>
dialogFlags =
new Dictionary<string, int>();
844 public Dictionary<string, string>
hangIcons =
new Dictionary<string, string>();
847 public Dictionary<string, KnownSong>
knownSongs =
new Dictionary<string, KnownSong>();
850 public Dictionary<string, string>
lastRecipes =
new Dictionary<string, string>();
853 public Dictionary<string, List<string>>
priorityActions =
new Dictionary<string, List<string>>();
919 public Dictionary<int, int>
keyItems =
new Dictionary<int, int>();
928 public Dictionary<string, HashSet<string>>
noRestocks =
new Dictionary<string, HashSet<string>>();
1094 return quest.phase >= 10;
1107 return quest.phase >= 10;
1120 return quest.phase >= 10;
1133 return quest.phase >= 10;
1156 chara.c_idTone =
"default";
1162 Fav fav = IO.LoadFile<Fav>(CorePath.user +
"PCC/fav" +
EClass.
rnd(3));
1163 chara.pccData = IO.Duplicate(fav.data);
1167 _agent.c_altName =
"stash".lang();
1168 EClass.player.title =
"master".lang();
1174 pref.sort_ascending_shop =
true;
1175 EClass.game.config.preference.autoEat =
true;
1176 flags.toggleHotbarHighlightDisabled =
true;
1177 layerAbilityConfig.hideDepletedSpell =
true;
1178 layerAbilityConfig.bgAlpha = 70;
1188 EClass.player.questTracker =
true;
1200 List<Element> list =
new List<Element>();
1207 if (
item.Value == 0)
1211 else if (
item.HasTag(
"primary"))
1213 item.vTempPotential = Mathf.Max(30, (
item.ValueWithoutLink - 8) * 7);
1226 EClass.pc.hunger.value = 30;
1251 t.c_windowSaveData =
null;
1252 }, onlyAccessible:
false);
1261 foreach (
Window componentsInDirectChild
in layer.GetComponentsInDirectChildren<
Window>())
1279 p.ForeachReverse(delegate(
string i)
1301 if (!
id.IsEmpty() && t !=
null)
1304 if (list !=
null && list.Contains(t.
id))
1316 string text =
"time_warn_" +
realHour;
1326 for (
int i = 0; i <
EClass.
pc.
job.domain.Length; i += 2)
1335 foreach (
int domain
in domains)
1337 elementContainer.GetOrCreateElement(domain).vSource = 1;
1339 return elementContainer;
1347 if (row2.categorySub ==
"eleAttack" && !row2.tag.Contains(
"hidden") && (!row2.tag.Contains(
"high") ||
EClass.
pc.
job.domain.Contains(row2.id)))
1370 }, delegate(List<UIList.ButtonPair> list)
1372 bool flag = EClass.player.domains.Count >= 3 +
EClass.
pc.
Evalue(1402);
1381 if (row.id == domain2)
1386 button.SetCheck(flag3);
1387 for (
int i = 0; i < ((EClass.pc.job.id ==
"swordsage") ? 5 : 3); i++)
1394 button.interactable = !flag2 && (!flag || flag3);
1395 button.GetComponent<CanvasGroup>().enabled = !button.interactable;
1397 }).SetOnKill(delegate
1405 int num =
MaxAlly - EClass.pc.party.members.Count + 1;
1425 StringBuilder stringBuilder =
new StringBuilder(IO.LoadText(
GameIO.
pathCurrentSave +
"background.txt"));
1432 stringBuilder.Replace(
"#job",
EClass.
pc.
job.GetName().AddArticle());
1436 stringBuilder.Replace(
"#he", (
EClass.
pc.
IsMale ?
"he" :
"she").lang());
1437 stringBuilder.Replace(
"#his", (
EClass.
pc.
IsMale ?
"his" :
"her").lang());
1438 stringBuilder.Replace(
"#him", (
EClass.
pc.
IsMale ?
"him" :
"her").lang());
1439 string text =
"_period".lang();
1440 string[] array = stringBuilder.ToString().Split(text);
1442 if (array.Length != 0)
1444 string[] array2 = array;
1445 foreach (
string text3
in array2)
1447 text2 += text3.ToTitleCase();
1448 if (text3 != text && text3 != Environment.NewLine && text3.Length > 2 && text3 != array[^1])
1454 return text2.TrimEnd(Environment.NewLine.ToCharArray());
1504 string[] tag = element.
source.tag;
1505 foreach (
string text2
in tag)
1544 static Thing SetSpellbook(
Thing t,
int charge)
1547 t.c_charges = charge;
1565 string[] tag = element.
source.tag;
1566 foreach (
string text2
in tag)
1599 if (list.Count != 0)
1603 int mtp = ((num == 0) ? 100 : (75 + num * 25));
1604 if (num > 0 || element2 ==
null || element2.
vPotential == 0)
1619 if (child.
owner != currentZone)
1640 string textDialog = (flag ?
"ExitZoneEscort" :
"ExitZone").lang(
EClass.
_zone.
Name);
1641 bool flag2 = EClass.pc.pos.x == EClass._map.bounds.x || EClass.pc.pos.x == EClass._map.bounds.x + EClass._map.bounds.Width - 1 || EClass.pc.pos.z == EClass._map.bounds.z || EClass.pc.pos.z == EClass._map.bounds.z + EClass._map.bounds.Height - 1;
1655 p.TrySetAct(
"actNewZone", delegate
1671 p.TrySetAct(
"actNewZone", delegate
1707 else if (p.
x <= bounds.
maxX)
1709 num2 = ((p.z >= bounds.
z) ? 1 : (-1));
1721 float ratePos = ((num == 1 || num == -1) ? ((
float)(p.z - bounds.
z) / (
float)bounds.
Height) : ((
float)(p.x - bounds.
x) / (
float)bounds.
Width));
1758 int num2 = Mathf.Clamp(roadDist - 4, 0, 200) + Mathf.Clamp(num / 4, 0, 10);
1761 num2 += roadDist - 20;
1767 Debug.Log(
"encounter roadiDist:" + roadDist +
" homeDist:" + num +
" lv:" + num2);
1769 zone._dangerLv = num2;
1770 enemies = 2 + Mathf.Min(num2 / 10, 4) +
EClass.
rnd(3 + Mathf.Min(num2 / 10, 4));
1790 Msg.
Say(
"zoneNoEntrance");
1808 roadDist = roadDist,
1816 CursorSystem.ignoreCount = 15;
1817 EClass.
ui.hud.transRight.SetActive(enable:
false);
1841 int num = elapsedHour / 24;
1891 Msg.
Say(
"gainFameLimit");
1902 Msg.
Say(
"gainFame", a.ToString() ??
"");
1906 Msg.
Say(
"looseFame", (-a).ToString() ??
"");
1914 public void ModKeyItem(
string alias,
int num = 1,
bool msg =
true)
1935 SE.Play(
"keyitem_lose");
2024 WidgetHotbar.dirtyCurrentItem =
false;
2032 item.invs[0].RefreshHighlight();
2084 int num = 999999999;
2087 List<Chara> list =
new List<Chara>();
2134 Msg.
Say(
"noTargetFound");
2201 lastMarkedHighlight.highlight = 0;
2237 bool canSee =
false;
2268 Msg.
Say(
"DingKnowledge");
2285 Msg.
Say(
"DingInfluence");
2297 bool flag =
karma < 0;
2299 Msg.
Say((a > 0) ?
"karmaUp" :
"karmaDown", a.ToString() ??
"");
2300 if (
karma < 0 && !flag)
2302 Msg.
Say(
"becomeCriminal");
2307 if (
karma >= 0 && flag)
2309 Msg.
Say(
"becomeNonCriminal");
2335 Msg.
Say(
"tooHeavyToMove");
void SetInt(int id, int value=0)
List< Action > actionsNextFrame
ElementContainerCard elements
Thing AddThing(string id, int lv=-1)
void AddEditorTag(EditorTag tag)
void ForeachPoint(Action< Point, bool > action)
virtual void SetBlessedState(BlessedState s)
void ModExp(string alias, int a)
Thing Add(string id, int num=1, int lv=1)
void AddBodyPart(int ele, Thing thing=null)
void Unequip(Thing thing, bool refresh=true)
static Chara Create(string id, int lv=-1)
void Refresh(bool calledRecursive=false)
override bool IsAliveInCurrentZone
void SetFaction(Faction f)
bool CanSeeLos(Card c, int dist=-1)
void HoldCard(Card t, int num=-1)
void PickHeld(bool msg=false)
bool HasCondition(string alias)
override CardRenderer _CreateRenderer()
void CalculateMaxStamina()
override bool IsDeadOrSleeping
void GainAbility(int ele, int mtp=100)
void RefreshFaithElement()
void RefreshSpeed(Element.BonusInfo info=null)
override bool IsMultisize
Thing EQ_ID(string s, int mat=-1, Rarity r=Rarity.Random)
bool TryIdentify(Thing t, int count=1, bool show=true)
void MoveZone(string alias)
static CursorInfo MoveZone
int GetElapsedHour(int rawDate)
int GetRaw(int offsetHours=0)
string GetText(TextFormat format)
static Dialog YesNo(string langDetail, Action actionYes, Action actionNo=null, string langYes="yes", string langNo="no")
static SourceManager sources
static GameSetting setting
Dictionary< int, Element > dict
void ModExp(int ele, int a, bool chain=false)
int GetFeatRef(int ele, int idx=0)
Element SetBase(string alias, int v, int potential=0)
Element GetElement(string alias)
static Element Create(int id, int v=0)
int GetRoadDist(int gx, int gy)
List< Dictionary< string, string > > BuildList(string sheetName="_default")
List< FactionBranch > GetChildren()
static string pathCurrentSave
ReligionManager religions
virtual void OnUnsetCurrentItem()
virtual void OnMarkMapHighlights()
virtual void OnSetCurrentItem()
static bool Has(string id)
static LayerDrama Activate(string book, string idSheet, string idStep, Chara target=null, Card ref1=null, string tag="")
static List< LayerInventory > listInv
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
bool IsStoryPlayed(int flag)
void _OnSerializing(StreamingContext context)
bool canComupWithFoodRecipe
int GetStoryRowID(string idBook, string idStep)
bool toggleHotbarHighlightDisabled
bool PlayStory(int id, bool fromBook=false)
void _OnDeserialized(StreamingContext context)
Dictionary< string, string > GetStoryRow(string idBook, int id)
ExcelData GetStoryExcelData(string idBook)
bool abilityHighlightDisabled
bool PlayStory(string idBook, int id, bool fromBook=false)
List< int > availableStories
bool helpHighlightDisabled
Dictionary< string, ExcelData > storyExcel
bool toggleHotbarHighlightActivated
List< string > reservedTutorial
List< int > playedStories
HashSet< int > pleaseDontTouch
int daysAfterQuestExploration
bool backpackHighlightDisabled
bool pickedMelilithTreasure
UIList.SortMode sortResearch
LayerPeople.ShowMode modePoeple
UIList.SortMode sortInvShop
UIList.SortMode sortAbility
UIList.SortMode sortResources
UIList.SortMode sortPeople
UIInventory.InteractMode interactMode
int GetShippingBonus(long _a)
ZoneTransition lastTransition
Dictionary< string, string > lastRecipes
Layer SelectDomain(Action onKill=null)
List< int > uidPickOnLoad
bool IsFighterGuildMember
bool IsPriorityAction(string id, Thing t)
Dictionary< string, KnownSong > knownSongs
void SetPriorityAction(string id, Thing t)
WidgetManager.SaveData widgets
Window.SaveData windowAllyInv
CinemaConfig cinemaConfig
bool CanExitBorder(Point p)
void ResetCurrentHotItem()
void ToggleFavMoongate(string id)
void OnExitBorder(Point p)
void EquipTool(Thing a, bool setHotItem=true)
List< Cell > lastMarkedHighlights
bool HasKeyItem(string alias)
bool HasValidRangedTarget()
void AddInventory(Card c)
Dictionary< string, int > dialogFlags
void EndTurn(bool consume=true)
ElementContainer GetDomains()
void EnterLocalZone(bool encounter=false, Chara mob=null)
HashSet< int > doneBackers
int ContainerSearchDistance
void AddExpKnowledge(int a)
HashSet< string > trackedCategories
int CountKeyItem(string alias)
HashSet< int > knownCraft
WidgetManager.SaveData subWidgets
Dictionary< string, HashSet< string > > noRestocks
Dictionary< string, Window.SaveData > dataWindow
HashSet< int > favAbility
void GenerateBackgroundText()
void ModKeyItem(string alias, int num=1, bool msg=true)
List< ShippingResult > shippingResults
void ModKeyItem(int id, int num=1, bool msg=true)
void ExitBorder(ActPlan p=null)
Dictionary< string, string > hangIcons
Dictionary< string, List< string > > priorityActions
KnowledgeManager knowledges
Thing DropReward(Thing t, bool silent=false)
HashSet< string > trackedCards
WidgetManager.SaveData mainWidgets
Window.SaveData windowDataCopy
static int seedHallucination
void EnterLocalZone(Point p, ZoneTransition trans=null, bool encounter=false, Chara mob=null)
HotItemNoItem hotItemNoItem
void AddExpInfluence(int a)
bool TryAbortAutoCombat(bool immediate=true)
void ClearMapHighlights()
LayerAbility.Config layerAbilityConfig
List< string > favMoongate
HashSet< int > trackedElements
string GetBackgroundText()
void RefreshCurrentHotItem()
void EditBackgroundText()
Dictionary< int, int > keyItems
bool IsMerchantGuildMember
void SetCurrentHotItem(HotItem item)
Point Set(int _x, int _z)
bool Equals(int _x, int _z)
bool TryWitnessCrime(Chara criminal, Chara target=null, int radius=4, Func< Chara, bool > funcWitness=null)
Quest Start(string id, string idGlobalChara)
bool HasFarAwayEscort(bool execute=false)
virtual void OnModKarma(int a)
static int Set(Zone zone)
bool CanCreateZone(Point pos)
Zone CreateZone(Point pos)
List< Thing > List(Func< Thing, bool > func, bool onlyAccessible=false)
void DestroyAll(Func< Thing, bool > funcExclude=null)
void SetSize(int w, int h)
void Foreach(Action< Thing > action, bool onlyAccessible=true)
static Thing CreateSpellbook(string alias, int num=1)
static Thing CreateCurrency(int a, string id="money")
static Thing Create(string id, int idMat=-1, int lv=-1)
override bool OnUse(Chara c)
virtual HotItem GetHotItem()
virtual bool CanOnlyCarry
static void Reserve(string idStep, Action onBeforePlay=null)
static UIResourceTrack Instance
static Dictionary< string, SaveData > dictData
void AddPreEnter(ZonePreEnterEvent e, bool executeIfActiveZone=true)
static EnterState DirToState(int dir)
virtual bool BlockBorderExit
virtual ZoneTransition.EnterState RegionEnterState
Zone GetZoneAt(int _x, int _y)
Card AddCard(Card t, Point point)