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

Classes

class  PortalReturnData
 

Public Member Functions

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)
 
GetRandomSpot< T > ()
 
bool TryAddThingInSpot< T > (Thing t, bool useContainer=true)
 
List< ThingTryListThingsInSpot< T > (Func< Thing, bool > func=null)
 
bool TryAddThingInSharedContainer (Thing t, List< Thing > containers=null, bool add=true, bool msg=false, Chara chara=null, bool sharedOnly=true)
 
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< ElementListLandFeats ()
 
ZoneExportData Import (string path)
 
void Export (string path, PartialMap partial=null, bool usermap=false)
 
void ExportDialog (string dir=null)
 
void ImportDialog (string dir=null)
 
void Export ()
 
void WriteNote (UINote n, Action< UINote > onWriteNote=null, IInspect.NoteMode mode=IInspect.NoteMode.Default, Recipe recipe=null)
 
void OnInspect ()
 
int GetSortVal ()
 
Chara AddRandomVisitor (bool guest=false)
 
void OnSimulateHour (VirtualDate date)
 
void OnSimulateDay (VirtualDate date)
 
void OnSimulateMonth (VirtualDate date)
 
void RainWater ()
 
void GrowPlants (VirtualDate date)
 
Zone GetZoneAt (int _x, int _y)
 
bool IsCrime (Chara c, Act act)
 
void RefreshCriminal ()
 
void RefreshListCitizen ()
 
virtual void SetAlarm (bool enable)
 
void ModInfluence (int a)
 
void ModDevelopment (int a)
 
void UpdateQuests (bool force=false)
 
List< CharaListMinions (Chara c)
 
int CountMinions (Chara c)
 
int GetSoilCost ()
 
void SpawnLostItems ()
 
void ApplyBackerPet (bool draw)
 
FortuneRollData GetOrCreateFortuneRollData (bool refresh=true)
 
- Public Member Functions inherited from Spatial
int GetInt (int id, int? defaultInt=null)
 
void AddInt (int id, int value)
 
void SetInt (int id, int value=0)
 
override string ToString ()
 
void Create (string _id, int _x, int _y, int _icon)
 
void Register ()
 
virtual void OnCreate ()
 
virtual void OnAfterCreate ()
 
virtual void SetMainFaction (Faction f)
 
Zone GetFirstZone ()
 
void OnBeforeSave ()
 
virtual void _OnBeforeSave ()
 
void _OnLoad ()
 
virtual void OnLoad ()
 
virtual void Destroy ()
 
void DeleteMapRecursive ()
 
virtual void AddChild (Spatial child)
 
void RemoveChild (Spatial child)
 
Zone FindDeepestZone ()
 
Zone FindZone (int lv)
 
Zone FindZone (string _id)
 
virtual bool CanKill ()
 
int Dist (Point p)
 
int Dist (Spatial s)
 
void MakeGameObject (GameObject parentGo)
 
ICardParent GetRoot ()
 
void RemoveCard (Card c)
 
void OnChildNumChange (Card c)
 
void WriteNote (UINote n, Action< UINote > onWriteNote=null, NoteMode mode=NoteMode.Default, Recipe recipe=null)
 
void OnInspect ()
 

Static Public Member Functions

static 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< Spatialchildren = new List<Spatial>()
 
List< Spatialconnections = new List<Spatial>()
 
Dictionary< int, int > mapInt = new Dictionary<int, int>()
 
bool destryoed
 
bool isImported
 
BitArray32 bits
 

Static Public Attributes

static bool forceRegenerate
 
static string forceSubset
 
static CardRow sourceHat
 
static int okaerinko = 0
 
static bool ignoreSpawnAnime
 
static List< ThingSuckers = new List<Thing>()
 
static 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 2012 of file Zone.cs.

2013 {
2014 if (CanDestroy())
2015 {
2016 Debug.Log("Deleting Zone:" + this);
2017 if (!destryoed)
2018 {
2019 Destroy();
2020 }
2021 }
2022 else if (map != null)
2023 {
2024 Debug.Log("Saving Zone:" + this);
2025 map.Save(base.pathSave);
2026 if (!base.isMapSaved)
2027 {
2028 base.isMapSaved = true;
2029 IO.DeleteDirectory(base.pathSave + "Texture Replace");
2030 IO.CopyDir(pathTemp + "Texture Replace", base.pathSave + "/Texture Replace");
2031 }
2032 if (!IsActiveZone)
2033 {
2034 UnloadMap();
2035 }
2036 }
2037 }
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:376
bool destryoed
Definition: Spatial.cs:45
bool CanDestroy()
Definition: Zone.cs:1947
override void Destroy()
Definition: Zone.cs:2048
bool IsActiveZone
Definition: Zone.cs:502
void UnloadMap()
Definition: Zone.cs:1863
string pathTemp
Definition: Zone.cs:168
Map map
Definition: Zone.cs:66

References CanDestroy(), Debug, Destroy(), Spatial.destryoed, IsActiveZone, map, pathTemp, Map.Save(), and UnloadMap().

◆ AbandonZone()

void Zone.AbandonZone ( )
inline

Definition at line 1931 of file Zone.cs.

1932 {
1933 FactionBranch destBranch = ((EClass.pc.homeBranch == branch) ? EClass.game.StartZone.branch : EClass.pc.homeBranch);
1934 branch.members.ForeachReverse(delegate(Chara m)
1935 {
1936 destBranch.AddMemeber(m);
1937 if (!m.IsPCParty)
1938 {
1939 m.MoveZone(destBranch.owner);
1940 }
1941 });
1943 SetMainFaction(null);
1944 base.dateExpire = EClass.world.date.GetRaw() + 10080;
1945 }
Definition: Chara.cs:10
override bool IsPCParty
Definition: Chara.cs:633
FactionBranch homeBranch
Definition: Chara.cs:1113
void MoveZone(string alias)
Definition: Chara.cs:3548
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, Spatial.SetMainFaction(), 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 if (flag2 && map != null)
674 {
675 UnloadMap();
676 }
677 string fullName = pathExport;
678 string lhs = CorePath.ZoneSave + "_new.z";
679 bool flag3 = File.Exists(fullName) && !PathComparer.Default.Equals(lhs, fullName);
680 bool flag4 = !idExport.IsEmpty();
681 Debug.Log(idExport + "/" + flag3 + "/" + fullName);
682 if (!flag3 && (base.source.tag.Contains("addMap") || flag4))
683 {
684 string[] array = new string[4]
685 {
686 "Maps/" + idExport + ".z",
687 "Maps/" + ZoneFullName + ".z",
688 "Map/" + idExport + ".z",
689 "Map/" + ZoneFullName + ".z"
690 };
691 for (int i = 0; i < array.Length; i++)
692 {
693 FileInfo fileInfo = PackageIterator.GetFiles(array[i]).LastOrDefault();
694 if (fileInfo != null)
695 {
696 fullName = fileInfo.FullName;
697 flag3 = true;
698 flag4 = true;
699 break;
700 }
701 }
702 }
703 if (!base.isGenerated && (!flag4 || !flag3))
704 {
705 Debug.Log("generating random map");
706 flag = true;
707 base.dateExpire = EClass.world.date.GetRaw() + 1440 * ExpireDays;
708 Generate();
710 if (instance != null)
711 {
713 }
714 if (!UseFog)
715 {
716 map.ForeachCell(delegate(Cell cell)
717 {
718 cell.isSeen = true;
719 });
720 }
721 if (!(bp is GameBlueprint))
722 {
724 }
725 }
726 else if (IsLoaded)
727 {
728 Debug.Log("zone is already loaded");
729 map.SetZone(this);
730 EClass.core.textures.ApplyLocalReplace(base.isMapSaved ? base.pathSave : pathTemp);
732 }
733 else
734 {
735 subset = null;
736 bool flag5 = (base.isGenerated && flag2) || (base.isGenerated && !IsInstance && !IsPCFaction && ShouldRegenerate && EClass.world.date.IsExpired(base.dateRegenerate)) || forceRegenerate;
738 {
739 flag5 = false;
740 flag2 = false;
741 }
742 Debug.Log(base.isGenerated + "/" + flag5 + "/" + flag2 + "/" + IDSubset);
743 if (!base.isGenerated || flag5 || flag2)
744 {
745 Debug.Log("importing map:" + fullName);
746 flag = true;
747 base.dateRegenerate = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRegenerateZone;
748 if (!flag5)
749 {
750 IO.DeleteDirectory(pathTemp + "Texture Replace");
751 Debug.Log(pathTemp);
752 }
753 try
754 {
755 zoneExportData = Import(fullName);
756 base.isGenerated = true;
757 isImported = true;
758 if (flag5)
759 {
760 zoneExportData.orgMap = GameIO.LoadFile<Map>(base.pathSave + "map");
761 }
762 }
763 catch (Exception message)
764 {
765 Debug.Log(message);
766 zoneExportData = Import(CorePath.ZoneSave + "fail.z");
767 base.isGenerated = true;
768 isImported = true;
769 }
770 }
772 Debug.Log("loading map: imported? " + isImported + " regenerate? " + flag5);
773 string text = (isImported ? pathTemp : base.pathSave) + "map";
774 try
775 {
776 map = GameIO.LoadFile<Map>(text);
777 }
778 catch (Exception message2)
779 {
780 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);
781 Debug.LogError(message2);
782 return;
783 }
784 map.SetZone(this);
785 map.Load(isImported ? pathTemp : base.pathSave, isImported);
787 EClass.core.textures.ApplyLocalReplace(base.isMapSaved ? base.pathSave : pathTemp);
788 if (isImported)
789 {
790 map.deadCharas.Clear();
791 map.OnImport(zoneExportData);
792 if (UseFog && !flag5)
793 {
794 map.ForeachCell(delegate(Cell cell)
795 {
796 cell.isSeen = false;
797 });
798 }
799 if (zoneExportData.orgMap != null)
800 {
801 Map orgMap = zoneExportData.orgMap;
802 List<Chara> serializedCharas = map.serializedCharas;
803 map.charas = orgMap.charas;
804 map.serializedCharas = orgMap.serializedCharas;
805 map.deadCharas = orgMap.deadCharas;
806 byte[] array2 = orgMap.TryLoadFile(base.pathSave, "flags", EClass._map.Size * EClass._map.Size);
807 if (array2 != null && array2.Length == EClass._map.Size * EClass._map.Size)
808 {
809 for (int num = 0; num < EClass._map.Size; num++)
810 {
811 for (int num2 = 0; num2 < EClass._map.Size; num2++)
812 {
813 map.cells[num, num2].isSeen = array2[num * EClass._map.Size + num2].GetBit(1);
814 }
815 }
816 }
817 foreach (Chara item in serializedCharas)
818 {
819 Debug.Log("Importing New Chara:" + item.id + "/" + item.Name + "/" + item.orgPos);
821 }
822 map.things.ForeachReverse(delegate(Thing t)
823 {
824 if (t.trait is TraitNewZone || t.trait is TraitPowerStatue)
825 {
826 foreach (Thing thing in orgMap.things)
827 {
828 if (t.id == thing.id && t.pos.Equals(thing.pos))
829 {
830 if (t.trait is TraitNewZone)
831 {
832 RemoveCard(t);
833 map.things.Insert(0, thing);
834 thing.stackOrder = 0;
835 }
836 else
837 {
838 t.ChangeMaterial(thing.material);
839 t.isOn = thing.isOn;
840 }
841 break;
842 }
843 }
844 return;
845 }
846 if (t.trait is TraitStairsLocked)
847 {
848 foreach (Thing thing2 in orgMap.things)
849 {
850 if (thing2.trait is TraitNewZone && t.pos.Equals(thing2.pos))
851 {
852 RemoveCard(t);
853 map.things.Add(thing2);
854 break;
855 }
856 }
857 return;
858 }
859 if (t.id == "medal" || t.id == "856")
860 {
861 foreach (Thing thing3 in orgMap.things)
862 {
863 if (t.id == thing3.id && t.pos.Equals(thing3.pos))
864 {
865 return;
866 }
867 }
868 RemoveCard(t);
869 }
870 });
871 foreach (KeyValuePair<int, int> item2 in EClass._map.backerObjs.ToList())
872 {
873 EClass._map.GetCell(item2.Key);
874 SourceBacker.Row row = EClass.sources.backers.map[item2.Value];
876 {
877 map.backerObjs.Remove(item2.Key);
878 }
879 }
880 foreach (Chara serializedChara in map.serializedCharas)
881 {
882 if (serializedChara.orgPos != null && serializedChara.orgPos.IsValid)
883 {
884 serializedChara.pos.Set(serializedChara.orgPos);
885 }
886 }
887 foreach (Thing thing4 in orgMap.things)
888 {
889 if (thing4.trait is TraitTent && !thing4.isNPCProperty)
890 {
891 thing4.AddEditorTag(EditorTag.NoNpcProperty);
892 thing4.isSubsetCard = false;
893 map.things.Add(thing4);
894 Debug.Log(thing4);
895 }
896 }
897 }
898 }
899 foreach (Thing thing5 in map.things)
900 {
901 map.AddCardOnActivate(thing5);
902 }
903 foreach (Chara c in map.serializedCharas)
904 {
905 if (c.c_uidMaster == 0 || EClass.player.listCarryoverMap.Find((Chara chara2) => chara2.uid == c.uid) == null)
906 {
907 map.charas.Add(c);
909 }
910 }
911 map.serializedCharas.Clear();
912 if (isImported && IsTown)
913 {
915 }
918 map.OnLoad();
919 if (flag5)
920 {
921 foreach (Card item3 in map.Cards.ToList())
922 {
923 if (item3.isSubsetCard)
924 {
925 item3.Destroy();
926 }
927 }
928 }
929 if (isImported)
930 {
932 if (idCurrentSubset != null)
933 {
935 subset.Apply();
936 }
937 }
938 if (isImported)
939 {
941 {
942 foreach (Thing thing6 in map.things)
943 {
944 thing6.isNPCProperty = !thing6.isHidden && !thing6.HasEditorTag(EditorTag.NoNpcProperty);
945 }
946 }
947 else
948 {
949 foreach (Thing thing7 in map.things)
950 {
951 thing7.isNPCProperty = false;
952 }
953 }
955 if (instance != null)
956 {
958 }
959 }
960 if (isImported && !flag5 && !RevealRoom)
961 {
962 foreach (Room item4 in map.rooms.listRoom)
963 {
964 if (!item4.HasRoof || item4.data.atrium)
965 {
966 continue;
967 }
968 foreach (Point point2 in item4.points)
969 {
970 point2.cell.isSeen = false;
971 }
972 }
973 }
974 if (flag5)
975 {
976 OnRegenerate();
977 }
978 }
979 PathManager.Instance._pathfinder.PunishChangeDirection = false;
980 isImported = false;
981 if (this is Zone_Tent && IsUnderwater)
982 {
983 EClass._map.config.idSceneProfile = "indoor_water";
984 EClass.scene.profile = SceneProfile.Load(EClass._map.config.idSceneProfile);
985 }
986 if (flag && IsTown && base.lv == 0)
987 {
989 }
990 if (base.visitCount == 0)
991 {
992 base.dateRevive = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRevive;
993 }
994 map.ForeachCell(delegate(Cell cell)
995 {
996 if (cell.HasFire)
997 {
998 map.effectManager.GetOrCreate(cell.GetSharedPoint());
999 }
1000 if (IsRegion)
1001 {
1002 cell.decal = 0;
1003 }
1004 });
1006 {
1007 RainWater();
1008 }
1010 {
1011 map.ForeachCell(delegate(Cell cell)
1012 {
1013 cell.isSeen = true;
1014 });
1015 }
1016 isStarted = true;
1017 Map.isDirtySunMap = true;
1019 if (events.listPreEnter.Count > 0)
1020 {
1021 foreach (ZonePreEnterEvent item5 in events.listPreEnter)
1022 {
1023 item5.Execute();
1024 }
1025 events.listPreEnter.Clear();
1026 }
1027 foreach (Card card in map.Cards)
1028 {
1029 card.CalculateFOV();
1030 if (card.isChara)
1031 {
1032 Chara chara = card.Chara;
1033 chara.dirtySpeed = true;
1034 if (!card.isDyed && card.HasTag(CTAG.random_color))
1035 {
1036 card.DyeRandom();
1037 }
1038 if (card.IsUnique && !card.IsPCFaction && !card.IsPCParty)
1039 {
1040 Point point = chara.orgPos ?? card.pos;
1041 card.c_uniqueData = new UniqueData
1042 {
1043 x = point.x,
1044 y = point.z,
1045 uidZone = base.uid
1046 };
1047 }
1048 int num3 = card.GetInt(55);
1049 if (num3 != 0)
1050 {
1051 foreach (Chara chara2 in map.charas)
1052 {
1053 if (chara2.uid == num3)
1054 {
1055 if (chara.IsHostile(chara2))
1056 {
1057 chara.enemy = chara2;
1058 chara.SetAI(new GoalCombat());
1059 chara.calmCheckTurn = 20 + EClass.rnd(30);
1060 }
1061 break;
1062 }
1063 }
1064 card.SetInt(55);
1065 }
1066 chara.SyncRide();
1067 if (card.c_uidMaster != 0 && chara.master == null)
1068 {
1069 chara.FindMaster();
1070 }
1071 if (!EClass.game.isLoading)
1072 {
1073 chara.enemy = null;
1074 if (chara.IsInCombat)
1075 {
1076 chara.SetNoGoal();
1077 }
1078 }
1079 }
1080 else if (card.IsInstalled && card.trait is TraitDoor traitDoor && card.pos.HasChara && !traitDoor.IsOpen())
1081 {
1082 traitDoor.ToggleDoor(sound: false, refresh: false);
1083 }
1084 }
1085 RefreshHat();
1086 forceRegenerate = false;
1087 forceSubset = null;
1088 EClass.ui.OnActivateZone();
1090 EClass.Sound.LoadAmbience(IDAmbience);
1091 if (EClass.Branch != null)
1092 {
1094 }
1095 OnVisit();
1096 if (flag)
1097 {
1099 }
1101 if (IsPCFaction)
1102 {
1103 EClass.player.uidLastTown = 0;
1104 }
1105 else if (IsTown && base.lv == 0)
1106 {
1107 EClass.player.uidLastTown = base.uid;
1108 }
1109 RefreshBGM();
1110 Rand.InitBytes(map.seed + 1);
1112 okaerinko = 0;
1113 if (EClass.debug.enable)
1114 {
1115 ModInfluence(2000);
1116 }
1117 if (this is Zone_TinkerCamp)
1118 {
1119 Tutorial.Reserve("tinker");
1120 }
1121 else if (this is Zone_Town && !(this is Zone_SubTown))
1122 {
1123 Tutorial.Reserve("town");
1124 }
1125 }
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
SourceMaterial.Row material
Definition: Card.cs:2103
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:3217
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:5313
bool HasEditorTag(EditorTag tag)
Definition: Card.cs:2733
bool isOn
Definition: Card.cs:545
Definition: Cell.cs:7
bool isSeen
Definition: Cell.cs:302
bool HasFire
Definition: Cell.cs:696
AIAct SetNoGoal()
Definition: Chara.cs:9448
bool IsInCombat
Definition: Chara.cs:911
AIAct SetAI(AIAct g)
Definition: Chara.cs:9453
Point orgPos
Definition: Chara.cs:21
GlobalData global
Definition: Chara.cs:76
Chara master
Definition: Chara.cs:88
Chara FindMaster()
Definition: Chara.cs:2618
void SyncRide()
Definition: Chara.cs:4193
bool IsHostile()
Definition: Chara.cs:6909
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:354
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:2403
Cell GetCell(int index)
Definition: Map.cs:898
IEnumerable< Card > Cards
Definition: Map.cs:135
void AddCardOnActivate(Card c)
Definition: Map.cs:793
void SetZone(Zone _zone)
Definition: Map.cs:181
List< Thing > things
Definition: Map.cs:49
byte[] TryLoadFile(string path, string s, int size)
Definition: Map.cs:541
Dictionary< int, int > backerObjs
Definition: Map.cs:67
List< Chara > deadCharas
Definition: Map.cs:46
int seed
Definition: Map.cs:19
RoomManager rooms
Definition: Map.cs:31
void SetReference()
Definition: Map.cs:195
void OnLoad()
Definition: Map.cs:718
void OnImport(ZoneExportData data)
Definition: Map.cs:724
List< Chara > serializedCharas
Definition: Map.cs:43
Cell[,] cells
Definition: Map.cs:85
MapConfig config
Definition: Map.cs:37
void Load(string path, bool import=false, PartialMap partial=null)
Definition: Map.cs:552
List< Chara > charas
Definition: Map.cs:81
void RefreshAllTiles()
Definition: Map.cs:2152
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 Equals(int _x, int _z)
Definition: Point.cs:966
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
string idCurrentSubset
Definition: Spatial.cs:28
virtual bool IsRegion
Definition: Spatial.cs:515
virtual string Name
Definition: Spatial.cs:509
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:3175
ZoneExportData Import(string path)
Definition: Zone.cs:3450
void Generate()
Definition: Zone.cs:2540
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:1243
bool isStarted
Definition: Zone.cs:76
virtual string pathExport
Definition: Zone.cs:132
MapSubset subset
Definition: Zone.cs:68
Zone GetTopZone()
Definition: Zone.cs:2098
virtual string IDSubset
Definition: Zone.cs:219
ZoneBlueprint bp
Definition: Zone.cs:70
void RefreshBGM()
Definition: Zone.cs:3303
void Deactivate()
Definition: Zone.cs:1781
void SpawnLostItems()
Definition: Zone.cs:4042
void AddGlobalCharasOnActivate()
Definition: Zone.cs:1700
bool IsInstance
Definition: Zone.cs:496
void ClearZones(Zone current=null)
Definition: Zone.cs:2067
void OnVisit()
Definition: Zone.cs:1137
virtual bool IsTown
Definition: Zone.cs:230
void RainWater()
Definition: Zone.cs:3688
virtual bool UseFog
Definition: Zone.cs:398
virtual string IDAmbience
Definition: Zone.cs:185
void RemoveCard(Card t)
Definition: Zone.cs:2182
void RefreshHat()
Definition: Zone.cs:1127
void ModInfluence(int a)
Definition: Zone.cs:3900
virtual void OnGenerateMap()
Definition: Zone.cs:2758
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:3858
virtual int ExpireDays
Definition: Zone.cs:178
virtual void OnVisitNewMapOrRegenerate()
Definition: Zone.cs:1283

References $, EClass._map, Game.activeZone, ActPlan.List.Add(), Map.AddCardOnActivate(), Card.AddEditorTag(), AddGlobalCharasOnActivate(), MapSubset.Apply(), TextureManager.ApplyLocalReplace(), AreaData.atrium, Map.backerObjs, SourceManager.backers, GameSetting.balance, bp, EClass.Branch, Card.c_uidMaster, card, Map.Cards, Map.cells, Card.ChangeMaterial(), Map.charas, ClearZones(), Core.config, Map.config, EClass.core, Game.countLoadedMaps, BaseArea.data, World.date, GameSetting.BalanceSetting.dateRegenerateZone, GameSetting.BalanceSetting.dateRevive, Deactivate(), Map.deadCharas, EClass.debug, Debug, Card.Destroy(), Spatial.destryoed, Player.doneBackers, Region.elomap, Scene.elomapActor, CoreDebug.enable, Point.Equals(), events, ZonePreEnterEvent.Execute(), ExpireDays, Chara.FindMaster(), forceRegenerate, forceSubset, Map.ForeachCell(), EClass.game, Generate(), Map.GetCell(), Guild.GetCurrentGuild(), Date.GetRaw(), GetTopZone(), Chara.global, Card.HasEditorTag(), Cell.HasFire, Room.HasRoof, Card.id, SourceBacker.Row.id, IDAmbience, Spatial.idCurrentSubset, idExport, MapConfig.idSceneProfile, IDSubset, if(), CoreConfig.Test.ignoreBackerDestoryFlag, Import(), Rand.InitBytes(), EloMapActor.Initialize(), instance, Date.IsExpired(), Chara.IsHostile(), Spatial.isImported, Chara.IsInCombat, IsInstance, IsLoaded, Game.isLoading, Card.isNPCProperty, Card.isOn, IsPCFaction, Weather.IsRaining, Spatial.IsRegion, Cell.isSeen, isSimulating, isStarted, Card.isSubsetCard, IsTown, IsUnderwater, Point.IsValid, item, Player.listCarryoverMap, ZoneEventManager.listPreEnter, RoomManager.listRoom, MapSubset.Load(), SceneProfile.Load(), Map.Load(), MakeTownProperties, map, Chara.master, Card.material, ModInfluence(), Spatial.Name, NameWithLevel, okaerinko, FactionBranch.OnActivateZone(), OnGenerateMap(), ZoneInstance.OnGenerateMap(), Map.OnImport(), Map.OnLoad(), OnRegenerate(), OnVisit(), OnVisitNewMapOrRegenerate(), ZoneExportData.orgMap, Chara.orgPos, pathExport, pathTemp, EClass.pc, EClass.player, BaseArea.points, Card.pos, RainWater(), Scene.RebuildActorEx(), Map.RefreshAllTiles(), RefreshBGM(), Guild.RefreshDevelopment(), RefreshElectricity(), RefreshHat(), RefreshListCitizen(), RegenerateOnEnter, RemoveCard(), Tutorial.Reserve(), CoreDebug.revealMap, RevealRoom, EClass.rnd(), Map.rooms, Msg.Say(), EClass.scene, Map.seed, Map.serializedCharas, Point.Set(), Chara.SetAI(), Chara.SetNoGoal(), Map.SetReference(), EClass.setting, Map.SetZone(), ShouldRegenerate, Player.simulatingZone, MapBounds.Size, EClass.Sound, EClass.sources, SpawnLostItems(), subset, Chara.SyncRide(), CoreConfig.test, Core.textures, Card.things, Map.things, Card.trait, GlobalData.transition, Map.TryLoadFile(), EClass.ui, Card.uid, UnloadMap(), UseFog, World.weather, EClass.world, Point.x, Spatial.x, Spatial.y, Point.z, ZoneFullName, and CorePath.ZoneSave.

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

◆ AddCard() [1/3]

Card Zone.AddCard ( Card  t)
inline

Definition at line 2147 of file Zone.cs.

2148 {
2149 return AddCard(t, 0, 0);
2150 }
Card AddCard(Card t, Point point)
Definition: Zone.cs:2142

References AddCard().

◆ AddCard() [2/3]

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

Definition at line 2152 of file Zone.cs.

2153 {
2154 if (t.parent != null)
2155 {
2156 t.parent.RemoveCard(t);
2157 }
2158 t.parent = this;
2159 Chara chara = t.Chara;
2160 if (chara != null)
2161 {
2162 chara.currentZone = this;
2163 chara.SetAI(new NoGoal());
2164 }
2165 if (IsActiveZone)
2166 {
2167 map.OnCardAddedToZone(t, x, z);
2168 if (isStarted && t.isThing && t.placeState == PlaceState.roaming && !ignoreSpawnAnime)
2169 {
2170 t.PlayAnimeLoot();
2171 }
2172 ignoreSpawnAnime = false;
2173 }
2174 if (chara != null && EClass.player != null && !chara.hasSpawned)
2175 {
2176 EClass.player.codex.AddSpawn(chara.id);
2177 chara.hasSpawned = true;
2178 }
2179 return t;
2180 }
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:6670
void AddSpawn(string id)
Definition: CodexManager.cs:65
void OnCardAddedToZone(Card t, int x, int z)
Definition: Map.cs:816
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, ignoreSpawnAnime, IsActiveZone, isStarted, Card.isThing, map, Map.OnCardAddedToZone(), Card.parent, Card.placeState, Card.PlayAnimeLoot(), EClass.player, ICardParent.RemoveCard(), Chara.SetAI(), and Spatial.x.

◆ AddCard() [3/3]

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

Definition at line 2142 of file Zone.cs.

2143 {
2144 return AddCard(t, point.x, point.z);
2145 }

References AddCard(), Point.x, and Point.z.

Referenced by InvOwnerChaosOffering._OnProcess(), TraitShrine._OnUse(), Game.AddAdventurers(), AddCard(), AddCardSplinkle(), AddChara(), ZoneUtil.AddMerchant(), Quest.AddResident(), AddThing(), 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(), Simulate(), ZoneEventMusic.Spawn(), CoreDebug.Spawn(), SpawnAltar(), ReligionExtension.SpawnAltar(), Card.SpawnLoot(), SpawnLostItems(), SurvivalManager.StartRaid(), ActThrow.Throw(), TryAddThing(), TryAddThingInSpot< T >(), 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 2107 of file Zone.cs.

2108 {
2109 Point point = new Point(center);
2110 for (int i = 0; i < 1000; i++)
2111 {
2112 point.x = center.x + EClass.rnd(radius) - EClass.rnd(radius);
2113 point.z = center.z + EClass.rnd(radius) - EClass.rnd(radius);
2114 if (point.IsValid && !point.IsBlocked && !point.HasChara)
2115 {
2116 return AddCard(t, point);
2117 }
2118 }
2119 return AddCard(t, center);
2120 }
bool IsBlocked
Definition: Point.cs:363
bool HasChara
Definition: Point.cs:238

References AddCard(), 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 2127 of file Zone.cs.

2128 {
2129 return AddChara(id, p.x, p.z);
2130 }
Chara AddChara(string id, int x, int z)
Definition: Zone.cs:2122

References AddChara(), Point.x, and Point.z.

◆ AddGlobalCharasOnActivate()

void Zone.AddGlobalCharasOnActivate ( )
inline

Definition at line 1700 of file Zone.cs.

1701 {
1702 Point spawnPosPC = null;
1703 if (EClass.pc.currentZone == this)
1704 {
1705 spawnPosPC = GetSpawnPos(EClass.pc);
1706 }
1707 if (spawnPosPC == null)
1708 {
1709 spawnPosPC = map.GetCenterPos();
1710 }
1711 if (spawnPosPC.IsValid && EClass.pc.global.transition != null && spawnPosPC.HasBlock)
1712 {
1713 spawnPosPC = spawnPosPC.GetNearestPoint();
1714 }
1715 spawnPosPC = spawnPosPC.Clamp(useBounds: true).GetNearestPoint();
1716 foreach (Chara c in EClass.game.cards.globalCharas.Values)
1717 {
1718 if (c.currentZone != this)
1719 {
1720 continue;
1721 }
1722 if (c.parent is Chara)
1723 {
1724 Chara chara = c.parent as Chara;
1725 c.currentZone = chara.currentZone;
1726 }
1727 else
1728 {
1729 if (c.isDead)
1730 {
1731 continue;
1732 }
1733 if (c.isRestrained && c.currentZone == EClass.pc.currentZone && (!c.pos.IsValid || c.pos.FindThing<TraitShackle>() == null))
1734 {
1735 c.isRestrained = false;
1736 }
1737 if (c.global.transition != null)
1738 {
1739 Point pos = (c.IsPC ? spawnPosPC : (c.IsPCParty ? spawnPosPC.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true) : GetSpawnPos(c)));
1740 if (c.IsPCParty && !c.IsPC)
1741 {
1742 if (c.host == EClass.pc)
1743 {
1744 pos.Set(spawnPosPC);
1745 }
1746 else if (pos.Equals(spawnPosPC) || !PathManager.Instance.IsPathClear(spawnPosPC, pos, c, 5))
1747 {
1748 c.pos.Set(spawnPosPC);
1749 if (!spawnPosPC.ForeachNearestPoint(delegate(Point p)
1750 {
1751 if (PathManager.Instance.IsPathClear(spawnPosPC, p, c, 10) && !p.Equals(spawnPosPC))
1752 {
1753 pos.Set(p);
1754 return true;
1755 }
1756 return false;
1757 }, allowBlock: false, EClass.pc.party.members.Count >= 12, allowInstalled: true, ignoreCenter: true, EClass._zone.IsRegion ? 2 : 6))
1758 {
1759 pos.Set(spawnPosPC);
1760 }
1761 }
1762 }
1763 c.pos.Set(pos);
1764 c.global.transition = null;
1765 }
1766 map.charas.Add(c);
1768 }
1769 }
1771 {
1772 Point nearestPoint = spawnPosPC.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true);
1773 item.enemy = null;
1774 item.pos.Set(nearestPoint);
1775 map.charas.Add(item);
1777 }
1779 }
GlobalCharaList globalCharas
Definition: CardManager.cs:46
bool isRestrained
Definition: Card.cs:569
override bool IsPC
Definition: Chara.cs:630
Chara host
Definition: Chara.cs:33
Zone currentZone
Definition: Chara.cs:259
bool isDead
Definition: Chara.cs:393
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 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:1489

References Map.AddCardOnActivate(), Game.cards, Map.charas, Point.Clamp(), Chara.currentZone, Point.Equals(), Point.FindThing(), EClass.game, MapBounds.GetCenterPos(), Point.GetNearestPoint(), GetSpawnPos(), 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, map, 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 3584 of file Zone.cs.

3585 {
3586 Trait random = map.Installed.traits.GetTraitSet<TraitSpotExit>().GetRandom();
3587 if (random == null)
3588 {
3589 return null;
3590 }
3591 Point point = random.GetPoint();
3592 Chara chara = null;
3593 if (guest)
3594 {
3595 Zone z = EClass.world.FindZone("wilds");
3596 chara = EClass.game.cards.ListGlobalChara(z).RandomItem();
3597 if (chara != null)
3598 {
3599 AddCard(chara, point);
3600 Msg.Say("guestArrive", chara);
3601 chara.visitorState = VisitorState.Arrived;
3602 }
3603 }
3604 else
3605 {
3606 chara = CharaGen.CreateFromFilter("c_wilds");
3607 AddCard(chara, point);
3608 chara.goalListType = GoalListType.Enemy;
3609 }
3610 return chara;
3611 }
GoalListType
Definition: GoalListType.cs:2
VisitorState
Definition: VisitorState.cs:2
List< Chara > ListGlobalChara(Zone z)
Definition: CardManager.cs:103
static Chara CreateFromFilter(string id, int lv=-1, int levelRange=-1)
Definition: CharaGen.cs:22
PropsInstalled Installed
Definition: Map.cs:123
TraitManager traits
Definition: Props.cs:18
Zone FindZone(int lv)
Definition: Spatial.cs:728
TraitSet GetTraitSet(Type t)
Definition: TraitManager.cs:94
Definition: Trait.cs:7
Point GetPoint()
Definition: Trait.cs:843
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 2137 of file Zone.cs.

2138 {
2139 return AddThing(id, p.x, p.z);
2140 }
Card AddThing(string id, int x, int z)
Definition: Zone.cs:2132

References AddThing(), Point.x, and Point.z.

◆ ApplyBackerPet()

void Zone.ApplyBackerPet ( bool  draw)
inline

Definition at line 4087 of file Zone.cs.

4088 {
4089 bool flag = this is Zone_Yowyn && base.lv == -1;
4090 IList<SourceBacker.Row> list = EClass.sources.backers.listPet.Copy();
4091 list.Shuffle();
4093 {
4094 list.ForeachReverse(delegate(SourceBacker.Row a)
4095 {
4096 if (EClass.player.doneBackers.Contains(a.id))
4097 {
4098 list.Remove(a);
4099 }
4100 });
4101 }
4102 foreach (Chara chara in EClass._map.charas)
4103 {
4104 if (chara.IsGlobal || chara.IsMinion)
4105 {
4106 continue;
4107 }
4108 if (chara.isBackerContent)
4109 {
4110 if (chara.sourceBacker.isStatic != 0)
4111 {
4112 continue;
4113 }
4114 if (chara.id != "follower")
4115 {
4116 chara.RemoveBacker();
4117 }
4118 }
4119 if ((flag && chara.race.id != "cat") || (!EClass.debug.enable && EClass.rnd((!flag) ? (draw ? 3 : 10) : (draw ? 1 : 2)) != 0))
4120 {
4121 continue;
4122 }
4123 foreach (SourceBacker.Row item in list)
4124 {
4125 if (item.chara == chara.id)
4126 {
4127 chara.ApplyBacker(item.id);
4128 list.Remove(item);
4129 break;
4130 }
4131 }
4132 }
4133 }
SourceBacker.Row sourceBacker
Definition: Card.cs:955
void RemoveBacker()
Definition: Card.cs:7532
void ApplyBacker(int bid)
Definition: Card.cs:7496
bool isBackerContent
Definition: Card.cs:952
override bool IsGlobal
Definition: Chara.cs:628
override bool IsMinion
Definition: Chara.cs:645
SourceRace.Row race
Definition: Chara.cs:468
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 1947 of file Zone.cs.

1948 {
1950 {
1951 return false;
1952 }
1953 if (IsInstance)
1954 {
1955 return true;
1956 }
1957 bool flag = false;
1958 switch (id)
1959 {
1960 case "cave_dragon":
1961 if (!(this is Zone_DungeonDragon))
1962 {
1963 flag = true;
1964 }
1965 break;
1966 case "cave_yeek":
1967 if (!(this is Zone_DungeonYeek))
1968 {
1969 flag = true;
1970 }
1971 break;
1972 case "cave_mino":
1973 if (!(this is Zone_DungeonMino))
1974 {
1975 flag = true;
1976 }
1977 break;
1978 case "cave_dead":
1979 if (!(this is Zone_DungeonDead))
1980 {
1981 flag = true;
1982 }
1983 break;
1984 }
1985 Zone topZone = GetTopZone();
1986 if (!flag)
1987 {
1988 if (base.dateExpire == 0 || !EClass.world.date.IsExpired(base.dateExpire))
1989 {
1990 return false;
1991 }
1992 if (!base.isRandomSite && !(this is Zone_Field) && (topZone == null || topZone == this || topZone.FindDeepestZone() == this))
1993 {
1994 return false;
1995 }
1996 }
1997 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()))
1998 {
1999 return false;
2000 }
2002 {
2004 if (zone != null && zone.GetTopZone() == this)
2005 {
2006 return false;
2007 }
2008 }
2009 return true;
2010 }
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, IsActiveZone, Date.IsExpired(), IsInstance, IsPCFaction, Player.nextZone, EClass.pc, EClass.player, Player.simulatingZone, Game.spatials, ZoneInstance.uidZone, and EClass.world.

Referenced by _OnBeforeSave(), and Region.OnActivate().

◆ ClaimZone()

void Zone.ClaimZone ( bool  debug = false,
Point  pos = null 
)
inline

Definition at line 1877 of file Zone.cs.

1878 {
1881 branch = new FactionBranch();
1882 branch.OnCreate(this);
1883 if (base.icon == 0)
1884 {
1885 base.icon = 332;
1886 }
1887 instance = null;
1888 base.dateExpire = 0;
1890 Register();
1891 foreach (Thing thing in map.things)
1892 {
1893 thing.isNPCProperty = false;
1894 }
1897 if (debug)
1898 {
1899 for (int i = 0; i < 7; i++)
1900 {
1901 Chara chara = CharaGen.CreateFromFilter("c_neutral");
1902 EClass._zone.AddCard(chara, EClass._map.bounds.GetRandomPoint().GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false));
1903 branch.AddMemeber(chara);
1904 }
1905 }
1906 else
1907 {
1908 Msg.Say("claimedZone");
1909 EClass.Branch.Log("claimedZone");
1910 EClass.Sound.Play("jingle_embark");
1911 EClass.pc.PlaySound("build");
1912 if (pos == null)
1913 {
1914 pos = EClass.pc.pos.GetNearestPoint(allowBlock: false, allowChara: true, allowInstalled: false);
1915 }
1916 Effect.Get("aura_heaven").Play(pos);
1917 EClass._zone.AddCard(ThingGen.Create("core_zone"), pos).SetPlaceState(PlaceState.installed);
1918 }
1919 base.idPrefix = 0;
1921 {
1922 EClass.player.spawnZone = EClass._zone;
1923 }
1925 {
1926 EClass._zone.SetBGM(new List<int> { 41, 90, 44, 43 });
1928 }
1929 }
void SetPlaceState(PlaceState newState, bool byPlayer=false)
Definition: Card.cs:3928
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6641
Faction faction
Definition: Chara.cs:431
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:916
MapBounds bounds
Definition: Map.cs:52
EloMap elomap
Definition: Scene.cs:149
void SetInt(int id, int value=0)
Definition: Spatial.cs:580
void Register()
Definition: Spatial.cs:630
void RefreshPlaylist()
Definition: Zone.cs:3287
void SetBGM(List< int > ids, bool refresh=true, float fadeDuration=0f)
Definition: Zone.cs:3245

References EClass._map, EClass._zone, AddCard(), FactionBranch.AddMemeber(), Map.bounds, EClass.Branch, branch, ThingGen.Create(), CharaGen.CreateFromFilter(), World.date, EClass.debug, Scene.elomap, Chara.faction, EClass.game, Effect.Get(), Point.GetNearestPoint(), MapBounds.GetRandomPoint(), Date.GetRaw(), instance, FactionBranch.Log(), map, FactionBranch.OnClaimZone(), FactionBranch.OnCreate(), EClass.pc, Effect.Play(), Card.PlaySound(), Card.pos, RefreshPlaylist(), Spatial.Register(), Map.RevealAll(), Msg.Say(), EClass.scene, SetBGM(), Spatial.SetInt(), Spatial.SetMainFaction(), 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 2067 of file Zone.cs.

2068 {
2069 if (map != null)
2070 {
2071 UnloadMap();
2072 }
2073 base.isGenerated = false;
2074 Zone topZone = GetTopZone();
2075 if (topZone != this)
2076 {
2077 topZone.ClearZones(this);
2078 return;
2079 }
2080 children.ForeachReverse(delegate(Spatial c)
2081 {
2082 if (c != current)
2083 {
2084 c.Destroy();
2085 }
2086 });
2087 }
virtual void Destroy()
Definition: Spatial.cs:690
List< Spatial > children
Definition: Spatial.cs:37

References Spatial.children, ClearZones(), Spatial.Destroy(), GetTopZone(), map, and UnloadMap().

Referenced by Activate(), and ClearZones().

◆ CountMinions()

int Zone.CountMinions ( Chara  c)
inline

Definition at line 4019 of file Zone.cs.

4020 {
4021 int num = 0;
4022 foreach (Chara chara in EClass._map.charas)
4023 {
4024 if (chara.c_uidMaster == c.uid && chara.c_minionType == MinionType.Default)
4025 {
4026 num++;
4027 }
4028 }
4029 return num;
4030 }
MinionType
Definition: MinionType.cs:2
MinionType c_minionType
Definition: Card.cs:1015

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

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

◆ CreateBP()

void Zone.CreateBP ( )
inline

Definition at line 2528 of file Zone.cs.

2529 {
2530 bp = new ZoneBlueprint();
2531 bp.Create();
2532 bp.genSetting.seed = base.Seed;
2533 OnCreateBP();
2534 }
virtual void OnCreateBP()
Definition: Zone.cs:2536

References bp, ZoneBlueprint.Create(), and OnCreateBP().

Referenced by Generate().

◆ CreatePlaylist()

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

Definition at line 3343 of file Zone.cs.

3344 {
3345 return ModUtil.CreatePlaylist(ref list, mold);
3346 }

Referenced by Generate().

◆ Deactivate()

void Zone.Deactivate ( )
inline

Definition at line 1781 of file Zone.cs.

1782 {
1783 if (!IsUserZone && !IsPCFaction && map != null)
1784 {
1785 List<Thing> list = new List<Thing>();
1786 foreach (Thing thing in map.things)
1787 {
1788 if (thing.rarity >= Rarity.Artifact && thing.HasTag(CTAG.godArtifact))
1789 {
1790 list.Add(thing);
1791 }
1792 }
1793 if (this is Zone_Tent)
1794 {
1795 foreach (Thing item in map.props.stocked.Things.Concat(map.props.roaming.Things))
1796 {
1797 if (item.IsContainer)
1798 {
1799 foreach (Thing thing2 in item.things)
1800 {
1801 if (thing2.trait is TraitTent)
1802 {
1803 list.Add(thing2);
1804 }
1805 }
1806 }
1807 if (item.trait is TraitTent)
1808 {
1809 list.Add(item);
1810 }
1811 }
1812 }
1813 if (list.Count > 0)
1814 {
1815 Msg.Say("pick_valuable");
1816 foreach (Thing item2 in list)
1817 {
1818 Msg.Say("pick_valuable2", item2);
1819 EClass.pc.AddCard(item2);
1820 }
1821 }
1822 }
1824 {
1825 base.isPeace = false;
1826 }
1828 if (IsPCFaction)
1829 {
1830 foreach (Chara member in branch.members)
1831 {
1832 member.ValidateWorks();
1833 }
1834 }
1835 EClass.game.lastActiveZone = EClass.game.activeZone;
1836 base.lastActive = EClass.world.date.GetRaw();
1837 map.OnDeactivate();
1838 EClass.scene.Clear();
1839 EClass.game.activeZone = null;
1840 if (IsInstance)
1841 {
1842 UnloadMap();
1843 base.isGenerated = false;
1844 }
1845 if (forceRegenerate)
1846 {
1847 UnloadMap();
1848 }
1849 OnDeactivate();
1850 }
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:9804
void OnDeactivate()
Definition: Map.cs:205
PropsManager props
Definition: Map.cs:91
PropsRoaming roaming
Definition: PropsManager.cs:10
PropsStocked stocked
Definition: PropsManager.cs:6
List< Thing > Things
Definition: Props.cs:37
void Clear()
Definition: Scene.cs:355
virtual void OnBeforeDeactivate()
Definition: Zone.cs:1271
virtual bool IsUserZone
Definition: Zone.cs:278
virtual void OnDeactivate()
Definition: Zone.cs:1275

References Game.activeZone, Card.AddCard(), branch, Scene.Clear(), World.date, forceRegenerate, EClass.game, Date.GetRaw(), Card.HasTag(), IsInstance, IsPCFaction, IsUserZone, item, map, FactionBranch.members, OnBeforeDeactivate(), Map.OnDeactivate(), 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, UnloadMap(), Chara.ValidateWorks(), and EClass.world.

Referenced by Activate().

◆ Destroy()

override void Zone.Destroy ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 2048 of file Zone.cs.

2049 {
2050 children.ForeachReverse(delegate(Spatial z)
2051 {
2052 z.Destroy();
2053 });
2054 if (map != null)
2055 {
2056 UnloadMap();
2057 }
2058 if (parent != null && parent.IsRegion && instance == null)
2059 {
2060 EClass.scene.elomap.SetZone(base.x, base.y, null, updateMesh: true);
2061 }
2062 EClass.game.spatials.Remove(this);
2063 destryoed = true;
2064 base.isGenerated = false;
2065 }
void Remove(Spatial s)
Spatial parent
Definition: Spatial.cs:10

References Spatial.children, Spatial.Destroy(), Spatial.destryoed, Scene.elomap, EClass.game, instance, Spatial.IsRegion, map, Spatial.parent, SpatialManager.Remove(), EClass.scene, EloMap.SetZone(), Game.spatials, and UnloadMap().

Referenced by _OnBeforeSave().

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

3543 {
3545 string text = pathExport;
3546 IO.Copy(text, CorePath.ZoneSave + "Backup/");
3547 Export(text);
3548 Msg.Say("Exported Map:" + text);
3549 }
static void Copy(string fromPath, string toPath)
Definition: IO.cs:309
void ResetEditorPos()
Definition: Map.cs:357
void Export()
Definition: Zone.cs:3542

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

3460 {
3461 if (subset != null)
3462 {
3463 SE.Beep();
3464 return;
3465 }
3466 try
3467 {
3468 ZoneExportData zoneExportData = new ZoneExportData
3469 {
3470 name = name,
3471 usermap = usermap
3472 };
3474 if (!map.config.retainDecal)
3475 {
3477 }
3478 map.Save(IO.TempPath + "/", zoneExportData, partial);
3479 map.ExportMetaData(IO.TempPath + "/", Path.GetFileNameWithoutExtension(path), partial);
3480 if (partial == null)
3481 {
3482 IO.CopyDir(base.pathSave + "Texture Replace", IO.TempPath + "/Texture Replace");
3483 }
3484 IO.SaveFile(IO.TempPath + "/export", zoneExportData, compress: true);
3485 using (ZipFile zipFile = new ZipFile())
3486 {
3487 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
3488 zipFile.AddDirectory(IO.TempPath);
3489 zipFile.Save(path);
3490 zipFile.Dispose();
3491 }
3493 }
3494 catch (Exception ex)
3495 {
3496 EClass.ui.Say(ex.Message + ":" + path);
3497 }
3498 }
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:730
void ClearRainAndDecal()
Definition: Map.cs:1570
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 3500 of file Zone.cs.

3501 {
3503 {
3504 string text = StandaloneFileBrowser.SaveFilePanel("Export Zone", dir ?? CorePath.ZoneSave, "new zone", "z");
3505 if (!string.IsNullOrEmpty(text))
3506 {
3507 Export(text);
3508 Msg.SayRaw("Exported Zone");
3509 }
3510 });
3511 }
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 3353 of file Zone.cs.

3354 {
3355 return map.charas.Find((Chara c) => c.uid == uid);
3356 }
int uid
Definition: Spatial.cs:70

References Map.charas, and Card.uid.

◆ FindChara() [2/2]

Chara Zone.FindChara ( string  id)
inline

Definition at line 3348 of file Zone.cs.

3349 {
3350 return map.charas.Find((Chara c) => c.id == id);
3351 }

References Map.charas, and Card.id.

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

◆ FindDeadChara()

Chara Zone.FindDeadChara ( string  id)
inline

Definition at line 3358 of file Zone.cs.

3359 {
3360 return map.deadCharas.Find((Chara c) => c.id == id);
3361 }

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

2318 {
2319 Thing dest = null;
2320 int priority = -1;
2321 ContainerFlag flag = t.category.GetRoot().id.ToEnum<ContainerFlag>();
2322 if (flag == ContainerFlag.none)
2323 {
2324 flag = ContainerFlag.other;
2325 }
2326 if (containers == null)
2327 {
2328 containers = EClass._map.props.installed.containers;
2329 }
2330 SearchDest();
2331 return dest;
2332 Thing SearchDest()
2333 {
2334 foreach (Thing container in containers)
2335 {
2336 Thing thing = container;
2337 if (thing.trait is TraitShippingChest)
2338 {
2340 }
2341 if ((!sharedOnly || thing.IsSharedContainer) && thing.c_lockLv <= 0 && (thing.things.Count < thing.things.MaxCapacity || thing.things.CanStack(t) != t))
2342 {
2343 Window.SaveData windowSaveData = thing.GetWindowSaveData();
2344 if (windowSaveData != null)
2345 {
2346 if (windowSaveData.priority <= priority || (windowSaveData.noRotten && t.IsDecayed) || (windowSaveData.onlyRottable && t.trait.Decay == 0))
2347 {
2348 continue;
2349 }
2351 if (windowSaveData.userFilter)
2352 {
2353 filterResult = windowSaveData.IsFilterPass(t.GetName(NameStyle.Full, 1));
2354 if (filterResult == Window.SaveData.FilterResult.Block)
2355 {
2356 continue;
2357 }
2358 }
2359 if (filterResult != Window.SaveData.FilterResult.PassWithoutFurtherTest)
2360 {
2361 if (windowSaveData.advDistribution)
2362 {
2363 bool flag2 = false;
2364 foreach (int cat in windowSaveData.cats)
2365 {
2366 if (t.category.uid == cat)
2367 {
2368 flag2 = true;
2369 break;
2370 }
2371 }
2372 if (!flag2)
2373 {
2374 continue;
2375 }
2376 }
2377 else if (windowSaveData.flag.HasFlag(flag))
2378 {
2379 continue;
2380 }
2381 }
2382 priority = windowSaveData.priority;
2383 }
2384 else
2385 {
2386 if (priority != -1)
2387 {
2388 continue;
2389 }
2390 priority = 0;
2391 }
2392 dest = thing;
2393 }
2394 }
2395 return null;
2396 }
2397 }
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:532
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(), and TryAddThingInSharedContainer().

◆ Generate()

void Zone.Generate ( )
inline

Definition at line 2540 of file Zone.cs.

2541 {
2542 base.isGenerated = true;
2543 if (bp == null)
2544 {
2545 CreateBP();
2546 }
2547 if (bp.map == null)
2548 {
2549 bp.GenerateMap(this);
2550 }
2551 map.SetZone(this);
2552 Zone_Field zone_Field = this as Zone_Field;
2553 bool flag = IdBiome == "Sand" || IdBiome == "Water" || IsUnderwater;
2554 if (flag)
2555 {
2556 int num = 1 + EClass.rnd((IdBiome == "Water") ? 3 : 2);
2557 for (int i = 0; i < num; i++)
2558 {
2559 Point randomSurface = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2560 if (!randomSurface.HasObj && !randomSurface.HasThing)
2561 {
2562 Thing t = ThingGen.Create("pearl_oyster", new string[3] { "wood_birch", "poplar", "coralwood" }.RandomItem(), ContentLv);
2563 EClass._zone.AddCard(t, randomSurface).Install();
2564 }
2565 }
2566 num = 4 + EClass.rnd(5);
2567 for (int j = 0; j < num; j++)
2568 {
2569 Point randomSurface2 = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2570 if (!randomSurface2.HasObj && !randomSurface2.HasThing && (IsUnderwater || randomSurface2.cell.IsTopWaterAndNoSnow || EClass.rnd(6) == 0))
2571 {
2572 EClass._zone.AddCard(ThingGen.Create("70", -1, ContentLv), randomSurface2);
2573 }
2574 }
2575 for (int k = 0; k < EClass.rnd(EClass.rnd(base.isBeach ? 5 : 3) + 1); k++)
2576 {
2577 Point randomSurface3 = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2578 if (!randomSurface3.HasObj)
2579 {
2580 EClass._zone.AddCard(ThingGen.Create("bottle_message"), randomSurface3);
2581 }
2582 }
2583 }
2584 if (IsUnderwater)
2585 {
2586 for (int l = 0; l < 30 + EClass.rnd(30); l++)
2587 {
2588 SpawnMob(null, SpawnSetting.Fish());
2589 }
2590 Crawler crawler = Crawler.Create("pasture");
2591 int num2 = (EClass.debug.enable ? 3 : EClass.rnd(EClass.rnd(EClass.rnd(EClass.rnd(5) + 1) + 1) + 1));
2592 bool flag2 = this is Zone_Field;
2593 Thing seed = null;
2594 if (IsNefia)
2595 {
2596 int num3 = Mathf.Min(EClass._zone.DangerLv, EClass.pc.Evalue(286) * 2 / 3);
2597 if (num3 > 0)
2598 {
2600 Rand.SetSeed(EClass._zone.uid * 10 + num3);
2601 TraitSeed.LevelSeed(seed, (seed.trait as TraitSeed).row, num3);
2602 Rand.SetSeed();
2603 seed.elements.SetBase(2, EClass.curve(seed.encLV, 50, 10, 80));
2604 }
2605 }
2606 crawler.CrawlUntil(EClass._map, () => EClass._map.GetRandomPoint(), num2 + (flag2 ? 4 : 0), delegate(Crawler.Result r)
2607 {
2608 int num7 = 137;
2609 foreach (Point point in r.points)
2610 {
2611 if (!point.cell.isModified && !point.HasThing && !point.HasBlock && !point.HasObj)
2612 {
2613 map.SetObj(point.x, point.z, num7);
2614 int idx = 3 + ((EClass.rnd(3) == 0) ? 1 : 0) + ((EClass.rnd(3) == 0) ? (-1) : 0) + ((EClass.rnd(3) == 0) ? (-1) : 0);
2615 point.growth.SetStage(idx);
2616 if (seed != null)
2617 {
2618 EClass._map.AddPlant(point, seed);
2619 }
2620 }
2621 }
2622 return false;
2623 });
2624 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)
2625 {
2626 int num7 = 136;
2627 foreach (Point point2 in r.points)
2628 {
2629 if (!point2.cell.isModified && !point2.HasThing && !point2.HasBlock && !point2.HasObj)
2630 {
2631 map.SetObj(point2.x, point2.z, num7, 1, EClass.rnd(4));
2632 }
2633 }
2634 return false;
2635 });
2636 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)
2637 {
2638 int idFloor = 121;
2639 foreach (Point point3 in r.points)
2640 {
2641 map.SetFloor(point3.x, point3.z, 97, idFloor, Mathf.Clamp(4 - r.startPos.Distance(point3) + EClass.rnd(3) - EClass.rnd(3), 0, 3));
2642 }
2643 return false;
2644 });
2645 }
2646 if (zone_Field != null)
2647 {
2648 if (EClass.rnd(3) == 0)
2649 {
2650 int num4 = EClass.rnd(2);
2651 for (int num5 = 0; num5 < num4; num5++)
2652 {
2653 Point randomSurface4 = EClass._map.bounds.GetRandomSurface();
2654 if (!randomSurface4.HasObj && !randomSurface4.HasThing)
2655 {
2657 EClass._zone.AddCard(t2, randomSurface4).Install();
2658 }
2659 }
2660 }
2661 if (EClass.rnd(8) == 0)
2662 {
2663 SpawnAltar();
2664 }
2666 if (!flag && EClass.rnd(EClass.debug.enable ? 1 : 10) == 0)
2667 {
2668 Point randomSurface5 = EClass._map.bounds.GetRandomSurface();
2669 if (randomSurface5.IsValid)
2670 {
2671 EClass._zone.AddCard(CharaGen.Create("priest"), randomSurface5);
2672 }
2673 }
2674 if (base.Tile.isRoad)
2675 {
2676 for (int num6 = 0; num6 < EClass.rnd(4); num6++)
2677 {
2678 EClass._zone.SpawnMob(map.GetCenterPos().GetRandomPointInRadius(2, 6, requireLos: false, allowChara: false), SpawnSetting.HomeGuest(EClass._zone.DangerLv));
2679 }
2680 }
2681 }
2682 map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList) ?? EClass.Sound.GetPlaylist("Day"));
2683 }
@ seed
int Evalue(int ele)
Definition: Card.cs:2704
Card Install()
Definition: Card.cs:3922
bool IsTopWaterAndNoSnow
Definition: Cell.cs:732
bool isModified
Definition: Cell.cs:458
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:451
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:2259
List< int > _plDay
Definition: Map.cs:55
void SetFloor(int x, int z, int idMat=0, int idFloor=0)
Definition: Map.cs:968
PlantData AddPlant(Point pos, Thing seed)
Definition: Map.cs:1996
void SetObj(int x, int z, int id=0, int value=1, int dir=0)
Definition: Map.cs:1579
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:2719
Playlist CreatePlaylist(ref List< int > list, Playlist mold=null)
Definition: Zone.cs:3343
virtual bool IsNefia
Definition: Zone.cs:292
BiomeProfile biome
Definition: Zone.cs:134
Chara SpawnMob(string id, Point pos=null)
Definition: Zone.cs:2971
virtual string IdBiome
Definition: Zone.cs:136
override int DangerLv
Definition: Zone.cs:115
void TrySpawnFollower()
Definition: Zone.cs:2685
void CreateBP()
Definition: Zone.cs:2528

References EClass._map, Map._plDay, EClass._zone, AddCard(), Map.AddPlant(), biome, Map.bounds, bp, Point.cell, Card.ChangeMaterial(), ContentLv, Crawler.CrawlUntil(), Crawler.Create(), ThingGen.Create(), CharaGen.Create(), CreateBP(), CreatePlaylist(), 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(), IdBiome, IDPlayList, Card.Install(), Cell.isModified, IsNefia, Cell.IsTopWaterAndNoSnow, IsUnderwater, Point.IsValid, TraitSeed.LevelSeed(), TraitSeed.MakeSeed(), map, 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, SpawnAltar(), SpawnMob(), BiomeProfile.style, TrySpawnFollower(), Spatial.uid, Point.x, and Point.z.

Referenced by Activate().

◆ GetCostSkyTravel()

int Zone.GetCostSkyTravel ( )
inline

Definition at line 3382 of file Zone.cs.

3383 {
3384 if (base.source.costSkyTravel > 0)
3385 {
3386 return base.source.costSkyTravel;
3387 }
3389 {
3390 return Mathf.Clamp(10 + EClass.curve(DangerLv, 50, 10), 1, 200);
3391 }
3392 return 0;
3393 }
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 3363 of file Zone.cs.

3364 {
3365 int max = base.lv;
3366 return GetDeepestLv(ref max);
3367 }
int GetDeepestLv()
Definition: Zone.cs:3363

◆ GetDeepestLv() [2/2]

int Zone.GetDeepestLv ( ref int  max)
inline

Definition at line 3369 of file Zone.cs.

3370 {
3371 if (Mathf.Abs(base.lv) > Mathf.Abs(max))
3372 {
3373 max = base.lv;
3374 }
3375 foreach (Spatial child in children)
3376 {
3377 (child as Zone).GetDeepestLv(ref max);
3378 }
3379 return max;
3380 }

◆ GetDungenID()

virtual string Zone.GetDungenID ( )
inlinevirtual

◆ GetElectricity()

int Zone.GetElectricity ( bool  cost = false)
inline

Definition at line 3206 of file Zone.cs.

3207 {
3208 bool flag = GetSoilCost() > MaxSoil;
3209 int sum = 0;
3210 foreach (Thing thing in EClass._map.things)
3211 {
3212 if (!thing.IsInstalled || thing.trait.Electricity == 0)
3213 {
3214 continue;
3215 }
3216 if (cost)
3217 {
3218 if (thing.trait.Electricity < 0)
3219 {
3220 sum += -thing.trait.Electricity;
3221 }
3222 }
3223 else if (thing.trait.Electricity > 0)
3224 {
3225 sum += thing.trait.Electricity;
3226 }
3227 }
3228 if (!cost)
3229 {
3230 sum += elements.Value(2201) * 10 + BaseElectricity;
3231 if (!flag)
3232 {
3233 EClass._map.bounds.ForeachCell(delegate(Cell c)
3234 {
3235 if (c.sourceObj.id == 118 && c.growth.IsMature)
3236 {
3237 sum += 20;
3238 }
3239 });
3240 }
3241 }
3242 return sum;
3243 }
bool IsInstalled
Definition: Card.cs:2451
GrowSystem growth
Definition: Cell.cs:245
SourceObj.Row sourceObj
Definition: Cell.cs:1096
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:4032

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

4136 {
4137 if (fortuneRoll == null)
4138 {
4140 fortuneRoll.seed = EClass._zone.uid * 100 + EClass.game.seed;
4141 }
4142 if (refresh || fortuneRoll.count == 0)
4143 {
4145 }
4146 return fortuneRoll;
4147 }
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 2488 of file Zone.cs.

2489 {
2490 string text = IdProfile;
2491 if (text.IsEmpty())
2492 {
2493 Region region = parent as Region;
2494 if (base.lv != 0)
2495 {
2496 text = ((base.lv < 0) ? "Underground" : "Sky");
2497 }
2498 else if (region != null)
2499 {
2501 text = EClass.scene.elomapActor.elomap.GetTileInfo(base.x, base.y).idZoneProfile;
2502 if (bp != null)
2503 {
2504 name = Lang.GetList("zone_" + text.Split('/')[1]).RandomItem();
2505 bp.surrounding = new EloMap.TileInfo[3, 3];
2506 for (int i = 0; i < 3; i++)
2507 {
2508 for (int j = 0; j < 3; j++)
2509 {
2510 bp.surrounding[j, i] = EClass.scene.elomapActor.elomap.GetTileInfo(base.x - 1 + j, base.y - 1 + i);
2511 }
2512 }
2513 if (text == "Random/R_Shore")
2514 {
2515 base.isBeach = true;
2516 }
2517 }
2518 }
2519 else
2520 {
2521 text = "Random";
2522 }
2523 idProfile = text;
2524 }
2525 return ZoneProfile.Load(text);
2526 }
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 bp, EloMapActor.elomap, Region.elomap, Scene.elomapActor, Lang.GetList(), EloMap.GetTileInfo(), Spatial.idProfile, IdProfile, EloMap.TileInfo.idZoneProfile, EloMapActor.Initialize(), ZoneProfile.Load(), Spatial.name, Spatial.parent, Region, EClass.scene, and ZoneBlueprint.surrounding.

Referenced by ZoneBlueprint.GenerateMap().

◆ GetRandomSpot< T >()

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

Definition at line 2203 of file Zone.cs.

2203 : Trait
2204 {
2205 return EClass._map.props.installed.traits.GetRandomThing<T>() as T;
2206 }

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

◆ GetRandomVisitPos()

Point Zone.GetRandomVisitPos ( Chara  c)
inline

Definition at line 1678 of file Zone.cs.

1679 {
1680 Point point = null;
1681 if (EClass.rnd(3) == 0 && map.rooms.listRoom.Count > 0)
1682 {
1683 point = map.rooms.listRoom.RandomItem().points.RandomItem();
1684 }
1685 if (point == null && EClass.rnd(4) != 0)
1686 {
1687 IEnumerable<Chara> ie = map.charas.Where((Chara t) => t.trait.ShopType != ShopType.None && t.pos != null && t.pos.IsValid);
1688 if (ie.Count() > 0)
1689 {
1690 point = ie.RandomItem().pos.GetRandomPoint(3);
1691 }
1692 }
1693 if (point == null)
1694 {
1695 point = map.bounds.GetRandomSurface(centered: false, walkable: true, !IsPCFaction && !(this is Zone_Civilized)) ?? map.bounds.GetRandomPoint();
1696 }
1697 return point.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false) ?? EClass._map.GetCenterPos().GetNearestPoint();
1698 }
ShopType
Definition: ShopType.cs:2
new TraitChara trait
Definition: Chara.cs:509
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:532

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

Referenced by GetSpawnPos().

◆ GetRoot()

ICardParent Zone.GetRoot ( )
inline

Implements ICardParent.

Definition at line 2093 of file Zone.cs.

2094 {
2095 return this;
2096 }

◆ GetSoilCost()

int Zone.GetSoilCost ( )
inline

Definition at line 4032 of file Zone.cs.

4033 {
4034 int n = 0;
4035 EClass._map.bounds.ForeachCell(delegate(Cell c)
4036 {
4037 n += c.sourceObj.costSoil;
4038 });
4039 return n / 10;
4040 }

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

3560 {
3561 if (IsPCFaction)
3562 {
3563 return -10000000 + base.uid;
3564 }
3565 if (this is Zone_SubTown)
3566 {
3567 return -8000000 + base.uid;
3568 }
3569 if (this is Zone_Town)
3570 {
3571 return -9000000 + base.uid;
3572 }
3573 if (this is Zone_Civilized)
3574 {
3575 return -7000000 + base.uid;
3576 }
3577 if (this is Zone_RandomDungeon)
3578 {
3579 return 1000000 + base.uid;
3580 }
3581 return base.uid;
3582 }

Referenced by SpatialManager.ListReturnLocations().

◆ GetSpawnPos() [1/2]

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

Definition at line 1489 of file Zone.cs.

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

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(), GetRandomVisitPos(), MapBounds.GetRightPos(), MapBounds.GetTopPos(), GetTopZone(), GetZoneAt(), Chara.global, TraitTeleporter.id, ZoneTransition.idTele, PropsManager.installed, TraitNewZone.IsFor(), Card.IsInstalled, Chara.IsPC, IsPCFaction, Spatial.IsRegion, Game.IsSurvival, Point.IsValid, ZoneTransition.lastZone, Player.lastZonePos, Spatial.lv, map, Spatial.mapX, Spatial.mapY, EClass.player, Card.pos, Map.props, ZoneTransition.ratePos, RegionEnterState, 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 AddGlobalCharasOnActivate(), Chara.MoveZone(), Zone_Town.OnRegenerate(), and Revive().

◆ GetSpawnPos() [2/2]

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

Definition at line 2925 of file Zone.cs.

2926 {
2927 Point point = new Point();
2928 for (int i = 0; i < tries; i++)
2929 {
2930 point = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2931 if (!point.IsValid || point.cell.hasDoor || point.IsSync)
2932 {
2933 continue;
2934 }
2935 switch (type)
2936 {
2937 case SpawnPosition.Guest:
2938 {
2939 List<TraitSpotGuest> list = EClass._map.props.installed.traits.List<TraitSpotGuest>();
2940 if (list.Count > 0)
2941 {
2942 list.Shuffle();
2943 foreach (TraitSpotGuest item in list)
2944 {
2945 List<Point> list2 = item.ListPoints(null, onlyPassable: true, allowChara: false);
2946 if (list2.Count > 0)
2947 {
2948 return list2.RandomItem();
2949 }
2950 }
2951 }
2952 Room room = point.cell.room;
2953 if (room != null && room.data.accessType != BaseArea.AccessType.Public)
2954 {
2955 continue;
2956 }
2957 break;
2958 }
2959 case SpawnPosition.Outside:
2960 if (point.cell.HasRoof || point.cell.light > 0)
2961 {
2962 continue;
2963 }
2964 break;
2965 }
2966 return point;
2967 }
2968 return null;
2969 }
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:78
bool HasRoof
Definition: Cell.cs:668
bool hasDoor
Definition: Cell.cs:278
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 3810 of file Zone.cs.

3811 {
3812 if (IsRegion)
3813 {
3814 foreach (Spatial child in children)
3815 {
3816 if (!(child is Zone_Field) && _x == child.x && _y == child.y)
3817 {
3818 return child as Zone;
3819 }
3820 }
3821 }
3822 foreach (Spatial child2 in children)
3823 {
3824 if (_x == child2.x && _y == child2.y)
3825 {
3826 return child2 as Zone;
3827 }
3828 }
3829 return null;
3830 }

References Spatial.x, and Spatial.y.

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

◆ GrowPlants()

void Zone.GrowPlants ( VirtualDate  date)
inline

Definition at line 3703 of file Zone.cs.

3704 {
3705 bool num = (EClass.player.isAutoFarming = IsPCFaction && EClass.Branch.policies.IsActive(2707));
3706 int weedChance = 1;
3708 {
3709 weedChance += (EClass.debug.enable ? 100000 : 20) + EClass.Branch.Evalue(2703) * 10;
3710 }
3711 if (date.sunMap == null)
3712 {
3713 date.BuildSunMap();
3714 }
3715 if (num)
3716 {
3717 HashSet<int> hashSet = new HashSet<int>();
3718 foreach (Thing thing in EClass._map.things)
3719 {
3720 if (!thing.IsInstalled || !(thing.trait is TraitSpotFarm traitSpotFarm))
3721 {
3722 continue;
3723 }
3724 foreach (Point item in traitSpotFarm.ListPoints(null, onlyPassable: false))
3725 {
3726 hashSet.Add(item.index);
3727 }
3728 }
3729 Perform(hashSet);
3730 EClass.player.isAutoFarming = false;
3731 Perform(hashSet);
3732 }
3733 else
3734 {
3735 Perform(null);
3736 }
3737 void Perform(HashSet<int> farmMap)
3738 {
3739 bool isWinter = date.IsWinter;
3740 EClass._map.bounds.ForeachCell(delegate(Cell c)
3741 {
3742 if (farmMap != null)
3743 {
3745 {
3746 if (!farmMap.Contains(c.index))
3747 {
3748 return;
3749 }
3750 }
3751 else if (farmMap.Contains(c.index))
3752 {
3753 return;
3754 }
3755 }
3756 if (c.decal != 0 && EClass.rnd(3) == 0)
3757 {
3758 c.decal = 0;
3759 }
3760 if (GrowPlant)
3761 {
3762 if (c.growth != null)
3763 {
3764 bool flag = false;
3765 if (!EClass.player.isAutoFarming && c.growth.HaltGrowth() && (c.IsFarmField || c.IsTopWater) && (!isWinter || !date.IsRealTime))
3766 {
3767 flag = true;
3768 }
3769 PlantData plantData = map.TryGetPlant(c);
3770 if (!flag && (plantData == null || plantData.fert >= 0))
3771 {
3772 c.TryGrow(date);
3773 }
3774 if (isWinter && plantData != null && c.growth != null && c.growth.NeedSunlight && plantData.fert >= 0 && (EClass.rnd(4) == 0 || c.growth.stage.idx == 0))
3775 {
3776 if (date.sunMap == null)
3777 {
3778 date.BuildSunMap();
3779 }
3780 if (!date.sunMap.Contains(c.index) && !c.growth.CanGrow(date))
3781 {
3782 c.growth.Perish();
3783 }
3784 }
3785 }
3786 else if (c.detail != null)
3787 {
3788 c.Things.ForeachReverse(delegate(Thing t)
3789 {
3790 if (t.IsInstalled && t.trait is TraitSeed && !t.isSale)
3791 {
3792 (t.trait as TraitSeed).TrySprout(force: false, sucker: false, date);
3793 }
3794 });
3795 }
3796 else if (EClass.rnd(20) == 0 && GrowWeed && c.CanGrowWeed && EClass.rnd(weedChance) == 0)
3797 {
3798 biome.Populate(c.GetPoint());
3799 if (c.growth != null)
3800 {
3801 c.growth.SetStage(0);
3802 }
3803 }
3804 }
3805 c.isWatered = false;
3806 });
3807 }
3808 }
void Populate(Point point, bool interior=false, float mtpDensity=1f)
byte decal
Definition: Cell.cs:58
CellDetail detail
Definition: Cell.cs:112
Point GetPoint()
Definition: Cell.cs:1125
bool CanGrowWeed
Definition: Cell.cs:762
int index
Definition: Cell.cs:134
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:287
PlantData TryGetPlant(Point p)
Definition: Map.cs:1986
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 3160 of file Zone.cs.

3161 {
3162 return fieldElements.Has(idEle);
3163 }
bool Has(int ele)
ElementContainerField fieldElements
Definition: Zone.cs:49

References ElementContainer.Has().

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

◆ Import()

ZoneExportData Zone.Import ( string  path)
inline

Definition at line 3450 of file Zone.cs.

3451 {
3452 ZipFile zipFile = ZipFile.Read(path);
3453 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
3454 zipFile.ExtractAll(pathTemp);
3455 zipFile.Dispose();
3456 return IO.LoadFile<ZoneExportData>(pathTemp + "export") ?? new ZoneExportData();
3457 }

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

◆ ImportDialog()

void Zone.ImportDialog ( string  dir = null)
inline

Definition at line 3513 of file Zone.cs.

3514 {
3516 {
3517 string[] array = StandaloneFileBrowser.OpenFilePanel("Import Zone", dir ?? CorePath.ZoneSave, "z", multiselect: false);
3518 if (array.Length != 0)
3519 {
3520 Zone_User zone_User = SpatialGen.Create("user", EClass.world.region, register: true) as Zone_User;
3521 zone_User.path = array[0];
3522 Thing thing = ThingGen.Create("teleporter");
3523 thing.c_uidZone = zone_User.uid;
3524 EClass._zone.AddCard(thing, EClass.pc.pos);
3525 }
3526 });
3527 }
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 3529 of file Zone.cs.

3530 {
3531 try
3532 {
3533 return Map.GetMetaData(path)?.IsValidVersion() ?? false;
3534 }
3535 catch (Exception ex)
3536 {
3537 EClass.ui.Say(ex.Message);
3538 return false;
3539 }
3540 }
bool IsValidVersion()
Definition: MapMetaData.cs:31
static MapMetaData GetMetaData(string pathZip)
Definition: Map.cs:748

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

Referenced by TraitMoongate.UseMoongate().

◆ ListLandFeats()

List< Element > Zone.ListLandFeats ( )
inline

Definition at line 3395 of file Zone.cs.

3396 {
3397 if (landFeats == null)
3398 {
3399 landFeats = new List<int>();
3401 string[] listBase = IDBaseLandFeat.Split(',');
3402 string[] array = listBase;
3403 foreach (string text in array)
3404 {
3405 if (!text.IsEmpty())
3406 {
3407 landFeats.Add(EClass.sources.elements.alias[text].id);
3408 }
3409 }
3410 if (listBase.Length == 1)
3411 {
3412 List<SourceElement.Row> list = EClass.sources.elements.rows.Where(delegate(SourceElement.Row e)
3413 {
3414 if (e.category != "landfeat" || e.chance == 0)
3415 {
3416 return false;
3417 }
3418 bool flag = true;
3419 string[] tag = e.tag;
3420 foreach (string text2 in tag)
3421 {
3422 if (text2.StartsWith("bf"))
3423 {
3424 flag = false;
3425 if (listBase[0] == text2)
3426 {
3427 flag = true;
3428 break;
3429 }
3430 }
3431 }
3432 return flag ? true : false;
3433 }).ToList();
3434 SourceElement.Row row = list.RandomItemWeighted((SourceElement.Row e) => e.chance);
3435 landFeats.Add(row.id);
3436 list.Remove(row);
3437 row = list.RandomItemWeighted((SourceElement.Row e) => e.chance);
3438 landFeats.Add(row.id);
3439 }
3440 Rand.SetSeed();
3441 }
3442 List<Element> list2 = new List<Element>();
3443 foreach (int landFeat in landFeats)
3444 {
3445 list2.Add(Element.Create(landFeat, 1));
3446 }
3447 return list2;
3448 }
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 4006 of file Zone.cs.

4007 {
4008 List<Chara> list = new List<Chara>();
4009 foreach (Chara chara in EClass._map.charas)
4010 {
4011 if (chara.c_uidMaster == c.uid && chara.c_minionType == MinionType.Default)
4012 {
4013 list.Add(chara);
4014 }
4015 }
4016 return list;
4017 }

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

◆ ModDevelopment()

void Zone.ModDevelopment ( int  a)
inline

Definition at line 3910 of file Zone.cs.

3911 {
3912 base.development += a;
3913 if (a > 0)
3914 {
3915 Msg.Say("gainDevelopment", Name, a.ToString() ?? "");
3916 }
3917 }

References Msg.Say().

◆ ModInfluence()

void Zone.ModInfluence ( int  a)
inline

Definition at line 3900 of file Zone.cs.

3901 {
3902 base.influence += a;
3903 if (a > 0)
3904 {
3905 Msg.Say("gainInfluence", Name, a.ToString() ?? "");
3906 }
3907 Tutorial.Reserve("influence");
3908 }

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

Referenced by Activate(), 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 1247 of file Zone.cs.

1248 {
1249 if (!(id == "startVillage2"))
1250 {
1251 return;
1252 }
1253 if (EClass._map.version.IsBelow(0, 23, 226))
1254 {
1255 SetBGM(121, refresh: false);
1256 }
1257 int num = 0;
1258 foreach (Chara chara in EClass._map.charas)
1259 {
1260 if (chara.id == "cat_silver" && !chara.IsPCFaction)
1261 {
1262 num++;
1263 }
1264 }
1265 if (num > 0)
1266 {
1267 Msg.Say("num_silvercat", num.ToString() ?? "");
1268 }
1269 }
override bool IsPCFaction
Definition: Chara.cs:689
Version version
Definition: Map.cs:28
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(), SetBGM(), and Map.version.

Referenced by OnVisit().

◆ OnAdvanceHour()

virtual void Zone.OnAdvanceHour ( )
inlinevirtual

Reimplemented in Region.

Definition at line 1291 of file Zone.cs.

1292 {
1293 }

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

1288 {
1289 }

Referenced by OnVisit().

◆ OnBeforeDeactivate()

virtual void Zone.OnBeforeDeactivate ( )
inlinevirtual

Reimplemented in Zone_Tent.

Definition at line 1271 of file Zone.cs.

1272 {
1273 }

Referenced by Deactivate().

◆ OnBeforeSimulate()

virtual void Zone.OnBeforeSimulate ( )
inlinevirtual

Reimplemented in Zone_DungeonPuppy, and Zone_Nymelle.

Definition at line 1279 of file Zone.cs.

1280 {
1281 }

Referenced by OnVisit().

◆ OnChildNumChange()

void Zone.OnChildNumChange ( Card  c)
inline

Implements ICardParent.

Definition at line 2089 of file Zone.cs.

2090 {
2091 }

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

2537 {
2538 }

Referenced by CreateBP().

◆ OnDeactivate()

virtual void Zone.OnDeactivate ( )
inlinevirtual

Definition at line 1275 of file Zone.cs.

1276 {
1277 }

Referenced by Deactivate().

◆ 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_RandomDungeon, Zone_RandomDungeonFactory, Zone_SnowGrave, Zone_StartSite, Zone_TestRoom, Zone_UnderseaTemple, Zone_VernisMine, Zone_Void, and Zone_WindRest.

Definition at line 2758 of file Zone.cs.

2759 {
2761 {
2762 foreach (Chara chara in EClass._map.charas)
2763 {
2764 if (!chara.IsGlobal && chara.hostility < Hostility.Neutral && chara.OriginalHostility < Hostility.Friend)
2765 {
2766 Hostility hostility = (chara.c_originalHostility = Hostility.Neutral);
2767 chara.hostility = hostility;
2768 }
2769 }
2770 }
2771 if (PrespawnRate != 0f && !IsSkyLevel)
2772 {
2773 for (int i = 0; i < (int)((float)MaxSpawn * PrespawnRate); i++)
2774 {
2775 SpawnMob();
2776 }
2777 }
2782 }
Hostility
Definition: Hostility.cs:2
Hostility OriginalHostility
Definition: Chara.cs:475
Hostility hostility
Definition: Chara.cs:295
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:2811
void TryGenerateShrine()
Definition: Zone.cs:2868
void TryGenerateOre()
Definition: Zone.cs:2784
virtual bool MakeEnemiesNeutral
Definition: Zone.cs:241
void TryGenerateBigDaddy()
Definition: Zone.cs:2831

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

2922 {
2923 }

Referenced by MapGenDungen.OnGenerateTerrain().

◆ OnInspect()

void Zone.OnInspect ( )
inline

Implements IInspect.

Definition at line 3555 of file Zone.cs.

3556 {
3557 }

◆ OnKillGame()

void Zone.OnKillGame ( )
inline

Definition at line 1852 of file Zone.cs.

1853 {
1854 foreach (Thing thing in map.things)
1855 {
1856 if (thing.renderer.hasActor)
1857 {
1858 thing.renderer.KillActor();
1859 }
1860 }
1861 }
void KillActor()
CardRenderer renderer
Definition: Card.cs:64

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

Referenced by Game.Kill().

◆ OnLoad()

override void Zone.OnLoad ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 2039 of file Zone.cs.

2040 {
2041 if (branch != null)
2042 {
2043 branch.SetOwner(this);
2044 }
2045 events.OnLoad(this);
2046 }
void SetOwner(Zone zone)
void OnLoad(Zone _zone)

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

◆ OnRegenerate()

virtual void Zone.OnRegenerate ( )
inlinevirtual

Reimplemented in Zone_LittleGarden, and Zone_Town.

Definition at line 1243 of file Zone.cs.

1244 {
1245 }

Referenced by Activate().

◆ OnSimulateDay()

void Zone.OnSimulateDay ( VirtualDate  date)
inline

Definition at line 3668 of file Zone.cs.

3669 {
3670 if (base.IsPlayerFaction)
3671 {
3672 branch.OnSimulateDay(date);
3673 }
3674 }
void OnSimulateDay(VirtualDate date)

References FactionBranch.OnSimulateDay().

Referenced by VirtualDate.SimulateDay().

◆ OnSimulateHour()

void Zone.OnSimulateHour ( VirtualDate  date)
inline

Definition at line 3613 of file Zone.cs.

3614 {
3615 if (base.IsPlayerFaction)
3616 {
3617 branch.OnSimulateHour(date);
3618 }
3620 if (date.IsRealTime)
3621 {
3622 foreach (Thing thing in EClass._map.things)
3623 {
3624 if (thing.IsInstalled)
3625 {
3626 thing.trait.TryToggle();
3627 }
3628 }
3630 }
3631 EClass._map.things.ForeachReverse(delegate(Thing t)
3632 {
3633 t.OnSimulateHour(date);
3634 });
3635 foreach (Thing sucker in Suckers)
3636 {
3637 sucker.Destroy();
3638 }
3639 Suckers.Clear();
3640 if (RespawnRate != 0f)
3641 {
3642 int num = 0;
3643 foreach (Chara chara in map.charas)
3644 {
3645 if (!chara.IsGlobal)
3646 {
3647 num++;
3648 }
3649 }
3650 if (num < MaxRespawn)
3651 {
3652 for (int num2 = 0; num2 < RespawnPerHour; num2++)
3653 {
3654 SpawnMob();
3655 }
3656 }
3657 }
3658 if (!date.IsRealTime && EClass.rnd(24) == 0)
3659 {
3660 RainWater();
3661 }
3662 if (date.hour == 6)
3663 {
3664 GrowPlants(date);
3665 }
3666 }
virtual void OnSimulateHour(VirtualDate date)
Definition: Card.cs:7072
void DecayNatural(int hour=1)
Definition: Card.cs:7081
int hour
Definition: Date.cs:74
void OnSimulateHour(VirtualDate date)
virtual void TryToggle()
Definition: Trait.cs:1329
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:3703
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 3676 of file Zone.cs.

3677 {
3678 if (base.IsPlayerFaction)
3679 {
3680 branch.OnSimulateMonth(date);
3681 }
3682 if (date.IsRealTime)
3683 {
3685 }
3686 }
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 1137 of file Zone.cs.

1138 {
1139 if (EClass.world.date.IsExpired(base.dateRevive))
1140 {
1142 Revive();
1143 List<Chara> list = new List<Chara>();
1144 foreach (Chara chara in EClass._map.charas)
1145 {
1146 chara.TryRestock(onCreate: false);
1147 if (!chara.IsPCFaction)
1148 {
1149 chara.c_fur = 0;
1150 }
1151 if (chara.IsMinion && chara.master != null && !chara.master.IsPCParty)
1152 {
1153 list.Add(chara);
1154 }
1155 }
1156 foreach (Chara item in list)
1157 {
1158 item.Destroy();
1159 }
1160 }
1161 if (!EClass.game.isLoading)
1162 {
1164 }
1167 events.OnVisit();
1168 OnActivate();
1169 UpdateQuests();
1171 isSimulating = true;
1172 try
1173 {
1174 Simulate();
1175 }
1176 catch (Exception exception)
1177 {
1178 Debug.LogException(exception);
1179 }
1180 finally
1181 {
1182 isSimulating = false;
1183 }
1186 base.lastActive = EClass.world.date.GetRaw();
1187 if (!EClass.game.isLoading)
1188 {
1189 base.visitCount++;
1190 }
1191 base.version = EClass.core.version.GetInt();
1192 if (HasField(10000))
1193 {
1194 Tutorial.Reserve("field");
1195 }
1196 }
Version version
Definition: BaseCore.cs:17
void TryRestock(bool onCreate)
Definition: Chara.cs:4956
void OnAfterSimulate()
void AssignCharas()
Definition: RoomManager.cs:39
void Revive()
Definition: Zone.cs:1209
void RefreshDeathSentense()
Definition: Zone.cs:1198
void Simulate()
Definition: Zone.cs:1295
virtual void OnAfterSimulate()
Definition: Zone.cs:1287
void RefreshCriminal()
Definition: Zone.cs:3841
bool HasField(int idEle)
Definition: Zone.cs:3160
virtual void OnBeforeSimulate()
Definition: Zone.cs:1279
virtual void OnActivate()
Definition: Zone.cs:1247
void ResetHostility()
Definition: Zone.cs:2905
void UpdateQuests(bool force=false)
Definition: Zone.cs:3919
int GetInt()
Definition: Version.cs:39

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

Referenced by Activate().

◆ OnVisitNewMapOrRegenerate()

virtual void Zone.OnVisitNewMapOrRegenerate ( )
inlinevirtual

Reimplemented in Zone_Aquli, and Zone_Yowyn.

Definition at line 1283 of file Zone.cs.

1284 {
1285 }

Referenced by Activate().

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

3689 {
3691 {
3692 return;
3693 }
3694 EClass._map.bounds.ForeachCell(delegate(Cell c)
3695 {
3696 if (c.IsFarmField && !c.HasRoof)
3697 {
3698 c.isWatered = true;
3699 }
3700 });
3701 }
bool IsFarmField
Definition: Cell.cs:750
bool IsIndoor
Definition: Map.cs:131

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

Referenced by Activate(), and Weather.SetCondition().

◆ RefreshBGM()

void Zone.RefreshBGM ( )
inline

Definition at line 3303 of file Zone.cs.

3304 {
3306 {
3307 return;
3308 }
3310 Playlist playlist = map.plDay;
3311 foreach (ZoneEvent item in events.list)
3312 {
3313 if (item.playlist != null)
3314 {
3315 playlist = item.playlist;
3316 }
3317 }
3318 if (IDPlaylistOverwrite != null)
3319 {
3320 playlist = EClass.Sound.GetPlaylist(IDPlaylistOverwrite);
3321 }
3323 {
3324 Room room = EClass.pc.pos.cell.room;
3325 if (room != null && room.lot != null && room.lot.idBGM != 0)
3326 {
3327 playlist = EClass.Sound.plLot;
3328 if (playlist.list[0].data?.id != room.lot.idBGM)
3329 {
3330 playlist.list[0].data = EClass.core.refs.dictBGM.TryGetValue(room.lot.idBGM);
3331 playlist.Reset();
3332 if (!LayerDrama.keepBGM)
3333 {
3334 EClass.Sound.StopBGM(1f);
3335 }
3336 }
3337 }
3338 }
3340 EClass.Sound.SwitchPlaylist(playlist, !LayerDrama.keepBGM);
3341 }
bool IsInActiveZone
Definition: Chara.cs:885
void SetBGMInterval()
Definition: CoreConfig.cs:1030
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:77
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 Activate(), 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 3841 of file Zone.cs.

3842 {
3843 bool flag = EClass.player.IsCriminal && HasLaw && !AllowCriminal && !IsPCFaction;
3844 Hostility hostility = (flag ? Hostility.Neutral : Hostility.Friend);
3845 foreach (Chara chara in EClass._map.charas)
3846 {
3847 if (chara.trait is TraitGuard)
3848 {
3849 chara.hostility = hostility;
3850 if (!flag && chara.enemy != null && chara.enemy.IsPCParty)
3851 {
3852 chara.SetEnemy();
3853 }
3854 }
3855 }
3856 }
Chara enemy
Definition: Chara.cs:86
Chara SetEnemy(Chara c=null)
Definition: Chara.cs:6679
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(), ConIncognito.OnStart(), and OnVisit().

◆ RefreshDeathSentense()

void Zone.RefreshDeathSentense ( )
inline

Definition at line 1198 of file Zone.cs.

1199 {
1200 foreach (Chara chara in EClass._map.charas)
1201 {
1202 if (chara.HasCondition<ConDeathSentense>())
1203 {
1204 chara.GetCondition<ConDeathSentense>().TryRemove();
1205 }
1206 }
1207 }
BaseCondition GetCondition(string idCon)
Definition: Chara.cs:10066
bool HasCondition(string alias)
Definition: Chara.cs:10010

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

Referenced by Chara.Die(), and OnVisit().

◆ RefreshElectricity()

void Zone.RefreshElectricity ( )
inline

Definition at line 3175 of file Zone.cs.

3176 {
3177 dirtyElectricity = false;
3178 bool flag = GetSoilCost() > MaxSoil;
3179 base.electricity = elements.Value(2201) * 10 + BaseElectricity;
3180 foreach (Thing thing in EClass._map.things)
3181 {
3182 if (thing.IsInstalled && thing.trait.Electricity != 0 && (thing.isOn || thing.trait.Electricity > 0))
3183 {
3184 base.electricity += thing.trait.Electricity;
3185 }
3186 }
3187 if (!flag)
3188 {
3189 EClass._map.bounds.ForeachCell(delegate(Cell c)
3190 {
3191 if (c.sourceObj.id == 118 && c.growth.IsMature)
3192 {
3193 base.electricity += 20;
3194 }
3195 });
3196 }
3197 foreach (Thing thing2 in EClass._map.things)
3198 {
3199 if (thing2.IsInstalled)
3200 {
3201 thing2.trait.TryToggle();
3202 }
3203 }
3204 }
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 Activate(), TraitLeverBreaker.OnToggle(), Scene.OnUpdate(), TraitGenerator.Recover(), UIHomeInfo.Refresh(), and TraitGenerator.ShortOut().

◆ RefreshHat()

void Zone.RefreshHat ( )
inline

Definition at line 1127 of file Zone.cs.

1128 {
1129 if (idHat != null && EClass.world.date.IsExpired(base.dateHat))
1130 {
1131 idHat = null;
1132 base.dateHat = 0;
1133 }
1134 sourceHat = ((idHat != null) ? EClass.sources.cards.map[idHat] : ((IDHat != null) ? EClass.sources.cards.map[IDHat] : null));
1135 }
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, Spatial.idHat, IDHat, Date.IsExpired(), SourceCard.map, sourceHat, EClass.sources, and EClass.world.

Referenced by Activate(), and TraitHat.OnUse().

◆ RefreshListCitizen()

void Zone.RefreshListCitizen ( )
inline

Definition at line 3858 of file Zone.cs.

3859 {
3860 if (base.lv != 0)
3861 {
3862 return;
3863 }
3864 dictCitizen.Clear();
3865 foreach (Chara item in map.charas.Concat(map.deadCharas))
3866 {
3867 if (item.trait.IsCitizen && !item.IsGlobal && !item.isSubsetCard)
3868 {
3869 dictCitizen[item.uid] = item.Name;
3870 }
3871 }
3872 }
Dictionary< int, string > dictCitizen
Definition: Zone.cs:55

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

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

◆ RefreshPlaylist()

void Zone.RefreshPlaylist ( )
inline

Definition at line 3287 of file Zone.cs.

3288 {
3289 if (map.plDay == null)
3290 {
3291 map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList));
3292 }
3293 }

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

2183 {
2184 if (IsActiveZone)
2185 {
2187 }
2188 t.parent = null;
2189 if (t.isChara)
2190 {
2191 t.Chara.currentZone = null;
2192 }
2193 if (t.isThing && !t.trait.IDActorEx.IsEmpty())
2194 {
2196 }
2197 if (t.renderer.hasActor)
2198 {
2200 }
2201 }
override void OnLeaveScreen()
virtual bool isChara
Definition: Card.cs:2135
void OnCardRemovedFromZone(Card t)
Definition: Map.cs:835
void RemoveActorEx(Card c)
Definition: Scene.cs:1034
virtual string IDActorEx
Definition: Trait.cs:187

References CardRenderer.hasActor, Trait.IDActorEx, IsActiveZone, Card.isChara, Card.isThing, map, 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 3170 of file Zone.cs.

3171 {
3172 fieldElements.Remove(idEle);
3173 }
void Remove(int id)

References ElementContainer.Remove().

Referenced by GameDate.AdvanceMin().

◆ ResetHostility()

void Zone.ResetHostility ( )
inline

Definition at line 2905 of file Zone.cs.

2906 {
2907 foreach (Chara chara in EClass._map.charas)
2908 {
2909 if (!chara.source.hostility.IsEmpty() && chara.source.hostility.ToEnum<Hostility>() >= Hostility.Friend && !chara.IsPCFactionOrMinion)
2910 {
2911 chara.c_originalHostility = (Hostility)0;
2912 }
2913 chara.hostility = chara.OriginalHostility;
2914 if (chara.enemy != null && (chara.enemy.IsPCFaction || chara.IsPCFaction))
2915 {
2916 chara.SetEnemy();
2917 }
2918 }
2919 }
bool IsPCFactionOrMinion
Definition: Card.cs:2342
SourceChara.Row source
Definition: Chara.cs:162

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

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

◆ ResetPlaylist()

void Zone.ResetPlaylist ( )
inline

Definition at line 3295 of file Zone.cs.

3296 {
3297 map._plDay.Clear();
3298 UnityEngine.Object.DestroyImmediate(map.plDay);
3299 map.plDay = null;
3301 }

References Map._plDay, and Map.plDay.

◆ Revive()

void Zone.Revive ( )
inline

Definition at line 1209 of file Zone.cs.

