Elin Decompiled Documentation EA 23.312 Nightly Patch 4
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)
 
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)
 
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)
 
int GetDeepestLv ()
 
int GetDeepestLv (ref int max)
 
List< ElementListLandFeats ()
 
ZoneExportData Import (string path)
 
void Export (string path, PartialMap partial=null, bool usermap=false)
 
void ExportDialog (string dir=null)
 
void ImportDialog (string dir=null)
 
void Export ()
 
void WriteNote (UINote n, Action< UINote > onWriteNote=null, IInspect.NoteMode mode=IInspect.NoteMode.Default, Recipe recipe=null)
 
void OnInspect ()
 
int GetSortVal ()
 
Chara AddRandomVisitor (bool guest=false)
 
void OnSimulateHour (VirtualDate date)
 
void OnSimulateDay (VirtualDate date)
 
void OnSimulateMonth (VirtualDate date)
 
void RainWater ()
 
void GrowPlants (VirtualDate date)
 
Zone GetZoneAt (int _x, int _y)
 
bool IsCrime (Chara c, Act act)
 
void RefreshCriminal ()
 
void RefreshListCitizen ()
 
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 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
 
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 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 1936 of file Zone.cs.

1937 {
1938 if (CanDestroy())
1939 {
1940 Debug.Log("Deleting Zone:" + this);
1941 if (!destryoed)
1942 {
1943 Destroy();
1944 }
1945 }
1946 else if (map != null)
1947 {
1948 Debug.Log("Saving Zone:" + this);
1949 map.Save(base.pathSave);
1950 if (!base.isMapSaved)
1951 {
1952 base.isMapSaved = true;
1953 IO.DeleteDirectory(base.pathSave + "Texture Replace");
1954 IO.CopyDir(pathTemp + "Texture Replace", base.pathSave + "/Texture Replace");
1955 }
1956 if (!IsActiveZone)
1957 {
1958 UnloadMap();
1959 }
1960 }
1961 }
Definition: IO.cs:11
static void DeleteDirectory(string path)
Definition: IO.cs:385
static void CopyDir(string sourceDirectory, string targetDirectory, Func< string, bool > funcExclude=null)
Definition: IO.cs:277
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:1871
override void Destroy()
Definition: Zone.cs:1972
bool IsActiveZone
Definition: Zone.cs:499
void UnloadMap()
Definition: Zone.cs:1787
string pathTemp
Definition: Zone.cs:165
Map map
Definition: Zone.cs:63

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

◆ AbandonZone()

void Zone.AbandonZone ( )
inline

Definition at line 1855 of file Zone.cs.

1856 {
1857 FactionBranch destBranch = ((EClass.pc.homeBranch == branch) ? EClass.game.StartZone.branch : EClass.pc.homeBranch);
1858 branch.members.ForeachReverse(delegate(Chara m)
1859 {
1860 destBranch.AddMemeber(m);
1861 if (!m.IsPCParty)
1862 {
1863 m.MoveZone(destBranch.owner);
1864 }
1865 });
1867 SetMainFaction(null);
1868 base.dateExpire = EClass.world.date.GetRaw() + 10080;
1869 }
Definition: Chara.cs:10
override bool IsPCParty
Definition: Chara.cs:633
FactionBranch homeBranch
Definition: Chara.cs:1089
void MoveZone(string alias)
Definition: Chara.cs:3412
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 612 of file Zone.cs.

613 {
614 if (IsRegion)
615 {
617 }
618 isStarted = (isSimulating = false);
619 base.isKnown = true;
620 EClass.game.config.reverseSnow = false;
622 {
623 Msg.Say("regenerateZone", Name);
624 ClearZones();
625 if (EClass.pc.global.transition != null)
626 {
627 EClass.pc.global.transition.uidLastZone = 0;
628 }
629 }
631 if (EClass.game.activeZone != null)
632 {
634 }
635 EClass.game.activeZone = this;
636 ZoneExportData zoneExportData = null;
637 Debug.Log(NameWithLevel + "/" + id + "/" + base.uid + "/" + base.isGenerated + "/" + IsLoaded + "/" + File.Exists(base.pathSave + "map"));
638 if (base.isGenerated && !IsLoaded && !File.Exists(base.pathSave + "map"))
639 {
640 Debug.Log("(Bug) File does not exist:" + destryoed + "/" + base.pathSave);
641 base.isGenerated = false;
642 }
643 bool flag = false;
644 Debug.Log(idCurrentSubset + "/" + IDSubset);
645 bool flag2 = idCurrentSubset != IDSubset || forceSubset != null;
646 if (flag2 && map != null)
647 {
648 UnloadMap();
649 }
650 string fullName = pathExport;
651 string lhs = CorePath.ZoneSave + "_new.z";
652 bool flag3 = File.Exists(fullName) && !PathComparer.Default.Equals(lhs, fullName);
653 bool flag4 = !idExport.IsEmpty();
654 Debug.Log(idExport + "/" + flag3 + "/" + fullName);
655 if (!flag3 && (base.source.tag.Contains("addMap") || flag4))
656 {
657 string[] array = new string[4]
658 {
659 "Maps/" + idExport + ".z",
660 "Maps/" + ZoneFullName + ".z",
661 "Map/" + idExport + ".z",
662 "Map/" + ZoneFullName + ".z"
663 };
664 for (int i = 0; i < array.Length; i++)
665 {
666 FileInfo fileInfo = PackageIterator.GetFiles(array[i]).LastOrDefault();
667 if (fileInfo != null)
668 {
669 fullName = fileInfo.FullName;
670 flag3 = true;
671 flag4 = true;
672 break;
673 }
674 }
675 }
676 if (!base.isGenerated && (!flag4 || !flag3))
677 {
678 Debug.Log("generating random map");
679 flag = true;
680 base.dateExpire = EClass.world.date.GetRaw() + 1440 * ExpireDays;
681 Generate();
683 if (instance != null)
684 {
686 }
687 if (!UseFog)
688 {
689 map.ForeachCell(delegate(Cell c)
690 {
691 c.isSeen = true;
692 });
693 }
694 if (!(bp is GameBlueprint))
695 {
697 }
698 }
699 else if (IsLoaded)
700 {
701 Debug.Log("zone is already loaded");
702 map.SetZone(this);
703 EClass.core.textures.ApplyLocalReplace(base.isMapSaved ? base.pathSave : pathTemp);
705 }
706 else
707 {
708 subset = null;
709 bool flag5 = (base.isGenerated && flag2) || (base.isGenerated && !IsInstance && !IsPCFaction && ShouldRegenerate && EClass.world.date.IsExpired(base.dateRegenerate)) || forceRegenerate;
711 {
712 flag5 = false;
713 flag2 = false;
714 }
715 Debug.Log(base.isGenerated + "/" + flag5 + "/" + flag2 + "/" + IDSubset);
716 if (!base.isGenerated || flag5 || flag2)
717 {
718 Debug.Log("importing map:" + fullName);
719 flag = true;
720 base.dateRegenerate = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRegenerateZone;
721 if (!flag5)
722 {
723 IO.DeleteDirectory(pathTemp + "Texture Replace");
724 Debug.Log(pathTemp);
725 }
726 try
727 {
728 zoneExportData = Import(fullName);
729 base.isGenerated = true;
730 isImported = true;
731 if (flag5)
732 {
733 zoneExportData.orgMap = GameIO.LoadFile<Map>(base.pathSave + "map");
734 }
735 }
736 catch (Exception message)
737 {
738 Debug.Log(message);
739 zoneExportData = Import(CorePath.ZoneSave + "fail.z");
740 base.isGenerated = true;
741 isImported = true;
742 }
743 }
745 Debug.Log("loading map: imported? " + isImported + " regenerate? " + flag5);
746 string text = (isImported ? pathTemp : base.pathSave) + "map";
747 try
748 {
749 map = GameIO.LoadFile<Map>(text);
750 }
751 catch (Exception message2)
752 {
753 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);
754 Debug.LogError(message2);
755 return;
756 }
757 map.SetZone(this);
758 map.Load(isImported ? pathTemp : base.pathSave, isImported);
760 EClass.core.textures.ApplyLocalReplace(base.isMapSaved ? base.pathSave : pathTemp);
761 if (isImported)
762 {
763 map.deadCharas.Clear();
764 map.OnImport(zoneExportData);
765 if (UseFog && !flag5)
766 {
767 map.ForeachCell(delegate(Cell c)
768 {
769 c.isSeen = false;
770 });
771 }
772 if (zoneExportData.orgMap != null)
773 {
774 Map orgMap = zoneExportData.orgMap;
775 List<Chara> serializedCharas = map.serializedCharas;
776 map.charas = orgMap.charas;
777 map.serializedCharas = orgMap.serializedCharas;
778 map.deadCharas = orgMap.deadCharas;
779 byte[] array2 = orgMap.TryLoadFile(base.pathSave, "flags", EClass._map.Size * EClass._map.Size);
780 if (array2 != null && array2.Length == EClass._map.Size * EClass._map.Size)
781 {
782 for (int j = 0; j < EClass._map.Size; j++)
783 {
784 for (int k = 0; k < EClass._map.Size; k++)
785 {
786 map.cells[j, k].isSeen = array2[j * EClass._map.Size + k].GetBit(1);
787 }
788 }
789 }
790 foreach (Chara item in serializedCharas)
791 {
792 Debug.Log("Importing New Chara:" + item.id + "/" + item.Name + "/" + item.orgPos);
794 }
795 map.things.ForeachReverse(delegate(Thing t)
796 {
797 if (t.trait is TraitNewZone || t.trait is TraitPowerStatue)
798 {
799 foreach (Thing thing in orgMap.things)
800 {
801 if (t.id == thing.id && t.pos.Equals(thing.pos))
802 {
803 if (t.trait is TraitNewZone)
804 {
805 RemoveCard(t);
806 map.things.Insert(0, thing);
807 thing.stackOrder = 0;
808 }
809 else
810 {
811 t.ChangeMaterial(thing.material);
812 t.isOn = thing.isOn;
813 }
814 break;
815 }
816 }
817 return;
818 }
819 if (t.trait is TraitStairsLocked)
820 {
821 foreach (Thing thing2 in orgMap.things)
822 {
823 if (thing2.trait is TraitNewZone && t.pos.Equals(thing2.pos))
824 {
825 RemoveCard(t);
826 map.things.Add(thing2);
827 break;
828 }
829 }
830 return;
831 }
832 if (t.id == "medal" || t.id == "856")
833 {
834 foreach (Thing thing3 in orgMap.things)
835 {
836 if (t.id == thing3.id && t.pos.Equals(thing3.pos))
837 {
838 return;
839 }
840 }
841 RemoveCard(t);
842 }
843 });
844 foreach (KeyValuePair<int, int> item2 in EClass._map.backerObjs.ToList())
845 {
846 EClass._map.GetCell(item2.Key);
847 SourceBacker.Row row = EClass.sources.backers.map[item2.Value];
849 {
850 map.backerObjs.Remove(item2.Key);
851 }
852 }
853 foreach (Chara serializedChara in map.serializedCharas)
854 {
855 if (serializedChara.orgPos != null && serializedChara.orgPos.IsValid)
856 {
857 serializedChara.pos.Set(serializedChara.orgPos);
858 }
859 }
860 foreach (Thing thing4 in orgMap.things)
861 {
862 if (thing4.trait is TraitTent && !thing4.isNPCProperty)
863 {
864 thing4.AddEditorTag(EditorTag.NoNpcProperty);
865 thing4.isSubsetCard = false;
866 map.things.Add(thing4);
867 Debug.Log(thing4);
868 }
869 }
870 }
871 }
872 foreach (Thing thing5 in map.things)
873 {
874 map.AddCardOnActivate(thing5);
875 }
876 foreach (Chara c3 in map.serializedCharas)
877 {
878 if (c3.c_uidMaster == 0 || EClass.player.listCarryoverMap.Find((Chara c2) => c2.uid == c3.uid) == null)
879 {
880 map.charas.Add(c3);
882 }
883 }
884 map.serializedCharas.Clear();
885 if (isImported && IsTown)
886 {
888 }
891 map.OnLoad();
892 if (flag5)
893 {
894 foreach (Card item3 in map.Cards.ToList())
895 {
896 if (item3.isSubsetCard)
897 {
898 item3.Destroy();
899 }
900 }
901 }
902 if (isImported)
903 {
905 if (idCurrentSubset != null)
906 {
908 subset.Apply();
909 }
910 }
911 if (isImported)
912 {
914 {
915 foreach (Thing thing6 in map.things)
916 {
917 thing6.isNPCProperty = !thing6.isHidden && !thing6.HasEditorTag(EditorTag.NoNpcProperty);
918 }
919 }
920 else
921 {
922 foreach (Thing thing7 in map.things)
923 {
924 thing7.isNPCProperty = false;
925 }
926 }
928 if (instance != null)
929 {
931 }
932 }
933 if (isImported && !flag5 && !RevealRoom)
934 {
935 foreach (Room item4 in map.rooms.listRoom)
936 {
937 if (!item4.HasRoof || item4.data.atrium)
938 {
939 continue;
940 }
941 foreach (Point point2 in item4.points)
942 {
943 point2.cell.isSeen = false;
944 }
945 }
946 }
947 if (flag5)
948 {
949 OnRegenerate();
950 }
951 }
952 PathManager.Instance._pathfinder.PunishChangeDirection = false;
953 isImported = false;
954 if (this is Zone_Tent && IsUnderwater)
955 {
956 EClass._map.config.idSceneProfile = "indoor_water";
957 EClass.scene.profile = SceneProfile.Load(EClass._map.config.idSceneProfile);
958 }
959 if (flag && IsTown && base.lv == 0)
960 {
962 }
963 if (base.visitCount == 0)
964 {
965 base.dateRevive = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRevive;
966 }
967 map.ForeachCell(delegate(Cell c)
968 {
969 if (c.HasFire)
970 {
971 map.effectManager.GetOrCreate(c.GetSharedPoint());
972 }
973 if (IsRegion)
974 {
975 c.decal = 0;
976 }
977 });
979 {
980 RainWater();
981 }
983 {
984 map.ForeachCell(delegate(Cell c)
985 {
986 c.isSeen = true;
987 });
988 }
989 isStarted = true;
990 Map.isDirtySunMap = true;
992 if (events.listPreEnter.Count > 0)
993 {
994 foreach (ZonePreEnterEvent item5 in events.listPreEnter)
995 {
996 item5.Execute();
997 }
998 events.listPreEnter.Clear();
999 }
1000 foreach (Card card in map.Cards)
1001 {
1002 card.CalculateFOV();
1003 if (card.isChara)
1004 {
1005 Chara chara = card.Chara;
1006 chara.dirtySpeed = true;
1007 if (!card.isDyed && card.HasTag(CTAG.random_color))
1008 {
1009 card.DyeRandom();
1010 }
1011 if (card.IsUnique && !card.IsPCFaction && !card.IsPCParty)
1012 {
1013 Point point = chara.orgPos ?? card.pos;
1014 card.c_uniqueData = new UniqueData
1015 {
1016 x = point.x,
1017 y = point.z,
1018 uidZone = base.uid
1019 };
1020 }
1021 int @int = card.GetInt(55);
1022 if (@int != 0)
1023 {
1024 foreach (Chara chara2 in map.charas)
1025 {
1026 if (chara2.uid == @int)
1027 {
1028 if (chara.IsHostile(chara2))
1029 {
1030 chara.enemy = chara2;
1031 chara.SetAI(new GoalCombat());
1032 chara.calmCheckTurn = 20 + EClass.rnd(30);
1033 }
1034 break;
1035 }
1036 }
1037 card.SetInt(55);
1038 }
1039 chara.SyncRide();
1040 if (card.c_uidMaster != 0 && chara.master == null)
1041 {
1042 chara.FindMaster();
1043 }
1044 if (!EClass.game.isLoading)
1045 {
1046 chara.enemy = null;
1047 if (chara.IsInCombat)
1048 {
1049 chara.SetNoGoal();
1050 }
1051 }
1052 }
1053 else if (card.IsInstalled && card.trait is TraitDoor traitDoor && card.pos.HasChara && !traitDoor.IsOpen())
1054 {
1055 traitDoor.ToggleDoor(sound: false, refresh: false);
1056 }
1057 }
1058 RefreshHat();
1059 forceRegenerate = false;
1060 forceSubset = null;
1061 EClass.ui.OnActivateZone();
1063 EClass.Sound.LoadAmbience(IDAmbience);
1064 if (EClass.Branch != null)
1065 {
1067 }
1068 OnVisit();
1069 if (flag)
1070 {
1072 }
1074 if (IsPCFaction)
1075 {
1076 EClass.player.uidLastTown = 0;
1077 }
1078 else if (IsTown && base.lv == 0)
1079 {
1080 EClass.player.uidLastTown = base.uid;
1081 }
1082 RefreshBGM();
1083 Rand.InitBytes(map.seed + 1);
1085 okaerinko = 0;
1086 if (EClass.debug.enable)
1087 {
1088 ModInfluence(2000);
1089 }
1090 if (this is Zone_TinkerCamp)
1091 {
1092 Tutorial.Reserve("tinker");
1093 }
1094 else if (this is Zone_Town && !(this is Zone_SubTown))
1095 {
1096 Tutorial.Reserve("town");
1097 }
1098 }
CTAG
Definition: CTAG.cs:2
EditorTag
Definition: EditorTag.cs:2
$
Definition: ModManager.cs:76
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:3181
int c_uidMaster
Definition: Card.cs:1489
void AddEditorTag(EditorTag tag)
Definition: Card.cs:2709
Point pos
Definition: Card.cs:60
int uid
Definition: Card.cs:125
Trait trait
Definition: Card.cs:54
void Destroy()
Definition: Card.cs:5255
bool HasEditorTag(EditorTag tag)
Definition: Card.cs:2704
bool isOn
Definition: Card.cs:545
Definition: Cell.cs:7
bool isSeen
Definition: Cell.cs:290
bool HasFire
Definition: Cell.cs:684
AIAct SetNoGoal()
Definition: Chara.cs:9212
bool IsInCombat
Definition: Chara.cs:887
AIAct SetAI(AIAct g)
Definition: Chara.cs:9217
Point orgPos
Definition: Chara.cs:21
GlobalData global
Definition: Chara.cs:76
Chara master
Definition: Chara.cs:88
Chara FindMaster()
Definition: Chara.cs:2482
void SyncRide()
Definition: Chara.cs:4037
bool IsHostile()
Definition: Chara.cs:6719
bool ignoreBackerDestoryFlag
Definition: CoreConfig.cs:566
bool revealMap
Definition: CoreDebug.cs:169
bool enable
Definition: CoreDebug.cs:301
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:311
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:2372
Cell GetCell(int index)
Definition: Map.cs:900
IEnumerable< Card > Cards
Definition: Map.cs:135
void AddCardOnActivate(Card c)
Definition: Map.cs:795
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:720
void OnImport(ZoneExportData data)
Definition: Map.cs:726
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:2134
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:1293
HashSet< int > doneBackers
Definition: Player.cs:1140
bool simulatingZone
Definition: Player.cs:1249
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:961
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:85
bool isSimulating
Definition: Zone.cs:75
void RefreshElectricity()
Definition: Zone.cs:3024
ZoneExportData Import(string path)
Definition: Zone.cs:3281
void Generate()
Definition: Zone.cs:2447
ZoneEventManager events
Definition: Zone.cs:40
static string forceSubset
Definition: Zone.cs:27
virtual bool RegenerateOnEnter
Definition: Zone.cs:269
static int okaerinko
Definition: Zone.cs:31
virtual string idExport
Definition: Zone.cs:154
virtual bool MakeTownProperties
Definition: Zone.cs:249
virtual void OnRegenerate()
Definition: Zone.cs:1209
bool isStarted
Definition: Zone.cs:73
virtual string pathExport
Definition: Zone.cs:129
MapSubset subset
Definition: Zone.cs:65
Zone GetTopZone()
Definition: Zone.cs:2022
virtual string IDSubset
Definition: Zone.cs:216
ZoneBlueprint bp
Definition: Zone.cs:67
void RefreshBGM()
Definition: Zone.cs:3152
void Deactivate()
Definition: Zone.cs:1705
void SpawnLostItems()
Definition: Zone.cs:3873
void AddGlobalCharasOnActivate()
Definition: Zone.cs:1624
bool IsInstance
Definition: Zone.cs:493
void ClearZones(Zone current=null)
Definition: Zone.cs:1991
void OnVisit()
Definition: Zone.cs:1110
virtual bool IsTown
Definition: Zone.cs:227
void RainWater()
Definition: Zone.cs:3519
virtual bool UseFog
Definition: Zone.cs:395
virtual string IDAmbience
Definition: Zone.cs:182
void RemoveCard(Card t)
Definition: Zone.cs:2106
void RefreshHat()
Definition: Zone.cs:1100
void ModInfluence(int a)
Definition: Zone.cs:3731
virtual void OnGenerateMap()
Definition: Zone.cs:2665
static bool forceRegenerate
Definition: Zone.cs:25
bool IsPCFaction
Definition: Zone.cs:477
virtual bool IsUnderwater
Definition: Zone.cs:273
virtual bool ShouldRegenerate
Definition: Zone.cs:381
string NameWithLevel
Definition: Zone.cs:433
ZoneInstance instance
Definition: Zone.cs:55
virtual bool RevealRoom
Definition: Zone.cs:397
bool IsLoaded
Definition: Zone.cs:495
void RefreshListCitizen()
Definition: Zone.cs:3689
virtual int ExpireDays
Definition: Zone.cs:175
virtual void OnVisitNewMapOrRegenerate()
Definition: Zone.cs:1249

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

2072 {
2073 return AddCard(t, 0, 0);
2074 }
Card AddCard(Card t, Point point)
Definition: Zone.cs:2066

References AddCard().

◆ AddCard() [2/3]

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

Definition at line 2076 of file Zone.cs.

2077 {
2078 if (t.parent != null)
2079 {
2080 t.parent.RemoveCard(t);
2081 }
2082 t.parent = this;
2083 Chara chara = t.Chara;
2084 if (chara != null)
2085 {
2086 chara.currentZone = this;
2087 chara.SetAI(new NoGoal());
2088 }
2089 if (IsActiveZone)
2090 {
2091 map.OnCardAddedToZone(t, x, z);
2092 if (isStarted && t.isThing && t.placeState == PlaceState.roaming && !ignoreSpawnAnime)
2093 {
2094 t.PlayAnimeLoot();
2095 }
2096 ignoreSpawnAnime = false;
2097 }
2098 if (chara != null && EClass.player != null && !chara.hasSpawned)
2099 {
2100 EClass.player.codex.AddSpawn(chara.id);
2101 chara.hasSpawned = true;
2102 }
2103 return t;
2104 }
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:6559
void AddSpawn(string id)
Definition: CodexManager.cs:65
void OnCardAddedToZone(Card t, int x, int z)
Definition: Map.cs:818
Definition: NoGoal.cs:4
CodexManager codex
Definition: Player.cs:1182
static bool ignoreSpawnAnime
Definition: Zone.cs:81
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 2066 of file Zone.cs.

2067 {
2068 return AddCard(t, point.x, point.z);
2069 }

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(), ConWet.OnStart(), 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(), 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 2031 of file Zone.cs.

2032 {
2033 Point point = new Point(center);
2034 for (int i = 0; i < 1000; i++)
2035 {
2036 point.x = center.x + EClass.rnd(radius) - EClass.rnd(radius);
2037 point.z = center.z + EClass.rnd(radius) - EClass.rnd(radius);
2038 if (point.IsValid && !point.IsBlocked && !point.HasChara)
2039 {
2040 return AddCard(t, point);
2041 }
2042 }
2043 return AddCard(t, center);
2044 }
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 2051 of file Zone.cs.

2052 {
2053 return AddChara(id, p.x, p.z);
2054 }
Chara AddChara(string id, int x, int z)
Definition: Zone.cs:2046

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

◆ AddGlobalCharasOnActivate()

void Zone.AddGlobalCharasOnActivate ( )
inline

Definition at line 1624 of file Zone.cs.

1625 {
1626 Point spawnPosPC = null;
1627 if (EClass.pc.currentZone == this)
1628 {
1629 spawnPosPC = GetSpawnPos(EClass.pc);
1630 }
1631 if (spawnPosPC == null)
1632 {
1633 spawnPosPC = map.GetCenterPos();
1634 }
1635 if (spawnPosPC.IsValid && EClass.pc.global.transition != null && spawnPosPC.HasBlock)
1636 {
1637 spawnPosPC = spawnPosPC.GetNearestPoint();
1638 }
1639 spawnPosPC = spawnPosPC.Clamp(useBounds: true).GetNearestPoint();
1640 foreach (Chara c in EClass.game.cards.globalCharas.Values)
1641 {
1642 if (c.currentZone != this)
1643 {
1644 continue;
1645 }
1646 if (c.parent is Chara)
1647 {
1648 Chara chara = c.parent as Chara;
1649 c.currentZone = chara.currentZone;
1650 }
1651 else
1652 {
1653 if (c.isDead)
1654 {
1655 continue;
1656 }
1657 if (c.isRestrained && c.currentZone == EClass.pc.currentZone && (!c.pos.IsValid || c.pos.FindThing<TraitShackle>() == null))
1658 {
1659 c.isRestrained = false;
1660 }
1661 if (c.global.transition != null)
1662 {
1663 Point pos = (c.IsPC ? spawnPosPC : (c.IsPCParty ? spawnPosPC.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true) : GetSpawnPos(c)));
1664 if (c.IsPCParty && !c.IsPC)
1665 {
1666 if (c.host == EClass.pc)
1667 {
1668 pos.Set(spawnPosPC);
1669 }
1670 else if (pos.Equals(spawnPosPC) || !PathManager.Instance.IsPathClear(spawnPosPC, pos, c, 5))
1671 {
1672 c.pos.Set(spawnPosPC);
1673 if (!spawnPosPC.ForeachNearestPoint(delegate(Point p)
1674 {
1675 if (PathManager.Instance.IsPathClear(spawnPosPC, p, c, 10) && !p.Equals(spawnPosPC))
1676 {
1677 pos.Set(p);
1678 return true;
1679 }
1680 return false;
1681 }, allowBlock: false, EClass.pc.party.members.Count >= 12, allowInstalled: true, ignoreCenter: true, EClass._zone.IsRegion ? 2 : 6))
1682 {
1683 pos.Set(spawnPosPC);
1684 }
1685 }
1686 }
1687 c.pos.Set(pos);
1688 c.global.transition = null;
1689 }
1690 map.charas.Add(c);
1692 }
1693 }
1695 {
1696 Point nearestPoint = spawnPosPC.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true);
1697 item.enemy = null;
1698 item.pos.Set(nearestPoint);
1699 map.charas.Add(item);
1701 }
1703 }
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:619
bool ForeachNearestPoint(Func< Point, bool > endFunc, bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int maxRange=30)
Definition: Point.cs:691
Point Clamp(bool useBounds=false)
Definition: Point.cs:1009
bool HasBlock
Definition: Point.cs:141
Thing FindThing(Func< Thing, bool > func)
Definition: Point.cs:1141
Point GetSpawnPos(Chara c, ZoneTransition.EnterState destState=ZoneTransition.EnterState.Auto)
Definition: Zone.cs:1421

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

3416 {
3417 Trait random = map.Installed.traits.GetTraitSet<TraitSpotExit>().GetRandom();
3418 if (random == null)
3419 {
3420 return null;
3421 }
3422 Point point = random.GetPoint();
3423 Chara chara = null;
3424 if (guest)
3425 {
3426 Zone z = EClass.world.FindZone("wilds");
3427 chara = EClass.game.cards.ListGlobalChara(z).RandomItem();
3428 if (chara != null)
3429 {
3430 AddCard(chara, point);
3431 Msg.Say("guestArrive", chara);
3432 chara.visitorState = VisitorState.Arrived;
3433 }
3434 }
3435 else
3436 {
3437 chara = CharaGen.CreateFromFilter("c_wilds");
3438 AddCard(chara, point);
3439 chara.goalListType = GoalListType.Enemy;
3440 }
3441 return chara;
3442 }
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:766
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 2061 of file Zone.cs.

2062 {
2063 return AddThing(id, p.x, p.z);
2064 }
Card AddThing(string id, int x, int z)
Definition: Zone.cs:2056

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

◆ ApplyBackerPet()

void Zone.ApplyBackerPet ( bool  draw)
inline

Definition at line 3918 of file Zone.cs.

3919 {
3920 bool flag = this is Zone_Yowyn && base.lv == -1;
3921 IList<SourceBacker.Row> list = EClass.sources.backers.listPet.Copy();
3922 list.Shuffle();
3924 {
3925 list.ForeachReverse(delegate(SourceBacker.Row a)
3926 {
3927 if (EClass.player.doneBackers.Contains(a.id))
3928 {
3929 list.Remove(a);
3930 }
3931 });
3932 }
3933 foreach (Chara chara in EClass._map.charas)
3934 {
3935 if (chara.IsGlobal || chara.IsMinion)
3936 {
3937 continue;
3938 }
3939 if (chara.isBackerContent)
3940 {
3941 if (chara.sourceBacker.isStatic != 0)
3942 {
3943 continue;
3944 }
3945 if (chara.id != "follower")
3946 {
3947 chara.RemoveBacker();
3948 }
3949 }
3950 if ((flag && chara.race.id != "cat") || (!EClass.debug.enable && EClass.rnd((!flag) ? (draw ? 3 : 10) : (draw ? 1 : 2)) != 0))
3951 {
3952 continue;
3953 }
3954 foreach (SourceBacker.Row item in list)
3955 {
3956 if (item.chara == chara.id)
3957 {
3958 chara.ApplyBacker(item.id);
3959 list.Remove(item);
3960 break;
3961 }
3962 }
3963 }
3964 }
SourceBacker.Row sourceBacker
Definition: Card.cs:955
void RemoveBacker()
Definition: Card.cs:7421
void ApplyBacker(int bid)
Definition: Card.cs:7385
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 1871 of file Zone.cs.

1872 {
1874 {
1875 return false;
1876 }
1877 if (IsInstance)
1878 {
1879 return true;
1880 }
1881 bool flag = false;
1882 switch (id)
1883 {
1884 case "cave_dragon":
1885 if (!(this is Zone_DungeonDragon))
1886 {
1887 flag = true;
1888 }
1889 break;
1890 case "cave_yeek":
1891 if (!(this is Zone_DungeonYeek))
1892 {
1893 flag = true;
1894 }
1895 break;
1896 case "cave_mino":
1897 if (!(this is Zone_DungeonMino))
1898 {
1899 flag = true;
1900 }
1901 break;
1902 case "cave_dead":
1903 if (!(this is Zone_DungeonDead))
1904 {
1905 flag = true;
1906 }
1907 break;
1908 }
1909 Zone topZone = GetTopZone();
1910 if (!flag)
1911 {
1912 if (base.dateExpire == 0 || !EClass.world.date.IsExpired(base.dateExpire))
1913 {
1914 return false;
1915 }
1916 if (!base.isRandomSite && !(this is Zone_Field) && (topZone == null || topZone == this || topZone.FindDeepestZone() == this))
1917 {
1918 return false;
1919 }
1920 }
1921 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()))
1922 {
1923 return false;
1924 }
1926 {
1928 if (zone != null && zone.GetTopZone() == this)
1929 {
1930 return false;
1931 }
1932 }
1933 return true;
1934 }
SpatialManager spatials
Definition: Game.cs:153
Zone nextZone
Definition: Player.cs:1297
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 1801 of file Zone.cs.

1802 {
1805 branch = new FactionBranch();
1806 branch.OnCreate(this);
1807 if (base.icon == 0)
1808 {
1809 base.icon = 332;
1810 }
1811 instance = null;
1812 base.dateExpire = 0;
1814 Register();
1815 foreach (Thing thing in map.things)
1816 {
1817 thing.isNPCProperty = false;
1818 }
1821 if (debug)
1822 {
1823 for (int i = 0; i < 7; i++)
1824 {
1825 Chara chara = CharaGen.CreateFromFilter("c_neutral");
1826 EClass._zone.AddCard(chara, EClass._map.bounds.GetRandomPoint().GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false));
1827 branch.AddMemeber(chara);
1828 }
1829 }
1830 else
1831 {
1832 Msg.Say("claimedZone");
1833 EClass.Branch.Log("claimedZone");
1834 EClass.Sound.Play("jingle_embark");
1835 EClass.pc.PlaySound("build");
1836 if (pos == null)
1837 {
1838 pos = EClass.pc.pos.GetNearestPoint(allowBlock: false, allowChara: true, allowInstalled: false);
1839 }
1840 Effect.Get("aura_heaven").Play(pos);
1841 EClass._zone.AddCard(ThingGen.Create("core_zone"), pos).SetPlaceState(PlaceState.installed);
1842 }
1843 base.idPrefix = 0;
1845 {
1846 EClass.player.spawnZone = EClass._zone;
1847 }
1849 {
1850 EClass._zone.SetBGM(new List<int> { 41, 90, 44, 43 });
1852 }
1853 }
void SetPlaceState(PlaceState newState, bool byPlayer=false)
Definition: Card.cs:3892
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6530
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:918
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:3136
void SetBGM(List< int > ids, bool refresh=true, float fadeDuration=0f)
Definition: Zone.cs:3094

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

1992 {
1993 if (map != null)
1994 {
1995 UnloadMap();
1996 }
1997 base.isGenerated = false;
1998 Zone topZone = GetTopZone();
1999 if (topZone != this)
2000 {
2001 topZone.ClearZones(this);
2002 return;
2003 }
2004 children.ForeachReverse(delegate(Spatial c)
2005 {
2006 if (c != current)
2007 {
2008 c.Destroy();
2009 }
2010 });
2011 }
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 3850 of file Zone.cs.

3851 {
3852 int num = 0;
3853 foreach (Chara chara in EClass._map.charas)
3854 {
3855 if (chara.c_uidMaster == c.uid && chara.c_minionType == MinionType.Default)
3856 {
3857 num++;
3858 }
3859 }
3860 return num;
3861 }
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 2435 of file Zone.cs.

2436 {
2437 bp = new ZoneBlueprint();
2438 bp.Create();
2439 bp.genSetting.seed = base.Seed;
2440 OnCreateBP();
2441 }
virtual void OnCreateBP()
Definition: Zone.cs:2443

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

Referenced by Generate().

◆ CreatePlaylist()

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

Definition at line 3192 of file Zone.cs.

3193 {
3194 return ModUtil.CreatePlaylist(ref list, mold);
3195 }

Referenced by Generate().

◆ Deactivate()

void Zone.Deactivate ( )
inline

Definition at line 1705 of file Zone.cs.

1706 {
1707 if (!IsUserZone && !IsPCFaction && map != null)
1708 {
1709 List<Thing> list = new List<Thing>();
1710 foreach (Thing thing in map.things)
1711 {
1712 if (thing.rarity >= Rarity.Artifact && thing.HasTag(CTAG.godArtifact))
1713 {
1714 list.Add(thing);
1715 }
1716 }
1717 if (this is Zone_Tent)
1718 {
1719 foreach (Thing item in map.props.stocked.Things.Concat(map.props.roaming.Things))
1720 {
1721 if (item.IsContainer)
1722 {
1723 foreach (Thing thing2 in item.things)
1724 {
1725 if (thing2.trait is TraitTent)
1726 {
1727 list.Add(thing2);
1728 }
1729 }
1730 }
1731 if (item.trait is TraitTent)
1732 {
1733 list.Add(item);
1734 }
1735 }
1736 }
1737 if (list.Count > 0)
1738 {
1739 Msg.Say("pick_valuable");
1740 foreach (Thing item2 in list)
1741 {
1742 Msg.Say("pick_valuable2", item2);
1743 EClass.pc.AddCard(item2);
1744 }
1745 }
1746 }
1748 {
1749 base.isPeace = false;
1750 }
1752 if (IsPCFaction)
1753 {
1754 foreach (Chara member in branch.members)
1755 {
1756 member.ValidateWorks();
1757 }
1758 }
1759 EClass.game.lastActiveZone = EClass.game.activeZone;
1760 base.lastActive = EClass.world.date.GetRaw();
1761 map.OnDeactivate();
1762 EClass.scene.Clear();
1763 EClass.game.activeZone = null;
1764 if (IsInstance)
1765 {
1766 UnloadMap();
1767 base.isGenerated = false;
1768 }
1769 if (forceRegenerate)
1770 {
1771 UnloadMap();
1772 }
1773 OnDeactivate();
1774 }
Rarity
Definition: Rarity.cs:2
Card AddCard(Card c)
Definition: Card.cs:3230
Rarity rarity
Definition: Card.cs:317
bool HasTag(CTAG tag)
Definition: Card.cs:2699
void ValidateWorks()
Definition: Chara.cs:9568
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:1237
virtual bool IsUserZone
Definition: Zone.cs:275
virtual void OnDeactivate()
Definition: Zone.cs:1241

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

1973 {
1974 children.ForeachReverse(delegate(Spatial z)
1975 {
1976 z.Destroy();
1977 });
1978 if (map != null)
1979 {
1980 UnloadMap();
1981 }
1982 if (parent != null && parent.IsRegion && instance == null)
1983 {
1984 EClass.scene.elomap.SetZone(base.x, base.y, null, updateMesh: true);
1985 }
1986 EClass.game.spatials.Remove(this);
1987 destryoed = true;
1988 base.isGenerated = false;
1989 }
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 548 of file Zone.cs.

549 {
550 return elements.Value(ele);
551 }
int Value(int ele)
ElementContainerZone elements
Definition: Zone.cs:43

References elements, and ElementContainer.Value().

Referenced by TraitWrench.IsValidTarget().

◆ Evalue() [2/2]

int Zone.Evalue ( string  alias)
inline

Definition at line 553 of file Zone.cs.

554 {
555 return elements.Value(EClass.sources.elements.alias[alias].id);
556 }
SourceElement elements

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

◆ Export() [1/2]

void Zone.Export ( )
inline

Definition at line 3373 of file Zone.cs.

3374 {
3376 string text = pathExport;
3377 IO.Copy(text, CorePath.ZoneSave + "Backup/");
3378 Export(text);
3379 Msg.Say("Exported Map:" + text);
3380 }
static void Copy(string fromPath, string toPath)
Definition: IO.cs:310
void ResetEditorPos()
Definition: Map.cs:357
void Export()
Definition: Zone.cs:3373

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

3291 {
3292 if (subset != null)
3293 {
3294 SE.Beep();
3295 return;
3296 }
3297 try
3298 {
3299 ZoneExportData zoneExportData = new ZoneExportData
3300 {
3301 name = name,
3302 usermap = usermap
3303 };
3305 if (!map.config.retainDecal)
3306 {
3308 }
3309 map.Save(IO.TempPath + "/", zoneExportData, partial);
3310 map.ExportMetaData(IO.TempPath + "/", Path.GetFileNameWithoutExtension(path), partial);
3311 if (partial == null)
3312 {
3313 IO.CopyDir(base.pathSave + "Texture Replace", IO.TempPath + "/Texture Replace");
3314 }
3315 IO.SaveFile(IO.TempPath + "/export", zoneExportData, compress: true);
3316 using (ZipFile zipFile = new ZipFile())
3317 {
3318 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
3319 zipFile.AddDirectory(IO.TempPath);
3320 zipFile.Save(path);
3321 zipFile.Dispose();
3322 }
3324 }
3325 catch (Exception ex)
3326 {
3327 EClass.ui.Say(ex.Message + ":" + path);
3328 }
3329 }
static void CreateTempDirectory(string path=null)
Definition: IO.cs:411
static string TempPath
Definition: IO.cs:64
static void SaveFile(string path, object obj, bool compress=false, JsonSerializerSettings setting=null)
Definition: IO.cs:89
static void DeleteTempDirectory(string path=null)
Definition: IO.cs:416
bool retainDecal
Definition: MapConfig.cs:44
void ExportMetaData(string _path, string id, PartialMap partial=null)
Definition: Map.cs:732
void ClearRainAndDecal()
Definition: Map.cs:1552
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 3331 of file Zone.cs.

3332 {
3334 {
3335 string text = StandaloneFileBrowser.SaveFilePanel("Export Zone", dir ?? CorePath.ZoneSave, "new zone", "z");
3336 if (!string.IsNullOrEmpty(text))
3337 {
3338 Export(text);
3339 Msg.SayRaw("Exported Zone");
3340 }
3341 });
3342 }
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, 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 3202 of file Zone.cs.

3203 {
3204 return map.charas.Find((Chara c) => c.uid == uid);
3205 }
int uid
Definition: Spatial.cs:70

References Map.charas, and Card.uid.

◆ FindChara() [2/2]

Chara Zone.FindChara ( string  id)
inline

Definition at line 3197 of file Zone.cs.

3198 {
3199 return map.charas.Find((Chara c) => c.id == id);
3200 }

References Map.charas, and Card.id.

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

◆ FindOrCreateLevel()

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

Definition at line 531 of file Zone.cs.

532 {
533 Zone zone = FindZone(destLv);
534 if (zone != null)
535 {
536 return zone;
537 }
538 if (!(SpatialGen.Create(subId.IsEmpty(GetNewZoneID(destLv)), this, register: true) is Zone zone2))
539 {
540 return null;
541 }
542 zone2.lv = destLv;
543 zone2.x = base.x;
544 zone2.y = base.y;
545 return zone2;
546 }
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:568

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

◆ Generate()

void Zone.Generate ( )
inline

Definition at line 2447 of file Zone.cs.

2448 {
2449 base.isGenerated = true;
2450 if (bp == null)
2451 {
2452 CreateBP();
2453 }
2454 if (bp.map == null)
2455 {
2456 bp.GenerateMap(this);
2457 }
2458 map.SetZone(this);
2459 Zone_Field zone_Field = this as Zone_Field;
2460 bool flag = IdBiome == "Sand" || IdBiome == "Water" || IsUnderwater;
2461 if (flag)
2462 {
2463 int num = 1 + EClass.rnd((IdBiome == "Water") ? 3 : 2);
2464 for (int i = 0; i < num; i++)
2465 {
2466 Point randomSurface = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2467 if (!randomSurface.HasObj && !randomSurface.HasThing)
2468 {
2469 Thing t = ThingGen.Create("pearl_oyster", new string[3] { "wood_birch", "poplar", "coralwood" }.RandomItem(), ContentLv);
2470 EClass._zone.AddCard(t, randomSurface).Install();
2471 }
2472 }
2473 num = 4 + EClass.rnd(5);
2474 for (int j = 0; j < num; j++)
2475 {
2476 Point randomSurface2 = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2477 if (!randomSurface2.HasObj && !randomSurface2.HasThing && (IsUnderwater || randomSurface2.cell.IsTopWaterAndNoSnow || EClass.rnd(6) == 0))
2478 {
2479 EClass._zone.AddCard(ThingGen.Create("70", -1, ContentLv), randomSurface2);
2480 }
2481 }
2482 for (int k = 0; k < EClass.rnd(EClass.rnd(base.isBeach ? 5 : 3) + 1); k++)
2483 {
2484 Point randomSurface3 = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2485 if (!randomSurface3.HasObj)
2486 {
2487 EClass._zone.AddCard(ThingGen.Create("bottle_message"), randomSurface3);
2488 }
2489 }
2490 }
2491 if (IsUnderwater)
2492 {
2493 for (int l = 0; l < 30 + EClass.rnd(30); l++)
2494 {
2495 SpawnMob(null, SpawnSetting.Fish());
2496 }
2497 Crawler crawler = Crawler.Create("pasture");
2498 int num2 = (EClass.debug.enable ? 3 : EClass.rnd(EClass.rnd(EClass.rnd(EClass.rnd(5) + 1) + 1) + 1));
2499 bool flag2 = this is Zone_Field;
2500 Thing seed = null;
2501 if (IsNefia)
2502 {
2503 int num3 = Mathf.Min(EClass._zone.DangerLv, EClass.pc.Evalue(286) * 2 / 3);
2504 if (num3 > 0)
2505 {
2507 Rand.SetSeed(EClass._zone.uid * 10 + num3);
2508 TraitSeed.LevelSeed(seed, (seed.trait as TraitSeed).row, num3);
2509 Rand.SetSeed();
2510 seed.elements.SetBase(2, EClass.curve(seed.encLV, 50, 10, 80));
2511 }
2512 }
2513 crawler.CrawlUntil(EClass._map, () => EClass._map.GetRandomPoint(), num2 + (flag2 ? 4 : 0), delegate(Crawler.Result r)
2514 {
2515 int num6 = 137;
2516 foreach (Point point in r.points)
2517 {
2518 if (!point.cell.isModified && !point.HasThing && !point.HasBlock && !point.HasObj)
2519 {
2520 map.SetObj(point.x, point.z, num6);
2521 int idx = 3 + ((EClass.rnd(3) == 0) ? 1 : 0) + ((EClass.rnd(3) == 0) ? (-1) : 0) + ((EClass.rnd(3) == 0) ? (-1) : 0);
2522 point.growth.SetStage(idx);
2523 if (seed != null)
2524 {
2525 EClass._map.AddPlant(point, seed);
2526 }
2527 }
2528 }
2529 return false;
2530 });
2531 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)
2532 {
2533 int num5 = 136;
2534 foreach (Point point2 in r.points)
2535 {
2536 if (!point2.cell.isModified && !point2.HasThing && !point2.HasBlock && !point2.HasObj)
2537 {
2538 map.SetObj(point2.x, point2.z, num5, 1, EClass.rnd(4));
2539 }
2540 }
2541 return false;
2542 });
2543 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)
2544 {
2545 int idFloor = 121;
2546 foreach (Point point3 in r.points)
2547 {
2548 map.SetFloor(point3.x, point3.z, 97, idFloor, Mathf.Clamp(4 - r.startPos.Distance(point3) + EClass.rnd(3) - EClass.rnd(3), 0, 3));
2549 }
2550 return false;
2551 });
2552 }
2553 if (zone_Field != null)
2554 {
2555 if (EClass.rnd(3) == 0)
2556 {
2557 int num4 = EClass.rnd(2);
2558 for (int m = 0; m < num4; m++)
2559 {
2560 Point randomSurface4 = EClass._map.bounds.GetRandomSurface();
2561 if (!randomSurface4.HasObj && !randomSurface4.HasThing)
2562 {
2564 EClass._zone.AddCard(t2, randomSurface4).Install();
2565 }
2566 }
2567 }
2568 if (EClass.rnd(8) == 0)
2569 {
2570 SpawnAltar();
2571 }
2573 if (!flag && EClass.rnd(EClass.debug.enable ? 1 : 10) == 0)
2574 {
2575 Point randomSurface5 = EClass._map.bounds.GetRandomSurface();
2576 if (randomSurface5.IsValid)
2577 {
2578 EClass._zone.AddCard(CharaGen.Create("priest"), randomSurface5);
2579 }
2580 }
2581 if (base.Tile.isRoad)
2582 {
2583 for (int n = 0; n < EClass.rnd(4); n++)
2584 {
2585 EClass._zone.SpawnMob(map.GetCenterPos().GetRandomPointInRadius(2, 6, requireLos: false, allowChara: false), SpawnSetting.HomeGuest(EClass._zone.DangerLv));
2586 }
2587 }
2588 }
2589 map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList) ?? EClass.Sound.GetPlaylist("Day"));
2590 }
@ seed
int Evalue(int ele)
Definition: Card.cs:2675
Card Install()
Definition: Card.cs:3886
bool IsTopWaterAndNoSnow
Definition: Cell.cs:720
bool isModified
Definition: Cell.cs:446
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:2241
List< int > _plDay
Definition: Map.cs:55
void SetFloor(int x, int z, int idMat=0, int idFloor=0)
Definition: Map.cs:970
PlantData AddPlant(Point pos, Thing seed)
Definition: Map.cs:1978
void SetObj(int x, int z, int id=0, int value=1, int dir=0)
Definition: Map.cs:1561
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:783
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:145
override int ContentLv
Definition: Zone.cs:100
void SpawnAltar()
Definition: Zone.cs:2626
Playlist CreatePlaylist(ref List< int > list, Playlist mold=null)
Definition: Zone.cs:3192
virtual bool IsNefia
Definition: Zone.cs:289
BiomeProfile biome
Definition: Zone.cs:131
Chara SpawnMob(string id, Point pos=null)
Definition: Zone.cs:2865
virtual string IdBiome
Definition: Zone.cs:133
override int DangerLv
Definition: Zone.cs:112
void TrySpawnFollower()
Definition: Zone.cs:2592
void CreateBP()
Definition: Zone.cs:2435

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

◆ GetDeepestLv() [1/2]

int Zone.GetDeepestLv ( )
inline

Definition at line 3207 of file Zone.cs.

3208 {
3209 int max = base.lv;
3210 return GetDeepestLv(ref max);
3211 }
int GetDeepestLv()
Definition: Zone.cs:3207

◆ GetDeepestLv() [2/2]

int Zone.GetDeepestLv ( ref int  max)
inline

Definition at line 3213 of file Zone.cs.

3214 {
3215 if (Mathf.Abs(base.lv) > Mathf.Abs(max))
3216 {
3217 max = base.lv;
3218 }
3219 foreach (Spatial child in children)
3220 {
3221 (child as Zone).GetDeepestLv(ref max);
3222 }
3223 return max;
3224 }

◆ GetDungenID()

virtual string Zone.GetDungenID ( )
inlinevirtual

◆ GetElectricity()

int Zone.GetElectricity ( bool  cost = false)
inline

Definition at line 3055 of file Zone.cs.

3056 {
3057 bool flag = GetSoilCost() > MaxSoil;
3058 int sum = 0;
3059 foreach (Thing thing in EClass._map.things)
3060 {
3061 if (!thing.IsInstalled || thing.trait.Electricity == 0)
3062 {
3063 continue;
3064 }
3065 if (cost)
3066 {
3067 if (thing.trait.Electricity < 0)
3068 {
3069 sum += -thing.trait.Electricity;
3070 }
3071 }
3072 else if (thing.trait.Electricity > 0)
3073 {
3074 sum += thing.trait.Electricity;
3075 }
3076 }
3077 if (!cost)
3078 {
3079 sum += elements.Value(2201) * 10 + BaseElectricity;
3080 if (!flag)
3081 {
3082 EClass._map.bounds.ForeachCell(delegate(Cell c)
3083 {
3084 if (c.sourceObj.id == 118 && c.growth.IsMature)
3085 {
3086 sum += 20;
3087 }
3088 });
3089 }
3090 }
3091 return sum;
3092 }
bool IsInstalled
Definition: Card.cs:2435
GrowSystem growth
Definition: Cell.cs:233
SourceObj.Row sourceObj
Definition: Cell.cs:1084
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:497
virtual int MaxSoil
Definition: Zone.cs:520
int GetSoilCost()
Definition: Zone.cs:3863

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

569 {
570 return base.source.id;
571 }

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

◆ GetOrCreateFortuneRollData()

FortuneRollData Zone.GetOrCreateFortuneRollData ( bool  refresh = true)
inline

Definition at line 3966 of file Zone.cs.

3967 {
3968 if (fortuneRoll == null)
3969 {
3971 fortuneRoll.seed = EClass._zone.uid * 100 + EClass.game.seed;
3972 }
3973 if (refresh || fortuneRoll.count == 0)
3974 {
3976 }
3977 return fortuneRoll;
3978 }
int seed
Definition: Game.cs:201
FortuneRollData fortuneRoll
Definition: Zone.cs:61

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

2396 {
2397 string text = IdProfile;
2398 if (text.IsEmpty())
2399 {
2400 Region region = parent as Region;
2401 if (base.lv != 0)
2402 {
2403 text = ((base.lv < 0) ? "Underground" : "Sky");
2404 }
2405 else if (region != null)
2406 {
2408 text = EClass.scene.elomapActor.elomap.GetTileInfo(base.x, base.y).idZoneProfile;
2409 if (bp != null)
2410 {
2411 name = Lang.GetList("zone_" + text.Split('/')[1]).RandomItem();
2412 bp.surrounding = new EloMap.TileInfo[3, 3];
2413 for (int i = 0; i < 3; i++)
2414 {
2415 for (int j = 0; j < 3; j++)
2416 {
2417 bp.surrounding[j, i] = EClass.scene.elomapActor.elomap.GetTileInfo(base.x - 1 + j, base.y - 1 + i);
2418 }
2419 }
2420 if (text == "Random/R_Shore")
2421 {
2422 base.isBeach = true;
2423 }
2424 }
2425 }
2426 else
2427 {
2428 text = "Random";
2429 }
2430 idProfile = text;
2431 }
2432 return ZoneProfile.Load(text);
2433 }
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:117
string idProfile
Definition: Spatial.cs:25
EloMap.TileInfo[,] surrounding
static ZoneProfile Load(string id)
Definition: ZoneProfile.cs:73
virtual string IdProfile
Definition: Zone.cs:143
Region Region
Definition: Zone.cs:167

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

2127 : Trait
2128 {
2129 return EClass._map.props.installed.traits.GetRandomThing<T>() as T;
2130 }
PropsInstalled installed
Definition: PropsManager.cs:8

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

◆ GetRandomVisitPos()

Point Zone.GetRandomVisitPos ( Chara  c)
inline

Definition at line 1602 of file Zone.cs.

1603 {
1604 Point point = null;
1605 if (EClass.rnd(3) == 0 && map.rooms.listRoom.Count > 0)
1606 {
1607 point = map.rooms.listRoom.RandomItem().points.RandomItem();
1608 }
1609 if (point == null && EClass.rnd(4) != 0)
1610 {
1611 IEnumerable<Chara> ie = map.charas.Where((Chara t) => t.trait.ShopType != 0 && t.pos != null && t.pos.IsValid);
1612 if (ie.Count() > 0)
1613 {
1614 point = ie.RandomItem().pos.GetRandomPoint(3);
1615 }
1616 }
1617 if (point == null)
1618 {
1619 point = map.bounds.GetRandomSurface(centered: false, walkable: true, !IsPCFaction && !(this is Zone_Civilized)) ?? map.bounds.GetRandomPoint();
1620 }
1621 return point.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false) ?? EClass._map.GetCenterPos().GetNearestPoint();
1622 }
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:769
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 2017 of file Zone.cs.

2018 {
2019 return this;
2020 }

◆ GetSoilCost()

int Zone.GetSoilCost ( )
inline

Definition at line 3863 of file Zone.cs.

3864 {
3865 int i = 0;
3866 EClass._map.bounds.ForeachCell(delegate(Cell c)
3867 {
3868 i += c.sourceObj.costSoil;
3869 });
3870 return i / 10;
3871 }

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

3391 {
3392 if (IsPCFaction)
3393 {
3394 return -10000000 + base.uid;
3395 }
3396 if (this is Zone_SubTown)
3397 {
3398 return -8000000 + base.uid;
3399 }
3400 if (this is Zone_Town)
3401 {
3402 return -9000000 + base.uid;
3403 }
3404 if (this is Zone_Civilized)
3405 {
3406 return -7000000 + base.uid;
3407 }
3408 if (this is Zone_RandomDungeon)
3409 {
3410 return 1000000 + base.uid;
3411 }
3412 return base.uid;
3413 }

Referenced by SpatialManager.ListReturnLocations().

◆ GetSpawnPos() [1/2]

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

Definition at line 1421 of file Zone.cs.

1422 {
1423 ZoneTransition zoneTransition = c.global?.transition;
1424 Zone zone = zoneTransition?.lastZone;
1425 ZoneTransition.EnterState enterState = zoneTransition?.state ?? destState;
1426 bool flag = zone == null || zone.lv > base.lv;
1427 if (IsRegion)
1428 {
1429 if (zone != null && !EClass.player.simulatingZone)
1430 {
1431 Zone topZone = zone.GetTopZone();
1432 if (GetZoneAt(topZone.x, topZone.y) != null)
1433 {
1434 return new Point(topZone.mapX, topZone.mapY);
1435 }
1436 }
1437 }
1438 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))
1439 {
1440 return EClass.player.lastZonePos;
1441 }
1442 if (enterState == ZoneTransition.EnterState.Region)
1443 {
1444 enterState = RegionEnterState;
1445 }
1446 if (this is Zone_Kapul && enterState == ZoneTransition.EnterState.Left)
1447 {
1448 enterState = ZoneTransition.EnterState.Right;
1449 }
1450 float rate = zoneTransition?.ratePos ?? (-1f);
1451 if (IsPCFaction)
1452 {
1453 if ((uint)(enterState - 3) <= 4u || enterState == ZoneTransition.EnterState.Return)
1454 {
1456 if (spot != null)
1457 {
1458 Point nearestPoint = (spot.trait as TraitSpotGuidePC).GetRandomPoint((Point p) => !p.IsBlocked && !p.Equals(spot.pos)).GetNearestPoint();
1459 if (nearestPoint != null && nearestPoint.IsValid)
1460 {
1461 return nearestPoint;
1462 }
1463 }
1464 }
1465 }
1466 while (true)
1467 {
1468 switch (enterState)
1469 {
1470 case ZoneTransition.EnterState.UndergroundOrSky:
1471 return new Point(zoneTransition.x, zoneTransition.z);
1472 case ZoneTransition.EnterState.Teleport:
1473 {
1474 foreach (Thing thing2 in map.things)
1475 {
1476 if (thing2.IsInstalled)
1477 {
1478 TraitTeleporter traitTeleporter = thing2.trait as TraitTeleporter;
1479 if (traitTeleporter != null)
1480 {
1481 Debug.Log(zoneTransition.idTele + "/" + traitTeleporter.id.IsEmpty(traitTeleporter.GetParam(3)) + "/" + traitTeleporter.GetParam(3));
1482 }
1483 if (traitTeleporter != null && !zoneTransition.idTele.IsEmpty() && zoneTransition.idTele == traitTeleporter.id.IsEmpty(traitTeleporter.GetParam(3)))
1484 {
1485 return thing2.pos.GetNearestPoint();
1486 }
1487 }
1488 }
1489 foreach (Thing thing3 in map.things)
1490 {
1491 if (thing3.IsInstalled && thing3.trait is TraitTeleporter traitTeleporter2 && traitTeleporter2.IsFor(zoneTransition.lastZone))
1492 {
1493 return thing3.pos.GetNearestPoint();
1494 }
1495 }
1496 Thing randomThing2 = EClass._map.props.installed.traits.GetRandomThing<TraitTeleporter>();
1497 if (randomThing2 != null)
1498 {
1499 return randomThing2.pos.GetNearestPoint();
1500 }
1501 goto case ZoneTransition.EnterState.Return;
1502 }
1503 case ZoneTransition.EnterState.Return:
1504 case ZoneTransition.EnterState.Elevator:
1505 case ZoneTransition.EnterState.Moongate:
1506 {
1507 if (enterState == ZoneTransition.EnterState.Elevator)
1508 {
1509 foreach (Thing thing4 in map.things)
1510 {
1511 if (thing4.IsInstalled && thing4.trait is TraitElevator traitElevator && traitElevator.IsFor(zoneTransition.lastZone))
1512 {
1513 return thing4.pos.GetNearestPoint();
1514 }
1515 }
1516 Thing randomThing = EClass._map.props.installed.traits.GetRandomThing<TraitElevator>();
1517 if (randomThing != null)
1518 {
1519 return randomThing.pos.GetNearestPoint();
1520 }
1521 }
1522 Thing thing = null;
1523 thing = map.props.installed.traits.GetRandomThing<TraitWaystone>();
1524 if (thing != null)
1525 {
1526 return thing.pos.GetNearestPoint();
1527 }
1528 thing = map.props.installed.traits.GetRandomThing<TraitCoreZone>();
1529 if (thing != null)
1530 {
1531 return thing.pos.GetNearestPoint();
1532 }
1533 if (base.lv == 0)
1534 {
1535 goto IL_04a1;
1536 }
1537 flag = base.lv <= 0;
1538 break;
1539 }
1540 case ZoneTransition.EnterState.Center:
1541 case ZoneTransition.EnterState.Encounter:
1542 if (map.config.embarkX != 0)
1543 {
1544 return new Point(map.config.embarkX, map.config.embarkY);
1545 }
1546 return map.GetCenterPos().GetNearestPoint(allowBlock: false, allowChara: false);
1547 case ZoneTransition.EnterState.Top:
1548 return map.bounds.GetTopPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1549 case ZoneTransition.EnterState.Right:
1550 return map.bounds.GetRightPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1551 case ZoneTransition.EnterState.Bottom:
1552 return map.bounds.GetBottomPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1553 case ZoneTransition.EnterState.Left:
1554 return map.bounds.GetLeftPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1555 case ZoneTransition.EnterState.Dead:
1556 case ZoneTransition.EnterState.Exact:
1557 case ZoneTransition.EnterState.PortalReturn:
1558 case ZoneTransition.EnterState.Fall:
1559 if (zoneTransition.x == 0 && EClass._map.bounds.x != 0)
1560 {
1561 return new Point(map.config.embarkX, map.config.embarkY);
1562 }
1563 return new Point(zoneTransition.x, zoneTransition.z);
1564 case ZoneTransition.EnterState.RandomVisit:
1565 return GetRandomVisitPos(c);
1566 case ZoneTransition.EnterState.Down:
1567 flag = true;
1568 break;
1569 case ZoneTransition.EnterState.Up:
1570 flag = false;
1571 break;
1572 }
1573 break;
1574 IL_04a1:
1575 enterState = ZoneTransition.EnterState.Center;
1576 }
1577 foreach (Thing thing5 in map.things)
1578 {
1579 if (thing5.trait is TraitNewZone { zone: not null } traitNewZone && zone != null && traitNewZone.zone.uid == zone.uid)
1580 {
1581 if (c != null && enterState != 0)
1582 {
1583 c.SetDir(traitNewZone.owner.dir);
1584 }
1585 return traitNewZone.GetExitPos();
1586 }
1587 }
1588 foreach (Thing thing6 in map.things)
1589 {
1590 if (thing6.trait is TraitNewZone traitNewZone2 && ((flag && traitNewZone2.IsUpstairs) || (!flag && traitNewZone2.IsDownstairs)))
1591 {
1592 if (c != null && enterState != 0)
1593 {
1594 c.SetDir(traitNewZone2.owner.dir);
1595 }
1596 return traitNewZone2.GetExitPos();
1597 }
1598 }
1599 return GetRandomVisitPos(c);
1600 }
override void SetDir(int d)
Definition: Chara.cs:3610
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:1170
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:587
EnterState state
virtual ZoneTransition.EnterState RegionEnterState
Definition: Zone.cs:177
Point GetRandomVisitPos(Chara c)
Definition: Zone.cs:1602
Zone GetZoneAt(int _x, int _y)
Definition: Zone.cs:3641

References EClass._map, Map.bounds, Map.config, Debug, MapConfig.embarkX, MapConfig.embarkY, Point.Equals(), Props.Find(), MapBounds.GetBottomPos(), MapBounds.GetCenterPos(), MapBounds.GetLeftPos(), Point.GetNearestPoint(), Trait.GetParam(), GetRandomVisitPos(), MapBounds.GetRightPos(), MapBounds.GetTopPos(), GetTopZone(), GetZoneAt(), Chara.global, TraitTeleporter.id, ZoneTransition.idTele, PropsManager.installed, TraitNewZone.IsFor(), Card.IsInstalled, Chara.IsPC, IsPCFaction, Spatial.IsRegion, 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 2832 of file Zone.cs.

2833 {
2834 Point point = new Point();
2835 for (int i = 0; i < tries; i++)
2836 {
2837 point = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2838 if (!point.IsValid || point.cell.hasDoor || point.IsSync)
2839 {
2840 continue;
2841 }
2842 switch (type)
2843 {
2844 case SpawnPosition.Guest:
2845 {
2846 Room room = point.cell.room;
2847 if (room != null && room.data.accessType != 0)
2848 {
2849 continue;
2850 }
2851 break;
2852 }
2853 case SpawnPosition.Outside:
2854 if (point.cell.HasRoof || point.cell.light > 0)
2855 {
2856 continue;
2857 }
2858 break;
2859 }
2860 return point;
2861 }
2862 return null;
2863 }
SpawnPosition
Definition: SpawnPosition.cs:2
BaseArea.AccessType accessType
Definition: AreaData.cs:42
Room room
Definition: Cell.cs:110
byte light
Definition: Cell.cs:66
bool HasRoof
Definition: Cell.cs:656
bool hasDoor
Definition: Cell.cs:266
bool IsSync
Definition: Point.cs:344

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

◆ GetTopZone()

◆ GetZoneAt()

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

Definition at line 3641 of file Zone.cs.

3642 {
3643 if (IsRegion)
3644 {
3645 foreach (Spatial child in children)
3646 {
3647 if (!(child is Zone_Field) && _x == child.x && _y == child.y)
3648 {
3649 return child as Zone;
3650 }
3651 }
3652 }
3653 foreach (Spatial child2 in children)
3654 {
3655 if (_x == child2.x && _y == child2.y)
3656 {
3657 return child2 as Zone;
3658 }
3659 }
3660 return null;
3661 }

References Spatial.x, and Spatial.y.

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

◆ GrowPlants()

void Zone.GrowPlants ( VirtualDate  date)
inline

Definition at line 3534 of file Zone.cs.

3535 {
3536 bool num = (EClass.player.isAutoFarming = IsPCFaction && EClass.Branch.policies.IsActive(2707));
3537 int weedChance = 1;
3539 {
3540 weedChance += (EClass.debug.enable ? 100000 : 20) + EClass.Branch.Evalue(2703) * 10;
3541 }
3542 if (date.sunMap == null)
3543 {
3544 date.BuildSunMap();
3545 }
3546 if (num)
3547 {
3548 HashSet<int> hashSet = new HashSet<int>();
3549 foreach (Thing thing in EClass._map.things)
3550 {
3551 if (!thing.IsInstalled || !(thing.trait is TraitSpotFarm traitSpotFarm))
3552 {
3553 continue;
3554 }
3555 foreach (Point item in traitSpotFarm.ListPoints(null, onlyPassable: false))
3556 {
3557 hashSet.Add(item.index);
3558 }
3559 }
3560 Perform(hashSet);
3561 EClass.player.isAutoFarming = false;
3562 Perform(hashSet);
3563 }
3564 else
3565 {
3566 Perform(null);
3567 }
3568 void Perform(HashSet<int> farmMap)
3569 {
3570 bool isWinter = date.IsWinter;
3571 EClass._map.bounds.ForeachCell(delegate(Cell c)
3572 {
3573 if (farmMap != null)
3574 {
3576 {
3577 if (!farmMap.Contains(c.index))
3578 {
3579 return;
3580 }
3581 }
3582 else if (farmMap.Contains(c.index))
3583 {
3584 return;
3585 }
3586 }
3587 if (c.decal != 0 && EClass.rnd(3) == 0)
3588 {
3589 c.decal = 0;
3590 }
3591 if (GrowPlant)
3592 {
3593 if (c.growth != null)
3594 {
3595 bool flag = false;
3596 if (!EClass.player.isAutoFarming && c.growth.HaltGrowth() && (c.IsFarmField || c.IsTopWater) && (!isWinter || !date.IsRealTime))
3597 {
3598 flag = true;
3599 }
3600 PlantData plantData = map.TryGetPlant(c);
3601 if (!flag && (plantData == null || plantData.fert >= 0))
3602 {
3603 c.TryGrow(date);
3604 }
3605 if (isWinter && plantData != null && c.growth != null && c.growth.NeedSunlight && plantData.fert >= 0 && (EClass.rnd(4) == 0 || c.growth.stage.idx == 0))
3606 {
3607 if (date.sunMap == null)
3608 {
3609 date.BuildSunMap();
3610 }
3611 if (!date.sunMap.Contains(c.index) && !c.growth.CanGrow(date))
3612 {
3613 c.growth.Perish();
3614 }
3615 }
3616 }
3617 else if (c.detail != null)
3618 {
3619 c.Things.ForeachReverse(delegate(Thing t)
3620 {
3621 if (t.IsInstalled && t.trait is TraitSeed && !t.isSale)
3622 {
3623 (t.trait as TraitSeed).TrySprout(force: false, sucker: false, date);
3624 }
3625 });
3626 }
3627 else if (EClass.rnd(20) == 0 && GrowWeed && c.CanGrowWeed && EClass.rnd(weedChance) == 0)
3628 {
3629 biome.Populate(c.GetPoint());
3630 if (c.growth != null)
3631 {
3632 c.growth.SetStage(0);
3633 }
3634 }
3635 }
3636 c.isWatered = false;
3637 });
3638 }
3639 }
void Populate(Point point, bool interior=false, float mtpDensity=1f)
byte decal
Definition: Cell.cs:46
CellDetail detail
Definition: Cell.cs:100
Point GetPoint()
Definition: Cell.cs:1113
bool CanGrowWeed
Definition: Cell.cs:750
int index
Definition: Cell.cs:122
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:1968
bool isAutoFarming
Definition: Player.cs:1251
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:353
virtual bool GrowPlant
Definition: Zone.cs:351

References EClass._map, Map.bounds, EClass.Branch, VirtualDate.BuildSunMap(), GrowSystem.CanGrow(), Cell.decal, FactionBranch.Evalue(), MapBounds.ForeachCell(), Cell.growth, GrowSystem.Stage.idx, 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 3014 of file Zone.cs.

3015 {
3016 return fieldElements.Has(idEle);
3017 }
bool Has(int ele)
ElementContainerField fieldElements
Definition: Zone.cs:46

References ElementContainer.Has().

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

◆ Import()

ZoneExportData Zone.Import ( string  path)
inline

Definition at line 3281 of file Zone.cs.

3282 {
3283 ZipFile zipFile = ZipFile.Read(path);
3284 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
3285 zipFile.ExtractAll(pathTemp);
3286 zipFile.Dispose();
3287 return IO.LoadFile<ZoneExportData>(pathTemp + "export") ?? new ZoneExportData();
3288 }

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

◆ ImportDialog()

void Zone.ImportDialog ( string  dir = null)
inline

Definition at line 3344 of file Zone.cs.

3345 {
3347 {
3348 string[] array = StandaloneFileBrowser.OpenFilePanel("Import Zone", dir ?? CorePath.ZoneSave, "z", multiselect: false);
3349 if (array.Length != 0)
3350 {
3351 Zone_User zone_User = SpatialGen.Create("user", EClass.world.region, register: true) as Zone_User;
3352 zone_User.path = array[0];
3353 Thing thing = ThingGen.Create("teleporter");
3354 thing.c_uidZone = zone_User.uid;
3355 EClass._zone.AddCard(thing, EClass.pc.pos);
3356 }
3357 });
3358 }
static string[] OpenFilePanel(string title, string directory, string extension, bool multiselect)

References EClass.core, 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 3360 of file Zone.cs.

3361 {
3362 try
3363 {
3364 return Map.GetMetaData(path)?.IsValidVersion() ?? false;
3365 }
3366 catch (Exception ex)
3367 {
3368 EClass.ui.Say(ex.Message);
3369 return false;
3370 }
3371 }
bool IsValidVersion()
Definition: MapMetaData.cs:31
static MapMetaData GetMetaData(string pathZip)
Definition: Map.cs:750

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

Referenced by TraitMoongate.UseMoongate().

◆ ListLandFeats()

List< Element > Zone.ListLandFeats ( )
inline

Definition at line 3226 of file Zone.cs.

3227 {
3228 if (landFeats == null)
3229 {
3230 landFeats = new List<int>();
3232 string[] listBase = IDBaseLandFeat.Split(',');
3233 string[] array = listBase;
3234 foreach (string text in array)
3235 {
3236 if (!text.IsEmpty())
3237 {
3238 landFeats.Add(EClass.sources.elements.alias[text].id);
3239 }
3240 }
3241 if (listBase.Length == 1)
3242 {
3243 List<SourceElement.Row> list = EClass.sources.elements.rows.Where(delegate(SourceElement.Row e)
3244 {
3245 if (e.category != "landfeat" || e.chance == 0)
3246 {
3247 return false;
3248 }
3249 bool flag = true;
3250 string[] tag = e.tag;
3251 foreach (string text2 in tag)
3252 {
3253 if (text2.StartsWith("bf"))
3254 {
3255 flag = false;
3256 if (listBase[0] == text2)
3257 {
3258 flag = true;
3259 break;
3260 }
3261 }
3262 }
3263 return flag ? true : false;
3264 }).ToList();
3265 SourceElement.Row row = list.RandomItemWeighted((SourceElement.Row e) => e.chance);
3266 landFeats.Add(row.id);
3267 list.Remove(row);
3268 row = list.RandomItemWeighted((SourceElement.Row e) => e.chance);
3269 landFeats.Add(row.id);
3270 }
3271 Rand.SetSeed();
3272 }
3273 List<Element> list2 = new List<Element>();
3274 foreach (int landFeat in landFeats)
3275 {
3276 list2.Add(Element.Create(landFeat, 1));
3277 }
3278 return list2;
3279 }
static Element Create(int id, int v=0)
Definition: ELEMENT.cs:1119
virtual string IDBaseLandFeat
Definition: Zone.cs:151
List< int > landFeats
Definition: Zone.cs:58

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

3838 {
3839 List<Chara> list = new List<Chara>();
3840 foreach (Chara chara in EClass._map.charas)
3841 {
3842 if (chara.c_uidMaster == c.uid && chara.c_minionType == MinionType.Default)
3843 {
3844 list.Add(chara);
3845 }
3846 }
3847 return list;
3848 }

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

◆ ModDevelopment()

void Zone.ModDevelopment ( int  a)
inline

Definition at line 3741 of file Zone.cs.

3742 {
3743 base.development += a;
3744 if (a > 0)
3745 {
3746 Msg.Say("gainDevelopment", Name, a.ToString() ?? "");
3747 }
3748 }

References Msg.Say().

◆ ModInfluence()

void Zone.ModInfluence ( int  a)
inline

Definition at line 3731 of file Zone.cs.

3732 {
3733 base.influence += a;
3734 if (a > 0)
3735 {
3736 Msg.Say("gainInfluence", Name, a.ToString() ?? "");
3737 }
3738 Tutorial.Reserve("influence");
3739 }

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

1214 {
1215 if (!(id == "startVillage2"))
1216 {
1217 return;
1218 }
1219 if (EClass._map.version.IsBelow(0, 23, 226))
1220 {
1221 SetBGM(121, refresh: false);
1222 }
1223 int num = 0;
1224 foreach (Chara chara in EClass._map.charas)
1225 {
1226 if (chara.id == "cat_silver" && !chara.IsPCFaction)
1227 {
1228 num++;
1229 }
1230 }
1231 if (num > 0)
1232 {
1233 Msg.Say("num_silvercat", num.ToString() ?? "");
1234 }
1235 }
override bool IsPCFaction
Definition: Chara.cs:689
Version version
Definition: Map.cs:28
bool IsBelow(int _major, int _minor, int _batch)
Definition: Version.cs:31

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

1258 {
1259 }

Referenced by GameDate.AdvanceHour().

◆ OnAfterCreate()

override void Zone.OnAfterCreate ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 597 of file Zone.cs.

598 {
599 if (AddPrefix)
600 {
601 if (GetTopZone() == this)
602 {
603 base.idPrefix = EClass.sources.zoneAffixes.rows.RandomItem().id;
604 }
605 else
606 {
607 base.idPrefix = GetTopZone().idPrefix;
608 }
609 }
610 }
SourceZoneAffix zoneAffixes
int idPrefix
Definition: Spatial.cs:130
virtual bool AddPrefix
Definition: Zone.cs:287

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

◆ OnAfterSimulate()

virtual void Zone.OnAfterSimulate ( )
inlinevirtual

Reimplemented in Zone_WindRest.

Definition at line 1253 of file Zone.cs.

1254 {
1255 }

Referenced by OnVisit().

◆ OnBeforeDeactivate()

virtual void Zone.OnBeforeDeactivate ( )
inlinevirtual

Reimplemented in Zone_Tent.

Definition at line 1237 of file Zone.cs.

1238 {
1239 }

Referenced by Deactivate().

◆ OnBeforeSimulate()

virtual void Zone.OnBeforeSimulate ( )
inlinevirtual

Reimplemented in Zone_DungeonPuppy, and Zone_Nymelle.

Definition at line 1245 of file Zone.cs.

1246 {
1247 }

Referenced by OnVisit().

◆ OnChildNumChange()

void Zone.OnChildNumChange ( Card  c)
inline

Implements ICardParent.

Definition at line 2013 of file Zone.cs.

2014 {
2015 }

◆ OnCreate()

override void Zone.OnCreate ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 591 of file Zone.cs.

592 {
593 events.zone = this;
594 base.lv = StartLV;
595 }
virtual int StartLV
Definition: Zone.cs:413

References StartLV.

◆ OnCreateBP()

virtual void Zone.OnCreateBP ( )
inlinevirtual

Reimplemented in Zone_Arena2, and Zone_Harvest.

Definition at line 2443 of file Zone.cs.

2444 {
2445 }

Referenced by CreateBP().

◆ OnDeactivate()

virtual void Zone.OnDeactivate ( )
inlinevirtual

Definition at line 1241 of file Zone.cs.

1242 {
1243 }

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

2666 {
2668 {
2669 foreach (Chara chara in EClass._map.charas)
2670 {
2671 if (!chara.IsGlobal && chara.hostility < Hostility.Neutral && chara.OriginalHostility < Hostility.Friend)
2672 {
2673 Hostility hostility2 = (chara.c_originalHostility = Hostility.Neutral);
2674 chara.hostility = hostility2;
2675 }
2676 }
2677 }
2678 if (PrespawnRate != 0f && !IsSkyLevel)
2679 {
2680 for (int i = 0; i < (int)((float)MaxSpawn * PrespawnRate); i++)
2681 {
2682 SpawnMob();
2683 }
2684 }
2689 }
Hostility
Definition: Hostility.cs:2
Hostility OriginalHostility
Definition: Chara.cs:475
Hostility hostility
Definition: Chara.cs:295
virtual float PrespawnRate
Definition: Zone.cs:331
virtual int MaxSpawn
Definition: Zone.cs:317
virtual bool IsSkyLevel
Definition: Zone.cs:271
Chara TryGenerateEvolved(bool force=false, Point p=null)
Definition: Zone.cs:2718
void TryGenerateShrine()
Definition: Zone.cs:2775
void TryGenerateOre()
Definition: Zone.cs:2691
virtual bool MakeEnemiesNeutral
Definition: Zone.cs:238
void TryGenerateBigDaddy()
Definition: Zone.cs:2738

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

2829 {
2830 }

Referenced by MapGenDungen.OnGenerateTerrain().

◆ OnInspect()

void Zone.OnInspect ( )
inline

Implements IInspect.

Definition at line 3386 of file Zone.cs.

3387 {
3388 }

◆ OnKillGame()

void Zone.OnKillGame ( )
inline

Definition at line 1776 of file Zone.cs.

1777 {
1778 foreach (Thing thing in map.things)
1779 {
1780 if (thing.renderer.hasActor)
1781 {
1782 thing.renderer.KillActor();
1783 }
1784 }
1785 }
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 1963 of file Zone.cs.

1964 {
1965 if (branch != null)
1966 {
1967 branch.SetOwner(this);
1968 }
1969 events.OnLoad(this);
1970 }
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 1209 of file Zone.cs.

1210 {
1211 }

Referenced by Activate().

◆ OnSimulateDay()

void Zone.OnSimulateDay ( VirtualDate  date)
inline

Definition at line 3499 of file Zone.cs.

3500 {
3501 if (base.IsPlayerFaction)
3502 {
3503 branch.OnSimulateDay(date);
3504 }
3505 }
void OnSimulateDay(VirtualDate date)

References FactionBranch.OnSimulateDay().

Referenced by VirtualDate.SimulateDay().

◆ OnSimulateHour()

void Zone.OnSimulateHour ( VirtualDate  date)
inline

Definition at line 3444 of file Zone.cs.

3445 {
3446 if (base.IsPlayerFaction)
3447 {
3448 branch.OnSimulateHour(date);
3449 }
3451 if (date.IsRealTime)
3452 {
3453 foreach (Thing thing in EClass._map.things)
3454 {
3455 if (thing.IsInstalled)
3456 {
3457 thing.trait.TryToggle();
3458 }
3459 }
3461 }
3462 EClass._map.things.ForeachReverse(delegate(Thing t)
3463 {
3464 t.OnSimulateHour(date);
3465 });
3466 foreach (Thing sucker in Suckers)
3467 {
3468 sucker.Destroy();
3469 }
3470 Suckers.Clear();
3471 if (RespawnRate != 0f)
3472 {
3473 int num = 0;
3474 foreach (Chara chara in map.charas)
3475 {
3476 if (!chara.IsGlobal)
3477 {
3478 num++;
3479 }
3480 }
3481 if (num < MaxRespawn)
3482 {
3483 for (int i = 0; i < RespawnPerHour; i++)
3484 {
3485 SpawnMob();
3486 }
3487 }
3488 }
3489 if (!date.IsRealTime && EClass.rnd(24) == 0)
3490 {
3491 RainWater();
3492 }
3493 if (date.hour == 6)
3494 {
3495 GrowPlants(date);
3496 }
3497 }
virtual void OnSimulateHour(VirtualDate date)
Definition: Card.cs:6961
void DecayNatural(int hour=1)
Definition: Card.cs:6970
int hour
Definition: Date.cs:74
void OnSimulateHour(VirtualDate date)
virtual void TryToggle()
Definition: Trait.cs:1246
bool IsRealTime
Definition: VirtualDate.cs:7
virtual int RespawnPerHour
Definition: Zone.cs:347
virtual float RespawnRate
Definition: Zone.cs:333
static List< Thing > Suckers
Definition: Zone.cs:83
void GrowPlants(VirtualDate date)
Definition: Zone.cs:3534
int MaxRespawn
Definition: Zone.cs:319

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

3508 {
3509 if (base.IsPlayerFaction)
3510 {
3511 branch.OnSimulateMonth(date);
3512 }
3513 if (date.IsRealTime)
3514 {
3516 }
3517 }
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 1110 of file Zone.cs.

1111 {
1112 if (EClass.world.date.IsExpired(base.dateRevive))
1113 {
1115 Revive();
1116 List<Chara> list = new List<Chara>();
1117 foreach (Chara chara in EClass._map.charas)
1118 {
1119 chara.TryRestock(onCreate: false);
1120 if (!chara.IsPCFaction)
1121 {
1122 chara.c_fur = 0;
1123 }
1124 if (chara.IsMinion && chara.master != null && !chara.master.IsPCParty)
1125 {
1126 list.Add(chara);
1127 }
1128 }
1129 foreach (Chara item in list)
1130 {
1131 item.Destroy();
1132 }
1133 }
1134 if (!EClass.game.isLoading)
1135 {
1137 }
1140 events.OnVisit();
1141 OnActivate();
1142 UpdateQuests();
1144 isSimulating = true;
1145 Simulate();
1146 isSimulating = false;
1148 if (EClass.Branch != null)
1149 {
1151 }
1152 base.lastActive = EClass.world.date.GetRaw();
1153 if (!EClass.game.isLoading)
1154 {
1155 base.visitCount++;
1156 }
1157 base.version = EClass.core.version.GetInt();
1158 if (fieldElements.dict.Count() > 0)
1159 {
1160 Tutorial.Reserve("field");
1161 }
1162 }
Version version
Definition: BaseCore.cs:17
void TryRestock(bool onCreate)
Definition: Chara.cs:4800
Dictionary< int, Element > dict
void OnAfterSimulate()
void AssignCharas()
Definition: RoomManager.cs:39
void Revive()
Definition: Zone.cs:1175
void RefreshDeathSentense()
Definition: Zone.cs:1164
void Simulate()
Definition: Zone.cs:1261
virtual void OnAfterSimulate()
Definition: Zone.cs:1253
void RefreshCriminal()
Definition: Zone.cs:3672
virtual void OnBeforeSimulate()
Definition: Zone.cs:1245
virtual void OnActivate()
Definition: Zone.cs:1213
void ResetHostility()
Definition: Zone.cs:2812
void UpdateQuests(bool force=false)
Definition: Zone.cs:3750
int GetInt()
Definition: Version.cs:21

References EClass._map, RoomManager.AssignCharas(), EClass.Branch, Map.charas, EClass.core, World.date, ElementContainer.dict, events, fieldElements, EClass.game, Version.GetInt(), Date.GetRaw(), 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_Yowyn.

Definition at line 1249 of file Zone.cs.

1250 {
1251 }

Referenced by Activate().

◆ RainWater()

void Zone.RainWater ( )
inline

Definition at line 3519 of file Zone.cs.

3520 {
3522 {
3523 return;
3524 }
3525 EClass._map.bounds.ForeachCell(delegate(Cell c)
3526 {
3527 if (c.IsFarmField && !c.HasRoof)
3528 {
3529 c.isWatered = true;
3530 }
3531 });
3532 }
bool IsFarmField
Definition: Cell.cs:738
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 3152 of file Zone.cs.

3153 {
3155 {
3156 return;
3157 }
3159 Playlist playlist = map.plDay;
3160 foreach (ZoneEvent item in events.list)
3161 {
3162 if (item.playlist != null)
3163 {
3164 playlist = item.playlist;
3165 }
3166 }
3167 if (IDPlaylistOverwrite != null)
3168 {
3169 playlist = EClass.Sound.GetPlaylist(IDPlaylistOverwrite);
3170 }
3172 {
3173 Room room = EClass.pc.pos.cell.room;
3174 if (room != null && room.lot != null && room.lot.idBGM != 0)
3175 {
3176 playlist = EClass.Sound.plLot;
3177 if (playlist.list[0].data?.id != room.lot.idBGM)
3178 {
3179 playlist.list[0].data = EClass.core.refs.dictBGM.TryGetValue(room.lot.idBGM);
3180 playlist.Reset();
3181 if (!LayerDrama.keepBGM)
3182 {
3183 EClass.Sound.StopBGM(1f);
3184 }
3185 }
3186 }
3187 }
3189 EClass.Sound.SwitchPlaylist(playlist, !LayerDrama.keepBGM);
3190 }
bool IsInActiveZone
Definition: Chara.cs:861
void SetBGMInterval()
Definition: CoreConfig.cs:1018
Dictionary< int, BGMData > dictBGM
Definition: CoreRef.cs:386
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:147

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

3673 {
3674 bool flag = EClass.player.IsCriminal && HasLaw && !AllowCriminal && !IsPCFaction;
3675 Hostility hostility = (flag ? Hostility.Neutral : Hostility.Friend);
3676 foreach (Chara chara in EClass._map.charas)
3677 {
3678 if (chara.trait is TraitGuard)
3679 {
3680 chara.hostility = hostility;
3681 if (!flag && chara.enemy != null && chara.enemy.IsPCParty)
3682 {
3683 chara.SetEnemy();
3684 }
3685 }
3686 }
3687 }
Chara enemy
Definition: Chara.cs:86
Chara SetEnemy(Chara c=null)
Definition: Chara.cs:6489
virtual bool AllowCriminal
Definition: Zone.cs:251

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

1165 {
1166 foreach (Chara chara in EClass._map.charas)
1167 {
1168 if (chara.HasCondition<ConDeathSentense>())
1169 {
1170 chara.GetCondition<ConDeathSentense>().TryRemove();
1171 }
1172 }
1173 }
bool HasCondition(string alias)
Definition: Chara.cs:9758

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

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

◆ RefreshElectricity()

void Zone.RefreshElectricity ( )
inline

Definition at line 3024 of file Zone.cs.

3025 {
3026 dirtyElectricity = false;
3027 bool flag = GetSoilCost() > MaxSoil;
3028 base.electricity = elements.Value(2201) * 10 + BaseElectricity;
3029 foreach (Thing thing in EClass._map.things)
3030 {
3031 if (thing.IsInstalled && thing.trait.Electricity != 0 && (thing.isOn || thing.trait.Electricity > 0))
3032 {
3033 base.electricity += thing.trait.Electricity;
3034 }
3035 }
3036 if (!flag)
3037 {
3038 EClass._map.bounds.ForeachCell(delegate(Cell c)
3039 {
3040 if (c.sourceObj.id == 118 && c.growth.IsMature)
3041 {
3042 base.electricity += 20;
3043 }
3044 });
3045 }
3046 foreach (Thing thing2 in EClass._map.things)
3047 {
3048 if (thing2.IsInstalled)
3049 {
3050 thing2.trait.TryToggle();
3051 }
3052 }
3053 }
bool dirtyElectricity
Definition: Zone.cs:71

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

1101 {
1102 if (idHat != null && EClass.world.date.IsExpired(base.dateHat))
1103 {
1104 idHat = null;
1105 base.dateHat = 0;
1106 }
1107 sourceHat = ((idHat != null) ? EClass.sources.cards.map[idHat] : ((IDHat != null) ? EClass.sources.cards.map[IDHat] : null));
1108 }
Dictionary< string, CardRow > map
Definition: SourceCard.cs:9
SourceCard cards
string idHat
Definition: Spatial.cs:31
virtual string IDHat
Definition: Zone.cs:149
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 3689 of file Zone.cs.

3690 {
3691 if (base.lv != 0)
3692 {
3693 return;
3694 }
3695 dictCitizen.Clear();
3696 foreach (Chara item in map.charas.Concat(map.deadCharas))
3697 {
3698 if (item.trait.IsCitizen && !item.IsGlobal && !item.isSubsetCard)
3699 {
3700 dictCitizen[item.uid] = item.Name;
3701 }
3702 }
3703 }
Dictionary< int, string > dictCitizen
Definition: Zone.cs:52

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

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

◆ RefreshPlaylist()

void Zone.RefreshPlaylist ( )
inline

Definition at line 3136 of file Zone.cs.

3137 {
3138 if (map.plDay == null)
3139 {
3140 map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList));
3141 }
3142 }

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

2107 {
2108 if (IsActiveZone)
2109 {
2111 }
2112 t.parent = null;
2113 if (t.isChara)
2114 {
2115 t.Chara.currentZone = null;
2116 }
2117 if (t.isThing && !t.trait.IDActorEx.IsEmpty())
2118 {
2120 }
2121 if (t.renderer.hasActor)
2122 {
2124 }
2125 }
override void OnLeaveScreen()
virtual bool isChara
Definition: Card.cs:2135
void OnCardRemovedFromZone(Card t)
Definition: Map.cs:837
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().

◆ ResetHostility()

void Zone.ResetHostility ( )
inline

Definition at line 2812 of file Zone.cs.

2813 {
2814 foreach (Chara chara in EClass._map.charas)
2815 {
2816 if (!chara.source.hostility.IsEmpty() && chara.source.hostility.ToEnum<Hostility>() >= Hostility.Friend && !chara.IsPCFactionOrMinion)
2817 {
2818 chara.c_originalHostility = (Hostility)0;
2819 }
2820 chara.hostility = chara.OriginalHostility;
2821 if (chara.enemy != null && (chara.enemy.IsPCFaction || chara.IsPCFaction))
2822 {
2823 chara.SetEnemy();
2824 }
2825 }
2826 }
bool IsPCFactionOrMinion
Definition: Card.cs:2326
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 3144 of file Zone.cs.

3145 {
3146 map._plDay.Clear();
3147 UnityEngine.Object.DestroyImmediate(map.plDay);
3148 map.plDay = null;
3150 }

References Map._plDay, and Map.plDay.

◆ Revive()

void Zone.Revive ( )
inline

Definition at line 1175 of file Zone.cs.

1176 {
1177 base.dateRevive = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRevive;
1178 if (ShouldAutoRevive)
1179 {
1180 foreach (Chara deadChara in map.deadCharas)
1181 {
1182 if (deadChara.trait.CanAutoRevive && deadChara.CanRevive())
1183 {
1184 deadChara.Revive();
1186 {
1187 deadChara.RemoveBacker();
1188 }
1189 EClass._zone.AddCard(deadChara, (deadChara.orgPos != null && deadChara.orgPos.IsInBounds) ? deadChara.orgPos : deadChara.pos);
1190 }
1191 }
1192 }
1193 foreach (Chara value in EClass.game.cards.globalCharas.Values)
1194 {
1195 if (value.isDead && value.CanRevive() && value.homeZone == this)
1196 {
1197 value.Revive();
1198 Point point = GetSpawnPos(value);
1199 if (value.orgPos != null && value.orgPos.IsInBounds)
1200 {
1201 point = value.orgPos.GetNearestPoint() ?? point;
1202 }
1203 EClass._zone.AddCard(value, point);
1204 }
1205 }
1206 map.deadCharas.Clear();
1207 }
int c_idBacker
Definition: Card.cs:1477
bool CanRevive()
Definition: Chara.cs:5263
void Revive(Point p=null, bool msg=false)
Definition: Chara.cs:5289
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:384

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

3706 {
3707 base.isAlarmSet = enable;
3708 if (enable)
3709 {
3710 foreach (Chara chara in EClass._map.charas)
3711 {
3712 if (!chara.IsPCFactionOrMinion)
3713 {
3714 chara.SetHostility(Hostility.Enemy);
3715 }
3716 }
3717 Msg.Say("alarm");
3718 Msg.Say("alarm2");
3719 SE.Play("alarm");
3720 return;
3721 }
3722 foreach (Chara chara2 in EClass._map.charas)
3723 {
3724 if (!chara2.IsPCFactionOrMinion)
3725 {
3726 chara2.SetHostility(Hostility.Neutral);
3727 }
3728 }
3729 }
Chara SetHostility(Hostility h)
Definition: Chara.cs:1481

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

3132 {
3133 SetBGM(new List<int> { id }, refresh, fadeDuration);
3134 }

◆ SetBGM() [2/2]

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

Definition at line 3094 of file Zone.cs.

3095 {
3096 map._plDay.Clear();
3097 if (ids.Count > 0)
3098 {
3099 foreach (int id in ids)
3100 {
3101 if (id != -1)
3102 {
3103 map._plDay.Add(id);
3104 }
3105 }
3106 }
3107 UnityEngine.Object.DestroyImmediate(map.plDay);
3108 map.plDay = null;
3110 if (!refresh)
3111 {
3112 return;
3113 }
3114 if (fadeDuration > 0f)
3115 {
3116 EClass.Sound.StopBGM(fadeDuration, playLastBGM: false, delegate
3117 {
3119 {
3120 RefreshBGM();
3121 }
3122 });
3123 }
3124 else
3125 {
3126 EClass.Sound.StopBGM();
3127 RefreshBGM();
3128 }
3129 }
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 
)
inline

Definition at line 3019 of file Zone.cs.

3020 {
3021 fieldElements.SetBase(idEle, a);
3022 }
Element SetBase(string alias, int v, int potential=0)

References ElementContainer.SetBase().

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

◆ ShouldScaleImportedChara()

virtual bool Zone.ShouldScaleImportedChara ( Chara  c)
inlinevirtual

Reimplemented in Zone_QuestDungeon.

Definition at line 563 of file Zone.cs.

564 {
565 return false;
566 }

Referenced by SerializedCards.Restore().

◆ Simulate()

void Zone.Simulate ( )
inline

Definition at line 1261 of file Zone.cs.

1262 {
1263 if (!EClass.game.isLoading && base.visitCount > 0)
1264 {
1265 if (Boss != null && IsNefia)
1266 {
1267 Msg.Say("bossLeave", Boss.Name.ToTitleCase(), EClass._zone.Name);
1270 }
1271 int num = Mathf.Clamp(MinsSinceLastActive, 1, 10000);
1272 foreach (Chara chara2 in EClass._map.charas)
1273 {
1274 if (chara2.hp < 0)
1275 {
1276 chara2.hp = 0;
1277 }
1278 if (!chara2.IsPCParty)
1279 {
1280 if (chara2.mana.value < 0)
1281 {
1282 chara2.mana.value = 0;
1283 }
1284 if (chara2.stamina.value < 0)
1285 {
1286 chara2.stamina.value = 0;
1287 }
1288 }
1289 if (num > 60)
1290 {
1291 chara2.resistCon = null;
1292 }
1293 if (chara2.rarity >= Rarity.Legendary && !chara2.IsPCFaction && num > 0)
1294 {
1295 Msg.ignoreAll = true;
1296 chara2.Cure(CureType.Boss, 20 + num * 10);
1297 chara2.HealHP((int)((long)Mathf.Max(1, chara2.MaxHP) * (long)Mathf.Min(num, 20) / 20));
1298 chara2.mana.Mod(Mathf.Max(1, chara2.mana.max) * Mathf.Min(num, 20) / 20);
1299 chara2.stamina.Mod(Mathf.Max(1, chara2.stamina.max) * Mathf.Min(num, 20) / 20);
1300 Msg.ignoreAll = false;
1301 }
1302 }
1303 }
1304 Debug.Log("Last Active:" + base.lastActive);
1305 if (base.lastActive == 0 || HourSinceLastActive <= 1 || IsRegion)
1306 {
1307 return;
1308 }
1309 Debug.Log(Name + " Simulate:" + HourSinceLastActive + " hours");
1310 VirtualDate virtualDate = new VirtualDate(HourSinceLastActive);
1311 List<Chara> list = EClass._map.charas.ToList();
1312 int num2 = HourSinceLastActive / 24;
1313 int num3 = 0;
1314 if (num2 > 0)
1315 {
1316 foreach (Chara item in list)
1317 {
1318 if (!item.IsPCParty)
1319 {
1320 item.OnSleep(200, num2);
1321 if (item.conSleep != null)
1322 {
1323 item.conSleep.Kill();
1324 }
1325 if (EClass.rnd(EClass.world.date.IsNight ? 20 : 200) == 0 && !item.IsPCFaction)
1326 {
1327 item.AddCondition<ConSleep>(1000 + EClass.rnd(1000), force: true);
1328 }
1329 if (item.things.Count > 20)
1330 {
1331 item.ClearInventory(ClearInventoryType.Purge);
1332 }
1333 }
1334 }
1335 }
1336 VirtualDate.current = virtualDate;
1337 for (int i = 0; i < HourSinceLastActive; i++)
1338 {
1339 virtualDate.SimulateHour();
1340 if (!virtualDate.IsWinter)
1341 {
1342 num3++;
1343 }
1344 }
1345 EClass._map.things.ForeachReverse(delegate(Thing t)
1346 {
1348 });
1349 VirtualDate.current = null;
1350 if (!IsPCFaction)
1351 {
1352 return;
1353 }
1354 int num4 = 0;
1355 foreach (Chara item2 in list)
1356 {
1357 if (item2.IsPCParty)
1358 {
1359 continue;
1360 }
1361 if (!item2.IsHomeMember())
1362 {
1363 if (item2.id == "bee")
1364 {
1365 num4++;
1366 }
1367 if (num2 > 0 && item2.IsGuest())
1368 {
1369 item2.ChooseNewGoal();
1370 item2.ai.SimulateZone(num2);
1371 }
1372 continue;
1373 }
1374 if (num2 > 0)
1375 {
1376 Goal goalWork = item2.GetGoalWork();
1377 item2.SetAI(goalWork);
1378 if (goalWork is GoalWork)
1379 {
1380 (goalWork as GoalWork).FindWork(item2);
1381 }
1382 item2.ai.SimulateZone(num2);
1383 goalWork = item2.GetGoalHobby();
1384 item2.SetAI(goalWork);
1385 if (goalWork is GoalWork)
1386 {
1387 (goalWork as GoalWork).FindWork(item2);
1388 }
1389 item2.ai.SimulateZone(num2);
1390 }
1391 item2.ChooseNewGoal();
1392 if (item2.conSuspend == null)
1393 {
1394 item2.ai.OnSimulatePosition();
1395 }
1396 }
1397 List<Thing> list2 = new List<Thing>();
1398 foreach (Thing thing in map.things)
1399 {
1400 if (thing.IsInstalled && thing.trait is TraitBeekeep)
1401 {
1402 list2.Add(thing);
1403 }
1404 }
1405 if (num4 >= list2.Count)
1406 {
1407 return;
1408 }
1409 for (int j = num4; j < list2.Count; j++)
1410 {
1411 if (EClass.rnd(200) <= HourSinceLastActive)
1412 {
1413 Chara chara = CharaGen.Create("bee");
1414 AddCard(chara, list2.RandomItem().pos);
1415 Hostility c_originalHostility = (chara.hostility = Hostility.Neutral);
1416 chara.c_originalHostility = c_originalHostility;
1417 }
1418 }
1419 }
ClearInventoryType
CureType
Definition: CureType.cs:2
virtual void OnSimulatePosition()
Definition: AIAct.cs:604
void SimulateZone(int days)
Definition: AIAct.cs:592
virtual void HealHP(int a, HealSource origin=HealSource.None)
Definition: Card.cs:4152
int hp
Definition: Card.cs:245
string Name
Definition: Card.cs:2191
AIAct ai
Definition: Chara.cs:206
ConSuspend conSuspend
Definition: Chara.cs:104
Goal GetGoalWork()
Definition: Chara.cs:9152
override int MaxHP
Definition: Chara.cs:726
Goal GetGoalHobby()
Definition: Chara.cs:9165
Stats mana
Definition: Chara.cs:1189
Stats stamina
Definition: Chara.cs:1181
bool IsHomeMember()
Definition: Chara.cs:6785
bool IsGuest()
Definition: Chara.cs:6810
void ChooseNewGoal()
Definition: Chara.cs:9088
void Cure(CureType type, int p=100, BlessedState state=BlessedState.Normal)
Definition: Chara.cs:9850
bool IsNight
Definition: Date.cs:112
Definition: Goal.cs:4
bool isConquered
Definition: Spatial.cs:382
virtual void Mod(int a)
Definition: Stats.cs:135
virtual int value
Definition: Stats.cs:56
virtual int max
Definition: Stats.cs:68
void SimulateHour()
Definition: VirtualDate.cs:66
int MinsSinceLastActive
Definition: Zone.cs:127
Chara Boss
Definition: Zone.cs:88
int HourSinceLastActive
Definition: Zone.cs:125

References EClass._map, EClass._zone, AddCard(), Chara.ai, Boss, Map.charas, Chara.ChooseNewGoal(), Chara.conSuspend, CharaGen.Create(), Chara.Cure(), World.date, Debug, Card.DecayNatural(), EClass.game, Chara.GetGoalHobby(), Chara.GetGoalWork(), GetTopZone(), Card.HealHP(), 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, Date.IsWinter, item, Chara.mana, map, Stats.max, Chara.MaxHP, MinsSinceLastActive, Stats.Mod(), Card.Name, Spatial.Name, AIAct.OnSimulatePosition(), Card.pos, Card.rarity, RemoveCard(), EClass.rnd(), Msg.Say(), Chara.SetAI(), VirtualDate.SimulateHour(), AIAct.SimulateZone(), Chara.stamina, Map.things, Card.trait, Stats.value, and EClass.world.

Referenced by OnVisit().

◆ SpawnAltar()

void Zone.SpawnAltar ( )
inline

Definition at line 2626 of file Zone.cs.

2627 {
2629 {
2630 if (r.points.Count <= 4)
2631 {
2632 return false;
2633 }
2634 map.poiMap.OccyupyPOI(r.points[0]);
2635 List<Point> points = r.points;
2636 Religion randomReligion = EClass.game.religions.GetRandomReligion();
2637 "altarPoint".lang(randomReligion.NameDomain.lang());
2638 Thing thing = ThingGen.Create("altar");
2639 (thing.trait as TraitAltar).SetDeity(randomReligion.id);
2640 Chara t = CharaGen.Create("twintail");
2641 EClass._zone.AddCard(t, points.RandomItem());
2642 for (int i = 0; i < 2 + EClass.rnd(2); i++)
2643 {
2644 Chara t2 = CharaGen.Create("twintail");
2645 EClass._zone.AddCard(t2, points.RandomItem());
2646 }
2647 if (points[0].Installed == null)
2648 {
2649 EClass._zone.AddCard(thing, points[0]).Install();
2650 }
2651 foreach (Point item in points)
2652 {
2653 if (item.x % 3 == 0 && item.z % 2 == 0 && item != points[0] && !item.Equals(points[0].Front) && item.Installed == null)
2654 {
2655 thing = ThingGen.Create("pillar1");
2656 EClass._zone.AddCard(thing, item).Install();
2657 }
2658 item.SetObj();
2659 item.SetFloor(3, 6);
2660 }
2661 return true;
2662 });
2663 }
$ Installed
Definition: ModManager.cs:309
Crawler start
Definition: CoreRef.cs:215
Crawlers crawlers
Definition: CoreRef.cs:344
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 3873 of file Zone.cs.

3874 {
3875 for (int i = 0; i < 2 + EClass.rnd(4); i++)
3876 {
3877 Point point = GetPos();
3878 if (point == null)
3879 {
3880 continue;
3881 }
3882 if (EClass.rnd(30) == 0)
3883 {
3884 Thing thing = ThingGen.Create("purse");
3885 thing.isLostProperty = true;
3886 thing.things.DestroyAll();
3887 int num2 = (thing.c_lockLv = EClass.rndHalf(Mathf.Min(base.development / 10 + 10, 50)));
3888 thing.Add("money", EClass.rndHalf(num2 * 60 + 1000));
3889 if (EClass.rnd(2) == 0)
3890 {
3891 thing.Add("plat", EClass.rnd(4));
3892 }
3893 else
3894 {
3895 thing.Add("medal", EClass.rnd(2));
3896 }
3897 EClass._zone.AddCard(thing, point);
3898 }
3899 else
3900 {
3902 }
3903 }
3904 static Point GetPos()
3905 {
3906 for (int j = 0; j < 10; j++)
3907 {
3908 Point randomPoint = EClass._zone.bounds.GetRandomPoint();
3909 if (!randomPoint.IsBlocked && !randomPoint.HasThing && !randomPoint.HasObj && !randomPoint.HasBlock)
3910 {
3911 return randomPoint;
3912 }
3913 }
3914 return null;
3915 }
3916 }
ThingContainer things
Definition: Card.cs:39
Thing Add(string id, int num=1, int lv=1)
Definition: Card.cs:3221
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:49

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

2874 {
2875 if (setting == null)
2876 {
2878 }
2879 if (pos == null)
2880 {
2881 pos = GetSpawnPos(setting.position, setting.tries);
2882 if (pos == null)
2883 {
2884 pos = GetSpawnPos(SpawnPosition.Random, setting.tries);
2885 if (pos == null)
2886 {
2887 return null;
2888 }
2889 }
2890 }
2892 if (IsUnderwater && EClass.rnd(15) != 0)
2893 {
2895 }
2896 SpawnList spawnList = null;
2897 spawnList = ((setting.idSpawnList != null) ? SpawnList.Get(setting.idSpawnList) : ((EClass._zone is Zone_DungeonYeek && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_yeek", (SourceChara.Row r) => r.race == "yeek" && r.quality == 0) : ((EClass._zone is Zone_DungeonDragon && EClass.rnd(5) != 0) ? 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) : ((EClass._zone is Zone_DungeonMino && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_mino", (SourceChara.Row r) => r.race == "minotaur" && r.quality == 0) : ((setting.hostility == SpawnHostility.Neutral || (setting.hostility != SpawnHostility.Enemy && Rand.Range(0f, 1f) < ChanceSpawnNeutral)) ? SpawnList.Get("c_neutral") : ((biome.spawn.chara.Count <= 0) ? SpawnList.Get(biome.name, "chara", new CharaFilter
2898 {
2899 ShouldPass = delegate(SourceChara.Row s)
2900 {
2901 if (s.hostility != "")
2902 {
2903 return false;
2904 }
2905 return s.biome == biome.name || s.biome.IsEmpty();
2906 }
2908 int num = ((setting.dangerLv == -1) ? DangerLv : setting.dangerLv);
2909 CardBlueprint cardBlueprint = new CardBlueprint
2910 {
2911 rarity = Rarity.Normal,
2912 idEle = setting.idEle
2913 };
2914 int num2 = ((setting.filterLv == -1) ? num : setting.filterLv);
2915 if (ScaleType == ZoneScaleType.Void)
2916 {
2917 num2 = ((num - 1) % 50 + 5) * 150 / 100;
2918 if (num2 >= 20 && EClass.rnd(100) < num2)
2919 {
2920 num2 = num;
2921 }
2922 }
2923 CardRow cardRow = (setting.id.IsEmpty() ? spawnList.Select(num2, setting.levelRange) : EClass.sources.cards.map[setting.id]);
2924 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)
2925 {
2926 cardRow = EClass.sources.cards.map["santa"];
2928 }
2929 long num3 = ((setting.fixedLv == -1) ? cardRow.LV : setting.fixedLv);
2930 bool flag = setting.fixedLv != -1 || DangerLvBoost > 0;
2931 num3 += setting.addLv;
2932 if (ScaleType == ZoneScaleType.Void)
2933 {
2934 num3 = (50L + (long)cardRow.LV) * Mathf.Max(1, (num - 1) / 50);
2935 flag = true;
2936 }
2937 num3 += DangerLvBoost;
2938 if (setting.rarity == Rarity.Random && cardRow.quality == 0)
2939 {
2940 if (EClass.rnd(EClass.pc.HasElement(1271) ? 80 : 100) == 0)
2941 {
2942 cardBlueprint.rarity = Rarity.Legendary;
2943 num3 = num3 * 125 / 100;
2944 }
2945 }
2946 else
2947 {
2948 cardBlueprint.rarity = setting.rarity;
2949 }
2950 if (setting.isBoss)
2951 {
2952 num3 = num3 * 150 / 100;
2953 }
2954 if (setting.isEvolved)
2955 {
2956 num3 = num3 * 2 + 20;
2957 }
2958 if (num3 != cardRow.LV)
2959 {
2960 cardBlueprint.lv = (int)Mathf.Min(num3, 100000000f);
2961 }
2962 CardBlueprint.Set(cardBlueprint);
2963 Chara chara = CharaGen.Create(cardRow.id, num2);
2964 if (!flag)
2965 {
2966 chara.isScaled = false;
2967 }
2968 AddCard(chara, pos);
2969 if (setting.forcedHostility.HasValue)
2970 {
2971 Hostility c_originalHostility = (chara.hostility = setting.forcedHostility.Value);
2972 chara.c_originalHostility = c_originalHostility;
2973 }
2974 else
2975 {
2976 switch (chara.id)
2977 {
2978 case "unicorn":
2979 if (EClass.pc.HasElement(1216) && EClass.pc.Evalue(418) < 1)
2980 {
2981 chara.SetHostility(Hostility.Enemy);
2982 }
2983 break;
2984 case "santa":
2985 case "silverwolf":
2986 case "twintail":
2987 case "test17":
2988 if (EClass.pc.HasElement(1270))
2989 {
2990 chara.SetHostility(Hostility.Friend);
2991 }
2992 else if (EClass.pc.HasElement(1271))
2993 {
2994 chara.SetHostility(Hostility.Enemy);
2995 }
2996 break;
2997 }
2998 }
2999 if (setting.isBoss)
3000 {
3001 chara.c_bossType = BossType.Boss;
3002 }
3003 if (setting.isEvolved)
3004 {
3005 chara.c_bossType = BossType.Evolved;
3006 }
3007 if (DangerLv >= 20 && !IsPCFaction && !IsTown && EClass.rnd(200) == 0)
3008 {
3010 }
3011 return chara;
3012 }
BossType
Definition: BossType.cs:2
SpawnHostility
ZoneScaleType
Definition: ZoneScaleType.cs:2
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:6272
BiomeProfile biome
Definition: Cell.cs:1087
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:9597
BiomeProfile Water
Definition: CoreRef.cs:153
BiomeProfile Sand
Definition: CoreRef.cs:151
Biomes biomes
Definition: CoreRef.cs:342
int month
Definition: Date.cs:50
int day
Definition: Date.cs:62
int santa
Definition: Player.cs:604
Flags flags
Definition: Player.cs:1161
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:415
virtual float ChanceSpawnNeutral
Definition: Zone.cs:349

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

◆ SpawnMob() [2/2]

◆ TextLevel()

string Zone.TextLevel ( int  _lv)
inline

Definition at line 578 of file Zone.cs.

579 {
580 if (_lv != 0)
581 {
582 if (base.lv <= 0)
583 {
584 return " " + "zoneLevelB".lang((_lv * -1).ToString() ?? "");
585 }
586 return " " + "zoneLevel".lang((_lv + 1).ToString() ?? "");
587 }
588 return "";
589 }
override string ToString()
Definition: Zone.cs:573

References ToString().

◆ ToString()

override string Zone.ToString ( )
inline

Definition at line 573 of file Zone.cs.

574 {
575 return Name + "(" + base.uid + ")(" + RegionPos?.ToString() + ") instance?" + IsInstance + "/" + EClass.world.date.GetRemainingHours(base.dateExpire) + "h";
576 }
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 2306 of file Zone.cs.

2307 {
2308 int num = 0;
2309 if (p.cell.detail != null)
2310 {
2311 foreach (Thing thing in p.cell.detail.things)
2312 {
2313 if (thing.placeState == PlaceState.roaming)
2314 {
2315 if (target.TryStackTo(thing))
2316 {
2317 return true;
2318 }
2319 num++;
2320 }
2321 }
2322 }
2323 if (num == 0 || !destroyIfFail)
2324 {
2325 EClass._zone.AddCard(target, p);
2326 return true;
2327 }
2328 target.Destroy();
2329 return false;
2330 }
bool TryStackTo(Thing to)
Definition: Card.cs:3542
List< Thing > things
Definition: CellDetail.cs:11

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

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

◆ TryAddThingInSharedContainer()

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

Definition at line 2209 of file Zone.cs.

2210 {
2211 Thing dest = null;
2212 int priority = -1;
2213 ContainerFlag flag = t.category.GetRoot().id.ToEnum<ContainerFlag>();
2214 if (flag == ContainerFlag.none)
2215 {
2216 flag = ContainerFlag.other;
2217 }
2218 if (containers == null)
2219 {
2220 containers = EClass._map.props.installed.containers;
2221 }
2222 if (SearchDest() != null)
2223 {
2224 return true;
2225 }
2226 if (dest == null)
2227 {
2228 return false;
2229 }
2230 if (add)
2231 {
2232 if (msg)
2233 {
2234 chara.Say("putSharedItem", chara, t, dest.GetName(NameStyle.Full));
2235 }
2236 dest.AddThing(t);
2237 }
2238 return true;
2239 Thing SearchDest()
2240 {
2241 foreach (Thing container in containers)
2242 {
2243 Thing thing = container;
2244 if (thing.trait is TraitShippingChest)
2245 {
2247 }
2248 if ((!sharedOnly || thing.IsSharedContainer) && thing.c_lockLv <= 0 && (thing.things.Count < thing.things.MaxCapacity || thing.things.CanStack(t) != t))
2249 {
2250 Window.SaveData windowSaveData = thing.GetWindowSaveData();
2251 if (windowSaveData != null)
2252 {
2253 if (windowSaveData.priority <= priority || (windowSaveData.noRotten && t.IsDecayed) || (windowSaveData.onlyRottable && t.trait.Decay == 0))
2254 {
2255 continue;
2256 }
2258 if (windowSaveData.userFilter)
2259 {
2260 filterResult = windowSaveData.IsFilterPass(t.GetName(NameStyle.Full, 1));
2261 if (filterResult == Window.SaveData.FilterResult.Block)
2262 {
2263 continue;
2264 }
2265 }
2266 if (filterResult != Window.SaveData.FilterResult.PassWithoutFurtherTest)
2267 {
2268 if (windowSaveData.advDistribution)
2269 {
2270 bool flag2 = false;
2271 foreach (int cat in windowSaveData.cats)
2272 {
2273 if (t.category.uid == cat)
2274 {
2275 flag2 = true;
2276 break;
2277 }
2278 }
2279 if (!flag2)
2280 {
2281 continue;
2282 }
2283 }
2284 else if (windowSaveData.flag.HasFlag(flag))
2285 {
2286 continue;
2287 }
2288 }
2289 priority = windowSaveData.priority;
2290 }
2291 else
2292 {
2293 if (priority != -1)
2294 {
2295 continue;
2296 }
2297 priority = 0;
2298 }
2299 dest = thing;
2300 }
2301 }
2302 return null;
2303 }
2304 }
ContainerFlag
Definition: ContainerFlag.cs:5
NameStyle
Definition: NameStyle.cs:2
Thing container_shipping
Definition: CardManager.cs:52
bool IsDecayed
Definition: Card.cs:2341
int c_lockLv
Definition: Card.cs:991
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:3244
Window.SaveData GetWindowSaveData()
Definition: Card.cs:2620
SourceCategory.Row category
Definition: Card.cs:2101
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7208
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, Card.AddThing(), Window.SaveData.advDistribution, Card.c_lockLv, ThingContainer.CanStack(), Game.cards, Card.category, Window.SaveData.cats, CardManager.container_shipping, Props.containers, Trait.Decay, Window.SaveData.flag, EClass.game, Thing.GetName(), Card.GetWindowSaveData(), PropsManager.installed, Card.IsDecayed, Window.SaveData.IsFilterPass(), Thing.IsSharedContainer, ThingContainer.MaxCapacity, Window.SaveData.noRotten, Window.SaveData.onlyRottable, Window.SaveData.priority, Map.props, Card.Say(), Card.things, Card.trait, and Window.SaveData.userFilter.

Referenced by FactionBranch.AutoClean(), AI_Haul.GetThingToClean(), AI_Haul.Run(), 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 2132 of file Zone.cs.

2132 : Trait
2133 {
2134 Thing randomThing = EClass._map.props.installed.traits.GetRandomThing<T>();
2135 if (randomThing == null)
2136 {
2138 return false;
2139 }
2140 if (useContainer && (!t.IsContainer || t.things.Count == 0))
2141 {
2142 List<Thing> list = new List<Thing>();
2143 foreach (Point item in randomThing.trait.ListPoints(null, onlyPassable: false))
2144 {
2145 foreach (Card item2 in item.ListCards())
2146 {
2147 if (item2.IsContainer && !(item2.trait is TraitDeliveryChest))
2148 {
2149 list.Add(item2.Thing);
2150 }
2151 }
2152 }
2153 if (TryAddThingInSharedContainer(t, list, add: true, msg: false, null, sharedOnly: false))
2154 {
2155 return true;
2156 }
2157 }
2158 AddCard(t, randomThing.trait.GetRandomPoint());
2159 return true;
2160 }
virtual Thing Thing
Definition: Card.cs:2110
bool IsContainer
Definition: Card.cs:2141
virtual List< Point > ListPoints(Point center=null, bool onlyPassable=true)
Definition: Trait.cs:789
Point GetRandomPoint(Func< Point, bool > func=null, Chara accessChara=null)
Definition: Trait.cs:771
bool TryAddThingInSharedContainer(Thing t, List< Thing > containers=null, bool add=true, bool msg=false, Chara chara=null, bool sharedOnly=true)
Definition: Zone.cs:2209

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

◆ TryGenerateBigDaddy()

void Zone.TryGenerateBigDaddy ( )
inline

Definition at line 2738 of file Zone.cs.

2739 {
2740 if (!(BigDaddyChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f) <= EClass.rndf(1f)))
2741 {
2742 Point spawnPos = GetSpawnPos(SpawnPosition.Random, 10000);
2743 List<string> list = new List<string> { "big_daddy", "big_daddy2" };
2744 list.Shuffle();
2745 Spawn(list[0], spawnPos);
2746 if (EClass.rnd(EClass.debug.enable ? 2 : 20) == 0)
2747 {
2748 Spawn(list[1], spawnPos.GetNearestPoint(allowBlock: false, allowChara: false));
2749 }
2750 Msg.Say("sign_bigdaddy");
2751 }
2752 void Spawn(string id, Point pos)
2753 {
2754 int num = (int)((long)DangerLv * 125L / 100);
2755 if (num >= 30)
2756 {
2758 {
2759 lv = num
2760 });
2761 }
2762 Chara chara = CharaGen.Create(id);
2763 if (EClass.pc.HasElement(1270))
2764 {
2765 chara.SetHostility(Hostility.Friend);
2766 }
2767 else if (EClass.pc.HasElement(1271))
2768 {
2769 chara.SetHostility(Hostility.Enemy);
2770 }
2771 EClass._zone.AddCard(chara, pos);
2772 }
2773 }
static float rndf(float a)
Definition: EClass.cs:102
virtual float BigDaddyChance
Definition: Zone.cs:325

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

2719 {
2720 float num = EvolvedChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f);
2721 if (!force && num <= EClass.rndf(1f))
2722 {
2723 return null;
2724 }
2725 Chara chara = SpawnMob(p, SpawnSetting.Evolved());
2726 for (int i = 0; i < 2 + EClass.rnd(2); i++)
2727 {
2728 chara.ability.AddRandom();
2729 }
2730 chara.AddThing(chara.MakeGene(DNA.Type.Default));
2731 if (EClass.rnd(2) == 0)
2732 {
2733 chara.AddThing(chara.MakeGene(DNA.Type.Superior));
2734 }
2735 return chara;
2736 }
void AddRandom()
Thing MakeGene(DNA.Type? type=null)
Definition: Chara.cs:8454
CharaAbility ability
Definition: Chara.cs:428
Definition: DNA.cs:8
Type
Definition: DNA.cs:10
static SpawnSetting Evolved(int fixedLv=-1)
Definition: SpawnSetting.cs:37
virtual float EvolvedChance
Definition: Zone.cs:327

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

2692 {
2693 if (OreChance <= 0f)
2694 {
2695 return;
2696 }
2697 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)
2698 {
2699 byte b = 18;
2700 string group = "ore";
2701 if (EClass.rnd(5) == 0)
2702 {
2703 b++;
2704 group = "gem";
2705 }
2706 SourceMaterial.Row randomMaterial = MATERIAL.GetRandomMaterial(DangerLv, group);
2707 foreach (Point point in r.points)
2708 {
2709 if (point.sourceBlock.ContainsTag("ore"))
2710 {
2711 map.SetObj(point.x, point.z, randomMaterial.id, b, 1, 0);
2712 }
2713 }
2714 return false;
2715 });
2716 }
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:323

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

2776 {
2777 float num = ShrineChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f);
2778 for (int i = 0; i < 3; i++)
2779 {
2780 Rand.SetSeed(base.uid + i);
2781 if (num <= EClass.rndf(1f))
2782 {
2783 continue;
2784 }
2785 Point randomSpace = EClass._map.GetRandomSpace(3, 3);
2786 if (randomSpace == null)
2787 {
2788 continue;
2789 }
2790 randomSpace.x++;
2791 randomSpace.z++;
2792 if (randomSpace.HasThing || randomSpace.HasChara)
2793 {
2794 continue;
2795 }
2796 randomSpace.SetObj();
2799 if (EClass.rnd(EClass.debug.test ? 2 : 15) == 0)
2800 {
2801 EClass._zone.AddCard(ThingGen.Create("pedestal_power"), randomSpace).Install();
2802 EClass._zone.AddCard(ThingGen.Create(EClass.gamedata.godStatues.RandomItemWeighted((GodStatueData a) => a.chance).idThing, -1, DangerLv), randomSpace).Install();
2803 }
2804 else
2805 {
2806 EClass._zone.AddCard(ThingGen.Create("statue_power", -1, DangerLv), randomSpace).Install().SetRandomDir();
2807 }
2808 }
2809 Rand.SetSeed();
2810 }
void SetRandomDir()
Definition: Card.cs:6592
bool test
Definition: CoreDebug.cs:185
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:929
virtual float ShrineChance
Definition: Zone.cs:329

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

2348 : TraitSpot
2349 {
2350 List<T> list = new List<T>();
2351 foreach (Thing thing2 in EClass._map.things)
2352 {
2353 if (thing2.IsInstalled && thing2.trait is T)
2354 {
2355 list.Add(thing2.trait as T);
2356 }
2357 }
2358 foreach (T item in list)
2359 {
2360 foreach (Point item2 in item.ListPoints(null, onlyPassable: false))
2361 {
2362 foreach (Thing thing3 in item2.Things)
2363 {
2364 if (!thing3.IsInstalled || thing3.isSale)
2365 {
2366 continue;
2367 }
2368 if (thing3.things.Count == 0)
2369 {
2370 if (IsValid(thing3, insideContainer: false))
2371 {
2372 return thing3;
2373 }
2374 continue;
2375 }
2376 Thing thing = thing3.things.Find((Thing _t) => IsValid(_t, insideContainer: true));
2377 if (thing != null)
2378 {
2379 return thing;
2380 }
2381 }
2382 }
2383 }
2384 return null;
2385 bool IsValid(Thing t, bool insideContainer)
2386 {
2387 if (t.category.id != idCat || !TraitSalesTag.CanTagSale(t, insideContainer))
2388 {
2389 return false;
2390 }
2391 return true;
2392 }
2393 }
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 2332 of file Zone.cs.

2333 {
2334 foreach (Thing container in EClass._map.props.installed.containers)
2335 {
2336 if (container.IsSharedContainer)
2337 {
2338 Thing thing = container.things.Find(func);
2339 if (thing != null)
2340 {
2341 return thing;
2342 }
2343 }
2344 }
2345 return null;
2346 }

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

2162 : TraitSpot
2163 {
2164 List<T> list = new List<T>();
2165 List<Thing> list2 = new List<Thing>();
2166 foreach (Thing thing in EClass._map.things)
2167 {
2168 if (thing.IsInstalled && thing.trait is T)
2169 {
2170 list.Add(thing.trait as T);
2171 }
2172 }
2173 foreach (T item in list)
2174 {
2175 foreach (Point item2 in item.ListPoints(null, onlyPassable: false))
2176 {
2177 foreach (Thing thing2 in item2.Things)
2178 {
2179 if (!thing2.IsInstalled)
2180 {
2181 continue;
2182 }
2183 if (thing2.things.Count == 0)
2184 {
2185 if (IsValid(thing2))
2186 {
2187 list2.Add(thing2);
2188 }
2189 continue;
2190 }
2191 foreach (Thing item3 in thing2.things.List((Thing _t) => IsValid(_t)))
2192 {
2193 list2.Add(item3);
2194 }
2195 }
2196 }
2197 }
2198 return list2;
2199 bool IsValid(Thing t)
2200 {
2201 if (func != null && !func(t))
2202 {
2203 return false;
2204 }
2205 return true;
2206 }
2207 }
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 2592 of file Zone.cs.

2593 {
2594 bool flag = EClass.pc.HasCondition<ConDrawBacker>();
2595 if (!EClass.debug.enable && EClass.rnd(flag ? 3 : 20) != 0)
2596 {
2597 return;
2598 }
2599 Point randomSurface = EClass._map.bounds.GetRandomSurface();
2600 if (!randomSurface.IsValid)
2601 {
2602 return;
2603 }
2604 Chara c = CharaGen.Create("follower");
2605 EClass._zone.AddCard(c, randomSurface);
2606 (EClass._zone.AddThing("gallows", randomSurface).Install().trait as TraitShackle).Restrain(c);
2607 c.c_rescueState = RescueState.WaitingForRescue;
2608 if (EClass.rnd(flag ? 1 : 2) == 0 || EClass.debug.enable)
2609 {
2611 if (row != null)
2612 {
2613 c.ApplyBacker(row.id);
2614 }
2615 }
2616 Religion faith = EClass.game.religions.dictAll.Values.Where((Religion a) => a != c.faith).RandomItem();
2617 for (int i = 0; i < 3 + EClass.rnd(4); i++)
2618 {
2619 Chara chara = CharaGen.Create("fanatic");
2620 chara.SetFaith(faith);
2621 Point point = randomSurface.GetRandomPoint(4) ?? randomSurface.GetNearestPoint();
2622 EClass._zone.AddCard(chara, point);
2623 }
2624 }
RescueState
Definition: RescueState.cs:2
static int indexFollower
Religion faith
Definition: Chara.cs:443
void SetFaith(string id)
Definition: Chara.cs:1752
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 1787 of file Zone.cs.

1788 {
1789 map = null;
1790 if (bp != null)
1791 {
1792 bp.map = null;
1793 }
1794 if (branch != null)
1795 {
1797 }
1798 Debug.Log("Unloaded Map:" + this);
1799 }
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 3750 of file Zone.cs.

3751 {
3752 if (!IsPCFaction && (!(this is Zone_Town) || base.lv != 0))
3753 {
3754 return;
3755 }
3756 Debug.Log("Updating Quest:" + force);
3757 List<SourceQuest.Row> list = EClass.sources.quests.rows.Where((SourceQuest.Row a) => a.group == "random").ToList();
3758 int num = 0;
3759 foreach (Chara item in map.charas.Concat(map.deadCharas))
3760 {
3761 if (item.quest != null && !EClass.game.quests.list.Contains(item.quest))
3762 {
3763 if (item.quest.IsExpired || completedQuests.Contains(item.quest.uid) || force)
3764 {
3765 item.quest = null;
3766 }
3767 else
3768 {
3769 num++;
3770 }
3771 }
3772 }
3773 if (EClass._zone.dateQuest > EClass.world.date.GetRaw() && !force)
3774 {
3775 return;
3776 }
3777 EClass._zone.dateQuest = EClass.world.date.GetRaw() + 1440;
3778 int maxQuest = 3;
3779 Rand.UseSeed(base.uid + EClass.player.stats.days / 7 % 100, delegate
3780 {
3781 maxQuest = 4 + EClass.rnd(4);
3782 });
3783 completedQuests.Clear();
3784 List<Zone> list2 = Quest.ListDeliver();
3785 List<Tuple<string, int>> listTag = new List<Tuple<string, int>>();
3786 string[] array = EClass._zone.source.questTag;
3788 {
3789 array = new string[9] { "supply/8", "deliver/7", "food/8", "escort/4", "deliver/4", "monster/0", "war/0", "farm/0", "music/0" };
3790 }
3791 string[] array2 = array;
3792 for (int i = 0; i < array2.Length; i++)
3793 {
3794 string[] array3 = array2[i].Split('/');
3795 listTag.Add(new Tuple<string, int>(array3[0], array3[1].ToInt()));
3796 }
3797 for (int j = 0; j < map.charas.Count * 2; j++)
3798 {
3799 if (num > maxQuest)
3800 {
3801 break;
3802 }
3803 if (num > 15)
3804 {
3805 break;
3806 }
3807 Chara chara = map.charas.RandomItem();
3808 if (!chara.trait.CanGiveRandomQuest || chara.isSubsetCard || chara.homeZone != EClass._zone || chara.IsGuest() || chara.memberType == FactionMemberType.Livestock || (chara.quest != null && !force))
3809 {
3810 continue;
3811 }
3812 SourceQuest.Row row = list.RandomItemWeighted(delegate(SourceQuest.Row a)
3813 {
3814 int num2 = 1;
3815 foreach (Tuple<string, int> item2 in listTag)
3816 {
3817 if (a.tags.Contains(item2.Item1))
3818 {
3819 num2 = item2.Item2;
3820 break;
3821 }
3822 }
3823 if (!EClass._zone.IsPCFaction && a.tags.Contains("bulk"))
3824 {
3825 num2 = 0;
3826 }
3827 return a.chance * num2;
3828 });
3829 if ((!row.tags.Contains("needDestZone") || list2.Count >= 2) && (row.minFame <= 0 || row.minFame < EClass.player.fame || EClass.debug.enable))
3830 {
3831 Quest.Create(row.id, null, chara);
3832 num++;
3833 }
3834 }
3835 }
QuestManager quests
Definition: Game.cs:183
int days
Definition: Player.cs:75
Stats stats
Definition: Player.cs:1083
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:117
HashSet< int > completedQuests
Definition: Zone.cs:37

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

Referenced by LayerQuestBoard.OnSwitchContent(), 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 3382 of file Zone.cs.

3383 {
3384 }

Member Data Documentation

◆ _biome

BiomeProfile Zone._biome

Definition at line 79 of file Zone.cs.

◆ bounds

◆ bp

ZoneBlueprint Zone.bp

Definition at line 67 of file Zone.cs.

Referenced by Activate(), CreateBP(), Generate(), GetProfile(), and UnloadMap().

◆ branch

◆ completedQuests

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

Definition at line 37 of file Zone.cs.

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

◆ dictCitizen

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

Definition at line 52 of file Zone.cs.

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

◆ dirtyElectricity

bool Zone.dirtyElectricity

Definition at line 71 of file Zone.cs.

Referenced by Scene.OnUpdate().

◆ elements

◆ events

◆ fieldElements

ElementContainerField Zone.fieldElements = new ElementContainerField()

Definition at line 46 of file Zone.cs.

Referenced by WidgetDate._Refresh(), and OnVisit().

◆ fileVariation

int Zone.fileVariation

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

◆ ignoreSpawnAnime

bool Zone.ignoreSpawnAnime
static

Definition at line 81 of file Zone.cs.

Referenced by AddCard().

◆ instance

◆ isSimulating

bool Zone.isSimulating

Definition at line 75 of file Zone.cs.

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

◆ isStarted

◆ landFeats

List<int> Zone.landFeats

Definition at line 58 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().

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

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

◆ Suckers

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

Definition at line 83 of file Zone.cs.

Referenced by TraitSeed.TrySprout().

◆ tempDist

int Zone.tempDist

Definition at line 77 of file Zone.cs.

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

Property Documentation

◆ AddPrefix

virtual bool Zone.AddPrefix
get

Definition at line 287 of file Zone.cs.

Referenced by OnAfterCreate().

◆ AllowCriminal

virtual bool Zone.AllowCriminal
get

Definition at line 251 of file Zone.cs.

◆ AllowInvest

virtual bool Zone.AllowInvest
get

Definition at line 253 of file Zone.cs.

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

◆ AllowNewZone

virtual bool Zone.AllowNewZone
get

Definition at line 265 of file Zone.cs.

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

◆ AlwaysLowblock

virtual bool Zone.AlwaysLowblock
get

Definition at line 399 of file Zone.cs.

Referenced by BaseTileMap.Draw().

◆ BaseElectricity

virtual int Zone.BaseElectricity
get

Definition at line 497 of file Zone.cs.

◆ BigDaddyChance

virtual float Zone.BigDaddyChance
get

Definition at line 325 of file Zone.cs.

◆ biome

◆ BlockBorderExit

virtual bool Zone.BlockBorderExit
get

Definition at line 173 of file Zone.cs.

Referenced by Player.CanExitBorder().

◆ Boss

Chara Zone.Boss
getset

Definition at line 87 of file Zone.cs.

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

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

Referenced by Quest.ListDeliver().

◆ CanDigUnderground

virtual bool Zone.CanDigUnderground
get

Definition at line 277 of file Zone.cs.

Referenced by TaskMine.GetHitResult().

◆ CanEnterBuildMode

bool Zone.CanEnterBuildMode
get

Definition at line 449 of file Zone.cs.

450 {
451 get
452 {
454 {
455 return base.mainFaction == EClass.pc.faction;
456 }
457 return true;
458 }
459 }
bool godBuild
Definition: CoreDebug.cs:319
bool ignoreBuildRule
Definition: CoreDebug.cs:200

◆ CanEnterBuildModeAnywhere

bool Zone.CanEnterBuildModeAnywhere
get

Definition at line 461 of file Zone.cs.

462 {
463 get
464 {
466 {
467 if (base.mainFaction == EClass.pc.faction)
468 {
469 return EClass.Branch.elements.Has(4003);
470 }
471 return false;
472 }
473 return true;
474 }
475 }
ElementContainerZone elements

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

◆ CanInspect

bool Zone.CanInspect
get

Implements IInspect.

Definition at line 501 of file Zone.cs.

502 {
503 get
504 {
505 if (!IsInstance)
506 {
507 return !HiddenInRegionMap;
508 }
509 return false;
510 }
511 }
virtual bool HiddenInRegionMap
Definition: Zone.cs:417

◆ CanUnlockExit

virtual bool Zone.CanUnlockExit
get

Definition at line 281 of file Zone.cs.

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

◆ ChanceSpawnNeutral

virtual float Zone.ChanceSpawnNeutral
get

Definition at line 349 of file Zone.cs.

◆ ContentLv

override int Zone.ContentLv
get

Definition at line 99 of file Zone.cs.

100 {
101 get
102 {
103 if (branch == null)
104 {
105 return DangerLv;
106 }
107 return branch.ContentLV;
108 }
109 }

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

◆ CountDeepestLevel

virtual bool Zone.CountDeepestLevel
get

Definition at line 231 of file Zone.cs.

◆ DangerLv

◆ DefaultActionMode

virtual ActionMode Zone.DefaultActionMode
get

Definition at line 171 of file Zone.cs.

◆ DisableRooms

virtual bool Zone.DisableRooms
get

Definition at line 123 of file Zone.cs.

Referenced by Map.TryAddRoom().

◆ EvolvedChance

virtual float Zone.EvolvedChance
get

Definition at line 327 of file Zone.cs.

◆ ExpireDays

virtual int Zone.ExpireDays
get

Definition at line 175 of file Zone.cs.

Referenced by Activate().

◆ FeatureType

virtual ZoneFeatureType Zone.FeatureType
get

Definition at line 179 of file Zone.cs.

◆ FlockType

virtual FlockController.SpawnType Zone.FlockType
get

Definition at line 419 of file Zone.cs.

Referenced by Scene.Init().

◆ Generator

MapGenerator Zone.Generator
get

Definition at line 141 of file Zone.cs.

Referenced by MapGenDungen.OnGenerateTerrain().

◆ GrowPlant

virtual bool Zone.GrowPlant
get

Definition at line 351 of file Zone.cs.

◆ GrowWeed

virtual bool Zone.GrowWeed
get

Definition at line 353 of file Zone.cs.

◆ HasLaw

virtual bool Zone.HasLaw
get

◆ HiddenInRegionMap

virtual bool Zone.HiddenInRegionMap
get

Definition at line 417 of file Zone.cs.

Referenced by Chara._Move().

◆ HourSinceLastActive

int Zone.HourSinceLastActive
get

Definition at line 125 of file Zone.cs.

Referenced by Simulate().

◆ IDAmbience

virtual string Zone.IDAmbience
get

Definition at line 181 of file Zone.cs.

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

Referenced by Activate().

◆ IDBaseLandFeat

virtual string Zone.IDBaseLandFeat
get

Definition at line 151 of file Zone.cs.

◆ IdBiome

virtual string Zone.IdBiome
get

Definition at line 133 of file Zone.cs.

Referenced by Generate().

◆ idExport

virtual string Zone.idExport
get

Definition at line 153 of file Zone.cs.

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

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

◆ IDGenerator

virtual string Zone.IDGenerator
get

Definition at line 137 of file Zone.cs.

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

◆ IDHat

virtual string Zone.IDHat
get

Definition at line 149 of file Zone.cs.

Referenced by RefreshHat().

◆ IDPlayList

virtual string Zone.IDPlayList
get

Definition at line 145 of file Zone.cs.

Referenced by Generate().

◆ IDPlaylistOverwrite

virtual string Zone.IDPlaylistOverwrite
get

Definition at line 147 of file Zone.cs.

◆ IdProfile

virtual string Zone.IdProfile
get

Definition at line 143 of file Zone.cs.

Referenced by GetProfile().

◆ IDSceneTemplate

virtual string Zone.IDSceneTemplate
get

Definition at line 197 of file Zone.cs.

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

Referenced by BaseGameScreen.RefreshGrading().

◆ IDSubset

virtual string Zone.IDSubset
get

Definition at line 215 of file Zone.cs.

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

Referenced by Activate().

◆ InspectName

string Zone.InspectName
get

Implements IInspect.

Definition at line 513 of file Zone.cs.

◆ InspectPoint

Point Zone.InspectPoint
get

Implements IInspect.

Definition at line 515 of file Zone.cs.

◆ InspectPosition

Vector3 Zone.InspectPosition
get

Implements IInspect.

Definition at line 517 of file Zone.cs.

◆ IsActiveZone

◆ IsExplorable

virtual bool Zone.IsExplorable
get

Definition at line 355 of file Zone.cs.

◆ IsFestival

◆ IsInstance

◆ IsLoaded

bool Zone.IsLoaded
get

Definition at line 495 of file Zone.cs.

Referenced by Activate().

◆ IsNefia

virtual bool Zone.IsNefia
get

◆ IsPCFaction

bool Zone.IsPCFaction
get

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

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

Referenced by SpatialManager.ListReturnLocations().

◆ IsSkyLevel

◆ IsStartZone

bool Zone.IsStartZone
get

Definition at line 491 of file Zone.cs.

◆ IsTown

◆ IsUnderwater

◆ IsUserZone

◆ KeepAllyDistance

virtual bool Zone.KeepAllyDistance
get

Definition at line 305 of file Zone.cs.

306 {
307 get
308 {
309 if (!HasLaw)
310 {
311 return IsPCFaction;
312 }
313 return true;
314 }
315 }

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

◆ LockExit

virtual bool Zone.LockExit
get

Definition at line 279 of file Zone.cs.

Referenced by MapGenDungen.OnGenerateTerrain().

◆ MakeEnemiesNeutral

virtual bool Zone.MakeEnemiesNeutral
get

Definition at line 237 of file Zone.cs.

238 {
239 get
240 {
241 if (!IsTown)
242 {
243 return HasLaw;
244 }
245 return true;
246 }
247 }

◆ MakeTownProperties

virtual bool Zone.MakeTownProperties
get

Definition at line 249 of file Zone.cs.

Referenced by Activate().

◆ MaxLv

virtual int Zone.MaxLv
get

Definition at line 283 of file Zone.cs.

◆ MaxRespawn

int Zone.MaxRespawn
get

Definition at line 319 of file Zone.cs.

◆ MaxSoil

virtual int Zone.MaxSoil
get

Definition at line 519 of file Zone.cs.

520 {
521 get
522 {
523 if (branch == null)
524 {
525 return 99999;
526 }
527 return branch.MaxSoil;
528 }
529 }

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

◆ MaxSpawn

virtual int Zone.MaxSpawn
get

Definition at line 317 of file Zone.cs.

◆ MinLv

virtual int Zone.MinLv
get

Definition at line 285 of file Zone.cs.

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

◆ MinsSinceLastActive

int Zone.MinsSinceLastActive
get

Definition at line 127 of file Zone.cs.

Referenced by Simulate().

◆ NameSuffix

override string Zone.NameSuffix
get

Definition at line 421 of file Zone.cs.

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

◆ NameWithLevel

string Zone.NameWithLevel
get

◆ OreChance

virtual float Zone.OreChance
get

Definition at line 323 of file Zone.cs.

◆ ParentZone

◆ pathExport

virtual string Zone.pathExport
get

Definition at line 129 of file Zone.cs.

Referenced by Activate().

◆ pathTemp

string Zone.pathTemp
get

Definition at line 165 of file Zone.cs.

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

◆ PetFollow

virtual bool Zone.PetFollow
get

Definition at line 291 of file Zone.cs.

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

◆ PrespawnRate

virtual float Zone.PrespawnRate
get

Definition at line 331 of file Zone.cs.

◆ RegenerateOnEnter

virtual bool Zone.RegenerateOnEnter
get

Definition at line 269 of file Zone.cs.

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

◆ Region

◆ RegionEnterState

virtual ZoneTransition.EnterState Zone.RegionEnterState
get

Definition at line 177 of file Zone.cs.

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

◆ RespawnPerHour

virtual int Zone.RespawnPerHour
get

Definition at line 347 of file Zone.cs.

◆ RespawnRate

virtual float Zone.RespawnRate
get

Definition at line 333 of file Zone.cs.

◆ RestrictBuild

virtual bool Zone.RestrictBuild
get

Definition at line 293 of file Zone.cs.

294 {
295 get
296 {
297 if (this is Zone_Civilized)
298 {
299 return !IsPCFaction;
300 }
301 return false;
302 }
303 }

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

◆ RevealRoom

virtual bool Zone.RevealRoom
get

Definition at line 397 of file Zone.cs.

Referenced by Activate().

◆ RuinChance

virtual float Zone.RuinChance
get

Definition at line 321 of file Zone.cs.

Referenced by GenBounds.TryAddMapPiece().

◆ ScaleType

virtual ZoneScaleType Zone.ScaleType
get

Definition at line 415 of file Zone.cs.

◆ SetAlarmOnBreakLaw

virtual bool Zone.SetAlarmOnBreakLaw
get

Definition at line 235 of file Zone.cs.

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

◆ ShouldAutoRevive

virtual bool Zone.ShouldAutoRevive
get

Definition at line 383 of file Zone.cs.

384 {
385 get
386 {
387 if (!ShouldRegenerate)
388 {
389 return IsPCFaction;
390 }
391 return true;
392 }
393 }

Referenced by Revive().

◆ ShouldMakeExit

virtual bool Zone.ShouldMakeExit
get

Definition at line 369 of file Zone.cs.

370 {
371 get
372 {
373 if (base.lv > MinLv)
374 {
375 return base.lv < MaxLv;
376 }
377 return false;
378 }
379 }
virtual int MaxLv
Definition: Zone.cs:283
virtual int MinLv
Definition: Zone.cs:285

Referenced by MapGenDungen.OnGenerateTerrain().

◆ ShouldRegenerate

virtual bool Zone.ShouldRegenerate
get

Definition at line 381 of file Zone.cs.

Referenced by Activate().

◆ ShowEnemyOnMinimap

bool Zone.ShowEnemyOnMinimap
get

Definition at line 335 of file Zone.cs.

336 {
337 get
338 {
339 if (instance != null)
340 {
342 }
343 return false;
344 }
345 }
virtual bool ShowEnemyOnMinimap
Definition: ZoneInstance.cs:30

Referenced by WidgetMinimap.RefreshMarkers().

◆ ShrineChance

virtual float Zone.ShrineChance
get

Definition at line 329 of file Zone.cs.

◆ SightRadiusBonus

virtual int Zone.SightRadiusBonus
get

Definition at line 135 of file Zone.cs.

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

◆ StartLV

virtual int Zone.StartLV
get

Definition at line 413 of file Zone.cs.

Referenced by OnCreate().

◆ TextDangerLv

string Zone.TextDangerLv
get

Definition at line 435 of file Zone.cs.

Referenced by WidgetDate._Refresh().

◆ TextDeepestLv

string Zone.TextDeepestLv
get

Definition at line 437 of file Zone.cs.

438 {
439 get
440 {
441 if (GetDeepestLv() != 0)
442 {
443 return "zoneLevelMax".lang(TextLevel(GetDeepestLv()));
444 }
445 return "";
446 }
447 }
string TextLevel(int _lv)
Definition: Zone.cs:578

Referenced by AM_Adv._OnUpdateInput().

◆ TextWidgetDate

virtual string Zone.TextWidgetDate
get

Definition at line 139 of file Zone.cs.

Referenced by WidgetDate._Refresh().

◆ UseFog

virtual bool Zone.UseFog
get

Definition at line 395 of file Zone.cs.

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

◆ UseLight

virtual bool Zone.UseLight
get

Definition at line 401 of file Zone.cs.

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

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

◆ WillAutoSave

virtual bool Zone.WillAutoSave
get

Definition at line 267 of file Zone.cs.

Referenced by Chara.MoveZone().

◆ ZoneFullName

string Zone.ZoneFullName
get

Definition at line 85 of file Zone.cs.

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


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