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

Static Public Member Functions

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

Public Attributes

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

Static Public Attributes

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

Properties

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

1848 {
1849 if (CanDestroy())
1850 {
1851 Debug.Log("Deleting Zone:" + this);
1852 if (!destryoed)
1853 {
1854 Destroy();
1855 }
1856 }
1857 else if (map != null)
1858 {
1859 Debug.Log("Saving Zone:" + this);
1860 map.Save(base.pathSave);
1861 if (!base.isMapSaved)
1862 {
1863 base.isMapSaved = true;
1864 IO.DeleteDirectory(base.pathSave + "Texture Replace");
1865 IO.CopyDir(pathTemp + "Texture Replace", base.pathSave + "/Texture Replace");
1866 }
1867 if (!IsActiveZone)
1868 {
1869 UnloadMap();
1870 }
1871 }
1872 }
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:1782
override void Destroy()
Definition: Zone.cs:1883
bool IsActiveZone
Definition: Zone.cs:495
void UnloadMap()
Definition: Zone.cs:1698
string pathTemp
Definition: Zone.cs:161
Map map
Definition: Zone.cs:63

References Debug, and Map.Save().

◆ AbandonZone()

void Zone.AbandonZone ( )
inline

Definition at line 1766 of file Zone.cs.

1767 {
1768 FactionBranch destBranch = ((EClass.pc.homeBranch == branch) ? EClass.game.StartZone.branch : EClass.pc.homeBranch);
1769 branch.members.ForeachReverse(delegate(Chara m)
1770 {
1771 destBranch.AddMemeber(m);
1772 if (!m.IsPCParty)
1773 {
1774 m.MoveZone(destBranch.owner);
1775 }
1776 });
1778 SetMainFaction(null);
1779 base.dateExpire = EClass.world.date.GetRaw() + 10080;
1780 }
Definition: Chara.cs:10
override bool IsPCParty
Definition: Chara.cs:615
FactionBranch homeBranch
Definition: Chara.cs:1066
void MoveZone(string alias)
Definition: Chara.cs:3319
int GetRaw(int offsetHours=0)
Definition: Date.cs:326
Definition: EClass.cs:6
static Game game
Definition: EClass.cs:9
static World world
Definition: EClass.cs:41
static FactionBranch Branch
Definition: EClass.cs:23
static Chara pc
Definition: EClass.cs:15
void OnUnclaimZone()
List< Chara > members
void AddMemeber(Chara c)
Zone StartZone
Definition: Game.cs:277
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 591 of file Zone.cs.

592 {
593 if (IsRegion)
594 {
596 }
597 isStarted = (isSimulating = false);
598 base.isKnown = true;
599 EClass.game.config.reverseSnow = false;
601 {
602 Msg.Say("regenerateZone", Name);
603 ClearZones();
604 if (EClass.pc.global.transition != null)
605 {
606 EClass.pc.global.transition.uidLastZone = 0;
607 }
608 }
610 if (EClass.game.activeZone != null)
611 {
613 }
614 EClass.game.activeZone = this;
615 ZoneExportData zoneExportData = null;
616 Debug.Log(NameWithLevel + "/" + id + "/" + base.uid + "/" + base.isGenerated + "/" + IsLoaded + "/" + File.Exists(base.pathSave + "map"));
617 if (base.isGenerated && !IsLoaded && !File.Exists(base.pathSave + "map"))
618 {
619 Debug.Log("(Bug) File does not exist:" + destryoed + "/" + base.pathSave);
620 base.isGenerated = false;
621 }
622 bool flag = false;
623 Debug.Log(idCurrentSubset + "/" + IDSubset);
624 bool flag2 = idCurrentSubset != IDSubset || forceSubset != null;
625 if (flag2 && map != null)
626 {
627 UnloadMap();
628 }
629 Debug.Log(idExport + "/" + File.Exists(pathExport) + "/" + pathExport);
630 if (!base.isGenerated && (idExport.IsEmpty() || !File.Exists(pathExport)))
631 {
632 Debug.Log("generating random map");
633 flag = true;
634 base.dateExpire = EClass.world.date.GetRaw() + 1440 * ExpireDays;
635 Generate();
637 if (instance != null)
638 {
640 }
641 if (!UseFog)
642 {
643 map.ForeachCell(delegate(Cell c)
644 {
645 c.isSeen = true;
646 });
647 }
648 if (!(bp is GameBlueprint))
649 {
651 }
652 }
653 else if (IsLoaded)
654 {
655 Debug.Log("zone is already loaded");
656 map.SetZone(this);
657 EClass.core.textures.ApplyLocalReplace(base.isMapSaved ? base.pathSave : pathTemp);
659 }
660 else
661 {
662 subset = null;
663 bool flag3 = (base.isGenerated && flag2) || (base.isGenerated && !IsInstance && !IsPCFaction && ShouldRegenerate && EClass.world.date.IsExpired(base.dateRegenerate)) || forceRegenerate;
664 if (pathExport.IsEmpty() || !File.Exists(pathExport) || EClass.game.isLoading || EClass.player.simulatingZone)
665 {
666 flag3 = false;
667 flag2 = false;
668 }
669 Debug.Log(base.isGenerated + "/" + flag3 + "/" + flag2 + "/" + IDSubset);
670 if (!base.isGenerated || flag3 || flag2)
671 {
672 Debug.Log("importing map:" + pathExport);
673 flag = true;
674 base.dateRegenerate = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRegenerateZone;
675 if (!flag3)
676 {
677 IO.DeleteDirectory(pathTemp + "Texture Replace");
678 Debug.Log(pathTemp);
679 }
680 try
681 {
682 zoneExportData = Import(pathExport);
683 base.isGenerated = true;
684 isImported = true;
685 if (flag3)
686 {
687 zoneExportData.orgMap = GameIO.LoadFile<Map>(base.pathSave + "map");
688 }
689 }
690 catch (Exception message)
691 {
692 Debug.Log(message);
693 zoneExportData = Import(CorePath.ZoneSave + "fail.z");
694 base.isGenerated = true;
695 isImported = true;
696 }
697 }
699 Debug.Log("loading map: imported? " + isImported + " regenerate? " + flag3);
700 map = GameIO.LoadFile<Map>((isImported ? pathTemp : base.pathSave) + "map");
701 if (map == null)
702 {
703 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");
704 return;
705 }
706 map.SetZone(this);
707 map.Load(isImported ? pathTemp : base.pathSave, isImported);
709 EClass.core.textures.ApplyLocalReplace(base.isMapSaved ? base.pathSave : pathTemp);
710 if (isImported)
711 {
712 map.deadCharas.Clear();
713 map.OnImport(zoneExportData);
714 if (UseFog && !flag3)
715 {
716 map.ForeachCell(delegate(Cell c)
717 {
718 c.isSeen = false;
719 });
720 }
721 if (zoneExportData.orgMap != null)
722 {
723 Map orgMap = zoneExportData.orgMap;
724 List<Chara> serializedCharas = map.serializedCharas;
725 map.charas = orgMap.charas;
726 map.serializedCharas = orgMap.serializedCharas;
727 map.deadCharas = orgMap.deadCharas;
728 byte[] array = orgMap.TryLoadFile(base.pathSave, "flags", EClass._map.Size * EClass._map.Size);
729 if (array != null && array.Length == EClass._map.Size * EClass._map.Size)
730 {
731 for (int i = 0; i < EClass._map.Size; i++)
732 {
733 for (int j = 0; j < EClass._map.Size; j++)
734 {
735 map.cells[i, j].isSeen = array[i * EClass._map.Size + j].GetBit(1);
736 }
737 }
738 }
739 foreach (Chara item in serializedCharas)
740 {
741 Debug.Log("Importing New Chara:" + item.id + "/" + item.Name + "/" + item.orgPos);
743 }
744 map.things.ForeachReverse(delegate(Thing t)
745 {
746 if (t.trait is TraitNewZone || t.trait is TraitPowerStatue)
747 {
748 foreach (Thing thing in orgMap.things)
749 {
750 if (t.id == thing.id && t.pos.Equals(thing.pos))
751 {
752 if (t.trait is TraitNewZone)
753 {
754 RemoveCard(t);
755 map.things.Insert(0, thing);
756 thing.stackOrder = 0;
757 }
758 else
759 {
760 t.ChangeMaterial(thing.material);
761 t.isOn = thing.isOn;
762 }
763 break;
764 }
765 }
766 return;
767 }
768 if (t.trait is TraitStairsLocked)
769 {
770 foreach (Thing thing2 in orgMap.things)
771 {
772 if (thing2.trait is TraitNewZone && t.pos.Equals(thing2.pos))
773 {
774 RemoveCard(t);
775 map.things.Add(thing2);
776 break;
777 }
778 }
779 return;
780 }
781 if (t.id == "medal" || t.id == "856")
782 {
783 foreach (Thing thing3 in orgMap.things)
784 {
785 if (t.id == thing3.id && t.pos.Equals(thing3.pos))
786 {
787 return;
788 }
789 }
790 RemoveCard(t);
791 }
792 });
793 foreach (KeyValuePair<int, int> item2 in EClass._map.backerObjs.ToList())
794 {
795 EClass._map.GetCell(item2.Key);
796 SourceBacker.Row row = EClass.sources.backers.map[item2.Value];
798 {
799 map.backerObjs.Remove(item2.Key);
800 }
801 }
802 foreach (Chara serializedChara in map.serializedCharas)
803 {
804 if (serializedChara.orgPos != null && serializedChara.orgPos.IsValid)
805 {
806 serializedChara.pos.Set(serializedChara.orgPos);
807 }
808 }
809 foreach (Thing thing4 in orgMap.things)
810 {
811 if (thing4.trait is TraitTent && !thing4.isNPCProperty)
812 {
813 thing4.AddEditorTag(EditorTag.NoNpcProperty);
814 thing4.isSubsetCard = false;
815 map.things.Add(thing4);
816 Debug.Log(thing4);
817 }
818 }
819 }
820 }
821 foreach (Thing thing5 in map.things)
822 {
823 map.AddCardOnActivate(thing5);
824 }
825 foreach (Chara c3 in map.serializedCharas)
826 {
827 if (c3.c_uidMaster == 0 || EClass.player.listSummon.Find((Chara c2) => c2.uid == c3.uid) == null)
828 {
829 map.charas.Add(c3);
831 }
832 }
833 map.serializedCharas.Clear();
834 if (isImported && IsTown)
835 {
837 }
840 map.OnLoad();
841 if (flag3)
842 {
843 foreach (Card item3 in map.Cards.ToList())
844 {
845 if (item3.isSubsetCard)
846 {
847 item3.Destroy();
848 }
849 }
850 }
851 if (isImported)
852 {
854 if (idCurrentSubset != null)
855 {
857 subset.Apply();
858 }
859 }
860 if (isImported)
861 {
863 {
864 foreach (Thing thing6 in map.things)
865 {
866 thing6.isNPCProperty = !thing6.isHidden && !thing6.HasEditorTag(EditorTag.NoNpcProperty);
867 }
868 }
869 else
870 {
871 foreach (Thing thing7 in map.things)
872 {
873 thing7.isNPCProperty = false;
874 }
875 }
877 if (instance != null)
878 {
880 }
881 }
882 if (isImported && !flag3 && !RevealRoom)
883 {
884 foreach (Room item4 in map.rooms.listRoom)
885 {
886 if (!item4.HasRoof || item4.data.atrium)
887 {
888 continue;
889 }
890 foreach (Point point2 in item4.points)
891 {
892 point2.cell.isSeen = false;
893 }
894 }
895 }
896 if (flag3)
897 {
898 OnRegenerate();
899 }
900 }
901 PathManager.Instance._pathfinder.PunishChangeDirection = false;
902 isImported = false;
903 if (this is Zone_Tent && IsUnderwater)
904 {
905 EClass._map.config.idSceneProfile = "indoor_water";
906 EClass.scene.profile = SceneProfile.Load(EClass._map.config.idSceneProfile);
907 }
908 if (flag && IsTown && base.lv == 0)
909 {
911 }
912 if (base.visitCount == 0)
913 {
914 base.dateRevive = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRevive;
915 }
916 map.ForeachCell(delegate(Cell c)
917 {
918 if (c.HasFire)
919 {
920 map.effectManager.GetOrCreate(c.GetSharedPoint());
921 }
922 if (IsRegion)
923 {
924 c.decal = 0;
925 }
926 });
928 {
929 RainWater();
930 }
932 {
933 map.ForeachCell(delegate(Cell c)
934 {
935 c.isSeen = true;
936 });
937 }
938 isStarted = true;
939 Map.isDirtySunMap = true;
941 if (events.listPreEnter.Count > 0)
942 {
943 foreach (ZonePreEnterEvent item5 in events.listPreEnter)
944 {
945 item5.Execute();
946 }
947 events.listPreEnter.Clear();
948 }
949 foreach (Card card in map.Cards)
950 {
951 card.CalculateFOV();
952 if (card.isChara)
953 {
954 Chara chara = card.Chara;
955 chara.dirtySpeed = true;
956 if (!card.isDyed && card.HasTag(CTAG.random_color))
957 {
958 card.DyeRandom();
959 }
960 if (card.IsUnique && !card.IsPCFaction && !card.IsPCParty)
961 {
962 Point point = chara.orgPos ?? card.pos;
963 card.c_uniqueData = new UniqueData
964 {
965 x = point.x,
966 y = point.z,
967 uidZone = base.uid
968 };
969 }
970 int @int = card.GetInt(55);
971 if (@int != 0)
972 {
973 foreach (Chara chara2 in map.charas)
974 {
975 if (chara2.uid == @int)
976 {
977 if (chara.IsHostile(chara2))
978 {
979 chara.enemy = chara2;
980 chara.SetAI(new GoalCombat());
981 chara.calmCheckTurn = 20 + EClass.rnd(30);
982 }
983 break;
984 }
985 }
986 card.SetInt(55);
987 }
988 chara.SyncRide();
989 if (card.c_uidMaster != 0 && chara.master == null)
990 {
991 chara.FindMaster();
992 }
993 if (!EClass.game.isLoading)
994 {
995 chara.enemy = null;
996 if (chara.IsInCombat)
997 {
998 chara.SetNoGoal();
999 }
1000 }
1001 }
1002 else if (card.IsInstalled && card.trait is TraitDoor traitDoor && card.pos.HasChara && !traitDoor.IsOpen())
1003 {
1004 traitDoor.ToggleDoor(sound: false, refresh: false);
1005 }
1006 }
1007 RefreshHat();
1008 forceRegenerate = false;
1009 forceSubset = null;
1010 EClass.ui.OnActivateZone();
1012 EClass.Sound.LoadAmbience(IDAmbience);
1013 if (EClass.Branch != null)
1014 {
1016 }
1017 OnVisit();
1018 if (flag)
1019 {
1021 }
1023 if (IsPCFaction)
1024 {
1025 EClass.player.uidLastTown = 0;
1026 }
1027 else if (IsTown && base.lv == 0)
1028 {
1029 EClass.player.uidLastTown = base.uid;
1030 }
1031 RefreshBGM();
1032 Rand.InitBytes(map.seed + 1);
1034 okaerinko = 0;
1035 if (EClass.debug.enable)
1036 {
1037 ModInfluence(2000);
1038 }
1039 if (this is Zone_TinkerCamp)
1040 {
1041 Tutorial.Reserve("tinker");
1042 }
1043 else if (this is Zone_Town && !(this is Zone_SubTown))
1044 {
1045 Tutorial.Reserve("town");
1046 }
1047 }
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:2605
Point pos
Definition: Card.cs:59
int uid
Definition: Card.cs:122
Trait trait
Definition: Card.cs:53
void Destroy()
Definition: Card.cs:5070
bool HasEditorTag(EditorTag tag)
Definition: Card.cs:2600
Definition: Cell.cs:7
bool isSeen
Definition: Cell.cs:282
bool HasFire
Definition: Cell.cs:676
AIAct SetNoGoal()
Definition: Chara.cs:8875
bool IsInCombat
Definition: Chara.cs:864
AIAct SetAI(AIAct g)
Definition: Chara.cs:8880
Point orgPos
Definition: Chara.cs:21
GlobalData global
Definition: Chara.cs:76
Chara master
Definition: Chara.cs:88
Chara FindMaster()
Definition: Chara.cs:2385
void SyncRide()
Definition: Chara.cs:3923
bool IsHostile()
Definition: Chara.cs:6532
bool ignoreBackerDestoryFlag
Definition: CoreConfig.cs:562
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:336
static Scene scene
Definition: EClass.cs:31
static Core core
Definition: EClass.cs:7
static Map _map
Definition: EClass.cs:19
static int rnd(long a)
Definition: EClass.cs:59
static SourceManager sources
Definition: EClass.cs:43
static Player player
Definition: EClass.cs:13
static CoreDebug debug
Definition: EClass.cs:49
static SoundManager Sound
Definition: EClass.cs:47
static UI ui
Definition: EClass.cs:17
static GameSetting setting
Definition: EClass.cs:35
void Initialize(EloMap _elomap)
Definition: EloMapActor.cs:28
void OnActivateZone()
Definition: GameIO.cs:11
BalanceSetting balance
Definition: GameSetting.cs:309
bool isLoading
Definition: Game.cs:241
int countLoadedMaps
Definition: Game.cs:235
Zone activeZone
Definition: Game.cs:251
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:1073
List< Chara > listSummon
Definition: Player.cs:1221
bool simulatingZone
Definition: Player.cs:1179
Definition: Point.cs:9
Point Set(int _x, int _z)
Definition: Point.cs:503
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
bool IsValid
Definition: Point.cs:88
Definition: Rand.cs:4
static void InitBytes(int a)
Definition: Rand.cs: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:990
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:75
void RefreshElectricity()
Definition: Zone.cs:2889
ZoneExportData Import(string path)
Definition: Zone.cs:3164
void Generate()
Definition: Zone.cs:2358
ZoneEventManager events
Definition: Zone.cs:40
static string forceSubset
Definition: Zone.cs:27
virtual bool RegenerateOnEnter
Definition: Zone.cs:265
static int okaerinko
Definition: Zone.cs:31
virtual string idExport
Definition: Zone.cs:150
virtual bool MakeTownProperties
Definition: Zone.cs:245
virtual void OnRegenerate()
Definition: Zone.cs:1143
bool isStarted
Definition: Zone.cs:73
virtual string pathExport
Definition: Zone.cs:127
MapSubset subset
Definition: Zone.cs:65
Zone GetTopZone()
Definition: Zone.cs:1933
virtual string IDSubset
Definition: Zone.cs:212
ZoneBlueprint bp
Definition: Zone.cs:67
void RefreshBGM()
Definition: Zone.cs:3017
void Deactivate()
Definition: Zone.cs:1619
void SpawnLostItems()
Definition: Zone.cs:3756
void AddGlobalCharasOnActivate()
Definition: Zone.cs:1538
bool IsInstance
Definition: Zone.cs:489
void ClearZones(Zone current=null)
Definition: Zone.cs:1902
void OnVisit()
Definition: Zone.cs:1059
virtual bool IsTown
Definition: Zone.cs:223
void RainWater()
Definition: Zone.cs:3402
virtual bool UseFog
Definition: Zone.cs:391
virtual string IDAmbience
Definition: Zone.cs:178
void RemoveCard(Card t)
Definition: Zone.cs:2017
void RefreshHat()
Definition: Zone.cs:1049
void ModInfluence(int a)
Definition: Zone.cs:3614
virtual void OnGenerateMap()
Definition: Zone.cs:2552
static bool forceRegenerate
Definition: Zone.cs:25
bool IsPCFaction
Definition: Zone.cs:473
virtual bool IsUnderwater
Definition: Zone.cs:269
virtual bool ShouldRegenerate
Definition: Zone.cs:377
string NameWithLevel
Definition: Zone.cs:429
ZoneInstance instance
Definition: Zone.cs:55
virtual bool RevealRoom
Definition: Zone.cs:393
bool IsLoaded
Definition: Zone.cs:491
void RefreshListCitizen()
Definition: Zone.cs:3572
virtual int ExpireDays
Definition: Zone.cs:171
virtual void OnVisitNewMapOrRegenerate()
Definition: Zone.cs:1163

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

1983 {
1984 return AddCard(t, 0, 0);
1985 }
Card AddCard(Card t, Point point)
Definition: Zone.cs:1977

◆ AddCard() [2/3]

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

Definition at line 1987 of file Zone.cs.

1988 {
1989 if (t.parent != null)
1990 {
1991 t.parent.RemoveCard(t);
1992 }
1993 t.parent = this;
1994 Chara chara = t.Chara;
1995 if (chara != null)
1996 {
1997 chara.currentZone = this;
1998 chara.SetAI(new NoGoal());
1999 }
2000 if (IsActiveZone)
2001 {
2002 map.OnCardAddedToZone(t, x, z);
2003 if (isStarted && t.isThing && t.placeState == PlaceState.roaming && !ignoreSpawnAnime)
2004 {
2005 t.PlayAnimeLoot();
2006 }
2007 ignoreSpawnAnime = false;
2008 }
2009 if (chara != null && EClass.player != null && !chara.hasSpawned)
2010 {
2011 EClass.player.codex.AddSpawn(chara.id);
2012 chara.hasSpawned = true;
2013 }
2014 return t;
2015 }
PlaceState
Definition: PlaceState.cs:2
virtual bool isThing
Definition: Card.cs:2081
virtual Chara Chara
Definition: Card.cs:2070
ICardParent parent
Definition: Card.cs:55
bool hasSpawned
Definition: Card.cs:902
PlaceState placeState
Definition: Card.cs:83
void PlayAnimeLoot()
Definition: Card.cs:6207
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:1115
static bool ignoreSpawnAnime
Definition: Zone.cs:81
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 1977 of file Zone.cs.

1978 {
1979 return AddCard(t, point.x, point.z);
1980 }

References Point.x, and Point.z.

Referenced by InvOwnerChaosOffering._OnProcess(), TraitShrine._OnUse(), Game.AddAdventurers(), ZoneUtil.AddMerchant(), Quest.AddResident(), Chara.ApplyDeathPenalty(), RecipeCard.Build(), Map.Burn(), AI_Shopping.Buy(), ClaimZone(), TraitCrafter.Craft(), Card.Die(), Chara.Die(), Chara.DropHeld(), Player.DropReward(), Chara.DropThing(), ZonePreEnterBout.Execute(), ZonePreEnterDigStairs.Execute(), ZonePreEnterEncounter.Execute(), DramaOutcome.fiama_pet(), CoreDebug.Fix_LostCore(), Generate(), Zone_SnowGrave.GenerateGrave(), FortuneRollData.GetPrize(), GrowSystem.Grow(), TraitFoodEggFertilized.Incubate(), Chara.MakeGrave(), SurvivalManager.MeteorThing(), Map.MineBlock(), Chara.MoveHome(), Chara.MoveZone(), Zone_Void.OnActivate(), Region.OnAdvanceHour(), Zone_WindRest.OnAfterSimulate(), Zone_Nymelle.OnBeforeSimulate(), TaskHarvest.OnCreateProgress(), TaskBuild.OnDestroy(), SurvivalManager.OnExpandFloor(), Zone_DungeonFairy.OnGenerateMap(), Zone_DungeonMino.OnGenerateMap(), Zone_DungeonPuppy.OnGenerateMap(), Zone_TestRoom.OnGenerateMap(), MapGenDungen.OnGenerateTerrain(), GrowSystemTree.OnHitFail(), ZoneEventSiege.OnKill(), SurvivalManager.OnMineWreck(), AI_Fish.ProgressFish.OnProgressComplete(), QuestCraft.OnProgressComplete(), TaskMoveInstalled.OnProgressComplete(), TraitDiary.OnRead(), QuestEscort.OnStart(), TraitFarmChest.OnUse(), TraitGiftNewYear.OnUse(), TraitStairsLocked.OnUse(), ZoneEventDefenseGame.OnVisit(), DramaManager.ParseLine(), ActRestrain.Perform(), HotItemActionSleep.Perform(), GrowSystem.Perish(), Chara.Pick(), Chara.PickOrDrop(), Zone_Dungeon.PlaceRail(), GenRoom.Populate(), ActEffect.Proc(), ActEffect.ProcAt(), FactionBranch.PutInMailBox(), DramaOutcome.PutOutFire(), TaskCraft.PutOutResources(), DramaOutcome.QuestExploration_AfterCrystal(), CoreDebug.QuickStart(), TraitBaseSpellbook.ReadFailEffect(), FactionBranch.Recruit(), 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 1942 of file Zone.cs.

1943 {
1944 Point point = new Point(center);
1945 for (int i = 0; i < 1000; i++)
1946 {
1947 point.x = center.x + EClass.rnd(radius) - EClass.rnd(radius);
1948 point.z = center.z + EClass.rnd(radius) - EClass.rnd(radius);
1949 if (point.IsValid && !point.IsBlocked && !point.HasChara)
1950 {
1951 return AddCard(t, point);
1952 }
1953 }
1954 return AddCard(t, center);
1955 }
bool IsBlocked
Definition: Point.cs:363
bool HasChara
Definition: Point.cs:238

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

Referenced by ZoneUtil.AddBandits().

◆ AddChara() [1/2]

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

Definition at line 1957 of file Zone.cs.

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

References CharaGen.Create().

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

◆ AddChara() [2/2]

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

Definition at line 1962 of file Zone.cs.

1963 {
1964 return AddChara(id, p.x, p.z);
1965 }
Chara AddChara(string id, int x, int z)
Definition: Zone.cs:1957

References Point.x, and Point.z.

◆ AddGlobalCharasOnActivate()

void Zone.AddGlobalCharasOnActivate ( )
inline

Definition at line 1538 of file Zone.cs.

1539 {
1540 Point spawnPosPC = null;
1541 if (EClass.pc.currentZone == this)
1542 {
1543 spawnPosPC = GetSpawnPos(EClass.pc);
1544 }
1545 if (spawnPosPC == null)
1546 {
1547 spawnPosPC = map.GetCenterPos();
1548 }
1549 if (spawnPosPC.IsValid && EClass.pc.global.transition != null && spawnPosPC.HasBlock)
1550 {
1551 spawnPosPC = spawnPosPC.GetNearestPoint();
1552 }
1553 spawnPosPC = spawnPosPC.Clamp(useBounds: true).GetNearestPoint();
1554 foreach (Chara c in EClass.game.cards.globalCharas.Values)
1555 {
1556 if (c.currentZone != this)
1557 {
1558 continue;
1559 }
1560 if (c.parent is Chara)
1561 {
1562 Chara chara = c.parent as Chara;
1563 c.currentZone = chara.currentZone;
1564 }
1565 else
1566 {
1567 if (c.isDead)
1568 {
1569 continue;
1570 }
1571 if (c.isRestrained && c.currentZone == EClass.pc.currentZone && (!c.pos.IsValid || c.pos.FindThing<TraitShackle>() == null))
1572 {
1573 c.isRestrained = false;
1574 }
1575 if (c.global.transition != null)
1576 {
1577 Point pos = (c.IsPC ? spawnPosPC : (c.IsPCParty ? spawnPosPC.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true) : GetSpawnPos(c)));
1578 if (c.IsPCParty && !c.IsPC)
1579 {
1580 if (c.host == EClass.pc)
1581 {
1582 pos.Set(spawnPosPC);
1583 }
1584 else if (pos.Equals(spawnPosPC) || !PathManager.Instance.IsPathClear(spawnPosPC, pos, c, 5))
1585 {
1586 c.pos.Set(spawnPosPC);
1587 if (!spawnPosPC.ForeachNearestPoint(delegate(Point p)
1588 {
1589 if (PathManager.Instance.IsPathClear(spawnPosPC, p, c, 10) && !p.Equals(spawnPosPC))
1590 {
1591 pos.Set(p);
1592 return true;
1593 }
1594 return false;
1595 }, allowBlock: false, EClass.pc.party.members.Count >= 12, allowInstalled: true, ignoreCenter: true, EClass._zone.IsRegion ? 2 : 6))
1596 {
1597 pos.Set(spawnPosPC);
1598 }
1599 }
1600 }
1601 c.pos.Set(pos);
1602 c.global.transition = null;
1603 }
1604 map.charas.Add(c);
1606 }
1607 }
1608 foreach (Chara item in EClass.player.listSummon)
1609 {
1610 Point nearestPoint = spawnPosPC.GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: true, ignoreCenter: true);
1611 item.enemy = null;
1612 item.pos.Set(nearestPoint);
1613 map.charas.Add(item);
1615 }
1616 EClass.player.listSummon.Clear();
1617 }
GlobalCharaList globalCharas
Definition: CardManager.cs:46
bool isRestrained
Definition: Card.cs:566
override bool IsPC
Definition: Chara.cs:612
Chara host
Definition: Chara.cs:33
Zone currentZone
Definition: Chara.cs:255
bool isDead
Definition: Chara.cs:389
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:619
bool Equals(int _x, int _z)
Definition: Point.cs:960
bool ForeachNearestPoint(Func< Point, bool > endFunc, bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int maxRange=30)
Definition: Point.cs:691
Point Clamp(bool useBounds=false)
Definition: Point.cs:1008
bool HasBlock
Definition: Point.cs:141
Thing FindThing(Func< Thing, bool > func)
Definition: Point.cs:1140
Point GetSpawnPos(Chara c, ZoneTransition.EnterState destState=ZoneTransition.EnterState.Auto)
Definition: Zone.cs:1335

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

3299 {
3300 Trait random = map.Installed.traits.GetTraitSet<TraitSpotExit>().GetRandom();
3301 if (random == null)
3302 {
3303 return null;
3304 }
3305 Point point = random.GetPoint();
3306 Chara chara = null;
3307 if (guest)
3308 {
3309 Zone z = EClass.world.FindZone("wilds");
3310 chara = EClass.game.cards.ListGlobalChara(z).RandomItem();
3311 if (chara != null)
3312 {
3313 AddCard(chara, point);
3314 Msg.Say("guestArrive", chara);
3315 chara.visitorState = VisitorState.Arrived;
3316 }
3317 }
3318 else
3319 {
3320 chara = CharaGen.CreateFromFilter("c_wilds");
3321 AddCard(chara, point);
3322 chara.goalListType = GoalListType.Enemy;
3323 }
3324 return chara;
3325 }
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:735
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 1972 of file Zone.cs.

1973 {
1974 return AddThing(id, p.x, p.z);
1975 }
Card AddThing(string id, int x, int z)
Definition: Zone.cs:1967

References Point.x, and Point.z.

◆ ApplyBackerPet()

void Zone.ApplyBackerPet ( bool  draw)
inline

Definition at line 3801 of file Zone.cs.

3802 {
3803 bool flag = this is Zone_Yowyn && base.lv == -1;
3804 IList<SourceBacker.Row> list = EClass.sources.backers.listPet.Copy();
3805 list.Shuffle();
3807 {
3808 list.ForeachReverse(delegate(SourceBacker.Row a)
3809 {
3810 if (EClass.player.doneBackers.Contains(a.id))
3811 {
3812 list.Remove(a);
3813 }
3814 });
3815 }
3816 foreach (Chara chara in EClass._map.charas)
3817 {
3818 if (chara.IsGlobal || chara.IsMinion)
3819 {
3820 continue;
3821 }
3822 if (chara.isBackerContent)
3823 {
3824 if (chara.sourceBacker.isStatic != 0)
3825 {
3826 continue;
3827 }
3828 if (chara.id != "follower")
3829 {
3830 chara.RemoveBacker();
3831 }
3832 }
3833 if ((flag && chara.race.id != "cat") || (!EClass.debug.enable && EClass.rnd((!flag) ? (draw ? 3 : 10) : (draw ? 1 : 2)) != 0))
3834 {
3835 continue;
3836 }
3837 foreach (SourceBacker.Row item in list)
3838 {
3839 if (item.chara == chara.id)
3840 {
3841 chara.ApplyBacker(item.id);
3842 list.Remove(item);
3843 break;
3844 }
3845 }
3846 }
3847 }
SourceBacker.Row sourceBacker
Definition: Card.cs:928
void RemoveBacker()
Definition: Card.cs:7063
void ApplyBacker(int bid)
Definition: Card.cs:7027
bool isBackerContent
Definition: Card.cs:925
override bool IsGlobal
Definition: Chara.cs:610
override bool IsMinion
Definition: Chara.cs:627
SourceRace.Row race
Definition: Chara.cs:464
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 1782 of file Zone.cs.

1783 {
1785 {
1786 return false;
1787 }
1788 if (IsInstance)
1789 {
1790 return true;
1791 }
1792 bool flag = false;
1793 switch (id)
1794 {
1795 case "cave_dragon":
1796 if (!(this is Zone_DungeonDragon))
1797 {
1798 flag = true;
1799 }
1800 break;
1801 case "cave_yeek":
1802 if (!(this is Zone_DungeonYeek))
1803 {
1804 flag = true;
1805 }
1806 break;
1807 case "cave_mino":
1808 if (!(this is Zone_DungeonMino))
1809 {
1810 flag = true;
1811 }
1812 break;
1813 case "cave_dead":
1814 if (!(this is Zone_DungeonDead))
1815 {
1816 flag = true;
1817 }
1818 break;
1819 }
1820 Zone topZone = GetTopZone();
1821 if (!flag)
1822 {
1823 if (base.dateExpire == 0 || !EClass.world.date.IsExpired(base.dateExpire))
1824 {
1825 return false;
1826 }
1827 if (!base.isRandomSite && !(this is Zone_Field) && (topZone == null || topZone == this || topZone.FindDeepestZone() == this))
1828 {
1829 return false;
1830 }
1831 }
1832 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()))
1833 {
1834 return false;
1835 }
1837 {
1839 if (zone != null && zone.GetTopZone() == this)
1840 {
1841 return false;
1842 }
1843 }
1844 return true;
1845 }
SpatialManager spatials
Definition: Game.cs:152
Zone nextZone
Definition: Player.cs:1225
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 1712 of file Zone.cs.

1713 {
1716 branch = new FactionBranch();
1717 branch.OnCreate(this);
1718 if (base.icon == 0)
1719 {
1720 base.icon = 332;
1721 }
1722 instance = null;
1723 base.dateExpire = 0;
1725 Register();
1726 foreach (Thing thing in map.things)
1727 {
1728 thing.isNPCProperty = false;
1729 }
1732 if (debug)
1733 {
1734 for (int i = 0; i < 7; i++)
1735 {
1736 Chara chara = CharaGen.CreateFromFilter("c_neutral");
1737 EClass._zone.AddCard(chara, EClass._map.bounds.GetRandomPoint().GetNearestPoint(allowBlock: false, allowChara: false, allowInstalled: false));
1738 branch.AddMemeber(chara);
1739 }
1740 }
1741 else
1742 {
1743 Msg.Say("claimedZone");
1744 EClass.Branch.Log("claimedZone");
1745 EClass.Sound.Play("jingle_embark");
1746 EClass.pc.PlaySound("build");
1747 if (pos == null)
1748 {
1749 pos = EClass.pc.pos.GetNearestPoint(allowBlock: false, allowChara: true, allowInstalled: false);
1750 }
1751 Effect.Get("aura_heaven").Play(pos);
1752 EClass._zone.AddCard(ThingGen.Create("core_zone"), pos).SetPlaceState(PlaceState.installed);
1753 }
1754 base.idPrefix = 0;
1756 {
1757 EClass.player.spawnZone = EClass._zone;
1758 }
1760 {
1761 EClass._zone.SetBGM(new List<int> { 41, 90, 44, 43 });
1763 }
1764 }
void SetPlaceState(PlaceState newState, bool byPlayer=false)
Definition: Card.cs:3747
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6178
Faction faction
Definition: Chara.cs:427
static Zone _zone
Definition: EClass.cs:21
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:3001
void SetBGM(List< int > ids, bool refresh=true, float fadeDuration=0f)
Definition: Zone.cs:2959

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

1903 {
1904 if (map != null)
1905 {
1906 UnloadMap();
1907 }
1908 base.isGenerated = false;
1909 Zone topZone = GetTopZone();
1910 if (topZone != this)
1911 {
1912 topZone.ClearZones(this);
1913 return;
1914 }
1915 children.ForeachReverse(delegate(Spatial c)
1916 {
1917 if (c != current)
1918 {
1919 c.Destroy();
1920 }
1921 });
1922 }
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 3733 of file Zone.cs.

3734 {
3735 int num = 0;
3736 foreach (Chara chara in EClass._map.charas)
3737 {
3738 if (chara.c_uidMaster == c.uid && chara.c_minionType == MinionType.Default)
3739 {
3740 num++;
3741 }
3742 }
3743 return num;
3744 }
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 2346 of file Zone.cs.

2347 {
2348 bp = new ZoneBlueprint();
2349 bp.Create();
2350 bp.genSetting.seed = base.Seed;
2351 OnCreateBP();
2352 }
virtual void OnCreateBP()
Definition: Zone.cs:2354

References ZoneBlueprint.Create().

◆ CreatePlaylist()

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

Definition at line 3057 of file Zone.cs.

3058 {
3059 Playlist playlist = EClass.Sound.plBlank.Instantiate();
3060 if (list.Count == 0 && (bool)mold)
3061 {
3062 list = mold.ToInts();
3063 playlist.shuffle = mold.shuffle;
3064 playlist.minSwitchTime = mold.minSwitchTime;
3065 playlist.nextBGMOnSwitch = mold.nextBGMOnSwitch;
3066 playlist.ignoreLoop = mold.ignoreLoop;
3067 playlist.keepBGMifSamePlaylist = mold.keepBGMifSamePlaylist;
3068 playlist.name = mold.name;
3069 }
3070 foreach (int item in list)
3071 {
3072 playlist.list.Add(new Playlist.Item
3073 {
3074 data = EClass.core.refs.dictBGM.TryGetValue(item, 1)
3075 });
3076 }
3077 return playlist;
3078 }

References item, and EClass.Sound.

◆ Deactivate()

void Zone.Deactivate ( )
inline

Definition at line 1619 of file Zone.cs.

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

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

1884 {
1885 children.ForeachReverse(delegate(Spatial z)
1886 {
1887 z.Destroy();
1888 });
1889 if (map != null)
1890 {
1891 UnloadMap();
1892 }
1893 if (parent != null && parent.IsRegion && instance == null)
1894 {
1895 EClass.scene.elomap.SetZone(base.x, base.y, null, updateMesh: true);
1896 }
1897 EClass.game.spatials.Remove(this);
1898 destryoed = true;
1899 base.isGenerated = false;
1900 }
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 527 of file Zone.cs.

528 {
529 return elements.Value(ele);
530 }
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 532 of file Zone.cs.

533 {
534 return elements.Value(EClass.sources.elements.alias[alias].id);
535 }
SourceElement elements

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

◆ Export() [1/2]

void Zone.Export ( )
inline

Definition at line 3256 of file Zone.cs.

3257 {
3259 string text = pathExport;
3260 IO.Copy(text, CorePath.ZoneSave + "Backup/");
3261 Export(text);
3262 Msg.Say("Exported Map:" + text);
3263 }
static void Copy(string fromPath, string toPath)
Definition: IO.cs:278
void ResetEditorPos()
Definition: Map.cs:357
void Export()
Definition: Zone.cs:3256

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

3174 {
3175 if (subset != null)
3176 {
3177 SE.Beep();
3178 return;
3179 }
3180 try
3181 {
3182 ZoneExportData zoneExportData = new ZoneExportData
3183 {
3184 name = name,
3185 usermap = usermap
3186 };
3188 if (!map.config.retainDecal)
3189 {
3191 }
3192 map.Save(IO.TempPath + "/", zoneExportData, partial);
3193 map.ExportMetaData(IO.TempPath + "/", Path.GetFileNameWithoutExtension(path), partial);
3194 if (partial == null)
3195 {
3196 IO.CopyDir(base.pathSave + "Texture Replace", IO.TempPath + "/Texture Replace");
3197 }
3198 IO.SaveFile(IO.TempPath + "/export", zoneExportData, compress: true);
3199 using (ZipFile zipFile = new ZipFile())
3200 {
3201 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
3202 zipFile.AddDirectory(IO.TempPath);
3203 zipFile.Save(path);
3204 zipFile.Dispose();
3205 }
3207 }
3208 catch (Exception ex)
3209 {
3210 EClass.ui.Say(ex.Message + ":" + path);
3211 }
3212 }
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 3214 of file Zone.cs.

3215 {
3217 {
3218 string text = StandaloneFileBrowser.SaveFilePanel("Export Zone", dir ?? CorePath.ZoneSave, "new zone", "z");
3219 if (!string.IsNullOrEmpty(text))
3220 {
3221 Export(text);
3222 Msg.SayRaw("Exported Zone");
3223 }
3224 });
3225 }
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 3085 of file Zone.cs.

3086 {
3087 return map.charas.Find((Chara c) => c.uid == uid);
3088 }
int uid
Definition: Spatial.cs:70

References Map.charas, and Card.uid.

◆ FindChara() [2/2]

Chara Zone.FindChara ( string  id)
inline

Definition at line 3080 of file Zone.cs.

3081 {
3082 return map.charas.Find((Chara c) => c.id == id);
3083 }

References Map.charas, and Card.id.

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

◆ Generate()

void Zone.Generate ( )
inline

Definition at line 2358 of file Zone.cs.

2359 {
2360 base.isGenerated = true;
2361 if (bp == null)
2362 {
2363 CreateBP();
2364 }
2365 if (bp.map == null)
2366 {
2367 bp.GenerateMap(this);
2368 }
2369 map.SetZone(this);
2370 Zone_Field zone_Field = this as Zone_Field;
2371 if (IdBiome == "Sand" || IdBiome == "Water" || IsUnderwater)
2372 {
2373 int num = 1 + EClass.rnd((IdBiome == "Water") ? 3 : 2);
2374 for (int i = 0; i < num; i++)
2375 {
2376 Point randomSurface = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2377 if (!randomSurface.HasObj && !randomSurface.HasThing)
2378 {
2379 Thing t = ThingGen.Create("pearl_oyster", new string[3] { "wood_birch", "poplar", "coralwood" }.RandomItem(), ContentLv);
2380 EClass._zone.AddCard(t, randomSurface).Install();
2381 }
2382 }
2383 num = 4 + EClass.rnd(5);
2384 for (int j = 0; j < num; j++)
2385 {
2386 Point randomSurface2 = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2387 if (!randomSurface2.HasObj && !randomSurface2.HasThing && (IsUnderwater || randomSurface2.cell.IsTopWaterAndNoSnow || EClass.rnd(6) == 0))
2388 {
2389 EClass._zone.AddCard(ThingGen.Create("70", -1, ContentLv), randomSurface2);
2390 }
2391 }
2392 }
2393 if (IsUnderwater)
2394 {
2395 for (int k = 0; k < 30 + EClass.rnd(30); k++)
2396 {
2397 SpawnMob(null, SpawnSetting.Fish());
2398 }
2399 Crawler crawler = Crawler.Create("pasture");
2400 int num2 = (EClass.debug.enable ? 3 : EClass.rnd(EClass.rnd(EClass.rnd(EClass.rnd(5) + 1) + 1) + 1));
2401 bool flag = this is Zone_Field;
2402 Thing seed = null;
2403 if (IsNefia)
2404 {
2405 int num3 = Mathf.Min(EClass._zone.DangerLv, EClass.pc.Evalue(286) * 2 / 3);
2406 if (num3 > 0)
2407 {
2409 Rand.SetSeed(EClass._zone.uid * 10 + num3);
2410 TraitSeed.LevelSeed(seed, (seed.trait as TraitSeed).row, num3);
2411 Rand.SetSeed();
2412 seed.elements.SetBase(2, EClass.curve(seed.encLV, 50, 10, 80));
2413 }
2414 }
2415 crawler.CrawlUntil(EClass._map, () => EClass._map.GetRandomPoint(), num2 + (flag ? 4 : 0), delegate(Crawler.Result r)
2416 {
2417 int num6 = 137;
2418 foreach (Point point in r.points)
2419 {
2420 if (!point.cell.isModified && !point.HasThing && !point.HasBlock && !point.HasObj)
2421 {
2422 map.SetObj(point.x, point.z, num6);
2423 int idx = 3 + ((EClass.rnd(3) == 0) ? 1 : 0) + ((EClass.rnd(3) == 0) ? (-1) : 0) + ((EClass.rnd(3) == 0) ? (-1) : 0);
2424 point.growth.SetStage(idx);
2425 if (seed != null)
2426 {
2427 EClass._map.AddPlant(point, seed);
2428 }
2429 }
2430 }
2431 return false;
2432 });
2433 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)
2434 {
2435 int num5 = 136;
2436 foreach (Point point2 in r.points)
2437 {
2438 if (!point2.cell.isModified && !point2.HasThing && !point2.HasBlock && !point2.HasObj)
2439 {
2440 map.SetObj(point2.x, point2.z, num5, 1, EClass.rnd(4));
2441 }
2442 }
2443 return false;
2444 });
2445 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)
2446 {
2447 int idFloor = 121;
2448 foreach (Point point3 in r.points)
2449 {
2450 map.SetFloor(point3.x, point3.z, 97, idFloor, Mathf.Clamp(4 - r.startPos.Distance(point3) + EClass.rnd(3) - EClass.rnd(3), 0, 3));
2451 }
2452 return false;
2453 });
2454 }
2455 if (zone_Field != null)
2456 {
2457 if (EClass.rnd(3) == 0)
2458 {
2459 int num4 = EClass.rnd(2);
2460 for (int l = 0; l < num4; l++)
2461 {
2462 Point randomSurface3 = EClass._map.bounds.GetRandomSurface();
2463 if (!randomSurface3.HasObj && !randomSurface3.HasThing)
2464 {
2466 EClass._zone.AddCard(t2, randomSurface3).Install();
2467 }
2468 }
2469 }
2470 if (EClass.rnd(8) == 0)
2471 {
2472 SpawnAltar();
2473 }
2475 }
2476 map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList) ?? EClass.Sound.GetPlaylist("Day"));
2477 }
@ seed
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:3041
int Evalue(int ele)
Definition: Card.cs:2571
Card Install()
Definition: Card.cs:3741
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:69
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:251
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:141
override int ContentLv
Definition: Zone.cs:98
void SpawnAltar()
Definition: Zone.cs:2513
Playlist CreatePlaylist(ref List< int > list, Playlist mold=null)
Definition: Zone.cs:3057
virtual bool IsNefia
Definition: Zone.cs:285
BiomeProfile biome
Definition: Zone.cs:129
Chara SpawnMob(string id, Point pos=null)
Definition: Zone.cs:2741
virtual string IdBiome
Definition: Zone.cs:131
override int DangerLv
Definition: Zone.cs:110
void TrySpawnFollower()
Definition: Zone.cs:2479
void CreateBP()
Definition: Zone.cs:2346

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

3091 {
3092 int max = base.lv;
3093 return GetDeepestLv(ref max);
3094 }
int GetDeepestLv()
Definition: Zone.cs:3090

◆ GetDeepestLv() [2/2]

int Zone.GetDeepestLv ( ref int  max)
inline

Definition at line 3096 of file Zone.cs.

3097 {
3098 if (Mathf.Abs(base.lv) > Mathf.Abs(max))
3099 {
3100 max = base.lv;
3101 }
3102 foreach (Spatial child in children)
3103 {
3104 (child as Zone).GetDeepestLv(ref max);
3105 }
3106 return max;
3107 }

◆ GetDungenID()

virtual string Zone.GetDungenID ( )
inlinevirtual

◆ GetElectricity()

int Zone.GetElectricity ( bool  cost = false)
inline

Definition at line 2920 of file Zone.cs.

2921 {
2922 bool flag = GetSoilCost() > MaxSoil;
2923 int sum = 0;
2924 foreach (Thing thing in EClass._map.things)
2925 {
2926 if (!thing.IsInstalled || thing.trait.Electricity == 0)
2927 {
2928 continue;
2929 }
2930 if (cost)
2931 {
2932 if (thing.trait.Electricity < 0)
2933 {
2934 sum += -thing.trait.Electricity;
2935 }
2936 }
2937 else if (thing.trait.Electricity > 0)
2938 {
2939 sum += thing.trait.Electricity;
2940 }
2941 }
2942 if (!cost)
2943 {
2944 sum += elements.Value(2201) * 10 + BaseElectricity;
2945 if (!flag)
2946 {
2947 EClass._map.bounds.ForeachCell(delegate(Cell c)
2948 {
2949 if (c.sourceObj.id == 118 && c.growth.IsMature)
2950 {
2951 sum += 20;
2952 }
2953 });
2954 }
2955 }
2956 return sum;
2957 }
bool IsInstalled
Definition: Card.cs:2381
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:118
virtual int BaseElectricity
Definition: Zone.cs:493
virtual int MaxSoil
Definition: Zone.cs:516
int GetSoilCost()
Definition: Zone.cs:3746

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

548 {
549 return base.source.id;
550 }

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

◆ GetOrCreateFortuneRollData()

FortuneRollData Zone.GetOrCreateFortuneRollData ( bool  refresh = true)
inline

Definition at line 3849 of file Zone.cs.

3850 {
3851 if (fortuneRoll == null)
3852 {
3854 fortuneRoll.seed = EClass._zone.uid * 100 + EClass.game.seed;
3855 }
3856 if (refresh || fortuneRoll.count == 0)
3857 {
3859 }
3860 return fortuneRoll;
3861 }
int seed
Definition: Game.cs:200
FortuneRollData fortuneRoll
Definition: Zone.cs:61

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

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

◆ GetProfile()

ZoneProfile Zone.GetProfile ( )
inline

Definition at line 2306 of file Zone.cs.

2307 {
2308 string text = IdProfile;
2309 if (text.IsEmpty())
2310 {
2311 Region region = parent as Region;
2312 if (base.lv != 0)
2313 {
2314 text = ((base.lv < 0) ? "Underground" : "Sky");
2315 }
2316 else if (region != null)
2317 {
2319 text = EClass.scene.elomapActor.elomap.GetTileInfo(base.x, base.y).idZoneProfile;
2320 if (bp != null)
2321 {
2322 name = Lang.GetList("zone_" + text.Split('/')[1]).RandomItem();
2323 bp.surrounding = new EloMap.TileInfo[3, 3];
2324 for (int i = 0; i < 3; i++)
2325 {
2326 for (int j = 0; j < 3; j++)
2327 {
2328 bp.surrounding[j, i] = EClass.scene.elomapActor.elomap.GetTileInfo(base.x - 1 + j, base.y - 1 + i);
2329 }
2330 }
2331 if (text == "Random/R_Shore")
2332 {
2333 base.isBeach = true;
2334 }
2335 }
2336 }
2337 else
2338 {
2339 text = "Random";
2340 }
2341 idProfile = text;
2342 }
2343 return ZoneProfile.Load(text);
2344 }
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:139
Region Region
Definition: Zone.cs:163

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

2038 : Trait
2039 {
2040 return EClass._map.props.installed.traits.GetRandomThing<T>() as T;
2041 }
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 1516 of file Zone.cs.

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

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

1929 {
1930 return this;
1931 }

◆ GetSoilCost()

int Zone.GetSoilCost ( )
inline

Definition at line 3746 of file Zone.cs.

3747 {
3748 int i = 0;
3749 EClass._map.bounds.ForeachCell(delegate(Cell c)
3750 {
3751 i += c.sourceObj.costSoil;
3752 });
3753 return i / 10;
3754 }

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

3274 {
3275 if (IsPCFaction)
3276 {
3277 return -10000000 + base.uid;
3278 }
3279 if (this is Zone_SubTown)
3280 {
3281 return -8000000 + base.uid;
3282 }
3283 if (this is Zone_Town)
3284 {
3285 return -9000000 + base.uid;
3286 }
3287 if (this is Zone_Civilized)
3288 {
3289 return -7000000 + base.uid;
3290 }
3291 if (this is Zone_RandomDungeon)
3292 {
3293 return 1000000 + base.uid;
3294 }
3295 return base.uid;
3296 }

Referenced by SpatialManager.ListReturnLocations().

◆ GetSpawnPos() [1/2]

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

Definition at line 1335 of file Zone.cs.

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

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

2709 {
2710 Point point = new Point();
2711 for (int i = 0; i < tries; i++)
2712 {
2713 point = EClass._map.bounds.GetRandomSurface(centered: false, walkable: true, allowWater: true);
2714 if (!point.IsValid || point.cell.hasDoor || point.IsSync)
2715 {
2716 continue;
2717 }
2718 switch (type)
2719 {
2720 case SpawnPosition.Guest:
2721 {
2722 Room room = point.cell.room;
2723 if (room != null && room.data.accessType != 0)
2724 {
2725 continue;
2726 }
2727 break;
2728 }
2729 case SpawnPosition.Outside:
2730 if (point.cell.HasRoof || point.cell.light > 0)
2731 {
2732 continue;
2733 }
2734 break;
2735 }
2736 return point;
2737 }
2738 return null;
2739 }
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:344

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

◆ GetTopZone()

◆ GetZoneAt()

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

Definition at line 3524 of file Zone.cs.

3525 {
3526 if (IsRegion)
3527 {
3528 foreach (Spatial child in children)
3529 {
3530 if (!(child is Zone_Field) && _x == child.x && _y == child.y)
3531 {
3532 return child as Zone;
3533 }
3534 }
3535 }
3536 foreach (Spatial child2 in children)
3537 {
3538 if (_x == child2.x && _y == child2.y)
3539 {
3540 return child2 as Zone;
3541 }
3542 }
3543 return null;
3544 }

References Spatial.x, and Spatial.y.

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

◆ GrowPlants()

void Zone.GrowPlants ( VirtualDate  date)
inline

Definition at line 3417 of file Zone.cs.

3418 {
3419 bool num = (EClass.player.isAutoFarming = IsPCFaction && EClass.Branch.policies.IsActive(2707));
3420 int weedChance = 1;
3422 {
3423 weedChance += (EClass.debug.enable ? 100000 : 20) + EClass.Branch.Evalue(2703) * 10;
3424 }
3425 if (date.sunMap == null)
3426 {
3427 date.BuildSunMap();
3428 }
3429 if (num)
3430 {
3431 HashSet<int> hashSet = new HashSet<int>();
3432 foreach (Thing thing in EClass._map.things)
3433 {
3434 if (!thing.IsInstalled || !(thing.trait is TraitSpotFarm traitSpotFarm))
3435 {
3436 continue;
3437 }
3438 foreach (Point item in traitSpotFarm.ListPoints(null, onlyPassable: false))
3439 {
3440 hashSet.Add(item.index);
3441 }
3442 }
3443 Perform(hashSet);
3444 EClass.player.isAutoFarming = false;
3445 Perform(hashSet);
3446 }
3447 else
3448 {
3449 Perform(null);
3450 }
3451 void Perform(HashSet<int> farmMap)
3452 {
3453 bool isWinter = date.IsWinter;
3454 EClass._map.bounds.ForeachCell(delegate(Cell c)
3455 {
3456 if (farmMap != null)
3457 {
3459 {
3460 if (!farmMap.Contains(c.index))
3461 {
3462 return;
3463 }
3464 }
3465 else if (farmMap.Contains(c.index))
3466 {
3467 return;
3468 }
3469 }
3470 if (c.decal != 0 && EClass.rnd(3) == 0)
3471 {
3472 c.decal = 0;
3473 }
3474 if (GrowPlant)
3475 {
3476 if (c.growth != null)
3477 {
3478 bool flag = false;
3479 if (!EClass.player.isAutoFarming && c.growth.HaltGrowth() && (c.IsFarmField || c.IsTopWater) && (!isWinter || !date.IsRealTime))
3480 {
3481 flag = true;
3482 }
3483 PlantData plantData = map.TryGetPlant(c);
3484 if (!flag && (plantData == null || plantData.fert >= 0))
3485 {
3486 c.TryGrow(date);
3487 }
3488 if (isWinter && plantData != null && c.growth != null && c.growth.NeedSunlight && plantData.fert >= 0 && (EClass.rnd(4) == 0 || c.growth.stage.idx == 0))
3489 {
3490 if (date.sunMap == null)
3491 {
3492 date.BuildSunMap();
3493 }
3494 if (!date.sunMap.Contains(c.index) && !c.growth.CanGrow(date))
3495 {
3496 c.growth.Perish();
3497 }
3498 }
3499 }
3500 else if (c.detail != null)
3501 {
3502 c.Things.ForeachReverse(delegate(Thing t)
3503 {
3504 if (t.IsInstalled && t.trait is TraitSeed && !t.isSale)
3505 {
3506 (t.trait as TraitSeed).TrySprout(force: false, sucker: false, date);
3507 }
3508 });
3509 }
3510 else if (EClass.rnd(20) == 0 && GrowWeed && c.CanGrowWeed && EClass.rnd(weedChance) == 0)
3511 {
3512 biome.Populate(c.GetPoint());
3513 if (c.growth != null)
3514 {
3515 c.growth.SetStage(0);
3516 }
3517 }
3518 }
3519 c.isWatered = false;
3520 });
3521 }
3522 }
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:190
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:1181
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:349
virtual bool GrowPlant
Definition: Zone.cs:347

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

◆ HasField()

bool Zone.HasField ( int  idEle)
inline

Definition at line 2879 of file Zone.cs.

2880 {
2881 return fieldElements.Has(idEle);
2882 }
bool Has(int ele)
ElementContainerField fieldElements
Definition: Zone.cs:46

References ElementContainer.Has().

Referenced by ActEffect.ProcAt(), Card.SpawnLoot(), and GoalCombat.TryUseAbility().

◆ Import()

ZoneExportData Zone.Import ( string  path)
inline

Definition at line 3164 of file Zone.cs.

3165 {
3166 ZipFile zipFile = ZipFile.Read(path);
3167 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
3168 zipFile.ExtractAll(pathTemp);
3169 zipFile.Dispose();
3170 return IO.LoadFile<ZoneExportData>(pathTemp + "export") ?? new ZoneExportData();
3171 }

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

◆ ImportDialog()

void Zone.ImportDialog ( string  dir = null)
inline

Definition at line 3227 of file Zone.cs.

3228 {
3230 {
3231 string[] array = StandaloneFileBrowser.OpenFilePanel("Import Zone", dir ?? CorePath.ZoneSave, "z", multiselect: false);
3232 if (array.Length != 0)
3233 {
3234 Zone_User zone_User = SpatialGen.Create("user", EClass.world.region, register: true) as Zone_User;
3235 zone_User.path = array[0];
3236 Thing thing = ThingGen.Create("teleporter");
3237 thing.c_uidZone = zone_User.uid;
3238 EClass._zone.AddCard(thing, EClass.pc.pos);
3239 }
3240 });
3241 }
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 3546 of file Zone.cs.

3547 {
3548 if (act.IsHostileAct && HasLaw && !IsPCFaction && c.IsPC)
3549 {
3550 return true;
3551 }
3552 return false;
3553 }
virtual bool IsHostileAct
Definition: ACT.cs:129
virtual bool HasLaw
Definition: Zone.cs:229

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

3244 {
3245 try
3246 {
3247 return Map.GetMetaData(path)?.IsValidVersion() ?? false;
3248 }
3249 catch (Exception ex)
3250 {
3251 EClass.ui.Say(ex.Message);
3252 return false;
3253 }
3254 }
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 3109 of file Zone.cs.

3110 {
3111 if (landFeats == null)
3112 {
3113 landFeats = new List<int>();
3115 string[] listBase = IDBaseLandFeat.Split(',');
3116 string[] array = listBase;
3117 foreach (string text in array)
3118 {
3119 if (!text.IsEmpty())
3120 {
3121 landFeats.Add(EClass.sources.elements.alias[text].id);
3122 }
3123 }
3124 if (listBase.Length == 1)
3125 {
3126 List<SourceElement.Row> list = EClass.sources.elements.rows.Where(delegate(SourceElement.Row e)
3127 {
3128 if (e.category != "landfeat" || e.chance == 0)
3129 {
3130 return false;
3131 }
3132 bool flag = true;
3133 string[] tag = e.tag;
3134 foreach (string text2 in tag)
3135 {
3136 if (text2.StartsWith("bf"))
3137 {
3138 flag = false;
3139 if (listBase[0] == text2)
3140 {
3141 flag = true;
3142 break;
3143 }
3144 }
3145 }
3146 return flag ? true : false;
3147 }).ToList();
3148 SourceElement.Row row = list.RandomItemWeighted((SourceElement.Row e) => e.chance);
3149 landFeats.Add(row.id);
3150 list.Remove(row);
3151 row = list.RandomItemWeighted((SourceElement.Row e) => e.chance);
3152 landFeats.Add(row.id);
3153 }
3154 Rand.SetSeed();
3155 }
3156 List<Element> list2 = new List<Element>();
3157 foreach (int landFeat in landFeats)
3158 {
3159 list2.Add(Element.Create(landFeat, 1));
3160 }
3161 return list2;
3162 }
static Element Create(int id, int v=0)
Definition: ELEMENT.cs:1102
virtual string IDBaseLandFeat
Definition: Zone.cs:147
List< int > landFeats
Definition: Zone.cs:58

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

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

◆ ListMinions()

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

Definition at line 3720 of file Zone.cs.

3721 {
3722 List<Chara> list = new List<Chara>();
3723 foreach (Chara chara in EClass._map.charas)
3724 {
3725 if (chara.c_uidMaster == c.uid && chara.c_minionType == MinionType.Default)
3726 {
3727 list.Add(chara);
3728 }
3729 }
3730 return list;
3731 }

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

◆ ModDevelopment()

void Zone.ModDevelopment ( int  a)
inline

Definition at line 3624 of file Zone.cs.

3625 {
3626 base.development += a;
3627 if (a > 0)
3628 {
3629 Msg.Say("gainDevelopment", Name, a.ToString() ?? "");
3630 }
3631 }

References Msg.Say().

◆ ModInfluence()

void Zone.ModInfluence ( int  a)
inline

Definition at line 3614 of file Zone.cs.

3615 {
3616 base.influence += a;
3617 if (a > 0)
3618 {
3619 Msg.Say("gainInfluence", Name, a.ToString() ?? "");
3620 }
3621 Tutorial.Reserve("influence");
3622 }

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

1172 {
1173 }

Referenced by GameDate.AdvanceHour().

◆ OnAfterCreate()

override void Zone.OnAfterCreate ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 576 of file Zone.cs.

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

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

◆ OnAfterSimulate()

virtual void Zone.OnAfterSimulate ( )
inlinevirtual

Reimplemented in Zone_WindRest.

Definition at line 1167 of file Zone.cs.

1168 {
1169 }

◆ OnBeforeDeactivate()

virtual void Zone.OnBeforeDeactivate ( )
inlinevirtual

Reimplemented in Zone_Tent.

Definition at line 1151 of file Zone.cs.

1152 {
1153 }

◆ OnBeforeSimulate()

virtual void Zone.OnBeforeSimulate ( )
inlinevirtual

Reimplemented in Zone_DungeonPuppy, and Zone_Nymelle.

Definition at line 1159 of file Zone.cs.

1160 {
1161 }

◆ OnChildNumChange()

void Zone.OnChildNumChange ( Card  c)
inline

Implements ICardParent.

Definition at line 1924 of file Zone.cs.

1925 {
1926 }

◆ OnCreate()

override void Zone.OnCreate ( )
inlinevirtual

Reimplemented from Spatial.

Definition at line 570 of file Zone.cs.

571 {
572 events.zone = this;
573 base.lv = StartLV;
574 }
virtual int StartLV
Definition: Zone.cs:409

References StartLV.

◆ OnCreateBP()

virtual void Zone.OnCreateBP ( )
inlinevirtual

Reimplemented in Zone_Arena2, and Zone_Harvest.

Definition at line 2354 of file Zone.cs.

2355 {
2356 }

◆ OnDeactivate()

virtual void Zone.OnDeactivate ( )
inlinevirtual

Definition at line 1155 of file Zone.cs.

1156 {
1157 }

◆ OnGenerateMap()

virtual void Zone.OnGenerateMap ( )
inlinevirtual

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

Definition at line 2552 of file Zone.cs.

2553 {
2555 {
2556 foreach (Chara chara in EClass._map.charas)
2557 {
2558 if (!chara.IsGlobal && chara.hostility < Hostility.Neutral && chara.OriginalHostility < Hostility.Friend)
2559 {
2560 Hostility hostility2 = (chara.c_originalHostility = Hostility.Neutral);
2561 chara.hostility = hostility2;
2562 }
2563 }
2564 }
2565 if (PrespawnRate != 0f && !IsSkyLevel)
2566 {
2567 for (int i = 0; i < (int)((float)MaxSpawn * PrespawnRate); i++)
2568 {
2569 SpawnMob();
2570 }
2571 }
2576 }
Hostility
Definition: Hostility.cs:2
Hostility OriginalHostility
Definition: Chara.cs:471
Hostility hostility
Definition: Chara.cs:291
virtual float PrespawnRate
Definition: Zone.cs:327
virtual int MaxSpawn
Definition: Zone.cs:313
virtual bool IsSkyLevel
Definition: Zone.cs:267
Chara TryGenerateEvolved(bool force=false, Point p=null)
Definition: Zone.cs:2605
void TryGenerateShrine()
Definition: Zone.cs:2651
void TryGenerateOre()
Definition: Zone.cs:2578
virtual bool MakeEnemiesNeutral
Definition: Zone.cs:234
void TryGenerateBigDaddy()
Definition: Zone.cs:2625

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

2705 {
2706 }

Referenced by MapGenDungen.OnGenerateTerrain().

◆ OnInspect()

void Zone.OnInspect ( )
inline

Implements IInspect.

Definition at line 3269 of file Zone.cs.

3270 {
3271 }

◆ OnKillGame()

void Zone.OnKillGame ( )
inline

Definition at line 1687 of file Zone.cs.

1688 {
1689 foreach (Thing thing in map.things)
1690 {
1691 if (thing.renderer.hasActor)
1692 {
1693 thing.renderer.KillActor();
1694 }
1695 }
1696 }
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 1874 of file Zone.cs.

1875 {
1876 if (branch != null)
1877 {
1878 branch.SetOwner(this);
1879 }
1880 events.OnLoad(this);
1881 }
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 1143 of file Zone.cs.

1144 {
1145 }

◆ OnSimulateDay()

void Zone.OnSimulateDay ( VirtualDate  date)
inline

Definition at line 3382 of file Zone.cs.

3383 {
3384 if (base.IsPlayerFaction)
3385 {
3386 branch.OnSimulateDay(date);
3387 }
3388 }
void OnSimulateDay(VirtualDate date)

References FactionBranch.OnSimulateDay().

Referenced by VirtualDate.SimulateDay().

◆ OnSimulateHour()

void Zone.OnSimulateHour ( VirtualDate  date)
inline

Definition at line 3327 of file Zone.cs.

3328 {
3329 if (base.IsPlayerFaction)
3330 {
3331 branch.OnSimulateHour(date);
3332 }
3334 if (date.IsRealTime)
3335 {
3336 foreach (Thing thing in EClass._map.things)
3337 {
3338 if (thing.IsInstalled)
3339 {
3340 thing.trait.TryToggle();
3341 }
3342 }
3344 }
3345 EClass._map.things.ForeachReverse(delegate(Thing t)
3346 {
3347 t.OnSimulateHour(date);
3348 });
3349 foreach (Thing sucker in Suckers)
3350 {
3351 sucker.Destroy();
3352 }
3353 Suckers.Clear();
3354 if (RespawnRate != 0f)
3355 {
3356 int num = 0;
3357 foreach (Chara chara in map.charas)
3358 {
3359 if (!chara.IsGlobal)
3360 {
3361 num++;
3362 }
3363 }
3364 if (num < MaxRespawn)
3365 {
3366 for (int i = 0; i < RespawnPerHour; i++)
3367 {
3368 SpawnMob();
3369 }
3370 }
3371 }
3372 if (!date.IsRealTime && EClass.rnd(24) == 0)
3373 {
3374 RainWater();
3375 }
3376 if (date.hour == 6)
3377 {
3378 GrowPlants(date);
3379 }
3380 }
virtual void OnSimulateHour(VirtualDate date)
Definition: Card.cs:6605
void DecayNatural(int hour=1)
Definition: Card.cs:6614
int hour
Definition: Date.cs:74
void OnSimulateHour(VirtualDate date)
virtual void TryToggle()
Definition: Trait.cs:1135
bool IsRealTime
Definition: VirtualDate.cs:7
virtual int RespawnPerHour
Definition: Zone.cs:343
virtual float RespawnRate
Definition: Zone.cs:329
static List< Thing > Suckers
Definition: Zone.cs:83
void GrowPlants(VirtualDate date)
Definition: Zone.cs:3417
int MaxRespawn
Definition: Zone.cs:315

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

3391 {
3392 if (base.IsPlayerFaction)
3393 {
3394 branch.OnSimulateMonth(date);
3395 }
3396 if (date.IsRealTime)
3397 {
3399 }
3400 }
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 1059 of file Zone.cs.

1060 {
1061 if (EClass.world.date.IsExpired(base.dateRevive))
1062 {
1064 Revive();
1065 List<Chara> list = new List<Chara>();
1066 foreach (Chara chara in EClass._map.charas)
1067 {
1068 chara.TryRestock(onCreate: false);
1069 if (!chara.IsPCFaction)
1070 {
1071 chara.c_fur = 0;
1072 }
1073 if (chara.IsMinion && chara.master != null && !chara.master.IsPCParty)
1074 {
1075 list.Add(chara);
1076 }
1077 }
1078 foreach (Chara item in list)
1079 {
1080 item.Destroy();
1081 }
1082 }
1085 events.OnVisit();
1086 OnActivate();
1087 UpdateQuests();
1089 isSimulating = true;
1090 Simulate();
1091 isSimulating = false;
1093 if (EClass.Branch != null)
1094 {
1096 }
1097 base.lastActive = EClass.world.date.GetRaw();
1098 if (!EClass.game.isLoading)
1099 {
1100 base.visitCount++;
1101 }
1102 base.version = EClass.core.version.GetInt();
1103 if (fieldElements.dict.Count() > 0)
1104 {
1105 Tutorial.Reserve("field");
1106 }
1107 }
Version version
Definition: BaseCore.cs:17
override bool IsPCFaction
Definition: Chara.cs:671
void TryRestock(bool onCreate)
Definition: Chara.cs:4678
Dictionary< int, Element > dict
void OnAfterSimulate()
void AssignCharas()
Definition: RoomManager.cs:39
void Revive()
Definition: Zone.cs:1109
void Simulate()
Definition: Zone.cs:1175
virtual void OnAfterSimulate()
Definition: Zone.cs:1167
void RefreshCriminal()
Definition: Zone.cs:3555
virtual void OnBeforeSimulate()
Definition: Zone.cs:1159
virtual void OnActivate()
Definition: Zone.cs:1147
void ResetHostility()
Definition: Zone.cs:2688
void UpdateQuests(bool force=false)
Definition: Zone.cs:3633
int GetInt()
Definition: Version.cs:21

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

◆ OnVisitNewMapOrRegenerate()

virtual void Zone.OnVisitNewMapOrRegenerate ( )
inlinevirtual

Reimplemented in Zone_Yowyn.

Definition at line 1163 of file Zone.cs.

1164 {
1165 }

◆ RainWater()

void Zone.RainWater ( )
inline

Definition at line 3402 of file Zone.cs.

3403 {
3405 {
3406 return;
3407 }
3408 EClass._map.bounds.ForeachCell(delegate(Cell c)
3409 {
3410 if (c.IsFarmField && !c.HasRoof)
3411 {
3412 c.isWatered = true;
3413 }
3414 });
3415 }
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 3017 of file Zone.cs.

3018 {
3020 {
3021 return;
3022 }
3024 Playlist playlist = map.plDay;
3025 foreach (ZoneEvent item in events.list)
3026 {
3027 if (item.playlist != null)
3028 {
3029 playlist = item.playlist;
3030 }
3031 }
3032 if (IDPlaylistOverwrite != null)
3033 {
3034 playlist = EClass.Sound.GetPlaylist(IDPlaylistOverwrite);
3035 }
3037 {
3038 Room room = EClass.pc.pos.cell.room;
3039 if (room != null && room.lot != null && room.lot.idBGM != 0)
3040 {
3041 playlist = EClass.Sound.plLot;
3042 if (playlist.list[0].data?.id != room.lot.idBGM)
3043 {
3044 playlist.list[0].data = EClass.core.refs.dictBGM.TryGetValue(room.lot.idBGM);
3045 playlist.Reset();
3046 if (!LayerDrama.keepBGM)
3047 {
3048 EClass.Sound.StopBGM(1f);
3049 }
3050 }
3051 }
3052 }
3054 EClass.Sound.SwitchPlaylist(playlist, !LayerDrama.keepBGM);
3055 }
bool IsInActiveZone
Definition: Chara.cs:838
void SetBGMInterval()
Definition: CoreConfig.cs:1006
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:143

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

3556 {
3557 bool flag = EClass.player.IsCriminal && HasLaw && !AllowCriminal && !IsPCFaction;
3558 Hostility hostility = (flag ? Hostility.Neutral : Hostility.Friend);
3559 foreach (Chara chara in EClass._map.charas)
3560 {
3561 if (chara.trait is TraitGuard)
3562 {
3563 chara.hostility = hostility;
3564 if (!flag && chara.enemy != null && chara.enemy.IsPCParty)
3565 {
3566 chara.SetEnemy();
3567 }
3568 }
3569 }
3570 }
Chara enemy
Definition: Chara.cs:86
Chara SetEnemy(Chara c=null)
Definition: Chara.cs:6306
virtual bool AllowCriminal
Definition: Zone.cs:247

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

2890 {
2891 dirtyElectricity = false;
2892 bool flag = GetSoilCost() > MaxSoil;
2893 base.electricity = elements.Value(2201) * 10 + BaseElectricity;
2894 foreach (Thing thing in EClass._map.things)
2895 {
2896 if (thing.IsInstalled && thing.trait.Electricity != 0 && (thing.isOn || thing.trait.Electricity > 0))
2897 {
2898 base.electricity += thing.trait.Electricity;
2899 }
2900 }
2901 if (!flag)
2902 {
2903 EClass._map.bounds.ForeachCell(delegate(Cell c)
2904 {
2905 if (c.sourceObj.id == 118 && c.growth.IsMature)
2906 {
2907 base.electricity += 20;
2908 }
2909 });
2910 }
2911 foreach (Thing thing2 in EClass._map.things)
2912 {
2913 if (thing2.IsInstalled)
2914 {
2915 thing2.trait.TryToggle();
2916 }
2917 }
2918 }
bool isOn
Definition: Card.cs:542
bool dirtyElectricity
Definition: Zone.cs:71

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

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

◆ RefreshHat()

void Zone.RefreshHat ( )
inline

Definition at line 1049 of file Zone.cs.

1050 {
1051 if (idHat != null && EClass.world.date.IsExpired(base.dateHat))
1052 {
1053 idHat = null;
1054 base.dateHat = 0;
1055 }
1056 sourceHat = ((idHat != null) ? EClass.sources.cards.map[idHat] : ((IDHat != null) ? EClass.sources.cards.map[IDHat] : null));
1057 }
Dictionary< string, CardRow > map
Definition: SourceCard.cs:8
SourceCard cards
string idHat
Definition: Spatial.cs:31
virtual string IDHat
Definition: Zone.cs:145
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 3572 of file Zone.cs.

3573 {
3574 if (base.lv != 0)
3575 {
3576 return;
3577 }
3578 dictCitizen.Clear();
3579 foreach (Chara item in map.charas.Concat(map.deadCharas))
3580 {
3581 if (item.trait.IsCitizen && !item.IsGlobal && !item.isSubsetCard)
3582 {
3583 dictCitizen[item.uid] = item.Name;
3584 }
3585 }
3586 }
Dictionary< int, string > dictCitizen
Definition: Zone.cs:52

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

Referenced by Chara.MakeAlly().

◆ RefreshPlaylist()

void Zone.RefreshPlaylist ( )
inline

Definition at line 3001 of file Zone.cs.

3002 {
3003 if (map.plDay == null)
3004 {
3005 map.plDay = CreatePlaylist(ref map._plDay, EClass.Sound.GetPlaylist(IDPlayList));
3006 }
3007 }

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

2018 {
2019 if (IsActiveZone)
2020 {
2022 }
2023 t.parent = null;
2024 if (t.isChara)
2025 {
2026 t.Chara.currentZone = null;
2027 }
2028 if (t.isThing && !t.trait.IDActorEx.IsEmpty())
2029 {
2031 }
2032 if (t.renderer.hasActor)
2033 {
2035 }
2036 }
override void OnLeaveScreen()
virtual bool isChara
Definition: Card.cs:2083
void OnCardRemovedFromZone(Card t)
Definition: Map.cs:825
void RemoveActorEx(Card c)
Definition: Scene.cs:1031
virtual string IDActorEx
Definition: Trait.cs:176

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

2689 {
2690 foreach (Chara chara in EClass._map.charas)
2691 {
2692 if (!chara.source.hostility.IsEmpty() && chara.source.hostility.ToEnum<Hostility>() >= Hostility.Friend && !chara.IsPCFactionOrMinion)
2693 {
2694 chara.c_originalHostility = (Hostility)0;
2695 }
2696 chara.hostility = chara.OriginalHostility;
2697 if (chara.enemy != null && (chara.enemy.IsPCFaction || chara.IsPCFaction))
2698 {
2699 chara.SetEnemy();
2700 }
2701 }
2702 }
bool IsPCFactionOrMinion
Definition: Card.cs:2272
SourceChara.Row source
Definition: Chara.cs:158

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

3010 {
3011 map._plDay.Clear();
3012 UnityEngine.Object.DestroyImmediate(map.plDay);
3013 map.plDay = null;
3015 }

References Map._plDay, and Map.plDay.

◆ Revive()

void Zone.Revive ( )
inline

Definition at line 1109 of file Zone.cs.

1110 {
1111 base.dateRevive = EClass.world.date.GetRaw() + 1440 * EClass.setting.balance.dateRevive;
1112 if (ShouldAutoRevive)
1113 {
1114 foreach (Chara deadChara in map.deadCharas)
1115 {
1116 if (deadChara.trait.CanAutoRevive && deadChara.CanRevive())
1117 {
1118 deadChara.Revive();
1120 {
1121 deadChara.RemoveBacker();
1122 }
1123 EClass._zone.AddCard(deadChara, (deadChara.orgPos != null && deadChara.orgPos.IsInBounds) ? deadChara.orgPos : deadChara.pos);
1124 }
1125 }
1126 }
1127 foreach (Chara value in EClass.game.cards.globalCharas.Values)
1128 {
1129 if (value.isDead && value.CanRevive() && value.homeZone == this)
1130 {
1131 value.Revive();
1132 Point point = GetSpawnPos(value);
1133 if (value.orgPos != null && value.orgPos.IsInBounds)
1134 {
1135 point = value.orgPos.GetNearestPoint() ?? point;
1136 }
1137 EClass._zone.AddCard(value, point);
1138 }
1139 }
1140 map.deadCharas.Clear();
1141 }
int c_idBacker
Definition: Card.cs:1437
bool CanRevive()
Definition: Chara.cs:5116
void Revive(Point p=null, bool msg=false)
Definition: Chara.cs:5142
Zone homeZone
Definition: Chara.cs:267
bool IsInBounds
Definition: Point.cs:104
virtual bool CanAutoRevive
Definition: TraitChara.cs:20
virtual bool ShouldAutoRevive
Definition: Zone.cs:380

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

3589 {
3590 base.isAlarmSet = enable;
3591 if (enable)
3592 {
3593 foreach (Chara chara in EClass._map.charas)
3594 {
3595 if (!chara.IsPCFactionOrMinion)
3596 {
3597 chara.SetHostility(Hostility.Enemy);
3598 }
3599 }
3600 Msg.Say("alarm");
3601 Msg.Say("alarm2");
3602 SE.Play("alarm");
3603 return;
3604 }
3605 foreach (Chara chara2 in EClass._map.charas)
3606 {
3607 if (!chara2.IsPCFactionOrMinion)
3608 {
3609 chara2.SetHostility(Hostility.Neutral);
3610 }
3611 }
3612 }
Chara SetHostility(Hostility h)
Definition: Chara.cs:1434

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

2997 {
2998 SetBGM(new List<int> { id }, refresh, fadeDuration);
2999 }

◆ SetBGM() [2/2]

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

Definition at line 2959 of file Zone.cs.

2960 {
2961 map._plDay.Clear();
2962 if (ids.Count > 0)
2963 {
2964 foreach (int id in ids)
2965 {
2966 if (id != -1)
2967 {
2968 map._plDay.Add(id);
2969 }
2970 }
2971 }
2972 UnityEngine.Object.DestroyImmediate(map.plDay);
2973 map.plDay = null;
2975 if (!refresh)
2976 {
2977 return;
2978 }
2979 if (fadeDuration > 0f)
2980 {
2981 EClass.Sound.StopBGM(fadeDuration, playLastBGM: false, delegate
2982 {
2984 {
2985 RefreshBGM();
2986 }
2987 });
2988 }
2989 else
2990 {
2991 EClass.Sound.StopBGM();
2992 RefreshBGM();
2993 }
2994 }
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(), ZonePreEnterBout.Execute(), Zone_DungeonDead.OnActivate(), Zone_EternalGarden.OnActivate(), Zone_Nefu.OnActivate(), ZoneEventDefenseGame.OnVisit(), ZoneEventHarvest.OnVisit(), ZoneEventSubdue.OnVisit(), DramaManager.ParseLine(), GoalCombat.Run(), Zone_CurryRuinDungeon.SetAlarm(), CardRenderer.ShowBossText(), ActThrow.Throw(), and Chara.TryDropBossLoot().

◆ SetFieldEffect()

void Zone.SetFieldEffect ( int  idEle,
int  a 
)
inline

Definition at line 2884 of file Zone.cs.

2885 {
2886 fieldElements.SetBase(idEle, a);
2887 }
Element SetBase(string alias, int v, int potential=0)

References ElementContainer.SetBase().

Referenced by Zone_DungeonDead.OnActivate().

◆ ShouldScaleImportedChara()

virtual bool Zone.ShouldScaleImportedChara ( Chara  c)
inlinevirtual

Reimplemented in Zone_QuestDungeon.

Definition at line 542 of file Zone.cs.

543 {
544 return false;
545 }

Referenced by SerializedCards.Restore().

◆ Simulate()

void Zone.Simulate ( )
inline

Definition at line 1175 of file Zone.cs.

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

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

2514 {
2516 {
2517 if (r.points.Count <= 4)
2518 {
2519 return false;
2520 }
2521 map.poiMap.OccyupyPOI(r.points[0]);
2522 List<Point> points = r.points;
2523 Religion randomReligion = EClass.game.religions.GetRandomReligion();
2524 "altarPoint".lang(randomReligion.NameDomain.lang());
2525 Thing thing = ThingGen.Create("altar");
2526 (thing.trait as TraitAltar).SetDeity(randomReligion.id);
2527 Chara t = CharaGen.Create("twintail");
2528 EClass._zone.AddCard(t, points.RandomItem());
2529 for (int i = 0; i < 2 + EClass.rnd(2); i++)
2530 {
2531 Chara t2 = CharaGen.Create("twintail");
2532 EClass._zone.AddCard(t2, points.RandomItem());
2533 }
2534 if (points[0].Installed == null)
2535 {
2536 EClass._zone.AddCard(thing, points[0]).Install();
2537 }
2538 foreach (Point item in points)
2539 {
2540 if (item.x % 3 == 0 && item.z % 2 == 0 && item != points[0] && !item.Equals(points[0].Front) && item.Installed == null)
2541 {
2542 thing = ThingGen.Create("pillar1");
2543 EClass._zone.AddCard(thing, item).Install();
2544 }
2545 item.SetObj();
2546 item.SetFloor(3, 6);
2547 }
2548 return true;
2549 });
2550 }
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 3756 of file Zone.cs.

3757 {
3758 for (int i = 0; i < 2 + EClass.rnd(4); i++)
3759 {
3760 Point point = GetPos();
3761 if (point == null)
3762 {
3763 continue;
3764 }
3765 if (EClass.rnd(30) == 0)
3766 {
3767 Thing thing = ThingGen.Create("purse");
3768 thing.isLostProperty = true;
3769 thing.things.DestroyAll();
3770 int num2 = (thing.c_lockLv = EClass.rndHalf(Mathf.Min(base.development / 10 + 10, 50)));
3771 thing.Add("money", EClass.rndHalf(num2 * 60 + 1000));
3772 if (EClass.rnd(2) == 0)
3773 {
3774 thing.Add("plat", EClass.rnd(4));
3775 }
3776 else
3777 {
3778 thing.Add("medal", EClass.rnd(2));
3779 }
3780 EClass._zone.AddCard(thing, point);
3781 }
3782 else
3783 {
3785 }
3786 }
3787 static Point GetPos()
3788 {
3789 for (int j = 0; j < 10; j++)
3790 {
3791 Point randomPoint = EClass._zone.bounds.GetRandomPoint();
3792 if (!randomPoint.IsBlocked && !randomPoint.HasThing && !randomPoint.HasObj && !randomPoint.HasBlock)
3793 {
3794 return randomPoint;
3795 }
3796 }
3797 return null;
3798 }
3799 }
ThingContainer things
Definition: Card.cs:38
Thing Add(string id, int num=1, int lv=1)
Definition: Card.cs:3081
static int rndHalf(int a)
Definition: EClass.cs:97
void DestroyAll(Func< Thing, bool > funcExclude=null)
static Thing CreateFromCategory(string idCat, int lv=-1)
Definition: ThingGen.cs:75
MapBounds bounds
Definition: Zone.cs:49

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

◆ SpawnMob() [1/2]

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

Definition at line 2749 of file Zone.cs.

2750 {
2751 if (setting == null)
2752 {
2754 }
2755 if (pos == null)
2756 {
2757 pos = GetSpawnPos(setting.position, setting.tries);
2758 if (pos == null)
2759 {
2760 pos = GetSpawnPos(SpawnPosition.Random, setting.tries);
2761 if (pos == null)
2762 {
2763 return null;
2764 }
2765 }
2766 }
2768 if (IsUnderwater && EClass.rnd(15) != 0)
2769 {
2771 }
2772 SpawnList spawnList = null;
2773 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
2774 {
2775 ShouldPass = delegate(SourceChara.Row s)
2776 {
2777 if (s.hostility != "")
2778 {
2779 return false;
2780 }
2781 return s.biome == biome.name || s.biome.IsEmpty();
2782 }
2784 int num = ((setting.dangerLv == -1) ? DangerLv : setting.dangerLv);
2785 CardBlueprint cardBlueprint = new CardBlueprint
2786 {
2787 rarity = Rarity.Normal,
2788 idEle = setting.idEle
2789 };
2790 int num2 = ((setting.filterLv == -1) ? num : setting.filterLv);
2791 if (ScaleType == ZoneScaleType.Void)
2792 {
2793 num2 = ((num - 1) % 50 + 5) * 150 / 100;
2794 if (num2 >= 20 && EClass.rnd(100) < num2)
2795 {
2796 num2 = num;
2797 }
2798 }
2799 CardRow cardRow = (setting.id.IsEmpty() ? spawnList.Select(num2, setting.levelRange) : EClass.sources.cards.map[setting.id]);
2800 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)
2801 {
2802 cardRow = EClass.sources.cards.map["santa"];
2804 }
2805 long num3 = ((setting.fixedLv == -1) ? cardRow.LV : setting.fixedLv);
2806 bool flag = setting.fixedLv != -1 || DangerLvBoost > 0;
2807 if (ScaleType == ZoneScaleType.Void)
2808 {
2809 num3 = (50L + (long)cardRow.LV) * Mathf.Max(1, (num - 1) / 50);
2810 flag = true;
2811 }
2812 num3 += DangerLvBoost;
2813 if (setting.rarity == Rarity.Random && cardRow.quality == 0)
2814 {
2815 if (EClass.rnd(EClass.pc.HasElement(1271) ? 80 : 100) == 0)
2816 {
2817 cardBlueprint.rarity = Rarity.Legendary;
2818 num3 = num3 * 125 / 100;
2819 }
2820 }
2821 else
2822 {
2823 cardBlueprint.rarity = setting.rarity;
2824 }
2825 if (setting.isBoss)
2826 {
2827 num3 = num3 * 150 / 100;
2828 }
2829 if (setting.isEvolved)
2830 {
2831 num3 = num3 * 2 + 20;
2832 }
2833 if (num3 != cardRow.LV)
2834 {
2835 cardBlueprint.lv = (int)Mathf.Min(num3, 100000000f);
2836 }
2837 CardBlueprint.Set(cardBlueprint);
2838 Chara chara = CharaGen.Create(cardRow.id, num2);
2839 if (!flag)
2840 {
2841 chara.isScaled = false;
2842 }
2843 AddCard(chara, pos);
2844 if (setting.forcedHostility.HasValue)
2845 {
2846 Hostility c_originalHostility = (chara.hostility = setting.forcedHostility.Value);
2847 chara.c_originalHostility = c_originalHostility;
2848 }
2849 else
2850 {
2851 switch (chara.id)
2852 {
2853 case "santa":
2854 case "silverwolf":
2855 case "twintail":
2856 case "test17":
2857 if (EClass.pc.HasElement(1270))
2858 {
2859 chara.SetHostility(Hostility.Friend);
2860 }
2861 else if (EClass.pc.HasElement(1271))
2862 {
2863 chara.SetHostility(Hostility.Enemy);
2864 }
2865 break;
2866 }
2867 }
2868 if (setting.isBoss)
2869 {
2870 chara.c_bossType = BossType.Boss;
2871 }
2872 if (setting.isEvolved)
2873 {
2874 chara.c_bossType = BossType.Evolved;
2875 }
2876 return chara;
2877 }
BossType
Definition: BossType.cs:2
SpawnHostility
ZoneScaleType
Definition: ZoneScaleType.cs:2
string GetRandomCharaId()
static void Set(CardBlueprint _bp=null)
int quality
Definition: CardRow.cs:19
string id
Definition: CardRow.cs:7
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:5933
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:575
Flags flags
Definition: Player.cs:1094
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:411
virtual float ChanceSpawnNeutral
Definition: Zone.cs:345

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

◆ SpawnMob() [2/2]

◆ TextLevel()

string Zone.TextLevel ( int  _lv)
inline

Definition at line 557 of file Zone.cs.

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

References ToString().

◆ ToString()

override string Zone.ToString ( )
inline

Definition at line 552 of file Zone.cs.

553 {
554 return Name + "(" + base.uid + ")(" + _regionPos?.ToString() + ") instance?" + IsInstance + "/" + EClass.world.date.GetRemainingHours(base.dateExpire) + "h";
555 }
int GetRemainingHours(int rawDeadLine)
Definition: Date.cs:341
override string ToString()
Definition: Point.cs:524
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 2217 of file Zone.cs.

2218 {
2219 int num = 0;
2220 if (p.cell.detail != null)
2221 {
2222 foreach (Thing thing in p.cell.detail.things)
2223 {
2224 if (thing.placeState == PlaceState.roaming)
2225 {
2226 if (target.TryStackTo(thing))
2227 {
2228 return true;
2229 }
2230 num++;
2231 }
2232 }
2233 }
2234 if (num == 0 || !destroyIfFail)
2235 {
2236 EClass._zone.AddCard(target, p);
2237 return true;
2238 }
2239 target.Destroy();
2240 return false;
2241 }
bool TryStackTo(Thing to)
Definition: Card.cs:3397
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 2120 of file Zone.cs.

2121 {
2122 Thing dest = null;
2123 int priority = -1;
2124 ContainerFlag flag = t.category.GetRoot().id.ToEnum<ContainerFlag>();
2125 if (flag == ContainerFlag.none)
2126 {
2127 flag = ContainerFlag.other;
2128 }
2129 if (containers == null)
2130 {
2131 containers = EClass._map.props.installed.containers;
2132 }
2133 if (SearchDest() != null)
2134 {
2135 return true;
2136 }
2137 if (dest == null)
2138 {
2139 return false;
2140 }
2141 if (add)
2142 {
2143 if (msg)
2144 {
2145 chara.Say("putSharedItem", chara, t, dest.GetName(NameStyle.Full));
2146 }
2147 dest.AddThing(t);
2148 }
2149 return true;
2150 Thing SearchDest()
2151 {
2152 foreach (Thing container in containers)
2153 {
2154 Thing thing = container;
2155 if (thing.trait is TraitShippingChest)
2156 {
2158 }
2159 if ((!sharedOnly || thing.IsSharedContainer) && thing.c_lockLv <= 0 && (thing.things.Count < thing.things.MaxCapacity || thing.things.CanStack(t) != t))
2160 {
2161 Window.SaveData windowSaveData = thing.GetWindowSaveData();
2162 if (windowSaveData != null)
2163 {
2164 if (windowSaveData.priority <= priority || (windowSaveData.noRotten && t.IsDecayed) || (windowSaveData.onlyRottable && t.trait.Decay == 0))
2165 {
2166 continue;
2167 }
2169 if (windowSaveData.userFilter)
2170 {
2171 filterResult = windowSaveData.IsFilterPass(t.GetName(NameStyle.Full, 1));
2172 if (filterResult == Window.SaveData.FilterResult.Block)
2173 {
2174 continue;
2175 }
2176 }
2177 if (filterResult != Window.SaveData.FilterResult.PassWithoutFurtherTest)
2178 {
2179 if (windowSaveData.advDistribution)
2180 {
2181 bool flag2 = false;
2182 foreach (int cat in windowSaveData.cats)
2183 {
2184 if (t.category.uid == cat)
2185 {
2186 flag2 = true;
2187 break;
2188 }
2189 }
2190 if (!flag2)
2191 {
2192 continue;
2193 }
2194 }
2195 else if (windowSaveData.flag.HasFlag(flag))
2196 {
2197 continue;
2198 }
2199 }
2200 priority = windowSaveData.priority;
2201 }
2202 else
2203 {
2204 if (priority != -1)
2205 {
2206 continue;
2207 }
2208 priority = 0;
2209 }
2210 dest = thing;
2211 }
2212 }
2213 return null;
2214 }
2215 }
ContainerFlag
Definition: ContainerFlag.cs:5
NameStyle
Definition: NameStyle.cs:2
Thing container_shipping
Definition: CardManager.cs:52
bool IsDecayed
Definition: Card.cs:2287
int c_lockLv
Definition: Card.cs:964
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:3104
Window.SaveData GetWindowSaveData()
Definition: Card.cs:2516
SourceCategory.Row category
Definition: Card.cs:2049
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6851
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:538
bool IsSharedContainer
Definition: Thing.cs:116
virtual int Decay
Definition: Trait.cs:122
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 2043 of file Zone.cs.

2043 : Trait
2044 {
2045 Thing randomThing = EClass._map.props.installed.traits.GetRandomThing<T>();
2046 if (randomThing == null)
2047 {
2049 return false;
2050 }
2051 if (useContainer && (!t.IsContainer || t.things.Count == 0))
2052 {
2053 List<Thing> list = new List<Thing>();
2054 foreach (Point item in randomThing.trait.ListPoints(null, onlyPassable: false))
2055 {
2056 foreach (Card item2 in item.ListCards())
2057 {
2058 if (item2.IsContainer && !(item2.trait is TraitDeliveryChest))
2059 {
2060 list.Add(item2.Thing);
2061 }
2062 }
2063 }
2064 if (TryAddThingInSharedContainer(t, list, add: true, msg: false, null, sharedOnly: false))
2065 {
2066 return true;
2067 }
2068 }
2069 AddCard(t, randomThing.trait.GetRandomPoint());
2070 return true;
2071 }
virtual Thing Thing
Definition: Card.cs:2058
bool IsContainer
Definition: Card.cs:2089
virtual List< Point > ListPoints(Point center=null, bool onlyPassable=true)
Definition: Trait.cs:758
Point GetRandomPoint(Func< Point, bool > func=null, Chara accessChara=null)
Definition: Trait.cs:740
bool TryAddThingInSharedContainer(Thing t, List< Thing > containers=null, bool add=true, bool msg=false, Chara chara=null, bool sharedOnly=true)
Definition: Zone.cs:2120

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

2626 {
2627 if (!(BigDaddyChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f) <= EClass.rndf(1f)))
2628 {
2629 int num = DangerLv * 125 / 100;
2630 if (num >= 30)
2631 {
2633 {
2634 lv = num
2635 });
2636 }
2637 Chara chara = CharaGen.Create("big_daddy");
2638 if (EClass.pc.HasElement(1270))
2639 {
2640 chara.SetHostility(Hostility.Friend);
2641 }
2642 else if (EClass.pc.HasElement(1271))
2643 {
2644 chara.SetHostility(Hostility.Enemy);
2645 }
2646 EClass._zone.AddCard(chara, GetSpawnPos(SpawnPosition.Random, 10000));
2647 Msg.Say("sign_bigdaddy");
2648 }
2649 }
static float rndf(float a)
Definition: EClass.cs:102
virtual float BigDaddyChance
Definition: Zone.cs:321

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

2606 {
2607 float num = EvolvedChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f);
2608 if (!force && num <= EClass.rndf(1f))
2609 {
2610 return null;
2611 }
2612 Chara chara = SpawnMob(p, SpawnSetting.Evolved());
2613 for (int i = 0; i < 2 + EClass.rnd(2); i++)
2614 {
2615 chara.ability.AddRandom();
2616 }
2617 chara.AddThing(chara.MakeGene(DNA.Type.Default));
2618 if (EClass.rnd(2) == 0)
2619 {
2620 chara.AddThing(chara.MakeGene(DNA.Type.Superior));
2621 }
2622 return chara;
2623 }
void AddRandom()
Thing MakeGene(DNA.Type? type=null)
Definition: Chara.cs:8155
CharaAbility ability
Definition: Chara.cs:424
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:323

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

2579 {
2580 if (OreChance <= 0f)
2581 {
2582 return;
2583 }
2584 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)
2585 {
2586 byte b = 18;
2587 string group = "ore";
2588 if (EClass.rnd(5) == 0)
2589 {
2590 b++;
2591 group = "gem";
2592 }
2593 SourceMaterial.Row randomMaterial = MATERIAL.GetRandomMaterial(DangerLv, group);
2594 foreach (Point point in r.points)
2595 {
2596 if (point.sourceBlock.ContainsTag("ore"))
2597 {
2598 map.SetObj(point.x, point.z, randomMaterial.id, b, 1, 0);
2599 }
2600 }
2601 return false;
2602 });
2603 }
static SourceMaterial.Row GetRandomMaterial(int lv, string group=null, bool tryLevelMatTier=false)
Definition: MATERIAL.cs:56
int Width
Definition: MapBounds.cs:26
int Height
Definition: MapBounds.cs:28
virtual float OreChance
Definition: Zone.cs:319

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

2652 {
2653 float num = ShrineChance * (EClass.pc.HasElement(1270) ? 1.1f : 1f);
2654 for (int i = 0; i < 3; i++)
2655 {
2656 Rand.SetSeed(base.uid + i);
2657 if (num <= EClass.rndf(1f))
2658 {
2659 continue;
2660 }
2661 Point randomSpace = EClass._map.GetRandomSpace(3, 3);
2662 if (randomSpace == null)
2663 {
2664 continue;
2665 }
2666 randomSpace.x++;
2667 randomSpace.z++;
2668 if (randomSpace.HasThing || randomSpace.HasChara)
2669 {
2670 continue;
2671 }
2672 randomSpace.SetObj();
2675 if (EClass.rnd(EClass.debug.test ? 2 : 15) == 0)
2676 {
2677 EClass._zone.AddCard(ThingGen.Create("pedestal_power"), randomSpace).Install();
2678 EClass._zone.AddCard(ThingGen.Create(EClass.gamedata.godStatues.RandomItemWeighted((GodStatueData a) => a.chance).idThing, -1, DangerLv), randomSpace).Install();
2679 }
2680 else
2681 {
2682 EClass._zone.AddCard(ThingGen.Create("statue_power", -1, DangerLv), randomSpace).Install().SetRandomDir();
2683 }
2684 }
2685 Rand.SetSeed();
2686 }
void SetRandomDir()
Definition: Card.cs:6240
bool test
Definition: CoreDebug.cs:170
static GameData gamedata
Definition: EClass.cs:37
List< GodStatueData > godStatues
Definition: GameData.cs:9
Point GetRandomSpace(int width, int height, int tries=100)
Definition: MapBounds.cs:246
int seedShrine
Definition: Player.cs:941
void SetObj(int id=0, int value=1, int dir=0)
Definition: Point.cs:928
virtual float ShrineChance
Definition: Zone.cs:325

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

2259 : TraitSpot
2260 {
2261 List<T> list = new List<T>();
2262 foreach (Thing thing2 in EClass._map.things)
2263 {
2264 if (thing2.IsInstalled && thing2.trait is T)
2265 {
2266 list.Add(thing2.trait as T);
2267 }
2268 }
2269 foreach (T item in list)
2270 {
2271 foreach (Point item2 in item.ListPoints(null, onlyPassable: false))
2272 {
2273 foreach (Thing thing3 in item2.Things)
2274 {
2275 if (!thing3.IsInstalled || thing3.isSale)
2276 {
2277 continue;
2278 }
2279 if (thing3.things.Count == 0)
2280 {
2281 if (IsValid(thing3, insideContainer: false))
2282 {
2283 return thing3;
2284 }
2285 continue;
2286 }
2287 Thing thing = thing3.things.Find((Thing _t) => IsValid(_t, insideContainer: true));
2288 if (thing != null)
2289 {
2290 return thing;
2291 }
2292 }
2293 }
2294 }
2295 return null;
2296 bool IsValid(Thing t, bool insideContainer)
2297 {
2298 if (t.category.id != idCat || !TraitSalesTag.CanTagSale(t, insideContainer))
2299 {
2300 return false;
2301 }
2302 return true;
2303 }
2304 }
bool isSale
Definition: Card.cs:866
List< Thing > Things
Definition: Point.cs:338
Thing Find(int uid)
static bool CanTagSale(Card t, bool insideContainer=false)
Definition: TraitSalesTag.cs:9

References EClass._map, TraitSalesTag.CanTagSale(), Card.category, ThingContainer.Find(), Card.IsInstalled, Card.isSale, item, Card.things, Map.things, Point.Things, and Card.trait.

◆ TryGetThingFromSharedContainer()

Thing Zone.TryGetThingFromSharedContainer ( Func< Thing, bool >  func)
inline

Definition at line 2243 of file Zone.cs.

2244 {
2245 foreach (Thing container in EClass._map.props.installed.containers)
2246 {
2247 if (container.IsSharedContainer)
2248 {
2249 Thing thing = container.things.Find(func);
2250 if (thing != null)
2251 {
2252 return thing;
2253 }
2254 }
2255 }
2256 return null;
2257 }

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

2073 : TraitSpot
2074 {
2075 List<T> list = new List<T>();
2076 List<Thing> list2 = new List<Thing>();
2077 foreach (Thing thing in EClass._map.things)
2078 {
2079 if (thing.IsInstalled && thing.trait is T)
2080 {
2081 list.Add(thing.trait as T);
2082 }
2083 }
2084 foreach (T item in list)
2085 {
2086 foreach (Point item2 in item.ListPoints(null, onlyPassable: false))
2087 {
2088 foreach (Thing thing2 in item2.Things)
2089 {
2090 if (!thing2.IsInstalled)
2091 {
2092 continue;
2093 }
2094 if (thing2.things.Count == 0)
2095 {
2096 if (IsValid(thing2))
2097 {
2098 list2.Add(thing2);
2099 }
2100 continue;
2101 }
2102 foreach (Thing item3 in thing2.things.List((Thing _t) => IsValid(_t)))
2103 {
2104 list2.Add(item3);
2105 }
2106 }
2107 }
2108 }
2109 return list2;
2110 bool IsValid(Thing t)
2111 {
2112 if (func != null && !func(t))
2113 {
2114 return false;
2115 }
2116 return true;
2117 }
2118 }
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 2479 of file Zone.cs.

2480 {
2481 bool flag = EClass.pc.HasCondition<ConDrawBacker>();
2482 if (!EClass.debug.enable && EClass.rnd(flag ? 3 : 20) != 0)
2483 {
2484 return;
2485 }
2486 Point randomSurface = EClass._map.bounds.GetRandomSurface();
2487 if (!randomSurface.IsValid)
2488 {
2489 return;
2490 }
2491 Chara c = CharaGen.Create("follower");
2492 EClass._zone.AddCard(c, randomSurface);
2493 (EClass._zone.AddThing("gallows", randomSurface).Install().trait as TraitShackle).Restrain(c);
2494 c.c_rescueState = RescueState.WaitingForRescue;
2495 if (EClass.rnd(flag ? 1 : 2) == 0 || EClass.debug.enable)
2496 {
2498 if (row != null)
2499 {
2500 c.ApplyBacker(row.id);
2501 }
2502 }
2503 Religion faith = EClass.game.religions.dictAll.Values.Where((Religion a) => a != c.faith).RandomItem();
2504 for (int i = 0; i < 3 + EClass.rnd(4); i++)
2505 {
2506 Chara chara = CharaGen.Create("fanatic");
2507 chara.SetFaith(faith);
2508 Point point = randomSurface.GetRandomPoint(4) ?? randomSurface.GetNearestPoint();
2509 EClass._zone.AddCard(chara, point);
2510 }
2511 }
RescueState
Definition: RescueState.cs:2
static int indexFollower
bool HasCondition(string alias)
Definition: Chara.cs:9411
Religion faith
Definition: Chara.cs:439
void SetFaith(string id)
Definition: Chara.cs:1705
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 1698 of file Zone.cs.

1699 {
1700 map = null;
1701 if (bp != null)
1702 {
1703 bp.map = null;
1704 }
1705 if (branch != null)
1706 {
1708 }
1709 Debug.Log("Unloaded Map:" + this);
1710 }
void OnUnloadMap()

References Debug, and FactionBranch.OnUnloadMap().

Referenced by Activate().

◆ UpdateQuests()

void Zone.UpdateQuests ( bool  force = false)
inline

Definition at line 3633 of file Zone.cs.

3634 {
3635 if (!IsPCFaction && (!(this is Zone_Town) || base.lv != 0))
3636 {
3637 return;
3638 }
3639 Debug.Log("Updating Quest:" + force);
3640 List<SourceQuest.Row> list = EClass.sources.quests.rows.Where((SourceQuest.Row a) => a.group == "random").ToList();
3641 int num = 0;
3642 foreach (Chara item in map.charas.Concat(map.deadCharas))
3643 {
3644 if (item.quest != null && !EClass.game.quests.list.Contains(item.quest))
3645 {
3646 if (item.quest.IsExpired || completedQuests.Contains(item.quest.uid) || force)
3647 {
3648 item.quest = null;
3649 }
3650 else
3651 {
3652 num++;
3653 }
3654 }
3655 }
3656 if (EClass._zone.dateQuest > EClass.world.date.GetRaw() && !force)
3657 {
3658 return;
3659 }
3660 EClass._zone.dateQuest = EClass.world.date.GetRaw() + 1440;
3661 int maxQuest = 3;
3662 Rand.UseSeed(base.uid + EClass.player.stats.days / 7 % 100, delegate
3663 {
3664 maxQuest = 4 + EClass.rnd(4);
3665 });
3666 completedQuests.Clear();
3667 List<Zone> list2 = Quest.ListDeliver();
3668 List<Tuple<string, int>> listTag = new List<Tuple<string, int>>();
3669 string[] array = EClass._zone.source.questTag;
3671 {
3672 array = new string[9] { "supply/8", "deliver/7", "food/8", "escort/4", "deliver/4", "monster/0", "war/0", "farm/0", "music/0" };
3673 }
3674 string[] array2 = array;
3675 for (int i = 0; i < array2.Length; i++)
3676 {
3677 string[] array3 = array2[i].Split('/');
3678 listTag.Add(new Tuple<string, int>(array3[0], array3[1].ToInt()));
3679 }
3680 for (int j = 0; j < map.charas.Count * 2; j++)
3681 {
3682 if (num > maxQuest)
3683 {
3684 break;
3685 }
3686 if (num > 15)
3687 {
3688 break;
3689 }
3690 Chara chara = map.charas.RandomItem();
3691 if (!chara.trait.CanGiveRandomQuest || chara.isSubsetCard || chara.homeZone != EClass._zone || chara.IsGuest() || chara.memberType == FactionMemberType.Livestock || (chara.quest != null && !force))
3692 {
3693 continue;
3694 }
3695 SourceQuest.Row row = list.RandomItemWeighted(delegate(SourceQuest.Row a)
3696 {
3697 int num2 = 1;
3698 foreach (Tuple<string, int> item2 in listTag)
3699 {
3700 if (a.tags.Contains(item2.Item1))
3701 {
3702 num2 = item2.Item2;
3703 break;
3704 }
3705 }
3706 if (!EClass._zone.IsPCFaction && a.tags.Contains("bulk"))
3707 {
3708 num2 = 0;
3709 }
3710 return a.chance * num2;
3711 });
3712 if ((!row.tags.Contains("needDestZone") || list2.Count >= 2) && (row.minFame <= 0 || row.minFame < EClass.player.fame || EClass.debug.enable))
3713 {
3714 Quest.Create(row.id, null, chara);
3715 num++;
3716 }
3717 }
3718 }
QuestManager quests
Definition: Game.cs:182
int days
Definition: Player.cs:75
Stats stats
Definition: Player.cs:1016
int fame
Definition: Player.cs:881
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 3265 of file Zone.cs.

3266 {
3267 }

Member Data Documentation

◆ _biome

BiomeProfile Zone._biome

Definition at line 79 of file Zone.cs.

◆ bounds

◆ bp

ZoneBlueprint Zone.bp

Definition at line 67 of file Zone.cs.

Referenced by Activate().

◆ branch

◆ completedQuests

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

Definition at line 37 of file Zone.cs.

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

◆ dictCitizen

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

Definition at line 52 of file Zone.cs.

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

◆ dirtyElectricity

bool Zone.dirtyElectricity

Definition at line 71 of file Zone.cs.

Referenced by Scene.OnUpdate().

◆ elements

◆ events

◆ fieldElements

ElementContainerField Zone.fieldElements = new ElementContainerField()

Definition at line 46 of file Zone.cs.

Referenced by WidgetDate._Refresh().

◆ fileVariation

int Zone.fileVariation

Definition at line 69 of file Zone.cs.

◆ forceRegenerate

bool Zone.forceRegenerate
static

Definition at line 25 of file Zone.cs.

Referenced by Activate().

◆ forceSubset

string Zone.forceSubset
static

Definition at line 27 of file Zone.cs.

Referenced by Activate().

◆ fortuneRoll

FortuneRollData Zone.fortuneRoll
private

Definition at line 61 of file Zone.cs.

◆ ignoreSpawnAnime

bool Zone.ignoreSpawnAnime
static

Definition at line 81 of file Zone.cs.

◆ instance

◆ isSimulating

bool Zone.isSimulating

Definition at line 75 of file Zone.cs.

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

◆ isStarted

◆ landFeats

List<int> Zone.landFeats

Definition at line 58 of file Zone.cs.

◆ map

◆ okaerinko

int Zone.okaerinko = 0
static

Definition at line 31 of file Zone.cs.

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

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

◆ Suckers

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

Definition at line 83 of file Zone.cs.

Referenced by TraitSeed.TrySprout().

◆ tempDist

int Zone.tempDist

Definition at line 77 of file Zone.cs.

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

Property Documentation

◆ AddPrefix

virtual bool Zone.AddPrefix
get

Definition at line 283 of file Zone.cs.

Referenced by OnAfterCreate().

◆ AllowCriminal

virtual bool Zone.AllowCriminal
get

Definition at line 247 of file Zone.cs.

◆ AllowInvest

virtual bool Zone.AllowInvest
get

Definition at line 249 of file Zone.cs.

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

Referenced by DramaCustomSequence.Build().

◆ AllowNewZone

virtual bool Zone.AllowNewZone
get

Definition at line 261 of file Zone.cs.

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

◆ AlwaysLowblock

virtual bool Zone.AlwaysLowblock
get

Definition at line 395 of file Zone.cs.

Referenced by BaseTileMap.Draw().

◆ BaseElectricity

virtual int Zone.BaseElectricity
get

Definition at line 493 of file Zone.cs.

◆ BigDaddyChance

virtual float Zone.BigDaddyChance
get

Definition at line 321 of file Zone.cs.

◆ biome

◆ BlockBorderExit

virtual bool Zone.BlockBorderExit
get

Definition at line 169 of file Zone.cs.

Referenced by Player.CanExitBorder().

◆ Boss

Chara Zone.Boss
getset

Definition at line 85 of file Zone.cs.

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

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

◆ CanBeDeliverDestination

virtual bool Zone.CanBeDeliverDestination
get

Definition at line 225 of file Zone.cs.

Referenced by Quest.ListDeliver().

◆ CanDigUnderground

virtual bool Zone.CanDigUnderground
get

Definition at line 273 of file Zone.cs.

Referenced by TaskMine.GetHitResult().

◆ CanEnterBuildMode

bool Zone.CanEnterBuildMode
get

Definition at line 445 of file Zone.cs.

446 {
447 get
448 {
450 {
451 return base.mainFaction == EClass.pc.faction;
452 }
453 return true;
454 }
455 }
bool godBuild
Definition: CoreDebug.cs:304
bool ignoreBuildRule
Definition: CoreDebug.cs:185

◆ CanEnterBuildModeAnywhere

bool Zone.CanEnterBuildModeAnywhere
get

Definition at line 457 of file Zone.cs.

458 {
459 get
460 {
462 {
463 if (base.mainFaction == EClass.pc.faction)
464 {
465 return EClass.Branch.elements.Has(4003);
466 }
467 return false;
468 }
469 return true;
470 }
471 }
ElementContainerZone elements

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

◆ CanInspect

bool Zone.CanInspect
get

Implements IInspect.

Definition at line 497 of file Zone.cs.

498 {
499 get
500 {
501 if (!IsInstance)
502 {
503 return !HiddenInRegionMap;
504 }
505 return false;
506 }
507 }
virtual bool HiddenInRegionMap
Definition: Zone.cs:413

◆ CanUnlockExit

virtual bool Zone.CanUnlockExit
get

Definition at line 277 of file Zone.cs.

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

◆ ChanceSpawnNeutral

virtual float Zone.ChanceSpawnNeutral
get

Definition at line 345 of file Zone.cs.

◆ ContentLv

override int Zone.ContentLv
get

Definition at line 97 of file Zone.cs.

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

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

◆ CountDeepestLevel

virtual bool Zone.CountDeepestLevel
get

Definition at line 227 of file Zone.cs.

◆ DangerLv

◆ DefaultActionMode

virtual ActionMode Zone.DefaultActionMode
get

Definition at line 167 of file Zone.cs.

◆ DisableRooms

virtual bool Zone.DisableRooms
get

Definition at line 121 of file Zone.cs.

Referenced by Map.TryAddRoom().

◆ EvolvedChance

virtual float Zone.EvolvedChance
get

Definition at line 323 of file Zone.cs.

◆ ExpireDays

virtual int Zone.ExpireDays
get

Definition at line 171 of file Zone.cs.

Referenced by Activate().

◆ FeatureType

virtual ZoneFeatureType Zone.FeatureType
get

Definition at line 175 of file Zone.cs.

◆ FlockType

virtual FlockController.SpawnType Zone.FlockType
get

Definition at line 415 of file Zone.cs.

Referenced by Scene.Init().

◆ Generator

MapGenerator Zone.Generator
get

Definition at line 137 of file Zone.cs.

Referenced by MapGenDungen.OnGenerateTerrain().

◆ GrowPlant

virtual bool Zone.GrowPlant
get

Definition at line 347 of file Zone.cs.

◆ GrowWeed

virtual bool Zone.GrowWeed
get

Definition at line 349 of file Zone.cs.

◆ HasLaw

virtual bool Zone.HasLaw
get

◆ HiddenInRegionMap

virtual bool Zone.HiddenInRegionMap
get

Definition at line 413 of file Zone.cs.

Referenced by Chara._Move().

◆ HourSinceLastActive

int Zone.HourSinceLastActive
get

Definition at line 123 of file Zone.cs.

◆ IDAmbience

virtual string Zone.IDAmbience
get

Definition at line 177 of file Zone.cs.

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

◆ IDBaseLandFeat

virtual string Zone.IDBaseLandFeat
get

Definition at line 147 of file Zone.cs.

◆ IdBiome

virtual string Zone.IdBiome
get

Definition at line 131 of file Zone.cs.

◆ idExport

virtual string Zone.idExport
get

Definition at line 149 of file Zone.cs.

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

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

◆ IDGenerator

virtual string Zone.IDGenerator
get

Definition at line 133 of file Zone.cs.

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

◆ IDHat

virtual string Zone.IDHat
get

Definition at line 145 of file Zone.cs.

◆ IDPlayList

virtual string Zone.IDPlayList
get

Definition at line 141 of file Zone.cs.

◆ IDPlaylistOverwrite

virtual string Zone.IDPlaylistOverwrite
get

Definition at line 143 of file Zone.cs.

◆ IdProfile

virtual string Zone.IdProfile
get

Definition at line 139 of file Zone.cs.

◆ IDSceneTemplate

virtual string Zone.IDSceneTemplate
get

Definition at line 193 of file Zone.cs.

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

Referenced by BaseGameScreen.RefreshGrading().

◆ IDSubset

virtual string Zone.IDSubset
get

Definition at line 211 of file Zone.cs.

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

Referenced by Activate().

◆ InspectName

string Zone.InspectName
get

Implements IInspect.

Definition at line 509 of file Zone.cs.

◆ InspectPoint

Point Zone.InspectPoint
get

Implements IInspect.

Definition at line 511 of file Zone.cs.

◆ InspectPosition

Vector3 Zone.InspectPosition
get

Implements IInspect.

Definition at line 513 of file Zone.cs.

◆ IsActiveZone

◆ IsExplorable

virtual bool Zone.IsExplorable
get

Definition at line 351 of file Zone.cs.

◆ IsFestival

virtual bool Zone.IsFestival
get

◆ IsInstance

◆ IsLoaded

bool Zone.IsLoaded
get

Definition at line 491 of file Zone.cs.

Referenced by Activate().

◆ IsNefia

virtual bool Zone.IsNefia
get

Definition at line 285 of file Zone.cs.

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

◆ IsPCFaction

bool Zone.IsPCFaction
get

Definition at line 473 of file Zone.cs.

Referenced by Chara._Move(), WidgetDate._Refresh(), Map._ValidateInstalled(), Activate(), LayerSleep.Advance(), WidgetStatsBar.Build(), DramaCustomSequence.Build(), Chara.CanDestroyPath(), ActRestrain.CanPerform(), QuestIntoDarkness.CanUpdateOnTalk(), QuestVernis.CanUpdateOnTalk(), TraitGeneratorWheel.CanUse(), TraitLoytelMart.CanUse(), TraitMannequin.CanUse(), TraitShackle.CanUse(), GameLang.ConvertDrama(), Faction.CountWealth(), Card.Create(), ActEffect.DamageEle(), Chara.DoHostileAction(), CoreDebug.Fix_LostCore(), RankedZone.GetFactionName(), TaskBuild.GetHitResult(), TaskDig.GetHitResult(), Card.GetPrice(), Chara.GetRevived(), Chara.HasAccess(), QuestManager.HasFarAwayEscort(), TraitFoodEggFertilized.Incubate(), Quest.IsVisibleOnQuestBoard(), Quest.ListDeliver(), QuestDeliver.ListDestThing(), Props.ListThingStack(), Chara.MoveZone(), Region.OnActivate(), TraitHitchingPost.OnActivateTrap(), QuestRandom.OnDropReward(), Player.Flags.OnEnterZone(), LayerQuestBoard.OnInit(), ElementContainerZone.OnLevelUp(), TraitBlueprint.OnRead(), TraitBookSkill.OnRead(), TraitDeedRelocate.OnRead(), AM_Adv.OnRenderTile(), GoalSleep.OnSimulatePosition(), TraitFloorSwitch.OnStepped(), TraitBookResident.OnUse(), 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 475 of file Zone.cs.

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

Referenced by HotItemHeld.CanRotate(), TaskBuild.CanRotateBlock(), ConTransmuteBat.CheckSeen(), Thing.GetExtraName(), TaskBuild.GetHitResult(), TraitSeed.MakeSeed(), Chara.TickConditions(), BiomeProfile.ClusterObj.TryCreate(), and TraitSpotBiome.Update().

◆ IsReturnLocation

virtual bool Zone.IsReturnLocation
get

Definition at line 353 of file Zone.cs.

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

◆ IsSkyLevel

◆ IsStartZone

bool Zone.IsStartZone
get

Definition at line 487 of file Zone.cs.

◆ IsTown

◆ IsUnderwater

◆ IsUserZone

◆ KeepAllyDistance

virtual bool Zone.KeepAllyDistance
get

Definition at line 301 of file Zone.cs.

302 {
303 get
304 {
305 if (!HasLaw)
306 {
307 return IsPCFaction;
308 }
309 return true;
310 }
311 }

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

◆ LockExit

virtual bool Zone.LockExit
get

Definition at line 275 of file Zone.cs.

Referenced by MapGenDungen.OnGenerateTerrain().

◆ MakeEnemiesNeutral

virtual bool Zone.MakeEnemiesNeutral
get

Definition at line 233 of file Zone.cs.

234 {
235 get
236 {
237 if (!IsTown)
238 {
239 return HasLaw;
240 }
241 return true;
242 }
243 }

◆ MakeTownProperties

virtual bool Zone.MakeTownProperties
get

Definition at line 245 of file Zone.cs.

◆ MaxLv

virtual int Zone.MaxLv
get

Definition at line 279 of file Zone.cs.

◆ MaxRespawn

int Zone.MaxRespawn
get

Definition at line 315 of file Zone.cs.

◆ MaxSoil

virtual int Zone.MaxSoil
get

Definition at line 515 of file Zone.cs.

516 {
517 get
518 {
519 if (branch == null)
520 {
521 return 99999;
522 }
523 return branch.MaxSoil;
524 }
525 }

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

◆ MaxSpawn

virtual int Zone.MaxSpawn
get

Definition at line 313 of file Zone.cs.

◆ MinLv

virtual int Zone.MinLv
get

Definition at line 281 of file Zone.cs.

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

◆ MinsSinceLastActive

int Zone.MinsSinceLastActive
get

Definition at line 125 of file Zone.cs.

◆ NameSuffix

override string Zone.NameSuffix
get

Definition at line 417 of file Zone.cs.

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

◆ NameWithLevel

string Zone.NameWithLevel
get

◆ OreChance

virtual float Zone.OreChance
get

Definition at line 319 of file Zone.cs.

◆ ParentZone

◆ pathExport

virtual string Zone.pathExport
get

Definition at line 127 of file Zone.cs.

Referenced by Activate().

◆ pathTemp

string Zone.pathTemp
get

Definition at line 161 of file Zone.cs.

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

◆ PetFollow

virtual bool Zone.PetFollow
get

Definition at line 287 of file Zone.cs.

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

◆ PrespawnRate

virtual float Zone.PrespawnRate
get

Definition at line 327 of file Zone.cs.

◆ RegenerateOnEnter

virtual bool Zone.RegenerateOnEnter
get

Definition at line 265 of file Zone.cs.

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

◆ Region

◆ RegionEnterState

virtual ZoneTransition.EnterState Zone.RegionEnterState
get

Definition at line 173 of file Zone.cs.

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

◆ RespawnPerHour

virtual int Zone.RespawnPerHour
get

Definition at line 343 of file Zone.cs.

◆ RespawnRate

virtual float Zone.RespawnRate
get

Definition at line 329 of file Zone.cs.

◆ RestrictBuild

virtual bool Zone.RestrictBuild
get

Definition at line 289 of file Zone.cs.

290 {
291 get
292 {
293 if (this is Zone_Civilized)
294 {
295 return !IsPCFaction;
296 }
297 return false;
298 }
299 }

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

◆ RevealRoom

virtual bool Zone.RevealRoom
get

Definition at line 393 of file Zone.cs.

◆ RuinChance

virtual float Zone.RuinChance
get

Definition at line 317 of file Zone.cs.

Referenced by GenBounds.TryAddMapPiece().

◆ ScaleType

virtual ZoneScaleType Zone.ScaleType
get

Definition at line 411 of file Zone.cs.

◆ SetAlarmOnBreakLaw

virtual bool Zone.SetAlarmOnBreakLaw
get

Definition at line 231 of file Zone.cs.

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

◆ ShouldAutoRevive

virtual bool Zone.ShouldAutoRevive
get

Definition at line 379 of file Zone.cs.

380 {
381 get
382 {
383 if (!ShouldRegenerate)
384 {
385 return IsPCFaction;
386 }
387 return true;
388 }
389 }

◆ ShouldMakeExit

virtual bool Zone.ShouldMakeExit
get

Definition at line 365 of file Zone.cs.

366 {
367 get
368 {
369 if (base.lv > MinLv)
370 {
371 return base.lv < MaxLv;
372 }
373 return false;
374 }
375 }
virtual int MaxLv
Definition: Zone.cs:279
virtual int MinLv
Definition: Zone.cs:281

Referenced by MapGenDungen.OnGenerateTerrain().

◆ ShouldRegenerate

virtual bool Zone.ShouldRegenerate
get

Definition at line 377 of file Zone.cs.

Referenced by Activate().

◆ ShowEnemyOnMinimap

bool Zone.ShowEnemyOnMinimap
get

Definition at line 331 of file Zone.cs.

332 {
333 get
334 {
335 if (instance != null)
336 {
338 }
339 return false;
340 }
341 }
virtual bool ShowEnemyOnMinimap
Definition: ZoneInstance.cs:30

Referenced by WidgetMinimap.RefreshMarkers().

◆ ShrineChance

virtual float Zone.ShrineChance
get

Definition at line 325 of file Zone.cs.

◆ StartLV

virtual int Zone.StartLV
get

Definition at line 409 of file Zone.cs.

Referenced by OnCreate().

◆ TextDangerLv

string Zone.TextDangerLv
get

Definition at line 431 of file Zone.cs.

Referenced by WidgetDate._Refresh().

◆ TextDeepestLv

string Zone.TextDeepestLv
get

Definition at line 433 of file Zone.cs.

434 {
435 get
436 {
437 if (GetDeepestLv() != 0)
438 {
439 return "zoneLevelMax".lang(TextLevel(GetDeepestLv()));
440 }
441 return "";
442 }
443 }
string TextLevel(int _lv)
Definition: Zone.cs:557

Referenced by AM_Adv._OnUpdateInput().

◆ TextWidgetDate

virtual string Zone.TextWidgetDate
get

Definition at line 135 of file Zone.cs.

Referenced by WidgetDate._Refresh().

◆ UseFog

virtual bool Zone.UseFog
get

Definition at line 391 of file Zone.cs.

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

◆ UseLight

virtual bool Zone.UseLight
get

Definition at line 397 of file Zone.cs.

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

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

◆ WillAutoSave

virtual bool Zone.WillAutoSave
get

Definition at line 263 of file Zone.cs.

Referenced by Chara.MoveZone().


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