1210 {
1211 base.dateRevive = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRevive;
1212 if (ShouldAutoRevive)
1213 {
1214 foreach (Chara deadChara in map.deadCharas)
1215 {
1216 if (deadChara.trait.CanAutoRevive && deadChara.CanRevive())
1217 {
1218 deadChara.Revive();
1220 {
1221 deadChara.RemoveBacker();
1222 }
1223 EClass._zone.AddCard(deadChara, (deadChara.orgPos != null && deadChara.orgPos.IsInBounds) ? deadChara.orgPos : deadChara.pos);
1224 }
1225 }
1226 }
1227 foreach (Chara value in EClass.game.cards.globalCharas.Values)
1228 {
1229 if (value.isDead && value.CanRevive() && value.homeZone == this)
1230 {
1231 value.Revive();
1232 Point point = GetSpawnPos(value);
1233 if (value.orgPos != null && value.orgPos.IsInBounds)
1234 {
1235 point = value.orgPos.GetNearestPoint() ?? point;
1236 }
1237 EClass._zone.AddCard(value, point);
1238 }
1239 }
1240 map.deadCharas.Clear();
1241 }
int c_idBacker
Definition: Card.cs:1477
bool CanRevive()
Definition: Chara.cs:5439
void Revive(Point p=null, bool msg=false)
Definition: Chara.cs:5465
Zone homeZone
Definition: Chara.cs:271
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(), GetSpawnPos(), CardManager.globalCharas, Chara.homeZone, CoreConfig.Test.ignoreBackerDestoryFlag, Card.isBackerContent, Chara.isDead, Point.IsInBounds, map, Chara.orgPos, EClass.player, Card.pos, Card.RemoveBacker(), Chara.Revive(), EClass.setting, ShouldAutoRevive, CoreConfig.test, Chara.trait, and EClass.world.

Referenced by OnVisit(), and Map.ResetEditorPos().

◆ SetAlarm()

virtual void Zone.SetAlarm ( bool  enable)
inlinevirtual

Reimplemented in Zone_CurryRuinDungeon.

Definition at line 3874 of file Zone.cs.

3875 {
3876 base.isAlarmSet = enable;
3877 if (enable)
3878 {
3879 foreach (Chara chara in EClass._map.charas)
3880 {
3881 if (!chara.IsPCFactionOrMinion)
3882 {
3883 chara.SetHostility(Hostility.Enemy);
3884 }
3885 }
3886 Msg.Say("alarm");
3887 Msg.Say("alarm2");
3888 SE.Play("alarm");
3889 return;
3890 }
3891 foreach (Chara chara2 in EClass._map.charas)
3892 {
3893 if (!chara2.IsPCFactionOrMinion)
3894 {
3895 chara2.SetHostility(Hostility.Neutral);
3896 }
3897 }
3898 }
Chara SetHostility(Hostility h)
Definition: Chara.cs:1505

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

3283 {
3284 SetBGM(new List<int> { id }, refresh, fadeDuration);
3285 }

◆ SetBGM() [2/2]

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

Definition at line 3245 of file Zone.cs.

3246 {
3247 map._plDay.Clear();
3248 if (ids.Count > 0)
3249 {
3250 foreach (int id in ids)
3251 {
3252 if (id != -1)
3253 {
3254 map._plDay.Add(id);
3255 }
3256 }
3257 }
3258 UnityEngine.Object.DestroyImmediate(map.plDay);
3259 map.plDay = null;
3261 if (!refresh)
3262 {
3263 return;
3264 }
3265 if (fadeDuration > 0f)
3266 {
3267 EClass.Sound.StopBGM(fadeDuration, playLastBGM: false, delegate
3268 {
3270 {
3271 RefreshBGM();
3272 }
3273 });
3274 }
3275 else
3276 {
3277 EClass.Sound.StopBGM();
3278 RefreshBGM();
3279 }
3280 }
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(), OnActivate(), Zone_DungeonDead.OnActivate(), Zone_Nefu.OnActivate(), ZoneEventDefenseGame.OnVisit(), ZoneEventHarvest.OnVisit(), ZoneEventSubdue.OnVisit(), DramaManager.ParseLine(), GoalCombat.Run(), Zone_CurryRuinDungeon.SetAlarm(), CardRenderer.ShowBossText(), ActThrow.Throw(), and Chara.TryDropBossLoot().

◆ SetFieldEffect()

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

Definition at line 3165 of file Zone.cs.

3166 {
3167 fieldElements.SetBase(idEle, a, duration);
3168 }
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 1295 of file Zone.cs.

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

Referenced by OnVisit().

◆ SpawnAltar()

void Zone.SpawnAltar ( )
inline

Definition at line 2719 of file Zone.cs.

2720 {
2722 {
2723 if (r.points.Count <= 4)
2724 {
2725 return false;
2726 }
2727 map.poiMap.OccyupyPOI(r.points[0]);
2728 List<Point> points = r.points;
2729 Religion randomReligion = EClass.game.religions.GetRandomReligion();
2730 "altarPoint".lang(randomReligion.NameDomain.lang());
2731 Thing thing = ThingGen.Create("altar");
2732 (thing.trait as TraitAltar).SetDeity(randomReligion.id);
2733 Chara t = CharaGen.Create("twintail");
2734 EClass._zone.AddCard(t, points.RandomItem());
2735 for (int i = 0; i < 2 + EClass.rnd(2); i++)
2736 {
2737 Chara t2 = CharaGen.Create("twintail");
2738 EClass._zone.AddCard(t2, points.RandomItem());
2739 }
2740 if (points[0].Installed == null)
2741 {
2742 EClass._zone.AddCard(thing, points[0]).Install();
2743 }
2744 foreach (Point item in points)
2745 {
2746 if (item.x % 3 == 0 && item.z % 2 == 0 && item != points[0] && !item.Equals(points[0].Front) && item.Installed == null)
2747 {
2748 thing = ThingGen.Create("pillar1");
2749 EClass._zone.AddCard(thing, item).Install();
2750 }
2751 item.SetObj();
2752 item.SetFloor(3, 6);
2753 }
2754 return true;
2755 });
2756 }
mods...$ Installed
Definition: ModManager.cs:917
Crawler start
Definition: CoreRef.cs:217
Crawlers crawlers
Definition: CoreRef.cs:346
ReligionManager religions
Definition: Game.cs:159
POIMap poiMap
Definition: Map.cs:97
Point GetCenter()
Definition: POIMap.cs:13
Cell GetCenterCell(int radius=1)
Definition: POIMap.cs:65
void OccyupyPOI(Point p, int radius=0)
Definition: POIMap.cs:99
Religion GetRandomReligion(bool onlyJoinable=true, bool includeMinor=false)

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

Referenced by Generate().

◆ SpawnLostItems()

void Zone.SpawnLostItems ( )
inline

Definition at line 4042 of file Zone.cs.

4043 {
4044 for (int i = 0; i < 2 + EClass.rnd(4); i++)
4045 {
4046 Point point = GetPos();
4047 if (point == null)
4048 {
4049 continue;
4050 }
4051 if (EClass.rnd(30) == 0)
4052 {
4053 Thing thing = ThingGen.Create("purse");
4054 thing.isLostProperty = true;
4055 thing.things.DestroyAll();
4056 int num = (thing.c_lockLv = EClass.rndHalf(Mathf.Min(base.development / 10 + 10, 50)));
4057 thing.Add("money", EClass.rndHalf(num * 60 + 1000));
4058 if (EClass.rnd(2) == 0)
4059 {
4060 thing.Add("plat", EClass.rnd(4));
4061 }
4062 else
4063 {
4064 thing.Add("medal", EClass.rnd(2));
4065 }
4066 EClass._zone.AddCard(thing, point);
4067 }
4068 else
4069 {
4071 }
4072 }
4073 static Point GetPos()
4074 {
4075 for (int j = 0; j < 10; j++)
4076 {
4077 Point randomPoint = EClass._zone.bounds.GetRandomPoint();
4078 if (!randomPoint.IsBlocked && !randomPoint.HasThing && !randomPoint.HasObj && !randomPoint.HasBlock)
4079 {
4080 return randomPoint;
4081 }
4082 }
4083 return null;
4084 }
4085 }
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.

Referenced by Activate().

◆ SpawnMob() [1/2]

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

Definition at line 2979 of file Zone.cs.

2980 {
2981 if (setting == null)
2982 {
2984 }
2985 if (pos == null)
2986 {
2987 pos = GetSpawnPos(setting.position, setting.tries);
2988 if (pos == null)
2989 {
2990 pos = GetSpawnPos(SpawnPosition.Random, setting.tries);
2991 if (pos == null)
2992 {
2993 return null;
2994 }
2995 }
2996 }
2998 if (IsUnderwater && EClass.rnd(15) != 0)
2999 {
3001 }
3002 SpawnList spawnList = null;
3003 if (setting.idSpawnList != null)
3004 {
3005 spawnList = SpawnList.Get(setting.idSpawnList);
3006 }
3007 else if (EClass._zone is Zone_DungeonYeek && EClass.rnd(5) != 0)
3008 {
3009 spawnList = SpawnListChara.Get("dungeon_yeek", (SourceChara.Row r) => r.race == "yeek" && r.quality == 0);
3010 }
3011 else if (EClass._zone is Zone_DungeonDragon && EClass.rnd(5) != 0)
3012 {
3013 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);
3014 }
3015 else if (EClass._zone is Zone_DungeonMino && EClass.rnd(5) != 0)
3016 {
3017 spawnList = SpawnListChara.Get("dungeon_mino", (SourceChara.Row r) => r.race == "minotaur" && r.quality == 0);
3018 }
3019 else if (setting.hostility == SpawnHostility.Neutral || (setting.hostility != SpawnHostility.Enemy && Rand.Range(0f, 1f) < ChanceSpawnNeutral))
3020 {
3021 spawnList = SpawnList.Get(IsInstance ? "c_neutral_war" : "c_neutral");
3022 }
3023 else if (biome.spawn.chara.Count > 0)
3024 {
3025 string randomCharaId = biome.spawn.GetRandomCharaId();
3026 spawnList = ((!IsInstance) ? SpawnList.Get(randomCharaId) : SpawnList.Get("instance_" + randomCharaId, randomCharaId, new CharaFilter
3027 {
3028 ShouldPass = (SourceChara.Row s) => (!(s.hostility != "") || (!s.tag.Contains("cat") && !s.race_row.tag.Contains("cat"))) ? true : false
3029 }));
3030 }
3031 else
3032 {
3033 spawnList = SpawnList.Get(biome.name, "chara", new CharaFilter
3034 {
3035 ShouldPass = delegate(SourceChara.Row s)
3036 {
3037 if (s.hostility != "")
3038 {
3039 return false;
3040 }
3041 return s.biome == biome.name || s.biome.IsEmpty();
3042 }
3043 });
3044 }
3045 int num = ((setting.dangerLv == -1) ? DangerLv : setting.dangerLv);
3046 CardBlueprint cardBlueprint = new CardBlueprint
3047 {
3048 rarity = Rarity.Normal,
3049 idEle = setting.idEle
3050 };
3051 int num2 = ((setting.filterLv == -1) ? num : setting.filterLv);
3052 if (ScaleType == ZoneScaleType.Void)
3053 {
3054 num2 = ((num - 1) % 50 + 5) * 150 / 100;
3055 if (num2 >= 20 && EClass.rnd(100) < num2)
3056 {
3057 num2 = num;
3058 }
3059 }
3060 CardRow cardRow = (setting.id.IsEmpty() ? spawnList.Select(num2, setting.levelRange) : EClass.sources.cards.map[setting.id]);
3061 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)
3062 {
3063 cardRow = EClass.sources.cards.map["santa"];
3065 }
3066 if (cardRow == null)
3067 {
3068 Debug.LogError("SpawnMob: no spawn row list/" + spawnList?.id + "/biome/" + biome.name + "/zone/" + Name);
3069 return null;
3070 }
3071 long num3 = ((setting.fixedLv == -1) ? cardRow.LV : setting.fixedLv);
3072 bool flag = setting.fixedLv != -1 || setting.addLv > 0 || DangerLvBoost > 0;
3073 num3 += setting.addLv;
3074 if (ScaleType == ZoneScaleType.Void)
3075 {
3076 num3 = (50L + (long)cardRow.LV) * Mathf.Max(1, (num - 1) / 50);
3077 flag = true;
3078 }
3079 num3 += DangerLvBoost;
3080 if (flag && num3 <= Mathf.Max(50, cardRow.LV))
3081 {
3082 flag = false;
3083 }
3084 if (setting.rarity == Rarity.Random && cardRow.quality == 0)
3085 {
3086 if (EClass.rnd(EClass.pc.HasElement(1271) ? 80 : 100) == 0)
3087 {
3088 cardBlueprint.rarity = Rarity.Legendary;
3089 num3 = num3 * 125 / 100;
3090 }
3091 }
3092 else
3093 {
3094 cardBlueprint.rarity = setting.rarity;
3095 }
3096 if (setting.isBoss)
3097 {
3098 num3 = num3 * 150 / 100;
3099 }
3100 if (setting.isEvolved)
3101 {
3102 num3 = num3 * 2 + 20;
3103 }
3104 if (num3 != cardRow.LV)
3105 {
3106 cardBlueprint.lv = (int)Mathf.Min(num3, 100000000f);
3107 }
3108 CardBlueprint.Set(cardBlueprint);
3109 Chara chara = CharaGen.Create(cardRow.id, num2);
3110 if (!flag)
3111 {
3112 chara.isScaled = false;
3113 }
3114 AddCard(chara, pos);
3115 if (setting.forcedHostility.HasValue)
3116 {
3117 Hostility c_originalHostility = (chara.hostility = setting.forcedHostility.Value);
3118 chara.c_originalHostility = c_originalHostility;
3119 }
3120 else
3121 {
3122 switch (chara.id)
3123 {
3124 case "unicorn":
3125 if (EClass.pc.HasElement(1216) && EClass.pc.Evalue(418) < 1)
3126 {
3127 chara.SetHostility(Hostility.Enemy);
3128 }
3129 break;
3130 case "santa":
3131 case "silverwolf":
3132 case "twintail":
3133 case "test17":
3134 if (EClass.pc.HasElement(1270))
3135 {
3136 chara.SetHostility(Hostility.Friend);
3137 }
3138 else if (EClass.pc.HasElement(1271))
3139 {
3140 chara.SetHostility(Hostility.Enemy);
3141 }
3142 break;
3143 }
3144 }
3145 if (setting.isBoss)
3146 {
3147 chara.c_bossType = BossType.Boss;
3148 }
3149 if (setting.isEvolved)
3150 {
3151 chara.c_bossType = BossType.Evolved;
3152 }
3153 if (DangerLv >= 20 && !IsPCFaction && !IsTown && EClass.rnd(200) == 0)
3154 {
3156 }
3157 return chara;
3158 }
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:6379
BiomeProfile biome
Definition: Cell.cs:1099
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:9838
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 2399 of file Zone.cs.

2400 {
2401 int num = 0;
2402 if (p.cell.detail != null)
2403 {
2404 foreach (Thing thing in p.cell.detail.things)
2405 {
2406 if (thing.placeState == PlaceState.roaming)
2407 {
2408 if (target.TryStackTo(thing))
2409 {
2410 return true;
2411 }
2412 num++;
2413 }
2414 }
2415 }
2416 if (num == 0 || !destroyIfFail)
2417 {
2418 EClass._zone.AddCard(target, p);
2419 return true;
2420 }
2421 target.Destroy();
2422 return false;
2423 }
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(), Card.GiveBirth(), and TryAddThingInSpot< T >().

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

2300 {
2301 Thing thing = FindSharedContainer(t, containers, sharedOnly);
2302 if (thing == null)
2303 {
2304 return false;
2305 }
2306 if (add)
2307 {
2308 if (msg)
2309 {
2310 chara?.Say("putSharedItem", chara, t, thing.GetName(NameStyle.Full));
2311 }
2312 thing.AddThing(t);
2313 }
2314 return true;
2315 }
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:3280
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7319
Thing FindSharedContainer(Thing t, List< Thing > containers=null, bool sharedOnly=true)
Definition: Zone.cs:2317

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

Referenced by AI_Haul.GetThingToClean(), AI_Haul.Run(), TryAddThingInSpot< T >(), 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 2208 of file Zone.cs.

2208 : Trait
2209 {
2210 Thing randomThing = EClass._map.props.installed.traits.GetRandomThing<T>();
2211 if (randomThing == null)
2212 {
2214 {
2216 }
2217 else
2218 {
2220 }
2221 return false;
2222 }
2223 if (useContainer && (!t.IsContainer || t.things.Count == 0))
2224 {
2225 List<Thing> list = new List<Thing>();
2226 foreach (Point item in randomThing.trait.ListPoints(null, onlyPassable: false))
2227 {
2228 foreach (Card item2 in item.ListCards())
2229 {
2230 if (item2.IsContainer && !(item2.trait is TraitDeliveryChest))
2231 {
2232 list.Add(item2.Thing);
2233 }
2234 }
2235 }
2236 if (TryAddThingInSharedContainer(t, list, add: true, msg: false, null, sharedOnly: false))
2237 {
2238 return true;
2239 }
2240 }
2242 {
2243 TryAddThing(t, randomThing.trait.GetRandomPoint());
2244 }
2245 else
2246 {
2247 AddCard(t, randomThing.trait.GetRandomPoint());
2248 }
2249 return true;
2250 }
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:848
virtual List< Point > ListPoints(Point center=null, bool onlyPassable=true, bool allowChara=true)
Definition: Trait.cs:866
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:2299
bool TryAddThing(Thing target, Point p, bool destroyIfFail=false)
Definition: Zone.cs:2399

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

◆ TryGenerateBigDaddy()

void Zone.TryGenerateBigDaddy ( )
inline

Definition at line 2831 of file Zone.cs.

2832 {
2833 if (!(BigDaddyChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f) <= EClass.rndf(1f)))
2834 {
2835 Point spawnPos = GetSpawnPos(SpawnPosition.Random, 10000);
2836 List<string> list = new List<string> { "big_daddy", "big_daddy2" };
2837 list.Shuffle();
2838 Spawn(list[0], spawnPos);
2839 if (EClass.rnd(EClass.debug.enable ? 2 : 20) == 0)
2840 {
2841 Spawn(list[1], spawnPos.GetNearestPoint(allowBlock: false, allowChara: false));
2842 }
2843 Msg.Say("sign_bigdaddy");
2844 }
2845 void Spawn(string id, Point pos)
2846 {
2847 int num = (int)((long)DangerLv * 125L / 100);
2848 if (num >= 30)
2849 {
2851 {
2852 lv = num
2853 });
2854 }
2855 Chara chara = CharaGen.Create(id);
2856 if (EClass.pc.HasElement(1270))
2857 {
2858 chara.SetHostility(Hostility.Friend);
2859 }
2860 else if (EClass.pc.HasElement(1271))
2861 {
2862 chara.SetHostility(Hostility.Enemy);
2863 }
2864 EClass._zone.AddCard(chara, pos);
2865 }
2866 }
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 2811 of file Zone.cs.

2812 {
2813 float num = EvolvedChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f);
2814 if (!force && num <= EClass.rndf(1f))
2815 {
2816 return null;
2817 }
2818 Chara chara = SpawnMob(p, SpawnSetting.Evolved());
2819 for (int i = 0; i < 2 + EClass.rnd(2); i++)
2820 {
2821 chara.ability.AddRandom();
2822 }
2823 chara.AddThing(chara.MakeGene(DNA.Type.Default));
2824 if (EClass.rnd(2) == 0)
2825 {
2826 chara.AddThing(chara.MakeGene(DNA.Type.Superior));
2827 }
2828 return chara;
2829 }
void AddRandom()
Thing MakeGene(DNA.Type? type=null)
Definition: Chara.cs:8681
CharaAbility ability
Definition: Chara.cs:428
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 2784 of file Zone.cs.

2785 {
2786 if (OreChance <= 0f)
2787 {
2788 return;
2789 }
2790 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)
2791 {
2792 byte b = 18;
2793 string text = "ore";
2794 if (EClass.rnd(5) == 0)
2795 {
2796 b++;
2797 text = "gem";
2798 }
2799 SourceMaterial.Row randomMaterial = MATERIAL.GetRandomMaterial(DangerLv, text);
2800 foreach (Point point in r.points)
2801 {
2802 if (point.sourceBlock.ContainsTag("ore"))
2803 {
2804 map.SetObj(point.x, point.z, randomMaterial.id, b, 1, 0);
2805 }
2806 }
2807 return false;
2808 });
2809 }
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 2868 of file Zone.cs.

2869 {
2870 float num = ShrineChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f);
2871 for (int i = 0; i < 3; i++)
2872 {
2873 Rand.SetSeed(base.uid + i);
2874 if (num <= EClass.rndf(1f))
2875 {
2876 continue;
2877 }
2878 Point randomSpace = EClass._map.GetRandomSpace(3, 3);
2879 if (randomSpace == null)
2880 {
2881 continue;
2882 }
2883 randomSpace.x++;
2884 randomSpace.z++;
2885 if (randomSpace.HasThing || randomSpace.HasChara)
2886 {
2887 continue;
2888 }
2889 randomSpace.SetObj();
2892 if (EClass.rnd(EClass.debug.test ? 2 : 15) == 0)
2893 {
2894 EClass._zone.AddCard(ThingGen.Create("pedestal_power"), randomSpace).Install();
2895 EClass._zone.AddCard(ThingGen.Create(EClass.gamedata.godStatues.RandomItemWeighted((GodStatueData a) => a.chance).idThing, -1, DangerLv), randomSpace).Install();
2896 }
2897 else
2898 {
2899 EClass._zone.AddCard(ThingGen.Create("statue_power", -1, DangerLv), randomSpace).Install().SetRandomDir();
2900 }
2901 }
2902 Rand.SetSeed();
2903 }
void SetRandomDir()
Definition: Card.cs:6703
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 2441 of file Zone.cs.

2441 : TraitSpot
2442 {
2443 List<T> list = new List<T>();
2444 foreach (Thing thing2 in EClass._map.things)
2445 {
2446 if (thing2.IsInstalled && thing2.trait is T)
2447 {
2448 list.Add(thing2.trait as T);
2449 }
2450 }
2451 foreach (T item in list)
2452 {
2453 foreach (Point item2 in item.ListPoints(null, onlyPassable: false))
2454 {
2455 foreach (Thing thing3 in item2.Things)
2456 {
2457 if (!thing3.IsInstalled || thing3.isSale)
2458 {
2459 continue;
2460 }
2461 if (thing3.things.Count == 0)
2462 {
2463 if (IsValid(thing3, insideContainer: false))
2464 {
2465 return thing3;
2466 }
2467 continue;
2468 }
2469 Thing thing = thing3.things.Find((Thing _t) => IsValid(_t, insideContainer: true));
2470 if (thing != null)
2471 {
2472 return thing;
2473 }
2474 }
2475 }
2476 }
2477 return null;
2478 bool IsValid(Thing t, bool insideContainer)
2479 {
2480 if (t.category.id != idCat || !TraitSalesTag.CanTagSale(t, insideContainer))
2481 {
2482 return false;
2483 }
2484 return true;
2485 }
2486 }
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 2425 of file Zone.cs.

2426 {
2427 foreach (Thing container in EClass._map.props.installed.containers)
2428 {
2429 if (container.IsSharedContainer)
2430 {
2431 Thing thing = container.things.Find(func);
2432 if (thing != null)
2433 {
2434 return thing;
2435 }
2436 }
2437 }
2438 return null;
2439 }

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

2252 : TraitSpot
2253 {
2254 List<T> list = new List<T>();
2255 List<Thing> list2 = new List<Thing>();
2256 foreach (Thing thing in EClass._map.things)
2257 {
2258 if (thing.IsInstalled && thing.trait is T)
2259 {
2260 list.Add(thing.trait as T);
2261 }
2262 }
2263 foreach (T item in list)
2264 {
2265 foreach (Point item2 in item.ListPoints(null, onlyPassable: false))
2266 {
2267 foreach (Thing thing2 in item2.Things)
2268 {
2269 if (!thing2.IsInstalled)
2270 {
2271 continue;
2272 }
2273 if (thing2.things.Count == 0)
2274 {
2275 if (IsValid(thing2))
2276 {
2277 list2.Add(thing2);
2278 }
2279 continue;
2280 }
2281 foreach (Thing item3 in thing2.things.List((Thing _t) => IsValid(_t)))
2282 {
2283 list2.Add(item3);
2284 }
2285 }
2286 }
2287 }
2288 return list2;
2289 bool IsValid(Thing t)
2290 {
2291 if (func != null && !func(t))
2292 {
2293 return false;
2294 }
2295 return true;
2296 }
2297 }
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 2685 of file Zone.cs.

2686 {
2687 bool flag = EClass.pc.HasCondition<ConDrawBacker>();
2688 if (!EClass.debug.enable && EClass.rnd(flag ? 3 : 20) != 0)
2689 {
2690 return;
2691 }
2692 Point randomSurface = EClass._map.bounds.GetRandomSurface();
2693 if (!randomSurface.IsValid)
2694 {
2695 return;
2696 }
2697 Chara c = CharaGen.Create("follower");
2698 EClass._zone.AddCard(c, randomSurface);
2699 (EClass._zone.AddThing("gallows", randomSurface).Install().trait as TraitShackle).Restrain(c);
2700 c.c_rescueState = RescueState.WaitingForRescue;
2701 if (EClass.rnd(flag ? 1 : 2) == 0 || EClass.debug.enable)
2702 {
2704 if (row != null)
2705 {
2706 c.ApplyBacker(row.id);
2707 }
2708 }
2709 Religion faith = EClass.game.religions.dictAll.Values.Where((Religion a) => a != c.faith).RandomItem();
2710 for (int num = 0; num < 3 + EClass.rnd(4); num++)
2711 {
2712 Chara chara = CharaGen.Create("fanatic");
2713 chara.SetFaith(faith);
2714 Point point = randomSurface.GetRandomPoint(4) ?? randomSurface.GetNearestPoint();
2715 EClass._zone.AddCard(chara, point);
2716 }
2717 }
RescueState
Definition: RescueState.cs:2
static int indexFollower
Religion faith
Definition: Chara.cs:443
void SetFaith(string id)
Definition: Chara.cs:1776
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.

Referenced by Generate().

◆ UnloadMap()

void Zone.UnloadMap ( )
inline

Definition at line 1863 of file Zone.cs.

1864 {
1865 map = null;
1866 if (bp != null)
1867 {
1868 bp.map = null;
1869 }
1870 if (branch != null)
1871 {
1873 }
1874 Debug.Log("Unloaded Map:" + this);
1875 }
void OnUnloadMap()

References bp, branch, Debug, map, and FactionBranch.OnUnloadMap().

Referenced by _OnBeforeSave(), Activate(), ClearZones(), Deactivate(), and Destroy().

◆ UpdateQuests()

void Zone.UpdateQuests ( bool  force = false)
inline

Definition at line 3919 of file Zone.cs.

3920 {
3921 if (!IsPCFaction && (!(this is Zone_Town) || base.lv != 0))
3922 {
3923 return;
3924 }
3925 Debug.Log("Updating Quest:" + force);
3926 List<SourceQuest.Row> list = EClass.sources.quests.rows.Where((SourceQuest.Row a) => a.group == "random").ToList();
3927 int num = 0;
3928 foreach (Chara item in map.charas.Concat(map.deadCharas))
3929 {
3930 if (item.quest != null && !EClass.game.quests.list.Contains(item.quest))
3931 {
3932 if (item.quest.IsExpired || completedQuests.Contains(item.quest.uid) || force)
3933 {
3934 item.quest = null;
3935 }
3936 else
3937 {
3938 num++;
3939 }
3940 }
3941 }
3942 if (EClass._zone.dateQuest > EClass.world.date.GetRaw() && !force)
3943 {
3944 return;
3945 }
3946 EClass._zone.dateQuest = EClass.world.date.GetRaw() + 1440;
3947 int maxQuest = 3;
3948 Rand.UseSeed(base.uid + EClass.player.stats.days / 7 % 100, delegate
3949 {
3950 maxQuest = 4 + EClass.rnd(4);
3951 });
3952 completedQuests.Clear();
3953 List<Zone> list2 = Quest.ListDeliver();
3954 List<Tuple<string, int>> listTag = new List<Tuple<string, int>>();
3955 string[] array = EClass._zone.source.questTag;
3957 {
3958 array = new string[9] { "supply/8", "deliver/7", "food/8", "escort/4", "deliver/4", "monster/0", "war/0", "farm/0", "music/0" };
3959 }
3960 string[] array2 = array;
3961 for (int num2 = 0; num2 < array2.Length; num2++)
3962 {
3963 string[] array3 = array2[num2].Split('/');
3964 listTag.Add(new Tuple<string, int>(array3[0], array3[1].ToInt()));
3965 }
3966 for (int num3 = 0; num3 < map.charas.Count * 2; num3++)
3967 {
3968 if (num > maxQuest)
3969 {
3970 break;
3971 }
3972 if (num > 15)
3973 {
3974 break;
3975 }
3976 Chara chara = map.charas.RandomItem();
3977 if (!chara.trait.CanGiveRandomQuest || chara.isSubsetCard || chara.homeZone != EClass._zone || chara.IsGuest() || chara.memberType == FactionMemberType.Livestock || (chara.quest != null && !force))
3978 {
3979 continue;
3980 }
3981 SourceQuest.Row row = list.RandomItemWeighted(delegate(SourceQuest.Row a)
3982 {
3983 int num4 = 1;
3984 foreach (Tuple<string, int> item2 in listTag)
3985 {
3986 if (a.tags.Contains(item2.Item1))
3987 {
3988 num4 = item2.Item2;
3989 break;
3990 }
3991 }
3992 if (!EClass._zone.IsPCFaction && a.tags.Contains("bulk"))
3993 {
3994 num4 = 0;
3995 }
3996 return a.chance * num4;
3997 });
3998 if ((!row.tags.Contains("needDestZone") || list2.Count >= 2) && (row.minFame <= 0 || row.minFame < EClass.player.fame || EClass.debug.enable))
3999 {
4000 Quest.Create(row.id, null, chara);
4001 num++;
4002 }
4003 }
4004 }
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:119
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(), OnVisit(), 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 3551 of file Zone.cs.

3552 {
3553 }

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(), CreateBP(), Generate(), GetProfile(), and UnloadMap().

◆ 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(), and Deactivate().

◆ 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.

Referenced by AddCard().

◆ instance

◆ isSimulating

bool Zone.isSimulating

Definition at line 78 of file Zone.cs.

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

◆ 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 Activate(), and AI_Idle.Run().

◆ pendingSimHours

int Zone.pendingSimHours

Definition at line 37 of file Zone.cs.

Referenced by Simulate(), and Player.SimulateFaction().

◆ sourceHat

CardRow Zone.sourceHat
static

Definition at line 29 of file Zone.cs.

Referenced by CharaRenderer.Draw(), and RefreshHat().

◆ 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:2645

Referenced by Scene.Init(), TraitNewZone.MoveZone(), ActEffect.Proc(), AI_Idle.Run(), Simulate(), 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 Generate(), 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.

Referenced by Simulate().

◆ 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 }

Referenced by Activate().

◆ 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.

Referenced by Generate().

◆ 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.

Referenced by RefreshHat().

◆ IDPlayList

virtual string Zone.IDPlayList
get

Definition at line 148 of file Zone.cs.

Referenced by Generate().

◆ 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.

Referenced by GetProfile().

◆ 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

◆ 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(), CanDestroy(), Chara.CanDestroyPath(), ActRestrain.CanPerform(), QuestIntoDarkness.CanUpdateOnTalk(), QuestVernis.CanUpdateOnTalk(), TraitGeneratorWheel.CanUse(), TraitLoytelMart.CanUse(), TraitMannequin.CanUse(), TraitShackle.CanUse(), GameLang.ConvertDrama(), Faction.CountWealth(), Card.Create(), ActEffect.DamageEle(), Deactivate(), Chara.DoHostileAction(), CoreDebug.Fix_LostCore(), RankedZone.GetFactionName(), TaskBuild.GetHitResult(), TaskDig.GetHitResult(), Card.GetPrice(), GetRandomVisitPos(), Chara.GetRevived(), GetSpawnPos(), 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(), Simulate(), 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.

Referenced by Activate().

◆ 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.

Referenced by Simulate().

◆ 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(), _OnBeforeSave(), 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(), GetSpawnPos(), 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.

Referenced by Activate().

◆ 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 }

Referenced by Revive().

◆ 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: