Elin Decompiled Documentation EA 23.352.1 Stable
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

Zone FindOrCreateLevel (int destLv, string subId="")
 
int Evalue (int ele)
 
int Evalue (string alias)
 
virtual string GetDungenID ()
 
virtual bool ShouldScaleImportedChara (Chara c)
 
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 RefreshDeathSentense ()
 
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, Point pos=null)
 
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)
 
Chara AddChara (string id, int x, int z)
 
Chara AddChara (string id, Point p)
 
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)
 
T GetRandomSpot< T > ()
 
bool TryAddThingInSpot< T > (Thing t, bool useContainer=true)
 
List< Thing > TryListThingsInSpot< 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)
 
Thing FindSharedContainer (Thing t, List< Thing > containers=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 (string id, Point pos=null)
 
Chara SpawnMob (Point pos=null, SpawnSetting setting=null)
 
bool HasField (int idEle)
 
void SetFieldEffect (int idEle, int a, int duration=0)
 
void RemoveFieldEffect (int idEle)
 
void RefreshElectricity ()
 
int GetElectricity (bool cost=false)
 
void SetBGM (List< int > ids, bool refresh=true, float fadeDuration=0f)
 
void SetBGM (int id=-1, bool refresh=true, float fadeDuration=0f)
 
void RefreshPlaylist ()
 
void ResetPlaylist ()
 
void RefreshBGM ()
 
Playlist CreatePlaylist (ref List< int > list, Playlist mold=null)
 
Chara FindChara (string id)
 
Chara FindChara (int uid)
 
Chara FindDeadChara (string id)
 
int GetDeepestLv ()
 
int GetDeepestLv (ref int max)
 
int GetCostSkyTravel ()
 
List< Element > ListLandFeats ()
 
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 ()
 
virtual void SetAlarm (bool enable)
 
void ModInfluence (int a)
 
void ModDevelopment (int a)
 
void UpdateQuests (bool force=false)
 
List< Chara > ListMinions (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 string string int zoneLv ParseZoneFullName (string zoneFullName)
 
static bool IsImportValid (string path)
 
- Static Public Member Functions inherited from EClass
static int rndSeed (int a, int seed)
 
static int rnd (long a)
 
static int rnd (int a)
 
static int curve (long _a, int start, int step, int rate=75)
 
static int sqrt (int a)
 
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
 
int pendingSimHours
 
HashSet< int > completedQuests = new HashSet<int>()
 
ZoneEventManager events = new ZoneEventManager()
 
ElementContainerZone elements = new ElementContainerZone()
 
ElementContainerField fieldElements = new ElementContainerField()
 
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< Spatial > children = new List<Spatial>()
 
List< Spatial > connections = 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< Thing > Suckers = new List<Thing>()
 
static string zoneType
 
static string string zoneId
 
- Static Public Attributes inherited from EClass
static Core core
 

Properties

string ZoneFullName [get]
 
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 int SightRadiusBonus [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 SetAlarmOnBreakLaw [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 IsUnderwater [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 ZoneScaleType ScaleType [get]
 
virtual bool HiddenInRegionMap [get]
 
virtual FlockController.SpawnType FlockType [get]
 
override string NameSuffix [get]
 
string NameWithLevel [get]
 
string TextDangerLv [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]
 
bool isAlarmSet [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 int DangerLvBoost [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 2029 of file Zone.cs.

2030 {
2031 if (CanDestroy())
2032 {
2033 Debug.Log("Deleting Zone:" + this);
2034 if (!destryoed)
2035 {
2036 Destroy();
2037 }
2038 }
2039 else if (map != null)
2040 {
2041 Debug.Log("Saving Zone:" + this);
2042 map.Save(base.pathSave);
2043 if (!base.isMapSaved)
2044 {
2045 base.isMapSaved = true;
2046 IO.DeleteDirectory(base.pathSave + "Texture Replace");
2047 IO.CopyDir(pathTemp + "Texture Replace", base.pathSave + "/Texture Replace");
2048 }
2049 if (!IsActiveZone)
2050 {
2051 UnloadMap();
2052 }
2053 }
2054 }
Definition: IO.cs:10
static void DeleteDirectory(string path)
Definition: IO.cs:392
static void CopyDir(string sourceDirectory, string targetDirectory, Func< string, bool > funcExclude=null)
Definition: IO.cs:276
void Save(string path, ZoneExportData export=null, PartialMap partial=null)
Definition: Map.cs:381
bool destryoed
Definition: Spatial.cs:45
bool CanDestroy()
Definition: Zone.cs:1958
override void Destroy()
Definition: Zone.cs:2065
bool IsActiveZone
Definition: Zone.cs:502
void UnloadMap()
Definition: Zone.cs:1874
string pathTemp
Definition: Zone.cs:168
Map map
Definition: Zone.cs:66

References Debug, and Map.Save().

◆ AbandonZone()

void Zone.AbandonZone ( )
inline

Definition at line 1942 of file Zone.cs.

1943 {
1944 FactionBranch destBranch = ((EClass.pc.homeBranch == branch) ? EClass.game.StartZone.branch : EClass.pc.homeBranch);
1945 branch.members.ForeachReverse(delegate(Chara m)
1946 {
1947 destBranch.AddMemeber(m);
1948 if (!m.IsPCParty)
1949 {
1950 m.MoveZone(destBranch.owner);
1951 }
1952 });
1954 SetMainFaction(null);
1955 base.dateExpire = EClass.world.date.GetRaw() + 10080;
1956 }
Definition: Chara.cs:10
override bool IsPCParty
Definition: Chara.cs:635
FactionBranch homeBranch
Definition: Chara.cs:1115
void MoveZone(string alias)
Definition: Chara.cs:3579
int GetRaw(int offsetHours=0)
Definition: Date.cs:328
Definition: EClass.cs:6
static Game game
Definition: EClass.cs:9
static World world
Definition: EClass.cs:41
static FactionBranch Branch
Definition: EClass.cs:23
static Chara pc
Definition: EClass.cs:15
void OnUnclaimZone()
List< Chara > members
void AddMemeber(Chara c)
Zone StartZone
Definition: Game.cs:278
virtual void SetMainFaction(Faction f)
Definition: Spatial.cs:646
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 639 of file Zone.cs.

640 {
641 if (IsRegion)
642 {
644 }
645 isStarted = (isSimulating = false);
646 base.isKnown = true;
647 EClass.game.config.reverseSnow = false;
649 {
650 Msg.Say("regenerateZone", Name);
651 ClearZones();
652 if (EClass.pc.global.transition != null)
653 {
654 EClass.pc.global.transition.uidLastZone = 0;
655 }
656 }
658 if (EClass.game.activeZone != null)
659 {
661 }
662 EClass.game.activeZone = this;
663 ZoneExportData zoneExportData = null;
664 Debug.Log(NameWithLevel + "/" + id + "/" + base.uid + "/" + base.isGenerated + "/" + IsLoaded + "/" + File.Exists(base.pathSave + "map"));
665 if (base.isGenerated && !IsLoaded && !File.Exists(base.pathSave + "map"))
666 {
667 Debug.Log("(Bug) File does not exist:" + destryoed + "/" + base.pathSave);
668 base.isGenerated = false;
669 }
670 bool flag = false;
671 Debug.Log(idCurrentSubset + "/" + IDSubset);
672 bool flag2 = idCurrentSubset != IDSubset || forceSubset != null;
673 string fullName = pathExport;
674 string lhs = CorePath.ZoneSave + "_new.z";
675 bool flag3 = File.Exists(fullName) && !PathComparer.Default.Equals(lhs, fullName);
676 bool flag4 = !idExport.IsEmpty();
677 Debug.Log(idExport + "/" + flag3 + "/" + fullName);
678 if (!flag3 && (base.source.tag.Contains("addMap") || flag4))
679 {
680 string[] array = new string[4]
681 {
682 "Maps/" + idExport + ".z",
683 "Maps/" + ZoneFullName + ".z",
684 "Map/" + idExport + ".z",
685 "Map/" + ZoneFullName + ".z"
686 };
687 for (int i = 0; i < array.Length; i++)
688 {
689 FileInfo fileInfo = PackageIterator.GetFiles(array[i]).LastOrDefault();
690 if (fileInfo != null)
691 {
692 fullName = fileInfo.FullName;
693 flag3 = true;
694 flag4 = true;
695 break;
696 }
697 }
698 }
699 if (!base.isGenerated && (!flag4 || !flag3))
700 {
701 Debug.Log("generating random map");
702 flag = true;
703 base.dateExpire = EClass.world.date.GetRaw() + 1440 * ExpireDays;
704 Generate();
706 if (instance != null)
707 {
709 }
710 if (!UseFog)
711 {
712 map.ForeachCell(delegate(Cell cell)
713 {
714 cell.isSeen = true;
715 });
716 }
717 if (!(bp is GameBlueprint))
718 {
720 }
721 }
722 else if (IsLoaded && !flag2)
723 {
724 Debug.Log("zone is already loaded");
725 map.SetZone(this);
726 EClass.core.textures.ApplyLocalReplace(base.isMapSaved ? base.pathSave : pathTemp);
728 }
729 else
730 {
731 subset = null;
732 bool flag5 = (base.isGenerated && flag2) || (base.isGenerated && !IsInstance && !IsPCFaction && ShouldRegenerate && EClass.world.date.IsExpired(base.dateRegenerate)) || forceRegenerate;
734 {
735 flag5 = false;
736 flag2 = false;
737 }
738 Debug.Log(base.isGenerated + "/" + flag5 + "/" + flag2 + "/" + IDSubset);
739 if (!base.isGenerated || flag5 || flag2)
740 {
741 Debug.Log("importing map:" + fullName);
742 flag = true;
743 base.dateRegenerate = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRegenerateZone;
744 if (!flag5)
745 {
746 IO.DeleteDirectory(pathTemp + "Texture Replace");
747 Debug.Log(pathTemp);
748 }
749 try
750 {
751 zoneExportData = Import(fullName);
752 base.isGenerated = true;
753 isImported = true;
754 if (flag5)
755 {
756 if (IsLoaded)
757 {
758 zoneExportData.orgMap = IO.DeepCopy(map);
759 }
760 else
761 {
762 zoneExportData.orgMap = GameIO.LoadFile<Map>(base.pathSave + "map");
763 }
764 }
765 }
766 catch (Exception message)
767 {
768 Debug.Log(message);
769 zoneExportData = Import(CorePath.ZoneSave + "fail.z");
770 base.isGenerated = true;
771 isImported = true;
772 }
773 }
774 if (map != null)
775 {
776 UnloadMap();
777 }
779 Debug.Log("loading map: imported? " + isImported + " regenerate? " + flag5);
780 string text = (isImported ? pathTemp : base.pathSave) + "map";
781 try
782 {
783 map = GameIO.LoadFile<Map>(text);
784 }
785 catch (Exception message2)
786 {
787 EClass.ui.Say($"Can't load map '{base.uid}/{Name}'; File may be corrupted.\n" + "Try replacing the following file if you have a backup:\n" + text + "\nDefault file is at:\n" + fullName);
788 Debug.LogError(message2);
789 return;
790 }
791 map.SetZone(this);
792 map.Load(isImported ? pathTemp : base.pathSave, isImported);
794 EClass.core.textures.ApplyLocalReplace(base.isMapSaved ? base.pathSave : pathTemp);
795 if (isImported)
796 {
797 map.deadCharas.Clear();
798 map.OnImport(zoneExportData);
799 if (UseFog && !flag5)
800 {
801 map.ForeachCell(delegate(Cell cell)
802 {
803 cell.isSeen = false;
804 });
805 }
806 if (zoneExportData.orgMap != null)
807 {
808 Map orgMap = zoneExportData.orgMap;
809 List<Chara> serializedCharas = map.serializedCharas;
810 map.charas = orgMap.charas;
811 map.serializedCharas = orgMap.serializedCharas;
812 map.deadCharas = orgMap.deadCharas;
813 byte[] array2 = orgMap.TryLoadFile(base.pathSave, "flags", EClass._map.Size * EClass._map.Size);
814 if (array2 != null && array2.Length == EClass._map.Size * EClass._map.Size)
815 {
816 for (int num = 0; num < EClass._map.Size; num++)
817 {
818 for (int num2 = 0; num2 < EClass._map.Size; num2++)
819 {
820 map.cells[num, num2].isSeen = array2[num * EClass._map.Size + num2].GetBit(1);
821 }
822 }
823 }
824 foreach (Chara item in serializedCharas)
825 {
826 Debug.Log("Importing New Chara:" + item.id + "/" + item.Name + "/" + item.orgPos);
828 }
829 bool resetMedal = GetInt(4) != 0;
830 map.things.ForeachReverse(delegate(Thing t)
831 {
832 if (t.trait is TraitNewZone || t.trait is TraitPowerStatue)
833 {
834 foreach (Thing thing in orgMap.things)
835 {
836 if (t.id == thing.id && t.pos.Equals(thing.pos))
837 {
838 if (t.trait is TraitNewZone)
839 {
840 RemoveCard(t);
841 map.things.Insert(0, thing);
842 thing.stackOrder = 0;
843 }
844 else
845 {
846 t.ChangeMaterial(thing.material);
847 t.isOn = thing.isOn;
848 }
849 break;
850 }
851 }
852 return;
853 }
854 if (t.trait is TraitStairsLocked)
855 {
856 foreach (Thing thing2 in orgMap.things)
857 {
858 if (thing2.trait is TraitNewZone && t.pos.Equals(thing2.pos))
859 {
860 RemoveCard(t);
861 map.things.Add(thing2);
862 break;
863 }
864 }
865 return;
866 }
867 if (!resetMedal && (t.id == "medal" || t.id == "856"))
868 {
869 foreach (Thing thing3 in orgMap.things)
870 {
871 if (t.id == thing3.id && t.pos.Equals(thing3.pos))
872 {
873 return;
874 }
875 }
876 RemoveCard(t);
877 }
878 });
879 SetInt(4);
880 foreach (KeyValuePair<int, int> item2 in EClass._map.backerObjs.ToList())
881 {
882 EClass._map.GetCell(item2.Key);
883 SourceBacker.Row row = EClass.sources.backers.map[item2.Value];
885 {
886 map.backerObjs.Remove(item2.Key);
887 }
888 }
889 foreach (Chara serializedChara in map.serializedCharas)
890 {
891 if (serializedChara.orgPos != null && serializedChara.orgPos.IsValid)
892 {
893 serializedChara.pos.Set(serializedChara.orgPos);
894 }
895 }
896 foreach (Thing thing4 in orgMap.things)
897 {
898 if (thing4.trait is TraitTent && !thing4.isNPCProperty)
899 {
900 thing4.AddEditorTag(EditorTag.NoNpcProperty);
901 thing4.isSubsetCard = false;
902 map.things.Add(thing4);
903 Debug.Log(thing4);
904 }
905 }
906 }
907 }
908 foreach (Thing thing5 in map.things)
909 {
910 map.AddCardOnActivate(thing5);
911 }
912 foreach (Chara c in map.serializedCharas)
913 {
914 if (c.c_uidMaster == 0 || EClass.player.listCarryoverMap.Find((Chara chara2) => chara2.uid == c.uid) == null)
915 {
916 map.charas.Add(c);
918 }
919 }
920 map.serializedCharas.Clear();
921 if (isImported && IsTown)
922 {
924 }
927 map.OnLoad();
928 if (flag5)
929 {
930 foreach (Card item3 in map.Cards.ToList())
931 {
932 if (item3.isSubsetCard)
933 {
934 item3.Destroy();
935 }
936 }
937 }
938 if (isImported)
939 {
941 if (idCurrentSubset != null)
942 {
944 subset.Apply();
945 }
946 }
947 if (isImported)
948 {
950 {
951 foreach (Thing thing6 in map.things)
952 {
953 thing6.isNPCProperty = !thing6.isHidden && !thing6.HasEditorTag(EditorTag.NoNpcProperty);
954 }
955 }
956 else
957 {
958 foreach (Thing thing7 in map.things)
959 {
960 thing7.isNPCProperty = false;
961 }
962 }
964 if (instance != null)
965 {
967 }
968 }
969 if (isImported && !flag5 && !RevealRoom)
970 {
971 foreach (Room item4 in map.rooms.listRoom)
972 {
973 if (!item4.HasRoof || item4.data.atrium)
974 {
975 continue;
976 }
977 foreach (Point point2 in item4.points)
978 {
979 point2.cell.isSeen = false;
980 }
981 }
982 }
983 if (flag5)
984 {
985 OnRegenerate();
986 }
987 }
988 PathManager.Instance._pathfinder.PunishChangeDirection = false;
989 isImported = false;
990 if (this is Zone_Tent && IsUnderwater)
991 {
992 EClass._map.config.idSceneProfile = "indoor_water";
993 EClass.scene.profile = SceneProfile.Load(EClass._map.config.idSceneProfile);
994 }
995 if (flag && IsTown && base.lv == 0)
996 {
998 }
999 if (base.visitCount == 0)
1000 {
1001 base.dateRevive = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRevive;
1002 }
1003 map.ForeachCell(delegate(Cell cell)
1004 {
1005 if (cell.HasFire)
1006 {
1007 map.effectManager.GetOrCreate(cell.GetSharedPoint());
1008 }
1009 if (IsRegion)
1010 {
1011 cell.decal = 0;
1012 cell._bridge = (cell._bridgeMat = 0);
1013 }
1014 });
1016 {
1017 RainWater();
1018 }
1020 {
1021 map.ForeachCell(delegate(Cell cell)
1022 {
1023 cell.isSeen = true;
1024 });
1025 }
1026 isStarted = true;
1027 Map.isDirtySunMap = true;
1029 if (events.listPreEnter.Count > 0)
1030 {
1031 foreach (ZonePreEnterEvent item5 in events.listPreEnter)
1032 {
1033 item5.Execute();
1034 }
1035 events.listPreEnter.Clear();
1036 }
1037 foreach (Card card in map.Cards)
1038 {
1039 card.CalculateFOV();
1040 if (card.isChara)
1041 {
1042 Chara chara = card.Chara;
1043 chara.dirtySpeed = true;
1044 if (!card.isDyed && card.HasTag(CTAG.random_color))
1045 {
1046 card.DyeRandom();
1047 }
1048 if (card.IsUnique && !card.IsPCFaction && !card.IsPCParty)
1049 {
1050 Point point = chara.orgPos ?? card.pos;
1051 card.c_uniqueData = new UniqueData
1052 {
1053 x = point.x,
1054 y = point.z,
1055 uidZone = base.uid
1056 };
1057 }
1058 int num3 = card.GetInt(55);
1059 if (num3 != 0)
1060 {
1061 foreach (Chara chara2 in map.charas)
1062 {
1063 if (chara2.uid == num3)
1064 {
1065 if (chara.IsHostile(chara2))
1066 {
1067 chara.enemy = chara2;
1068 chara.SetAI(new GoalCombat());
1069 chara.calmCheckTurn = 20 + EClass.rnd(30);
1070 }
1071 break;
1072 }
1073 }
1074 card.SetInt(55);
1075 }
1076 chara.SyncRide();
1077 if (card.c_uidMaster != 0 && chara.master == null)
1078 {
1079 chara.FindMaster();
1080 }
1081 if (!EClass.game.isLoading)
1082 {
1083 chara.enemy = null;
1084 if (chara.IsInCombat)
1085 {
1086 chara.SetNoGoal();
1087 }
1088 }
1089 }
1090 else if (card.IsInstalled && card.trait is TraitDoor traitDoor && card.pos.HasChara && !traitDoor.IsOpen())
1091 {
1092 traitDoor.ToggleDoor(sound: false, refresh: false);
1093 }
1094 }
1095 RefreshHat();
1096 forceRegenerate = false;
1097 forceSubset = null;
1098 EClass.ui.OnActivateZone();
1100 EClass.Sound.LoadAmbience(IDAmbience);
1101 if (EClass.Branch != null)
1102 {
1104 }
1105 OnVisit();
1106 if (flag)
1107 {
1109 }
1111 if (IsPCFaction)
1112 {
1113 EClass.player.uidLastTown = 0;
1114 }
1115 else if (IsTown && base.lv == 0)
1116 {
1117 EClass.player.uidLastTown = base.uid;
1118 }
1119 RefreshBGM();
1120 Rand.InitBytes(map.seed + 1);
1122 okaerinko = 0;
1123 if (EClass.debug.enable)
1124 {
1125 ModInfluence(2000);
1126 }
1127 if (this is Zone_TinkerCamp)
1128 {
1129 Tutorial.Reserve("tinker");
1130 }
1131 else if (this is Zone_Town && !(this is Zone_SubTown))
1132 {
1133 Tutorial.Reserve("town");
1134 }
1135 }
CTAG
Definition: CTAG.cs:2
if(!match.Success)
EditorTag
Definition: EditorTag.cs:2
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:36
bool isNPCProperty
Definition: Card.cs:557
bool isSubsetCard
Definition: Card.cs:749
int c_uidMaster
Definition: Card.cs:1489
void AddEditorTag(EditorTag tag)
Definition: Card.cs:2738
Point pos
Definition: Card.cs:60
int uid
Definition: Card.cs:125
Trait trait
Definition: Card.cs:54
void Destroy()
Definition: Card.cs:5314
bool HasEditorTag(EditorTag tag)
Definition: Card.cs:2733
Definition: Cell.cs:7
bool isSeen
Definition: Cell.cs:294
bool HasFire
Definition: Cell.cs:712
AIAct SetNoGoal()
Definition: Chara.cs:9487
bool IsInCombat
Definition: Chara.cs:913
AIAct SetAI(AIAct g)
Definition: Chara.cs:9492
Point orgPos
Definition: Chara.cs:23
GlobalData global
Definition: Chara.cs:78
Chara master
Definition: Chara.cs:90
Chara FindMaster()
Definition: Chara.cs:2649
void SyncRide()
Definition: Chara.cs:4224
bool IsHostile()
Definition: Chara.cs:6948
bool ignoreBackerDestoryFlag
Definition: CoreConfig.cs:578
bool revealMap
Definition: CoreDebug.cs:170
bool enable
Definition: CoreDebug.cs:302
static string ZoneSave
Definition: CorePath.cs:192
TextureManager textures
Definition: Core.cs:45
CoreConfig config
Definition: Core.cs:70
bool IsExpired(int time)
Definition: Date.cs:338
static Scene scene
Definition: EClass.cs:31
static Core core
Definition: EClass.cs:7
static Map _map
Definition: EClass.cs:19
static int rnd(long a)
Definition: EClass.cs:59
static SourceManager sources
Definition: EClass.cs:43
static Player player
Definition: EClass.cs:13
static CoreDebug debug
Definition: EClass.cs:49
static SoundManager Sound
Definition: EClass.cs:47
static UI ui
Definition: EClass.cs:17
static GameSetting setting
Definition: EClass.cs:35
void Initialize(EloMap _elomap)
Definition: EloMapActor.cs:28
void OnActivateZone()
Definition: GameIO.cs:11
BalanceSetting balance
Definition: GameSetting.cs:356
bool isLoading
Definition: Game.cs:242
int countLoadedMaps
Definition: Game.cs:236
Zone activeZone
Definition: Game.cs:252
ZoneTransition transition
Definition: GlobalData.cs:6
Definition: Guild.cs:2
void RefreshDevelopment()
Definition: Guild.cs:95
static Guild GetCurrentGuild()
Definition: Guild.cs:74
int Size
Definition: MapBounds.cs:20
string idSceneProfile
Definition: MapConfig.cs:8
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:2512
Cell GetCell(int index)
Definition: Map.cs:993
IEnumerable< Card > Cards
Definition: Map.cs:140
void AddCardOnActivate(Card c)
Definition: Map.cs:888
void SetZone(Zone _zone)
Definition: Map.cs:186
List< Thing > things
Definition: Map.cs:52
byte[] TryLoadFile(string path, string s, int size)
Definition: Map.cs:557
Dictionary< int, int > backerObjs
Definition: Map.cs:70
List< Chara > deadCharas
Definition: Map.cs:49
int seed
Definition: Map.cs:19
RoomManager rooms
Definition: Map.cs:34
void SetReference()
Definition: Map.cs:200
void OnLoad()
Definition: Map.cs:813
void OnImport(ZoneExportData data)
Definition: Map.cs:819
List< Chara > serializedCharas
Definition: Map.cs:46
Cell[,] cells
Definition: Map.cs:88
MapConfig config
Definition: Map.cs:40
void Load(string path, bool import=false, PartialMap partial=null)
Definition: Map.cs:634
List< Chara > charas
Definition: Map.cs:84
void RefreshAllTiles()
Definition: Map.cs:2248
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
List< Chara > listCarryoverMap
Definition: Player.cs:1296
HashSet< int > doneBackers
Definition: Player.cs:1143
bool simulatingZone
Definition: Player.cs:1252
Definition: Point.cs:9
Point Set(int _x, int _z)
Definition: Point.cs:503
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:13
Definition: Region.cs:8
EloMap elomap
Definition: Region.cs:9
List< Room > listRoom
Definition: RoomManager.cs:13
Definition: Room.cs:4
bool HasRoof
Definition: Room.cs:29
static SceneProfile Load(string id)
Definition: SceneProfile.cs:18
void RebuildActorEx()
Definition: Scene.cs:993
EloMapActor elomapActor
Definition: Scene.cs:101
SourceBacker backers
void SetInt(int id, int value=0)
Definition: Spatial.cs:580
string idCurrentSubset
Definition: Spatial.cs:28
virtual bool IsRegion
Definition: Spatial.cs:515
virtual string Name
Definition: Spatial.cs:509
int GetInt(int id, int? defaultInt=null)
Definition: Spatial.cs:566
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()
string ZoneFullName
Definition: Zone.cs:88
bool isSimulating
Definition: Zone.cs:78
void RefreshElectricity()
Definition: Zone.cs:3192
ZoneExportData Import(string path)
Definition: Zone.cs:3467
void Generate()
Definition: Zone.cs:2557
ZoneEventManager events
Definition: Zone.cs:43
static string forceSubset
Definition: Zone.cs:27
virtual bool RegenerateOnEnter
Definition: Zone.cs:272
static int okaerinko
Definition: Zone.cs:31
virtual string idExport
Definition: Zone.cs:157
virtual bool MakeTownProperties
Definition: Zone.cs:252
virtual void OnRegenerate()
Definition: Zone.cs:1253
bool isStarted
Definition: Zone.cs:76
virtual string pathExport
Definition: Zone.cs:132
MapSubset subset
Definition: Zone.cs:68
Zone GetTopZone()
Definition: Zone.cs:2115
virtual string IDSubset
Definition: Zone.cs:219
ZoneBlueprint bp
Definition: Zone.cs:70
void RefreshBGM()
Definition: Zone.cs:3320
void Deactivate()
Definition: Zone.cs:1792
void SpawnLostItems()
Definition: Zone.cs:4059
void AddGlobalCharasOnActivate()
Definition: Zone.cs:1711
bool IsInstance
Definition: Zone.cs:496
void ClearZones(Zone current=null)
Definition: Zone.cs:2084
void OnVisit()
Definition: Zone.cs:1147
virtual bool IsTown
Definition: Zone.cs:230
void RainWater()
Definition: Zone.cs:3705
virtual bool UseFog
Definition: Zone.cs:398
virtual string IDAmbience
Definition: Zone.cs:185
void RemoveCard(Card t)
Definition: Zone.cs:2199
void RefreshHat()
Definition: Zone.cs:1137
void ModInfluence(int a)
Definition: Zone.cs:3917
virtual void OnGenerateMap()
Definition: Zone.cs:2775
static bool forceRegenerate
Definition: Zone.cs:25
bool IsPCFaction
Definition: Zone.cs:480
virtual bool IsUnderwater
Definition: Zone.cs:276
virtual bool ShouldRegenerate
Definition: Zone.cs:384
string NameWithLevel
Definition: Zone.cs:436
ZoneInstance instance
Definition: Zone.cs:58
virtual bool RevealRoom
Definition: Zone.cs:400
bool IsLoaded
Definition: Zone.cs:498
void RefreshListCitizen()
Definition: Zone.cs:3875
virtual int ExpireDays
Definition: Zone.cs:178
virtual void OnVisitNewMapOrRegenerate()
Definition: Zone.cs:1293

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(), Spatial.GetInt(), 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, Game.isLoading, 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(), Spatial.SetInt(), 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, EClass.world, ZoneFullName, and CorePath.ZoneSave.

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

◆ AddCard() [1/3]

Card Zone.AddCard ( Card  t)
inline

Definition at line 2164 of file Zone.cs.

2165 {
2166 return AddCard(t, 0, 0);
2167 }
Card AddCard(Card t, Point point)
Definition: Zone.cs:2159

◆ AddCard() [2/3]

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

Definition at line 2169 of file Zone.cs.

2170 {
2171 if (t.parent != null)
2172 {
2173 t.parent.RemoveCard(t);
2174 }
2175 t.parent = this;
2176 Chara chara = t.Chara;
2177 if (chara != null)
2178 {
2179 chara.currentZone = this;
2180 chara.SetAI(new NoGoal());
2181 }
2182 if (IsActiveZone)
2183 {
2184 map.OnCardAddedToZone(t, x, z);
2185 if (isStarted && t.isThing && t.placeState == PlaceState.roaming && !ignoreSpawnAnime)
2186 {
2187 t.PlayAnimeLoot();
2188 }
2189 ignoreSpawnAnime = false;
2190 }
2191 if (chara != null && EClass.player != null && !chara.hasSpawned)
2192 {
2193 EClass.player.codex.AddSpawn(chara.id);
2194 chara.hasSpawned = true;
2195 }
2196 return t;
2197 }
PlaceState
Definition: PlaceState.cs:2
virtual bool isThing
Definition: Card.cs:2133
virtual Chara Chara
Definition: Card.cs:2122
ICardParent parent
Definition: Card.cs:56
bool hasSpawned
Definition: Card.cs:905
PlaceState placeState
Definition: Card.cs:86
void PlayAnimeLoot()
Definition: Card.cs:6674
void AddSpawn(string id)
Definition: CodexManager.cs:65
void OnCardAddedToZone(Card t, int x, int z)
Definition: Map.cs:911
Definition: NoGoal.cs:4
CodexManager codex
Definition: Player.cs:1185
static bool ignoreSpawnAnime
Definition: Zone.cs:84
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 2159 of file Zone.cs.

2160 {
2161 return AddCard(t, point.x, point.z);
2162 }

References Point.x, and Point.z.

Referenced by InvOwnerChaosOffering._OnProcess(), TraitShrine._OnUse(), Game.AddAdventurers(), ZoneUtil.AddMerchant(), Quest.AddResident(), 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(), SurvivalManager.MeteorThing(), Map.MineBlock(), Chara.MoveHome(), Chara.MoveZone(), Zone_Void.OnActivate(), Region.OnAdvanceHour(), Zone_WindRest.OnAfterSimulate(), Zone_Nymelle.OnBeforeSimulate(), TaskHarvest.OnCreateProgress(), TaskBuild.OnDestroy(), SurvivalManager.OnExpandFloor(), Zone_DungeonFairy.OnGenerateMap(), Zone_DungeonMino.OnGenerateMap(), Zone_DungeonPuppy.OnGenerateMap(), Zone_TestRoom.OnGenerateMap(), MapGenDungen.OnGenerateTerrain(), GrowSystemTree.OnHitFail(), ZoneEventSiege.OnKill(), SurvivalManager.OnMineWreck(), AI_Fish.ProgressFish.OnProgressComplete(), QuestCraft.OnProgressComplete(), TaskMoveInstalled.OnProgressComplete(), TraitDiary.OnRead(), Zone_Town.OnRegenerate(), QuestEscort.OnStart(), TraitFarmChest.OnUse(), TraitGiftNewYear.OnUse(), TraitStairsLocked.OnUse(), ZoneEventDefenseGame.OnVisit(), 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(), ReligionManager.Reforge(), Map.ReloadRoom(), SerializedCards.Restore(), Revive(), Chara.Revive(), AI_Craft_Snowman.Run(), AI_Idle.Run(), AI_Slaughter.Run(), AI_UseCrafter.Run(), Meeting.SetChara(), Chara.SetGlobal(), ZoneEventMusic.Spawn(), CoreDebug.Spawn(), SpawnAltar(), ReligionExtension.SpawnAltar(), Card.SpawnLoot(), SpawnLostItems(), SurvivalManager.StartRaid(), ActThrow.Throw(), TryAddThing(), BiomeProfile.ClusterThing.TryCreate(), Chara.TryDropBossLoot(), Chara.TryDuplicate(), TryGenerateBigDaddy(), TryGenerateShrine(), Religion.TryGetGift(), Chara.TryHoldCard(), Chara.TryPutShared(), AI_Shopping.TryRestock(), Map.TryShatter(), Map.TrySmoothPick(), TrySpawnFollower(), DramaOutcome.Tutorial1(), TraitFoodEgg.Update(), TraitSpotBiome.Update(), CoreDebug.UpdateInput(), Chara.Vomit(), and ActEffect.Wish().

◆ AddCardSplinkle()

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

Definition at line 2124 of file Zone.cs.

2125 {
2126 Point point = new Point(center);
2127 for (int i = 0; i < 1000; i++)
2128 {
2129 point.x = center.x + EClass.rnd(radius) - EClass.rnd(radius);
2130 point.z = center.z + EClass.rnd(radius) - EClass.rnd(radius);
2131 if (point.IsValid && !point.IsBlocked && !point.HasChara)
2132 {
2133 return AddCard(t, point);
2134 }
2135 }
2136 return AddCard(t, center);
2137 }
bool IsBlocked
Definition: Point.cs:363
bool HasChara
Definition: Point.cs:238

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

Referenced by ZoneUtil.AddBandits().

◆ AddChara() [1/2]

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

◆ AddChara() [2/2]

Chara Zone.AddChara ( string  id,
Point  p 
)
inline

Definition at line 2144 of file Zone.cs.

2145 {
2146 return AddChara(id, p.x, p.z);
2147 }
Chara AddChara(string id, int x, int z)
Definition: Zone.cs:2139

References Point.x, and Point.z.

◆ AddGlobalCharasOnActivate()

void Zone.AddGlobalCharasOnActivate ( )
inline

Definition at line 1711 of file Zone.cs.

1712 {
1713 Point spawnPosPC = null;
1714 if (EClass.pc.currentZone == this)
1715 {
1716 spawnPosPC = GetSpawnPos(EClass.pc);
1717 }
1718 if (spawnPosPC == null)
1719 {
1720 spawnPosPC = map.GetCenterPos();
1721 }
1722 if (spawnPosPC.IsValid && EClass.pc.global.transition != null && spawnPosPC.HasBlock)
1723 {
1724 spawnPosPC = spawnPosPC.GetNearestPoint();
1725 }
1726 spawnPosPC = spawnPosPC.Clamp(useBounds: true).GetNearestPoint();
1727 foreach (Chara c in EClass.game.cards.globalCharas.Values)
1728 {
1729 if (c.currentZone != this)
1730 {
1731 continue;
1732 }
1733 if (c.parent is Chara)
1734 {
1735 Chara chara = c.parent as Chara;
1736 c.currentZone = chara.currentZone;
1737 }
1738 else
1739 {
1740 if (c.isDead)
1741 {
1742 continue;
1743 }
1744 if (c.isRestrained && c.currentZone == EClass.pc.currentZone && (!c.pos.IsValid || c.pos.FindThing<TraitShackle>() == null))
1745 {
1746 c.isRestrained = false;
1747 }
1748 if (c.global.transition != null)
1749 {
1750 Point pos = (c.IsPC ? spawnPosPC : (c.IsPCParty ? spawnPosPC.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true) : GetSpawnPos(c)));
1751 if (c.IsPCParty && !c.IsPC)
1752 {
1753 if (c.host == EClass.pc)
1754 {
1755 pos.Set(spawnPosPC);
1756 }
1757 else if (pos.Equals(spawnPosPC) || !PathManager.Instance.IsPathClear(spawnPosPC, pos, c, 5))
1758 {
1759 c.pos.Set(spawnPosPC);
1760 if (!spawnPosPC.ForeachNearestPoint(delegate(Point p)
1761 {
1762 if (PathManager.Instance.IsPathClear(spawnPosPC, p, c, 10) && !p.Equals(spawnPosPC))
1763 {
1764 pos.Set(p);
1765 return true;
1766 }
1767 return false;
1768 }, allowBlock: false, EClass.pc.party.members.Count >= 12, allowInstalled: true, ignoreCenter: true, EClass._zone.IsRegion ? 2 : 6))
1769 {
1770 pos.Set(spawnPosPC);
1771 }
1772 }
1773 }
1774 c.pos.Set(pos);
1775 c.global.transition = null;
1776 }
1777 map.charas.Add(c);
1779 }
1780 }
1782 {
1783 Point nearestPoint = spawnPosPC.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true);
1784 item.enemy = null;
1785 item.pos.Set(nearestPoint);
1786 map.charas.Add(item);
1788 }
1790 }
GlobalCharaList globalCharas
Definition: CardManager.cs:46
bool isRestrained
Definition: Card.cs:569
override bool IsPC
Definition: Chara.cs:632
Chara host
Definition: Chara.cs:35
Zone currentZone
Definition: Chara.cs:261
bool isDead
Definition: Chara.cs:395
CardManager cards
Definition: Game.cs:156
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
Point GetNearestPoint(bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int minRadius=0)
Definition: Point.cs:624
bool Equals(int _x, int _z)
Definition: Point.cs:966
bool ForeachNearestPoint(Func< Point, bool > endFunc, bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int maxRange=30)
Definition: Point.cs:696
Point Clamp(bool useBounds=false)
Definition: Point.cs:1014
bool HasBlock
Definition: Point.cs:141
Thing FindThing(Func< Thing, bool > func)
Definition: Point.cs:1146
Point GetSpawnPos(Chara c, ZoneTransition.EnterState destState=ZoneTransition.EnterState.Auto)
Definition: Zone.cs:1500

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.listCarryoverMap, 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 3601 of file Zone.cs.

3602 {
3603 Trait random = map.Installed.traits.GetTraitSet<TraitSpotExit>().GetRandom();
3604 if (random == null)
3605 {
3606 return null;
3607 }
3608 Point point = random.GetPoint();
3609 Chara chara = null;
3610 if (guest)
3611 {
3612 Zone z = EClass.world.FindZone("wilds");
3613 chara = EClass.game.cards.ListGlobalChara(z).RandomItem();
3614 if (chara != null)
3615 {
3616 AddCard(chara, point);
3617 Msg.Say("guestArrive", chara);
3618 chara.visitorState = VisitorState.Arrived;
3619 }
3620 }
3621 else
3622 {
3623 chara = CharaGen.CreateFromFilter("c_wilds");
3624 AddCard(chara, point);
3625 chara.goalListType = GoalListType.Enemy;
3626 }
3627 return chara;
3628 }
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:128
TraitManager traits
Definition: Props.cs:18
Zone FindZone(int lv)
Definition: Spatial.cs:728
TraitSet GetTraitSet(Type t)
Definition: TraitManager.cs:94
Definition: Trait.cs:7
Point GetPoint()
Definition: Trait.cs:845
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 2154 of file Zone.cs.

2155 {
2156 return AddThing(id, p.x, p.z);
2157 }
Card AddThing(string id, int x, int z)
Definition: Zone.cs:2149

References Point.x, and Point.z.

◆ ApplyBackerPet()

void Zone.ApplyBackerPet ( bool  draw)
inline

Definition at line 4104 of file Zone.cs.

4105 {
4106 bool flag = this is Zone_Yowyn && base.lv == -1;
4107 IList<SourceBacker.Row> list = EClass.sources.backers.listPet.Copy();
4108 list.Shuffle();
4110 {
4111 list.ForeachReverse(delegate(SourceBacker.Row a)
4112 {
4113 if (EClass.player.doneBackers.Contains(a.id))
4114 {
4115 list.Remove(a);
4116 }
4117 });
4118 }
4119 foreach (Chara chara in EClass._map.charas)
4120 {
4121 if (chara.IsGlobal || chara.IsMinion)
4122 {
4123 continue;
4124 }
4125 if (chara.isBackerContent)
4126 {
4127 if (chara.sourceBacker.isStatic != 0)
4128 {
4129 continue;
4130 }
4131 if (chara.id != "follower")
4132 {
4133 chara.RemoveBacker();
4134 }
4135 }
4136 if ((flag && chara.race.id != "cat") || (!EClass.debug.enable && EClass.rnd((!flag) ? (draw ? 3 : 10) : (draw ? 1 : 2)) != 0))
4137 {
4138 continue;
4139 }
4140 foreach (SourceBacker.Row item in list)
4141 {
4142 if (item.chara == chara.id)
4143 {
4144 chara.ApplyBacker(item.id);
4145 list.Remove(item);
4146 break;
4147 }
4148 }
4149 }
4150 }
SourceBacker.Row sourceBacker
Definition: Card.cs:955
void RemoveBacker()
Definition: Card.cs:7537
void ApplyBacker(int bid)
Definition: Card.cs:7501
bool isBackerContent
Definition: Card.cs:952
override bool IsGlobal
Definition: Chara.cs:630
override bool IsMinion
Definition: Chara.cs:647
SourceRace.Row race
Definition: Chara.cs:470
List< Row > listPet

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 1958 of file Zone.cs.

1959 {
1961 {
1962 return false;
1963 }
1964 if (IsInstance)
1965 {
1966 return true;
1967 }
1968 bool flag = false;
1969 switch (id)
1970 {
1971 case "cave_dragon":
1972 if (!(this is Zone_DungeonDragon))
1973 {
1974 flag = true;
1975 }
1976 break;
1977 case "cave_yeek":
1978 if (!(this is Zone_DungeonYeek))
1979 {
1980 flag = true;
1981 }
1982 break;
1983 case "cave_mino":
1984 if (!(this is Zone_DungeonMino))
1985 {
1986 flag = true;
1987 }
1988 break;
1989 case "cave_dead":
1990 if (!(this is Zone_DungeonDead))
1991 {
1992 flag = true;
1993 }
1994 break;
1995 case "oldkeep":
1996 if (!(this is Zone_OldKeep))
1997 {
1998 flag = true;
1999 }
2000 break;
2001 }
2002 Zone topZone = GetTopZone();
2003 if (!flag)
2004 {
2005 if (base.dateExpire == 0 || !EClass.world.date.IsExpired(base.dateExpire))
2006 {
2007 return false;
2008 }
2009 if (!base.isRandomSite && !(this is Zone_Field) && (topZone == null || topZone == this || topZone.FindDeepestZone() == this))
2010 {
2011 return false;
2012 }
2013 }
2014 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()))
2015 {
2016 return false;
2017 }
2019 {
2021 if (zone != null && zone.GetTopZone() == this)
2022 {
2023 return false;
2024 }
2025 }
2026 return true;
2027 }
SpatialManager spatials
Definition: Game.cs:153
Zone nextZone
Definition: Player.cs:1300
Zone Find(string id)
Zone FindDeepestZone()
Definition: Spatial.cs:715

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,
Point  pos = null 
)
inline

Definition at line 1888 of file Zone.cs.

1889 {
1892 branch = new FactionBranch();
1893 branch.OnCreate(this);
1894 if (base.icon == 0)
1895 {
1896 base.icon = 332;
1897 }
1898 instance = null;
1899 base.dateExpire = 0;
1901 Register();
1902 foreach (Thing thing in map.things)
1903 {
1904 thing.isNPCProperty = false;
1905 }
1908 if (debug)
1909 {
1910 for (int i = 0; i < 7; i++)
1911 {
1912 Chara chara = CharaGen.CreateFromFilter("c_neutral");
1913 EClass._zone.AddCard(chara, EClass._map.bounds.GetRandomPoint().GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false));
1914 branch.AddMemeber(chara);
1915 }
1916 }
1917 else
1918 {
1919 Msg.Say("claimedZone");
1920 EClass.Branch.Log("claimedZone");
1921 EClass.Sound.Play("jingle_embark");
1922 EClass.pc.PlaySound("build");
1923 if (pos == null)
1924 {
1925 pos = EClass.pc.pos.GetNearestPoint(allowBlock: false, allowChara: true, allowInstalled: false);
1926 }
1927 Effect.Get("aura_heaven").Play(pos);
1928 EClass._zone.AddCard(ThingGen.Create("core_zone"), pos).SetPlaceState(PlaceState.installed);
1929 }
1930 base.idPrefix = 0;
1932 {
1933 EClass.player.spawnZone = EClass._zone;
1934 }
1936 {
1937 EClass._zone.SetBGM(new List<int> { 41, 90, 44, 43 });
1939 }
1940 }
void SetPlaceState(PlaceState newState, bool byPlayer=false)
Definition: Card.cs:3928
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6645
Faction faction
Definition: Chara.cs:433
static Zone _zone
Definition: EClass.cs:21
Definition: Effect.cs:7
static Effect Get(Effect original)
Definition: Effect.cs:80
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:234
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:1011
MapBounds bounds
Definition: Map.cs:55
EloMap elomap
Definition: Scene.cs:149
void Register()
Definition: Spatial.cs:630
void RefreshPlaylist()
Definition: Zone.cs:3304
void SetBGM(List< int > ids, bool refresh=true, float fadeDuration=0f)
Definition: Zone.cs:3262

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 SurvivalManager.OnExpandFloor(), TraitDeed.OnRead(), DramaOutcome.QuestExploration_MeetFarris2(), and CoreDebug.QuickStart().

◆ ClearZones()

void Zone.ClearZones ( Zone  current = null)
inline

Definition at line 2084 of file Zone.cs.

2085 {
2086 if (map != null)
2087 {
2088 UnloadMap();
2089 }
2090 base.isGenerated = false;
2091 Zone topZone = GetTopZone();
2092 if (topZone != this)
2093 {
2094 topZone.ClearZones(this);
2095 return;
2096 }
2097 children.ForeachReverse(delegate(Spatial c)
2098 {
2099 if (c != current)
2100 {
2101 c.Destroy();
2102 }
2103 });
2104 }
virtual void Destroy()
Definition: Spatial.cs:690
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 4036 of file Zone.cs.

4037 {
4038 int num = 0;
4039 foreach (Chara chara in EClass._map.charas)
4040 {
4041 if (chara.c_uidMaster == c.uid && chara.c_minionType == MinionType.Default)
4042 {
4043 num++;
4044 }
4045 }
4046 return num;
4047 }
MinionType
Definition: MinionType.cs:2
MinionType c_minionType
Definition: Card.cs:1015

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

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

◆ CreateBP()

void Zone.CreateBP ( )
inline

Definition at line 2545 of file Zone.cs.

2546 {
2547 bp = new ZoneBlueprint();
2548 bp.Create();
2549 bp.genSetting.seed = base.Seed;
2550 OnCreateBP();
2551 }
virtual void OnCreateBP()
Definition: Zone.cs:2553

References ZoneBlueprint.Create().

◆ CreatePlaylist()

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

Definition at line 3360 of file Zone.cs.

3361 {
3362 return ModUtil.CreatePlaylist(ref list, mold);
3363 }

◆ Deactivate()

void Zone.Deactivate ( )
inline

Definition at line 1792 of file Zone.cs.

1793 {
1794 if (!IsUserZone && !IsPCFaction && map != null)
1795 {
1796 List<Thing> list = new List<Thing>();
1797 foreach (Thing thing in map.things)
1798 {
1799 if (thing.rarity >= Rarity.Artifact && thing.HasTag(CTAG.godArtifact))
1800 {
1801 list.Add(thing);
1802 }
1803 }
1804 if (this is Zone_Tent)
1805 {
1806 foreach (Thing item in map.props.stocked.Things.Concat(map.props.roaming.Things))
1807 {
1808 if (item.IsContainer)
1809 {
1810 foreach (Thing thing2 in item.things)
1811 {
1812 if (thing2.trait is TraitTent)
1813 {
1814 list.Add(thing2);
1815 }
1816 }
1817 }
1818 if (item.trait is TraitTent)
1819 {
1820 list.Add(item);
1821 }
1822 }
1823 }
1824 if (list.Count > 0)
1825 {
1826 Msg.Say("pick_valuable");
1827 foreach (Thing item2 in list)
1828 {
1829 Msg.Say("pick_valuable2", item2);
1830 EClass.pc.AddCard(item2);
1831 }
1832 }
1833 }
1835 {
1836 base.isPeace = false;
1837 }
1839 if (IsPCFaction)
1840 {
1841 foreach (Chara member in branch.members)
1842 {
1843 member.ValidateWorks();
1844 }
1845 }
1846 EClass.game.lastActiveZone = EClass.game.activeZone;
1847 base.lastActive = EClass.world.date.GetRaw();
1848 map.OnDeactivate();
1849 EClass.scene.Clear();
1850 EClass.game.activeZone = null;
1851 if (IsInstance)
1852 {
1853 UnloadMap();
1854 base.isGenerated = false;
1855 }
1856 if (forceRegenerate)
1857 {
1858 UnloadMap();
1859 }
1860 OnDeactivate();
1861 }
Rarity
Definition: Rarity.cs:2
Card AddCard(Card c)
Definition: Card.cs:3266
Rarity rarity
Definition: Card.cs:317
bool HasTag(CTAG tag)
Definition: Card.cs:2728
void ValidateWorks()
Definition: Chara.cs:9843
void OnDeactivate()
Definition: Map.cs:210
PropsManager props
Definition: Map.cs:94
PropsRoaming roaming
Definition: PropsManager.cs:10
PropsStocked stocked
Definition: PropsManager.cs:6
List< Thing > Things
Definition: Props.cs:37
void Clear()
Definition: Scene.cs:355
virtual void OnBeforeDeactivate()
Definition: Zone.cs:1281
virtual bool IsUserZone
Definition: Zone.cs:278
virtual void OnDeactivate()
Definition: Zone.cs:1285

References Game.activeZone, Card.AddCard(), Scene.Clear(), World.date, EClass.game, Date.GetRaw(), Card.HasTag(), item, FactionBranch.members, Map.OnDeactivate(), EClass.pc, EClass.player, Map.props, Card.rarity, PropsManager.roaming, Msg.Say(), EClass.scene, Player.simulatingZone, 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 2065 of file Zone.cs.

2066 {
2067 children.ForeachReverse(delegate(Spatial z)
2068 {
2069 z.Destroy();
2070 });
2071 if (map != null)
2072 {
2073 UnloadMap();
2074 }
2075 if (parent != null && parent.IsRegion && instance == null)
2076 {
2077 EClass.scene.elomap.SetZone(base.x, base.y, null, updateMesh: true);
2078 }
2079 EClass.game.spatials.Remove(this);
2080 destryoed = true;
2081 base.isGenerated = false;
2082 }
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 575 of file Zone.cs.

576 {
577 return elements.Value(ele);
578 }
int Value(int ele)
ElementContainerZone elements
Definition: Zone.cs:46

References elements, and ElementContainer.Value().

Referenced by TraitWrench.IsValidTarget().

◆ Evalue() [2/2]

int Zone.Evalue ( string  alias)
inline

Definition at line 580 of file Zone.cs.

581 {
582 return elements.Value(EClass.sources.elements.alias[alias].id);
583 }
SourceElement elements

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

◆ Export() [1/2]

void Zone.Export ( )
inline

Definition at line 3559 of file Zone.cs.

3560 {
3562 string text = pathExport;
3563 IO.Copy(text, CorePath.ZoneSave + "Backup/");
3564 Export(text);
3565 Msg.Say("Exported Map:" + text);
3566 }
static void Copy(string fromPath, string toPath)
Definition: IO.cs:309
void ResetEditorPos()
Definition: Map.cs:362
void Export()
Definition: Zone.cs:3559

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 3476 of file Zone.cs.

3477 {
3478 if (subset != null)
3479 {
3480 SE.Beep();
3481 return;
3482 }
3483 try
3484 {
3485 ZoneExportData zoneExportData = new ZoneExportData
3486 {
3487 name = name,
3488 usermap = usermap
3489 };
3491 if (!map.config.retainDecal)
3492 {
3494 }
3495 map.Save(IO.TempPath + "/", zoneExportData, partial);
3496 map.ExportMetaData(IO.TempPath + "/", Path.GetFileNameWithoutExtension(path), partial);
3497 if (partial == null)
3498 {
3499 IO.CopyDir(base.pathSave + "Texture Replace", IO.TempPath + "/Texture Replace");
3500 }
3501 IO.SaveFile(IO.TempPath + "/export", zoneExportData, compress: true);
3502 using (ZipFile zipFile = new ZipFile())
3503 {
3504 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
3505 zipFile.AddDirectory(IO.TempPath);
3506 zipFile.Save(path);
3507 zipFile.Dispose();
3508 }
3510 }
3511 catch (Exception ex)
3512 {
3513 EClass.ui.Say(ex.Message + ":" + path);
3514 }
3515 }
static void CreateTempDirectory(string path=null)
Definition: IO.cs:419
static string TempPath
Definition: IO.cs:63
static void SaveFile(string path, object obj, bool compress=false, JsonSerializerSettings setting=null)
Definition: IO.cs:88
static void DeleteTempDirectory(string path=null)
Definition: IO.cs:424
bool retainDecal
Definition: MapConfig.cs:44
void ExportMetaData(string _path, string id, PartialMap partial=null)
Definition: Map.cs:825
void ClearRainAndDecal()
Definition: Map.cs:1666
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 3517 of file Zone.cs.

3518 {
3520 {
3521 string text = StandaloneFileBrowser.SaveFilePanel("Export Zone", dir ?? CorePath.ZoneSave, "new zone", "z");
3522 if (!string.IsNullOrEmpty(text))
3523 {
3524 Export(text);
3525 Msg.SayRaw("Exported Zone");
3526 }
3527 });
3528 }
void WaitForEndOfFrame(Action action)
Definition: BaseCore.cs:61
static string SayRaw(string text)
Definition: Msg.cs:118
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 3370 of file Zone.cs.

