Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
Zone Class Reference
Inheritance diagram for Zone:
Spatial ICardParent IInspect EClass Region Zone_Arena Zone_CaveElona Zone_Civilized Zone_Dungeon Zone_Field Zone_Hospital Zone_LumiestRuin Zone_Shelter Zone_SnowGrave Zone_StartCave Zone_StartSite Zone_Tent Zone_TestMap Zone_TestRoom Zone_TruceGround Zone_Underground Zone_User Zone_Wilds Zone_WindRest

Classes

class  PortalReturnData
 

Public Member Functions

int Evalue (int ele)
 
int Evalue (string alias)
 
virtual string GetDungenID ()
 
virtual string GetNewZoneID (int level)
 
override string ToString ()
 
string TextLevel (int _lv)
 
override void OnCreate ()
 
override void OnAfterCreate ()
 
void Activate ()
 
void RefreshHat ()
 
void OnVisit ()
 
void Revive ()
 
virtual void OnRegenerate ()
 
virtual void OnActivate ()
 
virtual void OnBeforeDeactivate ()
 
virtual void OnDeactivate ()
 
virtual void OnBeforeSimulate ()
 
virtual void OnVisitNewMapOrRegenerate ()
 
virtual void OnAfterSimulate ()
 
virtual void OnAdvanceHour ()
 
void Simulate ()
 
Point GetSpawnPos (Chara c, ZoneTransition.EnterState destState=ZoneTransition.EnterState.Auto)
 
Point GetRandomVisitPos (Chara c)
 
void AddGlobalCharasOnActivate ()
 
void Deactivate ()
 
void OnKillGame ()
 
void UnloadMap ()
 
void ClaimZone (bool debug=false)
 
void AbandonZone ()
 
bool CanDestroy ()
 
override void _OnBeforeSave ()
 
override void OnLoad ()
 
override void Destroy ()
 
void ClearZones (Zone current=null)
 
void OnChildNumChange (Card c)
 
ICardParent GetRoot ()
 
Zone GetTopZone ()
 
Card AddCardSplinkle (Card t, Point center, int radius=4)
 
Card AddChara (string id, int x, int z)
 
Card AddThing (string id, int x, int z)
 
Card AddThing (string id, Point p)
 
Card AddCard (Card t, Point point)
 
Card AddCard (Card t)
 
Card AddCard (Card t, int x, int z)
 
void RemoveCard (Card t)
 
GetRandomSpot< T > ()
 
bool TryAddThingInSpot< T > (Thing t, bool useContainer=true)
 
List< ThingTryListThingsInSpot< T > (Func< Thing, bool > func=null)
 
bool TryAddThingInSharedContainer (Thing t, List< Thing > containers=null, bool add=true, bool msg=false, Chara chara=null, bool sharedOnly=true)
 
bool TryAddThing (Thing target, Point p, bool destroyIfFail=false)
 
Thing TryGetThingFromSharedContainer (Func< Thing, bool > func)
 
Thing TryGetRestock< T > (string idCat)
 
ZoneProfile GetProfile ()
 
void CreateBP ()
 
virtual void OnCreateBP ()
 
void Generate ()
 
void TrySpawnFollower ()
 
void SpawnAltar ()
 
virtual void OnGenerateMap ()
 
void TryGenerateOre ()
 
Chara TryGenerateEvolved (bool force=false, Point p=null)
 
void TryGenerateBigDaddy ()
 
void TryGenerateShrine ()
 
void ResetHostility ()
 
virtual void OnGenerateRooms (BaseMapGen gen)
 
Point GetSpawnPos (SpawnPosition type, int tries=100)
 
Chara SpawnMob (Point pos=null, SpawnSetting setting=null)
 
void RefreshElectricity ()
 
int GetElectricity (bool cost=false)
 
void SetBGM (List< int > ids, bool refresh=true)
 
void SetBGM (int id=-1, bool refresh=true)
 
void RefreshPlaylist ()
 
void RefreshBGM ()
 
Playlist CreatePlaylist (ref List< int > list, Playlist mold=null)
 
Chara FindChara (string id)
 
Chara FindChara (int uid)
 
int GetDeepestLv ()
 
int GetDeepestLv (ref int max)
 
List< ElementListLandFeats ()
 
ZoneExportData Import (string path)
 
void Export (string path, PartialMap partial=null, bool usermap=false)
 
void ExportDialog (string dir=null)
 
void ImportDialog (string dir=null)
 
void Export ()
 
void WriteNote (UINote n, Action< UINote > onWriteNote=null, IInspect.NoteMode mode=IInspect.NoteMode.Default, Recipe recipe=null)
 
void OnInspect ()
 
int GetSortVal ()
 
Chara AddRandomVisitor (bool guest=false)
 
void OnSimulateHour (VirtualDate date)
 
void OnSimulateDay (VirtualDate date)
 
void OnSimulateMonth (VirtualDate date)
 
void RainWater ()
 
void GrowPlants (VirtualDate date)
 
Zone GetZoneAt (int _x, int _y)
 
bool IsCrime (Chara c, Act act)
 
void RefreshCriminal ()
 
void RefreshListCitizen ()
 
void ModInfluence (int a)
 
void ModDevelopment (int a)
 
void UpdateQuests (bool force=false)
 
List< CharaListMinions (Chara c)
 
int CountMinions (Chara c)
 
int GetSoilCost ()
 
void SpawnLostItems ()
 
void ApplyBackerPet (bool draw)
 
FortuneRollData GetOrCreateFortuneRollData (bool refresh=true)
 
- Public Member Functions inherited from Spatial
int GetInt (int id, int? defaultInt=null)
 
void AddInt (int id, int value)
 
void SetInt (int id, int value=0)
 
override string ToString ()
 
void Create (string _id, int _x, int _y, int _icon)
 
void Register ()
 
virtual void OnCreate ()
 
virtual void OnAfterCreate ()
 
virtual void SetMainFaction (Faction f)
 
Zone GetFirstZone ()
 
void OnBeforeSave ()
 
virtual void _OnBeforeSave ()
 
void _OnLoad ()
 
virtual void OnLoad ()
 
virtual void Destroy ()
 
void DeleteMapRecursive ()
 
virtual void AddChild (Spatial child)
 
void RemoveChild (Spatial child)
 
Zone FindDeepestZone ()
 
Zone FindZone (int lv)
 
Zone FindZone (string _id)
 
virtual bool CanKill ()
 
int Dist (Point p)
 
int Dist (Spatial s)
 
void MakeGameObject (GameObject parentGo)
 
ICardParent GetRoot ()
 
void RemoveCard (Card c)
 
void OnChildNumChange (Card c)
 
void WriteNote (UINote n, Action< UINote > onWriteNote=null, NoteMode mode=NoteMode.Default, Recipe recipe=null)
 
void OnInspect ()
 

Static Public Member Functions

static bool IsImportValid (string path)
 
- Static Public Member Functions inherited from EClass
static int rnd (int a)
 
static int curve (int a, int start, int step, int rate=75)
 
static int rndHalf (int a)
 
static float rndf (float a)
 
static int rndSqrt (int a)
 
static void Wait (float a, Card c)
 
static void Wait (float a, Point p)
 
static int Bigger (int a, int b)
 
static int Smaller (int a, int b)
 

Public Attributes

FactionBranch branch
 
HashSet< int > completedQuests = new HashSet<int>()
 
ZoneEventManager events = new ZoneEventManager()
 
ElementContainerZone elements = new ElementContainerZone()
 
MapBounds bounds
 
Dictionary< int, string > dictCitizen = new Dictionary<int, string>()
 
ZoneInstance instance
 
List< int > landFeats
 
Map map
 
MapSubset subset
 
ZoneBlueprint bp
 
int fileVariation
 
bool dirtyElectricity
 
bool isStarted
 
bool isSimulating
 
int tempDist
 
BiomeProfile _biome
 
- Public Attributes inherited from Spatial
Spatial parent
 
string id
 
string idUser
 
string name
 
string idMainFaction
 
string idProfile
 
string idCurrentSubset
 
string idHat
 
int[] _ints = new int[30]
 
List< Spatialchildren = new List<Spatial>()
 
List< Spatialconnections = new List<Spatial>()
 
Dictionary< int, int > mapInt = new Dictionary<int, int>()
 
bool destryoed
 
bool isImported
 
BitArray32 bits
 

Static Public Attributes

static bool forceRegenerate
 
static string forceSubset
 
static CardRow sourceHat
 
static int okaerinko = 0
 
static bool ignoreSpawnAnime
 
static List< ThingSuckers = new List<Thing>()
 
- Static Public Attributes inherited from EClass
static Core core
 

Properties

Chara Boss [get, set]
 
override int ContentLv [get]
 
override int DangerLv [get]
 
virtual bool DisableRooms [get]
 
int HourSinceLastActive [get]
 
int MinsSinceLastActive [get]
 
virtual string pathExport [get]
 
BiomeProfile biome [get]
 
virtual string IdBiome [get]
 
virtual string IDGenerator [get]
 
virtual string TextWidgetDate [get]
 
MapGenerator Generator [get]
 
virtual string IdProfile [get]
 
virtual string IDPlayList [get]
 
virtual string IDPlaylistOverwrite [get]
 
virtual string IDHat [get]
 
virtual string IDBaseLandFeat [get]
 
virtual string idExport [get]
 
string pathTemp [get]
 
Region Region [get]
 
Zone ParentZone [get]
 
virtual ActionMode DefaultActionMode [get]
 
virtual bool BlockBorderExit [get]
 
virtual int ExpireDays [get]
 
virtual ZoneTransition.EnterState RegionEnterState [get]
 
virtual ZoneFeatureType FeatureType [get]
 
virtual string IDAmbience [get]
 
virtual string IDSceneTemplate [get]
 
virtual bool IsFestival [get]
 
virtual string IDSubset [get]
 
virtual bool IsTown [get]
 
virtual bool CanBeDeliverDestination [get]
 
virtual bool CountDeepestLevel [get]
 
virtual bool HasLaw [get]
 
virtual bool MakeEnemiesNeutral [get]
 
virtual bool MakeTownProperties [get]
 
virtual bool AllowCriminal [get]
 
virtual bool AllowInvest [get]
 
virtual bool AllowNewZone [get]
 
virtual bool WillAutoSave [get]
 
virtual bool RegenerateOnEnter [get]
 
virtual bool IsSkyLevel [get]
 
virtual bool IsUserZone [get]
 
virtual bool CanDigUnderground [get]
 
virtual bool LockExit [get]
 
virtual bool CanUnlockExit [get]
 
virtual int MaxLv [get]
 
virtual int MinLv [get]
 
virtual bool AddPrefix [get]
 
virtual bool IsNefia [get]
 
virtual bool PetFollow [get]
 
virtual bool RestrictBuild [get]
 
virtual bool KeepAllyDistance [get]
 
virtual int MaxSpawn [get]
 
int MaxRespawn [get]
 
virtual float RuinChance [get]
 
virtual float OreChance [get]
 
virtual float BigDaddyChance [get]
 
virtual float EvolvedChance [get]
 
virtual float ShrineChance [get]
 
virtual float PrespawnRate [get]
 
virtual float RespawnRate [get]
 
bool ShowEnemyOnMinimap [get]
 
virtual int RespawnPerHour [get]
 
virtual float ChanceSpawnNeutral [get]
 
virtual bool GrowPlant [get]
 
virtual bool GrowWeed [get]
 
virtual bool IsExplorable [get]
 
virtual bool IsReturnLocation [get]
 
virtual bool ShouldMakeExit [get]
 
virtual bool ShouldRegenerate [get]
 
virtual bool ShouldAutoRevive [get]
 
virtual bool UseFog [get]
 
virtual bool RevealRoom [get]
 
virtual bool AlwaysLowblock [get]
 
virtual bool UseLight [get]
 
virtual int StartLV [get]
 
virtual bool ScaleMonsterLevel [get]
 
virtual bool HiddenInRegionMap [get]
 
virtual FlockController.SpawnType FlockType [get]
 
override string NameSuffix [get]
 
string NameWithLevel [get]
 
string TextDeepestLv [get]
 
bool CanEnterBuildMode [get]
 
bool CanEnterBuildModeAnywhere [get]
 
bool IsPCFaction [get]
 
bool IsPCFactionOrTent [get]
 
bool IsStartZone [get]
 
bool IsInstance [get]
 
bool IsLoaded [get]
 
virtual int BaseElectricity [get]
 
bool IsActiveZone [get]
 
bool CanInspect [get]
 
string InspectName [get]
 
Point InspectPoint [get]
 
Vector3 InspectPosition [get]
 
virtual int MaxSoil [get]
 
- Properties inherited from Spatial
int _bits [get, set]
 
int uid [get, set]
 
int icon [get, set]
 
int x [get, set]
 
int y [get, set]
 
int lastActive [get, set]
 
int idPrefix [get, set]
 
int lv [get, set]
 
int visitCount [get, set]
 
int dateExpire [get, set]
 
int dateRevive [get, set]
 
int _dangerLv [get, set]
 
int dateRegenerate [get, set]
 
int influence [get, set]
 
int investment [get, set]
 
int development [get, set]
 
int electricity [get, set]
 
int dateHat [get, set]
 
int uidBoss [get, set]
 
int dateQuest [get, set]
 
int version [get, set]
 
bool isGenerated [get, set]
 
bool isShore [get, set]
 
bool isRandomSite [get, set]
 
bool isKnown [get, set]
 
bool isMapSaved [get, set]
 
bool isExternalZone [get, set]
 
bool isConquered [get, set]
 
bool isBeach [get, set]
 
bool isPeace [get, set]
 
bool isDeathLocation [get, set]
 
Faction mainFaction [get, set]
 
SourceZone.Row source [get]
 
bool IsPlayerFaction [get]
 
bool IsClosed [get]
 
int mapX [get]
 
int mapY [get]
 
virtual int ContentLv [get]
 
virtual int DangerLv [get]
 
virtual int DangerLvFix [get]
 
virtual float VolumeSea [get]
 
virtual bool ShowDangerLv [get]
 
virtual bool CanSpawnAdv [get]
 
string pathSave [get]
 
virtual string Name [get]
 
string NameWithDangerLevel [get]
 
virtual string NameSuffix [get]
 
virtual bool IsRegion [get]
 
virtual bool CanFastTravel [get]
 
EloMap.TileInfo Tile [get]
 
virtual bool IsSnowZone [get]
 
virtual bool IsSnowCovered [get]
 
virtual Point RegionPos [get]
 
virtual bool isClaimable [get]
 
int Seed [get]
 
- Properties inherited from EClass
static Game game [get]
 
static bool AdvMode [get]
 
static Player player [get]
 
static Chara pc [get]
 
static UI ui [get]
 
static Map _map [get]
 
static Zone _zone [get]
 
static FactionBranch Branch [get]
 
static FactionBranch BranchOrHomeBranch [get]
 
static Faction Home [get]
 
static Faction Wilds [get]
 
static Scene scene [get]
 
static BaseGameScreen screen [get]
 
static GameSetting setting [get]
 
static GameData gamedata [get]
 
static ColorProfile Colors [get]
 
static World world [get]
 
static SourceManager sources [get]
 
static SourceManager editorSources [get]
 
static SoundManager Sound [get]
 
static CoreDebug debug [get]
 
- Properties inherited from IInspect
bool CanInspect [get]
 
string InspectName [get]
 
Point InspectPoint [get]
 
Vector3 InspectPosition [get]
 

Private Attributes

FortuneRollData fortuneRoll
 

Additional Inherited Members

- Public Types inherited from IInspect
enum  NoteMode { Default , Recipe , Product , Info }
 
- Protected Member Functions inherited from Spatial
Zone _FindZone (string _id)
 
- Protected Attributes inherited from Spatial
Point _regionPos = new Point()
 

Detailed Description

Definition at line 11 of file Zone.cs.

Member Function Documentation

◆ _OnBeforeSave()

override void Zone._OnBeforeSave ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 1768 of file Zone.cs.

1769 {
1770 if (CanDestroy())
1771 {
1772 Debug.Log("Deleting Zone:" + this);
1773 if (!destryoed)
1774 {
1775 Destroy();
1776 }
1777 }
1778 else if (map != null)
1779 {
1780 Debug.Log("Saving Zone:" + this);
1781 map.Save(base.pathSave);
1782 if (!base.isMapSaved)
1783 {
1784 base.isMapSaved = true;
1785 IO.DeleteDirectory(base.pathSave + "Texture Replace");
1786 IO.CopyDir(pathTemp + "Texture Replace", base.pathSave + "/Texture Replace");
1787 }
1788 if (!IsActiveZone)
1789 {
1790 UnloadMap();
1791 }
1792 }
1793 }
Definition: IO.cs:11
static void DeleteDirectory(string path)
Definition: IO.cs:341
static void CopyDir(string sourceDirectory, string targetDirectory, Func< string, bool > funcExclude=null)
Definition: IO.cs:233
void Save(string path, ZoneExportData export=null, PartialMap partial=null)
Definition: Map.cs:376
bool destryoed
Definition: Spatial.cs:45
bool CanDestroy()
Definition: Zone.cs:1726
override void Destroy()
Definition: Zone.cs:1804
bool IsActiveZone
Definition: Zone.cs:486
void UnloadMap()
Definition: Zone.cs:1645
string pathTemp
Definition: Zone.cs:158
Map map
Definition: Zone.cs:60

References Debug, and Map.Save().

◆ AbandonZone()

void Zone.AbandonZone ( )
inline

Definition at line 1710 of file Zone.cs.

1711 {
1712 FactionBranch destBranch = ((EClass.pc.homeBranch == branch) ? EClass.game.StartZone.branch : EClass.pc.homeBranch);
1713 branch.members.ForeachReverse(delegate(Chara m)
1714 {
1715 destBranch.AddMemeber(m);
1716 if (!m.IsPCParty)
1717 {
1718 m.MoveZone(destBranch.owner);
1719 }
1720 });
1722 SetMainFaction(null);
1723 base.dateExpire = EClass.world.date.GetRaw() + 10080;
1724 }
Definition: Chara.cs:10
override bool IsPCParty
Definition: Chara.cs:600
FactionBranch homeBranch
Definition: Chara.cs:889
void MoveZone(string alias)
Definition: Chara.cs:3010
int GetRaw(int offsetHours=0)
Definition: Date.cs:322
Definition: EClass.cs:5
static Game game
Definition: EClass.cs:8
static World world
Definition: EClass.cs:40
static FactionBranch Branch
Definition: EClass.cs:22
static Chara pc
Definition: EClass.cs:14
void OnUnclaimZone()
List< Chara > members
void AddMemeber(Chara c)
Zone StartZone
Definition: Game.cs:269
virtual void SetMainFaction(Faction f)
Definition: Spatial.cs:632
GameDate date
Definition: World.cs:6
FactionBranch branch
Definition: Zone.cs:34

References FactionBranch.AddMemeber(), EClass.Branch, branch, World.date, EClass.game, Date.GetRaw(), Chara.homeBranch, Chara.IsPCParty, FactionBranch.members, Chara.MoveZone(), FactionBranch.OnUnclaimZone(), FactionBranch.owner, EClass.pc, Game.StartZone, and EClass.world.

◆ Activate()

void Zone.Activate ( )
inline

Definition at line 577 of file Zone.cs.

578 {
579 if (IsRegion)
580 {
582 }
583 isStarted = (isSimulating = false);
584 base.isKnown = true;
585 EClass.game.config.reverseSnow = false;
587 {
588 Msg.Say("regenerateZone", Name);
589 ClearZones();
590 if (EClass.pc.global.transition != null)
591 {
592 EClass.pc.global.transition.uidLastZone = 0;
593 }
594 }
596 if (EClass.game.activeZone != null)
597 {
599 }
600 EClass.game.activeZone = this;
601 ZoneExportData zoneExportData = null;
602 Debug.Log(NameWithLevel + "/" + id + "/" + base.uid + "/" + base.isGenerated + "/" + IsLoaded + "/" + File.Exists(base.pathSave + "map"));
603 if (base.isGenerated && !IsLoaded && !File.Exists(base.pathSave + "map"))
604 {
605 Debug.Log("(Bug) File does not exist:" + destryoed + "/" + base.pathSave);
606 base.isGenerated = false;
607 }
608 bool flag = false;
609 Debug.Log(idCurrentSubset + "/" + IDSubset);
610 bool flag2 = idCurrentSubset != IDSubset || forceSubset != null;
611 if (flag2 && map != null)
612 {
613 UnloadMap();
614 }
615 Debug.Log(idExport + "/" + File.Exists(pathExport) + "/" + pathExport);
616 if (!base.isGenerated && (idExport.IsEmpty() || !File.Exists(pathExport)))
617 {
618 Debug.Log("generating random map");
619 flag = true;
620 base.dateExpire = EClass.world.date.GetRaw() + 1440 * ExpireDays;
621 Generate();
623 if (instance != null)
624 {
626 }
627 if (!UseFog)
628 {
629 map.ForeachCell(delegate(Cell c)
630 {
631 c.isSeen = true;
632 });
633 }
634 if (!(bp is GameBlueprint))
635 {
637 }
638 }
639 else if (IsLoaded)
640 {
641 Debug.Log("zone is already loaded");
642 map.SetZone(this);
643 EClass.core.textures.ApplyLocalReplace(base.isMapSaved ? base.pathSave : pathTemp);
645 }
646 else
647 {
648 subset = null;
649 bool flag3 = (base.isGenerated && flag2) || (base.isGenerated && !IsInstance && !IsPCFaction && ShouldRegenerate && EClass.world.date.IsExpired(base.dateRegenerate)) || forceRegenerate;
650 if (pathExport.IsEmpty() || !File.Exists(pathExport) || EClass.game.isLoading || EClass.player.simulatingZone)
651 {
652 flag3 = false;
653 flag2 = false;
654 }
655 Debug.Log(base.isGenerated + "/" + flag3 + "/" + flag2 + "/" + IDSubset);
656 if (!base.isGenerated || flag3 || flag2)
657 {
658 Debug.Log("importing map:" + pathExport);
659 flag = true;
660 base.dateRegenerate = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRegenerateZone;
661 if (!flag3)
662 {
663 IO.DeleteDirectory(pathTemp + "Texture Replace");
664 Debug.Log(pathTemp);
665 }
666 zoneExportData = Import(pathExport);
667 base.isGenerated = true;
668 isImported = true;
669 if (flag3)
670 {
671 zoneExportData.orgMap = GameIO.LoadFile<Map>(base.pathSave + "map");
672 }
673 }
675 Debug.Log("loading map: imported? " + isImported + " regenerate? " + flag3);
676 map = GameIO.LoadFile<Map>((isImported ? pathTemp : base.pathSave) + "map");
677 if (map == null)
678 {
679 EClass.ui.Say("System.IO.EndOfStreamException: Unexpected end of stream:" + Environment.NewLine + "File may be corrupted. Try replacing the following file if you have a backup:" + Environment.NewLine + (isImported ? pathTemp : base.pathSave) + "map");
680 return;
681 }
682 map.SetZone(this);
683 map.Load(isImported ? pathTemp : base.pathSave, isImported);
685 EClass.core.textures.ApplyLocalReplace(base.isMapSaved ? base.pathSave : pathTemp);
686 if (isImported)
687 {
688 map.deadCharas.Clear();
689 map.OnImport(zoneExportData);
690 if (UseFog && !flag3)
691 {
692 map.ForeachCell(delegate(Cell c)
693 {
694 c.isSeen = false;
695 });
696 }
697 if (zoneExportData.orgMap != null)
698 {
699 Map orgMap = zoneExportData.orgMap;
700 List<Chara> serializedCharas = map.serializedCharas;
701 map.charas = orgMap.charas;
702 map.serializedCharas = orgMap.serializedCharas;
703 map.deadCharas = orgMap.deadCharas;
704 byte[] array = orgMap.TryLoadFile(base.pathSave, "flags", EClass._map.Size * EClass._map.Size);
705 if (array != null && array.Length == EClass._map.Size * EClass._map.Size)
706 {
707 for (int i = 0; i < EClass._map.Size; i++)
708 {
709 for (int j = 0; j < EClass._map.Size; j++)
710 {
711 map.cells[i, j].isSeen = array[i * EClass._map.Size + j].GetBit(1);
712 }
713 }
714 }
715 foreach (Chara item in serializedCharas)
716 {
717 Debug.Log("Importing New Chara:" + item.id + "/" + item.Name + "/" + item.orgPos);
719 }
720 map.things.ForeachReverse(delegate(Thing t)
721 {
722 if (t.trait is TraitNewZone)
723 {
724 foreach (Thing thing in orgMap.things)
725 {
726 if (t.id == thing.id && t.pos.Equals(thing.pos))
727 {
728 RemoveCard(t);
729 map.things.Insert(0, thing);
730 thing.stackOrder = 0;
731 break;
732 }
733 }
734 return;
735 }
736 if (t.trait is TraitStairsLocked)
737 {
738 foreach (Thing thing2 in orgMap.things)
739 {
740 if (thing2.trait is TraitNewZone && t.pos.Equals(thing2.pos))
741 {
742 RemoveCard(t);
743 map.things.Add(thing2);
744 break;
745 }
746 }
747 return;
748 }
749 if (t.id == "medal" || t.id == "856")
750 {
751 foreach (Thing thing3 in orgMap.things)
752 {
753 if (t.id == thing3.id && t.pos.Equals(thing3.pos))
754 {
755 return;
756 }
757 }
758 RemoveCard(t);
759 }
760 });
761 foreach (KeyValuePair<int, int> item2 in EClass._map.backerObjs.ToList())
762 {
763 EClass._map.GetCell(item2.Key);
764 SourceBacker.Row row = EClass.sources.backers.map[item2.Value];
766 {
767 map.backerObjs.Remove(item2.Key);
768 }
769 }
770 foreach (Chara serializedChara in map.serializedCharas)
771 {
772 if (serializedChara.orgPos != null && serializedChara.orgPos.IsValid)
773 {
774 serializedChara.pos.Set(serializedChara.orgPos);
775 }
776 }
777 foreach (Thing thing4 in orgMap.things)
778 {
779 if (thing4.trait is TraitTent && !thing4.isNPCProperty)
780 {
781 thing4.AddEditorTag(EditorTag.NoNpcProperty);
782 thing4.isSubsetCard = false;
783 map.things.Add(thing4);
784 Debug.Log(thing4);
785 }
786 }
787 }
788 }
789 foreach (Thing thing5 in map.things)
790 {
791 map.AddCardOnActivate(thing5);
792 }
793 foreach (Chara c3 in map.serializedCharas)
794 {
795 if (c3.c_uidMaster == 0 || EClass.player.listSummon.Find((Chara c2) => c2.uid == c3.uid) == null)
796 {
797 map.charas.Add(c3);
799 }
800 }
801 map.serializedCharas.Clear();
802 if (isImported && IsTown)
803 {
805 }
808 map.OnLoad();
809 if (flag3)
810 {
811 foreach (Card item3 in map.Cards.ToList())
812 {
813 if (item3.isSubsetCard)
814 {
815 item3.Destroy();
816 }
817 }
818 }
819 if (isImported)
820 {
822 if (idCurrentSubset != null)
823 {
825 subset.Apply();
826 }
827 }
828 if (isImported)
829 {
831 {
832 foreach (Thing thing6 in map.things)
833 {
834 thing6.isNPCProperty = !thing6.isHidden && !thing6.HasEditorTag(EditorTag.NoNpcProperty);
835 }
836 }
837 else
838 {
839 foreach (Thing thing7 in map.things)
840 {
841 thing7.isNPCProperty = false;
842 }
843 }
845 if (instance != null)
846 {
848 }
849 }
850 if (isImported && !flag3 && !RevealRoom)
851 {
852 foreach (Room item4 in map.rooms.listRoom)
853 {
854 if (!item4.HasRoof || item4.data.atrium)
855 {
856 continue;
857 }
858 foreach (Point point2 in item4.points)
859 {
860 point2.cell.isSeen = false;
861 }
862 }
863 }
864 if (flag3)
865 {
866 OnRegenerate();
867 }
868 }
869 PathManager.Instance._pathfinder.PunishChangeDirection = false;
870 isImported = false;
871 if (flag && IsTown && base.lv == 0)
872 {
874 }
875 if (base.visitCount == 0)
876 {
877 base.dateRevive = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRevive;
878 }
879 map.ForeachCell(delegate(Cell c)
880 {
881 if (c.HasFire)
882 {
883 map.effectManager.GetOrCreate(c.GetSharedPoint());
884 }
885 if (IsRegion)
886 {
887 c.decal = 0;
888 }
889 });
891 {
892 RainWater();
893 }
895 {
896 map.ForeachCell(delegate(Cell c)
897 {
898 c.isSeen = true;
899 });
900 }
901 isStarted = true;
902 Map.isDirtySunMap = true;
904 if (events.listPreEnter.Count > 0)
905 {
906 foreach (ZonePreEnterEvent item5 in events.listPreEnter)
907 {
908 item5.Execute();
909 }
910 events.listPreEnter.Clear();
911 }
912 foreach (Card card in map.Cards)
913 {
914 card.CalculateFOV();
915 if (card.isChara)
916 {
917 Chara chara = card.Chara;
918 if (!card.isDyed && card.HasTag(CTAG.random_color))
919 {
920 card.DyeRandom();
921 }
922 if (card.IsUnique && !card.IsPCFaction && !card.IsPCParty)
923 {
924 Point point = chara.orgPos ?? card.pos;
925 card.c_uniqueData = new UniqueData
926 {
927 x = point.x,
928 y = point.z,
929 uidZone = base.uid
930 };
931 }
932 int @int = card.GetInt(55);
933 if (@int != 0)
934 {
935 foreach (Chara chara2 in map.charas)
936 {
937 if (chara2.uid == @int)
938 {
939 if (chara.IsHostile(chara2))
940 {
941 chara.enemy = chara2;
942 chara.SetAI(new GoalCombat());
943 chara.calmCheckTurn = 20 + EClass.rnd(30);
944 }
945 break;
946 }
947 }
948 card.SetInt(55);
949 }
950 chara.SyncRide();
951 if (card.c_uidMaster != 0 && chara.master == null)
952 {
953 chara.FindMaster();
954 }
955 if (!EClass.game.isLoading)
956 {
957 chara.enemy = null;
958 if (chara.IsInCombat)
959 {
960 chara.SetNoGoal();
961 }
962 }
963 }
964 else if (card.IsInstalled && card.trait is TraitDoor traitDoor && card.pos.HasChara && !traitDoor.IsOpen())
965 {
966 traitDoor.ToggleDoor(sound: false, refresh: false);
967 }
968 }
969 RefreshHat();
970 forceRegenerate = false;
971 forceSubset = null;
972 EClass.ui.OnActivateZone();
974 EClass.Sound.LoadAmbience(IDAmbience);
975 if (EClass.Branch != null)
976 {
978 }
979 OnVisit();
980 if (flag)
981 {
983 }
985 if (IsPCFaction)
986 {
987 EClass.player.uidLastTown = 0;
988 }
989 else if (IsTown && base.lv == 0)
990 {
991 EClass.player.uidLastTown = base.uid;
992 }
993 RefreshBGM();
994 Rand.InitBytes(map.seed + 1);
996 okaerinko = 0;
997 if (EClass.debug.enable)
998 {
999 ModInfluence(2000);
1000 }
1001 if (this is Zone_TinkerCamp)
1002 {
1003 Tutorial.Reserve("tinker");
1004 }
1005 else if (this is Zone_Town && !(this is Zone_SubTown))
1006 {
1007 Tutorial.Reserve("town");
1008 }
1009 }
CTAG
Definition: CTAG.cs:2
EditorTag
Definition: EditorTag.cs:2
if(item3.idFile==idFirstFile &&item3.id==idFirstTopic)
Definition: UIBook.cs:627
void Add(Act a, string s="")
Definition: ActPlan.cs:11
bool atrium
Definition: AreaData.cs:66
AreaData data
Definition: BaseArea.cs:29
PointList points
Definition: BaseArea.cs:26
Definition: Card.cs:11
string id
Definition: Card.cs:31
bool isNPCProperty
Definition: Card.cs:526
bool isSubsetCard
Definition: Card.cs:718
int c_uidMaster
Definition: Card.cs:1373
void AddEditorTag(EditorTag tag)
Definition: Card.cs:2465
Point pos
Definition: Card.cs:55
int uid
Definition: Card.cs:118
Trait trait
Definition: Card.cs:49
void Destroy()
Definition: Card.cs:4538
bool HasEditorTag(EditorTag tag)
Definition: Card.cs:2460
Definition: Cell.cs:7
bool isSeen
Definition: Cell.cs:282
bool HasFire
Definition: Cell.cs:676
AIAct SetNoGoal()
Definition: Chara.cs:8040
bool IsInCombat
Definition: Chara.cs:817
AIAct SetAI(AIAct g)
Definition: Chara.cs:8045
Point orgPos
Definition: Chara.cs:21
GlobalData global
Definition: Chara.cs:73
Chara master
Definition: Chara.cs:85
Chara FindMaster()
Definition: Chara.cs:2093
void SyncRide()
Definition: Chara.cs:3559
bool IsHostile()
Definition: Chara.cs:5884
bool ignoreBackerDestoryFlag
Definition: CoreConfig.cs:549
bool revealMap
Definition: CoreDebug.cs:153
bool enable
Definition: CoreDebug.cs:285
TextureManager textures
Definition: Core.cs:45
CoreConfig config
Definition: Core.cs:70
bool IsExpired(int time)
Definition: Date.cs:332
static Scene scene
Definition: EClass.cs:30
static int rnd(int a)
Definition: EClass.cs:50
static Core core
Definition: EClass.cs:6
static Map _map
Definition: EClass.cs:18
static SourceManager sources
Definition: EClass.cs:42
static Player player
Definition: EClass.cs:12
static CoreDebug debug
Definition: EClass.cs:48
static SoundManager Sound
Definition: EClass.cs:46
static UI ui
Definition: EClass.cs:16
static GameSetting setting
Definition: EClass.cs:34
void Initialize(EloMap _elomap)
Definition: EloMapActor.cs:28
void OnActivateZone()
Definition: GameIO.cs:10
BalanceSetting balance
Definition: GameSetting.cs:309
bool isLoading
Definition: Game.cs:235
int countLoadedMaps
Definition: Game.cs:229
Zone activeZone
Definition: Game.cs:245
ZoneTransition transition
Definition: GlobalData.cs:6
Definition: Guild.cs:2
void RefreshDevelopment()
Definition: Guild.cs:62
static Guild GetCurrentGuild()
Definition: Guild.cs:41
int Size
Definition: MapBounds.cs:20
void Apply()
Definition: MapSubset.cs:60
static MapSubset Load(string id)
Definition: MapSubset.cs:33
Definition: Map.cs:13
new void ForeachCell(Action< Cell > action)
Definition: Map.cs:2324
Cell GetCell(int index)
Definition: Map.cs:881
IEnumerable< Card > Cards
Definition: Map.cs:135
void AddCardOnActivate(Card c)
Definition: Map.cs:777
void SetZone(Zone _zone)
Definition: Map.cs:181
List< Thing > things
Definition: Map.cs:49
byte[] TryLoadFile(string path, string s, int size)
Definition: Map.cs:531
Dictionary< int, int > backerObjs
Definition: Map.cs:67
List< Chara > deadCharas
Definition: Map.cs:46
int seed
Definition: Map.cs:19
RoomManager rooms
Definition: Map.cs:31
void SetReference()
Definition: Map.cs:195
void OnLoad()
Definition: Map.cs:704
void OnImport(ZoneExportData data)
Definition: Map.cs:710
List< Chara > serializedCharas
Definition: Map.cs:43
Cell[,] cells
Definition: Map.cs:85
void Load(string path, bool import=false, PartialMap partial=null)
Definition: Map.cs:542
List< Chara > charas
Definition: Map.cs:81
void RefreshAllTiles()
Definition: Map.cs:2086
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
HashSet< int > doneBackers
Definition: Player.cs:874
List< Chara > listSummon
Definition: Player.cs:1022
bool simulatingZone
Definition: Player.cs:980
Definition: Point.cs:9
Point Set(int _x, int _z)
Definition: Point.cs:479
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
bool IsValid
Definition: Point.cs:88
Definition: Rand.cs:4
static void InitBytes(int a)
Definition: Rand.cs:11
Definition: Region.cs:7
EloMap elomap
Definition: Region.cs:8
List< Room > listRoom
Definition: RoomManager.cs:13
Definition: Room.cs:4
bool HasRoof
Definition: Room.cs:29
void RebuildActorEx()
Definition: Scene.cs:974
EloMapActor elomapActor
Definition: Scene.cs:97
SourceBacker backers
string idCurrentSubset
Definition: Spatial.cs:28
virtual bool IsRegion
Definition: Spatial.cs:501
virtual string Name
Definition: Spatial.cs:495
bool isImported
Definition: Spatial.cs:47
int y
Definition: Spatial.cs:106
int x
Definition: Spatial.cs:94
void ApplyLocalReplace(string path)
Definition: Thing.cs:8
static void Reserve(string idStep, Action onBeforePlay=null)
Definition: Tutorial.cs:55
bool IsRaining
Definition: Weather.cs:117
Weather weather
Definition: World.cs:12
List< ZonePreEnterEvent > listPreEnter
virtual void OnGenerateMap()
Definition: ZoneInstance.cs:32
virtual void Execute()
bool isSimulating
Definition: Zone.cs:72
void RefreshElectricity()
Definition: Zone.cs:2636
ZoneExportData Import(string path)
Definition: Zone.cs:2889
void Generate()
Definition: Zone.cs:2274
ZoneEventManager events
Definition: Zone.cs:40
static string forceSubset
Definition: Zone.cs:27
virtual bool RegenerateOnEnter
Definition: Zone.cs:260
static int okaerinko
Definition: Zone.cs:31
virtual string idExport
Definition: Zone.cs:147
virtual bool MakeTownProperties
Definition: Zone.cs:240
virtual void OnRegenerate()
Definition: Zone.cs:1096
bool isStarted
Definition: Zone.cs:70
virtual string pathExport
Definition: Zone.cs:124
MapSubset subset
Definition: Zone.cs:62
Zone GetTopZone()
Definition: Zone.cs:1854
virtual string IDSubset
Definition: Zone.cs:209
ZoneBlueprint bp
Definition: Zone.cs:64
void RefreshBGM()
Definition: Zone.cs:2742
void Deactivate()
Definition: Zone.cs:1566
void SpawnLostItems()
Definition: Zone.cs:3443
void AddGlobalCharasOnActivate()
Definition: Zone.cs:1485
bool IsInstance
Definition: Zone.cs:480
void ClearZones(Zone current=null)
Definition: Zone.cs:1823
void OnVisit()
Definition: Zone.cs:1021
virtual bool IsTown
Definition: Zone.cs:220
void RainWater()
Definition: Zone.cs:3115
virtual bool UseFog
Definition: Zone.cs:384
virtual string IDAmbience
Definition: Zone.cs:175
void RemoveCard(Card t)
Definition: Zone.cs:1933
void RefreshHat()
Definition: Zone.cs:1011
void ModInfluence(int a)
Definition: Zone.cs:3301
virtual void OnGenerateMap()
Definition: Zone.cs:2383
static bool forceRegenerate
Definition: Zone.cs:25
bool IsPCFaction
Definition: Zone.cs:464
virtual bool ShouldRegenerate
Definition: Zone.cs:370
string NameWithLevel
Definition: Zone.cs:422
ZoneInstance instance
Definition: Zone.cs:52
virtual bool RevealRoom
Definition: Zone.cs:386
bool IsLoaded
Definition: Zone.cs:482
void RefreshListCitizen()
Definition: Zone.cs:3285
virtual int ExpireDays
Definition: Zone.cs:168
virtual void OnVisitNewMapOrRegenerate()
Definition: Zone.cs:1116

References EClass._map, Game.activeZone, ActPlan.List.Add(), Card.AddEditorTag(), AddGlobalCharasOnActivate(), TextureManager.ApplyLocalReplace(), Map.backerObjs, SourceManager.backers, GameSetting.balance, bp, Map.cells, Map.charas, ClearZones(), Core.config, EClass.core, Game.countLoadedMaps, World.date, GameSetting.BalanceSetting.dateRegenerateZone, Deactivate(), Map.deadCharas, Debug, Spatial.destryoed, Player.doneBackers, Region.elomap, Scene.elomapActor, ExpireDays, forceRegenerate, forceSubset, Map.ForeachCell(), EClass.game, Generate(), Map.GetCell(), Date.GetRaw(), GetTopZone(), Chara.global, SourceBacker.Row.id, Spatial.idCurrentSubset, idExport, IDSubset, CoreConfig.Test.ignoreBackerDestoryFlag, Import(), EloMapActor.Initialize(), instance, Date.IsExpired(), Spatial.isImported, IsInstance, IsLoaded, Card.isNPCProperty, IsPCFaction, Spatial.IsRegion, Cell.isSeen, isSimulating, isStarted, Point.IsValid, item, Map.Load(), map, Spatial.Name, NameWithLevel, OnGenerateMap(), ZoneInstance.OnGenerateMap(), Map.OnImport(), ZoneExportData.orgMap, Chara.orgPos, pathExport, pathTemp, EClass.pc, EClass.player, Card.pos, RegenerateOnEnter, RemoveCard(), Msg.Say(), EClass.scene, Map.serializedCharas, Point.Set(), Map.SetReference(), EClass.setting, Map.SetZone(), ShouldRegenerate, Player.simulatingZone, MapBounds.Size, EClass.sources, subset, CoreConfig.test, Core.textures, Card.things, Map.things, Card.trait, GlobalData.transition, Map.TryLoadFile(), EClass.ui, UnloadMap(), UseFog, and EClass.world.

Referenced by Scene.Init(), and HotItemContext.Show().

◆ AddCard() [1/3]

Card Zone.AddCard ( Card  t)
inline

Definition at line 1898 of file Zone.cs.

1899 {
1900 return AddCard(t, 0, 0);
1901 }
Card AddCard(Card t, Point point)
Definition: Zone.cs:1893

◆ AddCard() [2/3]

Card Zone.AddCard ( Card  t,
int  x,
int  z 
)
inline

Definition at line 1903 of file Zone.cs.

1904 {
1905 if (t.parent != null)
1906 {
1907 t.parent.RemoveCard(t);
1908 }
1909 t.parent = this;
1910 Chara chara = t.Chara;
1911 if (chara != null)
1912 {
1913 chara.currentZone = this;
1914 chara.SetAI(new NoGoal());
1915 }
1916 if (IsActiveZone)
1917 {
1918 map.OnCardAddedToZone(t, x, z);
1919 if (isStarted && t.isThing && t.placeState == PlaceState.roaming && !ignoreSpawnAnime)
1920 {
1921 t.PlayAnimeLoot();
1922 }
1923 ignoreSpawnAnime = false;
1924 }
1925 if (chara != null && EClass.player != null && !chara.hasSpawned)
1926 {
1927 EClass.player.codex.AddSpawn(chara.id);
1928 chara.hasSpawned = true;
1929 }
1930 return t;
1931 }
PlaceState
Definition: PlaceState.cs:2
virtual bool isThing
Definition: Card.cs:1957
virtual Chara Chara
Definition: Card.cs:1946
ICardParent parent
Definition: Card.cs:51
bool hasSpawned
Definition: Card.cs:874
PlaceState placeState
Definition: Card.cs:79
void PlayAnimeLoot()
Definition: Card.cs:5433
void AddSpawn(string id)
Definition: CodexManager.cs:65
void OnCardAddedToZone(Card t, int x, int z)
Definition: Map.cs:800
Definition: NoGoal.cs:4
CodexManager codex
Definition: Player.cs:916
static bool ignoreSpawnAnime
Definition: Zone.cs:78
void RemoveCard(Card c)

References CodexManager.AddSpawn(), Card.Chara, Player.codex, Card.hasSpawned, Card.id, Card.isThing, Map.OnCardAddedToZone(), Card.parent, Card.placeState, Card.PlayAnimeLoot(), EClass.player, ICardParent.RemoveCard(), and Chara.SetAI().

◆ AddCard() [3/3]

Card Zone.AddCard ( Card  t,
Point  point 
)
inline

Definition at line 1893 of file Zone.cs.

1894 {
1895 return AddCard(t, point.x, point.z);
1896 }

References Point.x, and Point.z.

Referenced by InvOwnerChaosOffering._OnProcess(), TraitShrine._OnUse(), Game.AddAdventurers(), ZoneUtil.AddMerchant(), Chara.ApplyDeathPenalty(), RecipeCard.Build(), Map.Burn(), AI_Shopping.Buy(), ClaimZone(), TraitCrafter.Craft(), Card.Die(), Chara.Die(), Chara.DropHeld(), Player.DropReward(), Chara.DropThing(), ZonePreEnterBout.Execute(), ZonePreEnterDigStairs.Execute(), ZonePreEnterEncounter.Execute(), DramaOutcome.fiama_pet(), CoreDebug.Fix_LostCore(), Generate(), Zone_SnowGrave.GenerateGrave(), FortuneRollData.GetPrize(), GrowSystem.Grow(), TraitFoodEggFertilized.Incubate(), Chara.MakeGrave(), Map.MineBlock(), Chara.MoveHome(), Chara.MoveZone(), Region.OnAdvanceHour(), Zone_WindRest.OnAfterSimulate(), Zone_Nymelle.OnBeforeSimulate(), QuestIntroInspector.OnComplete(), QuestVernis.OnComplete(), TaskHarvest.OnCreateProgress(), TaskBuild.OnDestroy(), QuestDialog.OnDropReward(), ZoneEventSiege.OnFirstTick(), Zone_DungeonPuppy.OnGenerateMap(), Zone_TestRoom.OnGenerateMap(), MapGenDungen.OnGenerateTerrain(), GrowSystemTree.OnHitFail(), AI_Fish.ProgressFish.OnProgressComplete(), QuestCraft.OnProgressComplete(), TaskMoveInstalled.OnProgressComplete(), TraitDiary.OnRead(), QuestEscort.OnStart(), TraitFarmChest.OnUse(), TraitGiftNewYear.OnUse(), TraitStairsLocked.OnUse(), ZoneEventDefenseGame.OnVisit(), TraitContainer.Open(), DramaManager.ParseLine(), ActRestrain.Perform(), HotItemActionSleep.Perform(), GrowSystem.Perish(), Chara.Pick(), Chara.PickOrDrop(), Zone_Dungeon.PlaceRail(), GenRoom.Populate(), ActEffect.Proc(), ActEffect.ProcAt(), FactionBranch.PutInMailBox(), DramaOutcome.PutOutFire(), TaskCraft.PutOutResources(), DramaOutcome.QuestExploration_AfterCrystal(), CoreDebug.QuickStart(), TraitBaseSpellbook.ReadFailEffect(), FactionBranch.Recruit(), Religion.Reforge(), Map.ReloadRoom(), SerializedCards.Restore(), Revive(), Chara.Revive(), AI_Craft_Snowman.Run(), AI_Slaughter.Run(), AI_UseCrafter.Run(), Meeting.SetChara(), Chara.SetGlobal(), ZoneEventMusic.Spawn(), CoreDebug.Spawn(), SpawnAltar(), Card.SpawnLoot(), SpawnLostItems(), ActThrow.Throw(), TryAddThing(), BiomeProfile.ClusterThing.TryCreate(), Chara.TryDropBossLoot(), TryGenerateBigDaddy(), TryGenerateShrine(), Religion.TryGetGift(), Chara.TryHoldCard(), Chara.TryPutShared(), AI_Shopping.TryRestock(), Map.TryShatter(), Map.TrySmoothPick(), TrySpawnFollower(), DramaOutcome.Tutorial1(), TraitFoodEgg.Update(), CoreDebug.UpdateInput(), and Chara.Vomit().

◆ AddCardSplinkle()

Card Zone.AddCardSplinkle ( Card  t,
Point  center,
int  radius = 4 
)
inline

Definition at line 1863 of file Zone.cs.

1864 {
1865 Point point = new Point(center);
1866 for (int i = 0; i < 1000; i++)
1867 {
1868 point.x = center.x + EClass.rnd(radius) - EClass.rnd(radius);
1869 point.z = center.z + EClass.rnd(radius) - EClass.rnd(radius);
1870 if (point.IsValid && !point.IsBlocked && !point.HasChara)
1871 {
1872 return AddCard(t, point);
1873 }
1874 }
1875 return AddCard(t, center);
1876 }
bool IsBlocked
Definition: Point.cs:339
bool HasChara
Definition: Point.cs:226

References Point.HasChara, Point.IsBlocked, Point.IsValid, and EClass.rnd().

Referenced by ZoneUtil.AddBandits().

◆ AddChara()

Card Zone.AddChara ( string  id,
int  x,
int  z 
)
inline

Definition at line 1878 of file Zone.cs.

1879 {
1880 return AddCard(CharaGen.Create(id), x, z);
1881 }
static Chara Create(string id, int lv=-1)
Definition: CharaGen.cs:17

References CharaGen.Create().

Referenced by DramaOutcome.event_swordkeeper(), Zone_Nymelle.OnBeforeSimulate(), DramaOutcome.QuestDefense_0(), and DramaOutcome.QuestDefense_1().

◆ AddGlobalCharasOnActivate()

void Zone.AddGlobalCharasOnActivate ( )
inline

Definition at line 1485 of file Zone.cs.

1486 {
1487 Point spawnPosPC = null;
1488 if (EClass.pc.currentZone == this)
1489 {
1490 spawnPosPC = GetSpawnPos(EClass.pc);
1491 }
1492 if (spawnPosPC == null)
1493 {
1494 spawnPosPC = map.GetCenterPos();
1495 }
1496 if (spawnPosPC.IsValid && EClass.pc.global.transition != null && spawnPosPC.HasBlock)
1497 {
1498 spawnPosPC = spawnPosPC.GetNearestPoint();
1499 }
1500 spawnPosPC = spawnPosPC.Clamp(useBounds: true).GetNearestPoint();
1501 foreach (Chara c in EClass.game.cards.globalCharas.Values)
1502 {
1503 if (c.currentZone != this)
1504 {
1505 continue;
1506 }
1507 if (c.parent is Chara)
1508 {
1509 Chara chara = c.parent as Chara;
1510 c.currentZone = chara.currentZone;
1511 }
1512 else
1513 {
1514 if (c.isDead)
1515 {
1516 continue;
1517 }
1518 if (c.isRestrained && c.currentZone == EClass.pc.currentZone && (!c.pos.IsValid || c.pos.FindThing<TraitShackle>() == null))
1519 {
1520 c.isRestrained = false;
1521 }
1522 if (c.global.transition != null)
1523 {
1524 Point pos = (c.IsPC ? spawnPosPC : (c.IsPCParty ? spawnPosPC.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true) : GetSpawnPos(c)));
1525 if (c.IsPCParty && !c.IsPC)
1526 {
1527 if (c.host == EClass.pc)
1528 {
1529 pos.Set(spawnPosPC);
1530 }
1531 else if (pos.Equals(spawnPosPC) || !PathManager.Instance.IsPathClear(spawnPosPC, pos, c, 5))
1532 {
1533 c.pos.Set(spawnPosPC);
1534 if (!spawnPosPC.ForeachNearestPoint(delegate(Point p)
1535 {
1536 if (PathManager.Instance.IsPathClear(spawnPosPC, p, c, 10) && !p.Equals(spawnPosPC))
1537 {
1538 pos.Set(p);
1539 return true;
1540 }
1541 return false;
1542 }, allowBlock: false, EClass.pc.party.members.Count >= 12, allowInstalled: true, ignoreCenter: true, EClass._zone.IsRegion ? 2 : 6))
1543 {
1544 pos.Set(spawnPosPC);
1545 }
1546 }
1547 }
1548 c.pos.Set(pos);
1549 c.global.transition = null;
1550 }
1551 map.charas.Add(c);
1553 }
1554 }
1555 foreach (Chara item in EClass.player.listSummon)
1556 {
1557 Point nearestPoint = spawnPosPC.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true);
1558 item.enemy = null;
1559 item.pos.Set(nearestPoint);
1560 map.charas.Add(item);
1562 }
1563 EClass.player.listSummon.Clear();
1564 }
GlobalCharaList globalCharas
Definition: CardManager.cs:46
bool isRestrained
Definition: Card.cs:538
override bool IsPC
Definition: Chara.cs:597
Chara host
Definition: Chara.cs:33
Zone currentZone
Definition: Chara.cs:240
bool isDead
Definition: Chara.cs:374
CardManager cards
Definition: Game.cs:155
Point GetCenterPos()
Definition: MapBounds.cs:52
static PathManager Instance
Definition: PathManager.cs:16
bool IsPathClear(Point origin, Point dest, IPathfindWalker walker, int radius)
Definition: PathManager.cs:47
bool Equals(int _x, int _z)
Definition: Point.cs:924
bool ForeachNearestPoint(Func< Point, bool > endFunc, bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int maxRange=30)
Definition: Point.cs:663
Point Clamp(bool useBounds=false)
Definition: Point.cs:972
bool HasBlock
Definition: Point.cs:141
Thing FindThing(Func< Thing, bool > func)
Definition: Point.cs:1104
Point GetNearestPoint(bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false)
Definition: Point.cs:595
Point GetSpawnPos(Chara c, ZoneTransition.EnterState destState=ZoneTransition.EnterState.Auto)
Definition: Zone.cs:1282

References Map.AddCardOnActivate(), Game.cards, Map.charas, Point.Clamp(), Chara.currentZone, Point.Equals(), Point.FindThing(), EClass.game, MapBounds.GetCenterPos(), Point.GetNearestPoint(), Chara.global, CardManager.globalCharas, Point.HasBlock, Chara.host, PathManager.Instance, Chara.isDead, PathManager.IsPathClear(), Chara.IsPC, Chara.IsPCParty, Card.isRestrained, Point.IsValid, item, Player.listSummon, Card.parent, EClass.pc, EClass.player, Card.pos, Point.Set(), and GlobalData.transition.

Referenced by Activate().

◆ AddRandomVisitor()

Chara Zone.AddRandomVisitor ( bool  guest = false)
inline

Definition at line 3011 of file Zone.cs.

3012 {
3013 Trait random = map.Installed.traits.GetTraitSet<TraitSpotExit>().GetRandom();
3014 if (random == null)
3015 {
3016 return null;
3017 }
3018 Point point = random.GetPoint();
3019 Chara chara = null;
3020 if (guest)
3021 {
3022 Zone z = EClass.world.FindZone("wilds");
3023 chara = EClass.game.cards.ListGlobalChara(z).RandomItem();
3024 if (chara != null)
3025 {
3026 AddCard(chara, point);
3027 Msg.Say("guestArrive", chara);
3028 chara.visitorState = VisitorState.Arrived;
3029 }
3030 }
3031 else
3032 {
3033 chara = CharaGen.CreateFromFilter("c_wilds");
3034 AddCard(chara, point);
3035 chara.goalListType = GoalListType.Enemy;
3036 }
3037 return chara;
3038 }
GoalListType
Definition: GoalListType.cs:2
VisitorState
Definition: VisitorState.cs:2
List< Chara > ListGlobalChara(Zone z)
Definition: CardManager.cs:103
static Chara CreateFromFilter(string id, int lv=-1, int levelRange=-1)
Definition: CharaGen.cs:22
PropsInstalled Installed
Definition: Map.cs:123
TraitManager traits
Definition: Props.cs:18
Zone FindZone(int lv)
Definition: Spatial.cs:714
TraitSet GetTraitSet(Type t)
Definition: TraitManager.cs:94
Definition: Trait.cs:7
Point GetPoint()
Definition: Trait.cs:684
Definition: Zone.cs:12

References Game.cards, CharaGen.CreateFromFilter(), Spatial.FindZone(), EClass.game, Trait.GetPoint(), TraitManager.GetTraitSet(), guest, Map.Installed, CardManager.ListGlobalChara(), Msg.Say(), Props.traits, and EClass.world.

◆ AddThing() [1/2]

Card Zone.AddThing ( string  id,
int  x,
int  z 
)
inline

◆ AddThing() [2/2]

Card Zone.AddThing ( string  id,
Point  p 
)
inline

Definition at line 1888 of file Zone.cs.

1889 {
1890 return AddThing(id, p.x, p.z);
1891 }
Card AddThing(string id, int x, int z)
Definition: Zone.cs:1883

References Point.x, and Point.z.

◆ ApplyBackerPet()

void Zone.ApplyBackerPet ( bool  draw)
inline

Definition at line 3488 of file Zone.cs.

3489 {
3490 bool flag = this is Zone_Yowyn && base.lv == -1;
3491 IList<SourceBacker.Row> list = EClass.sources.backers.listPet.Copy();
3492 list.Shuffle();
3494 {
3495 list.ForeachReverse(delegate(SourceBacker.Row a)
3496 {
3497 if (EClass.player.doneBackers.Contains(a.id))
3498 {
3499 list.Remove(a);
3500 }
3501 });
3502 }
3503 foreach (Chara chara in EClass._map.charas)
3504 {
3505 if (chara.IsGlobal || chara.IsMinion)
3506 {
3507 continue;
3508 }
3509 if (chara.isBackerContent)
3510 {
3511 if (chara.sourceBacker.isStatic != 0)
3512 {
3513 continue;
3514 }
3515 if (chara.id != "follower")
3516 {
3517 chara.RemoveBacker();
3518 }
3519 }
3520 if ((flag && chara.race.id != "cat") || EClass.rnd((!flag) ? (draw ? 3 : 10) : (draw ? 1 : 2)) != 0)
3521 {
3522 continue;
3523 }
3524 foreach (SourceBacker.Row item in list)
3525 {
3526 if (item.chara == chara.id)
3527 {
3528 chara.ApplyBacker(item.id);
3529 list.Remove(item);
3530 break;
3531 }
3532 }
3533 }
3534 }
SourceBacker.Row sourceBacker
Definition: Card.cs:888
void RemoveBacker()
Definition: Card.cs:6229
void ApplyBacker(int bid)
Definition: Card.cs:6193
bool isBackerContent
Definition: Card.cs:885
override bool IsGlobal
Definition: Chara.cs:595
override bool IsMinion
Definition: Chara.cs:612
SourceRace.Row race
Definition: Chara.cs:449
List< Row > listPet
Definition: SourceBacker.cs:76

References SourceManager.backers, Core.config, EClass.core, CoreConfig.Test.ignoreBackerDestoryFlag, SourceBacker.listPet, EClass.sources, and CoreConfig.test.

Referenced by Zone_Field.OnGenerateMap(), and Zone_Yowyn.OnVisitNewMapOrRegenerate().

◆ CanDestroy()

bool Zone.CanDestroy ( )
inline

Definition at line 1726 of file Zone.cs.

1727 {
1729 {
1730 return false;
1731 }
1732 if (IsInstance)
1733 {
1734 return true;
1735 }
1736 bool flag = false;
1737 if (id == "cave_yeek" && !(this is Zone_DungeonYeek))
1738 {
1739 flag = true;
1740 }
1741 Zone topZone = GetTopZone();
1742 if (!flag)
1743 {
1744 if (base.dateExpire == 0 || !EClass.world.date.IsExpired(base.dateExpire))
1745 {
1746 return false;
1747 }
1748 if (!base.isRandomSite && !(this is Zone_Field) && (topZone == null || topZone == this || topZone.FindDeepestZone() == this))
1749 {
1750 return false;
1751 }
1752 }
1753 if (EClass.pc.currentZone == null || EClass.pc.currentZone is Zone_Tent || topZone == EClass.pc.currentZone.GetTopZone() || (EClass.player.nextZone != null && topZone == EClass.player.nextZone.GetTopZone()))
1754 {
1755 return false;
1756 }
1758 {
1760 if (zone != null && zone.GetTopZone() == this)
1761 {
1762 return false;
1763 }
1764 }
1765 return true;
1766 }
SpatialManager spatials
Definition: Game.cs:152
Zone nextZone
Definition: Player.cs:1026
Zone Find(string id)
Zone FindDeepestZone()
Definition: Spatial.cs:701

References Chara.currentZone, World.date, SpatialManager.Find(), Spatial.FindDeepestZone(), EClass.game, GetTopZone(), instance, Date.IsExpired(), IsInstance, Player.nextZone, EClass.pc, EClass.player, Player.simulatingZone, Game.spatials, ZoneInstance.uidZone, and EClass.world.

Referenced by Region.OnActivate().

◆ ClaimZone()

void Zone.ClaimZone ( bool  debug = false)
inline

Definition at line 1659 of file Zone.cs.

1660 {
1663 branch = new FactionBranch();
1664 branch.OnCreate(this);
1665 if (base.icon == 0)
1666 {
1667 base.icon = 332;
1668 }
1669 instance = null;
1670 base.dateExpire = 0;
1672 Register();
1673 foreach (Thing thing in map.things)
1674 {
1675 thing.isNPCProperty = false;
1676 }
1679 if (debug)
1680 {
1681 for (int i = 0; i < 7; i++)
1682 {
1683 Chara chara = CharaGen.CreateFromFilter("c_neutral");
1684 EClass._zone.AddCard(chara, EClass._map.bounds.GetRandomPoint().GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false));
1685 branch.AddMemeber(chara);
1686 }
1687 }
1688 else
1689 {
1690 Msg.Say("claimedZone");
1691 EClass.Branch.Log("claimedZone");
1692 EClass.Sound.Play("jingle_embark");
1693 EClass.pc.PlaySound("build");
1694 Effect.Get("aura_heaven").Play(EClass.pc.pos);
1695 Point nearestPoint = EClass.pc.pos.GetNearestPoint(allowBlock: false, allowChara: true, allowInstalled: false);
1696 EClass._zone.AddCard(ThingGen.Create("core_zone"), nearestPoint).SetPlaceState(PlaceState.installed);
1697 }
1698 base.idPrefix = 0;
1700 {
1701 EClass.player.spawnZone = EClass._zone;
1702 }
1704 {
1705 EClass._zone.SetBGM(new List<int> { 41, 90, 44, 43 });
1707 }
1708 }
void SetPlaceState(PlaceState newState, bool byPlayer=false)
Definition: Card.cs:3454
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5404
Faction faction
Definition: Chara.cs:412
static Zone _zone
Definition: EClass.cs:20
Definition: Effect.cs:7
static Effect Get(Effect original)
Definition: Effect.cs:85
void Play(float delay, Point from, float fixY=0f, Point to=null, Sprite sprite=null)
Definition: Effect.cs:100
void SetZone(int gx, int gy, Zone z, bool updateMesh=false)
Definition: EloMap.cs:235
void OnCreate(Zone zone)
string Log(string idLang, string ref1=null, string ref2=null, string ref3=null, string ref4=null)
Point GetRandomPoint()
Definition: MapBounds.cs:97
void RevealAll(bool reveal=true)
Definition: Map.cs:899
MapBounds bounds
Definition: Map.cs:52
EloMap elomap
Definition: Scene.cs:143
void SetInt(int id, int value=0)
Definition: Spatial.cs:566
void Register()
Definition: Spatial.cs:616
void SetBGM(List< int > ids, bool refresh=true)
Definition: Zone.cs:2706
void RefreshPlaylist()
Definition: Zone.cs:2734

References EClass._map, EClass._zone, AddCard(), FactionBranch.AddMemeber(), Map.bounds, EClass.Branch, ThingGen.Create(), CharaGen.CreateFromFilter(), World.date, Scene.elomap, Chara.faction, EClass.game, Effect.Get(), Point.GetNearestPoint(), MapBounds.GetRandomPoint(), Date.GetRaw(), FactionBranch.Log(), FactionBranch.OnClaimZone(), FactionBranch.OnCreate(), EClass.pc, Effect.Play(), Card.PlaySound(), Card.pos, RefreshPlaylist(), Map.RevealAll(), Msg.Say(), EClass.scene, SetBGM(), Card.SetPlaceState(), EloMap.SetZone(), EClass.Sound, Game.StartZone, Map.things, EClass.world, Spatial.x, and Spatial.y.

Referenced by TraitDeed.OnRead(), DramaOutcome.QuestExploration_MeetFarris2(), and CoreDebug.QuickStart().

◆ ClearZones()

void Zone.ClearZones ( Zone  current = null)
inline

Definition at line 1823 of file Zone.cs.

1824 {
1825 if (map != null)
1826 {
1827 UnloadMap();
1828 }
1829 base.isGenerated = false;
1830 Zone topZone = GetTopZone();
1831 if (topZone != this)
1832 {
1833 topZone.ClearZones(this);
1834 return;
1835 }
1836 children.ForeachReverse(delegate(Spatial c)
1837 {
1838 if (c != current)
1839 {
1840 c.Destroy();
1841 }
1842 });
1843 }
virtual void Destroy()
Definition: Spatial.cs:676
List< Spatial > children
Definition: Spatial.cs:37

References ClearZones(), and Spatial.Destroy().

Referenced by Activate(), and ClearZones().

◆ CountMinions()

int Zone.CountMinions ( Chara  c)
inline

Definition at line 3420 of file Zone.cs.

3421 {
3422 int num = 0;
3423 foreach (Chara chara in EClass._map.charas)
3424 {
3425 if (chara.c_uidMaster == c.uid && chara.c_minionType == MinionType.Default)
3426 {
3427 num++;
3428 }
3429 }
3430 return num;
3431 }
MinionType
Definition: MinionType.cs:2
MinionType c_minionType
Definition: Card.cs:948

References EClass._map, Card.c_minionType, Card.c_uidMaster, and Map.charas.

Referenced by WidgetStatsBar.Build(), Chara.CanBeTempAlly(), ActEffect.ProcAt(), and GoalCombat.TryUseAbility().

◆ CreateBP()

void Zone.CreateBP ( )
inline

Definition at line 2262 of file Zone.cs.

2263 {
2264 bp = new ZoneBlueprint();
2265 bp.Create();
2266 bp.genSetting.seed = base.Seed;
2267 OnCreateBP();
2268 }
virtual void OnCreateBP()
Definition: Zone.cs:2270

References ZoneBlueprint.Create().

◆ CreatePlaylist()

Playlist Zone.CreatePlaylist ( ref List< int >  list,
Playlist  mold = null 
)
inline

Definition at line 2782 of file Zone.cs.

2783 {
2784 Playlist playlist = EClass.Sound.plBlank.Instantiate();
2785 if (list.Count == 0 && (bool)mold)
2786 {
2787 list = mold.ToInts();
2788 playlist.shuffle = mold.shuffle;
2789 playlist.minSwitchTime = mold.minSwitchTime;
2790 playlist.nextBGMOnSwitch = mold.nextBGMOnSwitch;
2791 playlist.ignoreLoop = mold.ignoreLoop;
2792 playlist.keepBGMifSamePlaylist = mold.keepBGMifSamePlaylist;
2793 playlist.name = mold.name;
2794 }
2795 foreach (int item in list)
2796 {
2797 playlist.list.Add(new Playlist.Item
2798 {
2799 data = EClass.core.refs.dictBGM[item]
2800 });
2801 }
2802 return playlist;
2803 }

References item, and EClass.Sound.

◆ Deactivate()

void Zone.Deactivate ( )
inline

Definition at line 1566 of file Zone.cs.

1567 {
1568 if (!IsUserZone && !IsPCFaction && map != null)
1569 {
1570 List<Thing> list = new List<Thing>();
1571 foreach (Thing thing in map.things)
1572 {
1573 if (thing.rarity >= Rarity.Artifact && thing.HasTag(CTAG.godArtifact))
1574 {
1575 list.Add(thing);
1576 }
1577 }
1578 if (this is Zone_Tent)
1579 {
1580 foreach (Thing item in map.props.stocked.Things.Concat(map.props.roaming.Things))
1581 {
1582 if (item.IsContainer)
1583 {
1584 foreach (Thing thing2 in item.things)
1585 {
1586 if (thing2.trait is TraitTent)
1587 {
1588 list.Add(thing2);
1589 }
1590 }
1591 }
1592 if (item.trait is TraitTent)
1593 {
1594 list.Add(item);
1595 }
1596 }
1597 }
1598 if (list.Count > 0)
1599 {
1600 Msg.Say("pick_valuable");
1601 foreach (Thing item2 in list)
1602 {
1603 Msg.Say("pick_valuable2", item2);
1604 EClass.pc.AddCard(item2);
1605 }
1606 }
1607 }
1608 base.isPeace = false;
1610 if (IsPCFaction)
1611 {
1612 foreach (Chara member in branch.members)
1613 {
1614 member.ValidateWorks();
1615 }
1616 }
1617 EClass.game.lastActiveZone = EClass.game.activeZone;
1618 base.lastActive = EClass.world.date.GetRaw();
1619 map.OnDeactivate();
1620 EClass.scene.Clear();
1621 EClass.game.activeZone = null;
1622 if (IsInstance)
1623 {
1624 UnloadMap();
1625 base.isGenerated = false;
1626 }
1627 if (forceRegenerate)
1628 {
1629 UnloadMap();
1630 }
1631 OnDeactivate();
1632 }
Rarity
Definition: Rarity.cs:2
Card AddCard(Card c)
Definition: Card.cs:2887
Rarity rarity
Definition: Card.cs:298
bool HasTag(CTAG tag)
Definition: Card.cs:2455
void ValidateWorks()
Definition: Chara.cs:8386
void OnDeactivate()
Definition: Map.cs:205
PropsManager props
Definition: Map.cs:91
PropsRoaming roaming
Definition: PropsManager.cs:10
PropsStocked stocked
Definition: PropsManager.cs:6
List< Thing > Things
Definition: Props.cs:37
void Clear()
Definition: Scene.cs:342
virtual void OnBeforeDeactivate()
Definition: Zone.cs:1104
virtual bool IsUserZone
Definition: Zone.cs:264
virtual void OnDeactivate()
Definition: Zone.cs:1108

References Game.activeZone, Card.AddCard(), Scene.Clear(), World.date, EClass.game, Date.GetRaw(), Card.HasTag(), item, FactionBranch.members, Map.OnDeactivate(), EClass.pc, Map.props, Card.rarity, PropsManager.roaming, Msg.Say(), EClass.scene, PropsManager.stocked, Map.things, Props.Things, Card.trait, Chara.ValidateWorks(), and EClass.world.

Referenced by Activate().

◆ Destroy()

override void Zone.Destroy ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 1804 of file Zone.cs.

1805 {
1806 children.ForeachReverse(delegate(Spatial z)
1807 {
1808 z.Destroy();
1809 });
1810 if (map != null)
1811 {
1812 UnloadMap();
1813 }
1814 if (parent != null && parent.IsRegion && instance == null)
1815 {
1816 EClass.scene.elomap.SetZone(base.x, base.y, null, updateMesh: true);
1817 }
1818 EClass.game.spatials.Remove(this);
1819 destryoed = true;
1820 base.isGenerated = false;
1821 }
void Remove(Spatial s)
Spatial parent
Definition: Spatial.cs:10

References Spatial.Destroy(), Scene.elomap, EClass.game, SpatialManager.Remove(), EClass.scene, EloMap.SetZone(), and Game.spatials.

◆ Evalue() [1/2]

int Zone.Evalue ( int  ele)
inline

Definition at line 518 of file Zone.cs.

519 {
520 return elements.Value(ele);
521 }
int Value(int ele)
ElementContainerZone elements
Definition: Zone.cs:43

References elements, and ElementContainer.Value().

Referenced by TraitWrench.IsValidTarget().

◆ Evalue() [2/2]

int Zone.Evalue ( string  alias)
inline

Definition at line 523 of file Zone.cs.

524 {
525 return elements.Value(EClass.sources.elements.alias[alias].id);
526 }
SourceElement elements

References SourceManager.elements, elements, EClass.sources, and ElementContainer.Value().

◆ Export() [1/2]

void Zone.Export ( )
inline

Definition at line 2981 of file Zone.cs.

2982 {
2984 string text = pathExport;
2985 IO.Copy(text, CorePath.ZoneSave + "Backup/");
2986 Export(text);
2987 Msg.Say("Exported Map:" + text);
2988 }
static string ZoneSave
Definition: CorePath.cs:196
static void Copy(string fromPath, string toPath)
Definition: IO.cs:266
void ResetEditorPos()
Definition: Map.cs:357
void Export()
Definition: Zone.cs:2981

References EClass._map, Map.ResetEditorPos(), Msg.Say(), and CorePath.ZoneSave.

◆ Export() [2/2]

void Zone.Export ( string  path,
PartialMap  partial = null,
bool  usermap = false 
)
inline

Definition at line 2898 of file Zone.cs.

2899 {
2900 if (subset != null)
2901 {
2902 SE.Beep();
2903 return;
2904 }
2905 try
2906 {
2907 ZoneExportData zoneExportData = new ZoneExportData
2908 {
2909 name = name,
2910 usermap = usermap
2911 };
2913 if (!map.config.retainDecal)
2914 {
2916 }
2917 map.Save(IO.TempPath + "/", zoneExportData, partial);
2918 map.ExportMetaData(IO.TempPath + "/", Path.GetFileNameWithoutExtension(path), partial);
2919 if (partial == null)
2920 {
2921 IO.CopyDir(base.pathSave + "Texture Replace", IO.TempPath + "/Texture Replace");
2922 }
2923 IO.SaveFile(IO.TempPath + "/export", zoneExportData, compress: true);
2924 using (ZipFile zipFile = new ZipFile())
2925 {
2926 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
2927 zipFile.AddDirectory(IO.TempPath);
2928 zipFile.Save(path);
2929 zipFile.Dispose();
2930 }
2932 }
2933 catch (Exception ex)
2934 {
2935 EClass.ui.Say(ex.Message + ":" + path);
2936 }
2937 }
static void CreateTempDirectory(string path=null)
Definition: IO.cs:367
static string TempPath
Definition: IO.cs:64
static void SaveFile(string path, object obj, bool compress=false, JsonSerializerSettings setting=null)
Definition: IO.cs:89
static void DeleteTempDirectory(string path=null)
Definition: IO.cs:372
bool retainDecal
Definition: MapConfig.cs:44
void ExportMetaData(string _path, string id, PartialMap partial=null)
Definition: Map.cs:716
void ClearRainAndDecal()
Definition: Map.cs:1513
MapConfig config
Definition: Map.cs:37
string name
Definition: Spatial.cs:19

References Map.ClearRainAndDecal(), Map.config, Map.ExportMetaData(), MapConfig.retainDecal, Map.Save(), and EClass.ui.

Referenced by ZoneInspector.Export(), LayerUploader.ExportMap(), CoreDebug.InitDebugCommands(), and PartialMap.Save().

◆ ExportDialog()

void Zone.ExportDialog ( string  dir = null)
inline

Definition at line 2939 of file Zone.cs.

2940 {
2942 {
2943 string text = StandaloneFileBrowser.SaveFilePanel("Export Zone", dir ?? CorePath.ZoneSave, "new zone", "z");
2944 if (!string.IsNullOrEmpty(text))
2945 {
2946 Export(text);
2947 Msg.SayRaw("Exported Zone");
2948 }
2949 });
2950 }
void WaitForEndOfFrame(Action action)
Definition: BaseCore.cs:61
static string SayRaw(string text)
Definition: Msg.cs:113
static string SaveFilePanel(string title, string directory, string defaultName, string extension)

References EClass.core, if(), SFB.StandaloneFileBrowser.SaveFilePanel(), Msg.SayRaw(), BaseCore.WaitForEndOfFrame(), and CorePath.ZoneSave.

Referenced by CoreDebug.InitDebugCommands().

◆ FindChara() [1/2]

Chara Zone.FindChara ( int  uid)
inline

Definition at line 2810 of file Zone.cs.

2811 {
2812 return map.charas.Find((Chara c) => c.uid == uid);
2813 }
int uid
Definition: Spatial.cs:70

References Map.charas, and Card.uid.

◆ FindChara() [2/2]

Chara Zone.FindChara ( string  id)
inline

Definition at line 2805 of file Zone.cs.

2806 {
2807 return map.charas.Find((Chara c) => c.id == id);
2808 }

References Map.charas, and Card.id.

Referenced by DramaCustomSequence.Build().

◆ Generate()

void Zone.Generate ( )
inline

Definition at line 2274 of file Zone.cs.

2275 {
2276 base.isGenerated = true;
2277 if (bp == null)
2278 {
2279 CreateBP();
2280 }
2281 if (bp.map == null)
2282 {
2283 bp.GenerateMap(this);
2284 }
2285 map.SetZone(this);
2286 if (this is Zone_Field)
2287 {
2288 if (EClass.rnd(3) == 0)
2289 {
2290 int num = EClass.rnd(2);
2291 for (int i = 0; i < num; i++)
2292 {
2293 Point randomSurface = EClass._map.bounds.GetRandomSurface();
2294 if (!randomSurface.HasObj)
2295 {
2297 EClass._zone.AddCard(t, randomSurface).Install();
2298 }
2299 }
2300 }
2301 if (EClass.rnd(8) == 0)
2302 {
2303 SpawnAltar();
2304 }
2306 }
2307 map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList) ?? EClass.Sound.GetPlaylist("Day"));
2308 }
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:2838
Card Install()
Definition: Card.cs:3448
Point GetRandomSurface(int x, int z, int radius, bool walkable=true, bool allowWater=false)
Definition: MapBounds.cs:182
List< int > _plDay
Definition: Map.cs:55
bool HasObj
Definition: Point.cs:137
void GenerateMap(Zone zone)
virtual string IDPlayList
Definition: Zone.cs:138
void SpawnAltar()
Definition: Zone.cs:2344
Playlist CreatePlaylist(ref List< int > list, Playlist mold=null)
Definition: Zone.cs:2782
BiomeProfile biome
Definition: Zone.cs:126
void TrySpawnFollower()
Definition: Zone.cs:2310
void CreateBP()
Definition: Zone.cs:2262

References EClass._map, Map._plDay, EClass._zone, AddCard(), Map.bounds, Card.ChangeMaterial(), ThingGen.Create(), ZoneBlueprint.GenerateMap(), MapBounds.GetRandomSurface(), Point.HasObj, Card.Install(), ZoneBlueprint.map, BiomeProfile.Style.matDoor, EClass.rnd(), Map.SetZone(), EClass.Sound, and BiomeProfile.style.

Referenced by Activate().

◆ GetDeepestLv() [1/2]

int Zone.GetDeepestLv ( )
inline

Definition at line 2815 of file Zone.cs.

2816 {
2817 int max = base.lv;
2818 return GetDeepestLv(ref max);
2819 }
int GetDeepestLv()
Definition: Zone.cs:2815

Referenced by WindowChara.RefreshProfile().

◆ GetDeepestLv() [2/2]

int Zone.GetDeepestLv ( ref int  max)
inline

Definition at line 2821 of file Zone.cs.

2822 {
2823 if (Mathf.Abs(base.lv) > Mathf.Abs(max))
2824 {
2825 max = base.lv;
2826 }
2827 foreach (Spatial child in children)
2828 {
2829 (child as Zone).GetDeepestLv(ref max);
2830 }
2831 return max;
2832 }

◆ GetDungenID()

virtual string Zone.GetDungenID ( )
inlinevirtual

Reimplemented in Zone_CursedManorDungeon, Zone_Dungeon, Zone_Gathering, Zone_RandomDungeonNature, and Zone_VernisMine.

Definition at line 528 of file Zone.cs.

529 {
530 return null;
531 }

◆ GetElectricity()

int Zone.GetElectricity ( bool  cost = false)
inline

Definition at line 2667 of file Zone.cs.

2668 {
2669 bool flag = GetSoilCost() > MaxSoil;
2670 int sum = 0;
2671 foreach (Thing thing in EClass._map.things)
2672 {
2673 if (!thing.IsInstalled || thing.trait.Electricity == 0)
2674 {
2675 continue;
2676 }
2677 if (cost)
2678 {
2679 if (thing.trait.Electricity < 0)
2680 {
2681 sum += -thing.trait.Electricity;
2682 }
2683 }
2684 else if (thing.trait.Electricity > 0)
2685 {
2686 sum += thing.trait.Electricity;
2687 }
2688 }
2689 if (!cost)
2690 {
2691 sum += elements.Value(2201) * 10 + BaseElectricity;
2692 if (!flag)
2693 {
2694 EClass._map.bounds.ForeachCell(delegate(Cell c)
2695 {
2696 if (c.sourceObj.id == 118 && c.growth.IsMature)
2697 {
2698 sum += 20;
2699 }
2700 });
2701 }
2702 }
2703 return sum;
2704 }
bool IsInstalled
Definition: Card.cs:2241
GrowSystem growth
Definition: Cell.cs:225
SourceObj.Row sourceObj
Definition: Cell.cs:1072
virtual bool IsMature
Definition: GrowSystem.cs:99
void ForeachCell(Action< Cell > action)
Definition: MapBounds.cs:279
virtual int Electricity
Definition: Trait.cs:97
virtual int BaseElectricity
Definition: Zone.cs:484
virtual int MaxSoil
Definition: Zone.cs:507
int GetSoilCost()
Definition: Zone.cs:3433

References EClass._map, Map.bounds, Trait.Electricity, MapBounds.ForeachCell(), Cell.growth, Card.IsInstalled, GrowSystem.IsMature, Cell.sourceObj, Map.things, Card.trait, and ElementContainer.Value().

Referenced by UIHomeInfo.RefreshInfo().

◆ GetNewZoneID()

virtual string Zone.GetNewZoneID ( int  level)
inlinevirtual

Reimplemented in Zone_CursedManor, Zone_Nymelle, and Zone_Vernis.

Definition at line 533 of file Zone.cs.

534 {
535 return base.source.id;
536 }

Referenced by TraitNewZone.CreateZone().

◆ GetOrCreateFortuneRollData()

FortuneRollData Zone.GetOrCreateFortuneRollData ( bool  refresh = true)
inline

Definition at line 3536 of file Zone.cs.

3537 {
3538 if (fortuneRoll == null)
3539 {
3541 fortuneRoll.seed = EClass._zone.uid * 100 + EClass.game.seed;
3542 }
3543 if (refresh || fortuneRoll.count == 0)
3544 {
3546 }
3547 return fortuneRoll;
3548 }
int seed
Definition: Game.cs:197
FortuneRollData fortuneRoll
Definition: Zone.cs:58

References FortuneRollData.count, EClass.game, FortuneRollData.Refresh(), and Game.seed.

Referenced by TraitCrafter.Craft(), and UIDragGridInfo.Init().

◆ GetProfile()

ZoneProfile Zone.GetProfile ( )
inline

Definition at line 2222 of file Zone.cs.

2223 {
2224 string text = IdProfile;
2225 if (text.IsEmpty())
2226 {
2227 Region region = parent as Region;
2228 if (base.lv != 0)
2229 {
2230 text = ((base.lv < 0) ? "Underground" : "Sky");
2231 }
2232 else if (region != null)
2233 {
2235 text = EClass.scene.elomapActor.elomap.GetTileInfo(base.x, base.y).idZoneProfile;
2236 if (bp != null)
2237 {
2238 name = Lang.GetList("zone_" + text.Split('/')[1]).RandomItem();
2239 bp.surrounding = new EloMap.TileInfo[3, 3];
2240 for (int i = 0; i < 3; i++)
2241 {
2242 for (int j = 0; j < 3; j++)
2243 {
2244 bp.surrounding[j, i] = EClass.scene.elomapActor.elomap.GetTileInfo(base.x - 1 + j, base.y - 1 + i);
2245 }
2246 }
2247 if (text == "Random/R_Shore")
2248 {
2249 base.isBeach = true;
2250 }
2251 }
2252 }
2253 else
2254 {
2255 text = "Random";
2256 }
2257 idProfile = text;
2258 }
2259 return ZoneProfile.Load(text);
2260 }
EloMap elomap
Definition: EloMapActor.cs:7
string idZoneProfile
Definition: EloMap.cs:68
Definition: EloMap.cs:8
TileInfo GetTileInfo(int gx, int gy)
Definition: EloMap.cs:287
Definition: Lang.cs:6
static string[] GetList(string id)
Definition: Lang.cs:114
string idProfile
Definition: Spatial.cs:25
EloMap.TileInfo[,] surrounding
static ZoneProfile Load(string id)
Definition: ZoneProfile.cs:73
virtual string IdProfile
Definition: Zone.cs:136
Region Region
Definition: Zone.cs:160

References EloMapActor.elomap, Region.elomap, Scene.elomapActor, Lang.GetList(), EloMap.GetTileInfo(), EloMap.TileInfo.idZoneProfile, EloMapActor.Initialize(), ZoneProfile.Load(), EClass.scene, and ZoneBlueprint.surrounding.

Referenced by ZoneBlueprint.GenerateMap().

◆ GetRandomSpot< T >()

T Zone.GetRandomSpot< T > ( )
inline
Type Constraints
T :Trait 

Definition at line 1954 of file Zone.cs.

1954 : Trait
1955 {
1956 return EClass._map.props.installed.traits.GetRandomThing<T>() as T;
1957 }
PropsInstalled installed
Definition: PropsManager.cs:8

References EClass._map, PropsManager.installed, Map.props, and Props.traits.

◆ GetRandomVisitPos()

Point Zone.GetRandomVisitPos ( Chara  c)
inline

Definition at line 1463 of file Zone.cs.

1464 {
1465 Point point = null;
1466 if (EClass.rnd(3) == 0 && map.rooms.listRoom.Count > 0)
1467 {
1468 point = map.rooms.listRoom.RandomItem().points.RandomItem();
1469 }
1470 if (point == null && EClass.rnd(4) != 0)
1471 {
1472 IEnumerable<Chara> ie = map.charas.Where((Chara t) => t.trait.ShopType != 0 && t.pos != null && t.pos.IsValid);
1473 if (ie.Count() > 0)
1474 {
1475 point = ie.RandomItem().pos.GetRandomPoint(3);
1476 }
1477 }
1478 if (point == null)
1479 {
1480 point = map.bounds.GetRandomSurface(centered: false, walkable: true, !IsPCFaction && !(this is Zone_Civilized)) ?? map.bounds.GetRandomPoint();
1481 }
1482 return point.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false) ?? EClass._map.GetCenterPos();
1483 }
new TraitChara trait
Definition: Chara.cs:488
Point GetRandomPoint(int radius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=100)
Definition: Point.cs:741
virtual ShopType ShopType
Definition: Trait.cs:473

References EClass._map, Map.bounds, Map.charas, MapBounds.GetCenterPos(), Point.GetNearestPoint(), MapBounds.GetRandomPoint(), Point.GetRandomPoint(), MapBounds.GetRandomSurface(), Point.IsValid, RoomManager.listRoom, Card.pos, EClass.rnd(), Map.rooms, Trait.ShopType, and Chara.trait.

◆ GetRoot()

ICardParent Zone.GetRoot ( )
inline

Implements ICardParent.

Definition at line 1849 of file Zone.cs.

1850 {
1851 return this;
1852 }

◆ GetSoilCost()

int Zone.GetSoilCost ( )
inline

Definition at line 3433 of file Zone.cs.

3434 {
3435 int i = 0;
3436 EClass._map.bounds.ForeachCell(delegate(Cell c)
3437 {
3438 i += c.sourceObj.costSoil;
3439 });
3440 return i / 10;
3441 }

References EClass._map, Map.bounds, MapBounds.ForeachCell(), and Cell.sourceObj.

Referenced by WidgetStatsBar.Build(), FactionBranch.DailyOutcome(), Map.MineObj(), GrowSystem.PopHarvest(), UIHomeInfo.RefreshInfo(), and GrowSystem.TryPopSeed().

◆ GetSortVal()

int Zone.GetSortVal ( )
inline

Definition at line 2998 of file Zone.cs.

2999 {
3000 if (IsPCFaction)
3001 {
3002 return -100000 + base.uid;
3003 }
3004 if (this is Zone_Civilized)
3005 {
3006 return -90000 + base.uid;
3007 }
3008 return base.uid;
3009 }

Referenced by SpatialManager.ListReturnLocations().

◆ GetSpawnPos() [1/2]

Point Zone.GetSpawnPos ( Chara  c,
ZoneTransition::EnterState  destState = ZoneTransition::EnterState::Auto 
)
inline

Definition at line 1282 of file Zone.cs.

1283 {
1284 ZoneTransition zoneTransition = c.global?.transition;
1285 Zone zone = zoneTransition?.lastZone;
1286 ZoneTransition.EnterState enterState = zoneTransition?.state ?? destState;
1287 bool flag = zone == null || zone.lv > base.lv;
1288 if (IsRegion)
1289 {
1290 if (zone != null && !EClass.player.simulatingZone)
1291 {
1292 Zone topZone = zone.GetTopZone();
1293 if (GetZoneAt(topZone.x, topZone.y) != null)
1294 {
1295 return new Point(topZone.mapX, topZone.mapY);
1296 }
1297 }
1298 }
1299 else if (c.IsPC && EClass.player.lastZonePos != null && zone != null && zone.IsRegion && (enterState == ZoneTransition.EnterState.Left || enterState == ZoneTransition.EnterState.Right || enterState == ZoneTransition.EnterState.Top || enterState == ZoneTransition.EnterState.Bottom))
1300 {
1301 return EClass.player.lastZonePos;
1302 }
1303 if (enterState == ZoneTransition.EnterState.Region)
1304 {
1305 enterState = RegionEnterState;
1306 }
1307 if (this is Zone_Kapul && enterState == ZoneTransition.EnterState.Left)
1308 {
1309 enterState = ZoneTransition.EnterState.Right;
1310 }
1311 float rate = zoneTransition?.ratePos ?? (-1f);
1312 if (IsPCFaction)
1313 {
1314 if ((uint)(enterState - 3) <= 4u || enterState == ZoneTransition.EnterState.Return)
1315 {
1317 if (spot != null)
1318 {
1319 Point nearestPoint = (spot.trait as TraitSpotGuidePC).GetRandomPoint((Point p) => !p.IsBlocked && !p.Equals(spot.pos)).GetNearestPoint();
1320 if (nearestPoint != null && nearestPoint.IsValid)
1321 {
1322 return nearestPoint;
1323 }
1324 }
1325 }
1326 }
1327 while (true)
1328 {
1329 switch (enterState)
1330 {
1331 case ZoneTransition.EnterState.UndergroundOrSky:
1332 return new Point(zoneTransition.x, zoneTransition.z);
1333 case ZoneTransition.EnterState.Teleport:
1334 {
1335 foreach (Thing thing2 in map.things)
1336 {
1337 if (thing2.IsInstalled)
1338 {
1339 TraitTeleporter traitTeleporter = thing2.trait as TraitTeleporter;
1340 if (traitTeleporter != null)
1341 {
1342 Debug.Log(zoneTransition.idTele + "/" + traitTeleporter.id.IsEmpty(traitTeleporter.GetParam(3)) + "/" + traitTeleporter.GetParam(3));
1343 }
1344 if (traitTeleporter != null && !zoneTransition.idTele.IsEmpty() && zoneTransition.idTele == traitTeleporter.id.IsEmpty(traitTeleporter.GetParam(3)))
1345 {
1346 return thing2.pos.GetNearestPoint();
1347 }
1348 }
1349 }
1350 foreach (Thing thing3 in map.things)
1351 {
1352 if (thing3.IsInstalled && thing3.trait is TraitTeleporter traitTeleporter2 && traitTeleporter2.IsFor(zoneTransition.lastZone))
1353 {
1354 return thing3.pos.GetNearestPoint();
1355 }
1356 }
1357 Thing randomThing2 = EClass._map.props.installed.traits.GetRandomThing<TraitTeleporter>();
1358 if (randomThing2 != null)
1359 {
1360 return randomThing2.pos.GetNearestPoint();
1361 }
1362 goto case ZoneTransition.EnterState.Return;
1363 }
1364 case ZoneTransition.EnterState.Return:
1365 case ZoneTransition.EnterState.Elevator:
1366 case ZoneTransition.EnterState.Moongate:
1367 {
1368 if (enterState == ZoneTransition.EnterState.Elevator)
1369 {
1370 foreach (Thing thing4 in map.things)
1371 {
1372 if (thing4.IsInstalled && thing4.trait is TraitElevator traitElevator && traitElevator.IsFor(zoneTransition.lastZone))
1373 {
1374 return thing4.pos.GetNearestPoint();
1375 }
1376 }
1377 Thing randomThing = EClass._map.props.installed.traits.GetRandomThing<TraitElevator>();
1378 if (randomThing != null)
1379 {
1380 return randomThing.pos.GetNearestPoint();
1381 }
1382 }
1383 Thing thing = null;
1384 thing = map.props.installed.traits.GetRandomThing<TraitWaystone>();
1385 if (thing != null)
1386 {
1387 return thing.pos.GetNearestPoint();
1388 }
1389 thing = map.props.installed.traits.GetRandomThing<TraitCoreZone>();
1390 if (thing != null)
1391 {
1392 return thing.pos.GetNearestPoint();
1393 }
1394 if (base.lv == 0)
1395 {
1396 goto IL_0499;
1397 }
1398 flag = base.lv <= 0;
1399 break;
1400 }
1401 case ZoneTransition.EnterState.Center:
1402 case ZoneTransition.EnterState.Encounter:
1403 if (map.config.embarkX != 0)
1404 {
1405 return new Point(map.config.embarkX, map.config.embarkY);
1406 }
1407 return map.GetCenterPos().GetNearestPoint(allowBlock: false, allowChara: false);
1408 case ZoneTransition.EnterState.Top:
1409 return map.bounds.GetTopPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1410 case ZoneTransition.EnterState.Right:
1411 return map.bounds.GetRightPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1412 case ZoneTransition.EnterState.Bottom:
1413 return map.bounds.GetBottomPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1414 case ZoneTransition.EnterState.Left:
1415 return map.bounds.GetLeftPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1416 case ZoneTransition.EnterState.Dead:
1417 case ZoneTransition.EnterState.Exact:
1418 case ZoneTransition.EnterState.PortalReturn:
1419 case ZoneTransition.EnterState.Fall:
1420 if (zoneTransition.x == 0 && EClass._map.bounds.x != 0)
1421 {
1422 return new Point(map.config.embarkX, map.config.embarkY);
1423 }
1424 return new Point(zoneTransition.x, zoneTransition.z);
1425 case ZoneTransition.EnterState.RandomVisit:
1426 return GetRandomVisitPos(c);
1427 case ZoneTransition.EnterState.Down:
1428 flag = true;
1429 break;
1430 case ZoneTransition.EnterState.Up:
1431 flag = false;
1432 break;
1433 }
1434 break;
1435 IL_0499:
1436 enterState = ZoneTransition.EnterState.Center;
1437 }
1438 foreach (Thing thing5 in map.things)
1439 {
1440 if (thing5.trait is TraitNewZone { zone: not null } traitNewZone && zone != null && traitNewZone.zone.uid == zone.uid)
1441 {
1442 if (c != null && enterState != 0)
1443 {
1444 c.SetDir(traitNewZone.owner.dir);
1445 }
1446 return traitNewZone.GetExitPos();
1447 }
1448 }
1449 foreach (Thing thing6 in map.things)
1450 {
1451 if (thing6.trait is TraitNewZone traitNewZone2 && ((flag && traitNewZone2.IsUpstairs) || (!flag && traitNewZone2.IsDownstairs)))
1452 {
1453 if (c != null && enterState != 0)
1454 {
1455 c.SetDir(traitNewZone2.owner.dir);
1456 }
1457 return traitNewZone2.GetExitPos();
1458 }
1459 }
1460 return GetRandomVisitPos(c);
1461 }
override void SetDir(int d)
Definition: Chara.cs:3198
Point GetLeftPos(float rate=-1f)
Definition: MapBounds.cs:92
Point GetBottomPos(float rate=-1f)
Definition: MapBounds.cs:87
int x
Definition: MapBounds.cs:8
Point GetTopPos(float rate=-1f)
Definition: MapBounds.cs:77
Point GetRightPos(float rate=-1f)
Definition: MapBounds.cs:82
int embarkY
Definition: MapConfig.cs:83
int embarkX
Definition: MapConfig.cs:80
Point lastZonePos
Definition: Player.cs:904
Thing Find(int uid)
Definition: Props.cs:357
int mapX
Definition: Spatial.cs:448
int lv
Definition: Spatial.cs:142
int mapY
Definition: Spatial.cs:460
virtual bool IsFor(Zone z)
string GetParam(int i, string def=null)
Definition: Trait.cs:515
EnterState state
virtual ZoneTransition.EnterState RegionEnterState
Definition: Zone.cs:170
Point GetRandomVisitPos(Chara c)
Definition: Zone.cs:1463
Zone GetZoneAt(int _x, int _y)
Definition: Zone.cs:3237

References EClass._map, Map.bounds, Map.config, Debug, MapConfig.embarkX, MapConfig.embarkY, Point.Equals(), Props.Find(), MapBounds.GetBottomPos(), MapBounds.GetCenterPos(), MapBounds.GetLeftPos(), Point.GetNearestPoint(), Trait.GetParam(), MapBounds.GetRightPos(), MapBounds.GetTopPos(), GetTopZone(), Chara.global, TraitTeleporter.id, ZoneTransition.idTele, PropsManager.installed, TraitNewZone.IsFor(), Card.IsInstalled, Chara.IsPC, Spatial.IsRegion, Point.IsValid, ZoneTransition.lastZone, Player.lastZonePos, Spatial.lv, Spatial.mapX, Spatial.mapY, EClass.player, Card.pos, Map.props, ZoneTransition.ratePos, Player.simulatingZone, ZoneTransition.state, Map.things, Card.trait, Props.traits, GlobalData.transition, Spatial.uid, MapBounds.x, Spatial.x, ZoneTransition.x, Spatial.y, ZoneTransition.z, and TraitNewZone.zone.

Referenced by Chara.MoveZone().

◆ GetSpawnPos() [2/2]

Point Zone.GetSpawnPos ( SpawnPosition  type,
int  tries = 100 
)
inline

Definition at line 2529 of file Zone.cs.

2530 {
2531 Point point = new Point();
2532 for (int i = 0; i < tries; i++)
2533 {
2534 point = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2535 if (point.IsValid && !point.cell.hasDoor && !point.IsSync && (type != SpawnPosition.Outside || (!point.cell.HasRoof && point.cell.light <= 0)))
2536 {
2537 return point;
2538 }
2539 }
2540 return null;
2541 }
SpawnPosition
Definition: SpawnPosition.cs:2
byte light
Definition: Cell.cs:60
bool HasRoof
Definition: Cell.cs:648
bool hasDoor
Definition: Cell.cs:258
bool IsSync
Definition: Point.cs:320
Cell cell
Definition: Point.cs:51

References EClass._map, Map.bounds, Point.cell, MapBounds.GetRandomSurface(), Cell.hasDoor, Cell.HasRoof, Point.IsSync, Point.IsValid, and Cell.light.

◆ GetTopZone()

◆ GetZoneAt()

Zone Zone.GetZoneAt ( int  _x,
int  _y 
)
inline

Definition at line 3237 of file Zone.cs.

3238 {
3239 if (IsRegion)
3240 {
3241 foreach (Spatial child in children)
3242 {
3243 if (!(child is Zone_Field) && _x == child.x && _y == child.y)
3244 {
3245 return child as Zone;
3246 }
3247 }
3248 }
3249 foreach (Spatial child2 in children)
3250 {
3251 if (_x == child2.x && _y == child2.y)
3252 {
3253 return child2 as Zone;
3254 }
3255 }
3256 return null;
3257 }

References Spatial.x, and Spatial.y.

Referenced by Player.EnterLocalZone(), and RegionPoint.SetRegionPoint().

◆ GrowPlants()

void Zone.GrowPlants ( VirtualDate  date)
inline

Definition at line 3130 of file Zone.cs.

3131 {
3132 bool num = (EClass.player.isAutoFarming = IsPCFaction && EClass.Branch.policies.IsActive(2707));
3133 int weedChance = 1;
3135 {
3136 weedChance += (EClass.debug.enable ? 100000 : 20) + EClass.Branch.Evalue(2703) * 10;
3137 }
3138 if (date.sunMap == null)
3139 {
3140 date.BuildSunMap();
3141 }
3142 if (num)
3143 {
3144 HashSet<int> hashSet = new HashSet<int>();
3145 foreach (Thing thing in EClass._map.things)
3146 {
3147 if (!thing.IsInstalled || !(thing.trait is TraitSpotFarm traitSpotFarm))
3148 {
3149 continue;
3150 }
3151 foreach (Point item in traitSpotFarm.ListPoints(null, onlyPassable: false))
3152 {
3153 hashSet.Add(item.index);
3154 }
3155 }
3156 Perform(hashSet);
3157 EClass.player.isAutoFarming = false;
3158 Perform(hashSet);
3159 }
3160 else
3161 {
3162 Perform(null);
3163 }
3164 void Perform(HashSet<int> farmMap)
3165 {
3166 bool isWinter = date.IsWinter;
3167 EClass._map.bounds.ForeachCell(delegate(Cell c)
3168 {
3169 if (farmMap != null)
3170 {
3172 {
3173 if (!farmMap.Contains(c.index))
3174 {
3175 return;
3176 }
3177 }
3178 else if (farmMap.Contains(c.index))
3179 {
3180 return;
3181 }
3182 }
3183 if (c.decal != 0 && EClass.rnd(3) == 0)
3184 {
3185 c.decal = 0;
3186 }
3187 if (GrowPlant)
3188 {
3189 if (c.growth != null)
3190 {
3191 bool flag = false;
3192 if (!EClass.player.isAutoFarming && c.growth.HaltGrowth() && (c.IsFarmField || c.IsTopWater) && (!isWinter || !date.IsRealTime))
3193 {
3194 flag = true;
3195 }
3196 PlantData plantData = map.TryGetPlant(c);
3197 if (!flag && (plantData == null || plantData.fert >= 0))
3198 {
3199 c.TryGrow(date);
3200 }
3201 if (isWinter && plantData != null && c.growth != null && c.growth.NeedSunlight && plantData.fert >= 0 && (EClass.rnd(4) == 0 || c.growth.stage.idx == 0))
3202 {
3203 if (date.sunMap == null)
3204 {
3205 date.BuildSunMap();
3206 }
3207 if (!date.sunMap.Contains(c.index))
3208 {
3209 c.growth.Perish();
3210 }
3211 }
3212 }
3213 else if (c.detail != null)
3214 {
3215 c.Things.ForeachReverse(delegate(Thing t)
3216 {
3217 if (t.IsInstalled && t.trait is TraitSeed && !t.isSale)
3218 {
3219 (t.trait as TraitSeed).TrySprout(force: false, sucker: false, date);
3220 }
3221 });
3222 }
3223 else if (EClass.rnd(20) == 0 && GrowWeed && c.CanGrowWeed && EClass.rnd(weedChance) == 0)
3224 {
3225 biome.Populate(c.GetPoint());
3226 if (c.growth != null)
3227 {
3228 c.growth.SetStage(0);
3229 }
3230 }
3231 }
3232 c.isWatered = false;
3233 });
3234 }
3235 }
void Populate(Point point, bool interior=false)
byte decal
Definition: Cell.cs:44
CellDetail detail
Definition: Cell.cs:92
Point GetPoint()
Definition: Cell.cs:1101
bool CanGrowWeed
Definition: Cell.cs:742
int index
Definition: Cell.cs:114
bool IsWinter
Definition: Date.cs:186
int Evalue(int ele)
PolicyManager policies
void SetStage(int idx, bool renewHarvest=false)
Definition: GrowSystem.cs:413
Stage stage
Definition: GrowSystem.cs:97
virtual bool NeedSunlight
Definition: GrowSystem.cs:93
PlantData TryGetPlant(Point p)
Definition: Map.cs:1920
bool isAutoFarming
Definition: Player.cs:982
bool IsActive(int id, int days=-1)
void BuildSunMap()
Definition: VirtualDate.cs:54
HashSet< int > sunMap
Definition: VirtualDate.cs:9
virtual bool GrowWeed
Definition: Zone.cs:342
virtual bool GrowPlant
Definition: Zone.cs:340

References EClass._map, Map.bounds, EClass.Branch, VirtualDate.BuildSunMap(), Cell.decal, Cell.detail, FactionBranch.Evalue(), MapBounds.ForeachCell(), Cell.growth, GrowSystem.Stage.idx, if(), Cell.index, PolicyManager.IsActive(), Player.isAutoFarming, Card.IsInstalled, Date.IsWinter, item, GrowSystem.NeedSunlight, EClass.player, FactionBranch.policies, EClass.rnd(), GrowSystem.stage, VirtualDate.sunMap, Map.things, Card.trait, and Map.TryGetPlant().

◆ Import()

ZoneExportData Zone.Import ( string  path)
inline

Definition at line 2889 of file Zone.cs.

2890 {
2891 ZipFile zipFile = ZipFile.Read(path);
2892 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
2893 zipFile.ExtractAll(pathTemp);
2894 zipFile.Dispose();
2895 return IO.LoadFile<ZoneExportData>(pathTemp + "export") ?? new ZoneExportData();
2896 }

Referenced by Activate(), and PartialMap.Load().

◆ ImportDialog()

void Zone.ImportDialog ( string  dir = null)
inline

Definition at line 2952 of file Zone.cs.

2953 {
2955 {
2956 string[] array = StandaloneFileBrowser.OpenFilePanel("Import Zone", dir ?? CorePath.ZoneSave, "z", multiselect: false);
2957 if (array.Length != 0)
2958 {
2959 Zone_User zone_User = SpatialGen.Create("user", EClass.world.region, register: true) as Zone_User;
2960 zone_User.path = array[0];
2961 Thing thing = ThingGen.Create("teleporter");
2962 thing.c_uidZone = zone_User.uid;
2963 EClass._zone.AddCard(thing, EClass.pc.pos);
2964 }
2965 });
2966 }
static string[] OpenFilePanel(string title, string directory, string extension, bool multiselect)

References EClass.core, if(), SFB.StandaloneFileBrowser.OpenFilePanel(), BaseCore.WaitForEndOfFrame(), and CorePath.ZoneSave.

Referenced by CoreDebug.InitDebugCommands().

◆ IsCrime()

bool Zone.IsCrime ( Chara  c,
Act  act 
)
inline

Definition at line 3259 of file Zone.cs.

3260 {
3261 if (act.IsHostileAct && HasLaw && !IsPCFaction && c.IsPC)
3262 {
3263 return true;
3264 }
3265 return false;
3266 }
virtual bool IsHostileAct
Definition: ACT.cs:127
virtual bool HasLaw
Definition: Zone.cs:226

References Act.IsHostileAct, and Chara.IsPC.

Referenced by TaskDig.OnCreateProgress(), TaskHarvest.OnCreateProgress(), TaskMine.OnCreateProgress(), TaskDig.OnProgressComplete(), TaskMine.OnProgressComplete(), and ActPlan.Item.Perform().

◆ IsImportValid()

static bool Zone.IsImportValid ( string  path)
inlinestatic

Definition at line 2968 of file Zone.cs.

2969 {
2970 try
2971 {
2972 return Map.GetMetaData(path)?.IsValidVersion() ?? false;
2973 }
2974 catch (Exception ex)
2975 {
2976 EClass.ui.Say(ex.Message);
2977 return false;
2978 }
2979 }
bool IsValidVersion()
Definition: MapMetaData.cs:25
static MapMetaData GetMetaData(string pathZip)
Definition: Map.cs:732

References Map.GetMetaData(), MapMetaData.IsValidVersion(), and EClass.ui.

Referenced by TraitMoongate.UseMoongate().

◆ ListLandFeats()

List< Element > Zone.ListLandFeats ( )
inline

Definition at line 2834 of file Zone.cs.

2835 {
2836 if (landFeats == null)
2837 {
2838 landFeats = new List<int>();
2840 string[] listBase = IDBaseLandFeat.Split(',');
2841 string[] array = listBase;
2842 foreach (string text in array)
2843 {
2844 if (!text.IsEmpty())
2845 {
2846 landFeats.Add(EClass.sources.elements.alias[text].id);
2847 }
2848 }
2849 if (listBase.Length == 1)
2850 {
2851 List<SourceElement.Row> list = EClass.sources.elements.rows.Where(delegate(SourceElement.Row e)
2852 {
2853 if (e.category != "landfeat" || e.chance == 0)
2854 {
2855 return false;
2856 }
2857 bool flag = true;
2858 string[] tag = e.tag;
2859 foreach (string text2 in tag)
2860 {
2861 if (text2.StartsWith("bf"))
2862 {
2863 flag = false;
2864 if (listBase[0] == text2)
2865 {
2866 flag = true;
2867 break;
2868 }
2869 }
2870 }
2871 return flag ? true : false;
2872 }).ToList();
2873 SourceElement.Row row = list.RandomItemWeighted((SourceElement.Row e) => e.chance);
2874 landFeats.Add(row.id);
2875 list.Remove(row);
2876 row = list.RandomItemWeighted((SourceElement.Row e) => e.chance);
2877 landFeats.Add(row.id);
2878 }
2879 Rand.SetSeed();
2880 }
2881 List<Element> list2 = new List<Element>();
2882 foreach (int landFeat in landFeats)
2883 {
2884 list2.Add(Element.Create(landFeat, 1));
2885 }
2886 return list2;
2887 }
static Element Create(int id, int v=0)
Definition: ELEMENT.cs:913
static void SetSeed(int a=-1)
Definition: Rand.cs:37
virtual string IDBaseLandFeat
Definition: Zone.cs:144
List< int > landFeats
Definition: Zone.cs:55

References EClass._zone, SourceManager.elements, SourceElement.Row.id, Rand.SetSeed(), EClass.sources, and Spatial.uid.

Referenced by WidgetDate._Refresh(), FactionBranch.OnClaimZone(), FactionBranch.OnUnclaimZone(), UIFactionInfo.SetZone(), and FactionBranch.Upgrade().

◆ ListMinions()

List< Chara > Zone.ListMinions ( Chara  c)
inline

Definition at line 3407 of file Zone.cs.

3408 {
3409 List<Chara> list = new List<Chara>();
3410 foreach (Chara chara in EClass._map.charas)
3411 {
3412 if (chara.c_uidMaster == c.uid && chara.c_minionType == MinionType.Default)
3413 {
3414 list.Add(chara);
3415 }
3416 }
3417 return list;
3418 }

References EClass._map, Card.c_minionType, Card.c_uidMaster, and Map.charas.

◆ ModDevelopment()

void Zone.ModDevelopment ( int  a)
inline

Definition at line 3311 of file Zone.cs.

3312 {
3313 base.development += a;
3314 if (a > 0)
3315 {
3316 Msg.Say("gainDevelopment", Name, a.ToString() ?? "");
3317 }
3318 }

References Msg.Say().

◆ ModInfluence()

void Zone.ModInfluence ( int  a)
inline

Definition at line 3301 of file Zone.cs.

3302 {
3303 base.influence += a;
3304 if (a > 0)
3305 {
3306 Msg.Say("gainInfluence", Name, a.ToString() ?? "");
3307 }
3308 Tutorial.Reserve("influence");
3309 }

References Tutorial.Reserve(), and Msg.Say().

Referenced by Card.ModCurrency(), QuestRandom.OnDropReward(), and ActThrow.Throw().

◆ OnActivate()

virtual void Zone.OnActivate ( )
inlinevirtual

Reimplemented in Region, Zone_Casino, Zone_LumiestRuin, Zone_Olvina, Zone_SisterHouse, and Zone_User.

Definition at line 1100 of file Zone.cs.

1101 {
1102 }

◆ OnAdvanceHour()

virtual void Zone.OnAdvanceHour ( )
inlinevirtual

Reimplemented in Region.

Definition at line 1124 of file Zone.cs.

1125 {
1126 }

Referenced by GameDate.AdvanceHour().

◆ OnAfterCreate()

override void Zone.OnAfterCreate ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 562 of file Zone.cs.

563 {
564 if (AddPrefix)
565 {
566 if (GetTopZone() == this)
567 {
568 base.idPrefix = EClass.sources.zoneAffixes.rows.RandomItem().id;
569 }
570 else
571 {
572 base.idPrefix = GetTopZone().idPrefix;
573 }
574 }
575 }
SourceZoneAffix zoneAffixes
int idPrefix
Definition: Spatial.cs:130
virtual bool AddPrefix
Definition: Zone.cs:276

References AddPrefix, GetTopZone(), Spatial.idPrefix, EClass.sources, and SourceManager.zoneAffixes.

◆ OnAfterSimulate()

virtual void Zone.OnAfterSimulate ( )
inlinevirtual

Reimplemented in Zone_WindRest.

Definition at line 1120 of file Zone.cs.

1121 {
1122 }

◆ OnBeforeDeactivate()

virtual void Zone.OnBeforeDeactivate ( )
inlinevirtual

Reimplemented in Zone_Tent.

Definition at line 1104 of file Zone.cs.

1105 {
1106 }

◆ OnBeforeSimulate()

virtual void Zone.OnBeforeSimulate ( )
inlinevirtual

Reimplemented in Zone_DungeonPuppy, and Zone_Nymelle.

Definition at line 1112 of file Zone.cs.

1113 {
1114 }

◆ OnChildNumChange()

void Zone.OnChildNumChange ( Card  c)
inline

Implements ICardParent.

Definition at line 1845 of file Zone.cs.

1846 {
1847 }

◆ OnCreate()

override void Zone.OnCreate ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 556 of file Zone.cs.

557 {
558 events.zone = this;
559 base.lv = StartLV;
560 }
virtual int StartLV
Definition: Zone.cs:402

References StartLV.

◆ OnCreateBP()

virtual void Zone.OnCreateBP ( )
inlinevirtual

Reimplemented in Zone_Arena2, and Zone_Harvest.

Definition at line 2270 of file Zone.cs.

2271 {
2272 }

◆ OnDeactivate()

virtual void Zone.OnDeactivate ( )
inlinevirtual

Definition at line 1108 of file Zone.cs.

1109 {
1110 }

◆ OnGenerateMap()

virtual void Zone.OnGenerateMap ( )
inlinevirtual

Reimplemented in Zone_Arena2, Zone_CursedManor, Zone_CursedManorDungeon, Zone_Dungeon, Zone_DungeonPuppy, Zone_Field, Zone_Harvest, Zone_RandomDungeon, Zone_RandomDungeonFactory, Zone_SnowGrave, Zone_TestRoom, Zone_VernisMine, Zone_Void, and Zone_WindRest.

Definition at line 2383 of file Zone.cs.

2384 {
2386 {
2387 foreach (Chara chara in EClass._map.charas)
2388 {
2389 if (!chara.IsGlobal && chara.hostility < Hostility.Neutral && chara.OriginalHostility < Hostility.Friend)
2390 {
2391 Hostility hostility2 = (chara.c_originalHostility = Hostility.Neutral);
2392 chara.hostility = hostility2;
2393 }
2394 }
2395 }
2396 if (PrespawnRate != 0f && !IsSkyLevel)
2397 {
2398 for (int i = 0; i < (int)((float)MaxSpawn * PrespawnRate); i++)
2399 {
2400 SpawnMob();
2401 }
2402 }
2407 }
Hostility
Definition: Hostility.cs:2
Hostility OriginalHostility
Definition: Chara.cs:456
Hostility hostility
Definition: Chara.cs:276
virtual float PrespawnRate
Definition: Zone.cs:320
virtual int MaxSpawn
Definition: Zone.cs:306
virtual bool IsSkyLevel
Definition: Zone.cs:262
Chara TryGenerateEvolved(bool force=false, Point p=null)
Definition: Zone.cs:2436
Chara SpawnMob(Point pos=null, SpawnSetting setting=null)
Definition: Zone.cs:2543
void TryGenerateShrine()
Definition: Zone.cs:2473
void TryGenerateOre()
Definition: Zone.cs:2409
virtual bool MakeEnemiesNeutral
Definition: Zone.cs:229
void TryGenerateBigDaddy()
Definition: Zone.cs:2455

References EClass._map, Map.charas, Chara.hostility, Chara.IsGlobal, and Chara.OriginalHostility.

Referenced by Activate().

◆ OnGenerateRooms()

virtual void Zone.OnGenerateRooms ( BaseMapGen  gen)
inlinevirtual

Reimplemented in Zone_CaveMonster, and Zone_SubTown.

Definition at line 2525 of file Zone.cs.

2526 {
2527 }

Referenced by MapGenDungen.OnGenerateTerrain().

◆ OnInspect()

void Zone.OnInspect ( )
inline

Implements IInspect.

Definition at line 2994 of file Zone.cs.

2995 {
2996 }

◆ OnKillGame()

void Zone.OnKillGame ( )
inline

Definition at line 1634 of file Zone.cs.

1635 {
1636 foreach (Thing thing in map.things)
1637 {
1638 if (thing.renderer.hasActor)
1639 {
1640 thing.renderer.KillActor();
1641 }
1642 }
1643 }
void KillActor()
CardRenderer renderer
Definition: Card.cs:57

References CardRenderer.hasActor, CardRenderer.KillActor(), Card.renderer, and Map.things.

Referenced by Game.Kill().

◆ OnLoad()

override void Zone.OnLoad ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 1795 of file Zone.cs.

1796 {
1797 if (branch != null)
1798 {
1799 branch.SetOwner(this);
1800 }
1801 events.OnLoad(this);
1802 }
void SetOwner(Zone zone)
void OnLoad(Zone _zone)

References ZoneEventManager.OnLoad(), and FactionBranch.SetOwner().

◆ OnRegenerate()

virtual void Zone.OnRegenerate ( )
inlinevirtual

Reimplemented in Zone_LittleGarden.

Definition at line 1096 of file Zone.cs.

1097 {
1098 }

◆ OnSimulateDay()

void Zone.OnSimulateDay ( VirtualDate  date)
inline

Definition at line 3095 of file Zone.cs.

3096 {
3097 if (base.IsPlayerFaction)
3098 {
3099 branch.OnSimulateDay(date);
3100 }
3101 }
void OnSimulateDay(VirtualDate date)

References FactionBranch.OnSimulateDay().

Referenced by VirtualDate.SimulateDay().

◆ OnSimulateHour()

void Zone.OnSimulateHour ( VirtualDate  date)
inline

Definition at line 3040 of file Zone.cs.

3041 {
3042 if (base.IsPlayerFaction)
3043 {
3044 branch.OnSimulateHour(date);
3045 }
3047 if (date.IsRealTime)
3048 {
3049 foreach (Thing thing in EClass._map.things)
3050 {
3051 if (thing.IsInstalled)
3052 {
3053 thing.trait.TryToggle();
3054 }
3055 }
3057 }
3058 EClass._map.things.ForeachReverse(delegate(Thing t)
3059 {
3060 t.OnSimulateHour(date);
3061 });
3062 foreach (Thing sucker in Suckers)
3063 {
3064 sucker.Destroy();
3065 }
3066 Suckers.Clear();
3067 if (RespawnRate != 0f)
3068 {
3069 int num = 0;
3070 foreach (Chara chara in map.charas)
3071 {
3072 if (!chara.IsGlobal)
3073 {
3074 num++;
3075 }
3076 }
3077 if (num < MaxRespawn)
3078 {
3079 for (int i = 0; i < RespawnPerHour; i++)
3080 {
3081 SpawnMob();
3082 }
3083 }
3084 }
3085 if (!date.IsRealTime && EClass.rnd(24) == 0)
3086 {
3087 RainWater();
3088 }
3089 if (date.hour == 6)
3090 {
3091 GrowPlants(date);
3092 }
3093 }
virtual void OnSimulateHour(VirtualDate date)
Definition: Card.cs:5825
void DecayNatural(int hour=1)
Definition: Card.cs:5834
int hour
Definition: Date.cs:74
void OnSimulateHour(VirtualDate date)
virtual void TryToggle()
Definition: Trait.cs:1084
bool IsRealTime
Definition: VirtualDate.cs:7
virtual int RespawnPerHour
Definition: Zone.cs:336
virtual float RespawnRate
Definition: Zone.cs:322
static List< Thing > Suckers
Definition: Zone.cs:80
void GrowPlants(VirtualDate date)
Definition: Zone.cs:3130
int MaxRespawn
Definition: Zone.cs:308

References EClass._map, Map.charas, Card.DecayNatural(), Card.Destroy(), Chara.IsGlobal, Card.IsInstalled, VirtualDate.IsRealTime, ZoneEventManager.OnSimulateHour(), Card.OnSimulateHour(), FactionBranch.OnSimulateHour(), EClass.pc, EClass.rnd(), Map.things, Card.trait, and Trait.TryToggle().

Referenced by VirtualDate.SimulateHour().

◆ OnSimulateMonth()

void Zone.OnSimulateMonth ( VirtualDate  date)
inline

Definition at line 3103 of file Zone.cs.

3104 {
3105 if (base.IsPlayerFaction)
3106 {
3107 branch.OnSimulateMonth(date);
3108 }
3109 if (date.IsRealTime)
3110 {
3112 }
3113 }
void OnSimulateMonth(VirtualDate date)

References EClass._map, VirtualDate.IsRealTime, FactionBranch.OnSimulateMonth(), and Map.RefreshAllTiles().

Referenced by VirtualDate.SimulateMonth().

◆ OnVisit()

void Zone.OnVisit ( )
inline

Definition at line 1021 of file Zone.cs.

1022 {
1024 {
1025 EClass.player.stats.deepest = DangerLv;
1026 }
1027 if (EClass.world.date.IsExpired(base.dateRevive))
1028 {
1030 Revive();
1031 foreach (Chara chara in EClass._map.charas)
1032 {
1033 chara.TryRestock(onCreate: false);
1034 if (!chara.IsPCFaction)
1035 {
1036 chara.c_fur = 0;
1037 }
1038 }
1039 }
1042 events.OnVisit();
1043 OnActivate();
1044 UpdateQuests();
1046 isSimulating = true;
1047 Simulate();
1048 isSimulating = false;
1050 if (EClass.Branch != null)
1051 {
1053 }
1054 base.lastActive = EClass.world.date.GetRaw();
1055 if (!EClass.game.isLoading)
1056 {
1057 base.visitCount++;
1058 }
1059 base.version = EClass.core.version.GetInt();
1060 }
Version version
Definition: BaseCore.cs:17
override bool IsPCFaction
Definition: Chara.cs:656
void TryRestock(bool onCreate)
Definition: Chara.cs:4295
void OnAfterSimulate()
int deepest
Definition: Player.cs:92
Stats stats
Definition: Player.cs:817
void AssignCharas()
Definition: RoomManager.cs:39
void Revive()
Definition: Zone.cs:1062
void Simulate()
Definition: Zone.cs:1128
virtual void OnAfterSimulate()
Definition: Zone.cs:1120
virtual bool CountDeepestLevel
Definition: Zone.cs:224
void RefreshCriminal()
Definition: Zone.cs:3268
virtual void OnBeforeSimulate()
Definition: Zone.cs:1112
virtual void OnActivate()
Definition: Zone.cs:1100
override int DangerLv
Definition: Zone.cs:107
void ResetHostility()
Definition: Zone.cs:2509
void UpdateQuests(bool force=false)
Definition: Zone.cs:3320
int GetInt()
Definition: Version.cs:21

References EClass._map, RoomManager.AssignCharas(), EClass.Branch, Map.charas, EClass.core, World.date, Player.Stats.deepest, EClass.game, Version.GetInt(), Date.GetRaw(), Date.IsExpired(), Game.isLoading, Chara.IsPCFaction, FactionBranch.OnAfterSimulate(), ZoneEventManager.OnVisit(), EClass.player, Revive, Map.rooms, Player.stats, Chara.TryRestock(), BaseCore.version, and EClass.world.

◆ OnVisitNewMapOrRegenerate()

virtual void Zone.OnVisitNewMapOrRegenerate ( )
inlinevirtual

Reimplemented in Zone_Yowyn.

Definition at line 1116 of file Zone.cs.

1117 {
1118 }

◆ RainWater()

void Zone.RainWater ( )
inline

Definition at line 3115 of file Zone.cs.

3116 {
3118 {
3119 return;
3120 }
3121 EClass._map.bounds.ForeachCell(delegate(Cell c)
3122 {
3123 if (c.IsFarmField && !c.HasRoof)
3124 {
3125 c.isWatered = true;
3126 }
3127 });
3128 }
bool IsFarmField
Definition: Cell.cs:730
bool IsIndoor
Definition: Map.cs:131

References EClass._map, Map.bounds, MapBounds.ForeachCell(), Cell.HasRoof, Cell.IsFarmField, and Map.IsIndoor.

Referenced by Weather.SetCondition().

◆ RefreshBGM()

void Zone.RefreshBGM ( )
inline

Definition at line 2742 of file Zone.cs.

2743 {
2745 {
2746 return;
2747 }
2749 Playlist playlist = map.plDay;
2750 foreach (ZoneEvent item in events.list)
2751 {
2752 if (item.playlist != null)
2753 {
2754 playlist = item.playlist;
2755 }
2756 }
2757 if (IDPlaylistOverwrite != null)
2758 {
2759 playlist = EClass.Sound.GetPlaylist(IDPlaylistOverwrite);
2760 }
2762 {
2763 Room room = EClass.pc.pos.cell.room;
2764 if (room != null && room.lot != null && room.lot.idBGM != 0)
2765 {
2766 playlist = EClass.Sound.plLot;
2767 if (playlist.list[0].data?.id != room.lot.idBGM)
2768 {
2769 playlist.list[0].data = EClass.core.refs.dictBGM.TryGetValue(room.lot.idBGM);
2770 playlist.Reset();
2771 if (!LayerDrama.keepBGM)
2772 {
2773 EClass.Sound.StopBGM(1f);
2774 }
2775 }
2776 }
2777 }
2779 EClass.Sound.SwitchPlaylist(playlist, !LayerDrama.keepBGM);
2780 }
Room room
Definition: Cell.cs:102
bool IsInActiveZone
Definition: Chara.cs:791
void SetBGMInterval()
Definition: CoreConfig.cs:989
Dictionary< int, BGMData > dictBGM
Definition: CoreRef.cs:369
CoreRef refs
Definition: Core.cs:51
static bool keepBGM
Definition: LayerDrama.cs:10
int idBGM
Definition: Lot.cs:16
Playlist plDay
Definition: Map.cs:77
Lot lot
Definition: Room.cs:21
List< ZoneEvent > list
virtual string IDPlaylistOverwrite
Definition: Zone.cs:140

References Point.cell, Core.config, EClass.core, CoreRef.dictBGM, Lot.idBGM, Chara.IsInActiveZone, item, LayerDrama.keepBGM, ZoneEventManager.list, Room.lot, EClass.pc, EClass.player, Map.plDay, Card.pos, Core.refs, Cell.room, CoreConfig.SetBGMInterval(), Player.simulatingZone, and EClass.Sound.

Referenced by BuildMenu.Deactivate(), BaseTileMap.Draw(), TileMapElona.Draw(), LayerNewZone.Embark(), ELayer.Kill(), ZoneEventSiege.OnFirstTick(), LayerEditPlaylist.OnKill(), and ZoneEventSiege.OnKill().

◆ RefreshCriminal()

void Zone.RefreshCriminal ( )
inline

Definition at line 3268 of file Zone.cs.

3269 {
3270 bool flag = EClass.player.IsCriminal && HasLaw && !AllowCriminal && !IsPCFaction;
3271 Hostility hostility = (flag ? Hostility.Neutral : Hostility.Friend);
3272 foreach (Chara chara in EClass._map.charas)
3273 {
3274 if (chara.trait is TraitGuard)
3275 {
3276 chara.hostility = hostility;
3277 if (!flag && chara.enemy != null && chara.enemy.IsPCParty)
3278 {
3279 chara.SetEnemy();
3280 }
3281 }
3282 }
3283 }
Chara enemy
Definition: Chara.cs:83
Chara SetEnemy(Chara c=null)
Definition: Chara.cs:5658
virtual bool AllowCriminal
Definition: Zone.cs:242

References EClass._map, Map.charas, Chara.enemy, Chara.IsPCParty, Chara.SetEnemy(), and Chara.trait.

Referenced by Player.ModKarma(), ConIncognito.OnRemoved(), and ConIncognito.OnStart().

◆ RefreshElectricity()

void Zone.RefreshElectricity ( )
inline

Definition at line 2636 of file Zone.cs.

2637 {
2638 dirtyElectricity = false;
2639 bool flag = GetSoilCost() > MaxSoil;
2640 base.electricity = elements.Value(2201) * 10 + BaseElectricity;
2641 foreach (Thing thing in EClass._map.things)
2642 {
2643 if (thing.IsInstalled && thing.trait.Electricity != 0 && (thing.isOn || thing.trait.Electricity > 0))
2644 {
2645 base.electricity += thing.trait.Electricity;
2646 }
2647 }
2648 if (!flag)
2649 {
2650 EClass._map.bounds.ForeachCell(delegate(Cell c)
2651 {
2652 if (c.sourceObj.id == 118 && c.growth.IsMature)
2653 {
2654 base.electricity += 20;
2655 }
2656 });
2657 }
2658 foreach (Thing thing2 in EClass._map.things)
2659 {
2660 if (thing2.IsInstalled)
2661 {
2662 thing2.trait.TryToggle();
2663 }
2664 }
2665 }
bool isOn
Definition: Card.cs:514
bool dirtyElectricity
Definition: Zone.cs:68

References EClass._map, Map.bounds, Trait.Electricity, MapBounds.ForeachCell(), Cell.growth, Card.IsInstalled, GrowSystem.IsMature, Card.isOn, Cell.sourceObj, Map.things, Card.trait, Trait.TryToggle(), and ElementContainer.Value().

Referenced by TraitLeverBreaker.OnToggle(), Scene.OnUpdate(), TraitGenerator.Recover(), UIHomeInfo.Refresh(), and TraitGenerator.ShortOut().

◆ RefreshHat()

void Zone.RefreshHat ( )
inline

Definition at line 1011 of file Zone.cs.

1012 {
1013 if (idHat != null && EClass.world.date.IsExpired(base.dateHat))
1014 {
1015 idHat = null;
1016 base.dateHat = 0;
1017 }
1018 sourceHat = ((idHat != null) ? EClass.sources.cards.map[idHat] : ((IDHat != null) ? EClass.sources.cards.map[IDHat] : null));
1019 }
Dictionary< string, CardRow > map
Definition: SourceCard.cs:8
SourceCard cards
string idHat
Definition: Spatial.cs:31
virtual string IDHat
Definition: Zone.cs:142
static CardRow sourceHat
Definition: Zone.cs:29

References SourceManager.cards, World.date, Date.IsExpired(), SourceCard.map, EClass.sources, and EClass.world.

Referenced by TraitHat.OnUse().

◆ RefreshListCitizen()

void Zone.RefreshListCitizen ( )
inline

Definition at line 3285 of file Zone.cs.

3286 {
3287 if (base.lv != 0)
3288 {
3289 return;
3290 }
3291 dictCitizen.Clear();
3292 foreach (Chara item in map.charas.Concat(map.deadCharas))
3293 {
3294 if (item.trait.IsCitizen && !item.IsGlobal && !item.isSubsetCard)
3295 {
3296 dictCitizen[item.uid] = item.Name;
3297 }
3298 }
3299 }
Dictionary< int, string > dictCitizen
Definition: Zone.cs:49

References Map.charas, Map.deadCharas, and item.

Referenced by Chara.MakeAlly().

◆ RefreshPlaylist()

void Zone.RefreshPlaylist ( )
inline

Definition at line 2734 of file Zone.cs.

2735 {
2736 if (map.plDay == null)
2737 {
2738 map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList));
2739 }
2740 }

References Map._plDay, Map.plDay, and EClass.Sound.

Referenced by ClaimZone(), and LayerEditPlaylist.OnKill().

◆ RemoveCard()

void Zone.RemoveCard ( Card  t)
inline

Implements ICardParent.

Definition at line 1933 of file Zone.cs.

1934 {
1935 if (IsActiveZone)
1936 {
1938 }
1939 t.parent = null;
1940 if (t.isChara)
1941 {
1942 t.Chara.currentZone = null;
1943 }
1944 if (t.isThing && !t.trait.IDActorEx.IsEmpty())
1945 {
1947 }
1948 if (t.renderer.hasActor)
1949 {
1951 }
1952 }
override void OnLeaveScreen()
virtual bool isChara
Definition: Card.cs:1959
void OnCardRemovedFromZone(Card t)
Definition: Map.cs:819
void RemoveActorEx(Card c)
Definition: Scene.cs:1015
virtual string IDActorEx
Definition: Trait.cs:167

References CardRenderer.hasActor, Trait.IDActorEx, Card.isChara, Card.isThing, Map.OnCardRemovedFromZone(), CardRenderer.OnLeaveScreen(), Scene.RemoveActorEx(), Card.renderer, EClass.scene, and Card.trait.

Referenced by Activate(), Faction.AddReserve(), Chara.MoveZone(), Map.OnDeactivate(), TaskMoveInstalled.OnProgressComplete(), Map.ReloadRoom(), Simulate(), ActThrow.Throw(), Chara.Tick(), and CoreDebug.UpdateInput().

◆ ResetHostility()

void Zone.ResetHostility ( )
inline

Definition at line 2509 of file Zone.cs.

2510 {
2511 foreach (Chara chara in EClass._map.charas)
2512 {
2513 if (!chara.source.hostility.IsEmpty() && chara.source.hostility.ToEnum<Hostility>() >= Hostility.Friend && !chara.IsPCFactionOrMinion)
2514 {
2515 chara.c_originalHostility = (Hostility)0;
2516 }
2517 chara.hostility = chara.OriginalHostility;
2518 if (chara.enemy != null && (chara.enemy.IsPCFaction || chara.IsPCFaction))
2519 {
2520 chara.SetEnemy();
2521 }
2522 }
2523 }
bool IsPCFactionOrMinion
Definition: Card.cs:2132
SourceChara.Row source
Definition: Chara.cs:143

References EClass._map, Map.charas, Chara.enemy, Chara.IsPCFaction, Card.IsPCFactionOrMinion, Chara.OriginalHostility, Chara.SetEnemy(), and Chara.source.

Referenced by Chara.Die(), and ConIncognito.OnStart().

◆ Revive()

void Zone.Revive ( )
inline

Definition at line 1062 of file Zone.cs.

1063 {
1064 base.dateRevive = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRevive;
1065 if (ShouldAutoRevive)
1066 {
1067 foreach (Chara deadChara in map.deadCharas)
1068 {
1069 if (deadChara.trait.CanAutoRevive && deadChara.CanRevive())
1070 {
1071 deadChara.Revive();
1073 {
1074 deadChara.RemoveBacker();
1075 }
1076 EClass._zone.AddCard(deadChara, (deadChara.orgPos != null && deadChara.orgPos.IsInBounds) ? deadChara.orgPos : deadChara.pos);
1077 }
1078 }
1079 }
1080 foreach (Chara value in EClass.game.cards.globalCharas.Values)
1081 {
1082 if (value.isDead && value.CanRevive() && value.homeZone == this)
1083 {
1084 value.Revive();
1085 Point point = GetSpawnPos(value);
1086 if (value.orgPos != null && value.orgPos.IsInBounds)
1087 {
1088 point = value.orgPos.GetNearestPoint() ?? point;
1089 }
1090 EClass._zone.AddCard(value, point);
1091 }
1092 }
1093 map.deadCharas.Clear();
1094 }
int c_idBacker
Definition: Card.cs:1361
bool CanRevive()
Definition: Chara.cs:4623
void Revive(Point p=null, bool msg=false)
Definition: Chara.cs:4649
Zone homeZone
Definition: Chara.cs:252
bool IsInBounds
Definition: Point.cs:104
virtual bool CanAutoRevive
Definition: TraitChara.cs:20
virtual bool ShouldAutoRevive
Definition: Zone.cs:373

References EClass._zone, AddCard(), GameSetting.balance, Card.c_idBacker, TraitChara.CanAutoRevive, Chara.CanRevive(), Game.cards, Core.config, EClass.core, World.date, GameSetting.BalanceSetting.dateRevive, Map.deadCharas, Player.doneBackers, EClass.game, Point.GetNearestPoint(), Date.GetRaw(), CardManager.globalCharas, Chara.homeZone, CoreConfig.Test.ignoreBackerDestoryFlag, Card.isBackerContent, Chara.isDead, Point.IsInBounds, Chara.orgPos, EClass.player, Card.pos, Card.RemoveBacker(), Chara.Revive(), EClass.setting, CoreConfig.test, Chara.trait, and EClass.world.

Referenced by Map.ResetEditorPos().

◆ SetBGM() [1/2]

void Zone.SetBGM ( int  id = -1,
bool  refresh = true 
)
inline

Definition at line 2729 of file Zone.cs.

2730 {
2731 SetBGM(new List<int> { id }, refresh);
2732 }

◆ SetBGM() [2/2]

void Zone.SetBGM ( List< int >  ids,
bool  refresh = true 
)
inline

Definition at line 2706 of file Zone.cs.

2707 {
2708 map._plDay.Clear();
2709 if (ids.Count > 0)
2710 {
2711 foreach (int id in ids)
2712 {
2713 if (id != -1)
2714 {
2715 map._plDay.Add(id);
2716 }
2717 }
2718 }
2719 UnityEngine.Object.DestroyImmediate(map.plDay);
2720 map.plDay = null;
2722 if (refresh)
2723 {
2724 EClass.Sound.StopBGM();
2725 RefreshBGM();
2726 }
2727 }

References Map._plDay, Map.plDay, and EClass.Sound.

Referenced by ZoneEventSubdue.CheckClear(), ClaimZone(), ZonePreEnterBout.Execute(), ZoneEventDefenseGame.OnVisit(), ZoneEventHarvest.OnVisit(), ZoneEventSubdue.OnVisit(), DramaManager.ParseLine(), GoalCombat.Run(), and Chara.TryDropBossLoot().

◆ Simulate()

void Zone.Simulate ( )
inline

Definition at line 1128 of file Zone.cs.

1129 {
1130 if (!EClass.game.isLoading && base.visitCount > 0)
1131 {
1132 if (Boss != null && IsNefia)
1133 {
1134 Msg.Say("bossLeave", Boss.Name.ToTitleCase(), EClass._zone.Name);
1137 }
1138 int num = Mathf.Clamp(MinsSinceLastActive, 1, 10000);
1139 foreach (Chara chara2 in EClass._map.charas)
1140 {
1141 if (chara2.hp < 0)
1142 {
1143 chara2.hp = 0;
1144 }
1145 if (!chara2.IsPCParty)
1146 {
1147 if (chara2.mana.value < 0)
1148 {
1149 chara2.mana.value = 0;
1150 }
1151 if (chara2.stamina.value < 0)
1152 {
1153 chara2.stamina.value = 0;
1154 }
1155 }
1156 if (num > 60)
1157 {
1158 chara2.resistCon = null;
1159 }
1160 if (chara2.rarity >= Rarity.Legendary && !chara2.IsPCFaction && num > 0)
1161 {
1162 Msg.ignoreAll = true;
1163 chara2.Cure(CureType.Boss, 20 + num * 10);
1164 chara2.HealHP(Mathf.Max(1, chara2.MaxHP) * Mathf.Min(num, 20) / 20);
1165 chara2.mana.Mod(Mathf.Max(1, chara2.mana.max) * Mathf.Min(num, 20) / 20);
1166 chara2.stamina.Mod(Mathf.Max(1, chara2.stamina.max) * Mathf.Min(num, 20) / 20);
1167 Msg.ignoreAll = false;
1168 }
1169 }
1170 }
1171 if (HourSinceLastActive <= 1)
1172 {
1173 return;
1174 }
1175 Debug.Log(Name + " Simulate:" + HourSinceLastActive + " hours");
1176 VirtualDate virtualDate = new VirtualDate(HourSinceLastActive);
1177 List<Chara> list = EClass._map.charas.ToList();
1178 int num2 = HourSinceLastActive / 24;
1179 if (num2 > 0)
1180 {
1181 foreach (Chara item in list)
1182 {
1183 if (!item.IsPCParty)
1184 {
1185 item.OnSleep(200, num2);
1186 if (item.conSleep != null)
1187 {
1188 item.conSleep.Kill();
1189 }
1190 if (EClass.rnd(EClass.world.date.IsNight ? 20 : 200) == 0 && !item.IsPCFaction)
1191 {
1192 item.AddCondition<ConSleep>(1000 + EClass.rnd(1000), force: true);
1193 }
1194 if (item.things.Count > 20)
1195 {
1196 item.ClearInventory(ClearInventoryType.Purge);
1197 }
1198 }
1199 }
1200 }
1201 EClass._map.things.ForeachReverse(delegate(Thing t)
1202 {
1204 });
1205 VirtualDate.current = virtualDate;
1206 for (int i = 0; i < HourSinceLastActive; i++)
1207 {
1208 virtualDate.SimulateHour();
1209 }
1210 VirtualDate.current = null;
1211 if (!IsPCFaction)
1212 {
1213 return;
1214 }
1215 int num3 = 0;
1216 foreach (Chara item2 in list)
1217 {
1218 if (item2.IsPCParty)
1219 {
1220 continue;
1221 }
1222 if (!item2.IsHomeMember())
1223 {
1224 if (item2.id == "bee")
1225 {
1226 num3++;
1227 }
1228 if (num2 > 0 && item2.IsGuest())
1229 {
1230 item2.ChooseNewGoal();
1231 item2.ai.SimulateZone(num2);
1232 }
1233 continue;
1234 }
1235 if (num2 > 0)
1236 {
1237 Goal goalWork = item2.GetGoalWork();
1238 item2.SetAI(goalWork);
1239 if (goalWork is GoalWork)
1240 {
1241 (goalWork as GoalWork).FindWork(item2);
1242 }
1243 item2.ai.SimulateZone(num2);
1244 goalWork = item2.GetGoalHobby();
1245 item2.SetAI(goalWork);
1246 if (goalWork is GoalWork)
1247 {
1248 (goalWork as GoalWork).FindWork(item2);
1249 }
1250 item2.ai.SimulateZone(num2);
1251 }
1252 item2.ChooseNewGoal();
1253 if (item2.conSuspend == null)
1254 {
1255 item2.ai.OnSimulatePosition();
1256 }
1257 }
1258 List<Thing> list2 = new List<Thing>();
1259 foreach (Thing thing in map.things)
1260 {
1261 if (thing.IsInstalled && thing.trait is TraitBeekeep)
1262 {
1263 list2.Add(thing);
1264 }
1265 }
1266 if (num3 >= list2.Count)
1267 {
1268 return;
1269 }
1270 for (int j = num3; j < list2.Count; j++)
1271 {
1272 if (EClass.rnd(200) <= HourSinceLastActive)
1273 {
1274 Chara chara = CharaGen.Create("bee");
1275 AddCard(chara, list2.RandomItem().pos);
1276 Hostility c_originalHostility = (chara.hostility = Hostility.Neutral);
1277 chara.c_originalHostility = c_originalHostility;
1278 }
1279 }
1280 }
ClearInventoryType
CureType
Definition: CureType.cs:2
virtual void OnSimulatePosition()
Definition: AIAct.cs:590
void SimulateZone(int days)
Definition: AIAct.cs:578
virtual void HealHP(int a, HealSource origin=HealSource.None)
Definition: Card.cs:3680
int hp
Definition: Card.cs:226
string Name
Definition: Card.cs:2013
AIAct ai
Definition: Chara.cs:187
ConSuspend conSuspend
Definition: Chara.cs:101
Goal GetGoalWork()
Definition: Chara.cs:8005
override int MaxHP
Definition: Chara.cs:693
Goal GetGoalHobby()
Definition: Chara.cs:8018
Stats mana
Definition: Chara.cs:963
Stats stamina
Definition: Chara.cs:955
bool IsHomeMember()
Definition: Chara.cs:5942
bool IsGuest()
Definition: Chara.cs:5967
void ChooseNewGoal()
Definition: Chara.cs:7941
void Cure(CureType type, int p=100, BlessedState state=BlessedState.Normal)
Definition: Chara.cs:8647
bool IsNight
Definition: Date.cs:112
Definition: Goal.cs:4
bool isConquered
Definition: Spatial.cs:382
virtual void Mod(int a)
Definition: Stats.cs:135
virtual int value
Definition: Stats.cs:56
virtual int max
Definition: Stats.cs:68
void SimulateHour()
Definition: VirtualDate.cs:66
int MinsSinceLastActive
Definition: Zone.cs:122
virtual bool IsNefia
Definition: Zone.cs:278
Chara Boss
Definition: Zone.cs:83
int HourSinceLastActive
Definition: Zone.cs:120

References EClass._map, EClass._zone, Chara.ai, Boss, Map.charas, Chara.ChooseNewGoal(), Chara.conSuspend, CharaGen.Create(), Chara.Cure(), World.date, Debug, Card.DecayNatural(), EClass.game, Chara.GetGoalHobby(), Chara.GetGoalWork(), GetTopZone(), Card.HealHP(), Card.hp, Card.id, Spatial.isConquered, Chara.IsGuest(), Chara.IsHomeMember(), Card.IsInstalled, Game.isLoading, Date.IsNight, Chara.IsPCFaction, Chara.IsPCParty, item, Chara.mana, Stats.max, Chara.MaxHP, Stats.Mod(), Spatial.Name, AIAct.OnSimulatePosition(), Card.pos, Card.rarity, RemoveCard(), EClass.rnd(), Msg.Say(), Chara.SetAI(), VirtualDate.SimulateHour(), AIAct.SimulateZone(), Chara.stamina, Map.things, Card.trait, Stats.value, and EClass.world.

◆ SpawnAltar()

void Zone.SpawnAltar ( )
inline

Definition at line 2344 of file Zone.cs.

2345 {
2347 {
2348 if (r.points.Count <= 4)
2349 {
2350 return false;
2351 }
2352 map.poiMap.OccyupyPOI(r.points[0]);
2353 List<Point> points = r.points;
2354 Religion randomReligion = EClass.game.religions.GetRandomReligion();
2355 "altarPoint".lang(randomReligion.NameDomain.lang());
2356 Thing thing = ThingGen.Create("altar");
2357 (thing.trait as TraitAltar).SetDeity(randomReligion.id);
2358 Chara t = CharaGen.Create("twintail");
2359 EClass._zone.AddCard(t, points.RandomItem());
2360 for (int i = 0; i < 2 + EClass.rnd(2); i++)
2361 {
2362 Chara t2 = CharaGen.Create("twintail");
2363 EClass._zone.AddCard(t2, points.RandomItem());
2364 }
2365 if (points[0].Installed == null)
2366 {
2367 EClass._zone.AddCard(thing, points[0]).Install();
2368 }
2369 foreach (Point item in points)
2370 {
2371 if (item.x % 3 == 0 && item.z % 2 == 0 && item != points[0] && !item.Equals(points[0].Front) && item.Installed == null)
2372 {
2373 thing = ThingGen.Create("pillar1");
2374 EClass._zone.AddCard(thing, item).Install();
2375 }
2376 item.SetObj();
2377 item.SetFloor(3, 6);
2378 }
2379 return true;
2380 });
2381 }
Crawler start
Definition: CoreRef.cs:210
Crawlers crawlers
Definition: CoreRef.cs:327
bool CrawlUntil(Map map, Func< Point > onStart, int tries, Func< Result, bool > canComplete, Action onFail=null)
Definition: Crawler.cs:57
ReligionManager religions
Definition: Game.cs:158
POIMap poiMap
Definition: Map.cs:97
Point GetCenter()
Definition: POIMap.cs:13
Cell GetCenterCell(int radius=1)
Definition: POIMap.cs:65
void OccyupyPOI(Point p, int radius=0)
Definition: POIMap.cs:99
Religion GetRandomReligion(bool onlyJoinable=true, bool includeMinor=false)

References EClass._zone, AddCard(), EClass.core, CoreRef.crawlers, Crawler.CrawlUntil(), ThingGen.Create(), CharaGen.Create(), EClass.game, POIMap.Cell.GetCenter(), POIMap.GetCenterCell(), ReligionManager.GetRandomReligion(), item, POIMap.OccyupyPOI(), Map.poiMap, Core.refs, Game.religions, EClass.rnd(), CoreRef.Crawlers.start, and Card.trait.

◆ SpawnLostItems()

void Zone.SpawnLostItems ( )
inline

Definition at line 3443 of file Zone.cs.

3444 {
3445 for (int i = 0; i < 2 + EClass.rnd(4); i++)
3446 {
3447 Point point = GetPos();
3448 if (point == null)
3449 {
3450 continue;
3451 }
3452 if (EClass.rnd(30) == 0)
3453 {
3454 Thing thing = ThingGen.Create("purse");
3455 thing.isLostProperty = true;
3456 thing.things.DestroyAll();
3457 int num2 = (thing.c_lockLv = EClass.rndHalf(Mathf.Min(base.development / 10 + 10, 50)));
3458 thing.Add("money", EClass.rndHalf(num2 * 60 + 1000));
3459 if (EClass.rnd(2) == 0)
3460 {
3461 thing.Add("plat", EClass.rnd(4));
3462 }
3463 else
3464 {
3465 thing.Add("medal", EClass.rnd(2));
3466 }
3467 EClass._zone.AddCard(thing, point);
3468 }
3469 else
3470 {
3472 }
3473 }
3474 static Point GetPos()
3475 {
3476 for (int j = 0; j < 10; j++)
3477 {
3478 Point randomPoint = EClass._zone.bounds.GetRandomPoint();
3479 if (!randomPoint.IsBlocked && !randomPoint.HasThing && !randomPoint.HasObj && !randomPoint.HasBlock)
3480 {
3481 return randomPoint;
3482 }
3483 }
3484 return null;
3485 }
3486 }
ThingContainer things
Definition: Card.cs:34
Thing Add(string id, int num=1, int lv=1)
Definition: Card.cs:2878
static int rndHalf(int a)
Definition: EClass.cs:74
bool HasThing
Definition: Point.cs:239
void DestroyAll(Func< Thing, bool > funcExclude=null)
static Thing CreateFromCategory(string idCat, int lv=-1)
Definition: ThingGen.cs:75
MapBounds bounds
Definition: Zone.cs:46

References EClass._zone, Card.Add(), AddCard(), bounds, ThingGen.Create(), ThingGen.CreateFromCategory(), ThingContainer.DestroyAll(), MapBounds.GetRandomPoint(), Point.HasBlock, Point.HasObj, Point.HasThing, Point.IsBlocked, EClass.rnd(), EClass.rndHalf(), and Card.things.

◆ SpawnMob()

Chara Zone.SpawnMob ( Point  pos = null,
SpawnSetting  setting = null 
)
inline

Definition at line 2543 of file Zone.cs.

2544 {
2545 if (setting == null)
2546 {
2548 }
2549 if (pos == null)
2550 {
2551 pos = GetSpawnPos(setting.position, setting.tries);
2552 if (pos == null)
2553 {
2554 pos = GetSpawnPos(SpawnPosition.Random, setting.tries);
2555 if (pos == null)
2556 {
2557 return null;
2558 }
2559 }
2560 }
2562 SpawnList spawnList = null;
2563 spawnList = ((setting.idSpawnList != null) ? SpawnList.Get(setting.idSpawnList) : ((EClass._zone is Zone_DungeonYeek) ? SpawnListChara.Get("dungeon_yeek", (SourceChara.Row r) => r.race == "yeek") : ((setting.hostility == SpawnHostility.Neutral || (setting.hostility != SpawnHostility.Enemy && Rand.Range(0f, 1f) < ChanceSpawnNeutral)) ? SpawnList.Get("c_neutral") : ((biome.spawn.chara.Count <= 0) ? SpawnList.Get(biome.name, "chara", new CharaFilter
2564 {
2565 ShouldPass = delegate(SourceChara.Row s)
2566 {
2567 if (s.hostility != "")
2568 {
2569 return false;
2570 }
2571 return s.biome == biome.name || s.biome.IsEmpty();
2572 }
2574 int dangerLv = DangerLv;
2575 CardBlueprint cardBlueprint = new CardBlueprint
2576 {
2577 rarity = Rarity.Normal,
2578 idEle = setting.idEle
2579 };
2580 int num = ((setting.filterLv == -1) ? dangerLv : setting.filterLv);
2582 {
2583 num = ((dangerLv - 1) % 50 + 5) * 150 / 100;
2584 }
2585 CardRow cardRow = (setting.id.IsEmpty() ? spawnList.Select(num, setting.levelRange) : EClass.sources.cards.map[setting.id]);
2586 Debug.Log(cardRow);
2587 Debug.Log(cardRow.id);
2588 int num2 = ((setting.fixedLv == -1) ? cardRow.LV : setting.fixedLv);
2590 {
2591 num2 = (50 + cardRow.LV) * Mathf.Max(1, (dangerLv - 1) / 50);
2592 }
2593 if (setting.rarity == Rarity.Random)
2594 {
2595 if (EClass.rnd(100) == 0)
2596 {
2597 cardBlueprint.rarity = Rarity.Legendary;
2598 num2 = num2 * 125 / 100;
2599 }
2600 }
2601 else
2602 {
2603 cardBlueprint.rarity = setting.rarity;
2604 }
2605 if (setting.isBoss)
2606 {
2607 num2 = num2 * 150 / 100;
2608 }
2609 if (setting.isEvolved)
2610 {
2611 num2 = num2 * 2 + 20;
2612 }
2613 if (num2 != cardRow.LV)
2614 {
2615 cardBlueprint.lv = num2;
2616 }
2617 CardBlueprint.Set(cardBlueprint);
2618 Chara chara = CharaGen.Create(cardRow.id, num);
2619 AddCard(chara, pos);
2620 if (setting.forcedHostility.HasValue)
2621 {
2622 Hostility c_originalHostility = (chara.hostility = setting.forcedHostility.Value);
2623 chara.c_originalHostility = c_originalHostility;
2624 }
2625 if (setting.isBoss)
2626 {
2627 chara.c_bossType = BossType.Boss;
2628 }
2629 if (setting.isEvolved)
2630 {
2631 chara.c_bossType = BossType.Evolved;
2632 }
2633 return chara;
2634 }
BossType
Definition: BossType.cs:2
SpawnHostility
string GetRandomCharaId()
static void Set(CardBlueprint _bp)
string id
Definition: CardRow.cs:7
BiomeProfile biome
Definition: Cell.cs:1075
static int Range(int min, int max)
Definition: Rand.cs:42
int LV
Definition: RenderRow.cs:22
static SpawnList Get(string id, Func< SourceChara.Row, bool > func)
static SpawnList Get(string id, string parent=null, CardFilter filter=null)
Definition: SpawnList.cs:18
CardRow Select(int lv=-1, int levelRange=-1)
Definition: SpawnList.cs:139
static SpawnSetting Default
Definition: SpawnSetting.cs:29
virtual float ChanceSpawnNeutral
Definition: Zone.cs:338
virtual bool ScaleMonsterLevel
Definition: Zone.cs:404

References SpawnSetting.Default, SpawnListChara.Get(), SpawnList.Get(), and Rand.Range().

Referenced by TraitShrine._OnUse(), ZonePreEnterEncounter.Execute(), Zone_RandomDungeon.OnGenerateMap(), Zone_Void.OnGenerateMap(), ZoneEventHarvest.OnVisit(), ZoneEventQuest.Spawn(), ZoneEventQuest.SpawnBoss(), CoreDebug.SpawnBoss(), GenRoom.SpawnMob(), CoreDebug.TestSpawn(), TraitSpotSpawn.Update(), and CoreDebug.UpdateInput().

◆ TextLevel()

string Zone.TextLevel ( int  _lv)
inline

Definition at line 543 of file Zone.cs.

544 {
545 if (_lv != 0)
546 {
547 if (base.lv <= 0)
548 {
549 return " " + "zoneLevelB".lang((_lv * -1).ToString() ?? "");
550 }
551 return " " + "zoneLevel".lang((_lv + 1).ToString() ?? "");
552 }
553 return "";
554 }
override string ToString()
Definition: Zone.cs:538

References ToString().

◆ ToString()

override string Zone.ToString ( )
inline

Definition at line 538 of file Zone.cs.

539 {
540 return Name + "(" + base.uid + ")(" + _regionPos?.ToString() + ") instance?" + IsInstance + "/" + EClass.world.date.GetRemainingHours(base.dateExpire) + "h";
541 }
int GetRemainingHours(int rawDeadLine)
Definition: Date.cs:337
override string ToString()
Definition: Point.cs:500
Point _regionPos
Definition: Spatial.cs:55

References Spatial._regionPos, World.date, Date.GetRemainingHours(), IsInstance, Spatial.Name, Point.ToString(), and EClass.world.

Referenced by Game.OnLoad(), and TextLevel().

◆ TryAddThing()

bool Zone.TryAddThing ( Thing  target,
Point  p,
bool  destroyIfFail = false 
)
inline

Definition at line 2133 of file Zone.cs.

2134 {
2135 int num = 0;
2136 if (p.cell.detail != null)
2137 {
2138 foreach (Thing thing in p.cell.detail.things)
2139 {
2140 if (thing.placeState == PlaceState.roaming)
2141 {
2142 if (target.TryStackTo(thing))
2143 {
2144 return true;
2145 }
2146 num++;
2147 }
2148 }
2149 }
2150 if (num == 0 || !destroyIfFail)
2151 {
2152 EClass._zone.AddCard(target, p);
2153 return true;
2154 }
2155 target.Destroy();
2156 return false;
2157 }
bool TryStackTo(Thing to)
Definition: Card.cs:3144
List< Thing > things
Definition: CellDetail.cs:11

References EClass._zone, AddCard(), Point.cell, Card.Destroy(), Cell.detail, Card.placeState, CellDetail.things, and Card.TryStackTo().

Referenced by FactionBranch.GenerateGarbage(), and Chara.GiveBirth().

◆ TryAddThingInSharedContainer()

bool Zone.TryAddThingInSharedContainer ( Thing  t,
List< Thing containers = null,
bool  add = true,
bool  msg = false,
Chara  chara = null,
bool  sharedOnly = true 
)
inline

Definition at line 2036 of file Zone.cs.

2037 {
2038 Thing dest = null;
2039 int priority = -1;
2040 ContainerFlag flag = t.category.GetRoot().id.ToEnum<ContainerFlag>();
2041 if (flag == ContainerFlag.none)
2042 {
2043 flag = ContainerFlag.other;
2044 }
2045 if (containers == null)
2046 {
2047 containers = EClass._map.props.installed.containers;
2048 }
2049 if (SearchDest() != null)
2050 {
2051 return true;
2052 }
2053 if (dest == null)
2054 {
2055 return false;
2056 }
2057 if (add)
2058 {
2059 if (msg)
2060 {
2061 chara.Say("putSharedItem", chara, t, dest.GetName(NameStyle.Full));
2062 }
2063 dest.AddThing(t);
2064 }
2065 return true;
2066 Thing SearchDest()
2067 {
2068 foreach (Thing container in containers)
2069 {
2070 Thing thing = container;
2071 if (thing.trait is TraitShippingChest)
2072 {
2074 }
2075 if ((!sharedOnly || thing.IsSharedContainer) && thing.c_lockLv <= 0 && (thing.things.Count < thing.things.MaxCapacity || thing.things.CanStack(t) != t))
2076 {
2077 Window.SaveData windowSaveData = thing.GetWindowSaveData();
2078 if (windowSaveData != null)
2079 {
2080 if (windowSaveData.priority <= priority || (windowSaveData.noRotten && t.IsDecayed) || (windowSaveData.onlyRottable && t.trait.Decay == 0))
2081 {
2082 continue;
2083 }
2085 if (windowSaveData.userFilter)
2086 {
2087 filterResult = windowSaveData.IsFilterPass(t.GetName(NameStyle.Full, 1));
2088 if (filterResult == Window.SaveData.FilterResult.Block)
2089 {
2090 continue;
2091 }
2092 }
2093 if (filterResult != Window.SaveData.FilterResult.PassWithoutFurtherTest)
2094 {
2095 if (windowSaveData.advDistribution)
2096 {
2097 bool flag2 = false;
2098 foreach (int cat in windowSaveData.cats)
2099 {
2100 if (t.category.uid == cat)
2101 {
2102 flag2 = true;
2103 break;
2104 }
2105 }
2106 if (!flag2)
2107 {
2108 continue;
2109 }
2110 }
2111 else if (windowSaveData.flag.HasFlag(flag))
2112 {
2113 continue;
2114 }
2115 }
2116 priority = windowSaveData.priority;
2117 }
2118 else
2119 {
2120 if (priority != -1)
2121 {
2122 continue;
2123 }
2124 priority = 0;
2125 }
2126 dest = thing;
2127 }
2128 }
2129 return null;
2130 }
2131 }
ContainerFlag
Definition: ContainerFlag.cs:5
NameStyle
Definition: NameStyle.cs:2
Thing container_shipping
Definition: CardManager.cs:52
bool IsDecayed
Definition: Card.cs:2147
int c_lockLv
Definition: Card.cs:924
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:2901
Window.SaveData GetWindowSaveData()
Definition: Card.cs:2376
SourceCategory.Row category
Definition: Card.cs:1925
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6046
List< Thing > containers
Definition: Props.cs:22
Thing CanStack(Thing target, int destInvX=-1, int destInvY=-1)
override string GetName(NameStyle style, int _num=-1)
Definition: Thing.cs:494
bool IsSharedContainer
Definition: Thing.cs:92
virtual int Decay
Definition: Trait.cs:115
FilterResult IsFilterPass(string text)
Definition: Window.cs:498
ContainerFlag flag
Definition: Window.cs:267
HashSet< int > cats
Definition: Window.cs:119
bool userFilter
Definition: Window.cs:132
bool noRotten
Definition: Window.cs:439
bool onlyRottable
Definition: Window.cs:451
bool advDistribution
Definition: Window.cs:427
Definition: Window.cs:13

References EClass._map, Card.AddThing(), Window.SaveData.advDistribution, Card.c_lockLv, ThingContainer.CanStack(), Game.cards, Card.category, Window.SaveData.cats, CardManager.container_shipping, Props.containers, Trait.Decay, Window.SaveData.flag, EClass.game, Thing.GetName(), Card.GetWindowSaveData(), PropsManager.installed, Card.IsDecayed, Window.SaveData.IsFilterPass(), Thing.IsSharedContainer, ThingContainer.MaxCapacity, Window.SaveData.noRotten, Window.SaveData.onlyRottable, Window.SaveData.priority, Map.props, Card.Say(), Card.things, Card.trait, and Window.SaveData.userFilter.

Referenced by FactionBranch.AutoClean(), AI_Haul.GetThingToClean(), AI_Haul.Run(), GrowSystem.TryPick(), Chara.TryPutShared(), and Chara.TryPutSharedItems().

◆ TryAddThingInSpot< T >()

bool Zone.TryAddThingInSpot< T > ( Thing  t,
bool  useContainer = true 
)
inline
Type Constraints
T :Trait 

Definition at line 1959 of file Zone.cs.

1959 : Trait
1960 {
1961 Thing randomThing = EClass._map.props.installed.traits.GetRandomThing<T>();
1962 if (randomThing == null)
1963 {
1965 return false;
1966 }
1967 if (useContainer && (!t.IsContainer || t.things.Count == 0))
1968 {
1969 List<Thing> list = new List<Thing>();
1970 foreach (Point item in randomThing.trait.ListPoints(null, onlyPassable: false))
1971 {
1972 foreach (Card item2 in item.ListCards())
1973 {
1974 if (item2.IsContainer && !(item2.trait is TraitDeliveryChest))
1975 {
1976 list.Add(item2.Thing);
1977 }
1978 }
1979 }
1980 if (TryAddThingInSharedContainer(t, list, add: true, msg: false, null, sharedOnly: false))
1981 {
1982 return true;
1983 }
1984 }
1985 AddCard(t, randomThing.trait.GetRandomPoint());
1986 return true;
1987 }
virtual Thing Thing
Definition: Card.cs:1934
bool IsContainer
Definition: Card.cs:1965
virtual List< Point > ListPoints(Point center=null, bool onlyPassable=true)
Definition: Trait.cs:707
Point GetRandomPoint(Func< Point, bool > func=null, Chara accessChara=null)
Definition: Trait.cs:689
bool TryAddThingInSharedContainer(Thing t, List< Thing > containers=null, bool add=true, bool msg=false, Chara chara=null, bool sharedOnly=true)
Definition: Zone.cs:2036

References EClass._map, Map.bounds, Trait.GetRandomPoint(), MapBounds.GetRandomSurface(), PropsManager.installed, Card.IsContainer, item, Trait.ListPoints(), Map.props, Card.Thing, Card.things, Card.trait, and Props.traits.

◆ TryGenerateBigDaddy()

void Zone.TryGenerateBigDaddy ( )
inline

Definition at line 2455 of file Zone.cs.

2456 {
2457 if (!(BigDaddyChance <= EClass.rndf(1f)))
2458 {
2459 int num = DangerLv * 125 / 100;
2460 if (num >= 30)
2461 {
2463 {
2464 lv = num
2465 });
2466 }
2467 Chara t = CharaGen.Create("big_daddy");
2468 EClass._zone.AddCard(t, GetSpawnPos(SpawnPosition.Random, 10000));
2469 Msg.Say("sign_bigdaddy");
2470 }
2471 }
static float rndf(float a)
Definition: EClass.cs:79
virtual float BigDaddyChance
Definition: Zone.cs:314

References EClass._zone, AddCard(), CharaGen.Create(), EClass.rndf(), Msg.Say(), and CardBlueprint.Set().

Referenced by Zone_Dungeon.OnGenerateMap().

◆ TryGenerateEvolved()

Chara Zone.TryGenerateEvolved ( bool  force = false,
Point  p = null 
)
inline

Definition at line 2436 of file Zone.cs.

2437 {
2438 if (!force && EvolvedChance <= EClass.rndf(1f))
2439 {
2440 return null;
2441 }
2442 Chara chara = SpawnMob(p, SpawnSetting.Evolved());
2443 for (int i = 0; i < 2 + EClass.rnd(2); i++)
2444 {
2445 chara.ability.AddRandom();
2446 }
2447 chara.AddThing(chara.MakeGene(DNA.Type.Default));
2448 if (EClass.rnd(2) == 0)
2449 {
2450 chara.AddThing(chara.MakeGene(DNA.Type.Superior));
2451 }
2452 return chara;
2453 }
void AddRandom()
Thing MakeGene(DNA.Type? type=null)
Definition: Chara.cs:7366
CharaAbility ability
Definition: Chara.cs:409
Definition: DNA.cs:8
Type
Definition: DNA.cs:10
static SpawnSetting Evolved(int fixedLv=-1)
Definition: SpawnSetting.cs:33
virtual float EvolvedChance
Definition: Zone.cs:316

References Chara.ability, CharaAbility.AddRandom(), Card.AddThing(), SpawnSetting.Evolved(), Chara.MakeGene(), EClass.rnd(), and EClass.rndf().

Referenced by Zone_Dungeon.OnGenerateMap(), and ZoneEventQuest.SpawnBoss().

◆ TryGenerateOre()

void Zone.TryGenerateOre ( )
inline

Definition at line 2409 of file Zone.cs.

2410 {
2411 if (OreChance <= 0f)
2412 {
2413 return;
2414 }
2415 Crawler.Create("ore").CrawlUntil(tries: EClass.rnd((int)((float)(map.bounds.Width * map.bounds.Height / 200 + 1) * OreChance + 2f)), map: EClass._map, onStart: () => EClass._map.bounds.GetRandomPoint(), canComplete: delegate(Crawler.Result r)
2416 {
2417 byte b = 18;
2418 string group = "ore";
2419 if (EClass.rnd(5) == 0)
2420 {
2421 b++;
2422 group = "gem";
2423 }
2424 SourceMaterial.Row randomMaterial = MATERIAL.GetRandomMaterial(DangerLv, group);
2425 foreach (Point point in r.points)
2426 {
2427 if (point.sourceBlock.ContainsTag("ore"))
2428 {
2429 map.SetObj(point.x, point.z, randomMaterial.id, b, 1, 0);
2430 }
2431 }
2432 return false;
2433 });
2434 }
static Crawler Create(string id)
Definition: Crawler.cs:190
static SourceMaterial.Row GetRandomMaterial(int lv, string group=null, bool tryLevelMatTier=false)
Definition: MATERIAL.cs:43
int Width
Definition: MapBounds.cs:26
int Height
Definition: MapBounds.cs:28
virtual float OreChance
Definition: Zone.cs:312

References EClass._map, Map.bounds, Crawler.CrawlUntil(), Crawler.Create(), MATERIAL.GetRandomMaterial(), MapBounds.GetRandomPoint(), MapBounds.Height, EClass.rnd(), and MapBounds.Width.

Referenced by Zone_Dungeon.OnGenerateMap().

◆ TryGenerateShrine()

void Zone.TryGenerateShrine ( )
inline

Definition at line 2473 of file Zone.cs.

2474 {
2475 for (int i = 0; i < 3; i++)
2476 {
2477 Rand.SetSeed(base.uid + i);
2478 if (ShrineChance <= EClass.rndf(1f))
2479 {
2480 continue;
2481 }
2482 Point randomSpace = EClass._map.GetRandomSpace(3, 3);
2483 if (randomSpace == null)
2484 {
2485 continue;
2486 }
2487 randomSpace.x++;
2488 randomSpace.z++;
2489 if (randomSpace.HasThing || randomSpace.HasChara)
2490 {
2491 continue;
2492 }
2493 randomSpace.SetObj();
2496 if (EClass.rnd(EClass.debug.test ? 2 : 15) == 0)
2497 {
2498 EClass._zone.AddCard(ThingGen.Create("pedestal_power"), randomSpace).Install();
2499 EClass._zone.AddCard(ThingGen.Create(EClass.gamedata.godStatues.RandomItemWeighted((GodStatueData a) => a.chance).idThing, -1, DangerLv), randomSpace).Install();
2500 }
2501 else
2502 {
2503 EClass._zone.AddCard(ThingGen.Create("statue_power", -1, DangerLv), randomSpace).Install().SetRandomDir();
2504 }
2505 }
2506 Rand.SetSeed();
2507 }
void SetRandomDir()
Definition: Card.cs:5466
bool test
Definition: CoreDebug.cs:169
static GameData gamedata
Definition: EClass.cs:36
List< GodStatueData > godStatues
Definition: GameData.cs:9
Point GetRandomSpace(int width, int height, int tries=100)
Definition: MapBounds.cs:246
int seedShrine
Definition: Player.cs:748
void SetObj(int id=0, int value=1, int dir=0)
Definition: Point.cs:892
virtual float ShrineChance
Definition: Zone.cs:318

References EClass._map, EClass._zone, AddCard(), GodStatueData.chance, ThingGen.Create(), EClass.debug, EClass.gamedata, MapBounds.GetRandomSpace(), GameData.godStatues, Point.HasChara, Point.HasThing, Card.Install(), EClass.player, EClass.rnd(), EClass.rndf(), Player.seedShrine, Point.SetObj(), Card.SetRandomDir(), Rand.SetSeed(), CoreDebug.test, Point.x, and Point.z.

Referenced by Zone_Dungeon.OnGenerateMap().

◆ TryGetRestock< T >()

Thing Zone.TryGetRestock< T > ( string  idCat)
inline
Type Constraints
T :TraitSpot 

Definition at line 2175 of file Zone.cs.

2175 : TraitSpot
2176 {
2177 List<T> list = new List<T>();
2178 foreach (Thing thing2 in EClass._map.things)
2179 {
2180 if (thing2.IsInstalled && thing2.trait is T)
2181 {
2182 list.Add(thing2.trait as T);
2183 }
2184 }
2185 foreach (T item in list)
2186 {
2187 foreach (Point item2 in item.ListPoints(null, onlyPassable: false))
2188 {
2189 foreach (Thing thing3 in item2.Things)
2190 {
2191 if (!thing3.IsInstalled || thing3.isSale)
2192 {
2193 continue;
2194 }
2195 if (thing3.things.Count == 0)
2196 {
2197 if (IsValid(thing3, insideContainer: false))
2198 {
2199 return thing3;
2200 }
2201 continue;
2202 }
2203 Thing thing = thing3.things.Find((Thing _t) => IsValid(_t, insideContainer: true));
2204 if (thing != null)
2205 {
2206 return thing;
2207 }
2208 }
2209 }
2210 }
2211 return null;
2212 bool IsValid(Thing t, bool insideContainer)
2213 {
2214 if (t.category.id != idCat || !TraitSalesTag.CanTagSale(t, insideContainer))
2215 {
2216 return false;
2217 }
2218 return true;
2219 }
2220 }
bool isSale
Definition: Card.cs:838
List< Thing > Things
Definition: Point.cs:314
Thing Find(int uid)
static bool CanTagSale(Card t, bool insideContainer=false)
Definition: TraitSalesTag.cs:9

References EClass._map, TraitSalesTag.CanTagSale(), Card.category, ThingContainer.Find(), Card.IsInstalled, Card.isSale, item, Card.things, Map.things, Point.Things, and Card.trait.

◆ TryGetThingFromSharedContainer()

Thing Zone.TryGetThingFromSharedContainer ( Func< Thing, bool >  func)
inline

Definition at line 2159 of file Zone.cs.

2160 {
2161 foreach (Thing container in EClass._map.props.installed.containers)
2162 {
2163 if (container.IsSharedContainer)
2164 {
2165 Thing thing = container.things.Find(func);
2166 if (thing != null)
2167 {
2168 return thing;
2169 }
2170 }
2171 }
2172 return null;
2173 }

References EClass._map, Props.containers, ThingContainer.Find(), PropsManager.installed, Thing.IsSharedContainer, Map.props, and Card.things.

Referenced by FactionBranch.DailyOutcome(), and FactionBranch.GetMeal().

◆ TryListThingsInSpot< T >()

List< Thing > Zone.TryListThingsInSpot< T > ( Func< Thing, bool >  func = null)
inline
Type Constraints
T :TraitSpot 

Definition at line 1989 of file Zone.cs.

1989 : TraitSpot
1990 {
1991 List<T> list = new List<T>();
1992 List<Thing> list2 = new List<Thing>();
1993 foreach (Thing thing in EClass._map.things)
1994 {
1995 if (thing.IsInstalled && thing.trait is T)
1996 {
1997 list.Add(thing.trait as T);
1998 }
1999 }
2000 foreach (T item in list)
2001 {
2002 foreach (Point item2 in item.ListPoints(null, onlyPassable: false))
2003 {
2004 foreach (Thing thing2 in item2.Things)
2005 {
2006 if (!thing2.IsInstalled)
2007 {
2008 continue;
2009 }
2010 if (thing2.things.Count == 0)
2011 {
2012 if (IsValid(thing2))
2013 {
2014 list2.Add(thing2);
2015 }
2016 continue;
2017 }
2018 foreach (Thing item3 in thing2.things.List((Thing _t) => IsValid(_t)))
2019 {
2020 list2.Add(item3);
2021 }
2022 }
2023 }
2024 }
2025 return list2;
2026 bool IsValid(Thing t)
2027 {
2028 if (func != null && !func(t))
2029 {
2030 return false;
2031 }
2032 return true;
2033 }
2034 }
List< Thing > List(Func< Thing, bool > func, bool onlyAccessible=false)

References EClass._map, Card.IsInstalled, item, ThingContainer.List(), Card.things, Map.things, Point.Things, and Card.trait.

◆ TrySpawnFollower()

void Zone.TrySpawnFollower ( )
inline

Definition at line 2310 of file Zone.cs.

2311 {
2312 bool flag = EClass.pc.HasCondition<ConDrawBacker>();
2313 if (!EClass.debug.enable && EClass.rnd(flag ? 3 : 20) != 0)
2314 {
2315 return;
2316 }
2317 Point randomSurface = EClass._map.bounds.GetRandomSurface();
2318 if (!randomSurface.IsValid)
2319 {
2320 return;
2321 }
2322 Chara c = CharaGen.Create("follower");
2323 EClass._zone.AddCard(c, randomSurface);
2324 (EClass._zone.AddThing("gallows", randomSurface).Install().trait as TraitShackle).Restrain(c);
2325 c.c_rescueState = RescueState.WaitingForRescue;
2326 if (EClass.rnd(flag ? 1 : 2) == 0 || EClass.debug.enable)
2327 {
2329 if (row != null)
2330 {
2331 c.ApplyBacker(row.id);
2332 }
2333 }
2334 Religion faith = EClass.game.religions.dictAll.Values.Where((Religion a) => a != c.faith).RandomItem();
2335 for (int i = 0; i < 3 + EClass.rnd(4); i++)
2336 {
2337 Chara chara = CharaGen.Create("fanatic");
2338 chara.SetFaith(faith);
2339 Point point = randomSurface.GetRandomPoint(4) ?? randomSurface.GetNearestPoint();
2340 EClass._zone.AddCard(chara, point);
2341 }
2342 }
RescueState
Definition: RescueState.cs:2
static int indexFollower
bool HasCondition(string alias)
Definition: Chara.cs:8568
Religion faith
Definition: Chara.cs:424
void SetFaith(string id)
Definition: Chara.cs:1484
Dictionary< string, Religion > dictAll
List< Row > listFollower
Definition: SourceBacker.cs:82

References EClass._map, EClass._zone, AddCard(), AddThing(), Card.ApplyBacker(), SourceManager.backers, Map.bounds, CharaGen.Create(), EClass.debug, ReligionManager.dictAll, CoreDebug.enable, Chara.faith, faith, EClass.game, Point.GetNearestPoint(), Point.GetRandomPoint(), MapBounds.GetRandomSurface(), Chara.HasCondition(), SourceBacker.Row.id, BackerContent.indexFollower, Card.Install(), Point.IsValid, SourceBacker.listFollower, EClass.pc, Game.religions, EClass.rnd(), Chara.SetFaith(), EClass.sources, and Card.trait.

◆ UnloadMap()

void Zone.UnloadMap ( )
inline

Definition at line 1645 of file Zone.cs.

1646 {
1647 map = null;
1648 if (bp != null)
1649 {
1650 bp.map = null;
1651 }
1652 if (branch != null)
1653 {
1655 }
1656 Debug.Log("Unloaded Map:" + this);
1657 }
void OnUnloadMap()

References Debug, and FactionBranch.OnUnloadMap().

Referenced by Activate().

◆ UpdateQuests()

void Zone.UpdateQuests ( bool  force = false)
inline

Definition at line 3320 of file Zone.cs.

3321 {
3322 if (!IsPCFaction && (!(this is Zone_Town) || base.lv != 0))
3323 {
3324 return;
3325 }
3326 Debug.Log("Updating Quest:" + force);
3327 List<SourceQuest.Row> list = EClass.sources.quests.rows.Where((SourceQuest.Row a) => a.group == "random").ToList();
3328 int num = 0;
3329 foreach (Chara item in map.charas.Concat(map.deadCharas))
3330 {
3331 if (item.quest != null && !EClass.game.quests.list.Contains(item.quest))
3332 {
3333 if (item.quest.IsExpired || completedQuests.Contains(item.quest.uid) || force)
3334 {
3335 item.quest = null;
3336 }
3337 else
3338 {
3339 num++;
3340 }
3341 }
3342 }
3343 if (EClass._zone.dateQuest > EClass.world.date.GetRaw() && !force)
3344 {
3345 return;
3346 }
3347 EClass._zone.dateQuest = EClass.world.date.GetRaw() + 1440;
3348 int maxQuest = 3;
3349 Rand.UseSeed(base.uid + EClass.player.stats.days / 7 % 100, delegate
3350 {
3351 maxQuest = 4 + EClass.rnd(4);
3352 });
3353 completedQuests.Clear();
3354 List<Zone> list2 = Quest.ListDeliver();
3355 List<Tuple<string, int>> listTag = new List<Tuple<string, int>>();
3356 string[] array = EClass._zone.source.questTag;
3358 {
3359 array = new string[9] { "supply/8", "deliver/7", "food/8", "escort/4", "deliver/4", "monster/0", "war/0", "farm/0", "music/0" };
3360 }
3361 string[] array2 = array;
3362 for (int i = 0; i < array2.Length; i++)
3363 {
3364 string[] array3 = array2[i].Split('/');
3365 listTag.Add(new Tuple<string, int>(array3[0], array3[1].ToInt()));
3366 }
3367 for (int j = 0; j < map.charas.Count * 2; j++)
3368 {
3369 if (num > maxQuest)
3370 {
3371 break;
3372 }
3373 if (num > 15)
3374 {
3375 break;
3376 }
3377 Chara chara = map.charas.RandomItem();
3378 if (!chara.trait.CanGiveRandomQuest || chara.isSubsetCard || chara.homeZone != EClass._zone || chara.IsGuest() || chara.memberType == FactionMemberType.Livestock || (chara.quest != null && !force))
3379 {
3380 continue;
3381 }
3382 SourceQuest.Row row = list.RandomItemWeighted(delegate(SourceQuest.Row a)
3383 {
3384 int num2 = 1;
3385 foreach (Tuple<string, int> item2 in listTag)
3386 {
3387 if (a.tags.Contains(item2.Item1))
3388 {
3389 num2 = item2.Item2;
3390 break;
3391 }
3392 }
3393 if (!EClass._zone.IsPCFaction && a.tags.Contains("bulk"))
3394 {
3395 num2 = 0;
3396 }
3397 return a.chance * num2;
3398 });
3399 if ((!row.tags.Contains("needDestZone") || list2.Count >= 2) && (row.minFame <= 0 || row.minFame < EClass.player.fame || EClass.debug.enable))
3400 {
3401 Quest.Create(row.id, null, chara);
3402 num++;
3403 }
3404 }
3405 }
QuestManager quests
Definition: Game.cs:179
int days
Definition: Player.cs:68
int fame
Definition: Player.cs:688
List< Quest > list
Definition: QuestManager.cs:11
Definition: Quest.cs:7
static List< Zone > ListDeliver()
Definition: Quest.cs:259
static Quest Create(string _id, string _idPerson=null, Chara c=null)
Definition: Quest.cs:241
static void UseSeed(int seed, Action action)
Definition: Rand.cs:22
SourceQuest quests
string[] tags
Definition: SourceQuest.cs:22
int dateQuest
Definition: Spatial.cs:286
SourceZone.Row source
Definition: Spatial.cs:441
virtual bool CanGiveRandomQuest
Definition: TraitChara.cs:118
HashSet< int > completedQuests
Definition: Zone.cs:37

References EClass._zone, TraitChara.CanGiveRandomQuest, Map.charas, Quest.Create(), World.date, Spatial.dateQuest, Player.Stats.days, Map.deadCharas, EClass.debug, Debug, CoreDebug.enable, Player.fame, EClass.game, Date.GetRaw(), Chara.homeZone, SourceQuest.Row.id, Chara.IsGuest(), IsPCFaction, Card.isSubsetCard, item, QuestManager.list, Quest.ListDeliver(), SourceQuest.Row.minFame, EClass.player, Game.quests, SourceManager.quests, Spatial.source, EClass.sources, Player.stats, SourceQuest.Row.tags, Chara.trait, Rand.UseSeed(), and EClass.world.

Referenced by LayerQuestBoard.OnSwitchContent(), and LayerQuestBoard.RefreshQuest().

◆ WriteNote()

void Zone.WriteNote ( UINote  n,
Action< UINote onWriteNote = null,
IInspect::NoteMode  mode = IInspect::NoteMode::Default,
Recipe  recipe = null 
)
inline

Implements IInspect.

Definition at line 2990 of file Zone.cs.

2991 {
2992 }

Member Data Documentation

◆ _biome

BiomeProfile Zone._biome

Definition at line 76 of file Zone.cs.

◆ bounds

◆ bp

ZoneBlueprint Zone.bp

Definition at line 64 of file Zone.cs.

Referenced by Activate().

◆ branch

◆ completedQuests

HashSet<int> Zone.completedQuests = new HashSet<int>()

Definition at line 37 of file Zone.cs.

Referenced by Quest.Complete(), and Quest.Fail().

◆ dictCitizen

Dictionary<int, string> Zone.dictCitizen = new Dictionary<int, string>()

Definition at line 49 of file Zone.cs.

Referenced by DramaCustomSequence.Build(), Quest.Create(), and Quest.ListDeliver().

◆ dirtyElectricity

bool Zone.dirtyElectricity

Definition at line 68 of file Zone.cs.

Referenced by Scene.OnUpdate().

◆ elements

◆ events

◆ fileVariation

int Zone.fileVariation

Definition at line 66 of file Zone.cs.

◆ forceRegenerate

bool Zone.forceRegenerate
static

Definition at line 25 of file Zone.cs.

Referenced by Activate().

◆ forceSubset

string Zone.forceSubset
static

Definition at line 27 of file Zone.cs.

Referenced by Activate().

◆ fortuneRoll

FortuneRollData Zone.fortuneRoll
private

Definition at line 58 of file Zone.cs.

◆ ignoreSpawnAnime

bool Zone.ignoreSpawnAnime
static

Definition at line 78 of file Zone.cs.

◆ instance

◆ isSimulating

bool Zone.isSimulating

Definition at line 72 of file Zone.cs.

Referenced by Activate(), and Chara.GetGoalFromTimeTable().

◆ isStarted

◆ landFeats

List<int> Zone.landFeats

Definition at line 55 of file Zone.cs.

◆ map

◆ okaerinko

int Zone.okaerinko = 0
static

Definition at line 31 of file Zone.cs.

Referenced by AI_Idle.Run().

◆ sourceHat

CardRow Zone.sourceHat
static

Definition at line 29 of file Zone.cs.

Referenced by CharaRenderer.Draw().

◆ subset

MapSubset Zone.subset

Definition at line 62 of file Zone.cs.

Referenced by Activate(), and MapSubset.Save().

◆ Suckers

List<Thing> Zone.Suckers = new List<Thing>()
static

Definition at line 80 of file Zone.cs.

Referenced by TraitSeed.TrySprout().

◆ tempDist

int Zone.tempDist

Definition at line 74 of file Zone.cs.

Referenced by LayerTravel.GetTravelFood(), and LayerTravel.Refresh().

Property Documentation

◆ AddPrefix

virtual bool Zone.AddPrefix
get

Definition at line 276 of file Zone.cs.

Referenced by OnAfterCreate().

◆ AllowCriminal

virtual bool Zone.AllowCriminal
get

Definition at line 242 of file Zone.cs.

◆ AllowInvest

virtual bool Zone.AllowInvest
get

Definition at line 244 of file Zone.cs.

245 {
246 get
247 {
248 if (!IsTown && !IsPCFaction)
249 {
250 return Guild.GetCurrentGuild() != null;
251 }
252 return true;
253 }
254 }

Referenced by DramaCustomSequence.Build().

◆ AllowNewZone

virtual bool Zone.AllowNewZone
get

Definition at line 256 of file Zone.cs.

Referenced by TraitNewZone.CanAutoEnter(), and TraitNewZone.TrySetAct().

◆ AlwaysLowblock

virtual bool Zone.AlwaysLowblock
get

Definition at line 388 of file Zone.cs.

Referenced by BaseTileMap.Draw().

◆ BaseElectricity

virtual int Zone.BaseElectricity
get

Definition at line 484 of file Zone.cs.

◆ BigDaddyChance

virtual float Zone.BigDaddyChance
get

Definition at line 314 of file Zone.cs.

◆ biome

◆ BlockBorderExit

virtual bool Zone.BlockBorderExit
get

Definition at line 166 of file Zone.cs.

Referenced by Player.CanExitBorder().

◆ Boss

Chara Zone.Boss
getset

Definition at line 82 of file Zone.cs.

83 {
84 get
85 {
86 return EClass._map.FindChara(base.uidBoss);
87 }
88 set
89 {
90 base.uidBoss = value?.uid ?? 0;
91 }
92 }
Chara FindChara(string id)
Definition: Map.cs:2546

Referenced by Scene.Init(), TraitNewZone.MoveZone(), ActEffect.Proc(), AI_Idle.Run(), and Chara.TryDropBossLoot().

◆ CanBeDeliverDestination

virtual bool Zone.CanBeDeliverDestination
get

Definition at line 222 of file Zone.cs.

Referenced by Quest.ListDeliver().

◆ CanDigUnderground

virtual bool Zone.CanDigUnderground
get

Definition at line 266 of file Zone.cs.

Referenced by TaskMine.GetHitResult().

◆ CanEnterBuildMode

bool Zone.CanEnterBuildMode
get

Definition at line 436 of file Zone.cs.

437 {
438 get
439 {
441 {
442 return base.mainFaction == EClass.pc.faction;
443 }
444 return true;
445 }
446 }
bool godBuild
Definition: CoreDebug.cs:303
bool ignoreBuildRule
Definition: CoreDebug.cs:184

◆ CanEnterBuildModeAnywhere

bool Zone.CanEnterBuildModeAnywhere
get

Definition at line 448 of file Zone.cs.

449 {
450 get
451 {
453 {
454 if (base.mainFaction == EClass.pc.faction)
455 {
456 return EClass.Branch.elements.Has(4003);
457 }
458 return false;
459 }
460 return true;
461 }
462 }
bool Has(int ele)
ElementContainerZone elements

Referenced by WidgetMenuPanel._OnChangeMode(), ActionMode.DoFunc(), and HotbarManager.ResetHotbar().

◆ CanInspect

bool Zone.CanInspect
get

Implements IInspect.

Definition at line 488 of file Zone.cs.

489 {
490 get
491 {
492 if (!IsInstance)
493 {
494 return !HiddenInRegionMap;
495 }
496 return false;
497 }
498 }
virtual bool HiddenInRegionMap
Definition: Zone.cs:406

◆ CanUnlockExit

virtual bool Zone.CanUnlockExit
get

Definition at line 270 of file Zone.cs.

Referenced by TraitStairsLocked.OnUse().

◆ ChanceSpawnNeutral

virtual float Zone.ChanceSpawnNeutral
get

Definition at line 338 of file Zone.cs.

◆ ContentLv

override int Zone.ContentLv
get

Definition at line 94 of file Zone.cs.

95 {
96 get
97 {
98 if (branch == null)
99 {
100 return DangerLv;
101 }
102 return branch.ContentLV;
103 }
104 }

Referenced by DNA.GenerateRandomGene(), and AI_Fish.Makefish().

◆ CountDeepestLevel

virtual bool Zone.CountDeepestLevel
get

Definition at line 224 of file Zone.cs.

◆ DangerLv

override int Zone.DangerLv
get

◆ DefaultActionMode

virtual ActionMode Zone.DefaultActionMode
get

Definition at line 164 of file Zone.cs.

◆ DisableRooms

virtual bool Zone.DisableRooms
get

Definition at line 118 of file Zone.cs.

Referenced by Map.TryAddRoom().

◆ EvolvedChance

virtual float Zone.EvolvedChance
get

Definition at line 316 of file Zone.cs.

◆ ExpireDays

virtual int Zone.ExpireDays
get

Definition at line 168 of file Zone.cs.

Referenced by Activate().

◆ FeatureType

virtual ZoneFeatureType Zone.FeatureType
get

Definition at line 172 of file Zone.cs.

◆ FlockType

virtual FlockController.SpawnType Zone.FlockType
get

Definition at line 408 of file Zone.cs.

Referenced by Scene.Init().

◆ Generator

MapGenerator Zone.Generator
get

Definition at line 134 of file Zone.cs.

Referenced by MapGenDungen.OnGenerateTerrain().

◆ GrowPlant

virtual bool Zone.GrowPlant
get

Definition at line 340 of file Zone.cs.

◆ GrowWeed

virtual bool Zone.GrowWeed
get

Definition at line 342 of file Zone.cs.

◆ HasLaw

virtual bool Zone.HasLaw
get

Definition at line 226 of file Zone.cs.

Referenced by Chara.Die(), and QuestManager.HasFarAwayEscort().

◆ HiddenInRegionMap

virtual bool Zone.HiddenInRegionMap
get

Definition at line 406 of file Zone.cs.

Referenced by Chara._Move().

◆ HourSinceLastActive

int Zone.HourSinceLastActive
get

Definition at line 120 of file Zone.cs.

◆ IDAmbience

virtual string Zone.IDAmbience
get

Definition at line 174 of file Zone.cs.

175 {
176 get
177 {
178 if (!IsRegion && !map.IsIndoor)
179 {
180 if (!IsTown)
181 {
182 return "forest";
183 }
184 return "town";
185 }
186 return null;
187 }
188 }

◆ IDBaseLandFeat

virtual string Zone.IDBaseLandFeat
get

Definition at line 144 of file Zone.cs.

◆ IdBiome

virtual string Zone.IdBiome
get

Definition at line 128 of file Zone.cs.

◆ idExport

virtual string Zone.idExport
get

Definition at line 146 of file Zone.cs.

147 {
148 get
149 {
150 if (base.source.idFile.Length != 0)
151 {
152 return base.source.idFile[fileVariation] + ((base.lv == 0) ? "" : ("_F" + base.lv));
153 }
154 return "";
155 }
156 }
int fileVariation
Definition: Zone.cs:66

Referenced by Activate(), MapSubset.Exist(), Zone_Dungeon.OnGenerateMap(), and MapSubset.Save().

◆ IDGenerator

virtual string Zone.IDGenerator
get

Definition at line 130 of file Zone.cs.

Referenced by ZoneBlueprint.GenerateMap(), and TraitNewZone.MoveZone().

◆ IDHat

virtual string Zone.IDHat
get

Definition at line 142 of file Zone.cs.

◆ IDPlayList

virtual string Zone.IDPlayList
get

Definition at line 138 of file Zone.cs.

◆ IDPlaylistOverwrite

virtual string Zone.IDPlaylistOverwrite
get

Definition at line 140 of file Zone.cs.

◆ IdProfile

virtual string Zone.IdProfile
get

Definition at line 136 of file Zone.cs.

◆ IDSceneTemplate

virtual string Zone.IDSceneTemplate
get

Definition at line 190 of file Zone.cs.

191 {
192 get
193 {
194 if (!EClass._map.IsIndoor)
195 {
196 if (!IsSnowZone)
197 {
198 return "Default";
199 }
200 return "Snow";
201 }
202 return "Indoor";
203 }
204 }
virtual bool IsSnowZone
Definition: Spatial.cs:528

Referenced by BaseGameScreen.RefreshGrading().

◆ IDSubset

virtual string Zone.IDSubset
get

Definition at line 208 of file Zone.cs.

209 {
210 get
211 {
212 if (!IsFestival)
213 {
214 return null;
215 }
216 return "festival";
217 }
218 }
virtual bool IsFestival
Definition: Zone.cs:206

Referenced by Activate().

◆ InspectName

string Zone.InspectName
get

Implements IInspect.

Definition at line 500 of file Zone.cs.

◆ InspectPoint

Point Zone.InspectPoint
get

Implements IInspect.

Definition at line 502 of file Zone.cs.

◆ InspectPosition

Vector3 Zone.InspectPosition
get

Implements IInspect.

Definition at line 504 of file Zone.cs.

◆ IsActiveZone

◆ IsExplorable

virtual bool Zone.IsExplorable
get

Definition at line 344 of file Zone.cs.

◆ IsFestival

virtual bool Zone.IsFestival
get

◆ IsInstance

◆ IsLoaded

bool Zone.IsLoaded
get

Definition at line 482 of file Zone.cs.

Referenced by Activate().

◆ IsNefia

virtual bool Zone.IsNefia
get

Definition at line 278 of file Zone.cs.

Referenced by TraitNewZone.MoveZone(), AI_Idle.Run(), and Chara.TryDropBossLoot().

◆ IsPCFaction

bool Zone.IsPCFaction
get

Definition at line 464 of file Zone.cs.

Referenced by Chara._Move(), WidgetDate._Refresh(), Map._ValidateInstalled(), Activate(), LayerSleep.Advance(), WidgetStatsBar.Build(), DramaCustomSequence.Build(), Chara.CanDestroyPath(), ActRestrain.CanPerform(), QuestVernis.CanUpdateOnTalk(), TraitGeneratorWheel.CanUse(), TraitLoytelMart.CanUse(), TraitMannequin.CanUse(), TraitShackle.CanUse(), GameLang.ConvertDrama(), Faction.CountWealth(), Card.Create(), ActEffect.DamageEle(), Card.DamageHP(), Chara.DoHostileAction(), BaseTileMap.DrawTile(), CoreDebug.Fix_LostCore(), RankedZone.GetFactionName(), TaskBuild.GetHitResult(), TaskDig.GetHitResult(), Card.GetPrice(), Chara.GetRevived(), Chara.HasAccess(), QuestManager.HasFarAwayEscort(), TraitFoodEggFertilized.Incubate(), Quest.IsVisibleOnQuestBoard(), Quest.ListDeliver(), QuestDeliver.ListDestThing(), Props.ListThingStack(), Chara.MoveZone(), Region.OnActivate(), TraitHitchingPost.OnActivateTrap(), QuestRandom.OnDropReward(), Player.Flags.OnEnterZone(), LayerQuestBoard.OnInit(), ElementContainerZone.OnLevelUp(), TraitBlueprint.OnRead(), TraitBookSkill.OnRead(), TraitDeedRelocate.OnRead(), AM_Adv.OnRenderTile(), GoalSleep.OnSimulatePosition(), TraitFloorSwitch.OnStepped(), TraitBookResident.OnUse(), TraitFarmChest.OnUse(), TraitPolicyBoard.OnUse(), ActRestrain.Perform(), ActEffect.Proc(), Map.PutAway(), TraitBaseSpellbook.ReadFailEffect(), ContentHomeRanking.Refresh(), UIInventory.RefreshMenu(), AI_Eat.Run(), AI_Idle.Run(), WidgetSearch.Search(), Card.SetPlaceState(), TraitTicketFurniture.SetZone(), TraitGeneratorWheel.ShouldWork(), Card.SpawnLoot(), Chara.Tick(), TaskDump.TryPerform(), TraitBed.TrySetAct(), TraitBuildBoard.TrySetAct(), TraitCoreZone.TrySetAct(), TraitCrafter.TrySetAct(), TraitFactionBoard.TrySetAct(), TraitHomeBoard.TrySetAct(), TraitHouseBoard.TrySetAct(), TraitMapBoard.TrySetAct(), TraitPaintBoard.TrySetAct(), TraitResearchBoard.TrySetAct(), TraitResidentBoard.TrySetAct(), TraitRoomPlate.TrySetAct(), TraitSwitch.TrySetAct(), TraitWaystone.TrySetAct(), TraitSalesTag.TrySetHeldAct(), Trait.TrySetToggleAct(), Map.TryShatter(), AI_Shopping.TryShop(), TraitTeleporter.TryTeleport(), GoalCombat.TryUseAbility(), TraitGeneratorWheel.Update(), GameUpdater.Update100ms(), UpdateQuests(), and Chara.Vomit().

◆ IsPCFactionOrTent

bool Zone.IsPCFactionOrTent
get

Definition at line 466 of file Zone.cs.

467 {
468 get
469 {
470 if (base.mainFaction != EClass.pc.faction)
471 {
472 return EClass._zone is Zone_Tent;
473 }
474 return true;
475 }
476 }

Referenced by HotItemHeld.CanRotate(), TaskBuild.CanRotateBlock(), and TaskBuild.GetHitResult().

◆ IsReturnLocation

virtual bool Zone.IsReturnLocation
get

Definition at line 346 of file Zone.cs.

347 {
348 get
349 {
350 if (EClass.pc.homeZone != this)
351 {
352 return base.source.tag.Contains("return");
353 }
354 return true;
355 }
356 }

◆ IsSkyLevel

virtual bool Zone.IsSkyLevel
get

◆ IsStartZone

bool Zone.IsStartZone
get

Definition at line 478 of file Zone.cs.

◆ IsTown

◆ IsUserZone

◆ KeepAllyDistance

virtual bool Zone.KeepAllyDistance
get

Definition at line 294 of file Zone.cs.

295 {
296 get
297 {
298 if (!HasLaw)
299 {
300 return IsPCFaction;
301 }
302 return true;
303 }
304 }

Referenced by Chara._Move(), and ConfigTactics.AllyDistance().

◆ LockExit

virtual bool Zone.LockExit
get

Definition at line 268 of file Zone.cs.

Referenced by MapGenDungen.OnGenerateTerrain().

◆ MakeEnemiesNeutral

virtual bool Zone.MakeEnemiesNeutral
get

Definition at line 228 of file Zone.cs.

229 {
230 get
231 {
232 if (!IsTown)
233 {
234 return HasLaw;
235 }
236 return true;
237 }
238 }

◆ MakeTownProperties

virtual bool Zone.MakeTownProperties
get

Definition at line 240 of file Zone.cs.

◆ MaxLv

virtual int Zone.MaxLv
get

Definition at line 272 of file Zone.cs.

◆ MaxRespawn

int Zone.MaxRespawn
get

Definition at line 308 of file Zone.cs.

◆ MaxSoil

virtual int Zone.MaxSoil
get

Definition at line 506 of file Zone.cs.

507 {
508 get
509 {
510 if (branch == null)
511 {
512 return 99999;
513 }
514 return branch.MaxSoil;
515 }
516 }

Referenced by WidgetStatsBar.Build(), Map.MineObj(), GrowSystem.PopHarvest(), and GrowSystem.TryPopSeed().

◆ MaxSpawn

virtual int Zone.MaxSpawn
get

Definition at line 306 of file Zone.cs.

◆ MinLv

virtual int Zone.MinLv
get

Definition at line 274 of file Zone.cs.

◆ MinsSinceLastActive

int Zone.MinsSinceLastActive
get

Definition at line 122 of file Zone.cs.

◆ NameSuffix

override string Zone.NameSuffix
get

Definition at line 410 of file Zone.cs.

411 {
412 get
413 {
414 if (!IsNefia || !GetTopZone().isConquered)
415 {
416 return "";
417 }
418 return "conquered".lang();
419 }
420 }

◆ NameWithLevel

string Zone.NameWithLevel
get

◆ OreChance

virtual float Zone.OreChance
get

Definition at line 312 of file Zone.cs.

◆ ParentZone

◆ pathExport

virtual string Zone.pathExport
get

Definition at line 124 of file Zone.cs.

Referenced by Activate().

◆ pathTemp

string Zone.pathTemp
get

Definition at line 158 of file Zone.cs.

Referenced by PartialMap._Load(), and Activate().

◆ PetFollow

virtual bool Zone.PetFollow
get

Definition at line 280 of file Zone.cs.

Referenced by Chara._Move(), and AI_Idle.Run().

◆ PrespawnRate

virtual float Zone.PrespawnRate
get

Definition at line 320 of file Zone.cs.

◆ RegenerateOnEnter

virtual bool Zone.RegenerateOnEnter
get

Definition at line 260 of file Zone.cs.

Referenced by Activate(), and TraitNewZone.TrySetAct().

◆ Region

◆ RegionEnterState

virtual ZoneTransition.EnterState Zone.RegionEnterState
get

Definition at line 170 of file Zone.cs.

Referenced by Player.EnterLocalZone(), and LayerTravel.Refresh().

◆ RespawnPerHour

virtual int Zone.RespawnPerHour
get

Definition at line 336 of file Zone.cs.

◆ RespawnRate

virtual float Zone.RespawnRate
get

Definition at line 322 of file Zone.cs.

◆ RestrictBuild

virtual bool Zone.RestrictBuild
get

Definition at line 282 of file Zone.cs.

283 {
284 get
285 {
286 if (this is Zone_Civilized)
287 {
288 return !IsPCFaction;
289 }
290 return false;
291 }
292 }

Referenced by HotItemHeld.CanRotate(), TaskBuild.CanRotateBlock(), and TaskBuild.GetHitResult().

◆ RevealRoom

virtual bool Zone.RevealRoom
get

Definition at line 386 of file Zone.cs.

◆ RuinChance

virtual float Zone.RuinChance
get

Definition at line 310 of file Zone.cs.

Referenced by GenBounds.TryAddMapPiece().

◆ ScaleMonsterLevel

virtual bool Zone.ScaleMonsterLevel
get

Definition at line 404 of file Zone.cs.

◆ ShouldAutoRevive

virtual bool Zone.ShouldAutoRevive
get

Definition at line 372 of file Zone.cs.

373 {
374 get
375 {
376 if (!ShouldRegenerate)
377 {
378 return IsPCFaction;
379 }
380 return true;
381 }
382 }

◆ ShouldMakeExit

virtual bool Zone.ShouldMakeExit
get

Definition at line 358 of file Zone.cs.

359 {
360 get
361 {
362 if (base.lv > MinLv)
363 {
364 return base.lv < MaxLv;
365 }
366 return false;
367 }
368 }
virtual int MaxLv
Definition: Zone.cs:272
virtual int MinLv
Definition: Zone.cs:274

Referenced by MapGenDungen.OnGenerateTerrain().

◆ ShouldRegenerate

virtual bool Zone.ShouldRegenerate
get

Definition at line 370 of file Zone.cs.

Referenced by Activate().

◆ ShowEnemyOnMinimap

bool Zone.ShowEnemyOnMinimap
get

Definition at line 324 of file Zone.cs.

325 {
326 get
327 {
328 if (instance != null)
329 {
331 }
332 return false;
333 }
334 }
virtual bool ShowEnemyOnMinimap
Definition: ZoneInstance.cs:30

Referenced by WidgetMinimap.RefreshMarkers().

◆ ShrineChance

virtual float Zone.ShrineChance
get

Definition at line 318 of file Zone.cs.

◆ StartLV

virtual int Zone.StartLV
get

Definition at line 402 of file Zone.cs.

Referenced by OnCreate().

◆ TextDeepestLv

string Zone.TextDeepestLv
get

Definition at line 424 of file Zone.cs.

425 {
426 get
427 {
428 if (GetDeepestLv() != 0)
429 {
430 return "zoneLevelMax".lang(TextLevel(GetDeepestLv()));
431 }
432 return "";
433 }
434 }
string TextLevel(int _lv)
Definition: Zone.cs:543

Referenced by AM_Adv._OnUpdateInput().

◆ TextWidgetDate

virtual string Zone.TextWidgetDate
get

Definition at line 132 of file Zone.cs.

Referenced by WidgetDate._Refresh().

◆ UseFog

virtual bool Zone.UseFog
get

Definition at line 384 of file Zone.cs.

Referenced by Activate(), BaseTileMap.DrawTile(), and Fov.Perform().

◆ UseLight

virtual bool Zone.UseLight
get

Definition at line 390 of file Zone.cs.

391 {
392 get
393 {
394 if (base.mainFaction != EClass.pc.faction)
395 {
396 return base.source.tag.Contains("light");
397 }
398 return true;
399 }
400 }

Referenced by EloMap.Init(), and EloMap.SetZone().

◆ WillAutoSave

virtual bool Zone.WillAutoSave
get

Definition at line 258 of file Zone.cs.

Referenced by Chara.MoveZone().


The documentation for this class was generated from the following file: