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

Classes

class  PortalReturnData
 

Public Member Functions

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

Static Public Member Functions

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

Public Attributes

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

Static Public Attributes

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

Properties

Chara Boss [get, set]
 
override int ContentLv [get]
 
override int DangerLv [get]
 
virtual bool DisableRooms [get]
 
int HourSinceLastActive [get]
 
int MinsSinceLastActive [get]
 
virtual string pathExport [get]
 
BiomeProfile biome [get]
 
virtual string IdBiome [get]
 
virtual string IDGenerator [get]
 
virtual string TextWidgetDate [get]
 
MapGenerator Generator [get]
 
virtual string IdProfile [get]
 
virtual string IDPlayList [get]
 
virtual string IDPlaylistOverwrite [get]
 
virtual string IDHat [get]
 
virtual string IDBaseLandFeat [get]
 
virtual string idExport [get]
 
string pathTemp [get]
 
Region Region [get]
 
Zone ParentZone [get]
 
virtual ActionMode DefaultActionMode [get]
 
virtual bool BlockBorderExit [get]
 
virtual int ExpireDays [get]
 
virtual ZoneTransition.EnterState RegionEnterState [get]
 
virtual ZoneFeatureType FeatureType [get]
 
virtual string IDAmbience [get]
 
virtual string IDSceneTemplate [get]
 
virtual bool IsFestival [get]
 
virtual string IDSubset [get]
 
virtual bool IsTown [get]
 
virtual bool CanBeDeliverDestination [get]
 
virtual bool CountDeepestLevel [get]
 
virtual bool HasLaw [get]
 
virtual bool 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 1834 of file Zone.cs.

1835 {
1836 if (CanDestroy())
1837 {
1838 Debug.Log("Deleting Zone:" + this);
1839 if (!destryoed)
1840 {
1841 Destroy();
1842 }
1843 }
1844 else if (map != null)
1845 {
1846 Debug.Log("Saving Zone:" + this);
1847 map.Save(base.pathSave);
1848 if (!base.isMapSaved)
1849 {
1850 base.isMapSaved = true;
1851 IO.DeleteDirectory(base.pathSave + "Texture Replace");
1852 IO.CopyDir(pathTemp + "Texture Replace", base.pathSave + "/Texture Replace");
1853 }
1854 if (!IsActiveZone)
1855 {
1856 UnloadMap();
1857 }
1858 }
1859 }
Definition: IO.cs:11
static void DeleteDirectory(string path)
Definition: IO.cs:353
static void CopyDir(string sourceDirectory, string targetDirectory, Func< string, bool > funcExclude=null)
Definition: IO.cs:245
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:1775
override void Destroy()
Definition: Zone.cs:1870
bool IsActiveZone
Definition: Zone.cs:492
void UnloadMap()
Definition: Zone.cs:1691
string pathTemp
Definition: Zone.cs:158
Map map
Definition: Zone.cs:60

References Debug, and Map.Save().

◆ AbandonZone()

void Zone.AbandonZone ( )
inline

Definition at line 1759 of file Zone.cs.

1760 {
1761 FactionBranch destBranch = ((EClass.pc.homeBranch == branch) ? EClass.game.StartZone.branch : EClass.pc.homeBranch);
1762 branch.members.ForeachReverse(delegate(Chara m)
1763 {
1764 destBranch.AddMemeber(m);
1765 if (!m.IsPCParty)
1766 {
1767 m.MoveZone(destBranch.owner);
1768 }
1769 });
1771 SetMainFaction(null);
1772 base.dateExpire = EClass.world.date.GetRaw() + 10080;
1773 }
Definition: Chara.cs:10
override bool IsPCParty
Definition: Chara.cs:613
FactionBranch homeBranch
Definition: Chara.cs:1064
void MoveZone(string alias)
Definition: Chara.cs:3296
int GetRaw(int offsetHours=0)
Definition: Date.cs:322
Definition: EClass.cs:5
static Game game
Definition: EClass.cs:8
static World world
Definition: EClass.cs:40
static FactionBranch Branch
Definition: EClass.cs:22
static Chara pc
Definition: EClass.cs:14
void OnUnclaimZone()
List< Chara > members
void AddMemeber(Chara c)
Zone StartZone
Definition: Game.cs:274
virtual void SetMainFaction(Faction f)
Definition: Spatial.cs:646
GameDate date
Definition: World.cs:6
FactionBranch branch
Definition: Zone.cs:34

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

◆ Activate()

void Zone.Activate ( )
inline

Definition at line 588 of file Zone.cs.

589 {
590 if (IsRegion)
591 {
593 }
594 isStarted = (isSimulating = false);
595 base.isKnown = true;
596 EClass.game.config.reverseSnow = false;
598 {
599 Msg.Say("regenerateZone", Name);
600 ClearZones();
601 if (EClass.pc.global.transition != null)
602 {
603 EClass.pc.global.transition.uidLastZone = 0;
604 }
605 }
607 if (EClass.game.activeZone != null)
608 {
610 }
611 EClass.game.activeZone = this;
612 ZoneExportData zoneExportData = null;
613 Debug.Log(NameWithLevel + "/" + id + "/" + base.uid + "/" + base.isGenerated + "/" + IsLoaded + "/" + File.Exists(base.pathSave + "map"));
614 if (base.isGenerated && !IsLoaded && !File.Exists(base.pathSave + "map"))
615 {
616 Debug.Log("(Bug) File does not exist:" + destryoed + "/" + base.pathSave);
617 base.isGenerated = false;
618 }
619 bool flag = false;
620 Debug.Log(idCurrentSubset + "/" + IDSubset);
621 bool flag2 = idCurrentSubset != IDSubset || forceSubset != null;
622 if (flag2 && map != null)
623 {
624 UnloadMap();
625 }
626 Debug.Log(idExport + "/" + File.Exists(pathExport) + "/" + pathExport);
627 if (!base.isGenerated && (idExport.IsEmpty() || !File.Exists(pathExport)))
628 {
629 Debug.Log("generating random map");
630 flag = true;
631 base.dateExpire = EClass.world.date.GetRaw() + 1440 * ExpireDays;
632 Generate();
634 if (instance != null)
635 {
637 }
638 if (!UseFog)
639 {
640 map.ForeachCell(delegate(Cell c)
641 {
642 c.isSeen = true;
643 });
644 }
645 if (!(bp is GameBlueprint))
646 {
648 }
649 }
650 else if (IsLoaded)
651 {
652 Debug.Log("zone is already loaded");
653 map.SetZone(this);
654 EClass.core.textures.ApplyLocalReplace(base.isMapSaved ? base.pathSave : pathTemp);
656 }
657 else
658 {
659 subset = null;
660 bool flag3 = (base.isGenerated && flag2) || (base.isGenerated && !IsInstance && !IsPCFaction && ShouldRegenerate && EClass.world.date.IsExpired(base.dateRegenerate)) || forceRegenerate;
661 if (pathExport.IsEmpty() || !File.Exists(pathExport) || EClass.game.isLoading || EClass.player.simulatingZone)
662 {
663 flag3 = false;
664 flag2 = false;
665 }
666 Debug.Log(base.isGenerated + "/" + flag3 + "/" + flag2 + "/" + IDSubset);
667 if (!base.isGenerated || flag3 || flag2)
668 {
669 Debug.Log("importing map:" + pathExport);
670 flag = true;
671 base.dateRegenerate = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRegenerateZone;
672 if (!flag3)
673 {
674 IO.DeleteDirectory(pathTemp + "Texture Replace");
675 Debug.Log(pathTemp);
676 }
677 try
678 {
679 zoneExportData = Import(pathExport);
680 base.isGenerated = true;
681 isImported = true;
682 if (flag3)
683 {
684 zoneExportData.orgMap = GameIO.LoadFile<Map>(base.pathSave + "map");
685 }
686 }
687 catch (Exception message)
688 {
689 Debug.Log(message);
690 zoneExportData = Import(CorePath.ZoneSave + "fail.z");
691 base.isGenerated = true;
692 isImported = true;
693 }
694 }
696 Debug.Log("loading map: imported? " + isImported + " regenerate? " + flag3);
697 map = GameIO.LoadFile<Map>((isImported ? pathTemp : base.pathSave) + "map");
698 if (map == null)
699 {
700 EClass.ui.Say("System.IO.EndOfStreamException: Unexpected end of stream:" + Environment.NewLine + "File may be corrupted. Try replacing the following file if you have a backup:" + Environment.NewLine + (isImported ? pathTemp : base.pathSave) + "map");
701 return;
702 }
703 map.SetZone(this);
704 map.Load(isImported ? pathTemp : base.pathSave, isImported);
706 EClass.core.textures.ApplyLocalReplace(base.isMapSaved ? base.pathSave : pathTemp);
707 if (isImported)
708 {
709 map.deadCharas.Clear();
710 map.OnImport(zoneExportData);
711 if (UseFog && !flag3)
712 {
713 map.ForeachCell(delegate(Cell c)
714 {
715 c.isSeen = false;
716 });
717 }
718 if (zoneExportData.orgMap != null)
719 {
720 Map orgMap = zoneExportData.orgMap;
721 List<Chara> serializedCharas = map.serializedCharas;
722 map.charas = orgMap.charas;
723 map.serializedCharas = orgMap.serializedCharas;
724 map.deadCharas = orgMap.deadCharas;
725 byte[] array = orgMap.TryLoadFile(base.pathSave, "flags", EClass._map.Size * EClass._map.Size);
726 if (array != null && array.Length == EClass._map.Size * EClass._map.Size)
727 {
728 for (int i = 0; i < EClass._map.Size; i++)
729 {
730 for (int j = 0; j < EClass._map.Size; j++)
731 {
732 map.cells[i, j].isSeen = array[i * EClass._map.Size + j].GetBit(1);
733 }
734 }
735 }
736 foreach (Chara item in serializedCharas)
737 {
738 Debug.Log("Importing New Chara:" + item.id + "/" + item.Name + "/" + item.orgPos);
740 }
741 map.things.ForeachReverse(delegate(Thing t)
742 {
743 if (t.trait is TraitNewZone || t.trait is TraitPowerStatue)
744 {
745 foreach (Thing thing in orgMap.things)
746 {
747 if (t.id == thing.id && t.pos.Equals(thing.pos))
748 {
749 if (t.trait is TraitNewZone)
750 {
751 RemoveCard(t);
752 map.things.Insert(0, thing);
753 thing.stackOrder = 0;
754 }
755 else
756 {
757 t.ChangeMaterial(thing.material);
758 t.isOn = thing.isOn;
759 }
760 break;
761 }
762 }
763 return;
764 }
765 if (t.trait is TraitStairsLocked)
766 {
767 foreach (Thing thing2 in orgMap.things)
768 {
769 if (thing2.trait is TraitNewZone && t.pos.Equals(thing2.pos))
770 {
771 RemoveCard(t);
772 map.things.Add(thing2);
773 break;
774 }
775 }
776 return;
777 }
778 if (t.id == "medal" || t.id == "856")
779 {
780 foreach (Thing thing3 in orgMap.things)
781 {
782 if (t.id == thing3.id && t.pos.Equals(thing3.pos))
783 {
784 return;
785 }
786 }
787 RemoveCard(t);
788 }
789 });
790 foreach (KeyValuePair<int, int> item2 in EClass._map.backerObjs.ToList())
791 {
792 EClass._map.GetCell(item2.Key);
793 SourceBacker.Row row = EClass.sources.backers.map[item2.Value];
795 {
796 map.backerObjs.Remove(item2.Key);
797 }
798 }
799 foreach (Chara serializedChara in map.serializedCharas)
800 {
801 if (serializedChara.orgPos != null && serializedChara.orgPos.IsValid)
802 {
803 serializedChara.pos.Set(serializedChara.orgPos);
804 }
805 }
806 foreach (Thing thing4 in orgMap.things)
807 {
808 if (thing4.trait is TraitTent && !thing4.isNPCProperty)
809 {
810 thing4.AddEditorTag(EditorTag.NoNpcProperty);
811 thing4.isSubsetCard = false;
812 map.things.Add(thing4);
813 Debug.Log(thing4);
814 }
815 }
816 }
817 }
818 foreach (Thing thing5 in map.things)
819 {
820 map.AddCardOnActivate(thing5);
821 }
822 foreach (Chara c3 in map.serializedCharas)
823 {
824 if (c3.c_uidMaster == 0 || EClass.player.listSummon.Find((Chara c2) => c2.uid == c3.uid) == null)
825 {
826 map.charas.Add(c3);
828 }
829 }
830 map.serializedCharas.Clear();
831 if (isImported && IsTown)
832 {
834 }
837 map.OnLoad();
838 if (flag3)
839 {
840 foreach (Card item3 in map.Cards.ToList())
841 {
842 if (item3.isSubsetCard)
843 {
844 item3.Destroy();
845 }
846 }
847 }
848 if (isImported)
849 {
851 if (idCurrentSubset != null)
852 {
854 subset.Apply();
855 }
856 }
857 if (isImported)
858 {
860 {
861 foreach (Thing thing6 in map.things)
862 {
863 thing6.isNPCProperty = !thing6.isHidden && !thing6.HasEditorTag(EditorTag.NoNpcProperty);
864 }
865 }
866 else
867 {
868 foreach (Thing thing7 in map.things)
869 {
870 thing7.isNPCProperty = false;
871 }
872 }
874 if (instance != null)
875 {
877 }
878 }
879 if (isImported && !flag3 && !RevealRoom)
880 {
881 foreach (Room item4 in map.rooms.listRoom)
882 {
883 if (!item4.HasRoof || item4.data.atrium)
884 {
885 continue;
886 }
887 foreach (Point point2 in item4.points)
888 {
889 point2.cell.isSeen = false;
890 }
891 }
892 }
893 if (flag3)
894 {
895 OnRegenerate();
896 }
897 }
898 PathManager.Instance._pathfinder.PunishChangeDirection = false;
899 isImported = false;
900 if (this is Zone_Tent && IsUnderwater)
901 {
902 EClass._map.config.idSceneProfile = "indoor_water";
903 EClass.scene.profile = SceneProfile.Load(EClass._map.config.idSceneProfile);
904 }
905 if (flag && IsTown && base.lv == 0)
906 {
908 }
909 if (base.visitCount == 0)
910 {
911 base.dateRevive = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRevive;
912 }
913 map.ForeachCell(delegate(Cell c)
914 {
915 if (c.HasFire)
916 {
917 map.effectManager.GetOrCreate(c.GetSharedPoint());
918 }
919 if (IsRegion)
920 {
921 c.decal = 0;
922 }
923 });
925 {
926 RainWater();
927 }
929 {
930 map.ForeachCell(delegate(Cell c)
931 {
932 c.isSeen = true;
933 });
934 }
935 isStarted = true;
936 Map.isDirtySunMap = true;
938 if (events.listPreEnter.Count > 0)
939 {
940 foreach (ZonePreEnterEvent item5 in events.listPreEnter)
941 {
942 item5.Execute();
943 }
944 events.listPreEnter.Clear();
945 }
946 foreach (Card card in map.Cards)
947 {
948 card.CalculateFOV();
949 if (card.isChara)
950 {
951 Chara chara = card.Chara;
952 chara.dirtySpeed = true;
953 if (!card.isDyed && card.HasTag(CTAG.random_color))
954 {
955 card.DyeRandom();
956 }
957 if (card.IsUnique && !card.IsPCFaction && !card.IsPCParty)
958 {
959 Point point = chara.orgPos ?? card.pos;
960 card.c_uniqueData = new UniqueData
961 {
962 x = point.x,
963 y = point.z,
964 uidZone = base.uid
965 };
966 }
967 int @int = card.GetInt(55);
968 if (@int != 0)
969 {
970 foreach (Chara chara2 in map.charas)
971 {
972 if (chara2.uid == @int)
973 {
974 if (chara.IsHostile(chara2))
975 {
976 chara.enemy = chara2;
977 chara.SetAI(new GoalCombat());
978 chara.calmCheckTurn = 20 + EClass.rnd(30);
979 }
980 break;
981 }
982 }
983 card.SetInt(55);
984 }
985 chara.SyncRide();
986 if (card.c_uidMaster != 0 && chara.master == null)
987 {
988 chara.FindMaster();
989 }
990 if (!EClass.game.isLoading)
991 {
992 chara.enemy = null;
993 if (chara.IsInCombat)
994 {
995 chara.SetNoGoal();
996 }
997 }
998 }
999 else if (card.IsInstalled && card.trait is TraitDoor traitDoor && card.pos.HasChara && !traitDoor.IsOpen())
1000 {
1001 traitDoor.ToggleDoor(sound: false, refresh: false);
1002 }
1003 }
1004 RefreshHat();
1005 forceRegenerate = false;
1006 forceSubset = null;
1007 EClass.ui.OnActivateZone();
1009 EClass.Sound.LoadAmbience(IDAmbience);
1010 if (EClass.Branch != null)
1011 {
1013 }
1014 OnVisit();
1015 if (flag)
1016 {
1018 }
1020 if (IsPCFaction)
1021 {
1022 EClass.player.uidLastTown = 0;
1023 }
1024 else if (IsTown && base.lv == 0)
1025 {
1026 EClass.player.uidLastTown = base.uid;
1027 }
1028 RefreshBGM();
1029 Rand.InitBytes(map.seed + 1);
1031 okaerinko = 0;
1032 if (EClass.debug.enable)
1033 {
1034 ModInfluence(2000);
1035 }
1036 if (this is Zone_TinkerCamp)
1037 {
1038 Tutorial.Reserve("tinker");
1039 }
1040 else if (this is Zone_Town && !(this is Zone_SubTown))
1041 {
1042 Tutorial.Reserve("town");
1043 }
1044 }
CTAG
Definition: CTAG.cs:2
EditorTag
Definition: EditorTag.cs:2
if(item3.idFile==idFirstFile &&item3.id==idFirstTopic)
Definition: UIBook.cs:627
void Add(Act a, string s="")
Definition: ActPlan.cs:11
bool atrium
Definition: AreaData.cs:66
AreaData data
Definition: BaseArea.cs:29
PointList points
Definition: BaseArea.cs:26
Definition: Card.cs:11
string id
Definition: Card.cs:35
bool isNPCProperty
Definition: Card.cs:554
bool isSubsetCard
Definition: Card.cs:746
int c_uidMaster
Definition: Card.cs:1449
void AddEditorTag(EditorTag tag)
Definition: Card.cs:2593
Point pos
Definition: Card.cs:59
int uid
Definition: Card.cs:122
Trait trait
Definition: Card.cs:53
void Destroy()
Definition: Card.cs:4996
bool HasEditorTag(EditorTag tag)
Definition: Card.cs:2588
Definition: Cell.cs:7
bool isSeen
Definition: Cell.cs:282
bool HasFire
Definition: Cell.cs:676
AIAct SetNoGoal()
Definition: Chara.cs:8653
bool IsInCombat
Definition: Chara.cs:862
AIAct SetAI(AIAct g)
Definition: Chara.cs:8658
Point orgPos
Definition: Chara.cs:21
GlobalData global
Definition: Chara.cs:76
Chara master
Definition: Chara.cs:88
Chara FindMaster()
Definition: Chara.cs:2363
void SyncRide()
Definition: Chara.cs:3857
bool IsHostile()
Definition: Chara.cs:6419
bool ignoreBackerDestoryFlag
Definition: CoreConfig.cs:558
bool revealMap
Definition: CoreDebug.cs:154
bool enable
Definition: CoreDebug.cs:286
static string ZoneSave
Definition: CorePath.cs:196
TextureManager textures
Definition: Core.cs:45
CoreConfig config
Definition: Core.cs:70
bool IsExpired(int time)
Definition: Date.cs:332
static Scene scene
Definition: EClass.cs:30
static Core core
Definition: EClass.cs:6
static Map _map
Definition: EClass.cs:18
static int rnd(long a)
Definition: EClass.cs:58
static SourceManager sources
Definition: EClass.cs:42
static Player player
Definition: EClass.cs:12
static CoreDebug debug
Definition: EClass.cs:48
static SoundManager Sound
Definition: EClass.cs:46
static UI ui
Definition: EClass.cs:16
static GameSetting setting
Definition: EClass.cs:34
void Initialize(EloMap _elomap)
Definition: EloMapActor.cs:28
void OnActivateZone()
Definition: GameIO.cs:10
BalanceSetting balance
Definition: GameSetting.cs:309
bool isLoading
Definition: Game.cs:238
int countLoadedMaps
Definition: Game.cs:232
Zone activeZone
Definition: Game.cs:248
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:2346
Cell GetCell(int index)
Definition: Map.cs:887
IEnumerable< Card > Cards
Definition: Map.cs:135
void AddCardOnActivate(Card c)
Definition: Map.cs:783
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:535
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:708
void OnImport(ZoneExportData data)
Definition: Map.cs:714
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:546
List< Chara > charas
Definition: Map.cs:81
void RefreshAllTiles()
Definition: Map.cs:2108
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
HashSet< int > doneBackers
Definition: Player.cs:1070
List< Chara > listSummon
Definition: Player.cs:1218
bool simulatingZone
Definition: Player.cs:1176
Definition: Point.cs:9
Point Set(int _x, int _z)
Definition: Point.cs:491
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
bool IsValid
Definition: Point.cs:88
Definition: Rand.cs:4
static void InitBytes(int a)
Definition: Rand.cs:11
Definition: Region.cs:7
EloMap elomap
Definition: Region.cs:8
List< Room > listRoom
Definition: RoomManager.cs:13
Definition: Room.cs:4
bool HasRoof
Definition: Room.cs:29
static SceneProfile Load(string id)
Definition: SceneProfile.cs:18
void RebuildActorEx()
Definition: Scene.cs:986
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()
bool isSimulating
Definition: Zone.cs:72
void RefreshElectricity()
Definition: Zone.cs:2847
ZoneExportData Import(string path)
Definition: Zone.cs:3122
void Generate()
Definition: Zone.cs:2340
ZoneEventManager events
Definition: Zone.cs:40
static string forceSubset
Definition: Zone.cs:27
virtual bool RegenerateOnEnter
Definition: Zone.cs:262
static int okaerinko
Definition: Zone.cs:31
virtual string idExport
Definition: Zone.cs:147
virtual bool MakeTownProperties
Definition: Zone.cs:242
virtual void OnRegenerate()
Definition: Zone.cs:1136
bool isStarted
Definition: Zone.cs:70
virtual string pathExport
Definition: Zone.cs:124
MapSubset subset
Definition: Zone.cs:62
Zone GetTopZone()
Definition: Zone.cs:1920
virtual string IDSubset
Definition: Zone.cs:209
ZoneBlueprint bp
Definition: Zone.cs:64
void RefreshBGM()
Definition: Zone.cs:2975
void Deactivate()
Definition: Zone.cs:1612
void SpawnLostItems()
Definition: Zone.cs:3714
void AddGlobalCharasOnActivate()
Definition: Zone.cs:1531
bool IsInstance
Definition: Zone.cs:486
void ClearZones(Zone current=null)
Definition: Zone.cs:1889
void OnVisit()
Definition: Zone.cs:1056
virtual bool IsTown
Definition: Zone.cs:220
void RainWater()
Definition: Zone.cs:3360
virtual bool UseFog
Definition: Zone.cs:388
virtual string IDAmbience
Definition: Zone.cs:175
void RemoveCard(Card t)
Definition: Zone.cs:1999
void RefreshHat()
Definition: Zone.cs:1046
void ModInfluence(int a)
Definition: Zone.cs:3572
virtual void OnGenerateMap()
Definition: Zone.cs:2534
static bool forceRegenerate
Definition: Zone.cs:25
bool IsPCFaction
Definition: Zone.cs:470
virtual bool IsUnderwater
Definition: Zone.cs:266
virtual bool ShouldRegenerate
Definition: Zone.cs:374
string NameWithLevel
Definition: Zone.cs:426
ZoneInstance instance
Definition: Zone.cs:52
virtual bool RevealRoom
Definition: Zone.cs:390
bool IsLoaded
Definition: Zone.cs:488
void RefreshListCitizen()
Definition: Zone.cs:3530
virtual int ExpireDays
Definition: Zone.cs:168
virtual void OnVisitNewMapOrRegenerate()
Definition: Zone.cs:1156

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

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

◆ AddCard() [1/3]

Card Zone.AddCard ( Card  t)
inline

Definition at line 1964 of file Zone.cs.

1965 {
1966 return AddCard(t, 0, 0);
1967 }
Card AddCard(Card t, Point point)
Definition: Zone.cs:1959

◆ AddCard() [2/3]

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

Definition at line 1969 of file Zone.cs.

1970 {
1971 if (t.parent != null)
1972 {
1973 t.parent.RemoveCard(t);
1974 }
1975 t.parent = this;
1976 Chara chara = t.Chara;
1977 if (chara != null)
1978 {
1979 chara.currentZone = this;
1980 chara.SetAI(new NoGoal());
1981 }
1982 if (IsActiveZone)
1983 {
1984 map.OnCardAddedToZone(t, x, z);
1985 if (isStarted && t.isThing && t.placeState == PlaceState.roaming && !ignoreSpawnAnime)
1986 {
1987 t.PlayAnimeLoot();
1988 }
1989 ignoreSpawnAnime = false;
1990 }
1991 if (chara != null && EClass.player != null && !chara.hasSpawned)
1992 {
1993 EClass.player.codex.AddSpawn(chara.id);
1994 chara.hasSpawned = true;
1995 }
1996 return t;
1997 }
PlaceState
Definition: PlaceState.cs:2
virtual bool isThing
Definition: Card.cs:2069
virtual Chara Chara
Definition: Card.cs:2058
ICardParent parent
Definition: Card.cs:55
bool hasSpawned
Definition: Card.cs:902
PlaceState placeState
Definition: Card.cs:83
void PlayAnimeLoot()
Definition: Card.cs:6067
void AddSpawn(string id)
Definition: CodexManager.cs:65
void OnCardAddedToZone(Card t, int x, int z)
Definition: Map.cs:806
Definition: NoGoal.cs:4
CodexManager codex
Definition: Player.cs:1112
static bool ignoreSpawnAnime
Definition: Zone.cs:78
void RemoveCard(Card c)

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

◆ AddCard() [3/3]

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

Definition at line 1959 of file Zone.cs.

1960 {
1961 return AddCard(t, point.x, point.z);
1962 }

References Point.x, and Point.z.

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

◆ AddCardSplinkle()

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

Definition at line 1929 of file Zone.cs.

1930 {
1931 Point point = new Point(center);
1932 for (int i = 0; i < 1000; i++)
1933 {
1934 point.x = center.x + EClass.rnd(radius) - EClass.rnd(radius);
1935 point.z = center.z + EClass.rnd(radius) - EClass.rnd(radius);
1936 if (point.IsValid && !point.IsBlocked && !point.HasChara)
1937 {
1938 return AddCard(t, point);
1939 }
1940 }
1941 return AddCard(t, center);
1942 }
bool IsBlocked
Definition: Point.cs:351
bool HasChara
Definition: Point.cs:226

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

Referenced by ZoneUtil.AddBandits().

◆ AddChara()

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

Definition at line 1944 of file Zone.cs.

1945 {
1946 return AddCard(CharaGen.Create(id), x, z) as Chara;
1947 }
static Chara Create(string id, int lv=-1)
Definition: CharaGen.cs:17

References CharaGen.Create().

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

◆ AddGlobalCharasOnActivate()

void Zone.AddGlobalCharasOnActivate ( )
inline

Definition at line 1531 of file Zone.cs.

1532 {
1533 Point spawnPosPC = null;
1534 if (EClass.pc.currentZone == this)
1535 {
1536 spawnPosPC = GetSpawnPos(EClass.pc);
1537 }
1538 if (spawnPosPC == null)
1539 {
1540 spawnPosPC = map.GetCenterPos();
1541 }
1542 if (spawnPosPC.IsValid && EClass.pc.global.transition != null && spawnPosPC.HasBlock)
1543 {
1544 spawnPosPC = spawnPosPC.GetNearestPoint();
1545 }
1546 spawnPosPC = spawnPosPC.Clamp(useBounds: true).GetNearestPoint();
1547 foreach (Chara c in EClass.game.cards.globalCharas.Values)
1548 {
1549 if (c.currentZone != this)
1550 {
1551 continue;
1552 }
1553 if (c.parent is Chara)
1554 {
1555 Chara chara = c.parent as Chara;
1556 c.currentZone = chara.currentZone;
1557 }
1558 else
1559 {
1560 if (c.isDead)
1561 {
1562 continue;
1563 }
1564 if (c.isRestrained && c.currentZone == EClass.pc.currentZone && (!c.pos.IsValid || c.pos.FindThing<TraitShackle>() == null))
1565 {
1566 c.isRestrained = false;
1567 }
1568 if (c.global.transition != null)
1569 {
1570 Point pos = (c.IsPC ? spawnPosPC : (c.IsPCParty ? spawnPosPC.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true) : GetSpawnPos(c)));
1571 if (c.IsPCParty && !c.IsPC)
1572 {
1573 if (c.host == EClass.pc)
1574 {
1575 pos.Set(spawnPosPC);
1576 }
1577 else if (pos.Equals(spawnPosPC) || !PathManager.Instance.IsPathClear(spawnPosPC, pos, c, 5))
1578 {
1579 c.pos.Set(spawnPosPC);
1580 if (!spawnPosPC.ForeachNearestPoint(delegate(Point p)
1581 {
1582 if (PathManager.Instance.IsPathClear(spawnPosPC, p, c, 10) && !p.Equals(spawnPosPC))
1583 {
1584 pos.Set(p);
1585 return true;
1586 }
1587 return false;
1588 }, allowBlock: false, EClass.pc.party.members.Count >= 12, allowInstalled: true, ignoreCenter: true, EClass._zone.IsRegion ? 2 : 6))
1589 {
1590 pos.Set(spawnPosPC);
1591 }
1592 }
1593 }
1594 c.pos.Set(pos);
1595 c.global.transition = null;
1596 }
1597 map.charas.Add(c);
1599 }
1600 }
1601 foreach (Chara item in EClass.player.listSummon)
1602 {
1603 Point nearestPoint = spawnPosPC.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true);
1604 item.enemy = null;
1605 item.pos.Set(nearestPoint);
1606 map.charas.Add(item);
1608 }
1609 EClass.player.listSummon.Clear();
1610 }
GlobalCharaList globalCharas
Definition: CardManager.cs:46
bool isRestrained
Definition: Card.cs:566
override bool IsPC
Definition: Chara.cs:610
Chara host
Definition: Chara.cs:33
Zone currentZone
Definition: Chara.cs:253
bool isDead
Definition: Chara.cs:387
CardManager cards
Definition: Game.cs:155
Point GetCenterPos()
Definition: MapBounds.cs:52
static PathManager Instance
Definition: PathManager.cs:16
bool IsPathClear(Point origin, Point dest, IPathfindWalker walker, int radius)
Definition: PathManager.cs:47
Point GetNearestPoint(bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int minRadius=0)
Definition: Point.cs:607
bool Equals(int _x, int _z)
Definition: Point.cs:948
bool ForeachNearestPoint(Func< Point, bool > endFunc, bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int maxRange=30)
Definition: Point.cs:679
Point Clamp(bool useBounds=false)
Definition: Point.cs:996
bool HasBlock
Definition: Point.cs:141
Thing FindThing(Func< Thing, bool > func)
Definition: Point.cs:1128
Point GetSpawnPos(Chara c, ZoneTransition.EnterState destState=ZoneTransition.EnterState.Auto)
Definition: Zone.cs:1328

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

Referenced by Activate().

◆ AddRandomVisitor()

Chara Zone.AddRandomVisitor ( bool  guest = false)
inline

Definition at line 3256 of file Zone.cs.

3257 {
3258 Trait random = map.Installed.traits.GetTraitSet<TraitSpotExit>().GetRandom();
3259 if (random == null)
3260 {
3261 return null;
3262 }
3263 Point point = random.GetPoint();
3264 Chara chara = null;
3265 if (guest)
3266 {
3267 Zone z = EClass.world.FindZone("wilds");
3268 chara = EClass.game.cards.ListGlobalChara(z).RandomItem();
3269 if (chara != null)
3270 {
3271 AddCard(chara, point);
3272 Msg.Say("guestArrive", chara);
3273 chara.visitorState = VisitorState.Arrived;
3274 }
3275 }
3276 else
3277 {
3278 chara = CharaGen.CreateFromFilter("c_wilds");
3279 AddCard(chara, point);
3280 chara.goalListType = GoalListType.Enemy;
3281 }
3282 return chara;
3283 }
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:731
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 1954 of file Zone.cs.

1955 {
1956 return AddThing(id, p.x, p.z);
1957 }
Card AddThing(string id, int x, int z)
Definition: Zone.cs:1949

References Point.x, and Point.z.

◆ ApplyBackerPet()

void Zone.ApplyBackerPet ( bool  draw)
inline

Definition at line 3759 of file Zone.cs.

3760 {
3761 bool flag = this is Zone_Yowyn && base.lv == -1;
3762 IList<SourceBacker.Row> list = EClass.sources.backers.listPet.Copy();
3763 list.Shuffle();
3765 {
3766 list.ForeachReverse(delegate(SourceBacker.Row a)
3767 {
3768 if (EClass.player.doneBackers.Contains(a.id))
3769 {
3770 list.Remove(a);
3771 }
3772 });
3773 }
3774 foreach (Chara chara in EClass._map.charas)
3775 {
3776 if (chara.IsGlobal || chara.IsMinion)
3777 {
3778 continue;
3779 }
3780 if (chara.isBackerContent)
3781 {
3782 if (chara.sourceBacker.isStatic != 0)
3783 {
3784 continue;
3785 }
3786 if (chara.id != "follower")
3787 {
3788 chara.RemoveBacker();
3789 }
3790 }
3791 if ((flag && chara.race.id != "cat") || (!EClass.debug.enable && EClass.rnd((!flag) ? (draw ? 3 : 10) : (draw ? 1 : 2)) != 0))
3792 {
3793 continue;
3794 }
3795 foreach (SourceBacker.Row item in list)
3796 {
3797 if (item.chara == chara.id)
3798 {
3799 chara.ApplyBacker(item.id);
3800 list.Remove(item);
3801 break;
3802 }
3803 }
3804 }
3805 }
SourceBacker.Row sourceBacker
Definition: Card.cs:928
void RemoveBacker()
Definition: Card.cs:6902
void ApplyBacker(int bid)
Definition: Card.cs:6866
bool isBackerContent
Definition: Card.cs:925
override bool IsGlobal
Definition: Chara.cs:608
override bool IsMinion
Definition: Chara.cs:625
SourceRace.Row race
Definition: Chara.cs:462
List< Row > listPet
Definition: SourceBacker.cs:76

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

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

◆ CanDestroy()

bool Zone.CanDestroy ( )
inline

Definition at line 1775 of file Zone.cs.

1776 {
1778 {
1779 return false;
1780 }
1781 if (IsInstance)
1782 {
1783 return true;
1784 }
1785 bool flag = false;
1786 switch (id)
1787 {
1788 case "cave_dragon":
1789 if (!(this is Zone_DungeonDragon))
1790 {
1791 flag = true;
1792 }
1793 break;
1794 case "cave_yeek":
1795 if (!(this is Zone_DungeonYeek))
1796 {
1797 flag = true;
1798 }
1799 break;
1800 case "cave_mino":
1801 if (!(this is Zone_DungeonMino))
1802 {
1803 flag = true;
1804 }
1805 break;
1806 }
1807 Zone topZone = GetTopZone();
1808 if (!flag)
1809 {
1810 if (base.dateExpire == 0 || !EClass.world.date.IsExpired(base.dateExpire))
1811 {
1812 return false;
1813 }
1814 if (!base.isRandomSite && !(this is Zone_Field) && (topZone == null || topZone == this || topZone.FindDeepestZone() == this))
1815 {
1816 return false;
1817 }
1818 }
1819 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()))
1820 {
1821 return false;
1822 }
1824 {
1826 if (zone != null && zone.GetTopZone() == this)
1827 {
1828 return false;
1829 }
1830 }
1831 return true;
1832 }
SpatialManager spatials
Definition: Game.cs:152
Zone nextZone
Definition: Player.cs:1222
Zone Find(string id)
Zone FindDeepestZone()
Definition: Spatial.cs:715

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

Referenced by Region.OnActivate().

◆ ClaimZone()

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

Definition at line 1705 of file Zone.cs.

1706 {
1709 branch = new FactionBranch();
1710 branch.OnCreate(this);
1711 if (base.icon == 0)
1712 {
1713 base.icon = 332;
1714 }
1715 instance = null;
1716 base.dateExpire = 0;
1718 Register();
1719 foreach (Thing thing in map.things)
1720 {
1721 thing.isNPCProperty = false;
1722 }
1725 if (debug)
1726 {
1727 for (int i = 0; i < 7; i++)
1728 {
1729 Chara chara = CharaGen.CreateFromFilter("c_neutral");
1730 EClass._zone.AddCard(chara, EClass._map.bounds.GetRandomPoint().GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false));
1731 branch.AddMemeber(chara);
1732 }
1733 }
1734 else
1735 {
1736 Msg.Say("claimedZone");
1737 EClass.Branch.Log("claimedZone");
1738 EClass.Sound.Play("jingle_embark");
1739 EClass.pc.PlaySound("build");
1740 if (pos == null)
1741 {
1742 pos = EClass.pc.pos.GetNearestPoint(allowBlock: false, allowChara: true, allowInstalled: false);
1743 }
1744 Effect.Get("aura_heaven").Play(pos);
1745 EClass._zone.AddCard(ThingGen.Create("core_zone"), pos).SetPlaceState(PlaceState.installed);
1746 }
1747 base.idPrefix = 0;
1749 {
1750 EClass.player.spawnZone = EClass._zone;
1751 }
1753 {
1754 EClass._zone.SetBGM(new List<int> { 41, 90, 44, 43 });
1756 }
1757 }
void SetPlaceState(PlaceState newState, bool byPlayer=false)
Definition: Card.cs:3677
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6038
Faction faction
Definition: Chara.cs:425
static Zone _zone
Definition: EClass.cs:20
Definition: Effect.cs:7
static Effect Get(Effect original)
Definition: Effect.cs:85
void Play(float delay, Point from, float fixY=0f, Point to=null, Sprite sprite=null)
Definition: Effect.cs:100
void SetZone(int gx, int gy, Zone z, bool updateMesh=false)
Definition: EloMap.cs: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:905
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:2959
void SetBGM(List< int > ids, bool refresh=true, float fadeDuration=0f)
Definition: Zone.cs:2917

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

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

◆ ClearZones()

void Zone.ClearZones ( Zone  current = null)
inline

Definition at line 1889 of file Zone.cs.

1890 {
1891 if (map != null)
1892 {
1893 UnloadMap();
1894 }
1895 base.isGenerated = false;
1896 Zone topZone = GetTopZone();
1897 if (topZone != this)
1898 {
1899 topZone.ClearZones(this);
1900 return;
1901 }
1902 children.ForeachReverse(delegate(Spatial c)
1903 {
1904 if (c != current)
1905 {
1906 c.Destroy();
1907 }
1908 });
1909 }
virtual void Destroy()
Definition: Spatial.cs:690
List< Spatial > children
Definition: Spatial.cs:37

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

Referenced by Activate(), and ClearZones().

◆ CountMinions()

int Zone.CountMinions ( Chara  c)
inline

Definition at line 3691 of file Zone.cs.

3692 {
3693 int num = 0;
3694 foreach (Chara chara in EClass._map.charas)
3695 {
3696 if (chara.c_uidMaster == c.uid && chara.c_minionType == MinionType.Default)
3697 {
3698 num++;
3699 }
3700 }
3701 return num;
3702 }
MinionType
Definition: MinionType.cs:2
MinionType c_minionType
Definition: Card.cs:988

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

2329 {
2330 bp = new ZoneBlueprint();
2331 bp.Create();
2332 bp.genSetting.seed = base.Seed;
2333 OnCreateBP();
2334 }
virtual void OnCreateBP()
Definition: Zone.cs:2336

References ZoneBlueprint.Create().

◆ CreatePlaylist()

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

Definition at line 3015 of file Zone.cs.

3016 {
3017 Playlist playlist = EClass.Sound.plBlank.Instantiate();
3018 if (list.Count == 0 && (bool)mold)
3019 {
3020 list = mold.ToInts();
3021 playlist.shuffle = mold.shuffle;
3022 playlist.minSwitchTime = mold.minSwitchTime;
3023 playlist.nextBGMOnSwitch = mold.nextBGMOnSwitch;
3024 playlist.ignoreLoop = mold.ignoreLoop;
3025 playlist.keepBGMifSamePlaylist = mold.keepBGMifSamePlaylist;
3026 playlist.name = mold.name;
3027 }
3028 foreach (int item in list)
3029 {
3030 playlist.list.Add(new Playlist.Item
3031 {
3032 data = EClass.core.refs.dictBGM.TryGetValue(item, 1)
3033 });
3034 }
3035 return playlist;
3036 }

References item, and EClass.Sound.

◆ Deactivate()

void Zone.Deactivate ( )
inline

Definition at line 1612 of file Zone.cs.

1613 {
1614 if (!IsUserZone && !IsPCFaction && map != null)
1615 {
1616 List<Thing> list = new List<Thing>();
1617 foreach (Thing thing in map.things)
1618 {
1619 if (thing.rarity >= Rarity.Artifact && thing.HasTag(CTAG.godArtifact))
1620 {
1621 list.Add(thing);
1622 }
1623 }
1624 if (this is Zone_Tent)
1625 {
1626 foreach (Thing item in map.props.stocked.Things.Concat(map.props.roaming.Things))
1627 {
1628 if (item.IsContainer)
1629 {
1630 foreach (Thing thing2 in item.things)
1631 {
1632 if (thing2.trait is TraitTent)
1633 {
1634 list.Add(thing2);
1635 }
1636 }
1637 }
1638 if (item.trait is TraitTent)
1639 {
1640 list.Add(item);
1641 }
1642 }
1643 }
1644 if (list.Count > 0)
1645 {
1646 Msg.Say("pick_valuable");
1647 foreach (Thing item2 in list)
1648 {
1649 Msg.Say("pick_valuable2", item2);
1650 EClass.pc.AddCard(item2);
1651 }
1652 }
1653 }
1654 base.isPeace = false;
1656 if (IsPCFaction)
1657 {
1658 foreach (Chara member in branch.members)
1659 {
1660 member.ValidateWorks();
1661 }
1662 }
1663 EClass.game.lastActiveZone = EClass.game.activeZone;
1664 base.lastActive = EClass.world.date.GetRaw();
1665 map.OnDeactivate();
1666 EClass.scene.Clear();
1667 EClass.game.activeZone = null;
1668 if (IsInstance)
1669 {
1670 UnloadMap();
1671 base.isGenerated = false;
1672 }
1673 if (forceRegenerate)
1674 {
1675 UnloadMap();
1676 }
1677 OnDeactivate();
1678 }
Rarity
Definition: Rarity.cs:2
Card AddCard(Card c)
Definition: Card.cs:3071
Rarity rarity
Definition: Card.cs:314
bool HasTag(CTAG tag)
Definition: Card.cs:2583
void ValidateWorks()
Definition: Chara.cs:8999
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:353
virtual void OnBeforeDeactivate()
Definition: Zone.cs:1144
virtual bool IsUserZone
Definition: Zone.cs:268
virtual void OnDeactivate()
Definition: Zone.cs:1148

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

Referenced by Activate().

◆ Destroy()

override void Zone.Destroy ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 1870 of file Zone.cs.

1871 {
1872 children.ForeachReverse(delegate(Spatial z)
1873 {
1874 z.Destroy();
1875 });
1876 if (map != null)
1877 {
1878 UnloadMap();
1879 }
1880 if (parent != null && parent.IsRegion && instance == null)
1881 {
1882 EClass.scene.elomap.SetZone(base.x, base.y, null, updateMesh: true);
1883 }
1884 EClass.game.spatials.Remove(this);
1885 destryoed = true;
1886 base.isGenerated = false;
1887 }
void Remove(Spatial s)
Spatial parent
Definition: Spatial.cs:10

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

◆ Evalue() [1/2]

int Zone.Evalue ( int  ele)
inline

Definition at line 524 of file Zone.cs.

525 {
526 return elements.Value(ele);
527 }
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 529 of file Zone.cs.

530 {
531 return elements.Value(EClass.sources.elements.alias[alias].id);
532 }
SourceElement elements

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

◆ Export() [1/2]

void Zone.Export ( )
inline

Definition at line 3214 of file Zone.cs.

3215 {
3217 string text = pathExport;
3218 IO.Copy(text, CorePath.ZoneSave + "Backup/");
3219 Export(text);
3220 Msg.Say("Exported Map:" + text);
3221 }
static void Copy(string fromPath, string toPath)
Definition: IO.cs:278
void ResetEditorPos()
Definition: Map.cs:357
void Export()
Definition: Zone.cs:3214

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

3132 {
3133 if (subset != null)
3134 {
3135 SE.Beep();
3136 return;
3137 }
3138 try
3139 {
3140 ZoneExportData zoneExportData = new ZoneExportData
3141 {
3142 name = name,
3143 usermap = usermap
3144 };
3146 if (!map.config.retainDecal)
3147 {
3149 }
3150 map.Save(IO.TempPath + "/", zoneExportData, partial);
3151 map.ExportMetaData(IO.TempPath + "/", Path.GetFileNameWithoutExtension(path), partial);
3152 if (partial == null)
3153 {
3154 IO.CopyDir(base.pathSave + "Texture Replace", IO.TempPath + "/Texture Replace");
3155 }
3156 IO.SaveFile(IO.TempPath + "/export", zoneExportData, compress: true);
3157 using (ZipFile zipFile = new ZipFile())
3158 {
3159 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
3160 zipFile.AddDirectory(IO.TempPath);
3161 zipFile.Save(path);
3162 zipFile.Dispose();
3163 }
3165 }
3166 catch (Exception ex)
3167 {
3168 EClass.ui.Say(ex.Message + ":" + path);
3169 }
3170 }
static void CreateTempDirectory(string path=null)
Definition: IO.cs:379
static string TempPath
Definition: IO.cs:64
static void SaveFile(string path, object obj, bool compress=false, JsonSerializerSettings setting=null)
Definition: IO.cs:89
static void DeleteTempDirectory(string path=null)
Definition: IO.cs:384
bool retainDecal
Definition: MapConfig.cs:44
void ExportMetaData(string _path, string id, PartialMap partial=null)
Definition: Map.cs:720
void ClearRainAndDecal()
Definition: Map.cs:1526
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 3172 of file Zone.cs.

3173 {
3175 {
3176 string text = StandaloneFileBrowser.SaveFilePanel("Export Zone", dir ?? CorePath.ZoneSave, "new zone", "z");
3177 if (!string.IsNullOrEmpty(text))
3178 {
3179 Export(text);
3180 Msg.SayRaw("Exported Zone");
3181 }
3182 });
3183 }
void WaitForEndOfFrame(Action action)
Definition: BaseCore.cs:61
static string SayRaw(string text)
Definition: Msg.cs:113
static string SaveFilePanel(string title, string directory, string defaultName, string extension)

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

Referenced by CoreDebug.InitDebugCommands().

◆ FindChara() [1/2]

Chara Zone.FindChara ( int  uid)
inline

Definition at line 3043 of file Zone.cs.

3044 {
3045 return map.charas.Find((Chara c) => c.uid == uid);
3046 }
int uid
Definition: Spatial.cs:70

References Map.charas, and Card.uid.

◆ FindChara() [2/2]

Chara Zone.FindChara ( string  id)
inline

Definition at line 3038 of file Zone.cs.

3039 {
3040 return map.charas.Find((Chara c) => c.id == id);
3041 }

References Map.charas, and Card.id.

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

◆ Generate()

void Zone.Generate ( )
inline

Definition at line 2340 of file Zone.cs.

2341 {
2342 base.isGenerated = true;
2343 if (bp == null)
2344 {
2345 CreateBP();
2346 }
2347 if (bp.map == null)
2348 {
2349 bp.GenerateMap(this);
2350 }
2351 map.SetZone(this);
2352 Zone_Field zone_Field = this as Zone_Field;
2353 if (IdBiome == "Sand" || IdBiome == "Water" || IsUnderwater)
2354 {
2355 int num = 1 + EClass.rnd((IdBiome == "Water") ? 3 : 2);
2356 for (int i = 0; i < num; i++)
2357 {
2358 Point randomSurface = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2359 if (!randomSurface.HasObj && !randomSurface.HasThing)
2360 {
2361 Thing t = ThingGen.Create("pearl_oyster", new string[3] { "wood_birch", "poplar", "coralwood" }.RandomItem(), ContentLv);
2362 EClass._zone.AddCard(t, randomSurface).Install();
2363 }
2364 }
2365 num = 4 + EClass.rnd(5);
2366 for (int j = 0; j < num; j++)
2367 {
2368 Point randomSurface2 = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2369 if (!randomSurface2.HasObj && !randomSurface2.HasThing && (IsUnderwater || randomSurface2.cell.IsTopWaterAndNoSnow || EClass.rnd(6) == 0))
2370 {
2371 EClass._zone.AddCard(ThingGen.Create("70", -1, ContentLv), randomSurface2);
2372 }
2373 }
2374 }
2375 if (IsUnderwater)
2376 {
2377 for (int k = 0; k < 30 + EClass.rnd(30); k++)
2378 {
2379 SpawnMob(null, SpawnSetting.Fish());
2380 }
2381 Crawler crawler = Crawler.Create("pasture");
2382 int num2 = (EClass.debug.enable ? 3 : EClass.rnd(EClass.rnd(EClass.rnd(EClass.rnd(5) + 1) + 1) + 1));
2383 bool flag = this is Zone_Field;
2384 Thing seed = null;
2385 if (IsNefia)
2386 {
2387 int num3 = Mathf.Min(EClass._zone.DangerLv, EClass.pc.Evalue(286) * 2 / 3);
2388 if (num3 > 0)
2389 {
2391 Rand.SetSeed(EClass._zone.uid * 10 + num3);
2392 TraitSeed.LevelSeed(seed, (seed.trait as TraitSeed).row, num3);
2393 Rand.SetSeed();
2394 seed.elements.SetBase(2, EClass.curve(seed.encLV, 50, 10, 80));
2395 }
2396 }
2397 crawler.CrawlUntil(EClass._map, () => EClass._map.GetRandomPoint(), num2 + (flag ? 4 : 0), delegate(Crawler.Result r)
2398 {
2399 int num6 = 137;
2400 foreach (Point point in r.points)
2401 {
2402 if (!point.cell.isModified && !point.HasThing && !point.HasBlock && !point.HasObj)
2403 {
2404 map.SetObj(point.x, point.z, num6);
2405 int idx = 3 + ((EClass.rnd(3) == 0) ? 1 : 0) + ((EClass.rnd(3) == 0) ? (-1) : 0) + ((EClass.rnd(3) == 0) ? (-1) : 0);
2406 point.growth.SetStage(idx);
2407 if (seed != null)
2408 {
2409 EClass._map.AddPlant(point, seed);
2410 }
2411 }
2412 }
2413 return false;
2414 });
2415 crawler.CrawlUntil(tries: EClass.rnd(EClass.rnd(5) + 1) + 1 + (flag ? 20 : 0), map: EClass._map, onStart: () => EClass._map.GetRandomPoint(), canComplete: delegate(Crawler.Result r)
2416 {
2417 int num5 = 136;
2418 foreach (Point point2 in r.points)
2419 {
2420 if (!point2.cell.isModified && !point2.HasThing && !point2.HasBlock && !point2.HasObj)
2421 {
2422 map.SetObj(point2.x, point2.z, num5, 1, EClass.rnd(4));
2423 }
2424 }
2425 return false;
2426 });
2427 crawler.CrawlUntil(tries: EClass.rnd(EClass.rnd(10) + 1) + 3 + (flag ? 40 : 0), map: EClass._map, onStart: () => EClass._map.GetRandomPoint(), canComplete: delegate(Crawler.Result r)
2428 {
2429 int idFloor = 121;
2430 foreach (Point point3 in r.points)
2431 {
2432 map.SetFloor(point3.x, point3.z, 97, idFloor, Mathf.Clamp(4 - r.startPos.Distance(point3) + EClass.rnd(3) - EClass.rnd(3), 0, 3));
2433 }
2434 return false;
2435 });
2436 }
2437 if (zone_Field != null)
2438 {
2439 if (EClass.rnd(3) == 0)
2440 {
2441 int num4 = EClass.rnd(2);
2442 for (int l = 0; l < num4; l++)
2443 {
2444 Point randomSurface3 = EClass._map.bounds.GetRandomSurface();
2445 if (!randomSurface3.HasObj && !randomSurface3.HasThing)
2446 {
2448 EClass._zone.AddCard(t2, randomSurface3).Install();
2449 }
2450 }
2451 }
2452 if (EClass.rnd(8) == 0)
2453 {
2454 SpawnAltar();
2455 }
2457 }
2458 map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList) ?? EClass.Sound.GetPlaylist("Day"));
2459 }
@ seed
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:3022
int Evalue(int ele)
Definition: Card.cs:2559
Card Install()
Definition: Card.cs:3671
bool IsTopWaterAndNoSnow
Definition: Cell.cs:712
bool isModified
Definition: Cell.cs:438
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(int a, int start, int step, int rate=75)
Definition: EClass.cs:68
void SetStage(int idx, bool renewHarvest=false)
Definition: GrowSystem.cs:432
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:2215
List< int > _plDay
Definition: Map.cs:55
void SetFloor(int x, int z, int idMat=0, int idFloor=0)
Definition: Map.cs:957
PlantData AddPlant(Point pos, Thing seed)
Definition: Map.cs:1952
void SetObj(int x, int z, int id=0, int value=1, int dir=0)
Definition: Map.cs:1535
bool HasThing
Definition: Point.cs:239
bool HasObj
Definition: Point.cs:137
Cell cell
Definition: Point.cs:51
GrowSystem growth
Definition: Point.cs:77
static void SetSeed(int a=-1)
Definition: Rand.cs:37
SourceObj objs
static SpawnSetting Fish()
static void LevelSeed(Thing t, SourceObj.Row obj, int num)
Definition: TraitSeed.cs:145
static Thing MakeSeed(string id, PlantData plant=null)
Definition: TraitSeed.cs:88
void GenerateMap(Zone zone)
virtual string IDPlayList
Definition: Zone.cs:138
override int ContentLv
Definition: Zone.cs:95
void SpawnAltar()
Definition: Zone.cs:2495
Playlist CreatePlaylist(ref List< int > list, Playlist mold=null)
Definition: Zone.cs:3015
virtual bool IsNefia
Definition: Zone.cs:282
BiomeProfile biome
Definition: Zone.cs:126
Chara SpawnMob(Point pos=null, SpawnSetting setting=null)
Definition: Zone.cs:2723
virtual string IdBiome
Definition: Zone.cs:128
override int DangerLv
Definition: Zone.cs:107
void TrySpawnFollower()
Definition: Zone.cs:2461
void CreateBP()
Definition: Zone.cs:2328

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

Referenced by Activate().

◆ GetDeepestLv() [1/2]

int Zone.GetDeepestLv ( )
inline

Definition at line 3048 of file Zone.cs.

3049 {
3050 int max = base.lv;
3051 return GetDeepestLv(ref max);
3052 }
int GetDeepestLv()
Definition: Zone.cs:3048

◆ GetDeepestLv() [2/2]

int Zone.GetDeepestLv ( ref int  max)
inline

Definition at line 3054 of file Zone.cs.

3055 {
3056 if (Mathf.Abs(base.lv) > Mathf.Abs(max))
3057 {
3058 max = base.lv;
3059 }
3060 foreach (Spatial child in children)
3061 {
3062 (child as Zone).GetDeepestLv(ref max);
3063 }
3064 return max;
3065 }

◆ GetDungenID()

virtual string Zone.GetDungenID ( )
inlinevirtual

◆ GetElectricity()

int Zone.GetElectricity ( bool  cost = false)
inline

Definition at line 2878 of file Zone.cs.

2879 {
2880 bool flag = GetSoilCost() > MaxSoil;
2881 int sum = 0;
2882 foreach (Thing thing in EClass._map.things)
2883 {
2884 if (!thing.IsInstalled || thing.trait.Electricity == 0)
2885 {
2886 continue;
2887 }
2888 if (cost)
2889 {
2890 if (thing.trait.Electricity < 0)
2891 {
2892 sum += -thing.trait.Electricity;
2893 }
2894 }
2895 else if (thing.trait.Electricity > 0)
2896 {
2897 sum += thing.trait.Electricity;
2898 }
2899 }
2900 if (!cost)
2901 {
2902 sum += elements.Value(2201) * 10 + BaseElectricity;
2903 if (!flag)
2904 {
2905 EClass._map.bounds.ForeachCell(delegate(Cell c)
2906 {
2907 if (c.sourceObj.id == 118 && c.growth.IsMature)
2908 {
2909 sum += 20;
2910 }
2911 });
2912 }
2913 }
2914 return sum;
2915 }
bool IsInstalled
Definition: Card.cs:2369
GrowSystem growth
Definition: Cell.cs:225
SourceObj.Row sourceObj
Definition: Cell.cs:1072
virtual bool IsMature
Definition: GrowSystem.cs:103
void ForeachCell(Action< Cell > action)
Definition: MapBounds.cs:279
virtual int Electricity
Definition: Trait.cs:102
virtual int BaseElectricity
Definition: Zone.cs:490
virtual int MaxSoil
Definition: Zone.cs:513
int GetSoilCost()
Definition: Zone.cs:3704

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

545 {
546 return base.source.id;
547 }

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

◆ GetOrCreateFortuneRollData()

FortuneRollData Zone.GetOrCreateFortuneRollData ( bool  refresh = true)
inline

Definition at line 3807 of file Zone.cs.

3808 {
3809 if (fortuneRoll == null)
3810 {
3812 fortuneRoll.seed = EClass._zone.uid * 100 + EClass.game.seed;
3813 }
3814 if (refresh || fortuneRoll.count == 0)
3815 {
3817 }
3818 return fortuneRoll;
3819 }
int seed
Definition: Game.cs:197
FortuneRollData fortuneRoll
Definition: Zone.cs:58

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

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

◆ GetProfile()

ZoneProfile Zone.GetProfile ( )
inline

Definition at line 2288 of file Zone.cs.

2289 {
2290 string text = IdProfile;
2291 if (text.IsEmpty())
2292 {
2293 Region region = parent as Region;
2294 if (base.lv != 0)
2295 {
2296 text = ((base.lv < 0) ? "Underground" : "Sky");
2297 }
2298 else if (region != null)
2299 {
2301 text = EClass.scene.elomapActor.elomap.GetTileInfo(base.x, base.y).idZoneProfile;
2302 if (bp != null)
2303 {
2304 name = Lang.GetList("zone_" + text.Split('/')[1]).RandomItem();
2305 bp.surrounding = new EloMap.TileInfo[3, 3];
2306 for (int i = 0; i < 3; i++)
2307 {
2308 for (int j = 0; j < 3; j++)
2309 {
2310 bp.surrounding[j, i] = EClass.scene.elomapActor.elomap.GetTileInfo(base.x - 1 + j, base.y - 1 + i);
2311 }
2312 }
2313 if (text == "Random/R_Shore")
2314 {
2315 base.isBeach = true;
2316 }
2317 }
2318 }
2319 else
2320 {
2321 text = "Random";
2322 }
2323 idProfile = text;
2324 }
2325 return ZoneProfile.Load(text);
2326 }
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:6
static string[] GetList(string id)
Definition: Lang.cs:114
string idProfile
Definition: Spatial.cs:25
EloMap.TileInfo[,] surrounding
static ZoneProfile Load(string id)
Definition: ZoneProfile.cs:73
virtual string IdProfile
Definition: Zone.cs:136
Region Region
Definition: Zone.cs:160

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

Referenced by ZoneBlueprint.GenerateMap().

◆ GetRandomSpot< T >()

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

Definition at line 2020 of file Zone.cs.

2020 : Trait
2021 {
2022 return EClass._map.props.installed.traits.GetRandomThing<T>() as T;
2023 }
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 1509 of file Zone.cs.

1510 {
1511 Point point = null;
1512 if (EClass.rnd(3) == 0 && map.rooms.listRoom.Count > 0)
1513 {
1514 point = map.rooms.listRoom.RandomItem().points.RandomItem();
1515 }
1516 if (point == null && EClass.rnd(4) != 0)
1517 {
1518 IEnumerable<Chara> ie = map.charas.Where((Chara t) => t.trait.ShopType != 0 && t.pos != null && t.pos.IsValid);
1519 if (ie.Count() > 0)
1520 {
1521 point = ie.RandomItem().pos.GetRandomPoint(3);
1522 }
1523 }
1524 if (point == null)
1525 {
1526 point = map.bounds.GetRandomSurface(centered: false, walkable: true, !IsPCFaction && !(this is Zone_Civilized)) ?? map.bounds.GetRandomPoint();
1527 }
1528 return point.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false) ?? EClass._map.GetCenterPos().GetNearestPoint();
1529 }
new TraitChara trait
Definition: Chara.cs:501
Point GetRandomPoint(int radius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=100)
Definition: Point.cs:757
virtual ShopType ShopType
Definition: Trait.cs:518

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

◆ GetRoot()

ICardParent Zone.GetRoot ( )
inline

Implements ICardParent.

Definition at line 1915 of file Zone.cs.

1916 {
1917 return this;
1918 }

◆ GetSoilCost()

int Zone.GetSoilCost ( )
inline

Definition at line 3704 of file Zone.cs.

3705 {
3706 int i = 0;
3707 EClass._map.bounds.ForeachCell(delegate(Cell c)
3708 {
3709 i += c.sourceObj.costSoil;
3710 });
3711 return i / 10;
3712 }

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

3232 {
3233 if (IsPCFaction)
3234 {
3235 return -10000000 + base.uid;
3236 }
3237 if (this is Zone_SubTown)
3238 {
3239 return -8000000 + base.uid;
3240 }
3241 if (this is Zone_Town)
3242 {
3243 return -9000000 + base.uid;
3244 }
3245 if (this is Zone_Civilized)
3246 {
3247 return -7000000 + base.uid;
3248 }
3249 if (this is Zone_RandomDungeon)
3250 {
3251 return 1000000 + base.uid;
3252 }
3253 return base.uid;
3254 }

Referenced by SpatialManager.ListReturnLocations().

◆ GetSpawnPos() [1/2]

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

Definition at line 1328 of file Zone.cs.

1329 {
1330 ZoneTransition zoneTransition = c.global?.transition;
1331 Zone zone = zoneTransition?.lastZone;
1332 ZoneTransition.EnterState enterState = zoneTransition?.state ?? destState;
1333 bool flag = zone == null || zone.lv > base.lv;
1334 if (IsRegion)
1335 {
1336 if (zone != null && !EClass.player.simulatingZone)
1337 {
1338 Zone topZone = zone.GetTopZone();
1339 if (GetZoneAt(topZone.x, topZone.y) != null)
1340 {
1341 return new Point(topZone.mapX, topZone.mapY);
1342 }
1343 }
1344 }
1345 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))
1346 {
1347 return EClass.player.lastZonePos;
1348 }
1349 if (enterState == ZoneTransition.EnterState.Region)
1350 {
1351 enterState = RegionEnterState;
1352 }
1353 if (this is Zone_Kapul && enterState == ZoneTransition.EnterState.Left)
1354 {
1355 enterState = ZoneTransition.EnterState.Right;
1356 }
1357 float rate = zoneTransition?.ratePos ?? (-1f);
1358 if (IsPCFaction)
1359 {
1360 if ((uint)(enterState - 3) <= 4u || enterState == ZoneTransition.EnterState.Return)
1361 {
1363 if (spot != null)
1364 {
1365 Point nearestPoint = (spot.trait as TraitSpotGuidePC).GetRandomPoint((Point p) => !p.IsBlocked && !p.Equals(spot.pos)).GetNearestPoint();
1366 if (nearestPoint != null && nearestPoint.IsValid)
1367 {
1368 return nearestPoint;
1369 }
1370 }
1371 }
1372 }
1373 while (true)
1374 {
1375 switch (enterState)
1376 {
1377 case ZoneTransition.EnterState.UndergroundOrSky:
1378 return new Point(zoneTransition.x, zoneTransition.z);
1379 case ZoneTransition.EnterState.Teleport:
1380 {
1381 foreach (Thing thing2 in map.things)
1382 {
1383 if (thing2.IsInstalled)
1384 {
1385 TraitTeleporter traitTeleporter = thing2.trait as TraitTeleporter;
1386 if (traitTeleporter != null)
1387 {
1388 Debug.Log(zoneTransition.idTele + "/" + traitTeleporter.id.IsEmpty(traitTeleporter.GetParam(3)) + "/" + traitTeleporter.GetParam(3));
1389 }
1390 if (traitTeleporter != null && !zoneTransition.idTele.IsEmpty() && zoneTransition.idTele == traitTeleporter.id.IsEmpty(traitTeleporter.GetParam(3)))
1391 {
1392 return thing2.pos.GetNearestPoint();
1393 }
1394 }
1395 }
1396 foreach (Thing thing3 in map.things)
1397 {
1398 if (thing3.IsInstalled && thing3.trait is TraitTeleporter traitTeleporter2 && traitTeleporter2.IsFor(zoneTransition.lastZone))
1399 {
1400 return thing3.pos.GetNearestPoint();
1401 }
1402 }
1403 Thing randomThing2 = EClass._map.props.installed.traits.GetRandomThing<TraitTeleporter>();
1404 if (randomThing2 != null)
1405 {
1406 return randomThing2.pos.GetNearestPoint();
1407 }
1408 goto case ZoneTransition.EnterState.Return;
1409 }
1410 case ZoneTransition.EnterState.Return:
1411 case ZoneTransition.EnterState.Elevator:
1412 case ZoneTransition.EnterState.Moongate:
1413 {
1414 if (enterState == ZoneTransition.EnterState.Elevator)
1415 {
1416 foreach (Thing thing4 in map.things)
1417 {
1418 if (thing4.IsInstalled && thing4.trait is TraitElevator traitElevator && traitElevator.IsFor(zoneTransition.lastZone))
1419 {
1420 return thing4.pos.GetNearestPoint();
1421 }
1422 }
1423 Thing randomThing = EClass._map.props.installed.traits.GetRandomThing<TraitElevator>();
1424 if (randomThing != null)
1425 {
1426 return randomThing.pos.GetNearestPoint();
1427 }
1428 }
1429 Thing thing = null;
1430 thing = map.props.installed.traits.GetRandomThing<TraitWaystone>();
1431 if (thing != null)
1432 {
1433 return thing.pos.GetNearestPoint();
1434 }
1435 thing = map.props.installed.traits.GetRandomThing<TraitCoreZone>();
1436 if (thing != null)
1437 {
1438 return thing.pos.GetNearestPoint();
1439 }
1440 if (base.lv == 0)
1441 {
1442 goto IL_04a1;
1443 }
1444 flag = base.lv <= 0;
1445 break;
1446 }
1447 case ZoneTransition.EnterState.Center:
1448 case ZoneTransition.EnterState.Encounter:
1449 if (map.config.embarkX != 0)
1450 {
1451 return new Point(map.config.embarkX, map.config.embarkY);
1452 }
1453 return map.GetCenterPos().GetNearestPoint(allowBlock: false, allowChara: false);
1454 case ZoneTransition.EnterState.Top:
1455 return map.bounds.GetTopPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1456 case ZoneTransition.EnterState.Right:
1457 return map.bounds.GetRightPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1458 case ZoneTransition.EnterState.Bottom:
1459 return map.bounds.GetBottomPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1460 case ZoneTransition.EnterState.Left:
1461 return map.bounds.GetLeftPos(rate).GetNearestPoint(allowBlock: false, allowChara: false);
1462 case ZoneTransition.EnterState.Dead:
1463 case ZoneTransition.EnterState.Exact:
1464 case ZoneTransition.EnterState.PortalReturn:
1465 case ZoneTransition.EnterState.Fall:
1466 if (zoneTransition.x == 0 && EClass._map.bounds.x != 0)
1467 {
1468 return new Point(map.config.embarkX, map.config.embarkY);
1469 }
1470 return new Point(zoneTransition.x, zoneTransition.z);
1471 case ZoneTransition.EnterState.RandomVisit:
1472 return GetRandomVisitPos(c);
1473 case ZoneTransition.EnterState.Down:
1474 flag = true;
1475 break;
1476 case ZoneTransition.EnterState.Up:
1477 flag = false;
1478 break;
1479 }
1480 break;
1481 IL_04a1:
1482 enterState = ZoneTransition.EnterState.Center;
1483 }
1484 foreach (Thing thing5 in map.things)
1485 {
1486 if (thing5.trait is TraitNewZone { zone: not null } traitNewZone && zone != null && traitNewZone.zone.uid == zone.uid)
1487 {
1488 if (c != null && enterState != 0)
1489 {
1490 c.SetDir(traitNewZone.owner.dir);
1491 }
1492 return traitNewZone.GetExitPos();
1493 }
1494 }
1495 foreach (Thing thing6 in map.things)
1496 {
1497 if (thing6.trait is TraitNewZone traitNewZone2 && ((flag && traitNewZone2.IsUpstairs) || (!flag && traitNewZone2.IsDownstairs)))
1498 {
1499 if (c != null && enterState != 0)
1500 {
1501 c.SetDir(traitNewZone2.owner.dir);
1502 }
1503 return traitNewZone2.GetExitPos();
1504 }
1505 }
1506 return GetRandomVisitPos(c);
1507 }
override void SetDir(int d)
Definition: Chara.cs:3484
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:1100
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:562
EnterState state
virtual ZoneTransition.EnterState RegionEnterState
Definition: Zone.cs:170
Point GetRandomVisitPos(Chara c)
Definition: Zone.cs:1509
Zone GetZoneAt(int _x, int _y)
Definition: Zone.cs:3482

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

Referenced by Chara.MoveZone().

◆ GetSpawnPos() [2/2]

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

Definition at line 2690 of file Zone.cs.

2691 {
2692 Point point = new Point();
2693 for (int i = 0; i < tries; i++)
2694 {
2695 point = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2696 if (!point.IsValid || point.cell.hasDoor || point.IsSync)
2697 {
2698 continue;
2699 }
2700 switch (type)
2701 {
2702 case SpawnPosition.Guest:
2703 {
2704 Room room = point.cell.room;
2705 if (room != null && room.data.accessType != 0)
2706 {
2707 continue;
2708 }
2709 break;
2710 }
2711 case SpawnPosition.Outside:
2712 if (point.cell.HasRoof || point.cell.light > 0)
2713 {
2714 continue;
2715 }
2716 break;
2717 }
2718 return point;
2719 }
2720 return null;
2721 }
SpawnPosition
Definition: SpawnPosition.cs:2
BaseArea.AccessType accessType
Definition: AreaData.cs:42
Room room
Definition: Cell.cs:102
byte light
Definition: Cell.cs:60
bool HasRoof
Definition: Cell.cs:648
bool hasDoor
Definition: Cell.cs:258
bool IsSync
Definition: Point.cs:332

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

3483 {
3484 if (IsRegion)
3485 {
3486 foreach (Spatial child in children)
3487 {
3488 if (!(child is Zone_Field) && _x == child.x && _y == child.y)
3489 {
3490 return child as Zone;
3491 }
3492 }
3493 }
3494 foreach (Spatial child2 in children)
3495 {
3496 if (_x == child2.x && _y == child2.y)
3497 {
3498 return child2 as Zone;
3499 }
3500 }
3501 return null;
3502 }

References Spatial.x, and Spatial.y.

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

◆ GrowPlants()

void Zone.GrowPlants ( VirtualDate  date)
inline

Definition at line 3375 of file Zone.cs.

3376 {
3377 bool num = (EClass.player.isAutoFarming = IsPCFaction && EClass.Branch.policies.IsActive(2707));
3378 int weedChance = 1;
3380 {
3381 weedChance += (EClass.debug.enable ? 100000 : 20) + EClass.Branch.Evalue(2703) * 10;
3382 }
3383 if (date.sunMap == null)
3384 {
3385 date.BuildSunMap();
3386 }
3387 if (num)
3388 {
3389 HashSet<int> hashSet = new HashSet<int>();
3390 foreach (Thing thing in EClass._map.things)
3391 {
3392 if (!thing.IsInstalled || !(thing.trait is TraitSpotFarm traitSpotFarm))
3393 {
3394 continue;
3395 }
3396 foreach (Point item in traitSpotFarm.ListPoints(null, onlyPassable: false))
3397 {
3398 hashSet.Add(item.index);
3399 }
3400 }
3401 Perform(hashSet);
3402 EClass.player.isAutoFarming = false;
3403 Perform(hashSet);
3404 }
3405 else
3406 {
3407 Perform(null);
3408 }
3409 void Perform(HashSet<int> farmMap)
3410 {
3411 bool isWinter = date.IsWinter;
3412 EClass._map.bounds.ForeachCell(delegate(Cell c)
3413 {
3414 if (farmMap != null)
3415 {
3417 {
3418 if (!farmMap.Contains(c.index))
3419 {
3420 return;
3421 }
3422 }
3423 else if (farmMap.Contains(c.index))
3424 {
3425 return;
3426 }
3427 }
3428 if (c.decal != 0 && EClass.rnd(3) == 0)
3429 {
3430 c.decal = 0;
3431 }
3432 if (GrowPlant)
3433 {
3434 if (c.growth != null)
3435 {
3436 bool flag = false;
3437 if (!EClass.player.isAutoFarming && c.growth.HaltGrowth() && (c.IsFarmField || c.IsTopWater) && (!isWinter || !date.IsRealTime))
3438 {
3439 flag = true;
3440 }
3441 PlantData plantData = map.TryGetPlant(c);
3442 if (!flag && (plantData == null || plantData.fert >= 0))
3443 {
3444 c.TryGrow(date);
3445 }
3446 if (isWinter && plantData != null && c.growth != null && c.growth.NeedSunlight && plantData.fert >= 0 && (EClass.rnd(4) == 0 || c.growth.stage.idx == 0))
3447 {
3448 if (date.sunMap == null)
3449 {
3450 date.BuildSunMap();
3451 }
3452 if (!date.sunMap.Contains(c.index) && !c.growth.CanGrow(date))
3453 {
3454 c.growth.Perish();
3455 }
3456 }
3457 }
3458 else if (c.detail != null)
3459 {
3460 c.Things.ForeachReverse(delegate(Thing t)
3461 {
3462 if (t.IsInstalled && t.trait is TraitSeed && !t.isSale)
3463 {
3464 (t.trait as TraitSeed).TrySprout(force: false, sucker: false, date);
3465 }
3466 });
3467 }
3468 else if (EClass.rnd(20) == 0 && GrowWeed && c.CanGrowWeed && EClass.rnd(weedChance) == 0)
3469 {
3470 biome.Populate(c.GetPoint());
3471 if (c.growth != null)
3472 {
3473 c.growth.SetStage(0);
3474 }
3475 }
3476 }
3477 c.isWatered = false;
3478 });
3479 }
3480 }
void Populate(Point point, bool interior=false, float mtpDensity=1f)
byte decal
Definition: Cell.cs:44
CellDetail detail
Definition: Cell.cs:92
Point GetPoint()
Definition: Cell.cs:1101
bool CanGrowWeed
Definition: Cell.cs:742
int index
Definition: Cell.cs:114
bool IsWinter
Definition: Date.cs:186
int Evalue(int ele)
PolicyManager policies
Stage stage
Definition: GrowSystem.cs:101
virtual bool NeedSunlight
Definition: GrowSystem.cs:93
bool CanGrow(VirtualDate date)
Definition: GrowSystem.cs:268
PlantData TryGetPlant(Point p)
Definition: Map.cs:1942
bool isAutoFarming
Definition: Player.cs:1178
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:346
virtual bool GrowPlant
Definition: Zone.cs:344

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

◆ Import()

ZoneExportData Zone.Import ( string  path)
inline

Definition at line 3122 of file Zone.cs.

3123 {
3124 ZipFile zipFile = ZipFile.Read(path);
3125 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
3126 zipFile.ExtractAll(pathTemp);
3127 zipFile.Dispose();
3128 return IO.LoadFile<ZoneExportData>(pathTemp + "export") ?? new ZoneExportData();
3129 }

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

◆ ImportDialog()

void Zone.ImportDialog ( string  dir = null)
inline

Definition at line 3185 of file Zone.cs.

3186 {
3188 {
3189 string[] array = StandaloneFileBrowser.OpenFilePanel("Import Zone", dir ?? CorePath.ZoneSave, "z", multiselect: false);
3190 if (array.Length != 0)
3191 {
3192 Zone_User zone_User = SpatialGen.Create("user", EClass.world.region, register: true) as Zone_User;
3193 zone_User.path = array[0];
3194 Thing thing = ThingGen.Create("teleporter");
3195 thing.c_uidZone = zone_User.uid;
3196 EClass._zone.AddCard(thing, EClass.pc.pos);
3197 }
3198 });
3199 }
static string[] OpenFilePanel(string title, string directory, string extension, bool multiselect)

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

Referenced by CoreDebug.InitDebugCommands().

◆ IsCrime()

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

Definition at line 3504 of file Zone.cs.

3505 {
3506 if (act.IsHostileAct && HasLaw && !IsPCFaction && c.IsPC)
3507 {
3508 return true;
3509 }
3510 return false;
3511 }
virtual bool IsHostileAct
Definition: ACT.cs:129
virtual bool HasLaw
Definition: Zone.cs:226

References Act.IsHostileAct, and Chara.IsPC.

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

◆ IsImportValid()

static bool Zone.IsImportValid ( string  path)
inlinestatic

Definition at line 3201 of file Zone.cs.

3202 {
3203 try
3204 {
3205 return Map.GetMetaData(path)?.IsValidVersion() ?? false;
3206 }
3207 catch (Exception ex)
3208 {
3209 EClass.ui.Say(ex.Message);
3210 return false;
3211 }
3212 }
bool IsValidVersion()
Definition: MapMetaData.cs:31
static MapMetaData GetMetaData(string pathZip)
Definition: Map.cs:738

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

Referenced by TraitMoongate.UseMoongate().

◆ ListLandFeats()

List< Element > Zone.ListLandFeats ( )
inline

Definition at line 3067 of file Zone.cs.

3068 {
3069 if (landFeats == null)
3070 {
3071 landFeats = new List<int>();
3073 string[] listBase = IDBaseLandFeat.Split(',');
3074 string[] array = listBase;
3075 foreach (string text in array)
3076 {
3077 if (!text.IsEmpty())
3078 {
3079 landFeats.Add(EClass.sources.elements.alias[text].id);
3080 }
3081 }
3082 if (listBase.Length == 1)
3083 {
3084 List<SourceElement.Row> list = EClass.sources.elements.rows.Where(delegate(SourceElement.Row e)
3085 {
3086 if (e.category != "landfeat" || e.chance == 0)
3087 {
3088 return false;
3089 }
3090 bool flag = true;
3091 string[] tag = e.tag;
3092 foreach (string text2 in tag)
3093 {
3094 if (text2.StartsWith("bf"))
3095 {
3096 flag = false;
3097 if (listBase[0] == text2)
3098 {
3099 flag = true;
3100 break;
3101 }
3102 }
3103 }
3104 return flag ? true : false;
3105 }).ToList();
3106 SourceElement.Row row = list.RandomItemWeighted((SourceElement.Row e) => e.chance);
3107 landFeats.Add(row.id);
3108 list.Remove(row);
3109 row = list.RandomItemWeighted((SourceElement.Row e) => e.chance);
3110 landFeats.Add(row.id);
3111 }
3112 Rand.SetSeed();
3113 }
3114 List<Element> list2 = new List<Element>();
3115 foreach (int landFeat in landFeats)
3116 {
3117 list2.Add(Element.Create(landFeat, 1));
3118 }
3119 return list2;
3120 }
static Element Create(int id, int v=0)
Definition: ELEMENT.cs:1100
virtual string IDBaseLandFeat
Definition: Zone.cs:144
List< int > landFeats
Definition: Zone.cs:55

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

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

◆ ListMinions()

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

Definition at line 3678 of file Zone.cs.

3679 {
3680 List<Chara> list = new List<Chara>();
3681 foreach (Chara chara in EClass._map.charas)
3682 {
3683 if (chara.c_uidMaster == c.uid && chara.c_minionType == MinionType.Default)
3684 {
3685 list.Add(chara);
3686 }
3687 }
3688 return list;
3689 }

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

◆ ModDevelopment()

void Zone.ModDevelopment ( int  a)
inline

Definition at line 3582 of file Zone.cs.

3583 {
3584 base.development += a;
3585 if (a > 0)
3586 {
3587 Msg.Say("gainDevelopment", Name, a.ToString() ?? "");
3588 }
3589 }

References Msg.Say().

◆ ModInfluence()

void Zone.ModInfluence ( int  a)
inline

Definition at line 3572 of file Zone.cs.

3573 {
3574 base.influence += a;
3575 if (a > 0)
3576 {
3577 Msg.Say("gainInfluence", Name, a.ToString() ?? "");
3578 }
3579 Tutorial.Reserve("influence");
3580 }

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

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

◆ OnActivate()

virtual void Zone.OnActivate ( )
inlinevirtual

◆ OnAdvanceHour()

virtual void Zone.OnAdvanceHour ( )
inlinevirtual

Reimplemented in Region.

Definition at line 1164 of file Zone.cs.

1165 {
1166 }

Referenced by GameDate.AdvanceHour().

◆ OnAfterCreate()

override void Zone.OnAfterCreate ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 573 of file Zone.cs.

574 {
575 if (AddPrefix)
576 {
577 if (GetTopZone() == this)
578 {
579 base.idPrefix = EClass.sources.zoneAffixes.rows.RandomItem().id;
580 }
581 else
582 {
583 base.idPrefix = GetTopZone().idPrefix;
584 }
585 }
586 }
SourceZoneAffix zoneAffixes
int idPrefix
Definition: Spatial.cs:130
virtual bool AddPrefix
Definition: Zone.cs:280

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

◆ OnAfterSimulate()

virtual void Zone.OnAfterSimulate ( )
inlinevirtual

Reimplemented in Zone_WindRest.

Definition at line 1160 of file Zone.cs.

1161 {
1162 }

◆ OnBeforeDeactivate()

virtual void Zone.OnBeforeDeactivate ( )
inlinevirtual

Reimplemented in Zone_Tent.

Definition at line 1144 of file Zone.cs.

1145 {
1146 }

◆ OnBeforeSimulate()

virtual void Zone.OnBeforeSimulate ( )
inlinevirtual

Reimplemented in Zone_DungeonPuppy, and Zone_Nymelle.

Definition at line 1152 of file Zone.cs.

1153 {
1154 }

◆ OnChildNumChange()

void Zone.OnChildNumChange ( Card  c)
inline

Implements ICardParent.

Definition at line 1911 of file Zone.cs.

1912 {
1913 }

◆ OnCreate()

override void Zone.OnCreate ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 567 of file Zone.cs.

568 {
569 events.zone = this;
570 base.lv = StartLV;
571 }
virtual int StartLV
Definition: Zone.cs:406

References StartLV.

◆ OnCreateBP()

virtual void Zone.OnCreateBP ( )
inlinevirtual

Reimplemented in Zone_Arena2, and Zone_Harvest.

Definition at line 2336 of file Zone.cs.

2337 {
2338 }

◆ OnDeactivate()

virtual void Zone.OnDeactivate ( )
inlinevirtual

Definition at line 1148 of file Zone.cs.

1149 {
1150 }

◆ OnGenerateMap()

virtual void Zone.OnGenerateMap ( )
inlinevirtual

Reimplemented in Zone_Arena2, Zone_CurryRuinDungeon, Zone_CursedManor, Zone_CursedManorDungeon, Zone_Dungeon, 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 2534 of file Zone.cs.

2535 {
2537 {
2538 foreach (Chara chara in EClass._map.charas)
2539 {
2540 if (!chara.IsGlobal && chara.hostility < Hostility.Neutral && chara.OriginalHostility < Hostility.Friend)
2541 {
2542 Hostility hostility2 = (chara.c_originalHostility = Hostility.Neutral);
2543 chara.hostility = hostility2;
2544 }
2545 }
2546 }
2547 if (PrespawnRate != 0f && !IsSkyLevel)
2548 {
2549 for (int i = 0; i < (int)((float)MaxSpawn * PrespawnRate); i++)
2550 {
2551 SpawnMob();
2552 }
2553 }
2558 }
Hostility
Definition: Hostility.cs:2
Hostility OriginalHostility
Definition: Chara.cs:469
Hostility hostility
Definition: Chara.cs:289
virtual float PrespawnRate
Definition: Zone.cs:324
virtual int MaxSpawn
Definition: Zone.cs:310
virtual bool IsSkyLevel
Definition: Zone.cs:264
Chara TryGenerateEvolved(bool force=false, Point p=null)
Definition: Zone.cs:2587
void TryGenerateShrine()
Definition: Zone.cs:2633
void TryGenerateOre()
Definition: Zone.cs:2560
virtual bool MakeEnemiesNeutral
Definition: Zone.cs:231
void TryGenerateBigDaddy()
Definition: Zone.cs:2607

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

2687 {
2688 }

Referenced by MapGenDungen.OnGenerateTerrain().

◆ OnInspect()

void Zone.OnInspect ( )
inline

Implements IInspect.

Definition at line 3227 of file Zone.cs.

3228 {
3229 }

◆ OnKillGame()

void Zone.OnKillGame ( )
inline

Definition at line 1680 of file Zone.cs.

1681 {
1682 foreach (Thing thing in map.things)
1683 {
1684 if (thing.renderer.hasActor)
1685 {
1686 thing.renderer.KillActor();
1687 }
1688 }
1689 }
void KillActor()
CardRenderer renderer
Definition: Card.cs:61

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

Referenced by Game.Kill().

◆ OnLoad()

override void Zone.OnLoad ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 1861 of file Zone.cs.

1862 {
1863 if (branch != null)
1864 {
1865 branch.SetOwner(this);
1866 }
1867 events.OnLoad(this);
1868 }
void SetOwner(Zone zone)
void OnLoad(Zone _zone)

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

◆ OnRegenerate()

virtual void Zone.OnRegenerate ( )
inlinevirtual

Reimplemented in Zone_LittleGarden.

Definition at line 1136 of file Zone.cs.

1137 {
1138 }

◆ OnSimulateDay()

void Zone.OnSimulateDay ( VirtualDate  date)
inline

Definition at line 3340 of file Zone.cs.

3341 {
3342 if (base.IsPlayerFaction)
3343 {
3344 branch.OnSimulateDay(date);
3345 }
3346 }
void OnSimulateDay(VirtualDate date)

References FactionBranch.OnSimulateDay().

Referenced by VirtualDate.SimulateDay().

◆ OnSimulateHour()

void Zone.OnSimulateHour ( VirtualDate  date)
inline

Definition at line 3285 of file Zone.cs.

3286 {
3287 if (base.IsPlayerFaction)
3288 {
3289 branch.OnSimulateHour(date);
3290 }
3292 if (date.IsRealTime)
3293 {
3294 foreach (Thing thing in EClass._map.things)
3295 {
3296 if (thing.IsInstalled)
3297 {
3298 thing.trait.TryToggle();
3299 }
3300 }
3302 }
3303 EClass._map.things.ForeachReverse(delegate(Thing t)
3304 {
3305 t.OnSimulateHour(date);
3306 });
3307 foreach (Thing sucker in Suckers)
3308 {
3309 sucker.Destroy();
3310 }
3311 Suckers.Clear();
3312 if (RespawnRate != 0f)
3313 {
3314 int num = 0;
3315 foreach (Chara chara in map.charas)
3316 {
3317 if (!chara.IsGlobal)
3318 {
3319 num++;
3320 }
3321 }
3322 if (num < MaxRespawn)
3323 {
3324 for (int i = 0; i < RespawnPerHour; i++)
3325 {
3326 SpawnMob();
3327 }
3328 }
3329 }
3330 if (!date.IsRealTime && EClass.rnd(24) == 0)
3331 {
3332 RainWater();
3333 }
3334 if (date.hour == 6)
3335 {
3336 GrowPlants(date);
3337 }
3338 }
virtual void OnSimulateHour(VirtualDate date)
Definition: Card.cs:6464
void DecayNatural(int hour=1)
Definition: Card.cs:6473
int hour
Definition: Date.cs:74
void OnSimulateHour(VirtualDate date)
virtual void TryToggle()
Definition: Trait.cs:1131
bool IsRealTime
Definition: VirtualDate.cs:7
virtual int RespawnPerHour
Definition: Zone.cs:340
virtual float RespawnRate
Definition: Zone.cs:326
static List< Thing > Suckers
Definition: Zone.cs:80
void GrowPlants(VirtualDate date)
Definition: Zone.cs:3375
int MaxRespawn
Definition: Zone.cs:312

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

3349 {
3350 if (base.IsPlayerFaction)
3351 {
3352 branch.OnSimulateMonth(date);
3353 }
3354 if (date.IsRealTime)
3355 {
3357 }
3358 }
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 1056 of file Zone.cs.

1057 {
1058 if (EClass.world.date.IsExpired(base.dateRevive))
1059 {
1061 Revive();
1062 List<Chara> list = new List<Chara>();
1063 foreach (Chara chara in EClass._map.charas)
1064 {
1065 chara.TryRestock(onCreate: false);
1066 if (!chara.IsPCFaction)
1067 {
1068 chara.c_fur = 0;
1069 }
1070 if (chara.IsMinion && chara.master != null && !chara.master.IsPCParty)
1071 {
1072 list.Add(chara);
1073 }
1074 }
1075 foreach (Chara item in list)
1076 {
1077 item.Destroy();
1078 }
1079 }
1082 events.OnVisit();
1083 OnActivate();
1084 UpdateQuests();
1086 isSimulating = true;
1087 Simulate();
1088 isSimulating = false;
1090 if (EClass.Branch != null)
1091 {
1093 }
1094 base.lastActive = EClass.world.date.GetRaw();
1095 if (!EClass.game.isLoading)
1096 {
1097 base.visitCount++;
1098 }
1099 base.version = EClass.core.version.GetInt();
1100 }
Version version
Definition: BaseCore.cs:17
override bool IsPCFaction
Definition: Chara.cs:669
void TryRestock(bool onCreate)
Definition: Chara.cs:4610
void OnAfterSimulate()
void AssignCharas()
Definition: RoomManager.cs:39
void Revive()
Definition: Zone.cs:1102
void Simulate()
Definition: Zone.cs:1168
virtual void OnAfterSimulate()
Definition: Zone.cs:1160
void RefreshCriminal()
Definition: Zone.cs:3513
virtual void OnBeforeSimulate()
Definition: Zone.cs:1152
virtual void OnActivate()
Definition: Zone.cs:1140
void ResetHostility()
Definition: Zone.cs:2670
void UpdateQuests(bool force=false)
Definition: Zone.cs:3591
int GetInt()
Definition: Version.cs:21

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

◆ OnVisitNewMapOrRegenerate()

virtual void Zone.OnVisitNewMapOrRegenerate ( )
inlinevirtual

Reimplemented in Zone_Yowyn.

Definition at line 1156 of file Zone.cs.

1157 {
1158 }

◆ RainWater()

void Zone.RainWater ( )
inline

Definition at line 3360 of file Zone.cs.

3361 {
3363 {
3364 return;
3365 }
3366 EClass._map.bounds.ForeachCell(delegate(Cell c)
3367 {
3368 if (c.IsFarmField && !c.HasRoof)
3369 {
3370 c.isWatered = true;
3371 }
3372 });
3373 }
bool IsFarmField
Definition: Cell.cs:730
bool IsIndoor
Definition: Map.cs:131

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

Referenced by Weather.SetCondition().

◆ RefreshBGM()

void Zone.RefreshBGM ( )
inline

Definition at line 2975 of file Zone.cs.

2976 {
2978 {
2979 return;
2980 }
2982 Playlist playlist = map.plDay;
2983 foreach (ZoneEvent item in events.list)
2984 {
2985 if (item.playlist != null)
2986 {
2987 playlist = item.playlist;
2988 }
2989 }
2990 if (IDPlaylistOverwrite != null)
2991 {
2992 playlist = EClass.Sound.GetPlaylist(IDPlaylistOverwrite);
2993 }
2995 {
2996 Room room = EClass.pc.pos.cell.room;
2997 if (room != null && room.lot != null && room.lot.idBGM != 0)
2998 {
2999 playlist = EClass.Sound.plLot;
3000 if (playlist.list[0].data?.id != room.lot.idBGM)
3001 {
3002 playlist.list[0].data = EClass.core.refs.dictBGM.TryGetValue(room.lot.idBGM);
3003 playlist.Reset();
3004 if (!LayerDrama.keepBGM)
3005 {
3006 EClass.Sound.StopBGM(1f);
3007 }
3008 }
3009 }
3010 }
3012 EClass.Sound.SwitchPlaylist(playlist, !LayerDrama.keepBGM);
3013 }
bool IsInActiveZone
Definition: Chara.cs:836
void SetBGMInterval()
Definition: CoreConfig.cs:1002
Dictionary< int, BGMData > dictBGM
Definition: CoreRef.cs:385
CoreRef refs
Definition: Core.cs:51
static bool keepBGM
Definition: LayerDrama.cs:10
int idBGM
Definition: Lot.cs:16
Playlist plDay
Definition: Map.cs:77
Lot lot
Definition: Room.cs:21
List< ZoneEvent > list
virtual string IDPlaylistOverwrite
Definition: Zone.cs:140

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

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

◆ RefreshCriminal()

void Zone.RefreshCriminal ( )
inline

Definition at line 3513 of file Zone.cs.

3514 {
3515 bool flag = EClass.player.IsCriminal && HasLaw && !AllowCriminal && !IsPCFaction;
3516 Hostility hostility = (flag ? Hostility.Neutral : Hostility.Friend);
3517 foreach (Chara chara in EClass._map.charas)
3518 {
3519 if (chara.trait is TraitGuard)
3520 {
3521 chara.hostility = hostility;
3522 if (!flag && chara.enemy != null && chara.enemy.IsPCParty)
3523 {
3524 chara.SetEnemy();
3525 }
3526 }
3527 }
3528 }
Chara enemy
Definition: Chara.cs:86
Chara SetEnemy(Chara c=null)
Definition: Chara.cs:6193
virtual bool AllowCriminal
Definition: Zone.cs:244

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

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

◆ RefreshElectricity()

void Zone.RefreshElectricity ( )
inline

Definition at line 2847 of file Zone.cs.

2848 {
2849 dirtyElectricity = false;
2850 bool flag = GetSoilCost() > MaxSoil;
2851 base.electricity = elements.Value(2201) * 10 + BaseElectricity;
2852 foreach (Thing thing in EClass._map.things)
2853 {
2854 if (thing.IsInstalled && thing.trait.Electricity != 0 && (thing.isOn || thing.trait.Electricity > 0))
2855 {
2856 base.electricity += thing.trait.Electricity;
2857 }
2858 }
2859 if (!flag)
2860 {
2861 EClass._map.bounds.ForeachCell(delegate(Cell c)
2862 {
2863 if (c.sourceObj.id == 118 && c.growth.IsMature)
2864 {
2865 base.electricity += 20;
2866 }
2867 });
2868 }
2869 foreach (Thing thing2 in EClass._map.things)
2870 {
2871 if (thing2.IsInstalled)
2872 {
2873 thing2.trait.TryToggle();
2874 }
2875 }
2876 }
bool isOn
Definition: Card.cs:542
bool dirtyElectricity
Definition: Zone.cs:68

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

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

◆ RefreshHat()

void Zone.RefreshHat ( )
inline

Definition at line 1046 of file Zone.cs.

1047 {
1048 if (idHat != null && EClass.world.date.IsExpired(base.dateHat))
1049 {
1050 idHat = null;
1051 base.dateHat = 0;
1052 }
1053 sourceHat = ((idHat != null) ? EClass.sources.cards.map[idHat] : ((IDHat != null) ? EClass.sources.cards.map[IDHat] : null));
1054 }
Dictionary< string, CardRow > map
Definition: SourceCard.cs:8
SourceCard cards
string idHat
Definition: Spatial.cs:31
virtual string IDHat
Definition: Zone.cs:142
static CardRow sourceHat
Definition: Zone.cs:29

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

Referenced by TraitHat.OnUse().

◆ RefreshListCitizen()

void Zone.RefreshListCitizen ( )
inline

Definition at line 3530 of file Zone.cs.

3531 {
3532 if (base.lv != 0)
3533 {
3534 return;
3535 }
3536 dictCitizen.Clear();
3537 foreach (Chara item in map.charas.Concat(map.deadCharas))
3538 {
3539 if (item.trait.IsCitizen && !item.IsGlobal && !item.isSubsetCard)
3540 {
3541 dictCitizen[item.uid] = item.Name;
3542 }
3543 }
3544 }
Dictionary< int, string > dictCitizen
Definition: Zone.cs:49

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

Referenced by Chara.MakeAlly().

◆ RefreshPlaylist()

void Zone.RefreshPlaylist ( )
inline

Definition at line 2959 of file Zone.cs.

2960 {
2961 if (map.plDay == null)
2962 {
2963 map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList));
2964 }
2965 }

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

2000 {
2001 if (IsActiveZone)
2002 {
2004 }
2005 t.parent = null;
2006 if (t.isChara)
2007 {
2008 t.Chara.currentZone = null;
2009 }
2010 if (t.isThing && !t.trait.IDActorEx.IsEmpty())
2011 {
2013 }
2014 if (t.renderer.hasActor)
2015 {
2017 }
2018 }
override void OnLeaveScreen()
virtual bool isChara
Definition: Card.cs:2071
void OnCardRemovedFromZone(Card t)
Definition: Map.cs:825
void RemoveActorEx(Card c)
Definition: Scene.cs:1027
virtual string IDActorEx
Definition: Trait.cs:174

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

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

◆ ResetHostility()

void Zone.ResetHostility ( )
inline

Definition at line 2670 of file Zone.cs.

2671 {
2672 foreach (Chara chara in EClass._map.charas)
2673 {
2674 if (!chara.source.hostility.IsEmpty() && chara.source.hostility.ToEnum<Hostility>() >= Hostility.Friend && !chara.IsPCFactionOrMinion)
2675 {
2676 chara.c_originalHostility = (Hostility)0;
2677 }
2678 chara.hostility = chara.OriginalHostility;
2679 if (chara.enemy != null && (chara.enemy.IsPCFaction || chara.IsPCFaction))
2680 {
2681 chara.SetEnemy();
2682 }
2683 }
2684 }
bool IsPCFactionOrMinion
Definition: Card.cs:2260
SourceChara.Row source
Definition: Chara.cs:156

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

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

◆ ResetPlaylist()

void Zone.ResetPlaylist ( )
inline

Definition at line 2967 of file Zone.cs.

2968 {
2969 map._plDay.Clear();
2970 UnityEngine.Object.DestroyImmediate(map.plDay);
2971 map.plDay = null;
2973 }

References Map._plDay, and Map.plDay.

◆ Revive()

void Zone.Revive ( )
inline

Definition at line 1102 of file Zone.cs.

1103 {
1104 base.dateRevive = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRevive;
1105 if (ShouldAutoRevive)
1106 {
1107 foreach (Chara deadChara in map.deadCharas)
1108 {
1109 if (deadChara.trait.CanAutoRevive && deadChara.CanRevive())
1110 {
1111 deadChara.Revive();
1113 {
1114 deadChara.RemoveBacker();
1115 }
1116 EClass._zone.AddCard(deadChara, (deadChara.orgPos != null && deadChara.orgPos.IsInBounds) ? deadChara.orgPos : deadChara.pos);
1117 }
1118 }
1119 }
1120 foreach (Chara value in EClass.game.cards.globalCharas.Values)
1121 {
1122 if (value.isDead && value.CanRevive() && value.homeZone == this)
1123 {
1124 value.Revive();
1125 Point point = GetSpawnPos(value);
1126 if (value.orgPos != null && value.orgPos.IsInBounds)
1127 {
1128 point = value.orgPos.GetNearestPoint() ?? point;
1129 }
1130 EClass._zone.AddCard(value, point);
1131 }
1132 }
1133 map.deadCharas.Clear();
1134 }
int c_idBacker
Definition: Card.cs:1437
bool CanRevive()
Definition: Chara.cs:5024
void Revive(Point p=null, bool msg=false)
Definition: Chara.cs:5050
Zone homeZone
Definition: Chara.cs:265
bool IsInBounds
Definition: Point.cs:104
virtual bool CanAutoRevive
Definition: TraitChara.cs:20
virtual bool ShouldAutoRevive
Definition: Zone.cs:377

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

Referenced by Map.ResetEditorPos().

◆ SetAlarm()

virtual void Zone.SetAlarm ( bool  enable)
inlinevirtual

Reimplemented in Zone_CurryRuinDungeon.

Definition at line 3546 of file Zone.cs.

3547 {
3548 base.isAlarmSet = enable;
3549 if (enable)
3550 {
3551 foreach (Chara chara in EClass._map.charas)
3552 {
3553 if (!chara.IsPCFactionOrMinion)
3554 {
3555 chara.SetHostility(Hostility.Enemy);
3556 }
3557 }
3558 Msg.Say("alarm");
3559 Msg.Say("alarm2");
3560 SE.Play("alarm");
3561 return;
3562 }
3563 foreach (Chara chara2 in EClass._map.charas)
3564 {
3565 if (!chara2.IsPCFactionOrMinion)
3566 {
3567 chara2.SetHostility(Hostility.Neutral);
3568 }
3569 }
3570 }
Chara SetHostility(Hostility h)
Definition: Chara.cs:1432

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

2955 {
2956 SetBGM(new List<int> { id }, refresh, fadeDuration);
2957 }

◆ SetBGM() [2/2]

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

Definition at line 2917 of file Zone.cs.

2918 {
2919 map._plDay.Clear();
2920 if (ids.Count > 0)
2921 {
2922 foreach (int id in ids)
2923 {
2924 if (id != -1)
2925 {
2926 map._plDay.Add(id);
2927 }
2928 }
2929 }
2930 UnityEngine.Object.DestroyImmediate(map.plDay);
2931 map.plDay = null;
2933 if (!refresh)
2934 {
2935 return;
2936 }
2937 if (fadeDuration > 0f)
2938 {
2939 EClass.Sound.StopBGM(fadeDuration, playLastBGM: false, delegate
2940 {
2942 {
2943 RefreshBGM();
2944 }
2945 });
2946 }
2947 else
2948 {
2949 EClass.Sound.StopBGM();
2950 RefreshBGM();
2951 }
2952 }
bool IsGameStarted
Definition: Core.cs:84

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

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

◆ ShouldScaleImportedChara()

virtual bool Zone.ShouldScaleImportedChara ( Chara  c)
inlinevirtual

Reimplemented in Zone_QuestDungeon.

Definition at line 539 of file Zone.cs.

540 {
541 return false;
542 }

Referenced by SerializedCards.Restore().

◆ Simulate()

void Zone.Simulate ( )
inline

Definition at line 1168 of file Zone.cs.

1169 {
1170 if (!EClass.game.isLoading && base.visitCount > 0)
1171 {
1172 if (Boss != null && IsNefia)
1173 {
1174 Msg.Say("bossLeave", Boss.Name.ToTitleCase(), EClass._zone.Name);
1177 }
1178 int num = Mathf.Clamp(MinsSinceLastActive, 1, 10000);
1179 foreach (Chara chara2 in EClass._map.charas)
1180 {
1181 if (chara2.hp < 0)
1182 {
1183 chara2.hp = 0;
1184 }
1185 if (!chara2.IsPCParty)
1186 {
1187 if (chara2.mana.value < 0)
1188 {
1189 chara2.mana.value = 0;
1190 }
1191 if (chara2.stamina.value < 0)
1192 {
1193 chara2.stamina.value = 0;
1194 }
1195 }
1196 if (num > 60)
1197 {
1198 chara2.resistCon = null;
1199 }
1200 if (chara2.rarity >= Rarity.Legendary && !chara2.IsPCFaction && num > 0)
1201 {
1202 Msg.ignoreAll = true;
1203 chara2.Cure(CureType.Boss, 20 + num * 10);
1204 chara2.HealHP(Mathf.Max(1, chara2.MaxHP) * Mathf.Min(num, 20) / 20);
1205 chara2.mana.Mod(Mathf.Max(1, chara2.mana.max) * Mathf.Min(num, 20) / 20);
1206 chara2.stamina.Mod(Mathf.Max(1, chara2.stamina.max) * Mathf.Min(num, 20) / 20);
1207 Msg.ignoreAll = false;
1208 }
1209 }
1210 }
1211 Debug.Log("Last Active:" + base.lastActive);
1212 if (base.lastActive == 0 || HourSinceLastActive <= 1 || IsRegion)
1213 {
1214 return;
1215 }
1216 Debug.Log(Name + " Simulate:" + HourSinceLastActive + " hours");
1217 VirtualDate virtualDate = new VirtualDate(HourSinceLastActive);
1218 List<Chara> list = EClass._map.charas.ToList();
1219 int num2 = HourSinceLastActive / 24;
1220 int num3 = 0;
1221 if (num2 > 0)
1222 {
1223 foreach (Chara item in list)
1224 {
1225 if (!item.IsPCParty)
1226 {
1227 item.OnSleep(200, num2);
1228 if (item.conSleep != null)
1229 {
1230 item.conSleep.Kill();
1231 }
1232 if (EClass.rnd(EClass.world.date.IsNight ? 20 : 200) == 0 && !item.IsPCFaction)
1233 {
1234 item.AddCondition<ConSleep>(1000 + EClass.rnd(1000), force: true);
1235 }
1236 if (item.things.Count > 20)
1237 {
1238 item.ClearInventory(ClearInventoryType.Purge);
1239 }
1240 }
1241 }
1242 }
1243 VirtualDate.current = virtualDate;
1244 for (int i = 0; i < HourSinceLastActive; i++)
1245 {
1246 virtualDate.SimulateHour();
1247 if (!virtualDate.IsWinter)
1248 {
1249 num3++;
1250 }
1251 }
1252 EClass._map.things.ForeachReverse(delegate(Thing t)
1253 {
1255 });
1256 VirtualDate.current = null;
1257 if (!IsPCFaction)
1258 {
1259 return;
1260 }
1261 int num4 = 0;
1262 foreach (Chara item2 in list)
1263 {
1264 if (item2.IsPCParty)
1265 {
1266 continue;
1267 }
1268 if (!item2.IsHomeMember())
1269 {
1270 if (item2.id == "bee")
1271 {
1272 num4++;
1273 }
1274 if (num2 > 0 && item2.IsGuest())
1275 {
1276 item2.ChooseNewGoal();
1277 item2.ai.SimulateZone(num2);
1278 }
1279 continue;
1280 }
1281 if (num2 > 0)
1282 {
1283 Goal goalWork = item2.GetGoalWork();
1284 item2.SetAI(goalWork);
1285 if (goalWork is GoalWork)
1286 {
1287 (goalWork as GoalWork).FindWork(item2);
1288 }
1289 item2.ai.SimulateZone(num2);
1290 goalWork = item2.GetGoalHobby();
1291 item2.SetAI(goalWork);
1292 if (goalWork is GoalWork)
1293 {
1294 (goalWork as GoalWork).FindWork(item2);
1295 }
1296 item2.ai.SimulateZone(num2);
1297 }
1298 item2.ChooseNewGoal();
1299 if (item2.conSuspend == null)
1300 {
1301 item2.ai.OnSimulatePosition();
1302 }
1303 }
1304 List<Thing> list2 = new List<Thing>();
1305 foreach (Thing thing in map.things)
1306 {
1307 if (thing.IsInstalled && thing.trait is TraitBeekeep)
1308 {
1309 list2.Add(thing);
1310 }
1311 }
1312 if (num4 >= list2.Count)
1313 {
1314 return;
1315 }
1316 for (int j = num4; j < list2.Count; j++)
1317 {
1318 if (EClass.rnd(200) <= HourSinceLastActive)
1319 {
1320 Chara chara = CharaGen.Create("bee");
1321 AddCard(chara, list2.RandomItem().pos);
1322 Hostility c_originalHostility = (chara.hostility = Hostility.Neutral);
1323 chara.c_originalHostility = c_originalHostility;
1324 }
1325 }
1326 }
ClearInventoryType
CureType
Definition: CureType.cs:2
virtual void OnSimulatePosition()
Definition: AIAct.cs:590
void SimulateZone(int days)
Definition: AIAct.cs:578
virtual void HealHP(int a, HealSource origin=HealSource.None)
Definition: Card.cs:3933
int hp
Definition: Card.cs:242
string Name
Definition: Card.cs:2125
AIAct ai
Definition: Chara.cs:200
ConSuspend conSuspend
Definition: Chara.cs:104
Goal GetGoalWork()
Definition: Chara.cs:8593
override int MaxHP
Definition: Chara.cs:706
Goal GetGoalHobby()
Definition: Chara.cs:8606
Stats mana
Definition: Chara.cs:1152
Stats stamina
Definition: Chara.cs:1144
bool IsHomeMember()
Definition: Chara.cs:6481
bool IsGuest()
Definition: Chara.cs:6506
void ChooseNewGoal()
Definition: Chara.cs:8529
void Cure(CureType type, int p=100, BlessedState state=BlessedState.Normal)
Definition: Chara.cs:9277
bool IsNight
Definition: Date.cs:112
Definition: Goal.cs:4
bool isConquered
Definition: Spatial.cs:382
virtual void Mod(int a)
Definition: Stats.cs:135
virtual int value
Definition: Stats.cs:56
virtual int max
Definition: Stats.cs:68
void SimulateHour()
Definition: VirtualDate.cs:66
int MinsSinceLastActive
Definition: Zone.cs:122
Chara Boss
Definition: Zone.cs:83
int HourSinceLastActive
Definition: Zone.cs:120

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

◆ SpawnAltar()

void Zone.SpawnAltar ( )
inline

Definition at line 2495 of file Zone.cs.

2496 {
2498 {
2499 if (r.points.Count <= 4)
2500 {
2501 return false;
2502 }
2503 map.poiMap.OccyupyPOI(r.points[0]);
2504 List<Point> points = r.points;
2505 Religion randomReligion = EClass.game.religions.GetRandomReligion();
2506 "altarPoint".lang(randomReligion.NameDomain.lang());
2507 Thing thing = ThingGen.Create("altar");
2508 (thing.trait as TraitAltar).SetDeity(randomReligion.id);
2509 Chara t = CharaGen.Create("twintail");
2510 EClass._zone.AddCard(t, points.RandomItem());
2511 for (int i = 0; i < 2 + EClass.rnd(2); i++)
2512 {
2513 Chara t2 = CharaGen.Create("twintail");
2514 EClass._zone.AddCard(t2, points.RandomItem());
2515 }
2516 if (points[0].Installed == null)
2517 {
2518 EClass._zone.AddCard(thing, points[0]).Install();
2519 }
2520 foreach (Point item in points)
2521 {
2522 if (item.x % 3 == 0 && item.z % 2 == 0 && item != points[0] && !item.Equals(points[0].Front) && item.Installed == null)
2523 {
2524 thing = ThingGen.Create("pillar1");
2525 EClass._zone.AddCard(thing, item).Install();
2526 }
2527 item.SetObj();
2528 item.SetFloor(3, 6);
2529 }
2530 return true;
2531 });
2532 }
Crawler start
Definition: CoreRef.cs:214
Crawlers crawlers
Definition: CoreRef.cs:343
ReligionManager religions
Definition: Game.cs:158
POIMap poiMap
Definition: Map.cs:97
Point GetCenter()
Definition: POIMap.cs:13
Cell GetCenterCell(int radius=1)
Definition: POIMap.cs:65
void OccyupyPOI(Point p, int radius=0)
Definition: POIMap.cs:99
Religion GetRandomReligion(bool onlyJoinable=true, bool includeMinor=false)

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

◆ SpawnLostItems()

void Zone.SpawnLostItems ( )
inline

Definition at line 3714 of file Zone.cs.

3715 {
3716 for (int i = 0; i < 2 + EClass.rnd(4); i++)
3717 {
3718 Point point = GetPos();
3719 if (point == null)
3720 {
3721 continue;
3722 }
3723 if (EClass.rnd(30) == 0)
3724 {
3725 Thing thing = ThingGen.Create("purse");
3726 thing.isLostProperty = true;
3727 thing.things.DestroyAll();
3728 int num2 = (thing.c_lockLv = EClass.rndHalf(Mathf.Min(base.development / 10 + 10, 50)));
3729 thing.Add("money", EClass.rndHalf(num2 * 60 + 1000));
3730 if (EClass.rnd(2) == 0)
3731 {
3732 thing.Add("plat", EClass.rnd(4));
3733 }
3734 else
3735 {
3736 thing.Add("medal", EClass.rnd(2));
3737 }
3738 EClass._zone.AddCard(thing, point);
3739 }
3740 else
3741 {
3743 }
3744 }
3745 static Point GetPos()
3746 {
3747 for (int j = 0; j < 10; j++)
3748 {
3749 Point randomPoint = EClass._zone.bounds.GetRandomPoint();
3750 if (!randomPoint.IsBlocked && !randomPoint.HasThing && !randomPoint.HasObj && !randomPoint.HasBlock)
3751 {
3752 return randomPoint;
3753 }
3754 }
3755 return null;
3756 }
3757 }
ThingContainer things
Definition: Card.cs:38
Thing Add(string id, int num=1, int lv=1)
Definition: Card.cs:3062
static int rndHalf(int a)
Definition: EClass.cs:87
void DestroyAll(Func< Thing, bool > funcExclude=null)
static Thing CreateFromCategory(string idCat, int lv=-1)
Definition: ThingGen.cs:75
MapBounds bounds
Definition: Zone.cs:46

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

◆ SpawnMob()

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

Definition at line 2723 of file Zone.cs.

2724 {
2725 if (setting == null)
2726 {
2728 }
2729 if (pos == null)
2730 {
2731 pos = GetSpawnPos(setting.position, setting.tries);
2732 if (pos == null)
2733 {
2734 pos = GetSpawnPos(SpawnPosition.Random, setting.tries);
2735 if (pos == null)
2736 {
2737 return null;
2738 }
2739 }
2740 }
2742 if (IsUnderwater && EClass.rnd(15) != 0)
2743 {
2745 }
2746 SpawnList spawnList = null;
2747 spawnList = ((setting.idSpawnList != null) ? SpawnList.Get(setting.idSpawnList) : ((EClass._zone is Zone_DungeonYeek && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_yeek", (SourceChara.Row r) => r.race == "yeek" && r.quality == 0) : ((EClass._zone is Zone_DungeonDragon && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_dragon", (SourceChara.Row r) => (r.race == "dragon" || r.race == "drake" || r.race == "wyvern" || r.race == "lizardman" || r.race == "dinosaur") && r.quality == 0) : ((EClass._zone is Zone_DungeonMino && EClass.rnd(5) != 0) ? SpawnListChara.Get("dungeon_mino", (SourceChara.Row r) => r.race == "minotaur" && r.quality == 0) : ((setting.hostility == SpawnHostility.Neutral || (setting.hostility != SpawnHostility.Enemy && Rand.Range(0f, 1f) < ChanceSpawnNeutral)) ? SpawnList.Get("c_neutral") : ((biome.spawn.chara.Count <= 0) ? SpawnList.Get(biome.name, "chara", new CharaFilter
2748 {
2749 ShouldPass = delegate(SourceChara.Row s)
2750 {
2751 if (s.hostility != "")
2752 {
2753 return false;
2754 }
2755 return s.biome == biome.name || s.biome.IsEmpty();
2756 }
2758 int num = ((setting.dangerLv == -1) ? DangerLv : setting.dangerLv);
2759 CardBlueprint cardBlueprint = new CardBlueprint
2760 {
2761 rarity = Rarity.Normal,
2762 idEle = setting.idEle
2763 };
2764 int num2 = ((setting.filterLv == -1) ? num : setting.filterLv);
2765 if (ScaleType == ZoneScaleType.Void)
2766 {
2767 num2 = ((num - 1) % 50 + 5) * 150 / 100;
2768 if (num2 >= 20 && EClass.rnd(100) < num2)
2769 {
2770 num2 = num;
2771 }
2772 }
2773 CardRow cardRow = (setting.id.IsEmpty() ? spawnList.Select(num2, setting.levelRange) : EClass.sources.cards.map[setting.id]);
2774 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)
2775 {
2776 cardRow = EClass.sources.cards.map["santa"];
2778 }
2779 long num3 = ((setting.fixedLv == -1) ? cardRow.LV : setting.fixedLv);
2780 if (ScaleType == ZoneScaleType.Void)
2781 {
2782 num3 = (50L + (long)cardRow.LV) * Mathf.Max(1, (num - 1) / 50);
2783 }
2784 num3 += DangerLvBoost;
2785 if (setting.rarity == Rarity.Random && cardRow.quality == 0)
2786 {
2787 if (EClass.rnd(EClass.pc.HasElement(1271) ? 80 : 100) == 0)
2788 {
2789 cardBlueprint.rarity = Rarity.Legendary;
2790 num3 = num3 * 125 / 100;
2791 }
2792 }
2793 else
2794 {
2795 cardBlueprint.rarity = setting.rarity;
2796 }
2797 if (setting.isBoss)
2798 {
2799 num3 = num3 * 150 / 100;
2800 }
2801 if (setting.isEvolved)
2802 {
2803 num3 = num3 * 2 + 20;
2804 }
2805 if (num3 != cardRow.LV)
2806 {
2807 cardBlueprint.lv = (int)Mathf.Min(num3, 100000000f);
2808 }
2809 CardBlueprint.Set(cardBlueprint);
2810 Chara chara = CharaGen.Create(cardRow.id, num2);
2811 AddCard(chara, pos);
2812 if (setting.forcedHostility.HasValue)
2813 {
2814 Hostility c_originalHostility = (chara.hostility = setting.forcedHostility.Value);
2815 chara.c_originalHostility = c_originalHostility;
2816 }
2817 else
2818 {
2819 switch (chara.id)
2820 {
2821 case "santa":
2822 case "silverwolf":
2823 case "twintail":
2824 case "test17":
2825 if (EClass.pc.HasElement(1270))
2826 {
2827 chara.SetHostility(Hostility.Friend);
2828 }
2829 else if (EClass.pc.HasElement(1271))
2830 {
2831 chara.SetHostility(Hostility.Enemy);
2832 }
2833 break;
2834 }
2835 }
2836 if (setting.isBoss)
2837 {
2838 chara.c_bossType = BossType.Boss;
2839 }
2840 if (setting.isEvolved)
2841 {
2842 chara.c_bossType = BossType.Evolved;
2843 }
2844 return chara;
2845 }
BossType
Definition: BossType.cs:2
SpawnHostility
ZoneScaleType
Definition: ZoneScaleType.cs:2
string GetRandomCharaId()
static void Set(CardBlueprint _bp=null)
int quality
Definition: CardRow.cs:19
string id
Definition: CardRow.cs:7
bool HasElement(int ele, int req=1)
Definition: Card.cs:5816
BiomeProfile biome
Definition: Cell.cs:1075
BiomeProfile Water
Definition: CoreRef.cs:152
BiomeProfile Sand
Definition: CoreRef.cs:150
Biomes biomes
Definition: CoreRef.cs:341
int month
Definition: Date.cs:50
int day
Definition: Date.cs:62
int santa
Definition: Player.cs:572
Flags flags
Definition: Player.cs:1091
static int Range(int min, int max)
Definition: Rand.cs:42
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:31
virtual ZoneScaleType ScaleType
Definition: Zone.cs:408
virtual float ChanceSpawnNeutral
Definition: Zone.cs:342

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

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

◆ TextLevel()

string Zone.TextLevel ( int  _lv)
inline

Definition at line 554 of file Zone.cs.

555 {
556 if (_lv != 0)
557 {
558 if (base.lv <= 0)
559 {
560 return " " + "zoneLevelB".lang((_lv * -1).ToString() ?? "");
561 }
562 return " " + "zoneLevel".lang((_lv + 1).ToString() ?? "");
563 }
564 return "";
565 }
override string ToString()
Definition: Zone.cs:549

References ToString().

◆ ToString()

override string Zone.ToString ( )
inline

Definition at line 549 of file Zone.cs.

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

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

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

◆ TryAddThing()

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

Definition at line 2199 of file Zone.cs.

2200 {
2201 int num = 0;
2202 if (p.cell.detail != null)
2203 {
2204 foreach (Thing thing in p.cell.detail.things)
2205 {
2206 if (thing.placeState == PlaceState.roaming)
2207 {
2208 if (target.TryStackTo(thing))
2209 {
2210 return true;
2211 }
2212 num++;
2213 }
2214 }
2215 }
2216 if (num == 0 || !destroyIfFail)
2217 {
2218 EClass._zone.AddCard(target, p);
2219 return true;
2220 }
2221 target.Destroy();
2222 return false;
2223 }
bool TryStackTo(Thing to)
Definition: Card.cs:3327
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 2102 of file Zone.cs.

2103 {
2104 Thing dest = null;
2105 int priority = -1;
2106 ContainerFlag flag = t.category.GetRoot().id.ToEnum<ContainerFlag>();
2107 if (flag == ContainerFlag.none)
2108 {
2109 flag = ContainerFlag.other;
2110 }
2111 if (containers == null)
2112 {
2113 containers = EClass._map.props.installed.containers;
2114 }
2115 if (SearchDest() != null)
2116 {
2117 return true;
2118 }
2119 if (dest == null)
2120 {
2121 return false;
2122 }
2123 if (add)
2124 {
2125 if (msg)
2126 {
2127 chara.Say("putSharedItem", chara, t, dest.GetName(NameStyle.Full));
2128 }
2129 dest.AddThing(t);
2130 }
2131 return true;
2132 Thing SearchDest()
2133 {
2134 foreach (Thing container in containers)
2135 {
2136 Thing thing = container;
2137 if (thing.trait is TraitShippingChest)
2138 {
2140 }
2141 if ((!sharedOnly || thing.IsSharedContainer) && thing.c_lockLv <= 0 && (thing.things.Count < thing.things.MaxCapacity || thing.things.CanStack(t) != t))
2142 {
2143 Window.SaveData windowSaveData = thing.GetWindowSaveData();
2144 if (windowSaveData != null)
2145 {
2146 if (windowSaveData.priority <= priority || (windowSaveData.noRotten && t.IsDecayed) || (windowSaveData.onlyRottable && t.trait.Decay == 0))
2147 {
2148 continue;
2149 }
2151 if (windowSaveData.userFilter)
2152 {
2153 filterResult = windowSaveData.IsFilterPass(t.GetName(NameStyle.Full, 1));
2154 if (filterResult == Window.SaveData.FilterResult.Block)
2155 {
2156 continue;
2157 }
2158 }
2159 if (filterResult != Window.SaveData.FilterResult.PassWithoutFurtherTest)
2160 {
2161 if (windowSaveData.advDistribution)
2162 {
2163 bool flag2 = false;
2164 foreach (int cat in windowSaveData.cats)
2165 {
2166 if (t.category.uid == cat)
2167 {
2168 flag2 = true;
2169 break;
2170 }
2171 }
2172 if (!flag2)
2173 {
2174 continue;
2175 }
2176 }
2177 else if (windowSaveData.flag.HasFlag(flag))
2178 {
2179 continue;
2180 }
2181 }
2182 priority = windowSaveData.priority;
2183 }
2184 else
2185 {
2186 if (priority != -1)
2187 {
2188 continue;
2189 }
2190 priority = 0;
2191 }
2192 dest = thing;
2193 }
2194 }
2195 return null;
2196 }
2197 }
ContainerFlag
Definition: ContainerFlag.cs:5
NameStyle
Definition: NameStyle.cs:2
Thing container_shipping
Definition: CardManager.cs:52
bool IsDecayed
Definition: Card.cs:2275
int c_lockLv
Definition: Card.cs:964
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:3085
Window.SaveData GetWindowSaveData()
Definition: Card.cs:2504
SourceCategory.Row category
Definition: Card.cs:2037
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6690
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:531
bool IsSharedContainer
Definition: Thing.cs:112
virtual int Decay
Definition: Trait.cs:120
FilterResult IsFilterPass(string text)
Definition: Window.cs:498
ContainerFlag flag
Definition: Window.cs:267
HashSet< int > cats
Definition: Window.cs:119
bool userFilter
Definition: Window.cs:132
bool noRotten
Definition: Window.cs:439
bool onlyRottable
Definition: Window.cs:451
bool advDistribution
Definition: Window.cs:427
Definition: Window.cs:13

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

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

◆ TryAddThingInSpot< T >()

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

Definition at line 2025 of file Zone.cs.

2025 : Trait
2026 {
2027 Thing randomThing = EClass._map.props.installed.traits.GetRandomThing<T>();
2028 if (randomThing == null)
2029 {
2031 return false;
2032 }
2033 if (useContainer && (!t.IsContainer || t.things.Count == 0))
2034 {
2035 List<Thing> list = new List<Thing>();
2036 foreach (Point item in randomThing.trait.ListPoints(null, onlyPassable: false))
2037 {
2038 foreach (Card item2 in item.ListCards())
2039 {
2040 if (item2.IsContainer && !(item2.trait is TraitDeliveryChest))
2041 {
2042 list.Add(item2.Thing);
2043 }
2044 }
2045 }
2046 if (TryAddThingInSharedContainer(t, list, add: true, msg: false, null, sharedOnly: false))
2047 {
2048 return true;
2049 }
2050 }
2051 AddCard(t, randomThing.trait.GetRandomPoint());
2052 return true;
2053 }
virtual Thing Thing
Definition: Card.cs:2046
bool IsContainer
Definition: Card.cs:2077
virtual List< Point > ListPoints(Point center=null, bool onlyPassable=true)
Definition: Trait.cs:754
Point GetRandomPoint(Func< Point, bool > func=null, Chara accessChara=null)
Definition: Trait.cs:736
bool TryAddThingInSharedContainer(Thing t, List< Thing > containers=null, bool add=true, bool msg=false, Chara chara=null, bool sharedOnly=true)
Definition: Zone.cs:2102

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

◆ TryGenerateBigDaddy()

void Zone.TryGenerateBigDaddy ( )
inline

Definition at line 2607 of file Zone.cs.

2608 {
2609 if (!(BigDaddyChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f) <= EClass.rndf(1f)))
2610 {
2611 int num = DangerLv * 125 / 100;
2612 if (num >= 30)
2613 {
2615 {
2616 lv = num
2617 });
2618 }
2619 Chara chara = CharaGen.Create("big_daddy");
2620 if (EClass.pc.HasElement(1270))
2621 {
2622 chara.SetHostility(Hostility.Friend);
2623 }
2624 else if (EClass.pc.HasElement(1271))
2625 {
2626 chara.SetHostility(Hostility.Enemy);
2627 }
2628 EClass._zone.AddCard(chara, GetSpawnPos(SpawnPosition.Random, 10000));
2629 Msg.Say("sign_bigdaddy");
2630 }
2631 }
static float rndf(float a)
Definition: EClass.cs:92
virtual float BigDaddyChance
Definition: Zone.cs:318

References EClass._zone, AddCard(), CharaGen.Create(), Card.HasElement(), EClass.pc, 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 2587 of file Zone.cs.

2588 {
2589 float num = EvolvedChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f);
2590 if (!force && num <= EClass.rndf(1f))
2591 {
2592 return null;
2593 }
2594 Chara chara = SpawnMob(p, SpawnSetting.Evolved());
2595 for (int i = 0; i < 2 + EClass.rnd(2); i++)
2596 {
2597 chara.ability.AddRandom();
2598 }
2599 chara.AddThing(chara.MakeGene(DNA.Type.Default));
2600 if (EClass.rnd(2) == 0)
2601 {
2602 chara.AddThing(chara.MakeGene(DNA.Type.Superior));
2603 }
2604 return chara;
2605 }
void AddRandom()
Thing MakeGene(DNA.Type? type=null)
Definition: Chara.cs:7983
CharaAbility ability
Definition: Chara.cs:422
Definition: DNA.cs:8
Type
Definition: DNA.cs:10
static SpawnSetting Evolved(int fixedLv=-1)
Definition: SpawnSetting.cs:35
virtual float EvolvedChance
Definition: Zone.cs:320

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

2561 {
2562 if (OreChance <= 0f)
2563 {
2564 return;
2565 }
2566 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)
2567 {
2568 byte b = 18;
2569 string group = "ore";
2570 if (EClass.rnd(5) == 0)
2571 {
2572 b++;
2573 group = "gem";
2574 }
2575 SourceMaterial.Row randomMaterial = MATERIAL.GetRandomMaterial(DangerLv, group);
2576 foreach (Point point in r.points)
2577 {
2578 if (point.sourceBlock.ContainsTag("ore"))
2579 {
2580 map.SetObj(point.x, point.z, randomMaterial.id, b, 1, 0);
2581 }
2582 }
2583 return false;
2584 });
2585 }
static SourceMaterial.Row GetRandomMaterial(int lv, string group=null, bool tryLevelMatTier=false)
Definition: MATERIAL.cs:52
int Width
Definition: MapBounds.cs:26
int Height
Definition: MapBounds.cs:28
virtual float OreChance
Definition: Zone.cs:316

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

2634 {
2635 float num = ShrineChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f);
2636 for (int i = 0; i < 3; i++)
2637 {
2638 Rand.SetSeed(base.uid + i);
2639 if (num <= EClass.rndf(1f))
2640 {
2641 continue;
2642 }
2643 Point randomSpace = EClass._map.GetRandomSpace(3, 3);
2644 if (randomSpace == null)
2645 {
2646 continue;
2647 }
2648 randomSpace.x++;
2649 randomSpace.z++;
2650 if (randomSpace.HasThing || randomSpace.HasChara)
2651 {
2652 continue;
2653 }
2654 randomSpace.SetObj();
2657 if (EClass.rnd(EClass.debug.test ? 2 : 15) == 0)
2658 {
2659 EClass._zone.AddCard(ThingGen.Create("pedestal_power"), randomSpace).Install();
2660 EClass._zone.AddCard(ThingGen.Create(EClass.gamedata.godStatues.RandomItemWeighted((GodStatueData a) => a.chance).idThing, -1, DangerLv), randomSpace).Install();
2661 }
2662 else
2663 {
2664 EClass._zone.AddCard(ThingGen.Create("statue_power", -1, DangerLv), randomSpace).Install().SetRandomDir();
2665 }
2666 }
2667 Rand.SetSeed();
2668 }
void SetRandomDir()
Definition: Card.cs:6100
bool test
Definition: CoreDebug.cs:170
static GameData gamedata
Definition: EClass.cs:36
List< GodStatueData > godStatues
Definition: GameData.cs:9
Point GetRandomSpace(int width, int height, int tries=100)
Definition: MapBounds.cs:246
int seedShrine
Definition: Player.cs:938
void SetObj(int id=0, int value=1, int dir=0)
Definition: Point.cs:916
virtual float ShrineChance
Definition: Zone.cs:322

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

2241 : TraitSpot
2242 {
2243 List<T> list = new List<T>();
2244 foreach (Thing thing2 in EClass._map.things)
2245 {
2246 if (thing2.IsInstalled && thing2.trait is T)
2247 {
2248 list.Add(thing2.trait as T);
2249 }
2250 }
2251 foreach (T item in list)
2252 {
2253 foreach (Point item2 in item.ListPoints(null, onlyPassable: false))
2254 {
2255 foreach (Thing thing3 in item2.Things)
2256 {
2257 if (!thing3.IsInstalled || thing3.isSale)
2258 {
2259 continue;
2260 }
2261 if (thing3.things.Count == 0)
2262 {
2263 if (IsValid(thing3, insideContainer: false))
2264 {
2265 return thing3;
2266 }
2267 continue;
2268 }
2269 Thing thing = thing3.things.Find((Thing _t) => IsValid(_t, insideContainer: true));
2270 if (thing != null)
2271 {
2272 return thing;
2273 }
2274 }
2275 }
2276 }
2277 return null;
2278 bool IsValid(Thing t, bool insideContainer)
2279 {
2280 if (t.category.id != idCat || !TraitSalesTag.CanTagSale(t, insideContainer))
2281 {
2282 return false;
2283 }
2284 return true;
2285 }
2286 }
bool isSale
Definition: Card.cs:866
List< Thing > Things
Definition: Point.cs:326
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 2225 of file Zone.cs.

2226 {
2227 foreach (Thing container in EClass._map.props.installed.containers)
2228 {
2229 if (container.IsSharedContainer)
2230 {
2231 Thing thing = container.things.Find(func);
2232 if (thing != null)
2233 {
2234 return thing;
2235 }
2236 }
2237 }
2238 return null;
2239 }

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

2055 : TraitSpot
2056 {
2057 List<T> list = new List<T>();
2058 List<Thing> list2 = new List<Thing>();
2059 foreach (Thing thing in EClass._map.things)
2060 {
2061 if (thing.IsInstalled && thing.trait is T)
2062 {
2063 list.Add(thing.trait as T);
2064 }
2065 }
2066 foreach (T item in list)
2067 {
2068 foreach (Point item2 in item.ListPoints(null, onlyPassable: false))
2069 {
2070 foreach (Thing thing2 in item2.Things)
2071 {
2072 if (!thing2.IsInstalled)
2073 {
2074 continue;
2075 }
2076 if (thing2.things.Count == 0)
2077 {
2078 if (IsValid(thing2))
2079 {
2080 list2.Add(thing2);
2081 }
2082 continue;
2083 }
2084 foreach (Thing item3 in thing2.things.List((Thing _t) => IsValid(_t)))
2085 {
2086 list2.Add(item3);
2087 }
2088 }
2089 }
2090 }
2091 return list2;
2092 bool IsValid(Thing t)
2093 {
2094 if (func != null && !func(t))
2095 {
2096 return false;
2097 }
2098 return true;
2099 }
2100 }
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 2461 of file Zone.cs.

2462 {
2463 bool flag = EClass.pc.HasCondition<ConDrawBacker>();
2464 if (!EClass.debug.enable && EClass.rnd(flag ? 3 : 20) != 0)
2465 {
2466 return;
2467 }
2468 Point randomSurface = EClass._map.bounds.GetRandomSurface();
2469 if (!randomSurface.IsValid)
2470 {
2471 return;
2472 }
2473 Chara c = CharaGen.Create("follower");
2474 EClass._zone.AddCard(c, randomSurface);
2475 (EClass._zone.AddThing("gallows", randomSurface).Install().trait as TraitShackle).Restrain(c);
2476 c.c_rescueState = RescueState.WaitingForRescue;
2477 if (EClass.rnd(flag ? 1 : 2) == 0 || EClass.debug.enable)
2478 {
2480 if (row != null)
2481 {
2482 c.ApplyBacker(row.id);
2483 }
2484 }
2485 Religion faith = EClass.game.religions.dictAll.Values.Where((Religion a) => a != c.faith).RandomItem();
2486 for (int i = 0; i < 3 + EClass.rnd(4); i++)
2487 {
2488 Chara chara = CharaGen.Create("fanatic");
2489 chara.SetFaith(faith);
2490 Point point = randomSurface.GetRandomPoint(4) ?? randomSurface.GetNearestPoint();
2491 EClass._zone.AddCard(chara, point);
2492 }
2493 }
RescueState
Definition: RescueState.cs:2
static int indexFollower
bool HasCondition(string alias)
Definition: Chara.cs:9185
Religion faith
Definition: Chara.cs:437
void SetFaith(string id)
Definition: Chara.cs:1701
Dictionary< string, Religion > dictAll
List< Row > listFollower
Definition: SourceBacker.cs:82

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

◆ UnloadMap()

void Zone.UnloadMap ( )
inline

Definition at line 1691 of file Zone.cs.

1692 {
1693 map = null;
1694 if (bp != null)
1695 {
1696 bp.map = null;
1697 }
1698 if (branch != null)
1699 {
1701 }
1702 Debug.Log("Unloaded Map:" + this);
1703 }
void OnUnloadMap()

References Debug, and FactionBranch.OnUnloadMap().

Referenced by Activate().

◆ UpdateQuests()

void Zone.UpdateQuests ( bool  force = false)
inline

Definition at line 3591 of file Zone.cs.

3592 {
3593 if (!IsPCFaction && (!(this is Zone_Town) || base.lv != 0))
3594 {
3595 return;
3596 }
3597 Debug.Log("Updating Quest:" + force);
3598 List<SourceQuest.Row> list = EClass.sources.quests.rows.Where((SourceQuest.Row a) => a.group == "random").ToList();
3599 int num = 0;
3600 foreach (Chara item in map.charas.Concat(map.deadCharas))
3601 {
3602 if (item.quest != null && !EClass.game.quests.list.Contains(item.quest))
3603 {
3604 if (item.quest.IsExpired || completedQuests.Contains(item.quest.uid) || force)
3605 {
3606 item.quest = null;
3607 }
3608 else
3609 {
3610 num++;
3611 }
3612 }
3613 }
3614 if (EClass._zone.dateQuest > EClass.world.date.GetRaw() && !force)
3615 {
3616 return;
3617 }
3618 EClass._zone.dateQuest = EClass.world.date.GetRaw() + 1440;
3619 int maxQuest = 3;
3620 Rand.UseSeed(base.uid + EClass.player.stats.days / 7 % 100, delegate
3621 {
3622 maxQuest = 4 + EClass.rnd(4);
3623 });
3624 completedQuests.Clear();
3625 List<Zone> list2 = Quest.ListDeliver();
3626 List<Tuple<string, int>> listTag = new List<Tuple<string, int>>();
3627 string[] array = EClass._zone.source.questTag;
3629 {
3630 array = new string[9] { "supply/8", "deliver/7", "food/8", "escort/4", "deliver/4", "monster/0", "war/0", "farm/0", "music/0" };
3631 }
3632 string[] array2 = array;
3633 for (int i = 0; i < array2.Length; i++)
3634 {
3635 string[] array3 = array2[i].Split('/');
3636 listTag.Add(new Tuple<string, int>(array3[0], array3[1].ToInt()));
3637 }
3638 for (int j = 0; j < map.charas.Count * 2; j++)
3639 {
3640 if (num > maxQuest)
3641 {
3642 break;
3643 }
3644 if (num > 15)
3645 {
3646 break;
3647 }
3648 Chara chara = map.charas.RandomItem();
3649 if (!chara.trait.CanGiveRandomQuest || chara.isSubsetCard || chara.homeZone != EClass._zone || chara.IsGuest() || chara.memberType == FactionMemberType.Livestock || (chara.quest != null && !force))
3650 {
3651 continue;
3652 }
3653 SourceQuest.Row row = list.RandomItemWeighted(delegate(SourceQuest.Row a)
3654 {
3655 int num2 = 1;
3656 foreach (Tuple<string, int> item2 in listTag)
3657 {
3658 if (a.tags.Contains(item2.Item1))
3659 {
3660 num2 = item2.Item2;
3661 break;
3662 }
3663 }
3664 if (!EClass._zone.IsPCFaction && a.tags.Contains("bulk"))
3665 {
3666 num2 = 0;
3667 }
3668 return a.chance * num2;
3669 });
3670 if ((!row.tags.Contains("needDestZone") || list2.Count >= 2) && (row.minFame <= 0 || row.minFame < EClass.player.fame || EClass.debug.enable))
3671 {
3672 Quest.Create(row.id, null, chara);
3673 num++;
3674 }
3675 }
3676 }
QuestManager quests
Definition: Game.cs:179
int days
Definition: Player.cs:75
Stats stats
Definition: Player.cs:1013
int fame
Definition: Player.cs:878
List< Quest > list
Definition: QuestManager.cs:11
Definition: Quest.cs:7
static List< Zone > ListDeliver()
Definition: Quest.cs:259
static Quest Create(string _id, string _idPerson=null, Chara c=null)
Definition: Quest.cs:241
static void UseSeed(int seed, Action action)
Definition: Rand.cs:22
SourceQuest quests
string[] tags
Definition: SourceQuest.cs:22
int dateQuest
Definition: Spatial.cs:286
SourceZone.Row source
Definition: Spatial.cs:453
virtual bool CanGiveRandomQuest
Definition: TraitChara.cs:116
HashSet< int > completedQuests
Definition: Zone.cs:37

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

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

◆ WriteNote()

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

Implements IInspect.

Definition at line 3223 of file Zone.cs.

3224 {
3225 }

Member Data Documentation

◆ _biome

BiomeProfile Zone._biome

Definition at line 76 of file Zone.cs.

◆ bounds

◆ bp

ZoneBlueprint Zone.bp

Definition at line 64 of file Zone.cs.

Referenced by Activate().

◆ branch

◆ completedQuests

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

Definition at line 37 of file Zone.cs.

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

◆ dictCitizen

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

Definition at line 49 of file Zone.cs.

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

◆ dirtyElectricity

bool Zone.dirtyElectricity

Definition at line 68 of file Zone.cs.

Referenced by Scene.OnUpdate().

◆ elements

◆ events

◆ fileVariation

int Zone.fileVariation

Definition at line 66 of file Zone.cs.

◆ forceRegenerate

bool Zone.forceRegenerate
static

Definition at line 25 of file Zone.cs.

Referenced by Activate().

◆ forceSubset

string Zone.forceSubset
static

Definition at line 27 of file Zone.cs.

Referenced by Activate().

◆ fortuneRoll

FortuneRollData Zone.fortuneRoll
private

Definition at line 58 of file Zone.cs.

◆ ignoreSpawnAnime

bool Zone.ignoreSpawnAnime
static

Definition at line 78 of file Zone.cs.

◆ instance

◆ isSimulating

bool Zone.isSimulating

Definition at line 72 of file Zone.cs.

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

◆ isStarted

◆ landFeats

List<int> Zone.landFeats

Definition at line 55 of file Zone.cs.

◆ map

◆ okaerinko

int Zone.okaerinko = 0
static

Definition at line 31 of file Zone.cs.

Referenced by AI_Idle.Run().

◆ sourceHat

CardRow Zone.sourceHat
static

Definition at line 29 of file Zone.cs.

Referenced by CharaRenderer.Draw().

◆ subset

MapSubset Zone.subset

Definition at line 62 of file Zone.cs.

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

◆ Suckers

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

Definition at line 80 of file Zone.cs.

Referenced by TraitSeed.TrySprout().

◆ tempDist

int Zone.tempDist

Definition at line 74 of file Zone.cs.

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

Property Documentation

◆ AddPrefix

virtual bool Zone.AddPrefix
get

Definition at line 280 of file Zone.cs.

Referenced by OnAfterCreate().

◆ AllowCriminal

virtual bool Zone.AllowCriminal
get

Definition at line 244 of file Zone.cs.

◆ AllowInvest

virtual bool Zone.AllowInvest
get

Definition at line 246 of file Zone.cs.

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

Referenced by DramaCustomSequence.Build().

◆ AllowNewZone

virtual bool Zone.AllowNewZone
get

Definition at line 258 of file Zone.cs.

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

◆ AlwaysLowblock

virtual bool Zone.AlwaysLowblock
get

Definition at line 392 of file Zone.cs.

Referenced by BaseTileMap.Draw().

◆ BaseElectricity

virtual int Zone.BaseElectricity
get

Definition at line 490 of file Zone.cs.

◆ BigDaddyChance

virtual float Zone.BigDaddyChance
get

Definition at line 318 of file Zone.cs.

◆ biome

◆ BlockBorderExit

virtual bool Zone.BlockBorderExit
get

Definition at line 166 of file Zone.cs.

Referenced by Player.CanExitBorder().

◆ Boss

Chara Zone.Boss
getset

Definition at line 82 of file Zone.cs.

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

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

◆ CanBeDeliverDestination

virtual bool Zone.CanBeDeliverDestination
get

Definition at line 222 of file Zone.cs.

Referenced by Quest.ListDeliver().

◆ CanDigUnderground

virtual bool Zone.CanDigUnderground
get

Definition at line 270 of file Zone.cs.

Referenced by TaskMine.GetHitResult().

◆ CanEnterBuildMode

bool Zone.CanEnterBuildMode
get

Definition at line 442 of file Zone.cs.

443 {
444 get
445 {
447 {
448 return base.mainFaction == EClass.pc.faction;
449 }
450 return true;
451 }
452 }
bool godBuild
Definition: CoreDebug.cs:304
bool ignoreBuildRule
Definition: CoreDebug.cs:185

◆ CanEnterBuildModeAnywhere

bool Zone.CanEnterBuildModeAnywhere
get

Definition at line 454 of file Zone.cs.

455 {
456 get
457 {
459 {
460 if (base.mainFaction == EClass.pc.faction)
461 {
462 return EClass.Branch.elements.Has(4003);
463 }
464 return false;
465 }
466 return true;
467 }
468 }
bool Has(int ele)
ElementContainerZone elements

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

◆ CanInspect

bool Zone.CanInspect
get

Implements IInspect.

Definition at line 494 of file Zone.cs.

495 {
496 get
497 {
498 if (!IsInstance)
499 {
500 return !HiddenInRegionMap;
501 }
502 return false;
503 }
504 }
virtual bool HiddenInRegionMap
Definition: Zone.cs:410

◆ CanUnlockExit

virtual bool Zone.CanUnlockExit
get

Definition at line 274 of file Zone.cs.

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

◆ ChanceSpawnNeutral

virtual float Zone.ChanceSpawnNeutral
get

Definition at line 342 of file Zone.cs.

◆ ContentLv

override int Zone.ContentLv
get

Definition at line 94 of file Zone.cs.

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

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

◆ CountDeepestLevel

virtual bool Zone.CountDeepestLevel
get

Definition at line 224 of file Zone.cs.

◆ DangerLv

◆ DefaultActionMode

virtual ActionMode Zone.DefaultActionMode
get

Definition at line 164 of file Zone.cs.

◆ DisableRooms

virtual bool Zone.DisableRooms
get

Definition at line 118 of file Zone.cs.

Referenced by Map.TryAddRoom().

◆ EvolvedChance

virtual float Zone.EvolvedChance
get

Definition at line 320 of file Zone.cs.

◆ ExpireDays

virtual int Zone.ExpireDays
get

Definition at line 168 of file Zone.cs.

Referenced by Activate().

◆ FeatureType

virtual ZoneFeatureType Zone.FeatureType
get

Definition at line 172 of file Zone.cs.

◆ FlockType

virtual FlockController.SpawnType Zone.FlockType
get

Definition at line 412 of file Zone.cs.

Referenced by Scene.Init().

◆ Generator

MapGenerator Zone.Generator
get

Definition at line 134 of file Zone.cs.

Referenced by MapGenDungen.OnGenerateTerrain().

◆ GrowPlant

virtual bool Zone.GrowPlant
get

Definition at line 344 of file Zone.cs.

◆ GrowWeed

virtual bool Zone.GrowWeed
get

Definition at line 346 of file Zone.cs.

◆ HasLaw

virtual bool Zone.HasLaw
get

Definition at line 226 of file Zone.cs.

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

◆ HiddenInRegionMap

virtual bool Zone.HiddenInRegionMap
get

Definition at line 410 of file Zone.cs.

Referenced by Chara._Move().

◆ HourSinceLastActive

int Zone.HourSinceLastActive
get

Definition at line 120 of file Zone.cs.

◆ IDAmbience

virtual string Zone.IDAmbience
get

Definition at line 174 of file Zone.cs.

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

◆ IDBaseLandFeat

virtual string Zone.IDBaseLandFeat
get

Definition at line 144 of file Zone.cs.

◆ IdBiome

virtual string Zone.IdBiome
get

Definition at line 128 of file Zone.cs.

◆ idExport

virtual string Zone.idExport
get

Definition at line 146 of file Zone.cs.

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

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

◆ IDGenerator

virtual string Zone.IDGenerator
get

Definition at line 130 of file Zone.cs.

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

◆ IDHat

virtual string Zone.IDHat
get

Definition at line 142 of file Zone.cs.

◆ IDPlayList

virtual string Zone.IDPlayList
get

Definition at line 138 of file Zone.cs.

◆ IDPlaylistOverwrite

virtual string Zone.IDPlaylistOverwrite
get

Definition at line 140 of file Zone.cs.

◆ IdProfile

virtual string Zone.IdProfile
get

Definition at line 136 of file Zone.cs.

◆ IDSceneTemplate

virtual string Zone.IDSceneTemplate
get

Definition at line 190 of file Zone.cs.

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

Referenced by BaseGameScreen.RefreshGrading().

◆ IDSubset

virtual string Zone.IDSubset
get

Definition at line 208 of file Zone.cs.

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

Referenced by Activate().

◆ InspectName

string Zone.InspectName
get

Implements IInspect.

Definition at line 506 of file Zone.cs.

◆ InspectPoint

Point Zone.InspectPoint
get

Implements IInspect.

Definition at line 508 of file Zone.cs.

◆ InspectPosition

Vector3 Zone.InspectPosition
get

Implements IInspect.

Definition at line 510 of file Zone.cs.

◆ IsActiveZone

◆ IsExplorable

virtual bool Zone.IsExplorable
get

Definition at line 348 of file Zone.cs.

◆ IsFestival

virtual bool Zone.IsFestival
get

◆ IsInstance

◆ IsLoaded

bool Zone.IsLoaded
get

Definition at line 488 of file Zone.cs.

Referenced by Activate().

◆ IsNefia

virtual bool Zone.IsNefia
get

Definition at line 282 of file Zone.cs.

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

◆ IsPCFaction

bool Zone.IsPCFaction
get

Definition at line 470 of file Zone.cs.

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

◆ IsPCFactionOrTent

bool Zone.IsPCFactionOrTent
get

Definition at line 472 of file Zone.cs.

473 {
474 get
475 {
476 if (base.mainFaction != EClass.pc.faction)
477 {
478 return EClass._zone is Zone_Tent;
479 }
480 return true;
481 }
482 }

Referenced by HotItemHeld.CanRotate(), TaskBuild.CanRotateBlock(), TaskBuild.GetHitResult(), TraitSeed.MakeSeed(), BiomeProfile.ClusterObj.TryCreate(), and TraitSpotBiome.Update().

◆ IsReturnLocation

virtual bool Zone.IsReturnLocation
get

Definition at line 350 of file Zone.cs.

351 {
352 get
353 {
354 if (EClass.pc.homeZone != this)
355 {
356 return base.source.tag.Contains("return");
357 }
358 return true;
359 }
360 }

◆ IsSkyLevel

◆ IsStartZone

bool Zone.IsStartZone
get

Definition at line 484 of file Zone.cs.

◆ IsTown

◆ IsUnderwater

◆ IsUserZone

◆ KeepAllyDistance

virtual bool Zone.KeepAllyDistance
get

Definition at line 298 of file Zone.cs.

299 {
300 get
301 {
302 if (!HasLaw)
303 {
304 return IsPCFaction;
305 }
306 return true;
307 }
308 }

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

◆ LockExit

virtual bool Zone.LockExit
get

Definition at line 272 of file Zone.cs.

Referenced by MapGenDungen.OnGenerateTerrain().

◆ MakeEnemiesNeutral

virtual bool Zone.MakeEnemiesNeutral
get

Definition at line 230 of file Zone.cs.

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

◆ MakeTownProperties

virtual bool Zone.MakeTownProperties
get

Definition at line 242 of file Zone.cs.

◆ MaxLv

virtual int Zone.MaxLv
get

Definition at line 276 of file Zone.cs.

◆ MaxRespawn

int Zone.MaxRespawn
get

Definition at line 312 of file Zone.cs.

◆ MaxSoil

virtual int Zone.MaxSoil
get

Definition at line 512 of file Zone.cs.

513 {
514 get
515 {
516 if (branch == null)
517 {
518 return 99999;
519 }
520 return branch.MaxSoil;
521 }
522 }

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

◆ MaxSpawn

virtual int Zone.MaxSpawn
get

Definition at line 310 of file Zone.cs.

◆ MinLv

virtual int Zone.MinLv
get

Definition at line 278 of file Zone.cs.

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

◆ MinsSinceLastActive

int Zone.MinsSinceLastActive
get

Definition at line 122 of file Zone.cs.

◆ NameSuffix

override string Zone.NameSuffix
get

Definition at line 414 of file Zone.cs.

415 {
416 get
417 {
418 if (!IsNefia || !GetTopZone().isConquered)
419 {
420 return "";
421 }
422 return "conquered".lang();
423 }
424 }

◆ NameWithLevel

string Zone.NameWithLevel
get

◆ OreChance

virtual float Zone.OreChance
get

Definition at line 316 of file Zone.cs.

◆ ParentZone

◆ pathExport

virtual string Zone.pathExport
get

Definition at line 124 of file Zone.cs.

Referenced by Activate().

◆ pathTemp

string Zone.pathTemp
get

Definition at line 158 of file Zone.cs.

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

◆ PetFollow

virtual bool Zone.PetFollow
get

Definition at line 284 of file Zone.cs.

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

◆ PrespawnRate

virtual float Zone.PrespawnRate
get

Definition at line 324 of file Zone.cs.

◆ RegenerateOnEnter

virtual bool Zone.RegenerateOnEnter
get

Definition at line 262 of file Zone.cs.

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

◆ Region

◆ RegionEnterState

virtual ZoneTransition.EnterState Zone.RegionEnterState
get

Definition at line 170 of file Zone.cs.

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

◆ RespawnPerHour

virtual int Zone.RespawnPerHour
get

Definition at line 340 of file Zone.cs.

◆ RespawnRate

virtual float Zone.RespawnRate
get

Definition at line 326 of file Zone.cs.

◆ RestrictBuild

virtual bool Zone.RestrictBuild
get

Definition at line 286 of file Zone.cs.

287 {
288 get
289 {
290 if (this is Zone_Civilized)
291 {
292 return !IsPCFaction;
293 }
294 return false;
295 }
296 }

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

◆ RevealRoom

virtual bool Zone.RevealRoom
get

Definition at line 390 of file Zone.cs.

◆ RuinChance

virtual float Zone.RuinChance
get

Definition at line 314 of file Zone.cs.

Referenced by GenBounds.TryAddMapPiece().

◆ ScaleType

virtual ZoneScaleType Zone.ScaleType
get

Definition at line 408 of file Zone.cs.

◆ SetAlarmOnBreakLaw

virtual bool Zone.SetAlarmOnBreakLaw
get

Definition at line 228 of file Zone.cs.

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

◆ ShouldAutoRevive

virtual bool Zone.ShouldAutoRevive
get

Definition at line 376 of file Zone.cs.

377 {
378 get
379 {
380 if (!ShouldRegenerate)
381 {
382 return IsPCFaction;
383 }
384 return true;
385 }
386 }

◆ ShouldMakeExit

virtual bool Zone.ShouldMakeExit
get

Definition at line 362 of file Zone.cs.

363 {
364 get
365 {
366 if (base.lv > MinLv)
367 {
368 return base.lv < MaxLv;
369 }
370 return false;
371 }
372 }
virtual int MaxLv
Definition: Zone.cs:276
virtual int MinLv
Definition: Zone.cs:278

Referenced by MapGenDungen.OnGenerateTerrain().

◆ ShouldRegenerate

virtual bool Zone.ShouldRegenerate
get

Definition at line 374 of file Zone.cs.

Referenced by Activate().

◆ ShowEnemyOnMinimap

bool Zone.ShowEnemyOnMinimap
get

Definition at line 328 of file Zone.cs.

329 {
330 get
331 {
332 if (instance != null)
333 {
335 }
336 return false;
337 }
338 }
virtual bool ShowEnemyOnMinimap
Definition: ZoneInstance.cs:30

Referenced by WidgetMinimap.RefreshMarkers().

◆ ShrineChance

virtual float Zone.ShrineChance
get

Definition at line 322 of file Zone.cs.

◆ StartLV

virtual int Zone.StartLV
get

Definition at line 406 of file Zone.cs.

Referenced by OnCreate().

◆ TextDangerLv

string Zone.TextDangerLv
get

Definition at line 428 of file Zone.cs.

Referenced by WidgetDate._Refresh().

◆ TextDeepestLv

string Zone.TextDeepestLv
get

Definition at line 430 of file Zone.cs.

431 {
432 get
433 {
434 if (GetDeepestLv() != 0)
435 {
436 return "zoneLevelMax".lang(TextLevel(GetDeepestLv()));
437 }
438 return "";
439 }
440 }
string TextLevel(int _lv)
Definition: Zone.cs:554

Referenced by AM_Adv._OnUpdateInput().

◆ TextWidgetDate

virtual string Zone.TextWidgetDate
get

Definition at line 132 of file Zone.cs.

Referenced by WidgetDate._Refresh().

◆ UseFog

virtual bool Zone.UseFog
get

Definition at line 388 of file Zone.cs.

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

◆ UseLight

virtual bool Zone.UseLight
get

Definition at line 394 of file Zone.cs.

395 {
396 get
397 {
398 if (base.mainFaction != EClass.pc.faction)
399 {
400 return base.source.tag.Contains("light");
401 }
402 return true;
403 }
404 }

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

◆ WillAutoSave

virtual bool Zone.WillAutoSave
get

Definition at line 260 of file Zone.cs.

Referenced by Chara.MoveZone().


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