3371 {
3372 return map.charas.Find((Chara c) => c.uid == uid);
3373 }
int uid
Definition: Spatial.cs:70

References Map.charas, and Card.uid.

◆ FindChara() [2/2]

Chara Zone.FindChara ( string  id)
inline

Definition at line 3365 of file Zone.cs.

3366 {
3367 return map.charas.Find((Chara c) => c.id == id);
3368 }

References Map.charas, and Card.id.

Referenced by DramaCustomSequence.Build(), Zone_CurryRuinDungeon.OnGenerateMap(), Zone_OldKeepDungeon.OnGenerateMap(), and Zone_Aquli.OnVisitNewMapOrRegenerate().

◆ FindDeadChara()

Chara Zone.FindDeadChara ( string  id)
inline

Definition at line 3375 of file Zone.cs.

3376 {
3377 return map.deadCharas.Find((Chara c) => c.id == id);
3378 }

References Map.deadCharas, and Card.id.

Referenced by Zone_Aquli.OnVisitNewMapOrRegenerate().

◆ FindOrCreateLevel()

Zone Zone.FindOrCreateLevel ( int  destLv,
string  subId = "" 
)
inline

Definition at line 534 of file Zone.cs.

535 {
536 if (destLv == base.lv)
537 {
538 return this;
539 }
540 Zone zone = FindZone(destLv);
541 if (zone != null)
542 {
543 return zone;
544 }
545 if (!(SpatialGen.Create(subId.IsEmpty(GetNewZoneID(destLv)), this, register: true) is Zone zone2))
546 {
547 return null;
548 }
549 zone2.lv = destLv;
550 zone2.x = base.x;
551 zone2.y = base.y;
552 return zone2;
553 }
static Spatial Create(string id, Spatial parent, bool register, int x=-99999, int y=-99999, int icon=0)
Definition: SpatialGen.cs:16
virtual string GetNewZoneID(int level)
Definition: Zone.cs:595

References SpatialGen.Create(), Spatial.FindZone(), GetNewZoneID(), and Spatial.x.

◆ FindSharedContainer()

Thing Zone.FindSharedContainer ( Thing  t,
List< Thing >  containers = null,
bool  sharedOnly = true 
)
inline

Definition at line 2334 of file Zone.cs.

2335 {
2336 Thing dest = null;
2337 int priority = -1;
2338 ContainerFlag flag = t.category.GetRoot().id.ToEnum<ContainerFlag>();
2339 if (flag == ContainerFlag.none)
2340 {
2341 flag = ContainerFlag.other;
2342 }
2343 if (containers == null)
2344 {
2345 containers = EClass._map.props.installed.containers;
2346 }
2347 SearchDest();
2348 return dest;
2349 Thing SearchDest()
2350 {
2351 foreach (Thing container in containers)
2352 {
2353 Thing thing = container;
2354 if (thing.trait is TraitShippingChest)
2355 {
2357 }
2358 if ((!sharedOnly || thing.IsSharedContainer) && thing.c_lockLv <= 0 && (thing.things.Count < thing.things.MaxCapacity || thing.things.CanStack(t) != t))
2359 {
2360 Window.SaveData windowSaveData = thing.GetWindowSaveData();
2361 if (windowSaveData != null)
2362 {
2363 if (windowSaveData.priority <= priority || (windowSaveData.noRotten && t.IsDecayed) || (windowSaveData.onlyRottable && t.trait.Decay == 0))
2364 {
2365 continue;
2366 }
2368 if (windowSaveData.userFilter)
2369 {
2370 filterResult = windowSaveData.IsFilterPass(t.GetName(NameStyle.Full, 1));
2371 if (filterResult == Window.SaveData.FilterResult.Block)
2372 {
2373 continue;
2374 }
2375 }
2376 if (filterResult != Window.SaveData.FilterResult.PassWithoutFurtherTest)
2377 {
2378 if (windowSaveData.advDistribution)
2379 {
2380 bool flag2 = false;
2381 foreach (int cat in windowSaveData.cats)
2382 {
2383 if (t.category.uid == cat)
2384 {
2385 flag2 = true;
2386 break;
2387 }
2388 }
2389 if (!flag2)
2390 {
2391 continue;
2392 }
2393 }
2394 else if (windowSaveData.flag.HasFlag(flag))
2395 {
2396 continue;
2397 }
2398 }
2399 priority = windowSaveData.priority;
2400 }
2401 else
2402 {
2403 if (priority != -1)
2404 {
2405 continue;
2406 }
2407 priority = 0;
2408 }
2409 dest = thing;
2410 }
2411 }
2412 return null;
2413 }
2414 }
ContainerFlag
Definition: ContainerFlag.cs:5
NameStyle
Definition: NameStyle.cs:2
Thing container_shipping
Definition: CardManager.cs:52
bool IsDecayed
Definition: Card.cs:2357
int c_lockLv
Definition: Card.cs:991
Window.SaveData GetWindowSaveData()
Definition: Card.cs:2649
ThingContainer things
Definition: Card.cs:39
SourceCategory.Row category
Definition: Card.cs:2101
PropsInstalled installed
Definition: PropsManager.cs:8
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:536
bool IsSharedContainer
Definition: Thing.cs:110
virtual int Decay
Definition: Trait.cs:123
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, 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.things, Card.trait, and Window.SaveData.userFilter.

Referenced by FactionBranch.AutoClean().

◆ Generate()

void Zone.Generate ( )
inline

Definition at line 2557 of file Zone.cs.

2558 {
2559 base.isGenerated = true;
2560 if (bp == null)
2561 {
2562 CreateBP();
2563 }
2564 if (bp.map == null)
2565 {
2566 bp.GenerateMap(this);
2567 }
2568 map.SetZone(this);
2569 Zone_Field zone_Field = this as Zone_Field;
2570 bool flag = IdBiome == "Sand" || IdBiome == "Water" || IsUnderwater;
2571 if (flag)
2572 {
2573 int num = 1 + EClass.rnd((IdBiome == "Water") ? 3 : 2);
2574 for (int i = 0; i < num; i++)
2575 {
2576 Point randomSurface = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2577 if (!randomSurface.HasObj && !randomSurface.HasThing)
2578 {
2579 Thing t = ThingGen.Create("pearl_oyster", new string[3] { "wood_birch", "poplar", "coralwood" }.RandomItem(), ContentLv);
2580 EClass._zone.AddCard(t, randomSurface).Install();
2581 }
2582 }
2583 num = 4 + EClass.rnd(5);
2584 for (int j = 0; j < num; j++)
2585 {
2586 Point randomSurface2 = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2587 if (!randomSurface2.HasObj && !randomSurface2.HasThing && (IsUnderwater || randomSurface2.cell.IsTopWaterAndNoSnow || EClass.rnd(6) == 0))
2588 {
2589 EClass._zone.AddCard(ThingGen.Create("70", -1, ContentLv), randomSurface2);
2590 }
2591 }
2592 for (int k = 0; k < EClass.rnd(EClass.rnd(base.isBeach ? 5 : 3) + 1); k++)
2593 {
2594 Point randomSurface3 = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2595 if (!randomSurface3.HasObj)
2596 {
2597 EClass._zone.AddCard(ThingGen.Create("bottle_message"), randomSurface3);
2598 }
2599 }
2600 }
2601 if (IsUnderwater)
2602 {
2603 for (int l = 0; l < 30 + EClass.rnd(30); l++)
2604 {
2605 SpawnMob(null, SpawnSetting.Fish());
2606 }
2607 Crawler crawler = Crawler.Create("pasture");
2608 int num2 = (EClass.debug.enable ? 3 : EClass.rnd(EClass.rnd(EClass.rnd(EClass.rnd(5) + 1) + 1) + 1));
2609 bool flag2 = this is Zone_Field;
2610 Thing seed = null;
2611 if (IsNefia)
2612 {
2613 int num3 = Mathf.Min(EClass._zone.DangerLv, EClass.pc.Evalue(286) * 2 / 3);
2614 if (num3 > 0)
2615 {
2617 Rand.SetSeed(EClass._zone.uid * 10 + num3);
2618 TraitSeed.LevelSeed(seed, (seed.trait as TraitSeed).row, num3);
2619 Rand.SetSeed();
2620 seed.elements.SetBase(2, EClass.curve(seed.encLV, 50, 10, 80));
2621 }
2622 }
2623 crawler.CrawlUntil(EClass._map, () => EClass._map.GetRandomPoint(), num2 + (flag2 ? 4 : 0), delegate(Crawler.Result r)
2624 {
2625 int num7 = 137;
2626 foreach (Point point in r.points)
2627 {
2628 if (!point.cell.isModified && !point.HasThing && !point.HasBlock && !point.HasObj)
2629 {
2630 map.SetObj(point.x, point.z, num7);
2631 int idx = 3 + ((EClass.rnd(3) == 0) ? 1 : 0) + ((EClass.rnd(3) == 0) ? (-1) : 0) + ((EClass.rnd(3) == 0) ? (-1) : 0);
2632 point.growth.SetStage(idx);
2633 if (seed != null)
2634 {
2635 EClass._map.AddPlant(point, seed);
2636 }
2637 }
2638 }
2639 return false;
2640 });
2641 crawler.CrawlUntil(tries: EClass.rnd(EClass.rnd(5) + 1) + 1 + (flag2 ? 20 : 0), map: EClass._map, onStart: () => EClass._map.GetRandomPoint(), canComplete: delegate(Crawler.Result r)
2642 {
2643 int num7 = 136;
2644 foreach (Point point2 in r.points)
2645 {
2646 if (!point2.cell.isModified && !point2.HasThing && !point2.HasBlock && !point2.HasObj)
2647 {
2648 map.SetObj(point2.x, point2.z, num7, 1, EClass.rnd(4));
2649 }
2650 }
2651 return false;
2652 });
2653 crawler.CrawlUntil(tries: EClass.rnd(EClass.rnd(10) + 1) + 3 + (flag2 ? 40 : 0), map: EClass._map, onStart: () => EClass._map.GetRandomPoint(), canComplete: delegate(Crawler.Result r)
2654 {
2655 int idFloor = 121;
2656 foreach (Point point3 in r.points)
2657 {
2658 map.SetFloor(point3.x, point3.z, 97, idFloor, Mathf.Clamp(4 - r.startPos.Distance(point3) + EClass.rnd(3) - EClass.rnd(3), 0, 3));
2659 }
2660 return false;
2661 });
2662 }
2663 if (zone_Field != null)
2664 {
2665 if (EClass.rnd(3) == 0)
2666 {
2667 int num4 = EClass.rnd(2);
2668 for (int num5 = 0; num5 < num4; num5++)
2669 {
2670 Point randomSurface4 = EClass._map.bounds.GetRandomSurface();
2671 if (!randomSurface4.HasObj && !randomSurface4.HasThing)
2672 {
2674 EClass._zone.AddCard(t2, randomSurface4).Install();
2675 }
2676 }
2677 }
2678 if (EClass.rnd(8) == 0)
2679 {
2680 SpawnAltar();
2681 }
2683 if (!flag && EClass.rnd(EClass.debug.enable ? 1 : 10) == 0)
2684 {
2685 Point randomSurface5 = EClass._map.bounds.GetRandomSurface();
2686 if (randomSurface5.IsValid)
2687 {
2688 EClass._zone.AddCard(CharaGen.Create("priest"), randomSurface5);
2689 }
2690 }
2691 if (base.Tile.isRoad)
2692 {
2693 for (int num6 = 0; num6 < EClass.rnd(4); num6++)
2694 {
2695 EClass._zone.SpawnMob(map.GetCenterPos().GetRandomPointInRadius(2, 6, requireLos: false, allowChara: false), SpawnSetting.HomeGuest(EClass._zone.DangerLv));
2696 }
2697 }
2698 }
2699 map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList) ?? EClass.Sound.GetPlaylist("Day"));
2700 }
@ seed
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:3217
int Evalue(int ele)
Definition: Card.cs:2704
Card Install()
Definition: Card.cs:3922
bool IsTopWaterAndNoSnow
Definition: Cell.cs:748
bool isModified
Definition: Cell.cs:450
static Crawler Create(string id)
Definition: Crawler.cs:193
bool CrawlUntil(Map map, Func< Point > onStart, int tries, Func< Result, bool > canComplete, Action onFail=null)
Definition: Crawler.cs:59
static int curve(long _a, int start, int step, int rate=75)
Definition: EClass.cs:69
void SetStage(int idx, bool renewHarvest=false)
Definition: GrowSystem.cs:456
Point GetRandomSurface(int x, int z, int radius, bool walkable=true, bool allowWater=false)
Definition: MapBounds.cs:182
Point GetRandomPoint(Point center, int radius, int tries=100, bool mustBeWalkable=true, bool requireLos=true)
Definition: Map.cs:2355
List< int > _plDay
Definition: Map.cs:58
void SetFloor(int x, int z, int idMat=0, int idFloor=0)
Definition: Map.cs:1063
PlantData AddPlant(Point pos, Thing seed)
Definition: Map.cs:2092
void SetObj(int x, int z, int id=0, int value=1, int dir=0)
Definition: Map.cs:1675
bool HasThing
Definition: Point.cs:251
bool HasObj
Definition: Point.cs:137
Point GetRandomPointInRadius(int minRadius, int maxRadius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=2000)
Definition: Point.cs:788
Cell cell
Definition: Point.cs:51
GrowSystem growth
Definition: Point.cs:77
static void SetSeed(int a=-1)
Definition: Rand.cs:44
SourceObj objs
static SpawnSetting Fish()
static SpawnSetting HomeGuest(int lv)
static Thing MakeSeed(string idSource)
Definition: TraitSeed.cs:105
static void LevelSeed(Thing t, SourceObj.Row obj, int num)
Definition: TraitSeed.cs:184
void GenerateMap(Zone zone)
virtual string IDPlayList
Definition: Zone.cs:148
override int ContentLv
Definition: Zone.cs:103
void SpawnAltar()
Definition: Zone.cs:2736
Playlist CreatePlaylist(ref List< int > list, Playlist mold=null)
Definition: Zone.cs:3360
virtual bool IsNefia
Definition: Zone.cs:292
BiomeProfile biome
Definition: Zone.cs:134
Chara SpawnMob(string id, Point pos=null)
Definition: Zone.cs:2988
virtual string IdBiome
Definition: Zone.cs:136
override int DangerLv
Definition: Zone.cs:115
void TrySpawnFollower()
Definition: Zone.cs:2702
void CreateBP()
Definition: Zone.cs:2545

References EClass._map, Map._plDay, EClass._zone, AddCard(), Map.AddPlant(), Map.bounds, Point.cell, Card.ChangeMaterial(), Crawler.CrawlUntil(), Crawler.Create(), ThingGen.Create(), CharaGen.Create(), EClass.curve(), DangerLv, EClass.debug, CoreDebug.enable, Card.Evalue(), SpawnSetting.Fish(), ZoneBlueprint.GenerateMap(), MapBounds.GetCenterPos(), Map.GetRandomPoint(), Point.GetRandomPointInRadius(), MapBounds.GetRandomSurface(), Point.growth, Point.HasBlock, Point.HasObj, Point.HasThing, SpawnSetting.HomeGuest(), Card.Install(), Cell.isModified, Cell.IsTopWaterAndNoSnow, Point.IsValid, TraitSeed.LevelSeed(), TraitSeed.MakeSeed(), ZoneBlueprint.map, BiomeProfile.Style.matDoor, SourceManager.objs, EClass.pc, EClass.rnd(), seed, Map.SetFloor(), Map.SetObj(), Rand.SetSeed(), GrowSystem.SetStage(), Map.SetZone(), EClass.Sound, EClass.sources, SpawnMob(), BiomeProfile.style, Spatial.uid, Point.x, and Point.z.

Referenced by Activate().

◆ GetCostSkyTravel()

int Zone.GetCostSkyTravel ( )
inline

Definition at line 3399 of file Zone.cs.

3400 {
3401 if (base.source.costSkyTravel > 0)
3402 {
3403 return base.source.costSkyTravel;
3404 }
3406 {
3407 return Mathf.Clamp(10 + EClass.curve(DangerLv, 50, 10), 1, 200);
3408 }
3409 return 0;
3410 }
bool IsSurvival
Definition: Game.cs:276

References EClass.curve(), EClass.game, and Game.IsSurvival.

Referenced by TraitSkyHelm.OnUse().

◆ GetDeepestLv() [1/2]

int Zone.GetDeepestLv ( )
inline

Definition at line 3380 of file Zone.cs.

3381 {
3382 int max = base.lv;
3383 return GetDeepestLv(ref max);
3384 }
int GetDeepestLv()
Definition: Zone.cs:3380

◆ GetDeepestLv() [2/2]

int Zone.GetDeepestLv ( ref int  max)
inline

Definition at line 3386 of file Zone.cs.

3387 {
3388 if (Mathf.Abs(base.lv) > Mathf.Abs(max))
3389 {
3390 max = base.lv;
3391 }
3392 foreach (Spatial child in children)
3393 {
3394 (child as Zone).GetDeepestLv(ref max);
3395 }
3396 return max;
3397 }

◆ GetDungenID()

virtual string Zone.GetDungenID ( )
inlinevirtual

◆ GetElectricity()

int Zone.GetElectricity ( bool  cost = false)
inline

Definition at line 3223 of file Zone.cs.

3224 {
3225 bool flag = GetSoilCost() > MaxSoil;
3226 int sum = 0;
3227 foreach (Thing thing in EClass._map.things)
3228 {
3229 if (!thing.IsInstalled || thing.trait.Electricity == 0)
3230 {
3231 continue;
3232 }
3233 if (cost)
3234 {
3235 if (thing.trait.Electricity < 0)
3236 {
3237 sum += -thing.trait.Electricity;
3238 }
3239 }
3240 else if (thing.trait.Electricity > 0)
3241 {
3242 sum += thing.trait.Electricity;
3243 }
3244 }
3245 if (!cost)
3246 {
3247 sum += elements.Value(2201) * 10 + BaseElectricity;
3248 if (!flag)
3249 {
3250 EClass._map.bounds.ForeachCell(delegate(Cell c)
3251 {
3252 if (c.sourceObj.id == 118 && c.growth.IsMature)
3253 {
3254 sum += 20;
3255 }
3256 });
3257 }
3258 }
3259 return sum;
3260 }
bool IsInstalled
Definition: Card.cs:2451
GrowSystem growth
Definition: Cell.cs:247
SourceObj.Row sourceObj
Definition: Cell.cs:1112
virtual bool IsMature
Definition: GrowSystem.cs:117
void ForeachCell(Action< Cell > action)
Definition: MapBounds.cs:279
virtual int Electricity
Definition: Trait.cs:119
virtual int BaseElectricity
Definition: Zone.cs:500
virtual int MaxSoil
Definition: Zone.cs:523
int GetSoilCost()
Definition: Zone.cs:4049

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_CurryRuin, Zone_CursedManor, Zone_Nymelle, Zone_OldKeep, and Zone_Vernis.

Definition at line 595 of file Zone.cs.

596 {
597 return base.source.id;
598 }

Referenced by TraitNewZone.CreateZone(), FindOrCreateLevel(), and ActEffect.Proc().

◆ GetOrCreateFortuneRollData()

FortuneRollData Zone.GetOrCreateFortuneRollData ( bool  refresh = true)
inline

Definition at line 4152 of file Zone.cs.

4153 {
4154 if (fortuneRoll == null)
4155 {
4157 fortuneRoll.seed = EClass._zone.uid * 100 + EClass.game.seed;
4158 }
4159 if (refresh || fortuneRoll.count == 0)
4160 {
4162 }
4163 return fortuneRoll;
4164 }
int seed
Definition: Game.cs:201
FortuneRollData fortuneRoll
Definition: Zone.cs:64

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 2505 of file Zone.cs.

2506 {
2507 string text = IdProfile;
2508 if (text.IsEmpty())
2509 {
2510 Region region = parent as Region;
2511 if (base.lv != 0)
2512 {
2513 text = ((base.lv < 0) ? "Underground" : "Sky");
2514 }
2515 else if (region != null)
2516 {
2518 text = EClass.scene.elomapActor.elomap.GetTileInfo(base.x, base.y).idZoneProfile;
2519 if (bp != null)
2520 {
2521 name = Lang.GetList("zone_" + text.Split('/')[1]).RandomItem();
2522 bp.surrounding = new EloMap.TileInfo[3, 3];
2523 for (int i = 0; i < 3; i++)
2524 {
2525 for (int j = 0; j < 3; j++)
2526 {
2527 bp.surrounding[j, i] = EClass.scene.elomapActor.elomap.GetTileInfo(base.x - 1 + j, base.y - 1 + i);
2528 }
2529 }
2530 if (text == "Random/R_Shore")
2531 {
2532 base.isBeach = true;
2533 }
2534 }
2535 }
2536 else
2537 {
2538 text = "Random";
2539 }
2540 idProfile = text;
2541 }
2542 return ZoneProfile.Load(text);
2543 }
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:286
Definition: Lang.cs:7
static string[] GetList(string id)
Definition: Lang.cs:113
string idProfile
Definition: Spatial.cs:25
EloMap.TileInfo[,] surrounding
static ZoneProfile Load(string id)
Definition: ZoneProfile.cs:73
virtual string IdProfile
Definition: Zone.cs:146
Region Region
Definition: Zone.cs:170

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 2220 of file Zone.cs.

2220 : Trait
2221 {
2222 return EClass._map.props.installed.traits.GetRandomThing<T>() as T;
2223 }

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

◆ GetRandomVisitPos()

Point Zone.GetRandomVisitPos ( Chara  c)
inline

Definition at line 1689 of file Zone.cs.

1690 {
1691 Point point = null;
1692 if (EClass.rnd(3) == 0 && map.rooms.listRoom.Count > 0)
1693 {
1694 point = map.rooms.listRoom.RandomItem().points.RandomItem();
1695 }
1696 if (point == null && EClass.rnd(4) != 0)
1697 {
1698 IEnumerable<Chara> ie = map.charas.Where((Chara t) => t.trait.ShopType != ShopType.None && t.pos != null && t.pos.IsValid);
1699 if (ie.Count() > 0)
1700 {
1701 point = ie.RandomItem().pos.GetRandomPoint(3);
1702 }
1703 }
1704 if (point == null)
1705 {
1706 point = map.bounds.GetRandomSurface(centered: false, walkable: true, !IsPCFaction && !(this is Zone_Civilized)) ?? map.bounds.GetRandomPoint();
1707 }
1708 return point.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false) ?? EClass._map.GetCenterPos().GetNearestPoint();
1709 }
ShopType
Definition: ShopType.cs:2
new TraitChara trait
Definition: Chara.cs:511
Point GetRandomPoint(int radius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=100)
Definition: Point.cs:774
virtual ShopType ShopType
Definition: Trait.cs:534

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 2110 of file Zone.cs.

2111 {
2112 return this;
2113 }

◆ GetSoilCost()

int Zone.GetSoilCost ( )
inline

Definition at line 4049 of file Zone.cs.

4050 {
4051 int n = 0;
4052 EClass._map.bounds.ForeachCell(delegate(Cell c)
4053 {
4054 n += c.sourceObj.costSoil;
4055 });
4056 return n / 10;
4057 }

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 3576 of file Zone.cs.

3577 {
3578 if (IsPCFaction)
3579 {
3580 return -10000000 + base.uid;
3581 }
3582 if (this is Zone_SubTown)
3583 {
3584 return -8000000 + base.uid;
3585 }
3586 if (this is Zone_Town)
3587 {
3588 return -9000000 + base.uid;
3589 }
3590 if (this is Zone_Civilized)
3591 {
3592 return -7000000 + base.uid;
3593 }
3594 if (this is Zone_RandomDungeon)
3595 {
3596 return 1000000 + base.uid;
3597 }
3598 return base.uid;
3599 }

Referenced by SpatialManager.ListReturnLocations().

◆ GetSpawnPos() [1/2]

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

Definition at line 1500 of file Zone.cs.

1501 {
1502 ZoneTransition zoneTransition = c.global?.transition;
1503 Zone zone = zoneTransition?.lastZone;
1504 ZoneTransition.EnterState enterState = zoneTransition?.state ?? destState;
1505 bool flag = zone == null || zone.lv > base.lv;
1506 if (IsRegion)
1507 {
1508 if (zone != null && !EClass.player.simulatingZone)
1509 {
1510 Zone topZone = zone.GetTopZone();
1511 if (GetZoneAt(topZone.x, topZone.y) != null)
1512 {
1513 return new Point(topZone.mapX, topZone.mapY);
1514 }
1515 }
1516 }
1517 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))
1518 {
1519 return EClass.player.lastZonePos;
1520 }
1521 if (enterState == ZoneTransition.EnterState.Region)
1522 {
1523 enterState = RegionEnterState;
1524 }
1525 if (this is Zone_Kapul && enterState == ZoneTransition.EnterState.Left)
1526 {
1527 enterState = ZoneTransition.EnterState.Right;
1528 }
1529 float rate = zoneTransition?.ratePos ?? (-1f);
1530 if (IsPCFaction)
1531 {
1532 if ((uint)(enterState - 3) <= 4u || enterState == ZoneTransition.EnterState.Return)
1533 {
1535 if (spot != null)
1536 {
1537 Point nearestPoint = (spot.trait as TraitSpotGuidePC).GetRandomPoint((Point p) => !p.IsBlocked && !p.Equals(spot.pos)).GetNearestPoint();
1538 if (nearestPoint != null && nearestPoint.IsValid)
1539 {
1540 return nearestPoint;
1541 }
1542 }
1543 }
1544 }
1545 while (true)
1546 {
1547 switch (enterState)
1548 {
1549 case ZoneTransition.EnterState.UndergroundOrSky:
1550 return new Point(zoneTransition.x, zoneTransition.z);
1551 case ZoneTransition.EnterState.Teleport:
1552 {
1553 foreach (Thing thing2 in map.things)
1554 {
1555 if (thing2.IsInstalled)
1556 {
1557 TraitTeleporter traitTeleporter = thing2.trait as TraitTeleporter;
1558 if (traitTeleporter != null)
1559 {
1560 Debug.Log(zoneTransition.idTele + "/" + traitTeleporter.id.IsEmpty(traitTeleporter.GetParam(3)) + "/" + traitTeleporter.GetParam(3));
1561 }
1562 if (traitTeleporter != null && !zoneTransition.idTele.IsEmpty() && zoneTransition.idTele == traitTeleporter.id.IsEmpty(traitTeleporter.GetParam(3)))
1563 {
1564 return thing2.pos.GetNearestPoint();
1565 }
1566 }
1567 }
1568 foreach (Thing thing3 in map.things)
1569 {
1570 if (thing3.IsInstalled && thing3.trait is TraitTeleporter traitTeleporter2 && traitTeleporter2.IsFor(zoneTransition.lastZone))
1571 {
1572 return thing3.pos.GetNearestPoint();
1573 }
1574 }
1575 Thing randomThing2 = EClass._map.props.installed.traits.GetRandomThing<TraitTeleporter>();
1576 if (randomThing2 != null)
1577 {
1578 return randomThing2.pos.GetNearestPoint();
1579 }
1580 goto case ZoneTransition.EnterState.Return;
1581 }
1582 case ZoneTransition.EnterState.Return:
1583 case ZoneTransition.EnterState.Elevator:
1584 case ZoneTransition.EnterState.Moongate:
1585 {
1586 if (enterState == ZoneTransition.EnterState.Elevator)
1587 {
1588 foreach (Thing thing4 in map.things)
1589 {
1590 if (thing4.IsInstalled && thing4.trait is TraitElevator traitElevator && traitElevator.IsFor(zoneTransition.lastZone))
1591 {
1592 return thing4.pos.GetNearestPoint();
1593 }
1594 }
1595 Thing randomThing = EClass._map.props.installed.traits.GetRandomThing<TraitElevator>();
1596 if (randomThing != null)
1597 {
1598 return randomThing.pos.GetNearestPoint();
1599 }
1600 }
1601 Thing thing = null;
1602 if (enterState == ZoneTransition.EnterState.Return && EClass.game.IsSurvival)
1603 {
1604 thing = map.props.installed.traits.GetRandomThing<TraitLandingPortal>();
1605 if (thing != null)
1606 {
1607 return thing.pos;
1608 }
1609 }
1610 thing = map.props.installed.traits.GetRandomThing<TraitWaystone>();
1611 if (thing != null)
1612 {
1613 return thing.pos.GetNearestPoint();
1614 }
1615 thing = map.props.installed.traits.GetRandomThing<TraitCoreZone>();
1616 if (thing != null)
1617 {
1618 return thing.pos.GetNearestPoint();
1619 }
1620 if (base.lv == 0)
1621 {
1622 goto IL_04da;
1623 }
1624 flag = base.lv <= 0;
1625 break;
1626 }
1627 case ZoneTransition.EnterState.Center:
1628 case ZoneTransition.EnterState.Encounter:
1629 if (map.config.embarkX != 0)
1630 {
1631 return new Point(map.config.embarkX, map.config.embarkY);
1632 }
1633 return map.GetCenterPos().GetNearestPoint(allowBlock: false, allowChara: false);
1634 case ZoneTransition.EnterState.Top:
1635 return map.bounds.GetTopPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1636 case ZoneTransition.EnterState.Right:
1637 return map.bounds.GetRightPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1638 case ZoneTransition.EnterState.Bottom:
1639 return map.bounds.GetBottomPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1640 case ZoneTransition.EnterState.Left:
1641 return map.bounds.GetLeftPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1642 case ZoneTransition.EnterState.Dead:
1643 case ZoneTransition.EnterState.Exact:
1644 case ZoneTransition.EnterState.PortalReturn:
1645 case ZoneTransition.EnterState.Fall:
1646 if (zoneTransition.x == 0 && EClass._map.bounds.x != 0)
1647 {
1648 return new Point(map.config.embarkX, map.config.embarkY);
1649 }
1650 return new Point(zoneTransition.x, zoneTransition.z);
1651 case ZoneTransition.EnterState.RandomVisit:
1652 return GetRandomVisitPos(c);
1653 case ZoneTransition.EnterState.Down:
1654 flag = true;
1655 break;
1656 case ZoneTransition.EnterState.Up:
1657 flag = false;
1658 break;
1659 }
1660 break;
1661 IL_04da:
1662 enterState = ZoneTransition.EnterState.Center;
1663 }
1664 foreach (Thing thing5 in map.things)
1665 {
1666 if (thing5.trait is TraitNewZone { zone: not null } traitNewZone && zone != null && traitNewZone.zone.uid == zone.uid)
1667 {
1668 if (c != null && enterState != ZoneTransition.EnterState.Auto)
1669 {
1670 c.SetDir(traitNewZone.owner.dir);
1671 }
1672 return traitNewZone.GetExitPos();
1673 }
1674 }
1675 foreach (Thing thing6 in map.things)
1676 {
1677 if (thing6.trait is TraitNewZone traitNewZone2 && ((flag && traitNewZone2.IsUpstairs) || (!flag && traitNewZone2.IsDownstairs)))
1678 {
1679 if (c != null && enterState != ZoneTransition.EnterState.Auto)
1680 {
1681 c.SetDir(traitNewZone2.owner.dir);
1682 }
1683 return traitNewZone2.GetExitPos();
1684 }
1685 }
1686 return GetRandomVisitPos(c);
1687 }
override void SetDir(int d)
Definition: Chara.cs:3785
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:86
int embarkX
Definition: MapConfig.cs:83
Point lastZonePos
Definition: Player.cs:1173
Thing Find(int uid)
Definition: Props.cs:395
int mapX
Definition: Spatial.cs:460
int lv
Definition: Spatial.cs:142
int mapY
Definition: Spatial.cs:472
virtual bool IsFor(Zone z)
string GetParam(int i, string def=null)
Definition: Trait.cs:591
EnterState state
virtual ZoneTransition.EnterState RegionEnterState
Definition: Zone.cs:180
Point GetRandomVisitPos(Chara c)
Definition: Zone.cs:1689
Zone GetZoneAt(int _x, int _y)
Definition: Zone.cs:3827

References EClass._map, Map.bounds, Map.config, Debug, MapConfig.embarkX, MapConfig.embarkY, Point.Equals(), Props.Find(), EClass.game, 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, Game.IsSurvival, Point.IsValid, ZoneTransition.lastZone, Player.lastZonePos, Spatial.lv, Spatial.mapX, Spatial.mapY, EClass.player, Card.pos, Map.props, ZoneTransition.ratePos, Chara.SetDir(), 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(), and Zone_Town.OnRegenerate().

◆ GetSpawnPos() [2/2]

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

Definition at line 2942 of file Zone.cs.

2943 {
2944 Point point = new Point();
2945 for (int i = 0; i < tries; i++)
2946 {
2947 point = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2948 if (!point.IsValid || point.cell.hasDoor || point.IsSync)
2949 {
2950 continue;
2951 }
2952 switch (type)
2953 {
2954 case SpawnPosition.Guest:
2955 {
2956 List<TraitSpotGuest> list = EClass._map.props.installed.traits.List<TraitSpotGuest>();
2957 if (list.Count > 0)
2958 {
2959 list.Shuffle();
2960 foreach (TraitSpotGuest item in list)
2961 {
2962 List<Point> list2 = item.ListPoints(null, onlyPassable: true, allowChara: false);
2963 if (list2.Count > 0)
2964 {
2965 return list2.RandomItem();
2966 }
2967 }
2968 }
2969 Room room = point.cell.room;
2970 if (room != null && room.data.accessType != BaseArea.AccessType.Public)
2971 {
2972 continue;
2973 }
2974 break;
2975 }
2976 case SpawnPosition.Outside:
2977 if (point.cell.HasRoof || point.cell.light > 0)
2978 {
2979 continue;
2980 }
2981 break;
2982 }
2983 return point;
2984 }
2985 return null;
2986 }
SpawnPosition
Definition: SpawnPosition.cs:2
BaseArea.AccessType accessType
Definition: AreaData.cs:42
AccessType
Definition: BaseArea.cs:9
Room room
Definition: Cell.cs:122
byte light
Definition: Cell.cs:80
bool HasRoof
Definition: Cell.cs:684
bool hasDoor
Definition: Cell.cs:279
bool IsSync
Definition: Point.cs:344

References EClass._map, AreaData.accessType, Map.bounds, Point.cell, BaseArea.data, MapBounds.GetRandomSurface(), Cell.hasDoor, Cell.HasRoof, PropsManager.installed, Point.IsSync, Point.IsValid, item, Cell.light, Map.props, Cell.room, and Props.traits.

◆ GetTopZone()

◆ GetZoneAt()

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

Definition at line 3827 of file Zone.cs.

3828 {
3829 if (IsRegion)
3830 {
3831 foreach (Spatial child in children)
3832 {
3833 if (!(child is Zone_Field) && _x == child.x && _y == child.y)
3834 {
3835 return child as Zone;
3836 }
3837 }
3838 }
3839 foreach (Spatial child2 in children)
3840 {
3841 if (_x == child2.x && _y == child2.y)
3842 {
3843 return child2 as Zone;
3844 }
3845 }
3846 return null;
3847 }

References Spatial.x, and Spatial.y.

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

◆ GrowPlants()

void Zone.GrowPlants ( VirtualDate  date)
inline

Definition at line 3720 of file Zone.cs.

3721 {
3722 bool num = (EClass.player.isAutoFarming = IsPCFaction && EClass.Branch.policies.IsActive(2707));
3723 int weedChance = 1;
3725 {
3726 weedChance += (EClass.debug.enable ? 100000 : 20) + EClass.Branch.Evalue(2703) * 10;
3727 }
3728 if (date.sunMap == null)
3729 {
3730 date.BuildSunMap();
3731 }
3732 if (num)
3733 {
3734 HashSet<int> hashSet = new HashSet<int>();
3735 foreach (Thing thing in EClass._map.things)
3736 {
3737 if (!thing.IsInstalled || !(thing.trait is TraitSpotFarm traitSpotFarm))
3738 {
3739 continue;
3740 }
3741 foreach (Point item in traitSpotFarm.ListPoints(null, onlyPassable: false))
3742 {
3743 hashSet.Add(item.index);
3744 }
3745 }
3746 Perform(hashSet);
3747 EClass.player.isAutoFarming = false;
3748 Perform(hashSet);
3749 }
3750 else
3751 {
3752 Perform(null);
3753 }
3754 void Perform(HashSet<int> farmMap)
3755 {
3756 bool isWinter = date.IsWinter;
3757 EClass._map.bounds.ForeachCell(delegate(Cell c)
3758 {
3759 if (farmMap != null)
3760 {
3762 {
3763 if (!farmMap.Contains(c.index))
3764 {
3765 return;
3766 }
3767 }
3768 else if (farmMap.Contains(c.index))
3769 {
3770 return;
3771 }
3772 }
3773 if (c.decal != 0 && EClass.rnd(3) == 0)
3774 {
3775 c.decal = 0;
3776 }
3777 if (GrowPlant)
3778 {
3779 if (c.growth != null)
3780 {
3781 bool flag = false;
3782 if (!EClass.player.isAutoFarming && c.growth.HaltGrowth() && (c.IsFarmField || c.IsTopWater) && (!isWinter || !date.IsRealTime))
3783 {
3784 flag = true;
3785 }
3786 PlantData plantData = map.TryGetPlant(c);
3787 if (!flag && (plantData == null || plantData.fert >= 0))
3788 {
3789 c.TryGrow(date);
3790 }
3791 if (isWinter && plantData != null && c.growth != null && c.growth.NeedSunlight && plantData.fert >= 0 && (EClass.rnd(4) == 0 || c.growth.stage.idx == 0))
3792 {
3793 if (date.sunMap == null)
3794 {
3795 date.BuildSunMap();
3796 }
3797 if (!date.sunMap.Contains(c.index) && !c.growth.CanGrow(date))
3798 {
3799 c.growth.Perish();
3800 }
3801 }
3802 }
3803 else if (c.detail != null)
3804 {
3805 c.Things.ForeachReverse(delegate(Thing t)
3806 {
3807 if (t.IsInstalled && t.trait is TraitSeed && !t.isSale)
3808 {
3809 (t.trait as TraitSeed).TrySprout(force: false, sucker: false, date);
3810 }
3811 });
3812 }
3813 else if (EClass.rnd(20) == 0 && GrowWeed && c.CanGrowWeed && EClass.rnd(weedChance) == 0)
3814 {
3815 biome.Populate(c.GetPoint());
3816 if (c.growth != null)
3817 {
3818 c.growth.SetStage(0);
3819 }
3820 }
3821 }
3822 c.isWatered = false;
3823 });
3824 }
3825 }
void Populate(Point point, bool interior=false, float mtpDensity=1f)
byte decal
Definition: Cell.cs:70
CellDetail detail
Definition: Cell.cs:112
Point GetPoint()
Definition: Cell.cs:1141
bool CanGrowWeed
Definition: Cell.cs:778
int index
Definition: Cell.cs:136
bool IsWinter
Definition: Date.cs:192
int Evalue(int ele)
PolicyManager policies
Stage stage
Definition: GrowSystem.cs:115
virtual bool NeedSunlight
Definition: GrowSystem.cs:107
bool CanGrow(VirtualDate date)
Definition: GrowSystem.cs:292
PlantData TryGetPlant(Point p)
Definition: Map.cs:2082
bool isAutoFarming
Definition: Player.cs:1254
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:356
virtual bool GrowPlant
Definition: Zone.cs:354

References EClass._map, Map.bounds, EClass.Branch, VirtualDate.BuildSunMap(), GrowSystem.CanGrow(), Cell.decal, 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().

◆ HasField()

bool Zone.HasField ( int  idEle)
inline

Definition at line 3177 of file Zone.cs.

3178 {
3179 return fieldElements.Has(idEle);
3180 }
bool Has(int ele)
ElementContainerField fieldElements
Definition: Zone.cs:49

References ElementContainer.Has().

Referenced by ActPlan._Update(), ConIncognito.OnRemoved(), ConIncognito.OnStart(), FoodEffect.Proc(), ActEffect.ProcAt(), AI_Eat.Run(), Card.SpawnLoot(), and GoalCombat.TryUseAbility().

◆ Import()

ZoneExportData Zone.Import ( string  path)
inline

Definition at line 3467 of file Zone.cs.

3468 {
3469 ZipFile zipFile = ZipFile.Read(path);
3470 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
3471 zipFile.ExtractAll(pathTemp);
3472 zipFile.Dispose();
3473 return IO.LoadFile<ZoneExportData>(pathTemp + "export") ?? new ZoneExportData();
3474 }

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

◆ ImportDialog()

void Zone.ImportDialog ( string  dir = null)
inline

Definition at line 3530 of file Zone.cs.

3531 {
3533 {
3534 string[] array = StandaloneFileBrowser.OpenFilePanel("Import Zone", dir ?? CorePath.ZoneSave, "z", multiselect: false);
3535 if (array.Length != 0)
3536 {
3537 Zone_User zone_User = SpatialGen.Create("user", EClass.world.region, register: true) as Zone_User;
3538 zone_User.path = array[0];
3539 Thing thing = ThingGen.Create("teleporter");
3540 thing.c_uidZone = zone_User.uid;
3541 EClass._zone.AddCard(thing, EClass.pc.pos);
3542 }
3543 });
3544 }
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

◆ IsImportValid()

static bool Zone.IsImportValid ( string  path)
inlinestatic

Definition at line 3546 of file Zone.cs.

3547 {
3548 try
3549 {
3550 return Map.GetMetaData(path)?.IsValidVersion() ?? false;
3551 }
3552 catch (Exception ex)
3553 {
3554 EClass.ui.Say(ex.Message);
3555 return false;
3556 }
3557 }
bool IsValidVersion()
Definition: MapMetaData.cs:31
static MapMetaData GetMetaData(string pathZip)
Definition: Map.cs:843

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

Referenced by TraitMoongate.UseMoongate().

◆ ListLandFeats()

List< Element > Zone.ListLandFeats ( )
inline

Definition at line 3412 of file Zone.cs.

3413 {
3414 if (landFeats == null)
3415 {
3416 landFeats = new List<int>();
3418 string[] listBase = IDBaseLandFeat.Split(',');
3419 string[] array = listBase;
3420 foreach (string text in array)
3421 {
3422 if (!text.IsEmpty())
3423 {
3424 landFeats.Add(EClass.sources.elements.alias[text].id);
3425 }
3426 }
3427 if (listBase.Length == 1)
3428 {
3429 List<SourceElement.Row> list = EClass.sources.elements.rows.Where(delegate(SourceElement.Row e)
3430 {
3431 if (e.category != "landfeat" || e.chance == 0)
3432 {
3433 return false;
3434 }
3435 bool flag = true;
3436 string[] tag = e.tag;
3437 foreach (string text2 in tag)
3438 {
3439 if (text2.StartsWith("bf"))
3440 {
3441 flag = false;
3442 if (listBase[0] == text2)
3443 {
3444 flag = true;
3445 break;
3446 }
3447 }
3448 }
3449 return flag ? true : false;
3450 }).ToList();
3451 SourceElement.Row row = list.RandomItemWeighted((SourceElement.Row e) => e.chance);
3452 landFeats.Add(row.id);
3453 list.Remove(row);
3454 row = list.RandomItemWeighted((SourceElement.Row e) => e.chance);
3455 landFeats.Add(row.id);
3456 }
3457 Rand.SetSeed();
3458 }
3459 List<Element> list2 = new List<Element>();
3460 foreach (int landFeat in landFeats)
3461 {
3462 list2.Add(Element.Create(landFeat, 1));
3463 }
3464 return list2;
3465 }
static Element Create(int id, int v=0)
Definition: ELEMENT.cs:1163
virtual string IDBaseLandFeat
Definition: Zone.cs:154
List< int > landFeats
Definition: Zone.cs:61

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 4023 of file Zone.cs.

4024 {
4025 List<Chara> list = new List<Chara>();
4026 foreach (Chara chara in EClass._map.charas)
4027 {
4028 if (chara.c_uidMaster == c.uid && chara.c_minionType == MinionType.Default)
4029 {
4030 list.Add(chara);
4031 }
4032 }
4033 return list;
4034 }

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

◆ ModDevelopment()

void Zone.ModDevelopment ( int  a)
inline

Definition at line 3927 of file Zone.cs.

3928 {
3929 base.development += a;
3930 if (a > 0)
3931 {
3932 Msg.Say("gainDevelopment", Name, a.ToString() ?? "");
3933 }
3934 }

References Msg.Say().

◆ ModInfluence()

void Zone.ModInfluence ( int  a)
inline

Definition at line 3917 of file Zone.cs.

3918 {
3919 base.influence += a;
3920 if (a > 0)
3921 {
3922 Msg.Say("gainInfluence", Name, a.ToString() ?? "");
3923 }
3924 Tutorial.Reserve("influence");
3925 }

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

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

◆ OnActivate()

virtual void Zone.OnActivate ( )
inlinevirtual

Reimplemented in Region, Zone_Aquli, Zone_Casino, Zone_DungeonDead, Zone_Exile, Zone_LittleGarden, Zone_LumiestRuin, Zone_Mifu, Zone_Nefu, Zone_Olvina, Zone_SisterHouse, Zone_Specwing, Zone_User, and Zone_Void.

Definition at line 1257 of file Zone.cs.

1258 {
1259 if (!(id == "startVillage2"))
1260 {
1261 return;
1262 }
1263 if (EClass._map.version.IsBelow(0, 23, 226))
1264 {
1265 SetBGM(121, refresh: false);
1266 }
1267 int num = 0;
1268 foreach (Chara chara in EClass._map.charas)
1269 {
1270 if (chara.id == "cat_silver" && !chara.IsPCFaction)
1271 {
1272 num++;
1273 }
1274 }
1275 if (num > 0)
1276 {
1277 Msg.Say("num_silvercat", num.ToString() ?? "");
1278 }
1279 }
override bool IsPCFaction
Definition: Chara.cs:691
Version version
Definition: Map.cs:31
bool IsBelow(int _major, int _minor, int _batch)
Definition: Version.cs:49

References EClass._map, Map.charas, Card.id, Version.IsBelow(), Chara.IsPCFaction, Msg.Say(), and Map.version.

◆ OnAdvanceHour()

virtual void Zone.OnAdvanceHour ( )
inlinevirtual

Reimplemented in Region.

Definition at line 1301 of file Zone.cs.

1302 {
1303 }

Referenced by GameDate.AdvanceHour().

◆ OnAfterCreate()

override void Zone.OnAfterCreate ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 624 of file Zone.cs.

625 {
626 if (AddPrefix)
627 {
628 if (GetTopZone() == this)
629 {
630 base.idPrefix = EClass.sources.zoneAffixes.rows.RandomItem().id;
631 }
632 else
633 {
634 base.idPrefix = GetTopZone().idPrefix;
635 }
636 }
637 }
SourceZoneAffix zoneAffixes
int idPrefix
Definition: Spatial.cs:130
virtual bool AddPrefix
Definition: Zone.cs:290

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

◆ OnAfterSimulate()

virtual void Zone.OnAfterSimulate ( )
inlinevirtual

Reimplemented in Zone_WindRest.

Definition at line 1297 of file Zone.cs.

1298 {
1299 }

◆ OnBeforeDeactivate()

virtual void Zone.OnBeforeDeactivate ( )
inlinevirtual

Reimplemented in Zone_Tent.

Definition at line 1281 of file Zone.cs.

1282 {
1283 }

◆ OnBeforeSimulate()

virtual void Zone.OnBeforeSimulate ( )
inlinevirtual

Reimplemented in Zone_DungeonPuppy, and Zone_Nymelle.

Definition at line 1289 of file Zone.cs.

1290 {
1291 }

◆ OnChildNumChange()

void Zone.OnChildNumChange ( Card  c)
inline

Implements ICardParent.

Definition at line 2106 of file Zone.cs.

2107 {
2108 }

◆ OnCreate()

override void Zone.OnCreate ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 618 of file Zone.cs.

619 {
620 events.zone = this;
621 base.lv = StartLV;
622 }
virtual int StartLV
Definition: Zone.cs:416

References StartLV.

◆ OnCreateBP()

virtual void Zone.OnCreateBP ( )
inlinevirtual

Reimplemented in Zone_Arena2, and Zone_Harvest.

Definition at line 2553 of file Zone.cs.

2554 {
2555 }

◆ OnDeactivate()

virtual void Zone.OnDeactivate ( )
inlinevirtual

Definition at line 1285 of file Zone.cs.

1286 {
1287 }

◆ OnGenerateMap()

virtual void Zone.OnGenerateMap ( )
inlinevirtual

Reimplemented in Zone_Arena2, Zone_CurryRuinDungeon, Zone_CursedManor, Zone_CursedManorDungeon, Zone_Dungeon, Zone_DungeonDead, Zone_DungeonFairy, Zone_DungeonMino, Zone_DungeonPuppy, Zone_Field, Zone_Harvest, Zone_OldKeepDungeon, Zone_RandomDungeon, Zone_RandomDungeonFactory, Zone_SnowGrave, Zone_StartSite, Zone_TestRoom, Zone_UnderseaTemple, Zone_VernisMine, Zone_Void, and Zone_WindRest.

Definition at line 2775 of file Zone.cs.

2776 {
2778 {
2779 foreach (Chara chara in EClass._map.charas)
2780 {
2781 if (!chara.IsGlobal && chara.hostility < Hostility.Neutral && chara.OriginalHostility < Hostility.Friend)
2782 {
2783 Hostility hostility = (chara.c_originalHostility = Hostility.Neutral);
2784 chara.hostility = hostility;
2785 }
2786 }
2787 }
2788 if (PrespawnRate != 0f && !IsSkyLevel)
2789 {
2790 for (int i = 0; i < (int)((float)MaxSpawn * PrespawnRate); i++)
2791 {
2792 SpawnMob();
2793 }
2794 }
2799 }
Hostility
Definition: Hostility.cs:2
Hostility OriginalHostility
Definition: Chara.cs:477
Hostility hostility
Definition: Chara.cs:297
virtual float PrespawnRate
Definition: Zone.cs:334
virtual int MaxSpawn
Definition: Zone.cs:320
virtual bool IsSkyLevel
Definition: Zone.cs:274
Chara TryGenerateEvolved(bool force=false, Point p=null)
Definition: Zone.cs:2828
void TryGenerateShrine()
Definition: Zone.cs:2885
void TryGenerateOre()
Definition: Zone.cs:2801
virtual bool MakeEnemiesNeutral
Definition: Zone.cs:241
void TryGenerateBigDaddy()
Definition: Zone.cs:2848

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 2938 of file Zone.cs.

2939 {
2940 }

Referenced by MapGenDungen.OnGenerateTerrain().

◆ OnInspect()

void Zone.OnInspect ( )
inline

Implements IInspect.

Definition at line 3572 of file Zone.cs.

3573 {
3574 }

◆ OnKillGame()

void Zone.OnKillGame ( )
inline

Definition at line 1863 of file Zone.cs.

1864 {
1865 foreach (Thing thing in map.things)
1866 {
1867 if (thing.renderer.hasActor)
1868 {
1869 thing.renderer.KillActor();
1870 }
1871 }
1872 }
void KillActor()
CardRenderer renderer
Definition: Card.cs:64

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 2056 of file Zone.cs.

2057 {
2058 if (branch != null)
2059 {
2060 branch.SetOwner(this);
2061 }
2062 events.OnLoad(this);
2063 }
void SetOwner(Zone zone)
void OnLoad(Zone _zone)

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

◆ OnRegenerate()

virtual void Zone.OnRegenerate ( )
inlinevirtual

Reimplemented in Zone_LittleGarden, and Zone_Town.

Definition at line 1253 of file Zone.cs.

1254 {
1255 }

◆ OnSimulateDay()

void Zone.OnSimulateDay ( VirtualDate  date)
inline

Definition at line 3685 of file Zone.cs.

3686 {
3687 if (base.IsPlayerFaction)
3688 {
3689 branch.OnSimulateDay(date);
3690 }
3691 }
void OnSimulateDay(VirtualDate date)

References FactionBranch.OnSimulateDay().

Referenced by VirtualDate.SimulateDay().

◆ OnSimulateHour()

void Zone.OnSimulateHour ( VirtualDate  date)
inline

Definition at line 3630 of file Zone.cs.

3631 {
3632 if (base.IsPlayerFaction)
3633 {
3634 branch.OnSimulateHour(date);
3635 }
3637 if (date.IsRealTime)
3638 {
3639 foreach (Thing thing in EClass._map.things)
3640 {
3641 if (thing.IsInstalled)
3642 {
3643 thing.trait.TryToggle();
3644 }
3645 }
3647 }
3648 EClass._map.things.ForeachReverse(delegate(Thing t)
3649 {
3650 t.OnSimulateHour(date);
3651 });
3652 foreach (Thing sucker in Suckers)
3653 {
3654 sucker.Destroy();
3655 }
3656 Suckers.Clear();
3657 if (RespawnRate != 0f)
3658 {
3659 int num = 0;
3660 foreach (Chara chara in map.charas)
3661 {
3662 if (!chara.IsGlobal)
3663 {
3664 num++;
3665 }
3666 }
3667 if (num < MaxRespawn)
3668 {
3669 for (int num2 = 0; num2 < RespawnPerHour; num2++)
3670 {
3671 SpawnMob();
3672 }
3673 }
3674 }
3675 if (!date.IsRealTime && EClass.rnd(24) == 0)
3676 {
3677 RainWater();
3678 }
3679 if (date.hour == 6)
3680 {
3681 GrowPlants(date);
3682 }
3683 }
virtual void OnSimulateHour(VirtualDate date)
Definition: Card.cs:7077
void DecayNatural(int hour=1)
Definition: Card.cs:7086
int hour
Definition: Date.cs:74
void OnSimulateHour(VirtualDate date)
virtual void TryToggle()
Definition: Trait.cs:1339
bool IsRealTime
Definition: VirtualDate.cs:7
virtual int RespawnPerHour
Definition: Zone.cs:350
virtual float RespawnRate
Definition: Zone.cs:336
static List< Thing > Suckers
Definition: Zone.cs:86
void GrowPlants(VirtualDate date)
Definition: Zone.cs:3720
int MaxRespawn
Definition: Zone.cs:322

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 3693 of file Zone.cs.

3694 {
3695 if (base.IsPlayerFaction)
3696 {
3697 branch.OnSimulateMonth(date);
3698 }
3699 if (date.IsRealTime)
3700 {
3702 }
3703 }
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 1147 of file Zone.cs.

1148 {
1149 if (EClass.world.date.IsExpired(base.dateRevive))
1150 {
1152 Revive();
1153 List<Chara> list = new List<Chara>();
1154 foreach (Chara chara in EClass._map.charas)
1155 {
1156 chara.TryRestock(onCreate: false);
1157 if (!chara.IsPCFaction)
1158 {
1159 chara.c_fur = 0;
1160 }
1161 if (chara.IsMinion && chara.master != null && !chara.master.IsPCParty)
1162 {
1163 list.Add(chara);
1164 }
1165 }
1166 foreach (Chara item in list)
1167 {
1168 item.Destroy();
1169 }
1170 }
1171 if (!EClass.game.isLoading)
1172 {
1174 }
1177 events.OnVisit();
1178 OnActivate();
1179 UpdateQuests();
1181 isSimulating = true;
1182 try
1183 {
1184 Simulate();
1185 }
1186 catch (Exception exception)
1187 {
1188 Debug.LogException(exception);
1189 }
1190 finally
1191 {
1192 isSimulating = false;
1193 }
1196 base.lastActive = EClass.world.date.GetRaw();
1197 if (!EClass.game.isLoading)
1198 {
1199 base.visitCount++;
1200 }
1201 base.version = EClass.core.version.GetInt();
1202 if (HasField(10000))
1203 {
1204 Tutorial.Reserve("field");
1205 }
1206 }
Version version
Definition: BaseCore.cs:17
void TryRestock(bool onCreate)
Definition: Chara.cs:4987
void OnAfterSimulate()
void AssignCharas()
Definition: RoomManager.cs:39
void Revive()
Definition: Zone.cs:1219
void RefreshDeathSentense()
Definition: Zone.cs:1208
void Simulate()
Definition: Zone.cs:1305
virtual void OnAfterSimulate()
Definition: Zone.cs:1297
void RefreshCriminal()
Definition: Zone.cs:3858
bool HasField(int idEle)
Definition: Zone.cs:3177
virtual void OnBeforeSimulate()
Definition: Zone.cs:1289
virtual void OnActivate()
Definition: Zone.cs:1257
void ResetHostility()
Definition: Zone.cs:2922
void UpdateQuests(bool force=false)
Definition: Zone.cs:3936
int GetInt()
Definition: Version.cs:39

References EClass._map, RoomManager.AssignCharas(), EClass.Branch, Map.charas, EClass.core, World.date, Debug, EClass.game, Version.GetInt(), Date.GetRaw(), Date.IsExpired(), Game.isLoading, Chara.IsMinion, Chara.IsPCFaction, Chara.IsPCParty, item, Chara.master, FactionBranch.OnAfterSimulate(), ZoneEventManager.OnVisit(), Tutorial.Reserve(), Revive, Map.rooms, Chara.TryRestock(), BaseCore.version, and EClass.world.

◆ OnVisitNewMapOrRegenerate()

virtual void Zone.OnVisitNewMapOrRegenerate ( )
inlinevirtual

Reimplemented in Zone_Aquli, and Zone_Yowyn.

Definition at line 1293 of file Zone.cs.

1294 {
1295 }

◆ ParseZoneFullName()

static string string int zoneLv Zone.ParseZoneFullName ( string  zoneFullName)
inlinestatic

Definition at line 555 of file Zone.cs.

556 {
557 int item = 0;
558 zoneFullName = zoneFullName.Replace('/', '@');
559 int num = zoneFullName.LastIndexOf('@');
560 string text;
561 if (num > 0 && num < zoneFullName.Length - 1)
562 {
563 text = zoneFullName[..num];
564 item = zoneFullName[(num + 1)..].ToInt();
565 }
566 else
567 {
568 text = zoneFullName.Replace("@", "");
569 }
570 string text2 = text.Replace("Zone_", "");
571 text = "Zone_" + text2;
572 return (zoneType: text, zoneId: text2, zoneLv: item);
573 }
static string zoneType
Definition: Zone.cs:555
static string string zoneId
Definition: Zone.cs:555

References item, zoneId, and zoneType.

◆ RainWater()

void Zone.RainWater ( )
inline

Definition at line 3705 of file Zone.cs.

3706 {
3708 {
3709 return;
3710 }
3711 EClass._map.bounds.ForeachCell(delegate(Cell c)
3712 {
3713 if (c.IsFarmField && !c.HasRoof)
3714 {
3715 c.isWatered = true;
3716 }
3717 });
3718 }
bool IsFarmField
Definition: Cell.cs:766
bool IsIndoor
Definition: Map.cs:136

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 3320 of file Zone.cs.

3321 {
3323 {
3324 return;
3325 }
3327 Playlist playlist = map.plDay;
3328 foreach (ZoneEvent item in events.list)
3329 {
3330 if (item.playlist != null)
3331 {
3332 playlist = item.playlist;
3333 }
3334 }
3335 if (IDPlaylistOverwrite != null)
3336 {
3337 playlist = EClass.Sound.GetPlaylist(IDPlaylistOverwrite);
3338 }
3340 {
3341 Room room = EClass.pc.pos.cell.room;
3342 if (room != null && room.lot != null && room.lot.idBGM != 0)
3343 {
3344 playlist = EClass.Sound.plLot;
3345 if (playlist.list[0].data?.id != room.lot.idBGM)
3346 {
3347 playlist.list[0].data = EClass.core.refs.dictBGM.TryGetValue(room.lot.idBGM);
3348 playlist.Reset();
3349 if (!LayerDrama.keepBGM)
3350 {
3351 EClass.Sound.StopBGM(1f);
3352 }
3353 }
3354 }
3355 }
3357 EClass.Sound.SwitchPlaylist(playlist, !LayerDrama.keepBGM);
3358 }
bool IsInActiveZone
Definition: Chara.cs:887
void SetBGMInterval()
Definition: CoreConfig.cs:1039
Dictionary< int, BGMData > dictBGM
Definition: CoreRef.cs:388
CoreRef refs
Definition: Core.cs:51
static bool keepBGM
Definition: LayerDrama.cs:10
int idBGM
Definition: Lot.cs:16
Playlist plDay
Definition: Map.cs:80
Lot lot
Definition: Room.cs:21
List< ZoneEvent > list
virtual string IDPlaylistOverwrite
Definition: Zone.cs:150

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.OnInit(), LayerEditPlaylist.OnKill(), ZoneEventSiege.OnKill(), and ZoneEventSiege.OnVisit().

◆ RefreshCriminal()

void Zone.RefreshCriminal ( )
inline

Definition at line 3858 of file Zone.cs.

3859 {
3860 bool flag = EClass.player.IsCriminal && HasLaw && !AllowCriminal && !IsPCFaction;
3861 Hostility hostility = (flag ? Hostility.Neutral : Hostility.Friend);
3862 foreach (Chara chara in EClass._map.charas)
3863 {
3864 if (chara.trait is TraitGuard)
3865 {
3866 chara.hostility = hostility;
3867 if (!flag && chara.enemy != null && chara.enemy.IsPCParty)
3868 {
3869 chara.SetEnemy();
3870 }
3871 }
3872 }
3873 }
Chara enemy
Definition: Chara.cs:88
Chara SetEnemy(Chara c=null)
Definition: Chara.cs:6714
virtual bool AllowCriminal
Definition: Zone.cs:254

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

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

◆ RefreshDeathSentense()

void Zone.RefreshDeathSentense ( )
inline

Definition at line 1208 of file Zone.cs.

1209 {
1210 foreach (Chara chara in EClass._map.charas)
1211 {
1212 if (chara.HasCondition<ConDeathSentense>())
1213 {
1214 chara.GetCondition<ConDeathSentense>().TryRemove();
1215 }
1216 }
1217 }
BaseCondition GetCondition(string idCon)
Definition: Chara.cs:10105
bool HasCondition(string alias)
Definition: Chara.cs:10049

References EClass._map, Map.charas, Chara.GetCondition(), and Chara.HasCondition().

Referenced by Chara.Die().

◆ RefreshElectricity()

void Zone.RefreshElectricity ( )
inline

Definition at line 3192 of file Zone.cs.

3193 {
3194 dirtyElectricity = false;
3195 bool flag = GetSoilCost() > MaxSoil;
3196 base.electricity = elements.Value(2201) * 10 + BaseElectricity;
3197 foreach (Thing thing in EClass._map.things)
3198 {
3199 if (thing.IsInstalled && thing.trait.Electricity != 0 && (thing.isOn || thing.trait.Electricity > 0))
3200 {
3201 base.electricity += thing.trait.Electricity;
3202 }
3203 }
3204 if (!flag)
3205 {
3206 EClass._map.bounds.ForeachCell(delegate(Cell c)
3207 {
3208 if (c.sourceObj.id == 118 && c.growth.IsMature)
3209 {
3210 base.electricity += 20;
3211 }
3212 });
3213 }
3214 foreach (Thing thing2 in EClass._map.things)
3215 {
3216 if (thing2.IsInstalled)
3217 {
3218 thing2.trait.TryToggle();
3219 }
3220 }
3221 }
bool isOn
Definition: Card.cs:545
bool dirtyElectricity
Definition: Zone.cs:74

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 1137 of file Zone.cs.

1138 {
1139 if (idHat != null && EClass.world.date.IsExpired(base.dateHat))
1140 {
1141 idHat = null;
1142 base.dateHat = 0;
1143 }
1144 sourceHat = ((idHat != null) ? EClass.sources.cards.map[idHat] : ((IDHat != null) ? EClass.sources.cards.map[IDHat] : null));
1145 }
Dictionary< string, CardRow > map
Definition: SourceCard.cs:9
SourceCard cards
string idHat
Definition: Spatial.cs:31
virtual string IDHat
Definition: Zone.cs:152
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 3875 of file Zone.cs.

3876 {
3877 if (base.lv != 0)
3878 {
3879 return;
3880 }
3881 dictCitizen.Clear();
3882 foreach (Chara item in map.charas.Concat(map.deadCharas))
3883 {
3884 if (item.trait.IsCitizen && !item.IsGlobal && !item.isSubsetCard)
3885 {
3886 dictCitizen[item.uid] = item.Name;
3887 }
3888 }
3889 }
Dictionary< int, string > dictCitizen
Definition: Zone.cs:55

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

Referenced by Chara.MakeAlly().

◆ RefreshPlaylist()

void Zone.RefreshPlaylist ( )
inline

Definition at line 3304 of file Zone.cs.

3305 {
3306 if (map.plDay == null)
3307 {
3308 map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList));
3309 }
3310 }

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 2199 of file Zone.cs.

2200 {
2201 if (IsActiveZone)
2202 {
2204 }
2205 t.parent = null;
2206 if (t.isChara)
2207 {
2208 t.Chara.currentZone = null;
2209 }
2210 if (t.isThing && !t.trait.IDActorEx.IsEmpty())
2211 {
2213 }
2214 if (t.renderer.hasActor)
2215 {
2217 }
2218 }
override void OnLeaveScreen()
virtual bool isChara
Definition: Card.cs:2135
void OnCardRemovedFromZone(Card t)
Definition: Map.cs:930
void RemoveActorEx(Card c)
Definition: Scene.cs:1034
virtual string IDActorEx
Definition: Trait.cs:187

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().

◆ RemoveFieldEffect()

void Zone.RemoveFieldEffect ( int  idEle)
inline

Definition at line 3187 of file Zone.cs.

3188 {
3189 fieldElements.Remove(idEle);
3190 }
void Remove(int id)

References ElementContainer.Remove().

Referenced by GameDate.AdvanceMin().

◆ ResetHostility()

void Zone.ResetHostility ( )
inline

Definition at line 2922 of file Zone.cs.

2923 {
2924 foreach (Chara chara in EClass._map.charas)
2925 {
2926 if (!chara.source.hostility.IsEmpty() && chara.source.hostility.ToEnum<Hostility>() >= Hostility.Friend && !chara.IsPCFactionOrMinion && !chara.isSummon && (EClass._zone is Zone_Civilized || EClass._zone.IsPCFactionOrTent))
2927 {
2928 chara.c_originalHostility = (Hostility)0;
2929 }
2930 chara.hostility = chara.OriginalHostility;
2931 if (chara.enemy != null && (chara.enemy.IsPCFaction || chara.IsPCFaction) && !chara.IsHostile(chara.enemy))
2932 {
2933 chara.SetEnemy();
2934 }
2935 }
2936 }
bool IsPCFactionOrMinion
Definition: Card.cs:2342
bool isSummon
Definition: Card.cs:713
SourceChara.Row source
Definition: Chara.cs:164
bool IsPCFactionOrTent
Definition: Zone.cs:483

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

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

◆ ResetPlaylist()

void Zone.ResetPlaylist ( )
inline

Definition at line 3312 of file Zone.cs.

3313 {
3314 map._plDay.Clear();
3315 UnityEngine.Object.DestroyImmediate(map.plDay);
3316 map.plDay = null;
3318 }

References Map._plDay, and Map.plDay.

◆ Revive()

void Zone.Revive ( )
inline

Definition at line 1219 of file Zone.cs.

1220 {
1221 base.dateRevive = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRevive;
1222 if (ShouldAutoRevive)
1223 {
1224 foreach (Chara deadChara in map.deadCharas)
1225 {
1226 if (deadChara.trait.CanAutoRevive && deadChara.CanRevive())
1227 {
1228 deadChara.Revive();
1230 {
1231 deadChara.RemoveBacker();
1232 }
1233 EClass._zone.AddCard(deadChara, (deadChara.orgPos != null && deadChara.orgPos.IsInBounds) ? deadChara.orgPos : deadChara.pos);
1234 }
1235 }
1236 }
1237 foreach (Chara value in EClass.game.cards.globalCharas.Values)
1238 {
1239 if (value.isDead && value.CanRevive() && value.homeZone == this)
1240 {
1241 value.Revive();
1242 Point point = GetSpawnPos(value);
1243 if (value.orgPos != null && value.orgPos.IsInBounds)
1244 {
1245 point = value.orgPos.GetNearestPoint() ?? point;
1246 }
1247 EClass._zone.AddCard(value, point);
1248 }
1249 }
1250 map.deadCharas.Clear();
1251 }
int c_idBacker
Definition: Card.cs:1477
bool CanRevive()
Definition: Chara.cs:5473
void Revive(Point p=null, bool msg=false)
Definition: Chara.cs:5499
Zone homeZone
Definition: Chara.cs:273
bool IsInBounds
Definition: Point.cs:104
virtual bool CanAutoRevive
Definition: TraitChara.cs:21
virtual bool ShouldAutoRevive
Definition: Zone.cs:387

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().

◆ SetAlarm()

virtual void Zone.SetAlarm ( bool  enable)
inlinevirtual

Reimplemented in Zone_CurryRuinDungeon, and Zone_OldKeepDungeon.

Definition at line 3891 of file Zone.cs.

3892 {
3893 base.isAlarmSet = enable;
3894 if (enable)
3895 {
3896 foreach (Chara chara in EClass._map.charas)
3897 {
3898 if (!chara.IsPCFactionOrMinion)
3899 {
3900 chara.SetHostility(Hostility.Enemy);
3901 }
3902 }
3903 Msg.Say("alarm");
3904 Msg.Say("alarm2");
3905 SE.Play("alarm");
3906 return;
3907 }
3908 foreach (Chara chara2 in EClass._map.charas)
3909 {
3910 if (!chara2.IsPCFactionOrMinion)
3911 {
3912 chara2.SetHostility(Hostility.Neutral);
3913 }
3914 }
3915 }
Chara SetHostility(Hostility h)
Definition: Chara.cs:1507

References EClass._map, Map.charas, Card.IsPCFactionOrMinion, Msg.Say(), and Chara.SetHostility().

Referenced by Point.CallGuard(), and GoalCombat.Run().

◆ SetBGM() [1/2]

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

Definition at line 3299 of file Zone.cs.

3300 {
3301 SetBGM(new List<int> { id }, refresh, fadeDuration);
3302 }

◆ SetBGM() [2/2]

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

Definition at line 3262 of file Zone.cs.

3263 {
3264 map._plDay.Clear();
3265 if (ids.Count > 0)
3266 {
3267 foreach (int id in ids)
3268 {
3269 if (id != -1)
3270 {
3271 map._plDay.Add(id);
3272 }
3273 }
3274 }
3275 UnityEngine.Object.DestroyImmediate(map.plDay);
3276 map.plDay = null;
3278 if (!refresh)
3279 {
3280 return;
3281 }
3282 if (fadeDuration > 0f)
3283 {
3284 EClass.Sound.StopBGM(fadeDuration, playLastBGM: false, delegate
3285 {
3287 {
3288 RefreshBGM();
3289 }
3290 });
3291 }
3292 else
3293 {
3294 EClass.Sound.StopBGM();
3295 RefreshBGM();
3296 }
3297 }
bool IsGameStarted
Definition: Core.cs:87

References Map._plDay, Game.activeZone, EClass.core, EClass.game, Core.IsGameStarted, Map.plDay, and EClass.Sound.

Referenced by ZoneEventSubdue.CheckClear(), ClaimZone(), ZonePreEnterBout.Execute(), Zone_DungeonDead.OnActivate(), Zone_Nefu.OnActivate(), ZoneEventDefenseGame.OnVisit(), ZoneEventHarvest.OnVisit(), ZoneEventSubdue.OnVisit(), DramaManager.ParseLine(), GoalCombat.Run(), Zone_CurryRuinDungeon.SetAlarm(), Zone_OldKeepDungeon.SetAlarm(), CardRenderer.ShowBossText(), ActThrow.Throw(), and Chara.TryDropBossLoot().

◆ SetFieldEffect()

void Zone.SetFieldEffect ( int  idEle,
int  a,
int  duration = 0 
)
inline

Definition at line 3182 of file Zone.cs.

3183 {
3184 fieldElements.SetBase(idEle, a, duration);
3185 }
Element SetBase(string alias, int v, int potential=0)

References ElementContainer.SetBase().

Referenced by Zone_DungeonDead.OnActivate(), ConIncognito.OnStart(), and ZoneEventWedding.OnVisit().

◆ ShouldScaleImportedChara()

virtual bool Zone.ShouldScaleImportedChara ( Chara  c)
inlinevirtual

Reimplemented in Zone_QuestDungeon.

Definition at line 590 of file Zone.cs.

591 {
592 return false;
593 }

Referenced by SerializedCards.Restore().

◆ Simulate()

void Zone.Simulate ( )
inline

Definition at line 1305 of file Zone.cs.

1306 {
1307 if (!EClass.game.isLoading && base.visitCount > 0)
1308 {
1309 if (Boss != null && IsNefia)
1310 {
1311 Msg.Say("bossLeave", Boss.Name.ToTitleCase(), EClass._zone.Name);
1314 }
1315 int num = Mathf.Clamp(MinsSinceLastActive, 1, 10000);
1316 foreach (Chara chara2 in EClass._map.charas)
1317 {
1318 if (chara2.hp < 0)
1319 {
1320 chara2.hp = 0;
1321 }
1322 if (!chara2.IsPCParty)
1323 {
1324 if (chara2.mana.value < 0)
1325 {
1326 chara2.mana.value = 0;
1327 }
1328 if (chara2.stamina.value < 0)
1329 {
1330 chara2.stamina.value = 0;
1331 }
1332 }
1333 if (num > 60)
1334 {
1335 chara2.resistCon = null;
1336 }
1337 if (chara2.rarity >= Rarity.Legendary && !chara2.IsPCFaction && num > 0)
1338 {
1339 Msg.ignoreAll = true;
1340 chara2.Cure(CureType.Boss, 20 + num * 10);
1341 chara2.HealHP((int)((long)Mathf.Max(1, chara2.MaxHP) * (long)Mathf.Min(num, 20) / 20));
1342 chara2.mana.Mod(Mathf.Max(1, chara2.mana.max) * Mathf.Min(num, 20) / 20);
1343 chara2.stamina.Mod(Mathf.Max(1, chara2.stamina.max) * Mathf.Min(num, 20) / 20);
1344 Msg.ignoreAll = false;
1345 }
1346 }
1347 }
1348 Debug.Log("Last Active:" + base.lastActive);
1349 if (base.lastActive == 0 || IsRegion)
1350 {
1351 return;
1352 }
1353 if (pendingSimHours < 0)
1354 {
1355 pendingSimHours = 0;
1356 }
1357 int num2 = GetInt(3);
1358 if (num2 == 0)
1359 {
1361 }
1362 int maxSleepSimHours = EClass.core.config.test.maxSleepSimHours;
1363 int hourSinceLastActive = HourSinceLastActive;
1364 if (hourSinceLastActive <= 1 && pendingSimHours == 0)
1365 {
1366 return;
1367 }
1368 int num3 = hourSinceLastActive + pendingSimHours;
1369 int num4 = ((num2 > 0 && num3 > num2) ? (num3 - num2) : 0);
1370 num3 -= num4;
1371 int num5 = ((EClass.player.simulatingZone && num3 > maxSleepSimHours) ? maxSleepSimHours : num3);
1372 pendingSimHours = num3 - num5;
1373 Debug.Log($"{Name} Simulate/{num5}/{pendingSimHours}/skipped {num4}");
1374 try
1375 {
1376 VirtualDate virtualDate = new VirtualDate(num3);
1377 List<Chara> list = EClass._map.charas.ToList();
1378 int passed = num5 + num4;
1379 int num6 = passed / 24;
1380 if (num6 > 0)
1381 {
1382 foreach (Chara item in list)
1383 {
1384 if (!item.IsPCParty)
1385 {
1386 item.OnSleep(200, num6);
1387 if (item.conSleep != null)
1388 {
1389 item.conSleep.Kill();
1390 }
1391 if (EClass.rnd(EClass.world.date.IsNight ? 20 : 200) == 0 && !item.IsPCFaction && !item.IsGuest())
1392 {
1393 item.AddCondition<ConSleep>(1000 + EClass.rnd(1000), force: true);
1394 }
1395 if (item.things.Count > 20)
1396 {
1397 item.ClearInventory(ClearInventoryType.Purge);
1398 }
1399 }
1400 }
1401 }
1402 VirtualDate.current = virtualDate;
1403 int num7 = 0;
1404 for (int i = 0; i < num5; i++)
1405 {
1406 try
1407 {
1408 virtualDate.SimulateHour();
1409 }
1410 catch (Exception exception)
1411 {
1412 if (num7++ == 0)
1413 {
1414 Debug.LogException(exception);
1415 }
1416 }
1417 }
1418 EClass._map.things.ForeachReverse(delegate(Thing t)
1419 {
1420 t.DecayNatural(passed);
1421 });
1422 VirtualDate.current = null;
1423 if (!IsPCFaction)
1424 {
1425 return;
1426 }
1427 int num8 = 0;
1428 foreach (Chara item2 in list)
1429 {
1430 if (item2.IsPCParty)
1431 {
1432 continue;
1433 }
1434 if (!item2.IsHomeMember())
1435 {
1436 if (item2.id == "bee")
1437 {
1438 num8++;
1439 }
1440 if (num6 > 0 && item2.IsGuest())
1441 {
1442 item2.ChooseNewGoal();
1443 item2.ai.SimulateZone(num6);
1444 item2.ai.OnSimulatePosition();
1445 }
1446 continue;
1447 }
1448 if (num6 > 0)
1449 {
1450 Goal goalWork = item2.GetGoalWork();
1451 item2.SetAI(goalWork);
1452 if (goalWork is GoalWork)
1453 {
1454 (goalWork as GoalWork).FindWork(item2);
1455 }
1456 item2.ai.SimulateZone(num6);
1457 goalWork = item2.GetGoalHobby();
1458 item2.SetAI(goalWork);
1459 if (goalWork is GoalWork)
1460 {
1461 (goalWork as GoalWork).FindWork(item2);
1462 }
1463 item2.ai.SimulateZone(num6);
1464 }
1465 item2.ChooseNewGoal();
1466 if (item2.conSuspend == null)
1467 {
1468 item2.ai.OnSimulatePosition();
1469 }
1470 }
1471 List<Thing> list2 = new List<Thing>();
1472 foreach (Thing thing in map.things)
1473 {
1474 if (thing.IsInstalled && thing.trait is TraitBeekeep)
1475 {
1476 list2.Add(thing);
1477 }
1478 }
1479 if (num8 >= list2.Count)
1480 {
1481 return;
1482 }
1483 for (int num9 = num8; num9 < list2.Count; num9++)
1484 {
1485 if (EClass.rnd(200) <= passed)
1486 {
1487 Chara chara = CharaGen.Create("bee");
1488 AddCard(chara, list2.RandomItem().pos);
1489 Hostility c_originalHostility = (chara.hostility = Hostility.Neutral);
1490 chara.c_originalHostility = c_originalHostility;
1491 }
1492 }
1493 }
1494 finally
1495 {
1496 VirtualDate.current = null;
1497 }
1498 }
ClearInventoryType
CureType
Definition: CureType.cs:2
virtual void OnSimulatePosition()
Definition: AIAct.cs:604
void SimulateZone(int days)
Definition: AIAct.cs:592
int hp
Definition: Card.cs:245
string Name
Definition: Card.cs:2191
virtual void HealHP(long a, HealSource origin=HealSource.None)
Definition: Card.cs:4188
AIAct ai
Definition: Chara.cs:208
ConSuspend conSuspend
Definition: Chara.cs:106
Goal GetGoalWork()
Definition: Chara.cs:9427
override int MaxHP
Definition: Chara.cs:728
Goal GetGoalHobby()
Definition: Chara.cs:9440
Stats mana
Definition: Chara.cs:1215
Stats stamina
Definition: Chara.cs:1207
bool IsHomeMember()
Definition: Chara.cs:7014
bool IsGuest()
Definition: Chara.cs:7039
void ChooseNewGoal()
Definition: Chara.cs:9363
void Cure(CureType type, int p=100, BlessedState state=BlessedState.Normal)
Definition: Chara.cs:10154
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:130
int pendingSimHours
Definition: Zone.cs:37
Chara Boss
Definition: Zone.cs:91
int HourSinceLastActive
Definition: Zone.cs:128

References $, EClass._map, EClass._zone, Chara.ai, Boss, Map.charas, Chara.ChooseNewGoal(), Core.config, Chara.conSuspend, EClass.core, 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, CoreConfig.Test.maxSimHours, CoreConfig.Test.maxSleepSimHours, Stats.Mod(), Spatial.Name, AIAct.OnSimulatePosition(), Card.pos, Card.rarity, RemoveCard(), EClass.rnd(), Msg.Say(), Chara.SetAI(), VirtualDate.SimulateHour(), AIAct.SimulateZone(), Chara.stamina, CoreConfig.test, Map.things, Card.trait, Stats.value, and EClass.world.

◆ SpawnAltar()

void Zone.SpawnAltar ( )
inline

Definition at line 2736 of file Zone.cs.

2737 {
2739 {
2740 if (r.points.Count <= 4)
2741 {
2742 return false;
2743 }
2744 map.poiMap.OccyupyPOI(r.points[0]);
2745 List<Point> points = r.points;
2746 Religion randomReligion = EClass.game.religions.GetRandomReligion();
2747 "altarPoint".lang(randomReligion.NameDomain.lang());
2748 Thing thing = ThingGen.Create("altar");
2749 (thing.trait as TraitAltar).SetDeity(randomReligion.id);
2750 Chara t = CharaGen.Create("twintail");
2751 EClass._zone.AddCard(t, points.RandomItem());
2752 for (int i = 0; i < 2 + EClass.rnd(2); i++)
2753 {
2754 Chara t2 = CharaGen.Create("twintail");
2755 EClass._zone.AddCard(t2, points.RandomItem());
2756 }
2757 if (points[0].Installed == null)
2758 {
2759 EClass._zone.AddCard(thing, points[0]).Install();
2760 }
2761 foreach (Point item in points)
2762 {
2763 if (item.x % 3 == 0 && item.z % 2 == 0 && item != points[0] && !item.Equals(points[0].Front) && item.Installed == null)
2764 {
2765 thing = ThingGen.Create("pillar1");
2766 EClass._zone.AddCard(thing, item).Install();
2767 }
2768 item.SetObj();
2769 item.SetFloor(3, 6);
2770 }
2771 return true;
2772 });
2773 }
mods...$ Installed
Definition: ModManager.cs:988
Crawler start
Definition: CoreRef.cs:217
Crawlers crawlers
Definition: CoreRef.cs:346
ReligionManager religions
Definition: Game.cs:159
POIMap poiMap
Definition: Map.cs:100
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(), Installed, 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 4059 of file Zone.cs.

4060 {
4061 for (int i = 0; i < 2 + EClass.rnd(4); i++)
4062 {
4063 Point point = GetPos();
4064 if (point == null)
4065 {
4066 continue;
4067 }
4068 if (EClass.rnd(30) == 0)
4069 {
4070 Thing thing = ThingGen.Create("purse");
4071 thing.isLostProperty = true;
4072 thing.things.DestroyAll();
4073 int num = (thing.c_lockLv = EClass.rndHalf(Mathf.Min(base.development / 10 + 10, 50)));
4074 thing.Add("money", EClass.rndHalf(num * 60 + 1000));
4075 if (EClass.rnd(2) == 0)
4076 {
4077 thing.Add("plat", EClass.rnd(4));
4078 }
4079 else
4080 {
4081 thing.Add("medal", EClass.rnd(2));
4082 }
4083 EClass._zone.AddCard(thing, point);
4084 }
4085 else
4086 {
4088 }
4089 }
4090 static Point GetPos()
4091 {
4092 for (int j = 0; j < 10; j++)
4093 {
4094 Point randomPoint = EClass._zone.bounds.GetRandomPoint();
4095 if (!randomPoint.IsBlocked && !randomPoint.HasThing && !randomPoint.HasObj && !randomPoint.HasBlock)
4096 {
4097 return randomPoint;
4098 }
4099 }
4100 return null;
4101 }
4102 }
Thing Add(string id, int num=1, int lv=1)
Definition: Card.cs:3257
static int rndHalf(int a)
Definition: EClass.cs:97
void DestroyAll(Func< Thing, bool > funcExclude=null)
static Thing CreateFromCategory(string idCat, int lv=-1)
Definition: ThingGen.cs:75
MapBounds bounds
Definition: Zone.cs:52

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() [1/2]

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

Definition at line 2996 of file Zone.cs.

2997 {
2998 if (setting == null)
2999 {
3001 }
3002 if (pos == null)
3003 {
3004 pos = GetSpawnPos(setting.position, setting.tries);
3005 if (pos == null)
3006 {
3007 pos = GetSpawnPos(SpawnPosition.Random, setting.tries);
3008 if (pos == null)
3009 {
3010 return null;
3011 }
3012 }
3013 }
3015 if (IsUnderwater && EClass.rnd(15) != 0)
3016 {
3018 }
3019 SpawnList spawnList = null;
3020 if (setting.idSpawnList != null)
3021 {
3022 spawnList = SpawnList.Get(setting.idSpawnList);
3023 }
3024 else if (EClass._zone is Zone_DungeonYeek && EClass.rnd(5) != 0)
3025 {
3026 spawnList = SpawnListChara.Get("dungeon_yeek", (SourceChara.Row r) => r.race == "yeek" && r.quality == 0);
3027 }
3028 else if (EClass._zone is Zone_DungeonDragon && EClass.rnd(5) != 0)
3029 {
3030 spawnList = SpawnListChara.Get("dungeon_dragon", (SourceChara.Row r) => (r.race == "dragon" || r.race == "drake" || r.race == "wyvern" || r.race == "lizardman" || r.race == "dinosaur") && r.quality == 0);
3031 }
3032 else if (EClass._zone is Zone_DungeonMino && EClass.rnd(5) != 0)
3033 {
3034 spawnList = SpawnListChara.Get("dungeon_mino", (SourceChara.Row r) => r.race == "minotaur" && r.quality == 0);
3035 }
3036 else if (setting.hostility == SpawnHostility.Neutral || (setting.hostility != SpawnHostility.Enemy && Rand.Range(0f, 1f) < ChanceSpawnNeutral))
3037 {
3038 spawnList = SpawnList.Get(IsInstance ? "c_neutral_war" : "c_neutral");
3039 }
3040 else if (biome.spawn.chara.Count > 0)
3041 {
3042 string randomCharaId = biome.spawn.GetRandomCharaId();
3043 spawnList = ((!IsInstance) ? SpawnList.Get(randomCharaId) : SpawnList.Get("instance_" + randomCharaId, randomCharaId, new CharaFilter
3044 {
3045 ShouldPass = (SourceChara.Row s) => (!(s.hostility != "") || (!s.tag.Contains("cat") && !s.race_row.tag.Contains("cat"))) ? true : false
3046 }));
3047 }
3048 else
3049 {
3050 spawnList = SpawnList.Get(biome.name, "chara", new CharaFilter
3051 {
3052 ShouldPass = delegate(SourceChara.Row s)
3053 {
3054 if (s.hostility != "")
3055 {
3056 return false;
3057 }
3058 return s.biome == biome.name || s.biome.IsEmpty();
3059 }
3060 });
3061 }
3062 int num = ((setting.dangerLv == -1) ? DangerLv : setting.dangerLv);
3063 CardBlueprint cardBlueprint = new CardBlueprint
3064 {
3065 rarity = Rarity.Normal,
3066 idEle = setting.idEle
3067 };
3068 int num2 = ((setting.filterLv == -1) ? num : setting.filterLv);
3069 if (ScaleType == ZoneScaleType.Void)
3070 {
3071 num2 = ((num - 1) % 50 + 5) * 150 / 100;
3072 if (num2 >= 20 && EClass.rnd(100) < num2)
3073 {
3074 num2 = num;
3075 }
3076 }
3077 CardRow cardRow = (setting.id.IsEmpty() ? spawnList.Select(num2, setting.levelRange) : EClass.sources.cards.map[setting.id]);
3078 if (EClass.world.date.month == 12 && setting.rarity == Rarity.Random && EClass._zone.IsNefia && EClass._zone.isRandomSite && EClass.world.date.day >= 24 && EClass.world.date.day <= 26 && EClass.rnd(50 * (1 + EClass.player.flags.santa) * (1 + EClass.player.flags.santa)) == 0)
3079 {
3080 cardRow = EClass.sources.cards.map["santa"];
3082 }
3083 if (cardRow == null)
3084 {
3085 Debug.LogError("SpawnMob: no spawn row list/" + spawnList?.id + "/biome/" + biome.name + "/zone/" + Name);
3086 return null;
3087 }
3088 long num3 = ((setting.fixedLv == -1) ? cardRow.LV : setting.fixedLv);
3089 bool flag = setting.fixedLv != -1 || setting.addLv > 0 || DangerLvBoost > 0;
3090 num3 += setting.addLv;
3091 if (ScaleType == ZoneScaleType.Void)
3092 {
3093 num3 = (50L + (long)cardRow.LV) * Mathf.Max(1, (num - 1) / 50);
3094 flag = true;
3095 }
3096 num3 += DangerLvBoost;
3097 if (flag && num3 <= Mathf.Max(50, cardRow.LV))
3098 {
3099 flag = false;
3100 }
3101 if (setting.rarity == Rarity.Random && cardRow.quality == 0)
3102 {
3103 if (EClass.rnd(EClass.pc.HasElement(1271) ? 80 : 100) == 0)
3104 {
3105 cardBlueprint.rarity = Rarity.Legendary;
3106 num3 = num3 * 125 / 100;
3107 }
3108 }
3109 else
3110 {
3111 cardBlueprint.rarity = setting.rarity;
3112 }
3113 if (setting.isBoss)
3114 {
3115 num3 = num3 * 150 / 100;
3116 }
3117 if (setting.isEvolved)
3118 {
3119 num3 = num3 * 2 + 20;
3120 }
3121 if (num3 != cardRow.LV)
3122 {
3123 cardBlueprint.lv = (int)Mathf.Min(num3, 100000000f);
3124 }
3125 CardBlueprint.Set(cardBlueprint);
3126 Chara chara = CharaGen.Create(cardRow.id, num2);
3127 if (!flag)
3128 {
3129 chara.isScaled = false;
3130 }
3131 AddCard(chara, pos);
3132 if (setting.forcedHostility.HasValue)
3133 {
3134 Hostility c_originalHostility = (chara.hostility = setting.forcedHostility.Value);
3135 chara.c_originalHostility = c_originalHostility;
3136 }
3137 else
3138 {
3139 switch (chara.id)
3140 {
3141 case "unicorn":
3142 if (EClass.pc.HasElement(1216) && EClass.pc.Evalue(418) < 1)
3143 {
3144 chara.SetHostility(Hostility.Enemy);
3145 }
3146 break;
3147 case "santa":
3148 case "silverwolf":
3149 case "twintail":
3150 case "test17":
3151 if (EClass.pc.HasElement(1270))
3152 {
3153 chara.SetHostility(Hostility.Friend);
3154 }
3155 else if (EClass.pc.HasElement(1271))
3156 {
3157 chara.SetHostility(Hostility.Enemy);
3158 }
3159 break;
3160 }
3161 }
3162 if (setting.isBoss)
3163 {
3164 chara.c_bossType = BossType.Boss;
3165 }
3166 if (setting.isEvolved)
3167 {
3168 chara.c_bossType = BossType.Evolved;
3169 }
3170 if (DangerLv >= 20 && !IsPCFaction && !IsTown && EClass.rnd(200) == 0)
3171 {
3173 }
3174 return chara;
3175 }
BossType
Definition: BossType.cs:2
SpawnHostility
ZoneScaleType
Definition: ZoneScaleType.cs:2
List< SpawnListChara > chara
string GetRandomCharaId()
static void Set(CardBlueprint _bp=null)
int quality
Definition: CardRow.cs:19
string id
Definition: CardRow.cs:7
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6383
BiomeProfile biome
Definition: Cell.cs:1115
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:9877
BiomeProfile Water
Definition: CoreRef.cs:155
BiomeProfile Sand
Definition: CoreRef.cs:153
Biomes biomes
Definition: CoreRef.cs:344
int month
Definition: Date.cs:50
int day
Definition: Date.cs:62
int santa
Definition: Player.cs:604
Flags flags
Definition: Player.cs:1164
static int Range(int min, int max)
Definition: Rand.cs:49
int LV
Definition: RenderRow.cs:22
bool isRandomSite
Definition: Spatial.cs:334
virtual int DangerLvBoost
Definition: Spatial.cs:489
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:33
virtual ZoneScaleType ScaleType
Definition: Zone.cs:418
virtual float ChanceSpawnNeutral
Definition: Zone.cs:352

References EClass._zone, CoreRef.biomes, BiomeProfile.Spawns.chara, EClass.core, SpawnSetting.Default, SpawnListChara.Get(), SpawnList.Get(), BiomeProfile.Spawns.GetRandomCharaId(), Rand.Range(), Core.refs, EClass.rnd(), CoreRef.Biomes.Sand, BiomeProfile.spawn, and CoreRef.Biomes.Water.

◆ SpawnMob() [2/2]

◆ TextLevel()

string Zone.TextLevel ( int  _lv)
inline

Definition at line 605 of file Zone.cs.

606 {
607 if (_lv != 0)
608 {
609 if (base.lv <= 0)
610 {
611 return " " + "zoneLevelB".lang((_lv * -1).ToString() ?? "");
612 }
613 return " " + "zoneLevel".lang((_lv + 1).ToString() ?? "");
614 }
615 return "";
616 }
override string ToString()
Definition: Zone.cs:600

References ToString().

◆ ToString()

override string Zone.ToString ( )
inline

Definition at line 600 of file Zone.cs.

601 {
602 return Name + "(" + base.uid + ")(" + RegionPos?.ToString() + ") instance?" + IsInstance + "/" + EClass.world.date.GetRemainingHours(base.dateExpire) + "h";
603 }
int GetRemainingHours(int rawDeadLine)
Definition: Date.cs:343
override string ToString()
Definition: Point.cs:524
virtual Point RegionPos
Definition: Spatial.cs:560

References World.date, Date.GetRemainingHours(), IsInstance, Spatial.Name, Spatial.RegionPos, 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 2416 of file Zone.cs.

2417 {
2418 int num = 0;
2419 if (p.cell.detail != null)
2420 {
2421 foreach (Thing thing in p.cell.detail.things)
2422 {
2423 if (thing.placeState == PlaceState.roaming)
2424 {
2425 if (target.TryStackTo(thing))
2426 {
2427 return true;
2428 }
2429 num++;
2430 }
2431 }
2432 }
2433 if (num == 0 || !destroyIfFail)
2434 {
2435 EClass._zone.AddCard(target, p);
2436 return true;
2437 }
2438 target.Destroy();
2439 return false;
2440 }
bool TryStackTo(Thing to)
Definition: Card.cs:3578
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 Card.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 2316 of file Zone.cs.

2317 {
2318 Thing thing = FindSharedContainer(t, containers, sharedOnly);
2319 if (thing == null)
2320 {
2321 return false;
2322 }
2323 if (add)
2324 {
2325 if (msg)
2326 {
2327 chara?.Say("putSharedItem", chara, t, thing.GetName(NameStyle.Full));
2328 }
2329 thing.AddThing(t);
2330 }
2331 return true;
2332 }
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:3280
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7324
Thing FindSharedContainer(Thing t, List< Thing > containers=null, bool sharedOnly=true)
Definition: Zone.cs:2334

References Card.AddThing(), Thing.GetName(), and Card.Say().

Referenced by 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 2225 of file Zone.cs.

2225 : Trait
2226 {
2227 Thing randomThing = EClass._map.props.installed.traits.GetRandomThing<T>();
2228 if (randomThing == null)
2229 {
2231 {
2233 }
2234 else
2235 {
2237 }
2238 return false;
2239 }
2240 if (useContainer && (!t.IsContainer || t.things.Count == 0))
2241 {
2242 List<Thing> list = new List<Thing>();
2243 foreach (Point item in randomThing.trait.ListPoints(null, onlyPassable: false))
2244 {
2245 foreach (Card item2 in item.ListCards())
2246 {
2247 if (item2.IsContainer && !(item2.trait is TraitDeliveryChest))
2248 {
2249 list.Add(item2.Thing);
2250 }
2251 }
2252 }
2253 if (TryAddThingInSharedContainer(t, list, add: true, msg: false, null, sharedOnly: false))
2254 {
2255 return true;
2256 }
2257 }
2259 {
2260 TryAddThing(t, randomThing.trait.GetRandomPoint());
2261 }
2262 else
2263 {
2264 AddCard(t, randomThing.trait.GetRandomPoint());
2265 }
2266 return true;
2267 }
virtual Thing Thing
Definition: Card.cs:2110
bool IsContainer
Definition: Card.cs:2141
Point GetRandomPoint(Func< Point, bool > func=null, Chara accessChara=null)
Definition: Trait.cs:850
virtual List< Point > ListPoints(Point center=null, bool onlyPassable=true, bool allowChara=true)
Definition: Trait.cs:868
static bool IsActive
Definition: VirtualDate.cs:13
bool TryAddThingInSharedContainer(Thing t, List< Thing > containers=null, bool add=true, bool msg=false, Chara chara=null, bool sharedOnly=true)
Definition: Zone.cs:2316
bool TryAddThing(Thing target, Point p, bool destroyIfFail=false)
Definition: Zone.cs:2416

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

◆ TryGenerateBigDaddy()

void Zone.TryGenerateBigDaddy ( )
inline

Definition at line 2848 of file Zone.cs.

2849 {
2850 if (!(BigDaddyChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f) <= EClass.rndf(1f)))
2851 {
2852 Point spawnPos = GetSpawnPos(SpawnPosition.Random, 10000);
2853 List<string> list = new List<string> { "big_daddy", "big_daddy2" };
2854 list.Shuffle();
2855 Spawn(list[0], spawnPos);
2856 if (EClass.rnd(EClass.debug.enable ? 2 : 20) == 0)
2857 {
2858 Spawn(list[1], spawnPos.GetNearestPoint(allowBlock: false, allowChara: false));
2859 }
2860 Msg.Say("sign_bigdaddy");
2861 }
2862 void Spawn(string id, Point pos)
2863 {
2864 int num = (int)((long)DangerLv * 125L / 100);
2865 if (num >= 30)
2866 {
2868 {
2869 lv = num
2870 });
2871 }
2872 Chara chara = CharaGen.Create(id);
2873 if (EClass.pc.HasElement(1270))
2874 {
2875 chara.SetHostility(Hostility.Friend);
2876 }
2877 else if (EClass.pc.HasElement(1271))
2878 {
2879 chara.SetHostility(Hostility.Enemy);
2880 }
2881 EClass._zone.AddCard(chara, pos);
2882 }
2883 }
static float rndf(float a)
Definition: EClass.cs:102
virtual float BigDaddyChance
Definition: Zone.cs:328

References EClass._zone, AddCard(), CharaGen.Create(), EClass.debug, CoreDebug.enable, Point.GetNearestPoint(), Card.HasElement(), EClass.pc, EClass.rnd(), EClass.rndf(), Msg.Say(), CardBlueprint.Set(), and Chara.SetHostility().

Referenced by Zone_Dungeon.OnGenerateMap().

◆ TryGenerateEvolved()

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

Definition at line 2828 of file Zone.cs.

2829 {
2830 float num = EvolvedChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f);
2831 if (!force && num <= EClass.rndf(1f))
2832 {
2833 return null;
2834 }
2835 Chara chara = SpawnMob(p, SpawnSetting.Evolved());
2836 for (int i = 0; i < 2 + EClass.rnd(2); i++)
2837 {
2838 chara.ability.AddRandom();
2839 }
2840 chara.AddThing(chara.MakeGene(DNA.Type.Default));
2841 if (EClass.rnd(2) == 0)
2842 {
2843 chara.AddThing(chara.MakeGene(DNA.Type.Superior));
2844 }
2845 return chara;
2846 }
void AddRandom()
Thing MakeGene(DNA.Type? type=null)
Definition: Chara.cs:8720
CharaAbility ability
Definition: Chara.cs:430
Definition: DNA.cs:9
Type
Definition: DNA.cs:11
static SpawnSetting Evolved(int fixedLv=-1)
Definition: SpawnSetting.cs:37
virtual float EvolvedChance
Definition: Zone.cs:330

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

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

◆ TryGenerateOre()

void Zone.TryGenerateOre ( )
inline

Definition at line 2801 of file Zone.cs.

2802 {
2803 if (OreChance <= 0f)
2804 {
2805 return;
2806 }
2807 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)
2808 {
2809 int num = 18;
2810 string text = "ore";
2811 if (EClass.rnd(5) == 0)
2812 {
2813 num++;
2814 text = "gem";
2815 }
2816 SourceMaterial.Row randomMaterial = MATERIAL.GetRandomMaterial(DangerLv, text);
2817 foreach (Point point in r.points)
2818 {
2819 if (point.sourceBlock.ContainsTag("ore"))
2820 {
2821 map.SetObj(point.x, point.z, randomMaterial.id, num, 1, 0);
2822 }
2823 }
2824 return false;
2825 });
2826 }
static SourceMaterial.Row GetRandomMaterial(int lv, string group=null, bool tryLevelMatTier=false)
Definition: MATERIAL.cs:56
int Width
Definition: MapBounds.cs:26
int Height
Definition: MapBounds.cs:28
virtual float OreChance
Definition: Zone.cs:326

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 2885 of file Zone.cs.

2886 {
2887 float num = ShrineChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f);
2888 for (int i = 0; i < 3; i++)
2889 {
2890 Rand.SetSeed(base.uid + i);
2891 if (num <= EClass.rndf(1f))
2892 {
2893 continue;
2894 }
2895 Point randomSpace = EClass._map.GetRandomSpace(3, 3);
2896 if (randomSpace == null)
2897 {
2898 continue;
2899 }
2900 randomSpace.x++;
2901 randomSpace.z++;
2902 if (randomSpace.HasThing || randomSpace.HasChara)
2903 {
2904 continue;
2905 }
2906 randomSpace.SetObj();
2909 if (EClass.rnd(EClass.debug.test ? 2 : 15) == 0)
2910 {
2911 EClass._zone.AddCard(ThingGen.Create("pedestal_power"), randomSpace).Install();
2912 EClass._zone.AddCard(ThingGen.Create(EClass.gamedata.godStatues.RandomItemWeighted((GodStatueData a) => a.chance).idThing, -1, DangerLv), randomSpace).Install();
2913 }
2914 else
2915 {
2916 EClass._zone.AddCard(ThingGen.Create("statue_power", -1, DangerLv), randomSpace).Install().SetRandomDir();
2917 }
2918 }
2919 Rand.SetSeed();
2920 }
void SetRandomDir()
Definition: Card.cs:6707
bool test
Definition: CoreDebug.cs:186
static GameData gamedata
Definition: EClass.cs:37
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:1008
void SetObj(int id=0, int value=1, int dir=0)
Definition: Point.cs:934
virtual float ShrineChance
Definition: Zone.cs:332

References EClass._map, EClass._zone, AddCard(), GodStatueData.chance, ThingGen.Create(), EClass.debug, EClass.gamedata, MapBounds.GetRandomSpace(), GameData.godStatues, Point.HasChara, Card.HasElement(), Point.HasThing, EClass.pc, 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 2458 of file Zone.cs.

2458 : TraitSpot
2459 {
2460 List<T> list = new List<T>();
2461 foreach (Thing thing2 in EClass._map.things)
2462 {
2463 if (thing2.IsInstalled && thing2.trait is T)
2464 {
2465 list.Add(thing2.trait as T);
2466 }
2467 }
2468 foreach (T item in list)
2469 {
2470 foreach (Point item2 in item.ListPoints(null, onlyPassable: false))
2471 {
2472 foreach (Thing thing3 in item2.Things)
2473 {
2474 if (!thing3.IsInstalled || thing3.isSale)
2475 {
2476 continue;
2477 }
2478 if (thing3.things.Count == 0)
2479 {
2480 if (IsValid(thing3, insideContainer: false))
2481 {
2482 return thing3;
2483 }
2484 continue;
2485 }
2486 Thing thing = thing3.things.Find((Thing _t) => IsValid(_t, insideContainer: true));
2487 if (thing != null)
2488 {
2489 return thing;
2490 }
2491 }
2492 }
2493 }
2494 return null;
2495 bool IsValid(Thing t, bool insideContainer)
2496 {
2497 if (t.category.id != idCat || !TraitSalesTag.CanTagSale(t, insideContainer))
2498 {
2499 return false;
2500 }
2501 return true;
2502 }
2503 }
bool isSale
Definition: Card.cs:869
List< Thing > Things
Definition: Point.cs:338
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 2442 of file Zone.cs.

2443 {
2444 foreach (Thing container in EClass._map.props.installed.containers)
2445 {
2446 if (container.IsSharedContainer)
2447 {
2448 Thing thing = container.things.Find(func);
2449 if (thing != null)
2450 {
2451 return thing;
2452 }
2453 }
2454 }
2455 return null;
2456 }

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 2269 of file Zone.cs.

2269 : TraitSpot
2270 {
2271 List<T> list = new List<T>();
2272 List<Thing> list2 = new List<Thing>();
2273 foreach (Thing thing in EClass._map.things)
2274 {
2275 if (thing.IsInstalled && thing.trait is T)
2276 {
2277 list.Add(thing.trait as T);
2278 }
2279 }
2280 foreach (T item in list)
2281 {
2282 foreach (Point item2 in item.ListPoints(null, onlyPassable: false))
2283 {
2284 foreach (Thing thing2 in item2.Things)
2285 {
2286 if (!thing2.IsInstalled)
2287 {
2288 continue;
2289 }
2290 if (thing2.things.Count == 0)
2291 {
2292 if (IsValid(thing2))
2293 {
2294 list2.Add(thing2);
2295 }
2296 continue;
2297 }
2298 foreach (Thing item3 in thing2.things.List((Thing _t) => IsValid(_t)))
2299 {
2300 list2.Add(item3);
2301 }
2302 }
2303 }
2304 }
2305 return list2;
2306 bool IsValid(Thing t)
2307 {
2308 if (func != null && !func(t))
2309 {
2310 return false;
2311 }
2312 return true;
2313 }
2314 }
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 2702 of file Zone.cs.

2703 {
2704 bool flag = EClass.pc.HasCondition<ConDrawBacker>();
2705 if (!EClass.debug.enable && EClass.rnd(flag ? 3 : 20) != 0)
2706 {
2707 return;
2708 }
2709 Point randomSurface = EClass._map.bounds.GetRandomSurface();
2710 if (!randomSurface.IsValid)
2711 {
2712 return;
2713 }
2714 Chara c = CharaGen.Create("follower");
2715 EClass._zone.AddCard(c, randomSurface);
2716 (EClass._zone.AddThing("gallows", randomSurface).Install().trait as TraitShackle).Restrain(c);
2717 c.c_rescueState = RescueState.WaitingForRescue;
2718 if (EClass.rnd(flag ? 1 : 2) == 0 || EClass.debug.enable)
2719 {
2721 if (row != null)
2722 {
2723 c.ApplyBacker(row.id);
2724 }
2725 }
2726 Religion faith = EClass.game.religions.dictAll.Values.Where((Religion a) => a != c.faith).RandomItem();
2727 for (int num = 0; num < 3 + EClass.rnd(4); num++)
2728 {
2729 Chara chara = CharaGen.Create("fanatic");
2730 chara.SetFaith(faith);
2731 Point point = randomSurface.GetRandomPoint(4) ?? randomSurface.GetNearestPoint();
2732 EClass._zone.AddCard(chara, point);
2733 }
2734 }
RescueState
Definition: RescueState.cs:2
static int indexFollower
Religion faith
Definition: Chara.cs:445
void SetFaith(string id)
Definition: Chara.cs:1786
Dictionary< string, Religion > dictAll
List< Row > listFollower

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 1874 of file Zone.cs.

1875 {
1876 map = null;
1877 if (bp != null)
1878 {
1879 bp.map = null;
1880 }
1881 if (branch != null)
1882 {
1884 }
1885 Debug.Log("Unloaded Map:" + this);
1886 }
void OnUnloadMap()

References Debug, and FactionBranch.OnUnloadMap().

Referenced by Activate().

◆ UpdateQuests()

void Zone.UpdateQuests ( bool  force = false)
inline

Definition at line 3936 of file Zone.cs.

3937 {
3938 if (!IsPCFaction && (!(this is Zone_Town) || base.lv != 0))
3939 {
3940 return;
3941 }
3942 Debug.Log("Updating Quest:" + force);
3943 List<SourceQuest.Row> list = EClass.sources.quests.rows.Where((SourceQuest.Row a) => a.group == "random").ToList();
3944 int num = 0;
3945 foreach (Chara item in map.charas.Concat(map.deadCharas))
3946 {
3947 if (item.quest != null && !EClass.game.quests.list.Contains(item.quest))
3948 {
3949 if (item.quest.IsExpired || completedQuests.Contains(item.quest.uid) || force)
3950 {
3951 item.quest = null;
3952 }
3953 else
3954 {
3955 num++;
3956 }
3957 }
3958 }
3959 if (EClass._zone.dateQuest > EClass.world.date.GetRaw() && !force)
3960 {
3961 return;
3962 }
3963 EClass._zone.dateQuest = EClass.world.date.GetRaw() + 1440;
3964 int maxQuest = 3;
3965 Rand.UseSeed(base.uid + EClass.player.stats.days / 7 % 100, delegate
3966 {
3967 maxQuest = 4 + EClass.rnd(4);
3968 });
3969 completedQuests.Clear();
3970 List<Zone> list2 = Quest.ListDeliver();
3971 List<Tuple<string, int>> listTag = new List<Tuple<string, int>>();
3972 string[] array = EClass._zone.source.questTag;
3974 {
3975 array = new string[9] { "supply/8", "deliver/7", "food/8", "escort/4", "deliver/4", "monster/0", "war/0", "farm/0", "music/0" };
3976 }
3977 string[] array2 = array;
3978 for (int num2 = 0; num2 < array2.Length; num2++)
3979 {
3980 string[] array3 = array2[num2].Split('/');
3981 listTag.Add(new Tuple<string, int>(array3[0], array3[1].ToInt()));
3982 }
3983 for (int num3 = 0; num3 < map.charas.Count * 2; num3++)
3984 {
3985 if (num > maxQuest)
3986 {
3987 break;
3988 }
3989 if (num > 15)
3990 {
3991 break;
3992 }
3993 Chara chara = map.charas.RandomItem();
3994 if (!chara.trait.CanGiveRandomQuest || chara.isSubsetCard || chara.homeZone != EClass._zone || chara.IsGuest() || chara.memberType == FactionMemberType.Livestock || (chara.quest != null && !force))
3995 {
3996 continue;
3997 }
3998 SourceQuest.Row row = list.RandomItemWeighted(delegate(SourceQuest.Row a)
3999 {
4000 int num4 = 1;
4001 foreach (Tuple<string, int> item2 in listTag)
4002 {
4003 if (a.tags.Contains(item2.Item1))
4004 {
4005 num4 = item2.Item2;
4006 break;
4007 }
4008 }
4009 if (!EClass._zone.IsPCFaction && a.tags.Contains("bulk"))
4010 {
4011 num4 = 0;
4012 }
4013 return a.chance * num4;
4014 });
4015 if ((!row.tags.Contains("needDestZone") || list2.Count >= 2) && (row.minFame <= 0 || row.minFame < EClass.player.fame || EClass.debug.enable))
4016 {
4017 Quest.Create(row.id, null, chara);
4018 num++;
4019 }
4020 }
4021 }
QuestManager quests
Definition: Game.cs:183
int days
Definition: Player.cs:75
Stats stats
Definition: Player.cs:1086
int fame
Definition: Player.cs:948
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, bool assignQuest=true)
Definition: Quest.cs:241
static void UseSeed(int seed, Action action)
Definition: Rand.cs:24
SourceQuest quests
string[] tags
Definition: SourceQuest.cs:23
int dateQuest
Definition: Spatial.cs:286
SourceZone.Row source
Definition: Spatial.cs:453
virtual bool CanGiveRandomQuest
Definition: TraitChara.cs:123
HashSet< int > completedQuests
Definition: Zone.cs:40

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 3568 of file Zone.cs.

3569 {
3570 }

Member Data Documentation

◆ _biome

BiomeProfile Zone._biome

Definition at line 82 of file Zone.cs.

◆ bounds

◆ bp

ZoneBlueprint Zone.bp

Definition at line 70 of file Zone.cs.

Referenced by Activate().

◆ branch

◆ completedQuests

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

Definition at line 40 of file Zone.cs.

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

◆ dictCitizen

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

Definition at line 55 of file Zone.cs.

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

◆ dirtyElectricity

bool Zone.dirtyElectricity

Definition at line 74 of file Zone.cs.

Referenced by Scene.OnUpdate().

◆ elements

◆ events

◆ fieldElements

ElementContainerField Zone.fieldElements = new ElementContainerField()

Definition at line 49 of file Zone.cs.

Referenced by WidgetDate._Refresh(), and GameDate.AdvanceMin().

◆ fileVariation

int Zone.fileVariation

Definition at line 72 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 64 of file Zone.cs.

◆ ignoreSpawnAnime

bool Zone.ignoreSpawnAnime
static

Definition at line 84 of file Zone.cs.

◆ instance

◆ isSimulating

bool Zone.isSimulating

Definition at line 78 of file Zone.cs.

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

◆ isStarted

◆ landFeats

List<int> Zone.landFeats

Definition at line 61 of file Zone.cs.

◆ map

◆ okaerinko

int Zone.okaerinko = 0
static

Definition at line 31 of file Zone.cs.

Referenced by AI_Idle.Run().

◆ pendingSimHours

int Zone.pendingSimHours

Definition at line 37 of file Zone.cs.

Referenced by Player.SimulateFaction().

◆ sourceHat

CardRow Zone.sourceHat
static

Definition at line 29 of file Zone.cs.

Referenced by CharaRenderer.Draw().

◆ subset

MapSubset Zone.subset

Definition at line 68 of file Zone.cs.

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

◆ Suckers

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

Definition at line 86 of file Zone.cs.

Referenced by TraitSeed.TrySprout().

◆ tempDist

int Zone.tempDist

Definition at line 80 of file Zone.cs.

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

◆ zoneId

string string Zone.zoneId
static

Definition at line 555 of file Zone.cs.

Referenced by ParseZoneFullName().

◆ zoneType

string Zone.zoneType
static

Definition at line 555 of file Zone.cs.

Referenced by ParseZoneFullName().

Property Documentation

◆ AddPrefix

virtual bool Zone.AddPrefix
get

Definition at line 290 of file Zone.cs.

Referenced by OnAfterCreate().

◆ AllowCriminal

virtual bool Zone.AllowCriminal
get

Definition at line 254 of file Zone.cs.

◆ AllowInvest

virtual bool Zone.AllowInvest
get

Definition at line 256 of file Zone.cs.

257 {
258 get
259 {
260 if (!IsTown && !IsPCFaction)
261 {
262 return Guild.GetCurrentGuild() != null;
263 }
264 return true;
265 }
266 }

◆ AllowNewZone

virtual bool Zone.AllowNewZone
get

Definition at line 268 of file Zone.cs.

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

◆ AlwaysLowblock

virtual bool Zone.AlwaysLowblock
get

Definition at line 402 of file Zone.cs.

Referenced by BaseTileMap.Draw().

◆ BaseElectricity

virtual int Zone.BaseElectricity
get

Definition at line 500 of file Zone.cs.

◆ BigDaddyChance

virtual float Zone.BigDaddyChance
get

Definition at line 328 of file Zone.cs.

◆ biome

◆ BlockBorderExit

virtual bool Zone.BlockBorderExit
get

Definition at line 176 of file Zone.cs.

Referenced by Player.CanExitBorder().

◆ Boss

Chara Zone.Boss
getset

Definition at line 90 of file Zone.cs.

91 {
92 get
93 {
94 return EClass._map.FindChara(base.uidBoss);
95 }
96 set
97 {
98 base.uidBoss = value?.uid ?? 0;
99 }
100 }
Chara FindChara(string id)
Definition: Map.cs:2754

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

◆ CanBeDeliverDestination

virtual bool Zone.CanBeDeliverDestination
get

Definition at line 232 of file Zone.cs.

Referenced by Quest.ListDeliver().

◆ CanDigUnderground

virtual bool Zone.CanDigUnderground
get

Definition at line 280 of file Zone.cs.

Referenced by TaskMine.GetHitResult().

◆ CanEnterBuildMode

bool Zone.CanEnterBuildMode
get

Definition at line 452 of file Zone.cs.

453 {
454 get
455 {
457 {
458 return base.mainFaction == EClass.pc.faction;
459 }
460 return true;
461 }
462 }
bool godBuild
Definition: CoreDebug.cs:320
bool ignoreBuildRule
Definition: CoreDebug.cs:201

◆ CanEnterBuildModeAnywhere

bool Zone.CanEnterBuildModeAnywhere
get

Definition at line 464 of file Zone.cs.

465 {
466 get
467 {
469 {
470 if (base.mainFaction == EClass.pc.faction)
471 {
472 return EClass.Branch.elements.Has(4003);
473 }
474 return false;
475 }
476 return true;
477 }
478 }
ElementContainerZone elements

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

◆ CanInspect

bool Zone.CanInspect
get

Implements IInspect.

Definition at line 504 of file Zone.cs.

505 {
506 get
507 {
508 if (!IsInstance)
509 {
510 return !HiddenInRegionMap;
511 }
512 return false;
513 }
514 }
virtual bool HiddenInRegionMap
Definition: Zone.cs:420

◆ CanUnlockExit

virtual bool Zone.CanUnlockExit
get

Definition at line 284 of file Zone.cs.

Referenced by TraitStairsLocked.OnUse(), and CoreDebug.UpdateInput().

◆ ChanceSpawnNeutral

virtual float Zone.ChanceSpawnNeutral
get

Definition at line 352 of file Zone.cs.

◆ ContentLv

override int Zone.ContentLv
get

Definition at line 102 of file Zone.cs.

103 {
104 get
105 {
106 if (branch == null)
107 {
108 return DangerLv;
109 }
110 return branch.ContentLV;
111 }
112 }

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

◆ CountDeepestLevel

virtual bool Zone.CountDeepestLevel
get

Definition at line 234 of file Zone.cs.

◆ DangerLv

◆ DefaultActionMode

virtual ActionMode Zone.DefaultActionMode
get

Definition at line 174 of file Zone.cs.

◆ DisableRooms

virtual bool Zone.DisableRooms
get

Definition at line 126 of file Zone.cs.

Referenced by Map.TryAddRoom().

◆ EvolvedChance

virtual float Zone.EvolvedChance
get

Definition at line 330 of file Zone.cs.

◆ ExpireDays

virtual int Zone.ExpireDays
get

Definition at line 178 of file Zone.cs.

Referenced by Activate().

◆ FeatureType

virtual ZoneFeatureType Zone.FeatureType
get

Definition at line 182 of file Zone.cs.

◆ FlockType

virtual FlockController.SpawnType Zone.FlockType
get

Definition at line 422 of file Zone.cs.

Referenced by Scene.Init().

◆ Generator

MapGenerator Zone.Generator
get

Definition at line 144 of file Zone.cs.

Referenced by MapGenDungen.OnGenerateTerrain().

◆ GrowPlant

virtual bool Zone.GrowPlant
get

Definition at line 354 of file Zone.cs.

◆ GrowWeed

virtual bool Zone.GrowWeed
get

Definition at line 356 of file Zone.cs.

◆ HasLaw

virtual bool Zone.HasLaw
get

◆ HiddenInRegionMap

virtual bool Zone.HiddenInRegionMap
get

Definition at line 420 of file Zone.cs.

Referenced by Chara._Move().

◆ HourSinceLastActive

int Zone.HourSinceLastActive
get

Definition at line 128 of file Zone.cs.

◆ IDAmbience

virtual string Zone.IDAmbience
get

Definition at line 184 of file Zone.cs.

185 {
186 get
187 {
188 if (!IsRegion && !map.IsIndoor)
189 {
190 if (!IsTown)
191 {
192 return "forest";
193 }
194 return "town";
195 }
196 return null;
197 }
198 }

◆ IDBaseLandFeat

virtual string Zone.IDBaseLandFeat
get

Definition at line 154 of file Zone.cs.

◆ IdBiome

virtual string Zone.IdBiome
get

Definition at line 136 of file Zone.cs.

◆ idExport

virtual string Zone.idExport
get

Definition at line 156 of file Zone.cs.

157 {
158 get
159 {
160 if (base.source.idFile.Length != 0)
161 {
162 return base.source.idFile[fileVariation] + ((base.lv == 0) ? "" : ("_F" + base.lv));
163 }
164 return "";
165 }
166 }
int fileVariation
Definition: Zone.cs:72

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

◆ IDGenerator

virtual string Zone.IDGenerator
get

Definition at line 140 of file Zone.cs.

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

◆ IDHat

virtual string Zone.IDHat
get

Definition at line 152 of file Zone.cs.

◆ IDPlayList

virtual string Zone.IDPlayList
get

Definition at line 148 of file Zone.cs.

◆ IDPlaylistOverwrite

virtual string Zone.IDPlaylistOverwrite
get

Definition at line 150 of file Zone.cs.

◆ IdProfile

virtual string Zone.IdProfile
get

Definition at line 146 of file Zone.cs.

◆ IDSceneTemplate

virtual string Zone.IDSceneTemplate
get

Definition at line 200 of file Zone.cs.

201 {
202 get
203 {
204 if (!EClass._map.IsIndoor)
205 {
206 if (!IsSnowZone)
207 {
208 return "Default";
209 }
210 return "Snow";
211 }
212 return "Indoor";
213 }
214 }
virtual bool IsSnowZone
Definition: Spatial.cs:542

Referenced by BaseGameScreen.RefreshGrading().

◆ IDSubset

virtual string Zone.IDSubset
get

Definition at line 218 of file Zone.cs.

219 {
220 get
221 {
222 if (!IsFestival)
223 {
224 return null;
225 }
226 return "festival";
227 }
228 }
virtual bool IsFestival
Definition: Zone.cs:216

Referenced by Activate().

◆ InspectName

string Zone.InspectName
get

Implements IInspect.

Definition at line 516 of file Zone.cs.

◆ InspectPoint

Point Zone.InspectPoint
get

Implements IInspect.

Definition at line 518 of file Zone.cs.

◆ InspectPosition

Vector3 Zone.InspectPosition
get

Implements IInspect.

Definition at line 520 of file Zone.cs.

◆ IsActiveZone

◆ IsExplorable

virtual bool Zone.IsExplorable
get

Definition at line 358 of file Zone.cs.

◆ IsFestival

◆ IsInstance

◆ IsLoaded

bool Zone.IsLoaded
get

Definition at line 498 of file Zone.cs.

Referenced by Activate().

◆ IsNefia

virtual bool Zone.IsNefia
get

Definition at line 292 of file Zone.cs.

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

◆ IsPCFaction

bool Zone.IsPCFaction
get

Definition at line 480 of file Zone.cs.

Referenced by Chara._Move(), WidgetDate._Refresh(), Map._ValidateInstalled(), Activate(), LayerSleep.Advance(), WidgetStatsBar.Build(), DramaCustomSequence.Build(), Chara.CanDestroyPath(), ActRestrain.CanPerform(), QuestIntoDarkness.CanUpdateOnTalk(), QuestVernis.CanUpdateOnTalk(), TraitGeneratorWheel.CanUse(), TraitLoytelMart.CanUse(), TraitMannequin.CanUse(), TraitShackle.CanUse(), GameLang.ConvertDrama(), Faction.CountWealth(), Card.Create(), ActEffect.DamageEle(), Chara.DoHostileAction(), 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(), TraitBookRoster.OnUse(), TraitFarmChest.OnUse(), TraitPolicyBoard.OnUse(), ZoneEventWedding.OnVisit(), ActRestrain.Perform(), ActEffect.Proc(), Map.PutAway(), TraitBaseSpellbook.ReadFailEffect(), ContentHomeRanking.Refresh(), TCOrbitChara.RefreshAll(), UIInventory.RefreshMenu(), ContentFaction.RefreshZones(), AI_Eat.Run(), AI_Idle.Run(), WidgetSearch.Search(), Card.SetPlaceState(), UIFactionInfo.SetZone(), TraitTicketFurniture.SetZone(), TraitGeneratorWheel.ShouldWork(), Card.SpawnLoot(), Chara.Tick(), TaskDump.TryPerform(), TraitBed.TrySetAct(), TraitCoreZone.TrySetAct(), TraitFactionBoard.TrySetAct(), TraitHomeBoard.TrySetAct(), TraitPartyBoard.TrySetAct(), TraitResearchBoard.TrySetAct(), TraitResidentBoard.TrySetAct(), TraitSwitch.TrySetAct(), TraitWaystone.TrySetAct(), TraitSalesTag.TrySetHeldAct(), Trait.TrySetToggleAct(), Map.TryShatter(), AI_Shopping.TryShop(), TraitTeleporter.TryTeleport(), Card.TryUnrestrain(), GoalCombat.TryUseAbility(), TraitGeneratorWheel.Update(), GameUpdater.Update100ms(), UpdateQuests(), and Chara.Vomit().

◆ IsPCFactionOrTent

◆ IsReturnLocation

virtual bool Zone.IsReturnLocation
get

Definition at line 360 of file Zone.cs.

361 {
362 get
363 {
364 if (EClass.pc.homeZone != this)
365 {
366 return base.source.tag.Contains("return");
367 }
368 return true;
369 }
370 }

Referenced by SpatialManager.ListReturnLocations().

◆ IsSkyLevel

◆ IsStartZone

bool Zone.IsStartZone
get

Definition at line 494 of file Zone.cs.

◆ IsTown

◆ IsUnderwater

◆ IsUserZone

◆ KeepAllyDistance

virtual bool Zone.KeepAllyDistance
get

Definition at line 308 of file Zone.cs.

309 {
310 get
311 {
312 if (!HasLaw)
313 {
314 return IsPCFaction;
315 }
316 return true;
317 }
318 }

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

◆ LockExit

virtual bool Zone.LockExit
get

Definition at line 282 of file Zone.cs.

Referenced by MapGenDungen.OnGenerateTerrain().

◆ MakeEnemiesNeutral

virtual bool Zone.MakeEnemiesNeutral
get

Definition at line 240 of file Zone.cs.

241 {
242 get
243 {
244 if (!IsTown)
245 {
246 return HasLaw;
247 }
248 return true;
249 }
250 }

◆ MakeTownProperties

virtual bool Zone.MakeTownProperties
get

Definition at line 252 of file Zone.cs.

◆ MaxLv

virtual int Zone.MaxLv
get

Definition at line 286 of file Zone.cs.

◆ MaxRespawn

int Zone.MaxRespawn
get

Definition at line 322 of file Zone.cs.

◆ MaxSoil

virtual int Zone.MaxSoil
get

Definition at line 522 of file Zone.cs.

523 {
524 get
525 {
526 if (branch == null)
527 {
528 return 99999;
529 }
530 return branch.MaxSoil;
531 }
532 }

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

◆ MaxSpawn

virtual int Zone.MaxSpawn
get

Definition at line 320 of file Zone.cs.

◆ MinLv

virtual int Zone.MinLv
get

Definition at line 288 of file Zone.cs.

Referenced by Zone_Void.OnActivate(), and ActEffect.Proc().

◆ MinsSinceLastActive

int Zone.MinsSinceLastActive
get

Definition at line 130 of file Zone.cs.

◆ NameSuffix

override string Zone.NameSuffix
get

Definition at line 424 of file Zone.cs.

425 {
426 get
427 {
428 if (!IsNefia || !GetTopZone().isConquered)
429 {
430 return "";
431 }
432 return "conquered".lang();
433 }
434 }

◆ NameWithLevel

string Zone.NameWithLevel
get

◆ OreChance

virtual float Zone.OreChance
get

Definition at line 326 of file Zone.cs.

◆ ParentZone

◆ pathExport

virtual string Zone.pathExport
get

Definition at line 132 of file Zone.cs.

Referenced by Activate().

◆ pathTemp

string Zone.pathTemp
get

Definition at line 168 of file Zone.cs.

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

◆ PetFollow

virtual bool Zone.PetFollow
get

Definition at line 294 of file Zone.cs.

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

◆ PrespawnRate

virtual float Zone.PrespawnRate
get

Definition at line 334 of file Zone.cs.

◆ RegenerateOnEnter

virtual bool Zone.RegenerateOnEnter
get

Definition at line 272 of file Zone.cs.

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

◆ Region

◆ RegionEnterState

virtual ZoneTransition.EnterState Zone.RegionEnterState
get

Definition at line 180 of file Zone.cs.

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

◆ RespawnPerHour

virtual int Zone.RespawnPerHour
get

Definition at line 350 of file Zone.cs.

◆ RespawnRate

virtual float Zone.RespawnRate
get

Definition at line 336 of file Zone.cs.

◆ RestrictBuild

virtual bool Zone.RestrictBuild
get

Definition at line 296 of file Zone.cs.

297 {
298 get
299 {
300 if (this is Zone_Civilized)
301 {
302 return !IsPCFaction;
303 }
304 return false;
305 }
306 }

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

◆ RevealRoom

virtual bool Zone.RevealRoom
get

Definition at line 400 of file Zone.cs.

◆ RuinChance

virtual float Zone.RuinChance
get

Definition at line 324 of file Zone.cs.

Referenced by GenBounds.TryAddMapPiece().

◆ ScaleType

virtual ZoneScaleType Zone.ScaleType
get

Definition at line 418 of file Zone.cs.

◆ SetAlarmOnBreakLaw

virtual bool Zone.SetAlarmOnBreakLaw
get

Definition at line 238 of file Zone.cs.

Referenced by Point.CallGuard(), and GoalCombat.Run().

◆ ShouldAutoRevive

virtual bool Zone.ShouldAutoRevive
get

Definition at line 386 of file Zone.cs.

387 {
388 get
389 {
390 if (!ShouldRegenerate)
391 {
392 return IsPCFaction;
393 }
394 return true;
395 }
396 }

◆ ShouldMakeExit

virtual bool Zone.ShouldMakeExit
get

Definition at line 372 of file Zone.cs.

373 {
374 get
375 {
376 if (base.lv > MinLv)
377 {
378 return base.lv < MaxLv;
379 }
380 return false;
381 }
382 }
virtual int MaxLv
Definition: Zone.cs:286
virtual int MinLv
Definition: Zone.cs:288

Referenced by MapGenDungen.OnGenerateTerrain().

◆ ShouldRegenerate

virtual bool Zone.ShouldRegenerate
get

Definition at line 384 of file Zone.cs.

Referenced by Activate().

◆ ShowEnemyOnMinimap

bool Zone.ShowEnemyOnMinimap
get

Definition at line 338 of file Zone.cs.

339 {
340 get
341 {
342 if (instance != null)
343 {
345 }
346 return false;
347 }
348 }
virtual bool ShowEnemyOnMinimap
Definition: ZoneInstance.cs:30

Referenced by WidgetMinimap.RefreshMarkers().

◆ ShrineChance

virtual float Zone.ShrineChance
get

Definition at line 332 of file Zone.cs.

◆ SightRadiusBonus

virtual int Zone.SightRadiusBonus
get

Definition at line 138 of file Zone.cs.

Referenced by Card.CalculateFOV(), and Card.GetSightRadius().

◆ StartLV

virtual int Zone.StartLV
get

Definition at line 416 of file Zone.cs.

Referenced by OnCreate().

◆ TextDangerLv

string Zone.TextDangerLv
get

Definition at line 438 of file Zone.cs.

Referenced by WidgetDate._Refresh().

◆ TextDeepestLv

string Zone.TextDeepestLv
get

Definition at line 440 of file Zone.cs.

441 {
442 get
443 {
444 if (GetDeepestLv() != 0)
445 {
446 return "zoneLevelMax".lang(TextLevel(GetDeepestLv()));
447 }
448 return "";
449 }
450 }
string TextLevel(int _lv)
Definition: Zone.cs:605

Referenced by AM_Adv._OnUpdateInput().

◆ TextWidgetDate

virtual string Zone.TextWidgetDate
get

Definition at line 142 of file Zone.cs.

Referenced by WidgetDate._Refresh().

◆ UseFog

virtual bool Zone.UseFog
get

Definition at line 398 of file Zone.cs.

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

◆ UseLight

virtual bool Zone.UseLight
get

Definition at line 404 of file Zone.cs.

405 {
406 get
407 {
408 if (base.mainFaction != EClass.pc.faction)
409 {
410 return base.source.tag.Contains("light");
411 }
412 return true;
413 }
414 }

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

◆ WillAutoSave

virtual bool Zone.WillAutoSave
get

Definition at line 270 of file Zone.cs.

Referenced by Chara.MoveZone().

◆ ZoneFullName

string Zone.ZoneFullName
get

Definition at line 88 of file Zone.cs.

Referenced by Activate(), and CustomCharaContent.OnGameLoad().


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