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

Classes

class  PortalReturnData
 

Public Member Functions

Zone FindOrCreateLevel (int destLv, string subId="")
 
int Evalue (int ele)
 
int Evalue (string alias)
 
virtual string GetDungenID ()
 
virtual bool ShouldScaleImportedChara (Chara c)
 
virtual string GetNewZoneID (int level)
 
override string ToString ()
 
string TextLevel (int _lv)
 
override void OnCreate ()
 
override void OnAfterCreate ()
 
void Activate ()
 
void RefreshHat ()
 
void OnVisit ()
 
void RefreshDeathSentense ()
 
void Revive ()
 
virtual void OnRegenerate ()
 
virtual void OnActivate ()
 
virtual void OnBeforeDeactivate ()
 
virtual void OnDeactivate ()
 
virtual void OnBeforeSimulate ()
 
virtual void OnVisitNewMapOrRegenerate ()
 
virtual void OnAfterSimulate ()
 
virtual void OnAdvanceHour ()
 
void Simulate ()
 
Point GetSpawnPos (Chara c, ZoneTransition.EnterState destState=ZoneTransition.EnterState.Auto)
 
Point GetRandomVisitPos (Chara c)
 
void AddGlobalCharasOnActivate ()
 
void Deactivate ()
 
void OnKillGame ()
 
void UnloadMap ()
 
void ClaimZone (bool debug=false, Point pos=null)
 
void AbandonZone ()
 
bool CanDestroy ()
 
override void _OnBeforeSave ()
 
override void OnLoad ()
 
override void Destroy ()
 
void ClearZones (Zone current=null)
 
void OnChildNumChange (Card c)
 
ICardParent GetRoot ()
 
Zone GetTopZone ()
 
Card AddCardSplinkle (Card t, Point center, int radius=4)
 
Chara AddChara (string id, int x, int z)
 
Chara AddChara (string id, Point p)
 
Card AddThing (string id, int x, int z)
 
Card AddThing (string id, Point p)
 
Card AddCard (Card t, Point point)
 
Card AddCard (Card t)
 
Card AddCard (Card t, int x, int z)
 
void RemoveCard (Card t)
 
GetRandomSpot< T > ()
 
bool TryAddThingInSpot< T > (Thing t, bool useContainer=true)
 
List< ThingTryListThingsInSpot< T > (Func< Thing, bool > func=null)
 
bool TryAddThingInSharedContainer (Thing t, List< Thing > containers=null, bool add=true, bool msg=false, Chara chara=null, bool sharedOnly=true)
 
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)
 
Chara FindDeadChara (string id)
 
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 string string int zoneLv ParseZoneFullName (string zoneFullName)
 
static bool IsImportValid (string path)
 
- Static Public Member Functions inherited from EClass
static int rndSeed (int a, int seed)
 
static int rnd (long a)
 
static int rnd (int a)
 
static int curve (long _a, int start, int step, int rate=75)
 
static int sqrt (int a)
 
static int rndHalf (int a)
 
static float rndf (float a)
 
static int rndSqrt (int a)
 
static void Wait (float a, Card c)
 
static void Wait (float a, Point p)
 
static int Bigger (int a, int b)
 
static int Smaller (int a, int b)
 

Public Attributes

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

Static Public Attributes

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

Properties

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

Private Attributes

FortuneRollData fortuneRoll
 

Additional Inherited Members

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

Detailed Description

Definition at line 11 of file Zone.cs.

Member Function Documentation

◆ _OnBeforeSave()

override void Zone._OnBeforeSave ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 1956 of file Zone.cs.

1957 {
1958 if (CanDestroy())
1959 {
1960 Debug.Log("Deleting Zone:" + this);
1961 if (!destryoed)
1962 {
1963 Destroy();
1964 }
1965 }
1966 else if (map != null)
1967 {
1968 Debug.Log("Saving Zone:" + this);
1969 map.Save(base.pathSave);
1970 if (!base.isMapSaved)
1971 {
1972 base.isMapSaved = true;
1973 IO.DeleteDirectory(base.pathSave + "Texture Replace");
1974 IO.CopyDir(pathTemp + "Texture Replace", base.pathSave + "/Texture Replace");
1975 }
1976 if (!IsActiveZone)
1977 {
1978 UnloadMap();
1979 }
1980 }
1981 }
Definition: IO.cs:10
static void DeleteDirectory(string path)
Definition: IO.cs:392
static void CopyDir(string sourceDirectory, string targetDirectory, Func< string, bool > funcExclude=null)
Definition: IO.cs:276
void Save(string path, ZoneExportData export=null, PartialMap partial=null)
Definition: Map.cs:376
bool destryoed
Definition: Spatial.cs:45
bool CanDestroy()
Definition: Zone.cs:1891
override void Destroy()
Definition: Zone.cs:1992
bool IsActiveZone
Definition: Zone.cs:499
void UnloadMap()
Definition: Zone.cs:1807
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 1875 of file Zone.cs.

1876 {
1877 FactionBranch destBranch = ((EClass.pc.homeBranch == branch) ? EClass.game.StartZone.branch : EClass.pc.homeBranch);
1878 branch.members.ForeachReverse(delegate(Chara m)
1879 {
1880 destBranch.AddMemeber(m);
1881 if (!m.IsPCParty)
1882 {
1883 m.MoveZone(destBranch.owner);
1884 }
1885 });
1887 SetMainFaction(null);
1888 base.dateExpire = EClass.world.date.GetRaw() + 10080;
1889 }
Definition: Chara.cs:10
override bool IsPCParty
Definition: Chara.cs:633
FactionBranch homeBranch
Definition: Chara.cs:1113
void MoveZone(string alias)
Definition: Chara.cs:3533
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 632 of file Zone.cs.

633 {
634 if (IsRegion)
635 {
637 }
638 isStarted = (isSimulating = false);
639 base.isKnown = true;
640 EClass.game.config.reverseSnow = false;
642 {
643 Msg.Say("regenerateZone", Name);
644 ClearZones();
645 if (EClass.pc.global.transition != null)
646 {
647 EClass.pc.global.transition.uidLastZone = 0;
648 }
649 }
651 if (EClass.game.activeZone != null)
652 {
654 }
655 EClass.game.activeZone = this;
656 ZoneExportData zoneExportData = null;
657 Debug.Log(NameWithLevel + "/" + id + "/" + base.uid + "/" + base.isGenerated + "/" + IsLoaded + "/" + File.Exists(base.pathSave + "map"));
658 if (base.isGenerated && !IsLoaded && !File.Exists(base.pathSave + "map"))
659 {
660 Debug.Log("(Bug) File does not exist:" + destryoed + "/" + base.pathSave);
661 base.isGenerated = false;
662 }
663 bool flag = false;
664 Debug.Log(idCurrentSubset + "/" + IDSubset);
665 bool flag2 = idCurrentSubset != IDSubset || forceSubset != null;
666 if (flag2 && map != null)
667 {
668 UnloadMap();
669 }
670 string fullName = pathExport;
671 string lhs = CorePath.ZoneSave + "_new.z";
672 bool flag3 = File.Exists(fullName) && !PathComparer.Default.Equals(lhs, fullName);
673 bool flag4 = !idExport.IsEmpty();
674 Debug.Log(idExport + "/" + flag3 + "/" + fullName);
675 if (!flag3 && (base.source.tag.Contains("addMap") || flag4))
676 {
677 string[] array = new string[4]
678 {
679 "Maps/" + idExport + ".z",
680 "Maps/" + ZoneFullName + ".z",
681 "Map/" + idExport + ".z",
682 "Map/" + ZoneFullName + ".z"
683 };
684 for (int i = 0; i < array.Length; i++)
685 {
686 FileInfo fileInfo = PackageIterator.GetFiles(array[i]).LastOrDefault();
687 if (fileInfo != null)
688 {
689 fullName = fileInfo.FullName;
690 flag3 = true;
691 flag4 = true;
692 break;
693 }
694 }
695 }
696 if (!base.isGenerated && (!flag4 || !flag3))
697 {
698 Debug.Log("generating random map");
699 flag = true;
700 base.dateExpire = EClass.world.date.GetRaw() + 1440 * ExpireDays;
701 Generate();
703 if (instance != null)
704 {
706 }
707 if (!UseFog)
708 {
709 map.ForeachCell(delegate(Cell c)
710 {
711 c.isSeen = true;
712 });
713 }
714 if (!(bp is GameBlueprint))
715 {
717 }
718 }
719 else if (IsLoaded)
720 {
721 Debug.Log("zone is already loaded");
722 map.SetZone(this);
723 EClass.core.textures.ApplyLocalReplace(base.isMapSaved ? base.pathSave : pathTemp);
725 }
726 else
727 {
728 subset = null;
729 bool flag5 = (base.isGenerated && flag2) || (base.isGenerated && !IsInstance && !IsPCFaction && ShouldRegenerate && EClass.world.date.IsExpired(base.dateRegenerate)) || forceRegenerate;
731 {
732 flag5 = false;
733 flag2 = false;
734 }
735 Debug.Log(base.isGenerated + "/" + flag5 + "/" + flag2 + "/" + IDSubset);
736 if (!base.isGenerated || flag5 || flag2)
737 {
738 Debug.Log("importing map:" + fullName);
739 flag = true;
740 base.dateRegenerate = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRegenerateZone;
741 if (!flag5)
742 {
743 IO.DeleteDirectory(pathTemp + "Texture Replace");
744 Debug.Log(pathTemp);
745 }
746 try
747 {
748 zoneExportData = Import(fullName);
749 base.isGenerated = true;
750 isImported = true;
751 if (flag5)
752 {
753 zoneExportData.orgMap = GameIO.LoadFile<Map>(base.pathSave + "map");
754 }
755 }
756 catch (Exception message)
757 {
758 Debug.Log(message);
759 zoneExportData = Import(CorePath.ZoneSave + "fail.z");
760 base.isGenerated = true;
761 isImported = true;
762 }
763 }
765 Debug.Log("loading map: imported? " + isImported + " regenerate? " + flag5);
766 string text = (isImported ? pathTemp : base.pathSave) + "map";
767 try
768 {
769 map = GameIO.LoadFile<Map>(text);
770 }
771 catch (Exception message2)
772 {
773 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);
774 Debug.LogError(message2);
775 return;
776 }
777 map.SetZone(this);
778 map.Load(isImported ? pathTemp : base.pathSave, isImported);
780 EClass.core.textures.ApplyLocalReplace(base.isMapSaved ? base.pathSave : pathTemp);
781 if (isImported)
782 {
783 map.deadCharas.Clear();
784 map.OnImport(zoneExportData);
785 if (UseFog && !flag5)
786 {
787 map.ForeachCell(delegate(Cell c)
788 {
789 c.isSeen = false;
790 });
791 }
792 if (zoneExportData.orgMap != null)
793 {
794 Map orgMap = zoneExportData.orgMap;
795 List<Chara> serializedCharas = map.serializedCharas;
796 map.charas = orgMap.charas;
797 map.serializedCharas = orgMap.serializedCharas;
798 map.deadCharas = orgMap.deadCharas;
799 byte[] array2 = orgMap.TryLoadFile(base.pathSave, "flags", EClass._map.Size * EClass._map.Size);
800 if (array2 != null && array2.Length == EClass._map.Size * EClass._map.Size)
801 {
802 for (int j = 0; j < EClass._map.Size; j++)
803 {
804 for (int k = 0; k < EClass._map.Size; k++)
805 {
806 map.cells[j, k].isSeen = array2[j * EClass._map.Size + k].GetBit(1);
807 }
808 }
809 }
810 foreach (Chara item in serializedCharas)
811 {
812 Debug.Log("Importing New Chara:" + item.id + "/" + item.Name + "/" + item.orgPos);
814 }
815 map.things.ForeachReverse(delegate(Thing t)
816 {
817 if (t.trait is TraitNewZone || t.trait is TraitPowerStatue)
818 {
819 foreach (Thing thing in orgMap.things)
820 {
821 if (t.id == thing.id && t.pos.Equals(thing.pos))
822 {
823 if (t.trait is TraitNewZone)
824 {
825 RemoveCard(t);
826 map.things.Insert(0, thing);
827 thing.stackOrder = 0;
828 }
829 else
830 {
831 t.ChangeMaterial(thing.material);
832 t.isOn = thing.isOn;
833 }
834 break;
835 }
836 }
837 return;
838 }
839 if (t.trait is TraitStairsLocked)
840 {
841 foreach (Thing thing2 in orgMap.things)
842 {
843 if (thing2.trait is TraitNewZone && t.pos.Equals(thing2.pos))
844 {
845 RemoveCard(t);
846 map.things.Add(thing2);
847 break;
848 }
849 }
850 return;
851 }
852 if (t.id == "medal" || t.id == "856")
853 {
854 foreach (Thing thing3 in orgMap.things)
855 {
856 if (t.id == thing3.id && t.pos.Equals(thing3.pos))
857 {
858 return;
859 }
860 }
861 RemoveCard(t);
862 }
863 });
864 foreach (KeyValuePair<int, int> item2 in EClass._map.backerObjs.ToList())
865 {
866 EClass._map.GetCell(item2.Key);
867 SourceBacker.Row row = EClass.sources.backers.map[item2.Value];
869 {
870 map.backerObjs.Remove(item2.Key);
871 }
872 }
873 foreach (Chara serializedChara in map.serializedCharas)
874 {
875 if (serializedChara.orgPos != null && serializedChara.orgPos.IsValid)
876 {
877 serializedChara.pos.Set(serializedChara.orgPos);
878 }
879 }
880 foreach (Thing thing4 in orgMap.things)
881 {
882 if (thing4.trait is TraitTent && !thing4.isNPCProperty)
883 {
884 thing4.AddEditorTag(EditorTag.NoNpcProperty);
885 thing4.isSubsetCard = false;
886 map.things.Add(thing4);
887 Debug.Log(thing4);
888 }
889 }
890 }
891 }
892 foreach (Thing thing5 in map.things)
893 {
894 map.AddCardOnActivate(thing5);
895 }
896 foreach (Chara c3 in map.serializedCharas)
897 {
898 if (c3.c_uidMaster == 0 || EClass.player.listCarryoverMap.Find((Chara c2) => c2.uid == c3.uid) == null)
899 {
900 map.charas.Add(c3);
902 }
903 }
904 map.serializedCharas.Clear();
905 if (isImported && IsTown)
906 {
908 }
911 map.OnLoad();
912 if (flag5)
913 {
914 foreach (Card item3 in map.Cards.ToList())
915 {
916 if (item3.isSubsetCard)
917 {
918 item3.Destroy();
919 }
920 }
921 }
922 if (isImported)
923 {
925 if (idCurrentSubset != null)
926 {
928 subset.Apply();
929 }
930 }
931 if (isImported)
932 {
934 {
935 foreach (Thing thing6 in map.things)
936 {
937 thing6.isNPCProperty = !thing6.isHidden && !thing6.HasEditorTag(EditorTag.NoNpcProperty);
938 }
939 }
940 else
941 {
942 foreach (Thing thing7 in map.things)
943 {
944 thing7.isNPCProperty = false;
945 }
946 }
948 if (instance != null)
949 {
951 }
952 }
953 if (isImported && !flag5 && !RevealRoom)
954 {
955 foreach (Room item4 in map.rooms.listRoom)
956 {
957 if (!item4.HasRoof || item4.data.atrium)
958 {
959 continue;
960 }
961 foreach (Point point2 in item4.points)
962 {
963 point2.cell.isSeen = false;
964 }
965 }
966 }
967 if (flag5)
968 {
969 OnRegenerate();
970 }
971 }
972 PathManager.Instance._pathfinder.PunishChangeDirection = false;
973 isImported = false;
974 if (this is Zone_Tent && IsUnderwater)
975 {
976 EClass._map.config.idSceneProfile = "indoor_water";
977 EClass.scene.profile = SceneProfile.Load(EClass._map.config.idSceneProfile);
978 }
979 if (flag && IsTown && base.lv == 0)
980 {
982 }
983 if (base.visitCount == 0)
984 {
985 base.dateRevive = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRevive;
986 }
987 map.ForeachCell(delegate(Cell c)
988 {
989 if (c.HasFire)
990 {
991 map.effectManager.GetOrCreate(c.GetSharedPoint());
992 }
993 if (IsRegion)
994 {
995 c.decal = 0;
996 }
997 });
999 {
1000 RainWater();
1001 }
1003 {
1004 map.ForeachCell(delegate(Cell c)
1005 {
1006 c.isSeen = true;
1007 });
1008 }
1009 isStarted = true;
1010 Map.isDirtySunMap = true;
1012 if (events.listPreEnter.Count > 0)
1013 {
1014 foreach (ZonePreEnterEvent item5 in events.listPreEnter)
1015 {
1016 item5.Execute();
1017 }
1018 events.listPreEnter.Clear();
1019 }
1020 foreach (Card card in map.Cards)
1021 {
1022 card.CalculateFOV();
1023 if (card.isChara)
1024 {
1025 Chara chara = card.Chara;
1026 chara.dirtySpeed = true;
1027 if (!card.isDyed && card.HasTag(CTAG.random_color))
1028 {
1029 card.DyeRandom();
1030 }
1031 if (card.IsUnique && !card.IsPCFaction && !card.IsPCParty)
1032 {
1033 Point point = chara.orgPos ?? card.pos;
1034 card.c_uniqueData = new UniqueData
1035 {
1036 x = point.x,
1037 y = point.z,
1038 uidZone = base.uid
1039 };
1040 }
1041 int @int = card.GetInt(55);
1042 if (@int != 0)
1043 {
1044 foreach (Chara chara2 in map.charas)
1045 {
1046 if (chara2.uid == @int)
1047 {
1048 if (chara.IsHostile(chara2))
1049 {
1050 chara.enemy = chara2;
1051 chara.SetAI(new GoalCombat());
1052 chara.calmCheckTurn = 20 + EClass.rnd(30);
1053 }
1054 break;
1055 }
1056 }
1057 card.SetInt(55);
1058 }
1059 chara.SyncRide();
1060 if (card.c_uidMaster != 0 && chara.master == null)
1061 {
1062 chara.FindMaster();
1063 }
1064 if (!EClass.game.isLoading)
1065 {
1066 chara.enemy = null;
1067 if (chara.IsInCombat)
1068 {
1069 chara.SetNoGoal();
1070 }
1071 }
1072 }
1073 else if (card.IsInstalled && card.trait is TraitDoor traitDoor && card.pos.HasChara && !traitDoor.IsOpen())
1074 {
1075 traitDoor.ToggleDoor(sound: false, refresh: false);
1076 }
1077 }
1078 RefreshHat();
1079 forceRegenerate = false;
1080 forceSubset = null;
1081 EClass.ui.OnActivateZone();
1083 EClass.Sound.LoadAmbience(IDAmbience);
1084 if (EClass.Branch != null)
1085 {
1087 }
1088 OnVisit();
1089 if (flag)
1090 {
1092 }
1094 if (IsPCFaction)
1095 {
1096 EClass.player.uidLastTown = 0;
1097 }
1098 else if (IsTown && base.lv == 0)
1099 {
1100 EClass.player.uidLastTown = base.uid;
1101 }
1102 RefreshBGM();
1103 Rand.InitBytes(map.seed + 1);
1105 okaerinko = 0;
1106 if (EClass.debug.enable)
1107 {
1108 ModInfluence(2000);
1109 }
1110 if (this is Zone_TinkerCamp)
1111 {
1112 Tutorial.Reserve("tinker");
1113 }
1114 else if (this is Zone_Town && !(this is Zone_SubTown))
1115 {
1116 Tutorial.Reserve("town");
1117 }
1118 }
CTAG
Definition: CTAG.cs:2
if(!match.Success)
EditorTag
Definition: EditorTag.cs:2
void Add(Act a, string s="")
Definition: ActPlan.cs:11
bool atrium
Definition: AreaData.cs:66
AreaData data
Definition: BaseArea.cs:29
PointList points
Definition: BaseArea.cs:26
Definition: Card.cs:11
string id
Definition: Card.cs:36
bool isNPCProperty
Definition: Card.cs:557
bool isSubsetCard
Definition: Card.cs:749
SourceMaterial.Row material
Definition: Card.cs:2103
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:3210
int c_uidMaster
Definition: Card.cs:1489
void AddEditorTag(EditorTag tag)
Definition: Card.cs:2738
Point pos
Definition: Card.cs:60
int uid
Definition: Card.cs:125
Trait trait
Definition: Card.cs:54
void Destroy()
Definition: Card.cs:5301
bool HasEditorTag(EditorTag tag)
Definition: Card.cs:2733
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:9366
bool IsInCombat
Definition: Chara.cs:911
AIAct SetAI(AIAct g)
Definition: Chara.cs:9371
Point orgPos
Definition: Chara.cs:21
GlobalData global
Definition: Chara.cs:76
Chara master
Definition: Chara.cs:88
Chara FindMaster()
Definition: Chara.cs:2603
void SyncRide()
Definition: Chara.cs:4158
bool IsHostile()
Definition: Chara.cs:6849
bool ignoreBackerDestoryFlag
Definition: CoreConfig.cs:568
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:2404
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:2153
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:966
bool IsValid
Definition: Point.cs:88
Definition: Rand.cs:4
static void InitBytes(int a)
Definition: Rand.cs:13
Definition: Region.cs:8
EloMap elomap
Definition: Region.cs:9
List< Room > listRoom
Definition: RoomManager.cs:13
Definition: Room.cs:4
bool HasRoof
Definition: Room.cs:29
static SceneProfile Load(string id)
Definition: SceneProfile.cs:18
void RebuildActorEx()
Definition: Scene.cs:993
EloMapActor elomapActor
Definition: Scene.cs:101
SourceBacker backers
string idCurrentSubset
Definition: Spatial.cs:28
virtual bool IsRegion
Definition: Spatial.cs:515
virtual string Name
Definition: Spatial.cs:509
bool isImported
Definition: Spatial.cs:47
int y
Definition: Spatial.cs:106
int x
Definition: Spatial.cs:94
void ApplyLocalReplace(string path)
Definition: Thing.cs:8
static void Reserve(string idStep, Action onBeforePlay=null)
Definition: Tutorial.cs:55
bool IsRaining
Definition: Weather.cs:117
Weather weather
Definition: World.cs:12
List< ZonePreEnterEvent > listPreEnter
virtual void OnGenerateMap()
Definition: ZoneInstance.cs:32
virtual void Execute()
string ZoneFullName
Definition: Zone.cs:85
bool isSimulating
Definition: Zone.cs:75
void RefreshElectricity()
Definition: Zone.cs:3075
ZoneExportData Import(string path)
Definition: Zone.cs:3337
void Generate()
Definition: Zone.cs:2467
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:1229
bool isStarted
Definition: Zone.cs:73
virtual string pathExport
Definition: Zone.cs:129
MapSubset subset
Definition: Zone.cs:65
Zone GetTopZone()
Definition: Zone.cs:2042
virtual string IDSubset
Definition: Zone.cs:216
ZoneBlueprint bp
Definition: Zone.cs:67
void RefreshBGM()
Definition: Zone.cs:3203
void Deactivate()
Definition: Zone.cs:1725
void SpawnLostItems()
Definition: Zone.cs:3929
void AddGlobalCharasOnActivate()
Definition: Zone.cs:1644
bool IsInstance
Definition: Zone.cs:493
void ClearZones(Zone current=null)
Definition: Zone.cs:2011
void OnVisit()
Definition: Zone.cs:1130
virtual bool IsTown
Definition: Zone.cs:227
void RainWater()
Definition: Zone.cs:3575
virtual bool UseFog
Definition: Zone.cs:395
virtual string IDAmbience
Definition: Zone.cs:182
void RemoveCard(Card t)
Definition: Zone.cs:2126
void RefreshHat()
Definition: Zone.cs:1120
void ModInfluence(int a)
Definition: Zone.cs:3787
virtual void OnGenerateMap()
Definition: Zone.cs:2685
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:3745
virtual int ExpireDays
Definition: Zone.cs:175
virtual void OnVisitNewMapOrRegenerate()
Definition: Zone.cs:1269

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

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

◆ AddCard() [1/3]

Card Zone.AddCard ( Card  t)
inline

Definition at line 2091 of file Zone.cs.

2092 {
2093 return AddCard(t, 0, 0);
2094 }
Card AddCard(Card t, Point point)
Definition: Zone.cs:2086

References AddCard().

◆ AddCard() [2/3]

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

Definition at line 2096 of file Zone.cs.

2097 {
2098 if (t.parent != null)
2099 {
2100 t.parent.RemoveCard(t);
2101 }
2102 t.parent = this;
2103 Chara chara = t.Chara;
2104 if (chara != null)
2105 {
2106 chara.currentZone = this;
2107 chara.SetAI(new NoGoal());
2108 }
2109 if (IsActiveZone)
2110 {
2111 map.OnCardAddedToZone(t, x, z);
2112 if (isStarted && t.isThing && t.placeState == PlaceState.roaming && !ignoreSpawnAnime)
2113 {
2114 t.PlayAnimeLoot();
2115 }
2116 ignoreSpawnAnime = false;
2117 }
2118 if (chara != null && EClass.player != null && !chara.hasSpawned)
2119 {
2120 EClass.player.codex.AddSpawn(chara.id);
2121 chara.hasSpawned = true;
2122 }
2123 return t;
2124 }
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:6623
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 2086 of file Zone.cs.

2087 {
2088 return AddCard(t, point.x, point.z);
2089 }

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

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

◆ AddCardSplinkle()

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

Definition at line 2051 of file Zone.cs.

2052 {
2053 Point point = new Point(center);
2054 for (int i = 0; i < 1000; i++)
2055 {
2056 point.x = center.x + EClass.rnd(radius) - EClass.rnd(radius);
2057 point.z = center.z + EClass.rnd(radius) - EClass.rnd(radius);
2058 if (point.IsValid && !point.IsBlocked && !point.HasChara)
2059 {
2060 return AddCard(t, point);
2061 }
2062 }
2063 return AddCard(t, center);
2064 }
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 2071 of file Zone.cs.

2072 {
2073 return AddChara(id, p.x, p.z);
2074 }
Chara AddChara(string id, int x, int z)
Definition: Zone.cs:2066

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

◆ AddGlobalCharasOnActivate()

void Zone.AddGlobalCharasOnActivate ( )
inline

Definition at line 1644 of file Zone.cs.

1645 {
1646 Point spawnPosPC = null;
1647 if (EClass.pc.currentZone == this)
1648 {
1649 spawnPosPC = GetSpawnPos(EClass.pc);
1650 }
1651 if (spawnPosPC == null)
1652 {
1653 spawnPosPC = map.GetCenterPos();
1654 }
1655 if (spawnPosPC.IsValid && EClass.pc.global.transition != null && spawnPosPC.HasBlock)
1656 {
1657 spawnPosPC = spawnPosPC.GetNearestPoint();
1658 }
1659 spawnPosPC = spawnPosPC.Clamp(useBounds: true).GetNearestPoint();
1660 foreach (Chara c in EClass.game.cards.globalCharas.Values)
1661 {
1662 if (c.currentZone != this)
1663 {
1664 continue;
1665 }
1666 if (c.parent is Chara)
1667 {
1668 Chara chara = c.parent as Chara;
1669 c.currentZone = chara.currentZone;
1670 }
1671 else
1672 {
1673 if (c.isDead)
1674 {
1675 continue;
1676 }
1677 if (c.isRestrained && c.currentZone == EClass.pc.currentZone && (!c.pos.IsValid || c.pos.FindThing<TraitShackle>() == null))
1678 {
1679 c.isRestrained = false;
1680 }
1681 if (c.global.transition != null)
1682 {
1683 Point pos = (c.IsPC ? spawnPosPC : (c.IsPCParty ? spawnPosPC.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true) : GetSpawnPos(c)));
1684 if (c.IsPCParty && !c.IsPC)
1685 {
1686 if (c.host == EClass.pc)
1687 {
1688 pos.Set(spawnPosPC);
1689 }
1690 else if (pos.Equals(spawnPosPC) || !PathManager.Instance.IsPathClear(spawnPosPC, pos, c, 5))
1691 {
1692 c.pos.Set(spawnPosPC);
1693 if (!spawnPosPC.ForeachNearestPoint(delegate(Point p)
1694 {
1695 if (PathManager.Instance.IsPathClear(spawnPosPC, p, c, 10) && !p.Equals(spawnPosPC))
1696 {
1697 pos.Set(p);
1698 return true;
1699 }
1700 return false;
1701 }, allowBlock: false, EClass.pc.party.members.Count >= 12, allowInstalled: true, ignoreCenter: true, EClass._zone.IsRegion ? 2 : 6))
1702 {
1703 pos.Set(spawnPosPC);
1704 }
1705 }
1706 }
1707 c.pos.Set(pos);
1708 c.global.transition = null;
1709 }
1710 map.charas.Add(c);
1712 }
1713 }
1715 {
1716 Point nearestPoint = spawnPosPC.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true);
1717 item.enemy = null;
1718 item.pos.Set(nearestPoint);
1719 map.charas.Add(item);
1721 }
1723 }
GlobalCharaList globalCharas
Definition: CardManager.cs:46
bool isRestrained
Definition: Card.cs:569
override bool IsPC
Definition: Chara.cs:630
Chara host
Definition: Chara.cs:33
Zone currentZone
Definition: Chara.cs:259
bool isDead
Definition: Chara.cs:393
CardManager cards
Definition: Game.cs:156
Point GetCenterPos()
Definition: MapBounds.cs:52
static PathManager Instance
Definition: PathManager.cs:16
bool IsPathClear(Point origin, Point dest, IPathfindWalker walker, int radius)
Definition: PathManager.cs:47
Point GetNearestPoint(bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int minRadius=0)
Definition: Point.cs:624
bool ForeachNearestPoint(Func< Point, bool > endFunc, bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int maxRange=30)
Definition: Point.cs:696
Point Clamp(bool useBounds=false)
Definition: Point.cs:1014
bool HasBlock
Definition: Point.cs:141
Thing FindThing(Func< Thing, bool > func)
Definition: Point.cs:1146
Point GetSpawnPos(Chara c, ZoneTransition.EnterState destState=ZoneTransition.EnterState.Auto)
Definition: Zone.cs:1441

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

3472 {
3473 Trait random = map.Installed.traits.GetTraitSet<TraitSpotExit>().GetRandom();
3474 if (random == null)
3475 {
3476 return null;
3477 }
3478 Point point = random.GetPoint();
3479 Chara chara = null;
3480 if (guest)
3481 {
3482 Zone z = EClass.world.FindZone("wilds");
3483 chara = EClass.game.cards.ListGlobalChara(z).RandomItem();
3484 if (chara != null)
3485 {
3486 AddCard(chara, point);
3487 Msg.Say("guestArrive", chara);
3488 chara.visitorState = VisitorState.Arrived;
3489 }
3490 }
3491 else
3492 {
3493 chara = CharaGen.CreateFromFilter("c_wilds");
3494 AddCard(chara, point);
3495 chara.goalListType = GoalListType.Enemy;
3496 }
3497 return chara;
3498 }
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:841
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 2081 of file Zone.cs.

2082 {
2083 return AddThing(id, p.x, p.z);
2084 }
Card AddThing(string id, int x, int z)
Definition: Zone.cs:2076

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

◆ ApplyBackerPet()

void Zone.ApplyBackerPet ( bool  draw)
inline

Definition at line 3974 of file Zone.cs.

3975 {
3976 bool flag = this is Zone_Yowyn && base.lv == -1;
3977 IList<SourceBacker.Row> list = EClass.sources.backers.listPet.Copy();
3978 list.Shuffle();
3980 {
3981 list.ForeachReverse(delegate(SourceBacker.Row a)
3982 {
3983 if (EClass.player.doneBackers.Contains(a.id))
3984 {
3985 list.Remove(a);
3986 }
3987 });
3988 }
3989 foreach (Chara chara in EClass._map.charas)
3990 {
3991 if (chara.IsGlobal || chara.IsMinion)
3992 {
3993 continue;
3994 }
3995 if (chara.isBackerContent)
3996 {
3997 if (chara.sourceBacker.isStatic != 0)
3998 {
3999 continue;
4000 }
4001 if (chara.id != "follower")
4002 {
4003 chara.RemoveBacker();
4004 }
4005 }
4006 if ((flag && chara.race.id != "cat") || (!EClass.debug.enable && EClass.rnd((!flag) ? (draw ? 3 : 10) : (draw ? 1 : 2)) != 0))
4007 {
4008 continue;
4009 }
4010 foreach (SourceBacker.Row item in list)
4011 {
4012 if (item.chara == chara.id)
4013 {
4014 chara.ApplyBacker(item.id);
4015 list.Remove(item);
4016 break;
4017 }
4018 }
4019 }
4020 }
SourceBacker.Row sourceBacker
Definition: Card.cs:955
void RemoveBacker()
Definition: Card.cs:7485
void ApplyBacker(int bid)
Definition: Card.cs:7449
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 1891 of file Zone.cs.

1892 {
1894 {
1895 return false;
1896 }
1897 if (IsInstance)
1898 {
1899 return true;
1900 }
1901 bool flag = false;
1902 switch (id)
1903 {
1904 case "cave_dragon":
1905 if (!(this is Zone_DungeonDragon))
1906 {
1907 flag = true;
1908 }
1909 break;
1910 case "cave_yeek":
1911 if (!(this is Zone_DungeonYeek))
1912 {
1913 flag = true;
1914 }
1915 break;
1916 case "cave_mino":
1917 if (!(this is Zone_DungeonMino))
1918 {
1919 flag = true;
1920 }
1921 break;
1922 case "cave_dead":
1923 if (!(this is Zone_DungeonDead))
1924 {
1925 flag = true;
1926 }
1927 break;
1928 }
1929 Zone topZone = GetTopZone();
1930 if (!flag)
1931 {
1932 if (base.dateExpire == 0 || !EClass.world.date.IsExpired(base.dateExpire))
1933 {
1934 return false;
1935 }
1936 if (!base.isRandomSite && !(this is Zone_Field) && (topZone == null || topZone == this || topZone.FindDeepestZone() == this))
1937 {
1938 return false;
1939 }
1940 }
1941 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()))
1942 {
1943 return false;
1944 }
1946 {
1948 if (zone != null && zone.GetTopZone() == this)
1949 {
1950 return false;
1951 }
1952 }
1953 return true;
1954 }
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 1821 of file Zone.cs.

1822 {
1825 branch = new FactionBranch();
1826 branch.OnCreate(this);
1827 if (base.icon == 0)
1828 {
1829 base.icon = 332;
1830 }
1831 instance = null;
1832 base.dateExpire = 0;
1834 Register();
1835 foreach (Thing thing in map.things)
1836 {
1837 thing.isNPCProperty = false;
1838 }
1841 if (debug)
1842 {
1843 for (int i = 0; i < 7; i++)
1844 {
1845 Chara chara = CharaGen.CreateFromFilter("c_neutral");
1846 EClass._zone.AddCard(chara, EClass._map.bounds.GetRandomPoint().GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false));
1847 branch.AddMemeber(chara);
1848 }
1849 }
1850 else
1851 {
1852 Msg.Say("claimedZone");
1853 EClass.Branch.Log("claimedZone");
1854 EClass.Sound.Play("jingle_embark");
1855 EClass.pc.PlaySound("build");
1856 if (pos == null)
1857 {
1858 pos = EClass.pc.pos.GetNearestPoint(allowBlock: false, allowChara: true, allowInstalled: false);
1859 }
1860 Effect.Get("aura_heaven").Play(pos);
1861 EClass._zone.AddCard(ThingGen.Create("core_zone"), pos).SetPlaceState(PlaceState.installed);
1862 }
1863 base.idPrefix = 0;
1865 {
1866 EClass.player.spawnZone = EClass._zone;
1867 }
1869 {
1870 EClass._zone.SetBGM(new List<int> { 41, 90, 44, 43 });
1872 }
1873 }
void SetPlaceState(PlaceState newState, bool byPlayer=false)
Definition: Card.cs:3921
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6594
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:3187
void SetBGM(List< int > ids, bool refresh=true, float fadeDuration=0f)
Definition: Zone.cs:3145

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

2012 {
2013 if (map != null)
2014 {
2015 UnloadMap();
2016 }
2017 base.isGenerated = false;
2018 Zone topZone = GetTopZone();
2019 if (topZone != this)
2020 {
2021 topZone.ClearZones(this);
2022 return;
2023 }
2024 children.ForeachReverse(delegate(Spatial c)
2025 {
2026 if (c != current)
2027 {
2028 c.Destroy();
2029 }
2030 });
2031 }
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 3906 of file Zone.cs.

3907 {
3908 int num = 0;
3909 foreach (Chara chara in EClass._map.charas)
3910 {
3911 if (chara.c_uidMaster == c.uid && chara.c_minionType == MinionType.Default)
3912 {
3913 num++;
3914 }
3915 }
3916 return num;
3917 }
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 2455 of file Zone.cs.

2456 {
2457 bp = new ZoneBlueprint();
2458 bp.Create();
2459 bp.genSetting.seed = base.Seed;
2460 OnCreateBP();
2461 }
virtual void OnCreateBP()
Definition: Zone.cs:2463

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

Referenced by Generate().

◆ CreatePlaylist()

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

Definition at line 3243 of file Zone.cs.

3244 {
3245 return ModUtil.CreatePlaylist(ref list, mold);
3246 }

Referenced by Generate().

◆ Deactivate()

void Zone.Deactivate ( )
inline

Definition at line 1725 of file Zone.cs.

1726 {
1727 if (!IsUserZone && !IsPCFaction && map != null)
1728 {
1729 List<Thing> list = new List<Thing>();
1730 foreach (Thing thing in map.things)
1731 {
1732 if (thing.rarity >= Rarity.Artifact && thing.HasTag(CTAG.godArtifact))
1733 {
1734 list.Add(thing);
1735 }
1736 }
1737 if (this is Zone_Tent)
1738 {
1739 foreach (Thing item in map.props.stocked.Things.Concat(map.props.roaming.Things))
1740 {
1741 if (item.IsContainer)
1742 {
1743 foreach (Thing thing2 in item.things)
1744 {
1745 if (thing2.trait is TraitTent)
1746 {
1747 list.Add(thing2);
1748 }
1749 }
1750 }
1751 if (item.trait is TraitTent)
1752 {
1753 list.Add(item);
1754 }
1755 }
1756 }
1757 if (list.Count > 0)
1758 {
1759 Msg.Say("pick_valuable");
1760 foreach (Thing item2 in list)
1761 {
1762 Msg.Say("pick_valuable2", item2);
1763 EClass.pc.AddCard(item2);
1764 }
1765 }
1766 }
1768 {
1769 base.isPeace = false;
1770 }
1772 if (IsPCFaction)
1773 {
1774 foreach (Chara member in branch.members)
1775 {
1776 member.ValidateWorks();
1777 }
1778 }
1779 EClass.game.lastActiveZone = EClass.game.activeZone;
1780 base.lastActive = EClass.world.date.GetRaw();
1781 map.OnDeactivate();
1782 EClass.scene.Clear();
1783 EClass.game.activeZone = null;
1784 if (IsInstance)
1785 {
1786 UnloadMap();
1787 base.isGenerated = false;
1788 }
1789 if (forceRegenerate)
1790 {
1791 UnloadMap();
1792 }
1793 OnDeactivate();
1794 }
Rarity
Definition: Rarity.cs:2
Card AddCard(Card c)
Definition: Card.cs:3259
Rarity rarity
Definition: Card.cs:317
bool HasTag(CTAG tag)
Definition: Card.cs:2728
void ValidateWorks()
Definition: Chara.cs:9722
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:1257
virtual bool IsUserZone
Definition: Zone.cs:275
virtual void OnDeactivate()
Definition: Zone.cs:1261

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

1993 {
1994 children.ForeachReverse(delegate(Spatial z)
1995 {
1996 z.Destroy();
1997 });
1998 if (map != null)
1999 {
2000 UnloadMap();
2001 }
2002 if (parent != null && parent.IsRegion && instance == null)
2003 {
2004 EClass.scene.elomap.SetZone(base.x, base.y, null, updateMesh: true);
2005 }
2006 EClass.game.spatials.Remove(this);
2007 destryoed = true;
2008 base.isGenerated = false;
2009 }
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 568 of file Zone.cs.

569 {
570 return elements.Value(ele);
571 }
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 573 of file Zone.cs.

574 {
575 return elements.Value(EClass.sources.elements.alias[alias].id);
576 }
SourceElement elements

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

◆ Export() [1/2]

void Zone.Export ( )
inline

Definition at line 3429 of file Zone.cs.

3430 {
3432 string text = pathExport;
3433 IO.Copy(text, CorePath.ZoneSave + "Backup/");
3434 Export(text);
3435 Msg.Say("Exported Map:" + text);
3436 }
static void Copy(string fromPath, string toPath)
Definition: IO.cs:309
void ResetEditorPos()
Definition: Map.cs:357
void Export()
Definition: Zone.cs:3429

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

3347 {
3348 if (subset != null)
3349 {
3350 SE.Beep();
3351 return;
3352 }
3353 try
3354 {
3355 ZoneExportData zoneExportData = new ZoneExportData
3356 {
3357 name = name,
3358 usermap = usermap
3359 };
3361 if (!map.config.retainDecal)
3362 {
3364 }
3365 map.Save(IO.TempPath + "/", zoneExportData, partial);
3366 map.ExportMetaData(IO.TempPath + "/", Path.GetFileNameWithoutExtension(path), partial);
3367 if (partial == null)
3368 {
3369 IO.CopyDir(base.pathSave + "Texture Replace", IO.TempPath + "/Texture Replace");
3370 }
3371 IO.SaveFile(IO.TempPath + "/export", zoneExportData, compress: true);
3372 using (ZipFile zipFile = new ZipFile())
3373 {
3374 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
3375 zipFile.AddDirectory(IO.TempPath);
3376 zipFile.Save(path);
3377 zipFile.Dispose();
3378 }
3380 }
3381 catch (Exception ex)
3382 {
3383 EClass.ui.Say(ex.Message + ":" + path);
3384 }
3385 }
static void CreateTempDirectory(string path=null)
Definition: IO.cs:419
static string TempPath
Definition: IO.cs:63
static void SaveFile(string path, object obj, bool compress=false, JsonSerializerSettings setting=null)
Definition: IO.cs:88
static void DeleteTempDirectory(string path=null)
Definition: IO.cs:424
bool retainDecal
Definition: MapConfig.cs:44
void ExportMetaData(string _path, string id, PartialMap partial=null)
Definition: Map.cs:732
void ClearRainAndDecal()
Definition: Map.cs:1571
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 3387 of file Zone.cs.

3388 {
3390 {
3391 string text = StandaloneFileBrowser.SaveFilePanel("Export Zone", dir ?? CorePath.ZoneSave, "new zone", "z");
3392 if (!string.IsNullOrEmpty(text))
3393 {
3394 Export(text);
3395 Msg.SayRaw("Exported Zone");
3396 }
3397 });
3398 }
void WaitForEndOfFrame(Action action)
Definition: BaseCore.cs:61
static string SayRaw(string text)
Definition: Msg.cs:118
static string SaveFilePanel(string title, string directory, string defaultName, string extension)

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

Referenced by CoreDebug.InitDebugCommands().

◆ FindChara() [1/2]

Chara Zone.FindChara ( int  uid)
inline

Definition at line 3253 of file Zone.cs.

3254 {
3255 return map.charas.Find((Chara c) => c.uid == uid);
3256 }
int uid
Definition: Spatial.cs:70

References Map.charas, and Card.uid.

◆ FindChara() [2/2]

Chara Zone.FindChara ( string  id)
inline

Definition at line 3248 of file Zone.cs.

3249 {
3250 return map.charas.Find((Chara c) => c.id == id);
3251 }

References Map.charas, and Card.id.

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

◆ FindDeadChara()

Chara Zone.FindDeadChara ( string  id)
inline

Definition at line 3258 of file Zone.cs.

3259 {
3260 return map.deadCharas.Find((Chara c) => c.id == id);
3261 }

References Map.deadCharas, and Card.id.

Referenced by Zone_Aquli.OnVisitNewMapOrRegenerate().

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

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

◆ Generate()

void Zone.Generate ( )
inline

Definition at line 2467 of file Zone.cs.

2468 {
2469 base.isGenerated = true;
2470 if (bp == null)
2471 {
2472 CreateBP();
2473 }
2474 if (bp.map == null)
2475 {
2476 bp.GenerateMap(this);
2477 }
2478 map.SetZone(this);
2479 Zone_Field zone_Field = this as Zone_Field;
2480 bool flag = IdBiome == "Sand" || IdBiome == "Water" || IsUnderwater;
2481 if (flag)
2482 {
2483 int num = 1 + EClass.rnd((IdBiome == "Water") ? 3 : 2);
2484 for (int i = 0; i < num; i++)
2485 {
2486 Point randomSurface = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2487 if (!randomSurface.HasObj && !randomSurface.HasThing)
2488 {
2489 Thing t = ThingGen.Create("pearl_oyster", new string[3] { "wood_birch", "poplar", "coralwood" }.RandomItem(), ContentLv);
2490 EClass._zone.AddCard(t, randomSurface).Install();
2491 }
2492 }
2493 num = 4 + EClass.rnd(5);
2494 for (int j = 0; j < num; j++)
2495 {
2496 Point randomSurface2 = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2497 if (!randomSurface2.HasObj && !randomSurface2.HasThing && (IsUnderwater || randomSurface2.cell.IsTopWaterAndNoSnow || EClass.rnd(6) == 0))
2498 {
2499 EClass._zone.AddCard(ThingGen.Create("70", -1, ContentLv), randomSurface2);
2500 }
2501 }
2502 for (int k = 0; k < EClass.rnd(EClass.rnd(base.isBeach ? 5 : 3) + 1); k++)
2503 {
2504 Point randomSurface3 = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2505 if (!randomSurface3.HasObj)
2506 {
2507 EClass._zone.AddCard(ThingGen.Create("bottle_message"), randomSurface3);
2508 }
2509 }
2510 }
2511 if (IsUnderwater)
2512 {
2513 for (int l = 0; l < 30 + EClass.rnd(30); l++)
2514 {
2515 SpawnMob(null, SpawnSetting.Fish());
2516 }
2517 Crawler crawler = Crawler.Create("pasture");
2518 int num2 = (EClass.debug.enable ? 3 : EClass.rnd(EClass.rnd(EClass.rnd(EClass.rnd(5) + 1) + 1) + 1));
2519 bool flag2 = this is Zone_Field;
2520 Thing seed = null;
2521 if (IsNefia)
2522 {
2523 int num3 = Mathf.Min(EClass._zone.DangerLv, EClass.pc.Evalue(286) * 2 / 3);
2524 if (num3 > 0)
2525 {
2527 Rand.SetSeed(EClass._zone.uid * 10 + num3);
2528 TraitSeed.LevelSeed(seed, (seed.trait as TraitSeed).row, num3);
2529 Rand.SetSeed();
2530 seed.elements.SetBase(2, EClass.curve(seed.encLV, 50, 10, 80));
2531 }
2532 }
2533 crawler.CrawlUntil(EClass._map, () => EClass._map.GetRandomPoint(), num2 + (flag2 ? 4 : 0), delegate(Crawler.Result r)
2534 {
2535 int num6 = 137;
2536 foreach (Point point in r.points)
2537 {
2538 if (!point.cell.isModified && !point.HasThing && !point.HasBlock && !point.HasObj)
2539 {
2540 map.SetObj(point.x, point.z, num6);
2541 int idx = 3 + ((EClass.rnd(3) == 0) ? 1 : 0) + ((EClass.rnd(3) == 0) ? (-1) : 0) + ((EClass.rnd(3) == 0) ? (-1) : 0);
2542 point.growth.SetStage(idx);
2543 if (seed != null)
2544 {
2545 EClass._map.AddPlant(point, seed);
2546 }
2547 }
2548 }
2549 return false;
2550 });
2551 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)
2552 {
2553 int num5 = 136;
2554 foreach (Point point2 in r.points)
2555 {
2556 if (!point2.cell.isModified && !point2.HasThing && !point2.HasBlock && !point2.HasObj)
2557 {
2558 map.SetObj(point2.x, point2.z, num5, 1, EClass.rnd(4));
2559 }
2560 }
2561 return false;
2562 });
2563 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)
2564 {
2565 int idFloor = 121;
2566 foreach (Point point3 in r.points)
2567 {
2568 map.SetFloor(point3.x, point3.z, 97, idFloor, Mathf.Clamp(4 - r.startPos.Distance(point3) + EClass.rnd(3) - EClass.rnd(3), 0, 3));
2569 }
2570 return false;
2571 });
2572 }
2573 if (zone_Field != null)
2574 {
2575 if (EClass.rnd(3) == 0)
2576 {
2577 int num4 = EClass.rnd(2);
2578 for (int m = 0; m < num4; m++)
2579 {
2580 Point randomSurface4 = EClass._map.bounds.GetRandomSurface();
2581 if (!randomSurface4.HasObj && !randomSurface4.HasThing)
2582 {
2584 EClass._zone.AddCard(t2, randomSurface4).Install();
2585 }
2586 }
2587 }
2588 if (EClass.rnd(8) == 0)
2589 {
2590 SpawnAltar();
2591 }
2593 if (!flag && EClass.rnd(EClass.debug.enable ? 1 : 10) == 0)
2594 {
2595 Point randomSurface5 = EClass._map.bounds.GetRandomSurface();
2596 if (randomSurface5.IsValid)
2597 {
2598 EClass._zone.AddCard(CharaGen.Create("priest"), randomSurface5);
2599 }
2600 }
2601 if (base.Tile.isRoad)
2602 {
2603 for (int n = 0; n < EClass.rnd(4); n++)
2604 {
2605 EClass._zone.SpawnMob(map.GetCenterPos().GetRandomPointInRadius(2, 6, requireLos: false, allowChara: false), SpawnSetting.HomeGuest(EClass._zone.DangerLv));
2606 }
2607 }
2608 }
2609 map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList) ?? EClass.Sound.GetPlaylist("Day"));
2610 }
@ seed
int Evalue(int ele)
Definition: Card.cs:2704
Card Install()
Definition: Card.cs:3915
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:2260
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:1997
void SetObj(int x, int z, int id=0, int value=1, int dir=0)
Definition: Map.cs:1580
bool HasThing
Definition: Point.cs:251
bool HasObj
Definition: Point.cs:137
Point GetRandomPointInRadius(int minRadius, int maxRadius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=2000)
Definition: Point.cs:788
Cell cell
Definition: Point.cs:51
GrowSystem growth
Definition: Point.cs:77
static void SetSeed(int a=-1)
Definition: Rand.cs:44
SourceObj objs
static SpawnSetting Fish()
static SpawnSetting HomeGuest(int lv)
static Thing MakeSeed(string idSource)
Definition: TraitSeed.cs:105
static void LevelSeed(Thing t, SourceObj.Row obj, int num)
Definition: TraitSeed.cs:184
void GenerateMap(Zone zone)
virtual string IDPlayList
Definition: Zone.cs:145
override int ContentLv
Definition: Zone.cs:100
void SpawnAltar()
Definition: Zone.cs:2646
Playlist CreatePlaylist(ref List< int > list, Playlist mold=null)
Definition: Zone.cs:3243
virtual bool IsNefia
Definition: Zone.cs:289
BiomeProfile biome
Definition: Zone.cs:131
Chara SpawnMob(string id, Point pos=null)
Definition: Zone.cs:2885
virtual string IdBiome
Definition: Zone.cs:133
override int DangerLv
Definition: Zone.cs:112
void TrySpawnFollower()
Definition: Zone.cs:2612
void CreateBP()
Definition: Zone.cs:2455

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

3264 {
3265 int max = base.lv;
3266 return GetDeepestLv(ref max);
3267 }
int GetDeepestLv()
Definition: Zone.cs:3263

◆ GetDeepestLv() [2/2]

int Zone.GetDeepestLv ( ref int  max)
inline

Definition at line 3269 of file Zone.cs.

3270 {
3271 if (Mathf.Abs(base.lv) > Mathf.Abs(max))
3272 {
3273 max = base.lv;
3274 }
3275 foreach (Spatial child in children)
3276 {
3277 (child as Zone).GetDeepestLv(ref max);
3278 }
3279 return max;
3280 }

◆ GetDungenID()

virtual string Zone.GetDungenID ( )
inlinevirtual

◆ GetElectricity()

int Zone.GetElectricity ( bool  cost = false)
inline

Definition at line 3106 of file Zone.cs.

3107 {
3108 bool flag = GetSoilCost() > MaxSoil;
3109 int sum = 0;
3110 foreach (Thing thing in EClass._map.things)
3111 {
3112 if (!thing.IsInstalled || thing.trait.Electricity == 0)
3113 {
3114 continue;
3115 }
3116 if (cost)
3117 {
3118 if (thing.trait.Electricity < 0)
3119 {
3120 sum += -thing.trait.Electricity;
3121 }
3122 }
3123 else if (thing.trait.Electricity > 0)
3124 {
3125 sum += thing.trait.Electricity;
3126 }
3127 }
3128 if (!cost)
3129 {
3130 sum += elements.Value(2201) * 10 + BaseElectricity;
3131 if (!flag)
3132 {
3133 EClass._map.bounds.ForeachCell(delegate(Cell c)
3134 {
3135 if (c.sourceObj.id == 118 && c.growth.IsMature)
3136 {
3137 sum += 20;
3138 }
3139 });
3140 }
3141 }
3142 return sum;
3143 }
bool IsInstalled
Definition: Card.cs:2451
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:3919

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

589 {
590 return base.source.id;
591 }

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

◆ GetOrCreateFortuneRollData()

FortuneRollData Zone.GetOrCreateFortuneRollData ( bool  refresh = true)
inline

Definition at line 4022 of file Zone.cs.

4023 {
4024 if (fortuneRoll == null)
4025 {
4027 fortuneRoll.seed = EClass._zone.uid * 100 + EClass.game.seed;
4028 }
4029 if (refresh || fortuneRoll.count == 0)
4030 {
4032 }
4033 return fortuneRoll;
4034 }
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 2415 of file Zone.cs.

2416 {
2417 string text = IdProfile;
2418 if (text.IsEmpty())
2419 {
2420 Region region = parent as Region;
2421 if (base.lv != 0)
2422 {
2423 text = ((base.lv < 0) ? "Underground" : "Sky");
2424 }
2425 else if (region != null)
2426 {
2428 text = EClass.scene.elomapActor.elomap.GetTileInfo(base.x, base.y).idZoneProfile;
2429 if (bp != null)
2430 {
2431 name = Lang.GetList("zone_" + text.Split('/')[1]).RandomItem();
2432 bp.surrounding = new EloMap.TileInfo[3, 3];
2433 for (int i = 0; i < 3; i++)
2434 {
2435 for (int j = 0; j < 3; j++)
2436 {
2437 bp.surrounding[j, i] = EClass.scene.elomapActor.elomap.GetTileInfo(base.x - 1 + j, base.y - 1 + i);
2438 }
2439 }
2440 if (text == "Random/R_Shore")
2441 {
2442 base.isBeach = true;
2443 }
2444 }
2445 }
2446 else
2447 {
2448 text = "Random";
2449 }
2450 idProfile = text;
2451 }
2452 return ZoneProfile.Load(text);
2453 }
EloMap elomap
Definition: EloMapActor.cs:7
string idZoneProfile
Definition: EloMap.cs:68
Definition: EloMap.cs:8
TileInfo GetTileInfo(int gx, int gy)
Definition: EloMap.cs:286
Definition: Lang.cs:7
static string[] GetList(string id)
Definition: Lang.cs:113
string idProfile
Definition: Spatial.cs:25
EloMap.TileInfo[,] surrounding
static ZoneProfile Load(string id)
Definition: ZoneProfile.cs:73
virtual string IdProfile
Definition: Zone.cs: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 2147 of file Zone.cs.

2147 : Trait
2148 {
2149 return EClass._map.props.installed.traits.GetRandomThing<T>() as T;
2150 }
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 1622 of file Zone.cs.

1623 {
1624 Point point = null;
1625 if (EClass.rnd(3) == 0 && map.rooms.listRoom.Count > 0)
1626 {
1627 point = map.rooms.listRoom.RandomItem().points.RandomItem();
1628 }
1629 if (point == null && EClass.rnd(4) != 0)
1630 {
1631 IEnumerable<Chara> ie = map.charas.Where((Chara t) => t.trait.ShopType != 0 && t.pos != null && t.pos.IsValid);
1632 if (ie.Count() > 0)
1633 {
1634 point = ie.RandomItem().pos.GetRandomPoint(3);
1635 }
1636 }
1637 if (point == null)
1638 {
1639 point = map.bounds.GetRandomSurface(centered: false, walkable: true, !IsPCFaction && !(this is Zone_Civilized)) ?? map.bounds.GetRandomPoint();
1640 }
1641 return point.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false) ?? EClass._map.GetCenterPos().GetNearestPoint();
1642 }
new TraitChara trait
Definition: Chara.cs:509
Point GetRandomPoint(int radius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=100)
Definition: Point.cs:774
virtual ShopType ShopType
Definition: Trait.cs:532

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

Referenced by GetSpawnPos().

◆ GetRoot()

ICardParent Zone.GetRoot ( )
inline

Implements ICardParent.

Definition at line 2037 of file Zone.cs.

2038 {
2039 return this;
2040 }

◆ GetSoilCost()

int Zone.GetSoilCost ( )
inline

Definition at line 3919 of file Zone.cs.

3920 {
3921 int i = 0;
3922 EClass._map.bounds.ForeachCell(delegate(Cell c)
3923 {
3924 i += c.sourceObj.costSoil;
3925 });
3926 return i / 10;
3927 }

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

3447 {
3448 if (IsPCFaction)
3449 {
3450 return -10000000 + base.uid;
3451 }
3452 if (this is Zone_SubTown)
3453 {
3454 return -8000000 + base.uid;
3455 }
3456 if (this is Zone_Town)
3457 {
3458 return -9000000 + base.uid;
3459 }
3460 if (this is Zone_Civilized)
3461 {
3462 return -7000000 + base.uid;
3463 }
3464 if (this is Zone_RandomDungeon)
3465 {
3466 return 1000000 + base.uid;
3467 }
3468 return base.uid;
3469 }

Referenced by SpatialManager.ListReturnLocations().

◆ GetSpawnPos() [1/2]

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

Definition at line 1441 of file Zone.cs.

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

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

2853 {
2854 Point point = new Point();
2855 for (int i = 0; i < tries; i++)
2856 {
2857 point = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2858 if (!point.IsValid || point.cell.hasDoor || point.IsSync)
2859 {
2860 continue;
2861 }
2862 switch (type)
2863 {
2864 case SpawnPosition.Guest:
2865 {
2866 Room room = point.cell.room;
2867 if (room != null && room.data.accessType != 0)
2868 {
2869 continue;
2870 }
2871 break;
2872 }
2873 case SpawnPosition.Outside:
2874 if (point.cell.HasRoof || point.cell.light > 0)
2875 {
2876 continue;
2877 }
2878 break;
2879 }
2880 return point;
2881 }
2882 return null;
2883 }
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 3697 of file Zone.cs.

3698 {
3699 if (IsRegion)
3700 {
3701 foreach (Spatial child in children)
3702 {
3703 if (!(child is Zone_Field) && _x == child.x && _y == child.y)
3704 {
3705 return child as Zone;
3706 }
3707 }
3708 }
3709 foreach (Spatial child2 in children)
3710 {
3711 if (_x == child2.x && _y == child2.y)
3712 {
3713 return child2 as Zone;
3714 }
3715 }
3716 return null;
3717 }

References Spatial.x, and Spatial.y.

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

◆ GrowPlants()

void Zone.GrowPlants ( VirtualDate  date)
inline

Definition at line 3590 of file Zone.cs.

3591 {
3592 bool num = (EClass.player.isAutoFarming = IsPCFaction && EClass.Branch.policies.IsActive(2707));
3593 int weedChance = 1;
3595 {
3596 weedChance += (EClass.debug.enable ? 100000 : 20) + EClass.Branch.Evalue(2703) * 10;
3597 }
3598 if (date.sunMap == null)
3599 {
3600 date.BuildSunMap();
3601 }
3602 if (num)
3603 {
3604 HashSet<int> hashSet = new HashSet<int>();
3605 foreach (Thing thing in EClass._map.things)
3606 {
3607 if (!thing.IsInstalled || !(thing.trait is TraitSpotFarm traitSpotFarm))
3608 {
3609 continue;
3610 }
3611 foreach (Point item in traitSpotFarm.ListPoints(null, onlyPassable: false))
3612 {
3613 hashSet.Add(item.index);
3614 }
3615 }
3616 Perform(hashSet);
3617 EClass.player.isAutoFarming = false;
3618 Perform(hashSet);
3619 }
3620 else
3621 {
3622 Perform(null);
3623 }
3624 void Perform(HashSet<int> farmMap)
3625 {
3626 bool isWinter = date.IsWinter;
3627 EClass._map.bounds.ForeachCell(delegate(Cell c)
3628 {
3629 if (farmMap != null)
3630 {
3632 {
3633 if (!farmMap.Contains(c.index))
3634 {
3635 return;
3636 }
3637 }
3638 else if (farmMap.Contains(c.index))
3639 {
3640 return;
3641 }
3642 }
3643 if (c.decal != 0 && EClass.rnd(3) == 0)
3644 {
3645 c.decal = 0;
3646 }
3647 if (GrowPlant)
3648 {
3649 if (c.growth != null)
3650 {
3651 bool flag = false;
3652 if (!EClass.player.isAutoFarming && c.growth.HaltGrowth() && (c.IsFarmField || c.IsTopWater) && (!isWinter || !date.IsRealTime))
3653 {
3654 flag = true;
3655 }
3656 PlantData plantData = map.TryGetPlant(c);
3657 if (!flag && (plantData == null || plantData.fert >= 0))
3658 {
3659 c.TryGrow(date);
3660 }
3661 if (isWinter && plantData != null && c.growth != null && c.growth.NeedSunlight && plantData.fert >= 0 && (EClass.rnd(4) == 0 || c.growth.stage.idx == 0))
3662 {
3663 if (date.sunMap == null)
3664 {
3665 date.BuildSunMap();
3666 }
3667 if (!date.sunMap.Contains(c.index) && !c.growth.CanGrow(date))
3668 {
3669 c.growth.Perish();
3670 }
3671 }
3672 }
3673 else if (c.detail != null)
3674 {
3675 c.Things.ForeachReverse(delegate(Thing t)
3676 {
3677 if (t.IsInstalled && t.trait is TraitSeed && !t.isSale)
3678 {
3679 (t.trait as TraitSeed).TrySprout(force: false, sucker: false, date);
3680 }
3681 });
3682 }
3683 else if (EClass.rnd(20) == 0 && GrowWeed && c.CanGrowWeed && EClass.rnd(weedChance) == 0)
3684 {
3685 biome.Populate(c.GetPoint());
3686 if (c.growth != null)
3687 {
3688 c.growth.SetStage(0);
3689 }
3690 }
3691 }
3692 c.isWatered = false;
3693 });
3694 }
3695 }
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:1987
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, if(), Cell.index, PolicyManager.IsActive(), Player.isAutoFarming, Card.IsInstalled, Date.IsWinter, item, GrowSystem.NeedSunlight, EClass.player, FactionBranch.policies, EClass.rnd(), GrowSystem.stage, VirtualDate.sunMap, Map.things, Card.trait, and Map.TryGetPlant().

◆ HasField()

bool Zone.HasField ( int  idEle)
inline

Definition at line 3065 of file Zone.cs.

3066 {
3067 return fieldElements.Has(idEle);
3068 }
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 3337 of file Zone.cs.

3338 {
3339 ZipFile zipFile = ZipFile.Read(path);
3340 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
3341 zipFile.ExtractAll(pathTemp);
3342 zipFile.Dispose();
3343 return IO.LoadFile<ZoneExportData>(pathTemp + "export") ?? new ZoneExportData();
3344 }

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

◆ ImportDialog()

void Zone.ImportDialog ( string  dir = null)
inline

Definition at line 3400 of file Zone.cs.

3401 {
3403 {
3404 string[] array = StandaloneFileBrowser.OpenFilePanel("Import Zone", dir ?? CorePath.ZoneSave, "z", multiselect: false);
3405 if (array.Length != 0)
3406 {
3407 Zone_User zone_User = SpatialGen.Create("user", EClass.world.region, register: true) as Zone_User;
3408 zone_User.path = array[0];
3409 Thing thing = ThingGen.Create("teleporter");
3410 thing.c_uidZone = zone_User.uid;
3411 EClass._zone.AddCard(thing, EClass.pc.pos);
3412 }
3413 });
3414 }
static string[] OpenFilePanel(string title, string directory, string extension, bool multiselect)

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

Referenced by CoreDebug.InitDebugCommands().

◆ IsCrime()

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

◆ IsImportValid()

static bool Zone.IsImportValid ( string  path)
inlinestatic

Definition at line 3416 of file Zone.cs.

3417 {
3418 try
3419 {
3420 return Map.GetMetaData(path)?.IsValidVersion() ?? false;
3421 }
3422 catch (Exception ex)
3423 {
3424 EClass.ui.Say(ex.Message);
3425 return false;
3426 }
3427 }
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 3282 of file Zone.cs.

3283 {
3284 if (landFeats == null)
3285 {
3286 landFeats = new List<int>();
3288 string[] listBase = IDBaseLandFeat.Split(',');
3289 string[] array = listBase;
3290 foreach (string text in array)
3291 {
3292 if (!text.IsEmpty())
3293 {
3294 landFeats.Add(EClass.sources.elements.alias[text].id);
3295 }
3296 }
3297 if (listBase.Length == 1)
3298 {
3299 List<SourceElement.Row> list = EClass.sources.elements.rows.Where(delegate(SourceElement.Row e)
3300 {
3301 if (e.category != "landfeat" || e.chance == 0)
3302 {
3303 return false;
3304 }
3305 bool flag = true;
3306 string[] tag = e.tag;
3307 foreach (string text2 in tag)
3308 {
3309 if (text2.StartsWith("bf"))
3310 {
3311 flag = false;
3312 if (listBase[0] == text2)
3313 {
3314 flag = true;
3315 break;
3316 }
3317 }
3318 }
3319 return flag ? true : false;
3320 }).ToList();
3321 SourceElement.Row row = list.RandomItemWeighted((SourceElement.Row e) => e.chance);
3322 landFeats.Add(row.id);
3323 list.Remove(row);
3324 row = list.RandomItemWeighted((SourceElement.Row e) => e.chance);
3325 landFeats.Add(row.id);
3326 }
3327 Rand.SetSeed();
3328 }
3329 List<Element> list2 = new List<Element>();
3330 foreach (int landFeat in landFeats)
3331 {
3332 list2.Add(Element.Create(landFeat, 1));
3333 }
3334 return list2;
3335 }
static Element Create(int id, int v=0)
Definition: ELEMENT.cs:1121
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 3893 of file Zone.cs.

3894 {
3895 List<Chara> list = new List<Chara>();
3896 foreach (Chara chara in EClass._map.charas)
3897 {
3898 if (chara.c_uidMaster == c.uid && chara.c_minionType == MinionType.Default)
3899 {
3900 list.Add(chara);
3901 }
3902 }
3903 return list;
3904 }

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

◆ ModDevelopment()

void Zone.ModDevelopment ( int  a)
inline

Definition at line 3797 of file Zone.cs.

3798 {
3799 base.development += a;
3800 if (a > 0)
3801 {
3802 Msg.Say("gainDevelopment", Name, a.ToString() ?? "");
3803 }
3804 }

References Msg.Say().

◆ ModInfluence()

void Zone.ModInfluence ( int  a)
inline

Definition at line 3787 of file Zone.cs.

3788 {
3789 base.influence += a;
3790 if (a > 0)
3791 {
3792 Msg.Say("gainInfluence", Name, a.ToString() ?? "");
3793 }
3794 Tutorial.Reserve("influence");
3795 }

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

1234 {
1235 if (!(id == "startVillage2"))
1236 {
1237 return;
1238 }
1239 if (EClass._map.version.IsBelow(0, 23, 226))
1240 {
1241 SetBGM(121, refresh: false);
1242 }
1243 int num = 0;
1244 foreach (Chara chara in EClass._map.charas)
1245 {
1246 if (chara.id == "cat_silver" && !chara.IsPCFaction)
1247 {
1248 num++;
1249 }
1250 }
1251 if (num > 0)
1252 {
1253 Msg.Say("num_silvercat", num.ToString() ?? "");
1254 }
1255 }
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 1277 of file Zone.cs.

1278 {
1279 }

Referenced by GameDate.AdvanceHour().

◆ OnAfterCreate()

override void Zone.OnAfterCreate ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 617 of file Zone.cs.

618 {
619 if (AddPrefix)
620 {
621 if (GetTopZone() == this)
622 {
623 base.idPrefix = EClass.sources.zoneAffixes.rows.RandomItem().id;
624 }
625 else
626 {
627 base.idPrefix = GetTopZone().idPrefix;
628 }
629 }
630 }
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 1273 of file Zone.cs.

1274 {
1275 }

Referenced by OnVisit().

◆ OnBeforeDeactivate()

virtual void Zone.OnBeforeDeactivate ( )
inlinevirtual

Reimplemented in Zone_Tent.

Definition at line 1257 of file Zone.cs.

1258 {
1259 }

Referenced by Deactivate().

◆ OnBeforeSimulate()

virtual void Zone.OnBeforeSimulate ( )
inlinevirtual

Reimplemented in Zone_DungeonPuppy, and Zone_Nymelle.

Definition at line 1265 of file Zone.cs.

1266 {
1267 }

Referenced by OnVisit().

◆ OnChildNumChange()

void Zone.OnChildNumChange ( Card  c)
inline

Implements ICardParent.

Definition at line 2033 of file Zone.cs.

2034 {
2035 }

◆ OnCreate()

override void Zone.OnCreate ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 611 of file Zone.cs.

612 {
613 events.zone = this;
614 base.lv = StartLV;
615 }
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 2463 of file Zone.cs.

2464 {
2465 }

Referenced by CreateBP().

◆ OnDeactivate()

virtual void Zone.OnDeactivate ( )
inlinevirtual

Definition at line 1261 of file Zone.cs.

1262 {
1263 }

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

2686 {
2688 {
2689 foreach (Chara chara in EClass._map.charas)
2690 {
2691 if (!chara.IsGlobal && chara.hostility < Hostility.Neutral && chara.OriginalHostility < Hostility.Friend)
2692 {
2693 Hostility hostility2 = (chara.c_originalHostility = Hostility.Neutral);
2694 chara.hostility = hostility2;
2695 }
2696 }
2697 }
2698 if (PrespawnRate != 0f && !IsSkyLevel)
2699 {
2700 for (int i = 0; i < (int)((float)MaxSpawn * PrespawnRate); i++)
2701 {
2702 SpawnMob();
2703 }
2704 }
2709 }
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:2738
void TryGenerateShrine()
Definition: Zone.cs:2795
void TryGenerateOre()
Definition: Zone.cs:2711
virtual bool MakeEnemiesNeutral
Definition: Zone.cs:238
void TryGenerateBigDaddy()
Definition: Zone.cs:2758

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

2849 {
2850 }

Referenced by MapGenDungen.OnGenerateTerrain().

◆ OnInspect()

void Zone.OnInspect ( )
inline

Implements IInspect.

Definition at line 3442 of file Zone.cs.

3443 {
3444 }

◆ OnKillGame()

void Zone.OnKillGame ( )
inline

Definition at line 1796 of file Zone.cs.

1797 {
1798 foreach (Thing thing in map.things)
1799 {
1800 if (thing.renderer.hasActor)
1801 {
1802 thing.renderer.KillActor();
1803 }
1804 }
1805 }
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 1983 of file Zone.cs.

1984 {
1985 if (branch != null)
1986 {
1987 branch.SetOwner(this);
1988 }
1989 events.OnLoad(this);
1990 }
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 1229 of file Zone.cs.

1230 {
1231 }

Referenced by Activate().

◆ OnSimulateDay()

void Zone.OnSimulateDay ( VirtualDate  date)
inline

Definition at line 3555 of file Zone.cs.

3556 {
3557 if (base.IsPlayerFaction)
3558 {
3559 branch.OnSimulateDay(date);
3560 }
3561 }
void OnSimulateDay(VirtualDate date)

References FactionBranch.OnSimulateDay().

Referenced by VirtualDate.SimulateDay().

◆ OnSimulateHour()

void Zone.OnSimulateHour ( VirtualDate  date)
inline

Definition at line 3500 of file Zone.cs.

3501 {
3502 if (base.IsPlayerFaction)
3503 {
3504 branch.OnSimulateHour(date);
3505 }
3507 if (date.IsRealTime)
3508 {
3509 foreach (Thing thing in EClass._map.things)
3510 {
3511 if (thing.IsInstalled)
3512 {
3513 thing.trait.TryToggle();
3514 }
3515 }
3517 }
3518 EClass._map.things.ForeachReverse(delegate(Thing t)
3519 {
3520 t.OnSimulateHour(date);
3521 });
3522 foreach (Thing sucker in Suckers)
3523 {
3524 sucker.Destroy();
3525 }
3526 Suckers.Clear();
3527 if (RespawnRate != 0f)
3528 {
3529 int num = 0;
3530 foreach (Chara chara in map.charas)
3531 {
3532 if (!chara.IsGlobal)
3533 {
3534 num++;
3535 }
3536 }
3537 if (num < MaxRespawn)
3538 {
3539 for (int i = 0; i < RespawnPerHour; i++)
3540 {
3541 SpawnMob();
3542 }
3543 }
3544 }
3545 if (!date.IsRealTime && EClass.rnd(24) == 0)
3546 {
3547 RainWater();
3548 }
3549 if (date.hour == 6)
3550 {
3551 GrowPlants(date);
3552 }
3553 }
virtual void OnSimulateHour(VirtualDate date)
Definition: Card.cs:7025
void DecayNatural(int hour=1)
Definition: Card.cs:7034
int hour
Definition: Date.cs:74
void OnSimulateHour(VirtualDate date)
virtual void TryToggle()
Definition: Trait.cs:1321
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:3590
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 3563 of file Zone.cs.

3564 {
3565 if (base.IsPlayerFaction)
3566 {
3567 branch.OnSimulateMonth(date);
3568 }
3569 if (date.IsRealTime)
3570 {
3572 }
3573 }
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 1130 of file Zone.cs.

1131 {
1132 if (EClass.world.date.IsExpired(base.dateRevive))
1133 {
1135 Revive();
1136 List<Chara> list = new List<Chara>();
1137 foreach (Chara chara in EClass._map.charas)
1138 {
1139 chara.TryRestock(onCreate: false);
1140 if (!chara.IsPCFaction)
1141 {
1142 chara.c_fur = 0;
1143 }
1144 if (chara.IsMinion && chara.master != null && !chara.master.IsPCParty)
1145 {
1146 list.Add(chara);
1147 }
1148 }
1149 foreach (Chara item in list)
1150 {
1151 item.Destroy();
1152 }
1153 }
1154 if (!EClass.game.isLoading)
1155 {
1157 }
1160 events.OnVisit();
1161 OnActivate();
1162 UpdateQuests();
1164 isSimulating = true;
1165 Simulate();
1166 isSimulating = false;
1168 if (EClass.Branch != null)
1169 {
1171 }
1172 base.lastActive = EClass.world.date.GetRaw();
1173 if (!EClass.game.isLoading)
1174 {
1175 base.visitCount++;
1176 }
1177 base.version = EClass.core.version.GetInt();
1178 if (fieldElements.dict.Count() > 0)
1179 {
1180 Tutorial.Reserve("field");
1181 }
1182 }
Version version
Definition: BaseCore.cs:17
void TryRestock(bool onCreate)
Definition: Chara.cs:4921
Dictionary< int, Element > dict
void OnAfterSimulate()
void AssignCharas()
Definition: RoomManager.cs:39
void Revive()
Definition: Zone.cs:1195
void RefreshDeathSentense()
Definition: Zone.cs:1184
void Simulate()
Definition: Zone.cs:1281
virtual void OnAfterSimulate()
Definition: Zone.cs:1273
void RefreshCriminal()
Definition: Zone.cs:3728
virtual void OnBeforeSimulate()
Definition: Zone.cs:1265
virtual void OnActivate()
Definition: Zone.cs:1233
void ResetHostility()
Definition: Zone.cs:2832
void UpdateQuests(bool force=false)
Definition: Zone.cs:3806
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_Aquli, and Zone_Yowyn.

Definition at line 1269 of file Zone.cs.

1270 {
1271 }

Referenced by Activate().

◆ ParseZoneFullName()

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

Definition at line 548 of file Zone.cs.

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

References item, zoneId, and zoneType.

◆ RainWater()

void Zone.RainWater ( )
inline

Definition at line 3575 of file Zone.cs.

3576 {
3578 {
3579 return;
3580 }
3581 EClass._map.bounds.ForeachCell(delegate(Cell c)
3582 {
3583 if (c.IsFarmField && !c.HasRoof)
3584 {
3585 c.isWatered = true;
3586 }
3587 });
3588 }
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 3203 of file Zone.cs.

3204 {
3206 {
3207 return;
3208 }
3210 Playlist playlist = map.plDay;
3211 foreach (ZoneEvent item in events.list)
3212 {
3213 if (item.playlist != null)
3214 {
3215 playlist = item.playlist;
3216 }
3217 }
3218 if (IDPlaylistOverwrite != null)
3219 {
3220 playlist = EClass.Sound.GetPlaylist(IDPlaylistOverwrite);
3221 }
3223 {
3224 Room room = EClass.pc.pos.cell.room;
3225 if (room != null && room.lot != null && room.lot.idBGM != 0)
3226 {
3227 playlist = EClass.Sound.plLot;
3228 if (playlist.list[0].data?.id != room.lot.idBGM)
3229 {
3230 playlist.list[0].data = EClass.core.refs.dictBGM.TryGetValue(room.lot.idBGM);
3231 playlist.Reset();
3232 if (!LayerDrama.keepBGM)
3233 {
3234 EClass.Sound.StopBGM(1f);
3235 }
3236 }
3237 }
3238 }
3240 EClass.Sound.SwitchPlaylist(playlist, !LayerDrama.keepBGM);
3241 }
bool IsInActiveZone
Definition: Chara.cs:885
void SetBGMInterval()
Definition: CoreConfig.cs:1020
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 3728 of file Zone.cs.

3729 {
3730 bool flag = EClass.player.IsCriminal && HasLaw && !AllowCriminal && !IsPCFaction;
3731 Hostility hostility = (flag ? Hostility.Neutral : Hostility.Friend);
3732 foreach (Chara chara in EClass._map.charas)
3733 {
3734 if (chara.trait is TraitGuard)
3735 {
3736 chara.hostility = hostility;
3737 if (!flag && chara.enemy != null && chara.enemy.IsPCParty)
3738 {
3739 chara.SetEnemy();
3740 }
3741 }
3742 }
3743 }
Chara enemy
Definition: Chara.cs:86
Chara SetEnemy(Chara c=null)
Definition: Chara.cs:6619
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 1184 of file Zone.cs.

1185 {
1186 foreach (Chara chara in EClass._map.charas)
1187 {
1188 if (chara.HasCondition<ConDeathSentense>())
1189 {
1190 chara.GetCondition<ConDeathSentense>().TryRemove();
1191 }
1192 }
1193 }
bool HasCondition(string alias)
Definition: Chara.cs:9916

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

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

◆ RefreshElectricity()

void Zone.RefreshElectricity ( )
inline

Definition at line 3075 of file Zone.cs.

3076 {
3077 dirtyElectricity = false;
3078 bool flag = GetSoilCost() > MaxSoil;
3079 base.electricity = elements.Value(2201) * 10 + BaseElectricity;
3080 foreach (Thing thing in EClass._map.things)
3081 {
3082 if (thing.IsInstalled && thing.trait.Electricity != 0 && (thing.isOn || thing.trait.Electricity > 0))
3083 {
3084 base.electricity += thing.trait.Electricity;
3085 }
3086 }
3087 if (!flag)
3088 {
3089 EClass._map.bounds.ForeachCell(delegate(Cell c)
3090 {
3091 if (c.sourceObj.id == 118 && c.growth.IsMature)
3092 {
3093 base.electricity += 20;
3094 }
3095 });
3096 }
3097 foreach (Thing thing2 in EClass._map.things)
3098 {
3099 if (thing2.IsInstalled)
3100 {
3101 thing2.trait.TryToggle();
3102 }
3103 }
3104 }
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 1120 of file Zone.cs.

1121 {
1122 if (idHat != null && EClass.world.date.IsExpired(base.dateHat))
1123 {
1124 idHat = null;
1125 base.dateHat = 0;
1126 }
1127 sourceHat = ((idHat != null) ? EClass.sources.cards.map[idHat] : ((IDHat != null) ? EClass.sources.cards.map[IDHat] : null));
1128 }
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 3745 of file Zone.cs.

3746 {
3747 if (base.lv != 0)
3748 {
3749 return;
3750 }
3751 dictCitizen.Clear();
3752 foreach (Chara item in map.charas.Concat(map.deadCharas))
3753 {
3754 if (item.trait.IsCitizen && !item.IsGlobal && !item.isSubsetCard)
3755 {
3756 dictCitizen[item.uid] = item.Name;
3757 }
3758 }
3759 }
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 3187 of file Zone.cs.

3188 {
3189 if (map.plDay == null)
3190 {
3191 map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList));
3192 }
3193 }

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

2127 {
2128 if (IsActiveZone)
2129 {
2131 }
2132 t.parent = null;
2133 if (t.isChara)
2134 {
2135 t.Chara.currentZone = null;
2136 }
2137 if (t.isThing && !t.trait.IDActorEx.IsEmpty())
2138 {
2140 }
2141 if (t.renderer.hasActor)
2142 {
2144 }
2145 }
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 2832 of file Zone.cs.

2833 {
2834 foreach (Chara chara in EClass._map.charas)
2835 {
2836 if (!chara.source.hostility.IsEmpty() && chara.source.hostility.ToEnum<Hostility>() >= Hostility.Friend && !chara.IsPCFactionOrMinion)
2837 {
2838 chara.c_originalHostility = (Hostility)0;
2839 }
2840 chara.hostility = chara.OriginalHostility;
2841 if (chara.enemy != null && (chara.enemy.IsPCFaction || chara.IsPCFaction))
2842 {
2843 chara.SetEnemy();
2844 }
2845 }
2846 }
bool IsPCFactionOrMinion
Definition: Card.cs:2342
SourceChara.Row source
Definition: Chara.cs:162

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

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

◆ ResetPlaylist()

void Zone.ResetPlaylist ( )
inline

Definition at line 3195 of file Zone.cs.

3196 {
3197 map._plDay.Clear();
3198 UnityEngine.Object.DestroyImmediate(map.plDay);
3199 map.plDay = null;
3201 }

References Map._plDay, and Map.plDay.

◆ Revive()

void Zone.Revive ( )
inline

Definition at line 1195 of file Zone.cs.

1196 {
1197 base.dateRevive = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRevive;
1198 if (ShouldAutoRevive)
1199 {
1200 foreach (Chara deadChara in map.deadCharas)
1201 {
1202 if (deadChara.trait.CanAutoRevive && deadChara.CanRevive())
1203 {
1204 deadChara.Revive();
1206 {
1207 deadChara.RemoveBacker();
1208 }
1209 EClass._zone.AddCard(deadChara, (deadChara.orgPos != null && deadChara.orgPos.IsInBounds) ? deadChara.orgPos : deadChara.pos);
1210 }
1211 }
1212 }
1213 foreach (Chara value in EClass.game.cards.globalCharas.Values)
1214 {
1215 if (value.isDead && value.CanRevive() && value.homeZone == this)
1216 {
1217 value.Revive();
1218 Point point = GetSpawnPos(value);
1219 if (value.orgPos != null && value.orgPos.IsInBounds)
1220 {
1221 point = value.orgPos.GetNearestPoint() ?? point;
1222 }
1223 EClass._zone.AddCard(value, point);
1224 }
1225 }
1226 map.deadCharas.Clear();
1227 }
int c_idBacker
Definition: Card.cs:1477
bool CanRevive()
Definition: Chara.cs:5393
void Revive(Point p=null, bool msg=false)
Definition: Chara.cs:5419
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 3761 of file Zone.cs.

3762 {
3763 base.isAlarmSet = enable;
3764 if (enable)
3765 {
3766 foreach (Chara chara in EClass._map.charas)
3767 {
3768 if (!chara.IsPCFactionOrMinion)
3769 {
3770 chara.SetHostility(Hostility.Enemy);
3771 }
3772 }
3773 Msg.Say("alarm");
3774 Msg.Say("alarm2");
3775 SE.Play("alarm");
3776 return;
3777 }
3778 foreach (Chara chara2 in EClass._map.charas)
3779 {
3780 if (!chara2.IsPCFactionOrMinion)
3781 {
3782 chara2.SetHostility(Hostility.Neutral);
3783 }
3784 }
3785 }
Chara SetHostility(Hostility h)
Definition: Chara.cs:1505

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

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

◆ SetBGM() [1/2]

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

Definition at line 3182 of file Zone.cs.

3183 {
3184 SetBGM(new List<int> { id }, refresh, fadeDuration);
3185 }

◆ SetBGM() [2/2]

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

Definition at line 3145 of file Zone.cs.

3146 {
3147 map._plDay.Clear();
3148 if (ids.Count > 0)
3149 {
3150 foreach (int id in ids)
3151 {
3152 if (id != -1)
3153 {
3154 map._plDay.Add(id);
3155 }
3156 }
3157 }
3158 UnityEngine.Object.DestroyImmediate(map.plDay);
3159 map.plDay = null;
3161 if (!refresh)
3162 {
3163 return;
3164 }
3165 if (fadeDuration > 0f)
3166 {
3167 EClass.Sound.StopBGM(fadeDuration, playLastBGM: false, delegate
3168 {
3170 {
3171 RefreshBGM();
3172 }
3173 });
3174 }
3175 else
3176 {
3177 EClass.Sound.StopBGM();
3178 RefreshBGM();
3179 }
3180 }
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 3070 of file Zone.cs.

3071 {
3072 fieldElements.SetBase(idEle, a);
3073 }
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 583 of file Zone.cs.

584 {
585 return false;
586 }

Referenced by SerializedCards.Restore().

◆ Simulate()

void Zone.Simulate ( )
inline

Definition at line 1281 of file Zone.cs.

1282 {
1283 if (!EClass.game.isLoading && base.visitCount > 0)
1284 {
1285 if (Boss != null && IsNefia)
1286 {
1287 Msg.Say("bossLeave", Boss.Name.ToTitleCase(), EClass._zone.Name);
1290 }
1291 int num = Mathf.Clamp(MinsSinceLastActive, 1, 10000);
1292 foreach (Chara chara2 in EClass._map.charas)
1293 {
1294 if (chara2.hp < 0)
1295 {
1296 chara2.hp = 0;
1297 }
1298 if (!chara2.IsPCParty)
1299 {
1300 if (chara2.mana.value < 0)
1301 {
1302 chara2.mana.value = 0;
1303 }
1304 if (chara2.stamina.value < 0)
1305 {
1306 chara2.stamina.value = 0;
1307 }
1308 }
1309 if (num > 60)
1310 {
1311 chara2.resistCon = null;
1312 }
1313 if (chara2.rarity >= Rarity.Legendary && !chara2.IsPCFaction && num > 0)
1314 {
1315 Msg.ignoreAll = true;
1316 chara2.Cure(CureType.Boss, 20 + num * 10);
1317 chara2.HealHP((int)((long)Mathf.Max(1, chara2.MaxHP) * (long)Mathf.Min(num, 20) / 20));
1318 chara2.mana.Mod(Mathf.Max(1, chara2.mana.max) * Mathf.Min(num, 20) / 20);
1319 chara2.stamina.Mod(Mathf.Max(1, chara2.stamina.max) * Mathf.Min(num, 20) / 20);
1320 Msg.ignoreAll = false;
1321 }
1322 }
1323 }
1324 Debug.Log("Last Active:" + base.lastActive);
1325 if (base.lastActive == 0 || HourSinceLastActive <= 1 || IsRegion)
1326 {
1327 return;
1328 }
1329 Debug.Log(Name + " Simulate:" + HourSinceLastActive + " hours");
1330 VirtualDate virtualDate = new VirtualDate(HourSinceLastActive);
1331 List<Chara> list = EClass._map.charas.ToList();
1332 int num2 = HourSinceLastActive / 24;
1333 int num3 = 0;
1334 if (num2 > 0)
1335 {
1336 foreach (Chara item in list)
1337 {
1338 if (!item.IsPCParty)
1339 {
1340 item.OnSleep(200, num2);
1341 if (item.conSleep != null)
1342 {
1343 item.conSleep.Kill();
1344 }
1345 if (EClass.rnd(EClass.world.date.IsNight ? 20 : 200) == 0 && !item.IsPCFaction)
1346 {
1347 item.AddCondition<ConSleep>(1000 + EClass.rnd(1000), force: true);
1348 }
1349 if (item.things.Count > 20)
1350 {
1351 item.ClearInventory(ClearInventoryType.Purge);
1352 }
1353 }
1354 }
1355 }
1356 VirtualDate.current = virtualDate;
1357 for (int i = 0; i < HourSinceLastActive; i++)
1358 {
1359 virtualDate.SimulateHour();
1360 if (!virtualDate.IsWinter)
1361 {
1362 num3++;
1363 }
1364 }
1365 EClass._map.things.ForeachReverse(delegate(Thing t)
1366 {
1368 });
1369 VirtualDate.current = null;
1370 if (!IsPCFaction)
1371 {
1372 return;
1373 }
1374 int num4 = 0;
1375 foreach (Chara item2 in list)
1376 {
1377 if (item2.IsPCParty)
1378 {
1379 continue;
1380 }
1381 if (!item2.IsHomeMember())
1382 {
1383 if (item2.id == "bee")
1384 {
1385 num4++;
1386 }
1387 if (num2 > 0 && item2.IsGuest())
1388 {
1389 item2.ChooseNewGoal();
1390 item2.ai.SimulateZone(num2);
1391 }
1392 continue;
1393 }
1394 if (num2 > 0)
1395 {
1396 Goal goalWork = item2.GetGoalWork();
1397 item2.SetAI(goalWork);
1398 if (goalWork is GoalWork)
1399 {
1400 (goalWork as GoalWork).FindWork(item2);
1401 }
1402 item2.ai.SimulateZone(num2);
1403 goalWork = item2.GetGoalHobby();
1404 item2.SetAI(goalWork);
1405 if (goalWork is GoalWork)
1406 {
1407 (goalWork as GoalWork).FindWork(item2);
1408 }
1409 item2.ai.SimulateZone(num2);
1410 }
1411 item2.ChooseNewGoal();
1412 if (item2.conSuspend == null)
1413 {
1414 item2.ai.OnSimulatePosition();
1415 }
1416 }
1417 List<Thing> list2 = new List<Thing>();
1418 foreach (Thing thing in map.things)
1419 {
1420 if (thing.IsInstalled && thing.trait is TraitBeekeep)
1421 {
1422 list2.Add(thing);
1423 }
1424 }
1425 if (num4 >= list2.Count)
1426 {
1427 return;
1428 }
1429 for (int j = num4; j < list2.Count; j++)
1430 {
1431 if (EClass.rnd(200) <= HourSinceLastActive)
1432 {
1433 Chara chara = CharaGen.Create("bee");
1434 AddCard(chara, list2.RandomItem().pos);
1435 Hostility c_originalHostility = (chara.hostility = Hostility.Neutral);
1436 chara.c_originalHostility = c_originalHostility;
1437 }
1438 }
1439 }
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:4181
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:9306
override int MaxHP
Definition: Chara.cs:726
Goal GetGoalHobby()
Definition: Chara.cs:9319
Stats mana
Definition: Chara.cs:1213
Stats stamina
Definition: Chara.cs:1205
bool IsHomeMember()
Definition: Chara.cs:6915
bool IsGuest()
Definition: Chara.cs:6940
void ChooseNewGoal()
Definition: Chara.cs:9242
void Cure(CureType type, int p=100, BlessedState state=BlessedState.Normal)
Definition: Chara.cs:10008
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 2646 of file Zone.cs.

2647 {
2649 {
2650 if (r.points.Count <= 4)
2651 {
2652 return false;
2653 }
2654 map.poiMap.OccyupyPOI(r.points[0]);
2655 List<Point> points = r.points;
2656 Religion randomReligion = EClass.game.religions.GetRandomReligion();
2657 "altarPoint".lang(randomReligion.NameDomain.lang());
2658 Thing thing = ThingGen.Create("altar");
2659 (thing.trait as TraitAltar).SetDeity(randomReligion.id);
2660 Chara t = CharaGen.Create("twintail");
2661 EClass._zone.AddCard(t, points.RandomItem());
2662 for (int i = 0; i < 2 + EClass.rnd(2); i++)
2663 {
2664 Chara t2 = CharaGen.Create("twintail");
2665 EClass._zone.AddCard(t2, points.RandomItem());
2666 }
2667 if (points[0].Installed == null)
2668 {
2669 EClass._zone.AddCard(thing, points[0]).Install();
2670 }
2671 foreach (Point item in points)
2672 {
2673 if (item.x % 3 == 0 && item.z % 2 == 0 && item != points[0] && !item.Equals(points[0].Front) && item.Installed == null)
2674 {
2675 thing = ThingGen.Create("pillar1");
2676 EClass._zone.AddCard(thing, item).Install();
2677 }
2678 item.SetObj();
2679 item.SetFloor(3, 6);
2680 }
2681 return true;
2682 });
2683 }
$ Installed
Definition: ModManager.cs:306
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 3929 of file Zone.cs.

3930 {
3931 for (int i = 0; i < 2 + EClass.rnd(4); i++)
3932 {
3933 Point point = GetPos();
3934 if (point == null)
3935 {
3936 continue;
3937 }
3938 if (EClass.rnd(30) == 0)
3939 {
3940 Thing thing = ThingGen.Create("purse");
3941 thing.isLostProperty = true;
3942 thing.things.DestroyAll();
3943 int num2 = (thing.c_lockLv = EClass.rndHalf(Mathf.Min(base.development / 10 + 10, 50)));
3944 thing.Add("money", EClass.rndHalf(num2 * 60 + 1000));
3945 if (EClass.rnd(2) == 0)
3946 {
3947 thing.Add("plat", EClass.rnd(4));
3948 }
3949 else
3950 {
3951 thing.Add("medal", EClass.rnd(2));
3952 }
3953 EClass._zone.AddCard(thing, point);
3954 }
3955 else
3956 {
3958 }
3959 }
3960 static Point GetPos()
3961 {
3962 for (int j = 0; j < 10; j++)
3963 {
3964 Point randomPoint = EClass._zone.bounds.GetRandomPoint();
3965 if (!randomPoint.IsBlocked && !randomPoint.HasThing && !randomPoint.HasObj && !randomPoint.HasBlock)
3966 {
3967 return randomPoint;
3968 }
3969 }
3970 return null;
3971 }
3972 }
ThingContainer things
Definition: Card.cs:39
Thing Add(string id, int num=1, int lv=1)
Definition: Card.cs:3250
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 2893 of file Zone.cs.

2894 {
2895 if (setting == null)
2896 {
2898 }
2899 if (pos == null)
2900 {
2901 pos = GetSpawnPos(setting.position, setting.tries);
2902 if (pos == null)
2903 {
2904 pos = GetSpawnPos(SpawnPosition.Random, setting.tries);
2905 if (pos == null)
2906 {
2907 return null;
2908 }
2909 }
2910 }
2912 if (IsUnderwater && EClass.rnd(15) != 0)
2913 {
2915 }
2916 SpawnList spawnList = null;
2917 if (setting.idSpawnList != null)
2918 {
2919 spawnList = SpawnList.Get(setting.idSpawnList);
2920 }
2921 else if (EClass._zone is Zone_DungeonYeek && EClass.rnd(5) != 0)
2922 {
2923 spawnList = SpawnListChara.Get("dungeon_yeek", (SourceChara.Row r) => r.race == "yeek" && r.quality == 0);
2924 }
2925 else if (EClass._zone is Zone_DungeonDragon && EClass.rnd(5) != 0)
2926 {
2927 spawnList = SpawnListChara.Get("dungeon_dragon", (SourceChara.Row r) => (r.race == "dragon" || r.race == "drake" || r.race == "wyvern" || r.race == "lizardman" || r.race == "dinosaur") && r.quality == 0);
2928 }
2929 else if (EClass._zone is Zone_DungeonMino && EClass.rnd(5) != 0)
2930 {
2931 spawnList = SpawnListChara.Get("dungeon_mino", (SourceChara.Row r) => r.race == "minotaur" && r.quality == 0);
2932 }
2933 else if (setting.hostility == SpawnHostility.Neutral || (setting.hostility != SpawnHostility.Enemy && Rand.Range(0f, 1f) < ChanceSpawnNeutral))
2934 {
2935 spawnList = SpawnList.Get(IsInstance ? "c_neutral_war" : "c_neutral");
2936 }
2937 else if (biome.spawn.chara.Count > 0)
2938 {
2939 string randomCharaId = biome.spawn.GetRandomCharaId();
2940 spawnList = ((!IsInstance) ? SpawnList.Get(randomCharaId) : SpawnList.Get("instance_" + randomCharaId, randomCharaId, new CharaFilter
2941 {
2942 ShouldPass = (SourceChara.Row s) => (!(s.hostility != "") || (!s.tag.Contains("cat") && !s.race_row.tag.Contains("cat"))) ? true : false
2943 }));
2944 }
2945 else
2946 {
2947 spawnList = SpawnList.Get(biome.name, "chara", new CharaFilter
2948 {
2949 ShouldPass = delegate(SourceChara.Row s)
2950 {
2951 if (s.hostility != "")
2952 {
2953 return false;
2954 }
2955 return s.biome == biome.name || s.biome.IsEmpty();
2956 }
2957 });
2958 }
2959 int num = ((setting.dangerLv == -1) ? DangerLv : setting.dangerLv);
2960 CardBlueprint cardBlueprint = new CardBlueprint
2961 {
2962 rarity = Rarity.Normal,
2963 idEle = setting.idEle
2964 };
2965 int num2 = ((setting.filterLv == -1) ? num : setting.filterLv);
2966 if (ScaleType == ZoneScaleType.Void)
2967 {
2968 num2 = ((num - 1) % 50 + 5) * 150 / 100;
2969 if (num2 >= 20 && EClass.rnd(100) < num2)
2970 {
2971 num2 = num;
2972 }
2973 }
2974 CardRow cardRow = (setting.id.IsEmpty() ? spawnList.Select(num2, setting.levelRange) : EClass.sources.cards.map[setting.id]);
2975 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)
2976 {
2977 cardRow = EClass.sources.cards.map["santa"];
2979 }
2980 long num3 = ((setting.fixedLv == -1) ? cardRow.LV : setting.fixedLv);
2981 bool flag = setting.fixedLv != -1 || DangerLvBoost > 0;
2982 num3 += setting.addLv;
2983 if (ScaleType == ZoneScaleType.Void)
2984 {
2985 num3 = (50L + (long)cardRow.LV) * Mathf.Max(1, (num - 1) / 50);
2986 flag = true;
2987 }
2988 num3 += DangerLvBoost;
2989 if (setting.rarity == Rarity.Random && cardRow.quality == 0)
2990 {
2991 if (EClass.rnd(EClass.pc.HasElement(1271) ? 80 : 100) == 0)
2992 {
2993 cardBlueprint.rarity = Rarity.Legendary;
2994 num3 = num3 * 125 / 100;
2995 }
2996 }
2997 else
2998 {
2999 cardBlueprint.rarity = setting.rarity;
3000 }
3001 if (setting.isBoss)
3002 {
3003 num3 = num3 * 150 / 100;
3004 }
3005 if (setting.isEvolved)
3006 {
3007 num3 = num3 * 2 + 20;
3008 }
3009 if (num3 != cardRow.LV)
3010 {
3011 cardBlueprint.lv = (int)Mathf.Min(num3, 100000000f);
3012 }
3013 CardBlueprint.Set(cardBlueprint);
3014 Chara chara = CharaGen.Create(cardRow.id, num2);
3015 if (!flag)
3016 {
3017 chara.isScaled = false;
3018 }
3019 AddCard(chara, pos);
3020 if (setting.forcedHostility.HasValue)
3021 {
3022 Hostility c_originalHostility = (chara.hostility = setting.forcedHostility.Value);
3023 chara.c_originalHostility = c_originalHostility;
3024 }
3025 else
3026 {
3027 switch (chara.id)
3028 {
3029 case "unicorn":
3030 if (EClass.pc.HasElement(1216) && EClass.pc.Evalue(418) < 1)
3031 {
3032 chara.SetHostility(Hostility.Enemy);
3033 }
3034 break;
3035 case "santa":
3036 case "silverwolf":
3037 case "twintail":
3038 case "test17":
3039 if (EClass.pc.HasElement(1270))
3040 {
3041 chara.SetHostility(Hostility.Friend);
3042 }
3043 else if (EClass.pc.HasElement(1271))
3044 {
3045 chara.SetHostility(Hostility.Enemy);
3046 }
3047 break;
3048 }
3049 }
3050 if (setting.isBoss)
3051 {
3052 chara.c_bossType = BossType.Boss;
3053 }
3054 if (setting.isEvolved)
3055 {
3056 chara.c_bossType = BossType.Evolved;
3057 }
3058 if (DangerLv >= 20 && !IsPCFaction && !IsTown && EClass.rnd(200) == 0)
3059 {
3061 }
3062 return chara;
3063 }
BossType
Definition: BossType.cs:2
SpawnHostility
ZoneScaleType
Definition: ZoneScaleType.cs:2
List< SpawnListChara > chara
string GetRandomCharaId()
static void Set(CardBlueprint _bp=null)
int quality
Definition: CardRow.cs:19
string id
Definition: CardRow.cs:7
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6336
BiomeProfile biome
Definition: Cell.cs:1087
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:9751
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, BiomeProfile.Spawns.chara, EClass.core, SpawnSetting.Default, SpawnListChara.Get(), SpawnList.Get(), BiomeProfile.Spawns.GetRandomCharaId(), Rand.Range(), Core.refs, EClass.rnd(), CoreRef.Biomes.Sand, BiomeProfile.spawn, and CoreRef.Biomes.Water.

◆ SpawnMob() [2/2]

◆ TextLevel()

string Zone.TextLevel ( int  _lv)
inline

Definition at line 598 of file Zone.cs.

599 {
600 if (_lv != 0)
601 {
602 if (base.lv <= 0)
603 {
604 return " " + "zoneLevelB".lang((_lv * -1).ToString() ?? "");
605 }
606 return " " + "zoneLevel".lang((_lv + 1).ToString() ?? "");
607 }
608 return "";
609 }
override string ToString()
Definition: Zone.cs:593

References ToString().

◆ ToString()

override string Zone.ToString ( )
inline

Definition at line 593 of file Zone.cs.

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

2327 {
2328 int num = 0;
2329 if (p.cell.detail != null)
2330 {
2331 foreach (Thing thing in p.cell.detail.things)
2332 {
2333 if (thing.placeState == PlaceState.roaming)
2334 {
2335 if (target.TryStackTo(thing))
2336 {
2337 return true;
2338 }
2339 num++;
2340 }
2341 }
2342 }
2343 if (num == 0 || !destroyIfFail)
2344 {
2345 EClass._zone.AddCard(target, p);
2346 return true;
2347 }
2348 target.Destroy();
2349 return false;
2350 }
bool TryStackTo(Thing to)
Definition: Card.cs:3571
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 2229 of file Zone.cs.

2230 {
2231 Thing dest = null;
2232 int priority = -1;
2233 ContainerFlag flag = t.category.GetRoot().id.ToEnum<ContainerFlag>();
2234 if (flag == ContainerFlag.none)
2235 {
2236 flag = ContainerFlag.other;
2237 }
2238 if (containers == null)
2239 {
2240 containers = EClass._map.props.installed.containers;
2241 }
2242 if (SearchDest() != null)
2243 {
2244 return true;
2245 }
2246 if (dest == null)
2247 {
2248 return false;
2249 }
2250 if (add)
2251 {
2252 if (msg)
2253 {
2254 chara.Say("putSharedItem", chara, t, dest.GetName(NameStyle.Full));
2255 }
2256 dest.AddThing(t);
2257 }
2258 return true;
2259 Thing SearchDest()
2260 {
2261 foreach (Thing container in containers)
2262 {
2263 Thing thing = container;
2264 if (thing.trait is TraitShippingChest)
2265 {
2267 }
2268 if ((!sharedOnly || thing.IsSharedContainer) && thing.c_lockLv <= 0 && (thing.things.Count < thing.things.MaxCapacity || thing.things.CanStack(t) != t))
2269 {
2270 Window.SaveData windowSaveData = thing.GetWindowSaveData();
2271 if (windowSaveData != null)
2272 {
2273 if (windowSaveData.priority <= priority || (windowSaveData.noRotten && t.IsDecayed) || (windowSaveData.onlyRottable && t.trait.Decay == 0))
2274 {
2275 continue;
2276 }
2278 if (windowSaveData.userFilter)
2279 {
2280 filterResult = windowSaveData.IsFilterPass(t.GetName(NameStyle.Full, 1));
2281 if (filterResult == Window.SaveData.FilterResult.Block)
2282 {
2283 continue;
2284 }
2285 }
2286 if (filterResult != Window.SaveData.FilterResult.PassWithoutFurtherTest)
2287 {
2288 if (windowSaveData.advDistribution)
2289 {
2290 bool flag2 = false;
2291 foreach (int cat in windowSaveData.cats)
2292 {
2293 if (t.category.uid == cat)
2294 {
2295 flag2 = true;
2296 break;
2297 }
2298 }
2299 if (!flag2)
2300 {
2301 continue;
2302 }
2303 }
2304 else if (windowSaveData.flag.HasFlag(flag))
2305 {
2306 continue;
2307 }
2308 }
2309 priority = windowSaveData.priority;
2310 }
2311 else
2312 {
2313 if (priority != -1)
2314 {
2315 continue;
2316 }
2317 priority = 0;
2318 }
2319 dest = thing;
2320 }
2321 }
2322 return null;
2323 }
2324 }
ContainerFlag
Definition: ContainerFlag.cs:5
NameStyle
Definition: NameStyle.cs:2
Thing container_shipping
Definition: CardManager.cs:52
bool IsDecayed
Definition: Card.cs:2357
int c_lockLv
Definition: Card.cs:991
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:3273
Window.SaveData GetWindowSaveData()
Definition: Card.cs:2649
SourceCategory.Row category
Definition: Card.cs:2101
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7272
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 2152 of file Zone.cs.

2152 : Trait
2153 {
2154 Thing randomThing = EClass._map.props.installed.traits.GetRandomThing<T>();
2155 if (randomThing == null)
2156 {
2158 return false;
2159 }
2160 if (useContainer && (!t.IsContainer || t.things.Count == 0))
2161 {
2162 List<Thing> list = new List<Thing>();
2163 foreach (Point item in randomThing.trait.ListPoints(null, onlyPassable: false))
2164 {
2165 foreach (Card item2 in item.ListCards())
2166 {
2167 if (item2.IsContainer && !(item2.trait is TraitDeliveryChest))
2168 {
2169 list.Add(item2.Thing);
2170 }
2171 }
2172 }
2173 if (TryAddThingInSharedContainer(t, list, add: true, msg: false, null, sharedOnly: false))
2174 {
2175 return true;
2176 }
2177 }
2178 AddCard(t, randomThing.trait.GetRandomPoint());
2179 return true;
2180 }
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:864
Point GetRandomPoint(Func< Point, bool > func=null, Chara accessChara=null)
Definition: Trait.cs:846
bool TryAddThingInSharedContainer(Thing t, List< Thing > containers=null, bool add=true, bool msg=false, Chara chara=null, bool sharedOnly=true)
Definition: Zone.cs:2229

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

2759 {
2760 if (!(BigDaddyChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f) <= EClass.rndf(1f)))
2761 {
2762 Point spawnPos = GetSpawnPos(SpawnPosition.Random, 10000);
2763 List<string> list = new List<string> { "big_daddy", "big_daddy2" };
2764 list.Shuffle();
2765 Spawn(list[0], spawnPos);
2766 if (EClass.rnd(EClass.debug.enable ? 2 : 20) == 0)
2767 {
2768 Spawn(list[1], spawnPos.GetNearestPoint(allowBlock: false, allowChara: false));
2769 }
2770 Msg.Say("sign_bigdaddy");
2771 }
2772 void Spawn(string id, Point pos)
2773 {
2774 int num = (int)((long)DangerLv * 125L / 100);
2775 if (num >= 30)
2776 {
2778 {
2779 lv = num
2780 });
2781 }
2782 Chara chara = CharaGen.Create(id);
2783 if (EClass.pc.HasElement(1270))
2784 {
2785 chara.SetHostility(Hostility.Friend);
2786 }
2787 else if (EClass.pc.HasElement(1271))
2788 {
2789 chara.SetHostility(Hostility.Enemy);
2790 }
2791 EClass._zone.AddCard(chara, pos);
2792 }
2793 }
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 2738 of file Zone.cs.

2739 {
2740 float num = EvolvedChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f);
2741 if (!force && num <= EClass.rndf(1f))
2742 {
2743 return null;
2744 }
2745 Chara chara = SpawnMob(p, SpawnSetting.Evolved());
2746 for (int i = 0; i < 2 + EClass.rnd(2); i++)
2747 {
2748 chara.ability.AddRandom();
2749 }
2750 chara.AddThing(chara.MakeGene(DNA.Type.Default));
2751 if (EClass.rnd(2) == 0)
2752 {
2753 chara.AddThing(chara.MakeGene(DNA.Type.Superior));
2754 }
2755 return chara;
2756 }
void AddRandom()
Thing MakeGene(DNA.Type? type=null)
Definition: Chara.cs:8599
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 2711 of file Zone.cs.

2712 {
2713 if (OreChance <= 0f)
2714 {
2715 return;
2716 }
2717 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)
2718 {
2719 byte b = 18;
2720 string group = "ore";
2721 if (EClass.rnd(5) == 0)
2722 {
2723 b++;
2724 group = "gem";
2725 }
2726 SourceMaterial.Row randomMaterial = MATERIAL.GetRandomMaterial(DangerLv, group);
2727 foreach (Point point in r.points)
2728 {
2729 if (point.sourceBlock.ContainsTag("ore"))
2730 {
2731 map.SetObj(point.x, point.z, randomMaterial.id, b, 1, 0);
2732 }
2733 }
2734 return false;
2735 });
2736 }
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 2795 of file Zone.cs.

2796 {
2797 float num = ShrineChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f);
2798 for (int i = 0; i < 3; i++)
2799 {
2800 Rand.SetSeed(base.uid + i);
2801 if (num <= EClass.rndf(1f))
2802 {
2803 continue;
2804 }
2805 Point randomSpace = EClass._map.GetRandomSpace(3, 3);
2806 if (randomSpace == null)
2807 {
2808 continue;
2809 }
2810 randomSpace.x++;
2811 randomSpace.z++;
2812 if (randomSpace.HasThing || randomSpace.HasChara)
2813 {
2814 continue;
2815 }
2816 randomSpace.SetObj();
2819 if (EClass.rnd(EClass.debug.test ? 2 : 15) == 0)
2820 {
2821 EClass._zone.AddCard(ThingGen.Create("pedestal_power"), randomSpace).Install();
2822 EClass._zone.AddCard(ThingGen.Create(EClass.gamedata.godStatues.RandomItemWeighted((GodStatueData a) => a.chance).idThing, -1, DangerLv), randomSpace).Install();
2823 }
2824 else
2825 {
2826 EClass._zone.AddCard(ThingGen.Create("statue_power", -1, DangerLv), randomSpace).Install().SetRandomDir();
2827 }
2828 }
2829 Rand.SetSeed();
2830 }
void SetRandomDir()
Definition: Card.cs:6656
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:934
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 2368 of file Zone.cs.

2368 : TraitSpot
2369 {
2370 List<T> list = new List<T>();
2371 foreach (Thing thing2 in EClass._map.things)
2372 {
2373 if (thing2.IsInstalled && thing2.trait is T)
2374 {
2375 list.Add(thing2.trait as T);
2376 }
2377 }
2378 foreach (T item in list)
2379 {
2380 foreach (Point item2 in item.ListPoints(null, onlyPassable: false))
2381 {
2382 foreach (Thing thing3 in item2.Things)
2383 {
2384 if (!thing3.IsInstalled || thing3.isSale)
2385 {
2386 continue;
2387 }
2388 if (thing3.things.Count == 0)
2389 {
2390 if (IsValid(thing3, insideContainer: false))
2391 {
2392 return thing3;
2393 }
2394 continue;
2395 }
2396 Thing thing = thing3.things.Find((Thing _t) => IsValid(_t, insideContainer: true));
2397 if (thing != null)
2398 {
2399 return thing;
2400 }
2401 }
2402 }
2403 }
2404 return null;
2405 bool IsValid(Thing t, bool insideContainer)
2406 {
2407 if (t.category.id != idCat || !TraitSalesTag.CanTagSale(t, insideContainer))
2408 {
2409 return false;
2410 }
2411 return true;
2412 }
2413 }
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 2352 of file Zone.cs.

2353 {
2354 foreach (Thing container in EClass._map.props.installed.containers)
2355 {
2356 if (container.IsSharedContainer)
2357 {
2358 Thing thing = container.things.Find(func);
2359 if (thing != null)
2360 {
2361 return thing;
2362 }
2363 }
2364 }
2365 return null;
2366 }

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

2182 : TraitSpot
2183 {
2184 List<T> list = new List<T>();
2185 List<Thing> list2 = new List<Thing>();
2186 foreach (Thing thing in EClass._map.things)
2187 {
2188 if (thing.IsInstalled && thing.trait is T)
2189 {
2190 list.Add(thing.trait as T);
2191 }
2192 }
2193 foreach (T item in list)
2194 {
2195 foreach (Point item2 in item.ListPoints(null, onlyPassable: false))
2196 {
2197 foreach (Thing thing2 in item2.Things)
2198 {
2199 if (!thing2.IsInstalled)
2200 {
2201 continue;
2202 }
2203 if (thing2.things.Count == 0)
2204 {
2205 if (IsValid(thing2))
2206 {
2207 list2.Add(thing2);
2208 }
2209 continue;
2210 }
2211 foreach (Thing item3 in thing2.things.List((Thing _t) => IsValid(_t)))
2212 {
2213 list2.Add(item3);
2214 }
2215 }
2216 }
2217 }
2218 return list2;
2219 bool IsValid(Thing t)
2220 {
2221 if (func != null && !func(t))
2222 {
2223 return false;
2224 }
2225 return true;
2226 }
2227 }
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 2612 of file Zone.cs.

2613 {
2614 bool flag = EClass.pc.HasCondition<ConDrawBacker>();
2615 if (!EClass.debug.enable && EClass.rnd(flag ? 3 : 20) != 0)
2616 {
2617 return;
2618 }
2619 Point randomSurface = EClass._map.bounds.GetRandomSurface();
2620 if (!randomSurface.IsValid)
2621 {
2622 return;
2623 }
2624 Chara c = CharaGen.Create("follower");
2625 EClass._zone.AddCard(c, randomSurface);
2626 (EClass._zone.AddThing("gallows", randomSurface).Install().trait as TraitShackle).Restrain(c);
2627 c.c_rescueState = RescueState.WaitingForRescue;
2628 if (EClass.rnd(flag ? 1 : 2) == 0 || EClass.debug.enable)
2629 {
2631 if (row != null)
2632 {
2633 c.ApplyBacker(row.id);
2634 }
2635 }
2636 Religion faith = EClass.game.religions.dictAll.Values.Where((Religion a) => a != c.faith).RandomItem();
2637 for (int i = 0; i < 3 + EClass.rnd(4); i++)
2638 {
2639 Chara chara = CharaGen.Create("fanatic");
2640 chara.SetFaith(faith);
2641 Point point = randomSurface.GetRandomPoint(4) ?? randomSurface.GetNearestPoint();
2642 EClass._zone.AddCard(chara, point);
2643 }
2644 }
RescueState
Definition: RescueState.cs:2
static int indexFollower
Religion faith
Definition: Chara.cs:443
void SetFaith(string id)
Definition: Chara.cs:1776
Dictionary< string, Religion > dictAll
List< Row > listFollower

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

Referenced by Generate().

◆ UnloadMap()

void Zone.UnloadMap ( )
inline

Definition at line 1807 of file Zone.cs.

1808 {
1809 map = null;
1810 if (bp != null)
1811 {
1812 bp.map = null;
1813 }
1814 if (branch != null)
1815 {
1817 }
1818 Debug.Log("Unloaded Map:" + this);
1819 }
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 3806 of file Zone.cs.

3807 {
3808 if (!IsPCFaction && (!(this is Zone_Town) || base.lv != 0))
3809 {
3810 return;
3811 }
3812 Debug.Log("Updating Quest:" + force);
3813 List<SourceQuest.Row> list = EClass.sources.quests.rows.Where((SourceQuest.Row a) => a.group == "random").ToList();
3814 int num = 0;
3815 foreach (Chara item in map.charas.Concat(map.deadCharas))
3816 {
3817 if (item.quest != null && !EClass.game.quests.list.Contains(item.quest))
3818 {
3819 if (item.quest.IsExpired || completedQuests.Contains(item.quest.uid) || force)
3820 {
3821 item.quest = null;
3822 }
3823 else
3824 {
3825 num++;
3826 }
3827 }
3828 }
3829 if (EClass._zone.dateQuest > EClass.world.date.GetRaw() && !force)
3830 {
3831 return;
3832 }
3833 EClass._zone.dateQuest = EClass.world.date.GetRaw() + 1440;
3834 int maxQuest = 3;
3835 Rand.UseSeed(base.uid + EClass.player.stats.days / 7 % 100, delegate
3836 {
3837 maxQuest = 4 + EClass.rnd(4);
3838 });
3839 completedQuests.Clear();
3840 List<Zone> list2 = Quest.ListDeliver();
3841 List<Tuple<string, int>> listTag = new List<Tuple<string, int>>();
3842 string[] array = EClass._zone.source.questTag;
3844 {
3845 array = new string[9] { "supply/8", "deliver/7", "food/8", "escort/4", "deliver/4", "monster/0", "war/0", "farm/0", "music/0" };
3846 }
3847 string[] array2 = array;
3848 for (int i = 0; i < array2.Length; i++)
3849 {
3850 string[] array3 = array2[i].Split('/');
3851 listTag.Add(new Tuple<string, int>(array3[0], array3[1].ToInt()));
3852 }
3853 for (int j = 0; j < map.charas.Count * 2; j++)
3854 {
3855 if (num > maxQuest)
3856 {
3857 break;
3858 }
3859 if (num > 15)
3860 {
3861 break;
3862 }
3863 Chara chara = map.charas.RandomItem();
3864 if (!chara.trait.CanGiveRandomQuest || chara.isSubsetCard || chara.homeZone != EClass._zone || chara.IsGuest() || chara.memberType == FactionMemberType.Livestock || (chara.quest != null && !force))
3865 {
3866 continue;
3867 }
3868 SourceQuest.Row row = list.RandomItemWeighted(delegate(SourceQuest.Row a)
3869 {
3870 int num2 = 1;
3871 foreach (Tuple<string, int> item2 in listTag)
3872 {
3873 if (a.tags.Contains(item2.Item1))
3874 {
3875 num2 = item2.Item2;
3876 break;
3877 }
3878 }
3879 if (!EClass._zone.IsPCFaction && a.tags.Contains("bulk"))
3880 {
3881 num2 = 0;
3882 }
3883 return a.chance * num2;
3884 });
3885 if ((!row.tags.Contains("needDestZone") || list2.Count >= 2) && (row.minFame <= 0 || row.minFame < EClass.player.fame || EClass.debug.enable))
3886 {
3887 Quest.Create(row.id, null, chara);
3888 num++;
3889 }
3890 }
3891 }
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 3438 of file Zone.cs.

3439 {
3440 }

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

◆ zoneId

string string Zone.zoneId
static

Definition at line 548 of file Zone.cs.

Referenced by ParseZoneFullName().

◆ zoneType

string Zone.zoneType
static

Definition at line 548 of file Zone.cs.

Referenced by ParseZoneFullName().

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

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

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: