Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
Map Class Reference
Inheritance diagram for Map:
MapBounds IPathfindGrid EClass

Public Member Functions

void CreateNew (int size, bool setReference=true)
 
void SetZone (Zone _zone)
 
void SetReference ()
 
void OnDeactivate ()
 
void Resize (int newSize)
 
void Shift (Vector2Int offset)
 
void Reload ()
 
void ReloadRoom ()
 
void Reset ()
 
void ResetEditorPos ()
 
void Save (string path, ZoneExportData export=null, PartialMap partial=null)
 
byte[] TryLoadFile (string path, string s, int size)
 
void Load (string path, bool import=false, PartialMap partial=null)
 
void ValidateVersion ()
 
void OnLoad ()
 
void OnImport (ZoneExportData data)
 
void ExportMetaData (string _path, string id, PartialMap partial=null)
 
void AddCardOnActivate (Card c)
 
void OnCardAddedToZone (Card t, int x, int z)
 
void OnCardRemovedFromZone (Card t)
 
void MoveCard (Point p, Card t)
 
void _AddCard (int x, int z, Card t, bool onAddToZone)
 
void _RemoveCard (Card t)
 
Cell GetCell (int index)
 
void SetSeen (int x, int z, bool seen=true, bool refresh=true)
 
void RevealAll (bool reveal=true)
 
void Reveal (Point center, int power=100)
 
void RefreshFOV (int x, int z, int radius=6, bool recalculate=false)
 
void RefreshFOVAll ()
 
void SetFloor (int x, int z, int idMat=0, int idFloor=0)
 
void SetFloor (int x, int z, int idMat, int idFloor, int dir)
 
void SetBridge (int x, int z, int height=0, int idMat=0, int idBridge=0, int dir=0)
 
void SetRoofBlock (int x, int z, int idMat, int idBlock, int dir, int height)
 
void SetBlock (int x, int z, int idMat=0, int idBlock=0)
 
void SetBlock (int x, int z, int idMat, int idBlock, int dir)
 
void OnSetBlockOrDoor (int x, int z)
 
void TryRemoveRoom (int x, int z)
 
void TryAddRoom (int x, int z)
 
void SetBlockDir (int x, int z, int dir)
 
void ModFire (int x, int z, int amount)
 
void TryShatter (Point pos, int ele, int power)
 
void Burn (int x, int z, bool instant=false)
 
void SetLiquid (int x, int z, CellEffect effect=null)
 
void SetLiquid (int x, int z, int id, int value=1)
 
void SetEffect (int x, int z, CellEffect effect=null)
 
void ModLiquid (int x, int z, int amount)
 
void ClearRainAndDecal ()
 
void SetObj (int x, int z, int id=0, int value=1, int dir=0)
 
void SetObj (int x, int z, int idMat, int idObj, int value, int dir, bool ignoreRandomMat=false)
 
void AddBackerTree (bool draw)
 
SourceBacker.Row GetBackerObj (Point p)
 
void ApplyBackerObj (Point p, int id=-1)
 
void DropBlockComponent (Point point, TileRow r, SourceMaterial.Row mat, bool recoverBlock, bool isPlatform=false, Chara c=null)
 
void MineBlock (Point point, bool recoverBlock=false, Chara c=null, bool mineObj=true)
 
void MineRamp (Point point, int ramp, bool recoverBlock=false)
 
void MineFloor (Point point, Chara c=null, bool recoverBlock=false, bool removePlatform=true)
 
void RefreshShadow (int x, int z)
 
void TrySmoothPick (Cell cell, Thing t, Chara c)
 
void TrySmoothPick (Point p, Thing t, Chara c)
 
void DestroyObj (Point point)
 
void MineObj (Point point, Task task=null, Chara c=null)
 
void MineObjSound (Point point)
 
PlantData TryGetPlant (Point p)
 
PlantData TryGetPlant (Cell c)
 
PlantData AddPlant (Point pos, Thing seed)
 
void RemovePlant (Point pos)
 
void ValidateInstalled (Point p)
 
void _ValidateInstalled (int x, int y)
 
void RemoveLonelyRamps (Cell cell)
 
void DestroyBlock (int x, int z)
 
void AddDecal (int x, int z, int id, int amount=1, bool refresh=true)
 
void SetDecal (int x, int z, int id=0, int amount=1, bool refresh=true)
 
void SetFoormark (Point pos, int id, int angle, int offset=0)
 
int AngleToIndex (int a)
 
void RefreshSingleTile (int x, int z)
 
void RefreshAllTiles ()
 
void RefreshNeighborTiles (int x, int z)
 
void QuickRefreshTile (int x, int z)
 
int GetRampDir (int x, int z, TileType blockType=null)
 
Cell GetDependedRamp (Cell cell)
 
Point GetRandomPoint (Point center, int radius, int tries=100, bool mustBeWalkable=true, bool requireLos=true)
 
new Point GetRandomEdge (int r=3)
 
Point GetNearbyResourcePoint (Point center)
 
List< PointListPointsInCircle (Point center, float radius, bool mustBeWalkable=true, bool los=true)
 
List< CharaListCharasInCircle (Point center, float radius, bool los=true)
 
List< PointListPointsInArc (Point center, Point to, int radius, float angle)
 
List< PointListPointsInLine (Point center, Point to, int radius)
 
void SetBounds (int size)
 
void SetBounds (MapBounds b)
 
new void ForeachCell (Action< Cell > action)
 
new void ForeachPoint (Action< Point > action)
 
new void ForeachXYZ (Action< int, int > action)
 
void ForeachSphere (int _x, int _z, float r, Action< Point > action)
 
void ForeachNeighbor (Point center, Action< Point > action)
 
void Quake ()
 
int CountChara (Faction faction)
 
int CountGuest ()
 
int CountHostile ()
 
int CountWildAnimal ()
 
int CountNonHostile ()
 
List< CharaListChara (Faction faction)
 
List< ThingListThing< T > ()
 
bool PutAway (Card c)
 
Chara FindChara (string id)
 
Chara FindChara (int uid)
 
Thing FindThing (Func< Thing, bool > func)
 
Thing FindThing (int uid)
 
FindThing< T > ()
 
Thing FindThing (Type type, Chara c=null)
 
Thing FindThing (Type type, BaseArea area1, BaseArea area2=null)
 
Thing FindThing (string workTag, BaseArea area1=null, BaseArea area2=null)
 
Thing FindThing (string workTag, Chara c)
 
BaseArea FindPublicArea ()
 
void RefreshSunMap ()
 
- Public Member Functions inherited from MapBounds
void SetBounds (int _x, int _z, int _maxX, int _maxZ)
 
bool Contains (int dx, int dz)
 
bool Contains (Point p)
 
Point GetCenterPos ()
 
Point GetRandomTopPos ()
 
Point GetRandomRightPos ()
 
Point GetRandomBottomPos ()
 
Point GetRandomLeftPos ()
 
Point GetTopPos (float rate=-1f)
 
Point GetRightPos (float rate=-1f)
 
Point GetBottomPos (float rate=-1f)
 
Point GetLeftPos (float rate=-1f)
 
Point GetRandomPoint ()
 
Point GetSpawnPos (int x, int z, int maxX, int maxZ)
 
bool CanExpand (int a)
 
void Expand (int a)
 
Point GetSurface (int x, int z, bool walkable=true)
 
Point GetRandomSurface (int x, int z, int radius, bool walkable=true, bool allowWater=false)
 
Point GetRandomSurface (bool centered=false, bool walkable=true, bool allowWater=false)
 
Point GetRandomSpawnPos ()
 
Point GetRandomEdge (int r=3)
 
Point GetRandomSpace (int width, int height, int tries=100)
 
void ForeachCell (Action< Cell > action)
 
void ForeachPoint (Action< Point > action)
 
void ForeachXYZ (Action< int, int > action)
 

Static Public Member Functions

static MapMetaData GetMetaData (string pathZip)
 
static void UpdateMetaData (string pathZip, PartialMap partial=null)
 
- Static Public Member Functions inherited from EClass
static int rnd (int a)
 
static int curve (int a, int start, int step, int rate=75)
 
static int rndHalf (int a)
 
static float rndf (float a)
 
static int rndSqrt (int a)
 
static void Wait (float a, Card c)
 
static void Wait (float a, Point p)
 
static int Bigger (int a, int b)
 
static int Smaller (int a, int b)
 

Public Attributes

int seed
 
int _bits
 
IO.Compression compression
 
Version version
 
RoomManager rooms = new RoomManager()
 
TaskManager tasks = new TaskManager()
 
MapConfig config = new MapConfig()
 
CustomData custom
 
List< CharaserializedCharas = new List<Chara>()
 
List< CharadeadCharas = new List<Chara>()
 
List< Thingthings = new List<Thing>()
 
MapBounds bounds = new MapBounds()
 
List< int > _plDay = new List<int>()
 
List< int > _plNight = new List<int>()
 
Dictionary< int, int > gatherCounts = new Dictionary<int, int>()
 
Dictionary< int, CellEffectcellEffects = new Dictionary<int, CellEffect>()
 
Dictionary< int, int > backerObjs = new Dictionary<int, int>()
 
Dictionary< int, PlantDataplants = new Dictionary<int, PlantData>()
 
MapExportSetting exportSetting
 
BitArray32 bits
 
Playlist plDay
 
Playlist plNight
 
List< Characharas = new List<Chara>()
 
List< TransAnimepointAnimes = new List<TransAnime>()
 
Cell[,] cells
 
Zone zone
 
CellEffectManager effectManager = new CellEffectManager()
 
PropsManager props = new PropsManager()
 
FloodSpiller flood = new FloodSpiller()
 
BiomeProfile[,] biomes
 
POIMap poiMap
 
List< Footmarkfootmarks = new List<Footmark>()
 
FowProfile fowProfile
 
bool revealed
 
- Public Attributes inherited from MapBounds
int x
 
int z
 
int maxX
 
int maxZ
 
int Size
 

Static Public Attributes

static HashSet< int > sunMap = new HashSet<int>()
 
static bool isDirtySunMap
 
- Static Public Attributes inherited from EClass
static Core core
 

Protected Member Functions

virtual void OnSerializing ()
 

Properties

bool isBreakerDown [get, set]
 
PropsStocked Stocked [get]
 
PropsInstalled Installed [get]
 
PropsRoaming Roaming [get]
 
float sizeModifier [get]
 
bool isGenerated [get]
 
bool IsIndoor [get]
 
int SizeXZ [get]
 
IEnumerable< CardCards [get]
 
- Properties inherited from MapBounds
int CenterX [get]
 
int CenterZ [get]
 
int Width [get]
 
int Height [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]
 

Private Member Functions

void OnSerializing (StreamingContext context)
 
void OnDeserialized (StreamingContext context)
 

Private Attributes

HashSet< int > roomHash = new HashSet<int>()
 
List< Thing_things = new List<Thing>()
 

Detailed Description

Definition at line 12 of file Map.cs.

Member Function Documentation

◆ _AddCard()

void Map._AddCard ( int  x,
int  z,
Card  t,
bool  onAddToZone 
)
inline

Definition at line 840 of file Map.cs.

841 {
842 if (!onAddToZone)
843 {
844 _RemoveCard(t);
845 }
846 t.pos.Set(x, z);
847 if (t.IsMultisize)
848 {
849 t.ForeachPoint(delegate(Point p, bool main)
850 {
851 p.cell.AddCard(t);
852 });
853 }
854 else
855 {
856 t.Cell.AddCard(t);
857 }
858 t.CalculateFOV();
859 if (t.isThing && !t.trait.IDActorEx.IsEmpty())
860 {
862 }
863 }
virtual bool IsMultisize
Definition: Card.cs:2034
virtual bool isThing
Definition: Card.cs:1957
void CalculateFOV()
Definition: Card.cs:5728
void ForeachPoint(Action< Point, bool > action)
Definition: Card.cs:6942
Point pos
Definition: Card.cs:55
Trait trait
Definition: Card.cs:49
Cell Cell
Definition: Card.cs:1931
void AddCard(Card c)
Definition: Cell.cs:1546
Definition: EClass.cs:5
static Scene scene
Definition: EClass.cs:30
int x
Definition: MapBounds.cs:8
void _RemoveCard(Card t)
Definition: Map.cs:865
Definition: Point.cs:9
Point Set(int _x, int _z)
Definition: Point.cs:479
Cell cell
Definition: Point.cs:51
void AddActorEx(Card c, Action< ActorEx > onBeforeSetOwner=null)
Definition: Scene.cs:1003
virtual string IDActorEx
Definition: Trait.cs:167

References _RemoveCard(), Scene.AddActorEx(), Cell.AddCard(), Card.CalculateFOV(), Card.Cell, Point.cell, Card.ForeachPoint(), Trait.IDActorEx, Card.IsMultisize, Card.isThing, Card.pos, EClass.scene, Point.Set(), Card.trait, MapBounds.x, and MapBounds.z.

Referenced by AddCardOnActivate(), MoveCard(), and OnCardAddedToZone().

◆ _RemoveCard()

void Map._RemoveCard ( Card  t)
inline

Definition at line 865 of file Map.cs.

866 {
867 if (t.IsMultisize)
868 {
869 t.ForeachPoint(delegate(Point p, bool main)
870 {
871 p.cell.RemoveCard(t);
872 });
873 }
874 else
875 {
876 t.Cell.RemoveCard(t);
877 }
878 t.ClearFOV();
879 }
void ClearFOV()
Definition: Card.cs:5817
void RemoveCard(Card c)
Definition: Cell.cs:1562

References Card.Cell, Point.cell, Card.ClearFOV(), Card.ForeachPoint(), Card.IsMultisize, and Cell.RemoveCard().

Referenced by _AddCard(), and OnCardRemovedFromZone().

◆ _ValidateInstalled()

void Map._ValidateInstalled ( int  x,
int  y 
)
inline

Definition at line 1954 of file Map.cs.

1955 {
1956 Point point = Point.shared.Set(x, y);
1957 if (!point.IsValid)
1958 {
1959 return;
1960 }
1961 List<Card> list = point.ListCards();
1962 CellDetail detail = point.cell.detail;
1963 if (detail == null)
1964 {
1965 return;
1966 }
1967 foreach (Card item in list)
1968 {
1969 if (!item.isThing || !item.trait.CanBeDestroyed || !item.IsInstalled)
1970 {
1971 continue;
1972 }
1973 HitResult hitResult = item.TileType._HitTest(point, item.Thing, canIgnore: false);
1974 if (item.Thing.stackOrder != detail.things.IndexOf(item.Thing) || (hitResult != HitResult.Valid && hitResult != HitResult.Warning))
1975 {
1976 if (EClass._zone.IsPCFaction || (!item.isNPCProperty && !(item.trait is TraitHarvest)))
1977 {
1978 item.SetPlaceState(PlaceState.roaming);
1979 }
1980 else if (item.rarity < Rarity.Legendary)
1981 {
1982 item.Die();
1983 }
1984 }
1985 }
1986 }
HitResult
Definition: HitResult.cs:2
PlaceState
Definition: PlaceState.cs:2
Rarity
Definition: Rarity.cs:2
Definition: Card.cs:11
List< Thing > things
Definition: CellDetail.cs:11
CellDetail detail
Definition: Cell.cs:92
static Zone _zone
Definition: EClass.cs:20
static Point shared
Definition: Point.cs:20
List< Card > ListCards(bool includeMasked=false)
Definition: Point.cs:1015
bool IsValid
Definition: Point.cs:88
bool IsPCFaction
Definition: Zone.cs:464

References EClass._zone, Point.cell, Cell.detail, Zone.IsPCFaction, Point.IsValid, item, Point.ListCards(), Point.Set(), Point.shared, and MapBounds.x.

Referenced by TryShatter(), and ValidateInstalled().

◆ AddBackerTree()

void Map.AddBackerTree ( bool  draw)
inline

Definition at line 1563 of file Map.cs.

1564 {
1566 int num = ((!draw) ? 1 : 2);
1567 EClass._map.bounds.ForeachCell(delegate(Cell c)
1568 {
1569 if (num > 0 && c.growth != null && c.growth.IsTree && c.growth.IsMature && (!EClass.player.doneBackers.Contains(item.id) || EClass.core.config.test.ignoreBackerDestoryFlag) && (c.sourceObj.alias == item.tree || item.tree == "random"))
1570 {
1571 backerObjs[c.index] = item.id;
1572 Debug.Log(c.index + "/" + c.x + "/" + c.z + "/" + item.id + "/" + item.Name + "/" + item.tree);
1573 num--;
1575 }
1576 });
1577 }
static int indexTree
Definition: BackerContent.cs:3
Definition: Cell.cs:7
GrowSystem growth
Definition: Cell.cs:225
byte z
Definition: Cell.cs:58
byte x
Definition: Cell.cs:56
int index
Definition: Cell.cs:114
bool ignoreBackerDestoryFlag
Definition: CoreConfig.cs:549
CoreConfig config
Definition: Core.cs:70
static Core core
Definition: EClass.cs:6
static Map _map
Definition: EClass.cs:18
static SourceManager sources
Definition: EClass.cs:42
static Player player
Definition: EClass.cs:12
virtual bool IsMature
Definition: GrowSystem.cs:99
virtual bool IsTree
Definition: GrowSystem.cs:87
void ForeachCell(Action< Cell > action)
Definition: MapBounds.cs:279
Dictionary< int, int > backerObjs
Definition: Map.cs:67
MapBounds bounds
Definition: Map.cs:52
HashSet< int > doneBackers
Definition: Player.cs:874
List< Row > listTree
Definition: SourceBacker.cs:73
SourceBacker backers

References EClass._map, backerObjs, SourceManager.backers, bounds, Core.config, EClass.core, Debug, Player.doneBackers, MapBounds.ForeachCell(), Cell.growth, CoreConfig.Test.ignoreBackerDestoryFlag, Cell.index, BackerContent.indexTree, GrowSystem.IsMature, GrowSystem.IsTree, item, SourceBacker.listTree, EClass.player, EClass.sources, CoreConfig.test, Cell.x, and Cell.z.

Referenced by Zone_Field.OnGenerateMap().

◆ AddCardOnActivate()

void Map.AddCardOnActivate ( Card  c)
inline

Definition at line 777 of file Map.cs.

778 {
779 c.parent = zone;
781 Chara chara = c.Chara;
782 if (chara != null)
783 {
784 chara.currentZone = EClass._zone;
785 }
786 if (c.isChara)
787 {
788 if (!c.pos.IsInBounds)
789 {
791 }
792 }
793 else if (!c.pos.IsValid)
794 {
796 }
797 _AddCard(c.pos.x, c.pos.z, c, onAddToZone: true);
798 }
virtual Chara Chara
Definition: Card.cs:1946
virtual bool isChara
Definition: Card.cs:1959
Definition: Chara.cs:10
Point GetCenterPos()
Definition: MapBounds.cs:52
void _AddCard(int x, int z, Card t, bool onAddToZone)
Definition: Map.cs:840
PropsManager props
Definition: Map.cs:91
Zone zone
Definition: Map.cs:87
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
bool IsInBounds
Definition: Point.cs:104
void OnCardAddedToZone(Card c)
Definition: PropsManager.cs:25

References _AddCard(), EClass._map, EClass._zone, Card.Chara, MapBounds.GetCenterPos(), Card.isChara, Point.IsInBounds, Point.IsValid, PropsManager.OnCardAddedToZone(), Card.pos, props, Point.Set(), Point.x, Point.z, and zone.

Referenced by Zone.AddGlobalCharasOnActivate().

◆ AddDecal()

void Map.AddDecal ( int  x,
int  z,
int  id,
int  amount = 1,
bool  refresh = true 
)
inline

Definition at line 2007 of file Map.cs.

2008 {
2009 if (x < 0 || z < 0 || x >= Size || z >= Size)
2010 {
2011 return;
2012 }
2013 Cell cell = cells[x, z];
2014 if (cell.sourceFloor.tileType.AllowBlood && (cell.decal / 8 == id || cell.decal % 8 <= amount))
2015 {
2016 if (cell.decal / 8 != id && cell.decal % 8 == 0)
2017 {
2018 amount--;
2019 }
2020 int num = Mathf.Clamp(((cell.decal / 8 == id) ? (cell.decal % 8) : 0) + amount, 0, 7);
2021 cell.decal = (byte)(id * 8 + num);
2022 if (refresh)
2023 {
2025 }
2026 }
2027 }
SourceFloor.Row sourceFloor
Definition: Cell.cs:1054
byte decal
Definition: Cell.cs:44
int Size
Definition: MapBounds.cs:20
void RefreshNeighborTiles(int x, int z)
Definition: Map.cs:2097
Cell[,] cells
Definition: Map.cs:85

References cells, Cell.decal, RefreshNeighborTiles(), MapBounds.Size, Cell.sourceFloor, MapBounds.x, and MapBounds.z.

Referenced by Card.AddBlood(), SourceMaterial.Row.AddBlood(), AM_MoveInstalled.HitTest(), and CoreDebug.UpdateInput().

◆ AddPlant()

PlantData Map.AddPlant ( Point  pos,
Thing  seed 
)
inline

Definition at line 1930 of file Map.cs.

1931 {
1932 PlantData plantData = new PlantData
1933 {
1934 seed = seed
1935 };
1936 plants[pos.index] = plantData;
1937 return plantData;
1938 }
int seed
Definition: Map.cs:19
Dictionary< int, PlantData > plants
Definition: Map.cs:70
int index
Definition: Point.cs:49

References Point.index, plants, and seed.

Referenced by TraitFertilizer.OnSimulateHour(), ZoneEventHarvest.OnVisit(), and TraitSeed.TrySprout().

◆ AngleToIndex()

int Map.AngleToIndex ( int  a)
inline

Definition at line 2052 of file Map.cs.

2053 {
2054 if (EClass._zone.IsRegion)
2055 {
2056 return a switch
2057 {
2058 135 => 7,
2059 180 => 0,
2060 225 => 1,
2061 -90 => 2,
2062 -45 => 3,
2063 0 => 4,
2064 45 => 5,
2065 _ => 6,
2066 };
2067 }
2068 return a switch
2069 {
2070 135 => 0,
2071 180 => 1,
2072 225 => 2,
2073 -90 => 3,
2074 -45 => 4,
2075 0 => 5,
2076 45 => 6,
2077 _ => 7,
2078 };
2079 }
virtual bool IsRegion
Definition: Spatial.cs:501

References EClass._zone, and Spatial.IsRegion.

Referenced by SetFoormark().

◆ ApplyBackerObj()

void Map.ApplyBackerObj ( Point  p,
int  id = -1 
)
inline

Definition at line 1588 of file Map.cs.

1589 {
1590 if (!p.HasObj)
1591 {
1592 return;
1593 }
1594 bool flag = p.sourceObj.id == 82;
1595 SourceBacker.Row row = ((id != -1) ? EClass.sources.backers.map.TryGetValue(id) : (flag ? EClass.sources.backers.listRemain.NextItem(ref BackerContent.indexRemain) : EClass.sources.backers.listTree.NextItem(ref BackerContent.indexTree)));
1596 if (row == null)
1597 {
1598 return;
1599 }
1601 {
1602 backerObjs[p.index] = row.id;
1603 if (flag)
1604 {
1605 p.cell.objDir = row.skin;
1606 }
1607 }
1608 else
1609 {
1610 backerObjs.Remove(p.index);
1611 }
1612 }
static int indexRemain
Definition: BackerContent.cs:5
bool HasObj
Definition: Point.cs:137
List< Row > listRemain
Definition: SourceBacker.cs:67

References backerObjs, SourceManager.backers, Core.config, EClass.core, Player.doneBackers, Point.HasObj, SourceBacker.Row.id, CoreConfig.Test.ignoreBackerDestoryFlag, Point.index, BackerContent.indexRemain, BackerContent.indexTree, SourceBacker.listRemain, SourceBacker.listTree, EClass.player, SourceBacker.Row.skin, EClass.sources, and CoreConfig.test.

Referenced by BackerContentInspector.ContentObj.Apply().

◆ Burn()

void Map.Burn ( int  x,
int  z,
bool  instant = false 
)
inline

Definition at line 1396 of file Map.cs.

1397 {
1398 Cell cell = cells[x, z];
1399 Point sharedPoint = cell.GetSharedPoint();
1400 if ((instant || EClass.rnd(10) == 0) && cell.HasObj)
1401 {
1402 if (cell.sourceObj.tileType is TileTypeTree)
1403 {
1404 SetObj(x, z, cell.matObj_fixed.id, 59, 0, EClass.rnd(4));
1405 }
1406 else
1407 {
1408 SetObj(x, z);
1409 if (EClass.rnd(2) == 0)
1410 {
1411 EClass._zone.AddCard(ThingGen.Create((EClass.rnd(2) == 0) ? "ash" : "ash2"), sharedPoint);
1412 }
1413 }
1414 }
1415 if ((instant || EClass.rnd(5) == 0) && cell._block != 0 && cell._block != 96)
1416 {
1417 if (EClass.rnd(10) == 0 || !cell.sourceBlock.tileType.IsWall)
1418 {
1419 cell._block = 0;
1420 }
1421 else
1422 {
1423 cell._block = 96;
1424 }
1425 SetObj(x, z);
1426 if (cell.room != null)
1427 {
1428 cell.room.SetDirty();
1429 }
1431 }
1432 if (instant || EClass.rnd(10) == 0)
1433 {
1434 if (EClass.rnd(4) != 0)
1435 {
1436 cell._floor = 49;
1437 }
1438 if (cell._bridge != 0 && EClass.rnd(5) != 0)
1439 {
1440 cell._bridge = 49;
1441 }
1442 }
1443 foreach (Card item in sharedPoint.ListCards())
1444 {
1445 if (item.trait.CanBeDestroyed && !item.trait.IsDoor && !item.isFireproof && !item.category.IsChildOf("currency") && item.rarity < Rarity.Legendary && !(item.trait is TraitFigure) && item.isThing)
1446 {
1447 if (instant)
1448 {
1449 item.Destroy();
1450 EClass._zone.AddCard(ThingGen.Create((EClass.rnd(2) == 0) ? "ash" : "ash2"), sharedPoint);
1451 }
1452 else
1453 {
1454 item.DamageHP(30, 910);
1455 }
1456 }
1457 }
1458 if (instant)
1459 {
1460 cell.effect = null;
1461 }
1462 }
byte _block
Definition: Cell.cs:30
Room room
Definition: Cell.cs:102
SourceBlock.Row sourceBlock
Definition: Cell.cs:1052
byte _bridge
Definition: Cell.cs:46
Point GetSharedPoint()
Definition: Cell.cs:1106
SourceObj.Row sourceObj
Definition: Cell.cs:1072
bool HasObj
Definition: Cell.cs:641
SourceMaterial.Row matObj_fixed
Definition: Cell.cs:1039
static int rnd(int a)
Definition: EClass.cs:50
void SetObj(int x, int z, int id=0, int value=1, int dir=0)
Definition: Map.cs:1522
void SetDirty()
Definition: Room.cs:213
static Thing Create(string id, int idMat=-1, int lv=-1)
Definition: ThingGen.cs:53
Card AddCard(Card t, Point point)
Definition: Zone.cs:1893

References Cell._block, Cell._bridge, EClass._zone, Zone.AddCard(), cells, ThingGen.Create(), Cell.GetSharedPoint(), Cell.HasObj, item, Cell.matObj_fixed, RefreshNeighborTiles(), EClass.rnd(), Cell.room, Room.SetDirty(), SetObj(), Cell.sourceBlock, Cell.sourceObj, MapBounds.x, and MapBounds.z.

Referenced by LogicalFire.Update().

◆ ClearRainAndDecal()

void Map.ClearRainAndDecal ( )
inline

Definition at line 1513 of file Map.cs.

1514 {
1515 ForeachCell(delegate(Cell c)
1516 {
1517 c.effect = null;
1518 c.decal = 0;
1519 });
1520 }
new void ForeachCell(Action< Cell > action)
Definition: Map.cs:2324

References ForeachCell().

Referenced by Zone.Export().

◆ CountChara()

int Map.CountChara ( Faction  faction)
inline

Definition at line 2419 of file Map.cs.

2420 {
2421 int num = 0;
2422 foreach (Chara chara in charas)
2423 {
2424 if (chara.faction == faction)
2425 {
2426 num++;
2427 }
2428 }
2429 return num;
2430 }
Faction faction
Definition: Chara.cs:412
List< Chara > charas
Definition: Map.cs:81

References charas, and Chara.faction.

◆ CountGuest()

int Map.CountGuest ( )
inline

Definition at line 2432 of file Map.cs.

2433 {
2434 int num = 0;
2435 foreach (Chara chara in charas)
2436 {
2437 if (chara.IsGuest())
2438 {
2439 num++;
2440 }
2441 }
2442 return num;
2443 }
bool IsGuest()
Definition: Chara.cs:5967

References charas, and Chara.IsGuest().

◆ CountHostile()

int Map.CountHostile ( )
inline

Definition at line 2445 of file Map.cs.

2446 {
2447 int num = 0;
2448 foreach (Chara chara in charas)
2449 {
2450 if (!chara.IsPCFaction && chara.IsHostile())
2451 {
2452 num++;
2453 }
2454 }
2455 return num;
2456 }
override bool IsPCFaction
Definition: Chara.cs:656
bool IsHostile()
Definition: Chara.cs:5884

References charas, Chara.IsHostile(), and Chara.IsPCFaction.

◆ CountNonHostile()

int Map.CountNonHostile ( )
inline

Definition at line 2471 of file Map.cs.

2472 {
2473 int num = 0;
2474 foreach (Chara chara in charas)
2475 {
2476 if (!chara.IsPCFaction && !chara.IsHostile())
2477 {
2478 num++;
2479 }
2480 }
2481 return num;
2482 }

References charas, Chara.IsHostile(), and Chara.IsPCFaction.

◆ CountWildAnimal()

int Map.CountWildAnimal ( )
inline

Definition at line 2458 of file Map.cs.

2459 {
2460 int num = 0;
2461 foreach (Chara chara in charas)
2462 {
2463 if (!chara.IsPCFaction && chara.race.IsAnimal)
2464 {
2465 num++;
2466 }
2467 }
2468 return num;
2469 }
SourceRace.Row race
Definition: Chara.cs:449

References charas, Chara.IsPCFaction, and Chara.race.

◆ CreateNew()

void Map.CreateNew ( int  size,
bool  setReference = true 
)
inline

Definition at line 153 of file Map.cs.

154 {
155 Debug.Log("Map CreateNew:");
156 Size = size;
157 cells = new Cell[Size, Size];
158 bounds = new MapBounds
159 {
160 x = 0,
161 z = 0,
162 maxX = Size - 1,
163 maxZ = Size - 1,
164 Size = Size
165 };
166 SetBounds(0, 0, Size - 1, Size - 1);
167 ForeachXYZ(delegate(int x, int z)
168 {
169 cells[x, z] = new Cell
170 {
171 x = (byte)x,
172 z = (byte)z
173 };
174 });
175 if (setReference)
176 {
177 SetReference();
178 }
179 }
int maxZ
Definition: MapBounds.cs:17
int maxX
Definition: MapBounds.cs:14
new void ForeachXYZ(Action< int, int > action)
Definition: Map.cs:2347
void SetBounds(int size)
Definition: Map.cs:2309
void SetReference()
Definition: Map.cs:195

References bounds, cells, Debug, ForeachXYZ(), MapBounds.maxX, MapBounds.maxZ, SetBounds(), SetReference(), MapBounds.Size, MapBounds.x, and MapBounds.z.

Referenced by MapGen.OnGenerateTerrain(), MapGenDungen.OnGenerateTerrain(), and MapGenRegion.OnGenerateTerrain().

◆ DestroyBlock()

void Map.DestroyBlock ( int  x,
int  z 
)
inline

Definition at line 2002 of file Map.cs.

2003 {
2004 SetBlock(x, z);
2005 }
void SetBlock(int x, int z, int idMat=0, int idBlock=0)
Definition: Map.cs:990

References SetBlock(), MapBounds.x, and MapBounds.z.

Referenced by OnCardAddedToZone().

◆ DestroyObj()

void Map.DestroyObj ( Point  point)
inline

Definition at line 1812 of file Map.cs.

1813 {
1814 Cell cell = point.cell;
1815 SourceObj.Row sourceObj = cell.sourceObj;
1816 SourceMaterial.Row matObj = cell.matObj;
1817 if (sourceObj.tileType.IsBlockPass)
1818 {
1819 Effect.Get("smoke").Play(point);
1820 }
1821 Effect.Get("mine").Play(point).SetParticleColor(cell.matObj.GetColor())
1822 .Emit(10 + EClass.rnd(10));
1823 point.PlaySound(matObj.GetSoundDead());
1824 matObj.AddBlood(point, 3);
1825 }
SourceMaterial.Row matObj
Definition: Cell.cs:1036
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
SoundSource PlaySound(string id, bool synced=true, float v=1f, bool spatial=true)
Definition: Point.cs:1217
TileType tileType
Definition: RenderRow.cs:77
void AddBlood(Point p, int a=1)
string GetSoundDead(RenderRow c=null)
virtual bool IsBlockPass
Definition: TileType.cs:149

References SourceMaterial.Row.AddBlood(), Point.cell, Effect.Get(), SourceMaterial.Row.GetSoundDead(), TileType.IsBlockPass, Cell.matObj, Effect.Play(), Point.PlaySound(), EClass.rnd(), Cell.sourceObj, and RenderRow.tileType.

Referenced by MineObj(), and TaskHarvest.OnCreateProgress().

◆ DropBlockComponent()

void Map.DropBlockComponent ( Point  point,
TileRow  r,
SourceMaterial::Row  mat,
bool  recoverBlock,
bool  isPlatform = false,
Chara  c = null 
)
inline

Definition at line 1614 of file Map.cs.

1615 {
1617 {
1618 return;
1619 }
1620 Thing thing = null;
1621 if (r.components.Length == 0)
1622 {
1623 return;
1624 }
1626 if (recoverBlock)
1627 {
1628 thing = ((!(r is SourceFloor.Row)) ? ThingGen.CreateBlock(r.id, mat.id) : ThingGen.CreateFloor(r.id, mat.id, isPlatform));
1629 }
1630 else
1631 {
1632 RecipeSource recipeSource = RecipeManager.Get(r.RecipeID + (isPlatform ? "-b" : ""));
1633 if (recipeSource == null)
1634 {
1635 return;
1636 }
1637 string iDIngredient = recipeSource.GetIDIngredient();
1638 if (iDIngredient == null)
1639 {
1640 return;
1641 }
1642 thing = ThingGen.Create(iDIngredient);
1643 thing.ChangeMaterial(mat.alias);
1644 }
1646 {
1647 PutAway(thing);
1648 }
1649 else
1650 {
1651 TrySmoothPick(point, thing, c);
1652 }
1653 }
virtual bool IsBuildMode
Definition: ActionMode.cs:181
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:2838
bool godBuild
Definition: CoreDebug.cs:303
static Game game
Definition: EClass.cs:8
static CoreDebug debug
Definition: EClass.cs:48
bool disableUsermapBenefit
GamePrincipal principal
Definition: Game.cs:221
void TrySmoothPick(Cell cell, Thing t, Chara c)
Definition: Map.cs:1791
bool PutAway(Card c)
Definition: Map.cs:2510
static void BuildList()
static RecipeSource Get(string id)
string GetIDIngredient()
virtual string RecipeID
Definition: RenderRow.cs:105
string[] components
Definition: RenderRow.cs:52
ActionMode actionMode
Definition: Scene.cs:77
static Thing CreateBlock(int id, int idMat)
Definition: ThingGen.cs:101
static Thing CreateFloor(int id, int idMat, bool platform=false)
Definition: ThingGen.cs:108
Definition: Thing.cs:8
int id
Definition: TileRow.cs:8
virtual bool IsUserZone
Definition: Zone.cs:264

References EClass._zone, Scene.actionMode, RecipeManager.BuildList(), Card.ChangeMaterial(), RenderRow.components, ThingGen.Create(), ThingGen.CreateBlock(), ThingGen.CreateFloor(), EClass.debug, GamePrincipal.disableUsermapBenefit, EClass.game, RecipeManager.Get(), RecipeSource.GetIDIngredient(), CoreDebug.godBuild, TileRow.id, ActionMode.IsBuildMode, Zone.IsUserZone, Game.principal, PutAway(), RenderRow.RecipeID, EClass.scene, and TrySmoothPick().

Referenced by MineBlock(), MineFloor(), and MineRamp().

◆ ExportMetaData()

void Map.ExportMetaData ( string  _path,
string  id,
PartialMap  partial = null 
)
inline

Definition at line 716 of file Map.cs.

717 {
718 if (custom == null)
719 {
720 custom = new CustomData();
721 }
722 MapMetaData mapMetaData = new MapMetaData
723 {
724 name = EClass._zone.Name,
726 partial = partial
727 };
728 custom.id = (mapMetaData.id = id);
729 IO.SaveFile(_path + "meta", mapMetaData);
730 }
Version version
Definition: BaseCore.cs:17
static BaseCore Instance
Definition: BaseCore.cs:11
Definition: IO.cs:11
static void SaveFile(string path, object obj, bool compress=false, JsonSerializerSettings setting=null)
Definition: IO.cs:89
CustomData custom
Definition: Map.cs:40
Version version
Definition: Map.cs:28
virtual string Name
Definition: Spatial.cs:495
int GetInt()
Definition: Version.cs:21

References EClass._zone, custom, Version.GetInt(), BaseCore.Instance, Spatial.Name, version, and BaseCore.version.

Referenced by Zone.Export(), and UpdateMetaData().

◆ FindChara() [1/2]

Chara Map.FindChara ( int  uid)
inline

Definition at line 2558 of file Map.cs.

2559 {
2560 foreach (Chara chara in charas)
2561 {
2562 if (chara.uid == uid)
2563 {
2564 return chara;
2565 }
2566 }
2567 return null;
2568 }
int uid
Definition: Card.cs:118

References charas, and Card.uid.

◆ FindChara() [2/2]

Chara Map.FindChara ( string  id)
inline

Definition at line 2546 of file Map.cs.

2547 {
2548 foreach (Chara chara in charas)
2549 {
2550 if (chara.id == id)
2551 {
2552 return chara;
2553 }
2554 }
2555 return null;
2556 }
string id
Definition: Card.cs:31

References charas, and Card.id.

Referenced by QuestPuppy.CanUpdateOnTalk(), ZoneEventSubdue.CheckClear(), ActEffect.DamageEle(), Card.DamageHP(), ZonePreEnterOnCompleteQuestInstance.Execute(), Chara.FindMaster(), CharaList.Get(), ConSleep.OnRemoved(), DramaManager.ParseLine(), ItemQuestTracker.Refresh(), and TraitBed.ValidateOwners().

◆ FindPublicArea()

BaseArea Map.FindPublicArea ( )
inline

Definition at line 2693 of file Map.cs.

2694 {
2695 return (from a in ((IEnumerable<BaseArea>)rooms.listArea).Concat((IEnumerable<BaseArea>)rooms.listRoom)
2696 where a.type.IsPublicArea
2697 select a).RandomItem();
2698 }
RoomManager rooms
Definition: Map.cs:31
List< Room > listRoom
Definition: RoomManager.cs:13
List< Area > listArea
Definition: RoomManager.cs:10

References RoomManager.listArea, RoomManager.listRoom, and rooms.

Referenced by GoalSleep.OnSimulatePosition(), and GoalSleep.Run().

◆ FindThing() [1/6]

Thing Map.FindThing ( Func< Thing, bool >  func)
inline

Definition at line 2570 of file Map.cs.

2571 {
2572 foreach (Thing thing in things)
2573 {
2574 if (func(thing))
2575 {
2576 return thing;
2577 }
2578 }
2579 return null;
2580 }
List< Thing > things
Definition: Map.cs:49

References things.

Referenced by GoalGraze.GetPos(), ConSleep.OnRemoved(), Zone_Dungeon.PlaceRail(), AIWork.SetDestination(), Chara.Stumble(), CoreDebug.UpdateInput(), FactionBranch.Upgrade(), and BaseListPeople.WriteHobbies().

◆ FindThing() [2/6]

Thing Map.FindThing ( int  uid)
inline

Definition at line 2582 of file Map.cs.

2583 {
2584 foreach (Thing thing in things)
2585 {
2586 if (thing.uid == uid)
2587 {
2588 return thing;
2589 }
2590 }
2591 return null;
2592 }

References things, and Card.uid.

◆ FindThing() [3/6]

Thing Map.FindThing ( string  workTag,
BaseArea  area1 = null,
BaseArea  area2 = null 
)
inline

Definition at line 2653 of file Map.cs.

2654 {
2655 if (area1 == null && area2 == null)
2656 {
2657 return null;
2658 }
2659 Thing thing = null;
2660 PropSet orCreate = EClass._map.Installed.workMap.GetOrCreate(workTag);
2661 if (area1 != null)
2662 {
2663 IEnumerable<Card> enumerable = orCreate.Where((Card a) => a.pos.HasRoomOrArea(area1));
2664 if (enumerable.Count() > 0)
2665 {
2666 thing = enumerable.RandomItem() as Thing;
2667 }
2668 }
2669 if (thing == null && area2 != null)
2670 {
2671 IEnumerable<Card> enumerable2 = orCreate.Where((Card a) => a.pos.HasRoomOrArea(area2));
2672 if (enumerable2.Count() > 0)
2673 {
2674 thing = enumerable2.RandomItem() as Thing;
2675 }
2676 }
2677 return thing;
2678 }
PropsInstalled Installed
Definition: Map.cs:123
bool HasRoomOrArea(BaseArea a)
Definition: Point.cs:397
Dictionary< string, PropSet > workMap
Definition: Props.cs:16

References EClass._map, Point.HasRoomOrArea(), Installed, Card.pos, and Props.workMap.

◆ FindThing() [4/6]

Thing Map.FindThing ( string  workTag,
Chara  c 
)
inline

Definition at line 2680 of file Map.cs.

2681 {
2682 Thing result = null;
2683 IEnumerable<Card> enumerable = from a in EClass._map.Installed.workMap.GetOrCreate(workTag)
2684 where a.pos.IsPublicSpace()
2685 select a;
2686 if (enumerable.Count() > 0)
2687 {
2688 result = enumerable.RandomItem() as Thing;
2689 }
2690 return result;
2691 }

References EClass._map, Installed, and Props.workMap.

◆ FindThing() [5/6]

Thing Map.FindThing ( Type  type,
BaseArea  area1,
BaseArea  area2 = null 
)
inline

Definition at line 2623 of file Map.cs.

2624 {
2625 if (area1 == null && area2 == null)
2626 {
2627 return null;
2628 }
2629 Thing thing = Find(area1);
2630 if (thing == null && area2 != null)
2631 {
2632 thing = Find(area2);
2633 }
2634 return thing;
2635 Thing Find(BaseArea area)
2636 {
2637 _things.Clear();
2638 foreach (Thing thing2 in EClass._map.props.installed.things)
2639 {
2640 if (type.IsAssignableFrom(thing2.trait.GetType()) && thing2.pos.HasRoomOrArea(area))
2641 {
2642 _things.Add(thing2);
2643 }
2644 }
2645 if (_things.Count <= 0)
2646 {
2647 return null;
2648 }
2649 return _things.RandomItem();
2650 }
2651 }
void Add(Act a, string s="")
Definition: ActPlan.cs:11
List< Thing > _things
Definition: Map.cs:107
PropsInstalled installed
Definition: PropsManager.cs:8
List< Thing > things
Definition: Props.cs:20

References EClass._map, _things, ActPlan.List.Add(), Point.HasRoomOrArea(), PropsManager.installed, Card.pos, props, Props.things, and Card.trait.

◆ FindThing() [6/6]

Thing Map.FindThing ( Type  type,
Chara  c = null 
)
inline

Definition at line 2606 of file Map.cs.

2607 {
2608 _things.Clear();
2609 foreach (Thing thing in EClass._map.props.installed.things)
2610 {
2611 if (type.IsAssignableFrom(thing.trait.GetType()) && thing.pos.IsPublicSpace())
2612 {
2613 _things.Add(thing);
2614 }
2615 }
2616 if (_things.Count <= 0)
2617 {
2618 return null;
2619 }
2620 return _things.RandomItem();
2621 }
bool IsPublicSpace()
Definition: Point.cs:425

References EClass._map, _things, ActPlan.List.Add(), PropsManager.installed, Point.IsPublicSpace(), Card.pos, props, Props.things, and Card.trait.

◆ FindThing< T >()

T Map.FindThing< T > ( )
inline
Type Constraints
T :Trait 

Definition at line 2594 of file Map.cs.

2594 : Trait
2595 {
2596 foreach (Thing thing in things)
2597 {
2598 if (thing.trait is T)
2599 {
2600 return thing.trait as T;
2601 }
2602 }
2603 return null;
2604 }
Definition: Trait.cs:7

References things, and Card.trait.

◆ ForeachCell()

◆ ForeachNeighbor()

void Map.ForeachNeighbor ( Point  center,
Action< Point action 
)
inline

Definition at line 2379 of file Map.cs.

2380 {
2381 int num = center.x;
2382 int num2 = center.z;
2383 Point point = new Point();
2384 for (int i = num - 1; i < num + 2; i++)
2385 {
2386 if (i < 0 || i >= Size)
2387 {
2388 continue;
2389 }
2390 for (int j = num2 - 1; j < num2 + 2; j++)
2391 {
2392 if (j >= 0 && j < Size)
2393 {
2394 point.Set(i, j);
2395 action(point);
2396 }
2397 }
2398 }
2399 }

References Point.Set(), MapBounds.Size, Point.x, and Point.z.

◆ ForeachPoint()

new void Map.ForeachPoint ( Action< Point action)
inline

Definition at line 2335 of file Map.cs.

2336 {
2337 Point point = new Point();
2338 for (int i = 0; i < Size; i++)
2339 {
2340 for (int j = 0; j < Size; j++)
2341 {
2342 action(point.Set(i, j));
2343 }
2344 }
2345 }

References Point.Set(), and MapBounds.Size.

Referenced by BaseTileSelector.ProcessFillTiles().

◆ ForeachSphere()

void Map.ForeachSphere ( int  _x,
int  _z,
float  r,
Action< Point action 
)
inline

Definition at line 2358 of file Map.cs.

2359 {
2360 Point point = new Point();
2361 int num = (int)Mathf.Ceil(r);
2362 for (int i = _x - num; i < _x + num + 1; i++)
2363 {
2364 if (i < 0 || i >= Size)
2365 {
2366 continue;
2367 }
2368 for (int j = _z - num; j < _z + num + 1; j++)
2369 {
2370 if (j >= 0 && j < Size && (float)((i - _x) * (i - _x) + (j - _z) * (j - _z)) < r * r)
2371 {
2372 point.Set(i, j);
2373 action(point);
2374 }
2375 }
2376 }
2377 }

References Point.Set(), and MapBounds.Size.

Referenced by Trait.ListPoints(), TraitLightSun.ListPoints(), ListPointsInArc(), ListPointsInCircle(), Act.OnMarkMapHighlights(), AM_Populate.OnProcessTiles(), AM_Terrain.OnProcessTiles(), AM_BaseTerrain.OnRenderTile(), RefreshFOV(), Reveal(), ActWait.Search(), GameUpdater.Update(), and VirtualRoom.VirtualRoom().

◆ ForeachXYZ()

new void Map.ForeachXYZ ( Action< int, int >  action)
inline

Definition at line 2347 of file Map.cs.

2348 {
2349 for (int i = 0; i < Size; i++)
2350 {
2351 for (int j = 0; j < Size; j++)
2352 {
2353 action(i, j);
2354 }
2355 }
2356 }

References MapBounds.Size.

Referenced by CreateNew().

◆ GetBackerObj()

SourceBacker.Row Map.GetBackerObj ( Point  p)
inline

Definition at line 1579 of file Map.cs.

1580 {
1581 if (!backerObjs.ContainsKey(p.index))
1582 {
1583 return null;
1584 }
1585 return EClass.sources.backers.map.TryGetValue(backerObjs[p.index]);
1586 }

References backerObjs, SourceManager.backers, Point.index, and EClass.sources.

Referenced by TaskHarvest.OnCreateProgress().

◆ GetCell()

Cell Map.GetCell ( int  index)
inline

Definition at line 881 of file Map.cs.

882 {
883 return cells[index % Size, index % SizeXZ / Size];
884 }
int SizeXZ
Definition: Map.cs:133

References cells, MapBounds.Size, and SizeXZ.

Referenced by Zone.Activate(), MapSubset.Apply(), Fov.ClearVisible(), Fov.Perform(), and ActionMode.RefreshTexts().

◆ GetDependedRamp()

Cell Map.GetDependedRamp ( Cell  cell)
inline

Definition at line 2168 of file Map.cs.

2169 {
2170 Cell right = cell.Right;
2171 if (right.HasRamp && !right.HasStairs && right.blockDir == 1)
2172 {
2173 return right;
2174 }
2175 Cell front = cell.Front;
2176 if (front.HasRamp && !front.HasStairs && front.blockDir == 0)
2177 {
2178 return front;
2179 }
2180 Cell left = cell.Left;
2181 if (left.HasRamp && !left.HasStairs && left.blockDir == 3)
2182 {
2183 return left;
2184 }
2185 Cell back = cell.Back;
2186 if (back.HasRamp && !back.HasStairs && back.blockDir == 2)
2187 {
2188 return back;
2189 }
2190 return null;
2191 }
Cell Back
Definition: Cell.cs:153
bool HasStairs
Definition: Cell.cs:855
Cell Front
Definition: Cell.cs:129
Cell Left
Definition: Cell.cs:165
Cell Right
Definition: Cell.cs:141
bool HasRamp
Definition: Cell.cs:837
int blockDir
Definition: Cell.cs:898

References Cell.Back, back, Cell.blockDir, Cell.Front, Cell.HasRamp, Cell.HasStairs, Cell.Left, left, Cell.Right, and right.

Referenced by RemoveLonelyRamps().

◆ GetMetaData()

static MapMetaData Map.GetMetaData ( string  pathZip)
inlinestatic

Definition at line 732 of file Map.cs.

733 {
734 try
735 {
736 using ZipFile zipFile = ZipFile.Read(pathZip);
737 ZipEntry zipEntry = zipFile["meta"];
738 if (zipEntry != null)
739 {
740 using (MemoryStream stream = new MemoryStream())
741 {
742 zipEntry.Extract(stream);
743 MapMetaData mapMetaData = IO.LoadStreamJson<MapMetaData>(stream);
744 mapMetaData.path = pathZip;
745 return mapMetaData;
746 }
747 }
748 }
749 catch (Exception message)
750 {
751 if (Application.isEditor)
752 {
753 Debug.Log(message);
754 }
755 }
756 return null;
757 }

References Debug.

Referenced by Zone.IsImportValid(), TraitMoongate.ListSavedUserMap(), PartialMap.Load(), PartialMapMenu.Refresh(), and TraitMoongate.UseMoongate().

◆ GetNearbyResourcePoint()

Point Map.GetNearbyResourcePoint ( Point  center)
inline

Definition at line 2236 of file Map.cs.

2237 {
2238 Point point = new Point();
2239 int num = ((EClass.rnd(2) == 0) ? 1 : (-1));
2240 int num2 = ((EClass.rnd(2) == 0) ? 1 : (-1));
2241 for (int i = 0; i < 3; i++)
2242 {
2243 point.x = center.x - num + i * num;
2244 for (int j = 0; j < 3; j++)
2245 {
2246 point.z = center.z - num2 + j * num2;
2247 if (point.IsValid && point.area == null && point.cell.CanHarvest())
2248 {
2249 return point;
2250 }
2251 }
2252 }
2253 return Point.Invalid;
2254 }
bool CanHarvest()
Definition: Cell.cs:1660
static Point Invalid
Definition: Point.cs:28
Area area
Definition: Point.cs:73

References Point.area, Cell.CanHarvest(), Point.cell, Point.Invalid, Point.IsValid, and EClass.rnd().

◆ GetRampDir()

int Map.GetRampDir ( int  x,
int  z,
TileType  blockType = null 
)
inline

Definition at line 2131 of file Map.cs.

2132 {
2133 Cell cell = cells[x, z];
2134 if (cell.HasFullBlock)
2135 {
2136 if (blockType == null)
2137 {
2138 blockType = cell.sourceBlock.tileType;
2139 }
2140 Cell right = cell.Right;
2141 Cell front = cell.Front;
2142 Cell left = cell.Left;
2143 Cell back = cell.Back;
2144 if (!right.HasBlock && !right.IsVoid && left.HasFullBlock && front.CanBuildRamp(1) && back.CanBuildRamp(1))
2145 {
2146 return 1;
2147 }
2148 if (!front.HasBlock && !front.IsVoid && back.HasFullBlock && left.CanBuildRamp(0) && right.CanBuildRamp(0))
2149 {
2150 return 0;
2151 }
2152 if (!left.HasBlock && !left.IsVoid && right.HasFullBlock && front.CanBuildRamp(3) && back.CanBuildRamp(3))
2153 {
2154 return 3;
2155 }
2156 if (!back.HasBlock && !back.IsVoid && front.HasFullBlock && left.CanBuildRamp(2) && right.CanBuildRamp(2))
2157 {
2158 return 2;
2159 }
2160 if (!blockType.IsRamp)
2161 {
2162 return 0;
2163 }
2164 }
2165 return -1;
2166 }
bool HasBlock
Definition: Cell.cs:643
bool CanBuildRamp(int dir)
Definition: Cell.cs:1139
bool HasFullBlock
Definition: Cell.cs:817
bool IsVoid
Definition: Cell.cs:959
bool IsRamp
Definition: TileType.cs:143

References Cell.Back, back, Cell.CanBuildRamp(), cells, Cell.Front, Cell.HasBlock, Cell.HasFullBlock, Cell.IsVoid, Cell.Left, left, Cell.Right, right, Cell.sourceBlock, MapBounds.x, and MapBounds.z.

Referenced by TaskMine.GetHitResult(), and MineRamp().

◆ GetRandomEdge()

new Point Map.GetRandomEdge ( int  r = 3)
inline

Definition at line 2211 of file Map.cs.

2212 {
2213 int num = 0;
2214 int num2 = 0;
2215 for (int i = 0; i < 10000; i++)
2216 {
2217 if (EClass.rnd(2) == 0)
2218 {
2219 num = ((EClass.rnd(2) == 0) ? EClass.rnd(r) : (Size - 1 - EClass.rnd(r)));
2220 num2 = EClass.rnd(Size);
2221 }
2222 else
2223 {
2224 num2 = ((EClass.rnd(2) == 0) ? EClass.rnd(r) : (Size - 1 - EClass.rnd(r)));
2225 num = EClass.rnd(Size);
2226 }
2227 Point surface = GetSurface(num, num2, walkable: false);
2228 if (surface.IsValid)
2229 {
2230 return surface;
2231 }
2232 }
2233 return GetSurface(Size / 2, Size / 2, walkable: false);
2234 }
Point GetSurface(int x, int z, bool walkable=true)
Definition: MapBounds.cs:171

References MapBounds.GetSurface(), Point.IsValid, EClass.rnd(), and MapBounds.Size.

Referenced by MapGen.MakeRiver(), and ZoneEventSiege.OnFirstTick().

◆ GetRandomPoint()

Point Map.GetRandomPoint ( Point  center,
int  radius,
int  tries = 100,
bool  mustBeWalkable = true,
bool  requireLos = true 
)
inline

Definition at line 2193 of file Map.cs.

2194 {
2195 Point point = new Point();
2196 for (int i = 0; i < tries; i++)
2197 {
2198 point.x = center.x + EClass.rnd(radius * 2 + 1) - radius;
2199 point.z = center.z + EClass.rnd(radius * 2 + 1) - radius;
2200 point.Clamp();
2201 if ((!mustBeWalkable || !point.cell.blocked) && (!requireLos || Los.IsVisible(center, point)))
2202 {
2203 return point;
2204 }
2205 }
2206 Debug.Log("GetRandomPoint failed center:" + center?.ToString() + " rad:" + radius);
2207 point.IsValid = false;
2208 return point;
2209 }
Definition: Los.cs:5
static bool IsVisible(Point p1, Point p2, Action< Point, bool > _onVisit=null)
Definition: Los.cs:167
Point Clamp(bool useBounds=false)
Definition: Point.cs:972

References Algorithms.WeightCell.blocked, Point.cell, Point.Clamp(), Debug, Los.IsVisible(), and EClass.rnd().

Referenced by MapBounds.GetRandomSpawnPos(), MapGenDungen.OnGenerateTerrain(), MapGen.Populate(), and TraitSpotSpawn.Update().

◆ ListChara()

List< Chara > Map.ListChara ( Faction  faction)
inline

Definition at line 2484 of file Map.cs.

2485 {
2486 List<Chara> list = new List<Chara>();
2487 foreach (Chara chara in charas)
2488 {
2489 if (chara.faction == faction)
2490 {
2491 list.Add(chara);
2492 }
2493 }
2494 return list;
2495 }

References charas, and Chara.faction.

Referenced by ContentPopulation.Refresh().

◆ ListCharasInCircle()

List< Chara > Map.ListCharasInCircle ( Point  center,
float  radius,
bool  los = true 
)
inline

Definition at line 2269 of file Map.cs.

2270 {
2271 List<Chara> list = new List<Chara>();
2272 foreach (Point item in ListPointsInCircle(center, radius, mustBeWalkable: false, los))
2273 {
2274 CellDetail detail = item.detail;
2275 if (detail == null || detail.charas.Count <= 0)
2276 {
2277 continue;
2278 }
2279 foreach (Chara chara in item.detail.charas)
2280 {
2281 list.Add(chara);
2282 }
2283 }
2284 return list;
2285 }
List< Chara > charas
Definition: CellDetail.cs:13
List< Point > ListPointsInCircle(Point center, float radius, bool mustBeWalkable=true, bool los=true)
Definition: Map.cs:2256

References CellDetail.charas, item, and ListPointsInCircle().

Referenced by AI_PlayMusic.Run().

◆ ListPointsInArc()

List< Point > Map.ListPointsInArc ( Point  center,
Point  to,
int  radius,
float  angle 
)
inline

Definition at line 2287 of file Map.cs.

2288 {
2289 Point to2 = new Point((to.x > center.x) ? 1 : ((to.x < center.x) ? (-1) : 0), (to.z > center.z) ? 1 : ((to.z < center.z) ? (-1) : 0));
2290 Point point = new Point(0, 0);
2291 List<Point> list = new List<Point>();
2292 float diff = point.GetAngle2(to2);
2293 ForeachSphere(center.x, center.z, radius, delegate(Point p)
2294 {
2295 float angle2 = center.GetAngle2(p);
2296 if ((Mathf.Abs(diff - angle2) < angle || Mathf.Abs(diff - angle2 + 360f) < angle || Mathf.Abs(360f - diff + angle2) < angle) && Los.IsVisible(center, p) && !p.IsBlocked)
2297 {
2298 list.Add(p.Copy());
2299 }
2300 });
2301 return list;
2302 }
void ForeachSphere(int _x, int _z, float r, Action< Point > action)
Definition: Map.cs:2358
bool IsBlocked
Definition: Point.cs:339
float GetAngle2(Point to)
Definition: Point.cs:589

References ForeachSphere(), Point.GetAngle2(), Point.IsBlocked, Los.IsVisible(), Point.x, and Point.z.

Referenced by ActEffect.ProcAt().

◆ ListPointsInCircle()

List< Point > Map.ListPointsInCircle ( Point  center,
float  radius,
bool  mustBeWalkable = true,
bool  los = true 
)
inline

Definition at line 2256 of file Map.cs.

2257 {
2258 List<Point> list = new List<Point>();
2259 ForeachSphere(center.x, center.z, radius, delegate(Point p)
2260 {
2261 if ((!mustBeWalkable || !p.cell.blocked) && (!los || Los.IsVisible(center, p)))
2262 {
2263 list.Add(p.Copy());
2264 }
2265 });
2266 return list;
2267 }

References Algorithms.WeightCell.blocked, Point.cell, ForeachSphere(), Los.IsVisible(), Point.x, and Point.z.

Referenced by TaskClean.GetTarget(), ListCharasInCircle(), Point.ListWitnesses(), and ActEffect.ProcAt().

◆ ListPointsInLine()

List< Point > Map.ListPointsInLine ( Point  center,
Point  to,
int  radius 
)
inline

Definition at line 2304 of file Map.cs.

2305 {
2306 return Los.ListVisible(center, to, radius);
2307 }
static List< Point > ListVisible(Point p1, Point p2, int radius, Action< Point, bool > _onVisit=null)
Definition: Los.cs:90

References Los.ListVisible().

Referenced by ActMelee.Attack(), ActBolt.OnMarkMapHighlights(), ActRanged.Perform(), and ActEffect.ProcAt().

◆ ListThing< T >()

List< Thing > Map.ListThing< T > ( )
inline
Type Constraints
T :Trait 

Definition at line 2497 of file Map.cs.

2497 : Trait
2498 {
2499 List<Thing> list = new List<Thing>();
2500 foreach (Thing thing in things)
2501 {
2502 if (thing.IsInstalled && thing.trait is T)
2503 {
2504 list.Add(thing);
2505 }
2506 }
2507 return list;
2508 }
bool IsInstalled
Definition: Card.cs:2241

References Card.IsInstalled, things, and Card.trait.

◆ Load()

void Map.Load ( string  path,
bool  import = false,
PartialMap  partial = null 
)
inline

Definition at line 542 of file Map.cs.

543 {
544 if (partial == null)
545 {
546 Debug.Log("Map Load:" + compression.ToString() + ": " + path);
547 }
548 int num = Size;
549 int num2 = Size;
550 if (partial != null)
551 {
552 num = partial.w;
553 num2 = partial.h;
554 Debug.Log(compression.ToString() + ": " + num + "/" + num2);
555 }
556 int size = num * num2;
557 cells = new Cell[num, num2];
558 if (bounds.maxX == 0)
559 {
560 bounds.SetBounds(0, 0, num - 1, num2 - 1);
561 }
562 SetBounds(0, 0, num - 1, num2 - 1);
563 byte[] bytes2 = TryLoad("objVals");
564 byte[] bytes3 = TryLoad("blockMats");
565 byte[] bytes4 = TryLoad("blocks");
566 byte[] bytes5 = TryLoad("floorMats");
567 byte[] bytes6 = TryLoad("floors");
568 byte[] bytes7 = TryLoad("objs");
569 byte[] bytes8 = TryLoad("objMats");
570 byte[] bytes9 = TryLoad("decal");
571 byte[] bytes10 = TryLoad("dirs");
572 byte[] bytes11 = TryLoad("flags");
573 byte[] bytes12 = TryLoad("flags2");
574 byte[] bytes13 = TryLoad("heights");
575 byte[] bytes14 = TryLoad("bridges");
576 byte[] bytes15 = TryLoad("bridgeMats");
577 byte[] bytes16 = TryLoad("bridgeHeights");
578 byte[] bytes17 = TryLoad("bridgePillars");
579 byte[] bytes18 = TryLoad("roofBlocks");
580 byte[] bytes19 = TryLoad("roofBlockMats");
581 byte[] bytes20 = TryLoad("roofBlockDirs");
582 if (bytes17.Length < size)
583 {
584 bytes17 = new byte[size];
585 }
586 if (bytes2.Length < size)
587 {
588 bytes2 = new byte[size];
589 }
590 if (bytes12.Length < size)
591 {
592 bytes12 = new byte[size];
593 }
594 Validate(ref bytes2, "objVals");
595 Validate(ref bytes3, "blockMats");
596 Validate(ref bytes4, "blocks");
597 Validate(ref bytes5, "floorMats");
598 Validate(ref bytes6, "floors");
599 Validate(ref bytes7, "objs");
600 Validate(ref bytes8, "objMats");
601 Validate(ref bytes9, "decal");
602 Validate(ref bytes10, "dirs");
603 Validate(ref bytes11, "flags");
604 Validate(ref bytes12, "flags2");
605 Validate(ref bytes13, "heights");
606 Validate(ref bytes14, "bridges");
607 Validate(ref bytes15, "bridgeMats");
608 Validate(ref bytes16, "bridgeHeights");
609 Validate(ref bytes17, "bridgePillars");
610 Validate(ref bytes18, "roofBlocks");
611 Validate(ref bytes19, "roofBlockMats");
612 Validate(ref bytes20, "roofBlockDirs");
613 int count = EClass.sources.floors.rows.Count;
614 int count2 = EClass.sources.materials.rows.Count;
615 int num3 = 0;
616 for (int i = 0; i < num; i++)
617 {
618 for (int j = 0; j < num2; j++)
619 {
620 Cell cell = (cells[i, j] = new Cell
621 {
622 x = (byte)i,
623 z = (byte)j,
624 objVal = bytes2[num3],
625 _blockMat = bytes3[num3],
626 _block = bytes4[num3],
627 _floorMat = bytes5[num3],
628 _floor = bytes6[num3],
629 obj = bytes7[num3],
630 objMat = bytes8[num3],
631 decal = bytes9[num3],
632 _dirs = bytes10[num3],
633 height = bytes13[num3],
634 _bridge = bytes14[num3],
635 _bridgeMat = bytes15[num3],
636 bridgeHeight = bytes16[num3],
637 bridgePillar = bytes17[num3],
638 _roofBlock = bytes18[num3],
639 _roofBlockMat = bytes19[num3],
640 _roofBlockDir = bytes20[num3],
641 isSeen = bytes11[num3].GetBit(1),
642 isHarvested = bytes11[num3].GetBit(2),
643 impassable = bytes11[num3].GetBit(3),
644 isModified = bytes11[num3].GetBit(4),
645 isClearSnow = bytes11[num3].GetBit(5),
646 isForceFloat = bytes11[num3].GetBit(6),
647 isToggleWallPillar = bytes11[num3].GetBit(7),
648 isWatered = bytes12[num3].GetBit(0),
649 isObjDyed = bytes12[num3].GetBit(1),
650 crossWall = bytes12[num3].GetBit(2)
651 });
652 if (cell._bridge >= count)
653 {
654 cell._bridge = 0;
655 }
656 if (cell._bridgeMat >= count2)
657 {
658 cell._bridgeMat = 1;
659 }
661 num3++;
662 }
663 }
664 things.ForeachReverse(delegate(Thing t)
665 {
666 if (t.Num <= 0 || t.isDestroyed)
667 {
668 Debug.Log("[bug] Removing bugged thing:" + t.Num + "/" + t.isDestroyed + "/" + t);
669 things.Remove(t);
670 }
671 });
672 foreach (KeyValuePair<int, CellEffect> cellEffect in cellEffects)
673 {
674 int key = cellEffect.Key;
675 int num4 = key % Size;
676 int num5 = key / Size;
677 cells[num4, num5].effect = cellEffect.Value;
678 if (cellEffect.Value.IsFire)
679 {
680 effectManager.GetOrCreate(new Point(num4, num5));
681 }
682 }
683 cellEffects.Clear();
685 byte[] TryLoad(string s)
686 {
687 return TryLoadFile(path, s, size);
688 }
689 void Validate(ref byte[] bytes, string id)
690 {
691 if (bytes.Length < size)
692 {
693 Debug.LogError("expection: size invalid:" + id + " " + bytes.Length + "/" + size);
694 bytes = new byte[size];
695 }
696 }
697 }
bool isDestroyed
Definition: Card.cs:71
int Num
Definition: Card.cs:154
CellEffect effect
Definition: Cell.cs:94
byte _bridgeMat
Definition: Cell.cs:48
static void RebuildCritter(Cell cell)
Definition: Critter.cs:93
LogicalPoint GetOrCreate(Point point)
void SetBounds(int _x, int _z, int _maxX, int _maxZ)
Definition: MapBounds.cs:30
Dictionary< int, CellEffect > cellEffects
Definition: Map.cs:64
byte[] TryLoadFile(string path, string s, int size)
Definition: Map.cs:531
CellEffectManager effectManager
Definition: Map.cs:89
void ValidateVersion()
Definition: Map.cs:699
IO.Compression compression
Definition: Map.cs:25
SourceMaterial materials
SourceFloor floors

References Cell._bridge, Cell._bridgeMat, bounds, cellEffects, cells, compression, Debug, Cell.effect, effectManager, SourceManager.floors, LogicalPointManager.GetOrCreate(), Card.isDestroyed, SourceManager.materials, MapBounds.maxX, Card.Num, Critter.RebuildCritter(), MapBounds.SetBounds(), SetBounds(), MapBounds.Size, EClass.sources, things, TryLoadFile(), ValidateVersion(), MapBounds.x, and MapBounds.z.

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

◆ MineBlock()

void Map.MineBlock ( Point  point,
bool  recoverBlock = false,
Chara  c = null,
bool  mineObj = true 
)
inline

Definition at line 1655 of file Map.cs.

1656 {
1657 bool flag = ActionMode.Mine.IsRoofEditMode() && point.cell._roofBlock != 0;
1658 if (!point.IsValid || (!flag && !point.cell.HasBlock))
1659 {
1660 return;
1661 }
1662 SourceMaterial.Row row = (flag ? point.matRoofBlock : point.matBlock);
1663 byte b = (flag ? point.cell._roofBlock : point.cell._block);
1664 SourceBlock.Row row2 = EClass.sources.blocks.rows[b];
1665 Effect.Get("smoke").Play(point);
1666 Effect.Get("mine").Play(point).SetParticleColor(row.GetColor())
1667 .Emit(10 + EClass.rnd(10));
1668 point.PlaySound(row.GetSoundDead(row2));
1669 row.AddBlood(point, 8);
1670 bool flag2 = c == null || c.IsAgent || c.IsPCFactionOrMinion;
1672 {
1673 flag2 = false;
1674 }
1675 if (flag)
1676 {
1677 point.cell._roofBlock = 0;
1678 RefreshSingleTile(point.x, point.z);
1679 }
1680 else
1681 {
1682 if (point.cell.HasFullBlock)
1683 {
1684 RemoveLonelyRamps(point.cell);
1685 }
1686 point.SetBlock();
1687 if (flag2 && point.sourceObj.tileType.IsBlockMount && mineObj)
1688 {
1689 MineObj(point, null, c);
1690 }
1691 }
1692 if (flag2)
1693 {
1694 DropBlockComponent(point, row2, row, recoverBlock, isPlatform: false, c);
1695 }
1696 RefreshShadow(point.x, point.z);
1697 RefreshShadow(point.x, point.z - 1);
1698 ValidateInstalled(point);
1699 RefreshFOV(point.x, point.z);
1700 if (flag2 && !point.cell.isModified && !flag)
1701 {
1702 if (b == 17 || EClass.rnd(100) == 0)
1703 {
1704 zone.AddCard(ThingGen.Create("money2"), point);
1705 }
1706 if (EClass._zone.DangerLv >= 10 && EClass.rnd(200) == 0)
1707 {
1708 zone.AddCard(ThingGen.Create("crystal_earth"), point);
1709 }
1710 if (EClass._zone.DangerLv >= 25 && EClass.rnd(200) == 0)
1711 {
1712 zone.AddCard(ThingGen.Create("crystal_sun"), point);
1713 }
1714 if (EClass._zone.DangerLv >= 40 && EClass.rnd(200) == 0)
1715 {
1716 zone.AddCard(ThingGen.Create("crystal_mana"), point);
1717 }
1718 point.cell.isModified = true;
1719 }
1720 }
override bool IsRoofEditMode(Card c=null)
Definition: AM_Mine.cs:19
static AM_Mine Mine
Definition: ActionMode.cs:33
bool IsPCFactionOrMinion
Definition: Card.cs:2132
bool isModified
Definition: Cell.cs:438
void RefreshSingleTile(int x, int z)
Definition: Map.cs:2081
void RefreshFOV(int x, int z, int radius=6, bool recalculate=false)
Definition: Map.cs:923
void MineObj(Point point, Task task=null, Chara c=null)
Definition: Map.cs:1827
void RemoveLonelyRamps(Cell cell)
Definition: Map.cs:1988
void ValidateInstalled(Point p)
Definition: Map.cs:1945
void DropBlockComponent(Point point, TileRow r, SourceMaterial.Row mat, bool recoverBlock, bool isPlatform=false, Chara c=null)
Definition: Map.cs:1614
void RefreshShadow(int x, int z)
Definition: Map.cs:1787
SourceMaterial.Row matBlock
Definition: Point.cs:55
SourceObj.Row sourceObj
Definition: Point.cs:69
void SetBlock(int idMat=0, int idBlock=0)
Definition: Point.cs:882
SourceBlock blocks
override int DangerLv
Definition: Zone.cs:107

References Cell._block, EClass._zone, SourceMaterial.Row.AddBlood(), Zone.AddCard(), SourceManager.blocks, Point.cell, ThingGen.Create(), Zone.DangerLv, GamePrincipal.disableUsermapBenefit, DropBlockComponent(), EClass.game, Effect.Get(), SourceMaterial.Row.GetColor(), SourceMaterial.Row.GetSoundDead(), Cell.HasBlock, Cell.HasFullBlock, Cell.isModified, AM_Mine.IsRoofEditMode(), Zone.IsUserZone, Point.IsValid, Point.matBlock, ActionMode.Mine, MineObj(), Effect.Play(), Point.PlaySound(), Game.principal, RefreshFOV(), RefreshShadow(), RefreshSingleTile(), RemoveLonelyRamps(), EClass.rnd(), Point.SetBlock(), Point.sourceObj, EClass.sources, ValidateInstalled(), Point.x, Point.z, and zone.

Referenced by ActEffect.DamageEle(), MineObj(), TaskMine.OnProgressComplete(), and RemoveLonelyRamps().

◆ MineFloor()

void Map.MineFloor ( Point  point,
Chara  c = null,
bool  recoverBlock = false,
bool  removePlatform = true 
)
inline

Definition at line 1739 of file Map.cs.

1740 {
1741 if (!point.IsValid || (!point.HasFloor && !point.HasBridge))
1742 {
1743 return;
1744 }
1745 SourceMaterial.Row row = (point.cell.HasBridge ? point.matBridge : point.matFloor);
1746 SourceFloor.Row c2 = (point.cell.HasBridge ? point.sourceBridge : point.sourceFloor);
1747 Effect.Get("mine").Play(point).SetParticleColor(row.GetColor())
1748 .Emit(10 + EClass.rnd(10));
1749 point.PlaySound(row.GetSoundDead(c2));
1750 MineObj(point, null, c);
1751 if (point.cell.HasBridge && removePlatform)
1752 {
1753 DropBlockComponent(EClass.pc.pos, point.sourceBridge, point.matBridge, recoverBlock, isPlatform: true, c);
1754 EClass._map.SetBridge(point.x, point.z);
1755 if (point.IsSky)
1756 {
1757 EClass.pc.Kick(point, ignoreSelf: true);
1758 }
1759 return;
1760 }
1762 {
1763 DropBlockComponent(EClass.pc.pos, point.sourceFloor, row, recoverBlock, isPlatform: false, c);
1764 SetFloor(point.x, point.z, 0, 90);
1765 if (point.IsSky)
1766 {
1767 EClass.pc.Kick(point, ignoreSelf: true);
1768 }
1769 return;
1770 }
1771 if (zone.IsRegion || point.cell._floor == 40)
1772 {
1773 Thing thing = ThingGen.CreateRawMaterial(row);
1774 thing.ChangeMaterial(row.alias);
1775 TrySmoothPick(point, thing, c);
1776 }
1777 else
1778 {
1779 DropBlockComponent(point, point.sourceFloor, row, recoverBlock, isPlatform: false, c);
1780 }
1781 if (!EClass._zone.IsRegion && !point.sourceFloor.components[0].Contains("chunk@soil"))
1782 {
1783 point.SetFloor(EClass.sources.floors.rows[1].DefaultMaterial.id, 40);
1784 }
1785 }
byte _floor
Definition: Cell.cs:34
bool HasBridge
Definition: Cell.cs:671
void Kick(Point p, bool ignoreSelf=false)
Definition: Chara.cs:5174
static Chara pc
Definition: EClass.cs:14
void SetBridge(int x, int z, int height=0, int idMat=0, int idBridge=0, int dir=0)
Definition: Map.cs:966
void SetFloor(int x, int z, int idMat=0, int idFloor=0)
Definition: Map.cs:951
SourceMaterial.Row matFloor
Definition: Point.cs:57
bool HasBridge
Definition: Point.cs:209
bool IsSky
Definition: Point.cs:212
SourceMaterial.Row matBridge
Definition: Point.cs:59
void SetFloor(int idMat=0, int idFloor=0)
Definition: Point.cs:887
SourceFloor.Row sourceFloor
Definition: Point.cs:65
bool HasFloor
Definition: Point.cs:207
SourceFloor.Row sourceBridge
Definition: Point.cs:67
static Thing CreateRawMaterial(SourceMaterial.Row m)
Definition: ThingGen.cs:68
virtual bool IsSkyLevel
Definition: Zone.cs:262

References Cell._floor, EClass._map, EClass._zone, SourceMaterial.Row.alias, Point.cell, Card.ChangeMaterial(), ThingGen.CreateRawMaterial(), DropBlockComponent(), SourceManager.floors, Effect.Get(), SourceMaterial.Row.GetColor(), SourceMaterial.Row.GetSoundDead(), Cell.HasBridge, Point.HasBridge, Point.HasFloor, Spatial.IsRegion, Point.IsSky, Zone.IsSkyLevel, Point.IsValid, Chara.Kick(), Point.matBridge, Point.matFloor, MineObj(), EClass.pc, Effect.Play(), Point.PlaySound(), Card.pos, EClass.rnd(), SetBridge(), Point.SetFloor(), SetFloor(), Point.sourceBridge, Point.sourceFloor, EClass.sources, TrySmoothPick(), Point.x, Point.z, and zone.

Referenced by TaskDig.OnProgressComplete().

◆ MineObj()

void Map.MineObj ( Point  point,
Task  task = null,
Chara  c = null 
)
inline

Definition at line 1827 of file Map.cs.

1828 {
1829 if (!point.IsValid || !point.HasObj)
1830 {
1831 return;
1832 }
1833 Cell cell = point.cell;
1834 SourceObj.Row sourceObj = cell.sourceObj;
1835 if (c == null && task != null)
1836 {
1837 c = task.owner;
1838 }
1839 bool num = c == null || c.IsAgent || c.IsPCFactionOrMinion;
1840 DestroyObj(point);
1841 if (num)
1842 {
1843 SourceMaterial.Row matObj_fixed = cell.matObj_fixed;
1844 if (task is TaskHarvest { IsReapSeed: not false })
1845 {
1846 int num2 = 1 + EClass.rnd(2) + ((EClass.rnd(3) == 0) ? 1 : 0);
1847 int soilCost = EClass._zone.GetSoilCost();
1848 int maxSoil = EClass._zone.MaxSoil;
1849 if (soilCost > maxSoil)
1850 {
1851 num2 -= EClass.rnd(2 + (soilCost - maxSoil) / 10);
1852 }
1853 if (num2 <= 0)
1854 {
1855 Msg.Say("seedSpoiled", cell.GetObjName());
1856 }
1857 else if (!EClass._zone.IsUserZone)
1858 {
1859 Thing t2 = TraitSeed.MakeSeed(sourceObj, TryGetPlant(cell)).SetNum(num2);
1860 EClass.pc.PickOrDrop(point, t2);
1861 }
1862 if (cell.growth.IsTree)
1863 {
1864 cell.isHarvested = true;
1865 return;
1866 }
1867 }
1868 else if (sourceObj.HasGrowth)
1869 {
1870 cell.growth.PopMineObj(c);
1871 }
1872 else
1873 {
1874 if (cell.HasBlock && (sourceObj.id == 18 || sourceObj.id == 19))
1875 {
1876 MineBlock(point, recoverBlock: false, c, mineObj: false);
1877 }
1878 switch (sourceObj.alias)
1879 {
1880 case "nest_bird":
1881 if (EClass.rnd(5) <= 1)
1882 {
1883 Pop(ThingGen.Create((EClass.rnd(10) == 0) ? "egg_fertilized" : "_egg").TryMakeRandomItem());
1884 }
1885 break;
1886 }
1887 int num3 = EClass.rnd(EClass.rnd(sourceObj.components.Length) + 1);
1888 string[] array = sourceObj.components[num3].Split('/');
1889 Thing thing = ThingGen.Create(array[0], matObj_fixed.alias);
1890 if (array.Length > 1)
1891 {
1892 thing.SetNum(EClass.rnd(array[1].ToInt()) + 1);
1893 }
1894 Pop(thing);
1895 }
1896 }
1897 SetObj(point.x, point.z);
1898 cell.gatherCount = 0;
1899 void Pop(Thing t)
1900 {
1902 {
1904 {
1905 EClass._map.PutAway(t);
1906 }
1907 else
1908 {
1909 TrySmoothPick(point, t, c);
1910 }
1911 }
1912 }
1913 }
new Chara owner
Definition: AIAct.cs:14
Thing SetNum(int a)
Definition: Card.cs:3242
Thing TryMakeRandomItem(int lv=-1)
Definition: Card.cs:4861
string GetObjName()
Definition: Cell.cs:1600
void PickOrDrop(Point p, string idThing, int idMat=-1, int num=1, bool msg=true)
Definition: Chara.cs:3900
void PopMineObj(Chara c=null)
Definition: GrowSystem.cs:509
PlantData TryGetPlant(Point p)
Definition: Map.cs:1920
void DestroyObj(Point point)
Definition: Map.cs:1812
void MineBlock(Point point, bool recoverBlock=false, Chara c=null, bool mineObj=true)
Definition: Map.cs:1655
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
bool HasGrowth
Definition: SourceObj.cs:26
string alias
Definition: TileRow.cs:12
static Thing MakeSeed(SourceObj.Row obj, PlantData plant=null)
Definition: TraitSeed.cs:77
virtual int MaxSoil
Definition: Zone.cs:507
int GetSoilCost()
Definition: Zone.cs:3433

References EClass._map, EClass._zone, Scene.actionMode, SourceMaterial.Row.alias, TileRow.alias, Point.cell, RenderRow.components, ThingGen.Create(), EClass.debug, DestroyObj(), GamePrincipal.disableUsermapBenefit, EClass.game, Cell.GetObjName(), Zone.GetSoilCost(), CoreDebug.godBuild, Cell.growth, Cell.HasBlock, SourceObj.Row.HasGrowth, Point.HasObj, TileRow.id, ActionMode.IsBuildMode, GrowSystem.IsTree, Zone.IsUserZone, Point.IsValid, TraitSeed.MakeSeed(), Cell.matObj_fixed, Zone.MaxSoil, MineBlock(), EClass.pc, Chara.PickOrDrop(), GrowSystem.PopMineObj(), Game.principal, PutAway(), EClass.rnd(), Msg.Say(), EClass.scene, Card.SetNum(), SetObj(), Cell.sourceObj, TryGetPlant(), Card.TryMakeRandomItem(), TrySmoothPick(), Point.x, and Point.z.

Referenced by ActEffect.DamageEle(), MineBlock(), MineFloor(), MineRamp(), TaskHarvest.OnCreateProgress(), TaskCut.OnProgressComplete(), and GrowSystem.OnProgressComplete().

◆ MineObjSound()

void Map.MineObjSound ( Point  point)
inline

Definition at line 1915 of file Map.cs.

1916 {
1917 point.PlaySound(point.cell.matObj.GetSoundDead(point.cell.sourceObj));
1918 }

References Point.cell, Cell.matObj, Point.PlaySound(), and Cell.sourceObj.

Referenced by Recipe.Build().

◆ MineRamp()

void Map.MineRamp ( Point  point,
int  ramp,
bool  recoverBlock = false 
)
inline

Definition at line 1722 of file Map.cs.

1723 {
1724 if (point.IsValid && point.cell.HasFullBlock)
1725 {
1726 SourceMaterial.Row matBlock = point.matBlock;
1727 byte block = point.cell._block;
1728 Effect.Get("smoke").Play(point);
1729 Effect.Get("mine").Play(point).SetParticleColor(point.matBlock.GetColor())
1730 .Emit(10 + EClass.rnd(10));
1731 MineObj(point);
1732 int rampDir = EClass._map.GetRampDir(point.x, point.z, EClass.sources.blocks.rows[ramp].tileType);
1733 RemoveLonelyRamps(point.cell);
1734 SetBlock(point.x, point.z, point.cell._blockMat, ramp, rampDir);
1735 DropBlockComponent(point, EClass.sources.blocks.rows[block], matBlock, recoverBlock);
1736 }
1737 }
byte _blockMat
Definition: Cell.cs:32
int GetRampDir(int x, int z, TileType blockType=null)
Definition: Map.cs:2131

References Cell._block, Cell._blockMat, EClass._map, block, SourceManager.blocks, Point.cell, DropBlockComponent(), Effect.Get(), GetRampDir(), Cell.HasFullBlock, Point.IsValid, Point.matBlock, MineObj(), Effect.Play(), RemoveLonelyRamps(), EClass.rnd(), SetBlock(), EClass.sources, Point.x, and Point.z.

Referenced by TaskMine.OnProgressComplete().

◆ ModFire()

void Map.ModFire ( int  x,
int  z,
int  amount 
)
inline

Definition at line 1166 of file Map.cs.

1167 {
1168 Cell cell = cells[x, z];
1169 if (amount <= 0 || (!cell.IsTopWaterAndNoSnow && !cell.IsSnowTile))
1170 {
1171 if (cell.effect == null && amount > 0)
1172 {
1173 SE.Play("fire");
1174 }
1175 int num = amount + (cell.effect?.FireAmount ?? 0);
1176 if (num > 20)
1177 {
1178 num = 20;
1179 }
1180 if (num <= 0)
1181 {
1182 cell.effect = null;
1183 return;
1184 }
1185 cell.effect = new CellEffect
1186 {
1187 id = 3,
1188 amount = num
1189 };
1191 }
1192 }
int FireAmount
Definition: CellEffect.cs:150
bool IsSnowTile
Definition: Cell.cs:782
bool IsTopWaterAndNoSnow
Definition: Cell.cs:712

References cells, Cell.effect, effectManager, CellEffect.FireAmount, LogicalPointManager.GetOrCreate(), Cell.IsSnowTile, Cell.IsTopWaterAndNoSnow, MapBounds.x, and MapBounds.z.

Referenced by RecipeCard.Craft(), and Point.ModFire().

◆ ModLiquid()

void Map.ModLiquid ( int  x,
int  z,
int  amount 
)
inline

Definition at line 1500 of file Map.cs.

1501 {
1502 Cell cell = cells[x, z];
1503 if (!cell.IsTopWaterAndNoSnow && cell.effect != null)
1504 {
1505 cell.effect.amount += amount;
1506 if (cell.effect.amount <= 0)
1507 {
1508 cell.effect = null;
1509 }
1510 }
1511 }
int amount
Definition: CellEffect.cs:26

References CellEffect.amount, cells, Cell.effect, Cell.IsTopWaterAndNoSnow, MapBounds.x, and MapBounds.z.

Referenced by GameUpdater.SurfaceUpdater.FixedUpdate().

◆ MoveCard()

void Map.MoveCard ( Point  p,
Card  t 
)
inline

Definition at line 835 of file Map.cs.

836 {
837 _AddCard(p.x, p.z, t, onAddToZone: false);
838 }

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

Referenced by Chara._Move(), Card._Move(), Card.MoveImmediate(), ResetEditorPos(), Resize(), AI_Trolley.Run(), and Chara.SyncRide().

◆ OnCardAddedToZone()

void Map.OnCardAddedToZone ( Card  t,
int  x,
int  z 
)
inline

Definition at line 800 of file Map.cs.

801 {
802 if (t.isChara)
803 {
804 charas.Add(t.Chara);
805 }
806 else
807 {
808 things.Add(t.Thing);
809 }
811 if (t.isChara && new Point(x, z).cell.HasFullBlock)
812 {
813 DestroyBlock(x, z);
814 }
815 _AddCard(x, z, t, onAddToZone: true);
817 }
virtual Thing Thing
Definition: Card.cs:1934
void DestroyBlock(int x, int z)
Definition: Map.cs:2002
virtual void OnAddedToZone()
Definition: Trait.cs:634

References _AddCard(), ActPlan.List.Add(), Card.Chara, charas, DestroyBlock(), Card.isChara, Trait.OnAddedToZone(), PropsManager.OnCardAddedToZone(), props, Card.Thing, things, Card.trait, MapBounds.x, and MapBounds.z.

Referenced by Zone.AddCard().

◆ OnCardRemovedFromZone()

void Map.OnCardRemovedFromZone ( Card  t)
inline

Definition at line 819 of file Map.cs.

820 {
823 _RemoveCard(t);
824 t.parent = null;
825 if (t.isChara)
826 {
827 charas.Remove(t.Chara);
828 }
829 else
830 {
831 things.Remove(t.Thing);
832 }
833 }
void SetPlaceState(PlaceState newState, bool byPlayer=false)
Definition: Card.cs:3454
virtual void OnRemovedFromZone()
Definition: Trait.cs:638

References _RemoveCard(), Card.Chara, charas, Card.isChara, Trait.OnRemovedFromZone(), Card.SetPlaceState(), Card.Thing, things, and Card.trait.

Referenced by Zone.RemoveCard().

◆ OnDeactivate()

void Map.OnDeactivate ( )
inline

Definition at line 205 of file Map.cs.

206 {
207 charas.ForeachReverse(delegate(Chara c)
208 {
209 c.ai = new NoGoal();
210 if (c.IsGlobal)
211 {
212 zone.RemoveCard(c);
213 c.currentZone = zone;
214 }
215 });
216 foreach (Thing thing in things)
217 {
218 if (thing.renderer.hasActor)
219 {
220 thing.renderer.KillActor();
221 }
222 }
224 }
void KillActor()
CardRenderer renderer
Definition: Card.cs:57
override bool IsGlobal
Definition: Chara.cs:595
Definition: NoGoal.cs:4
void ClearMapHighlights()
Definition: Player.cs:2197
void RemoveCard(Card t)
Definition: Zone.cs:1933

References charas, Player.ClearMapHighlights(), CardRenderer.hasActor, Chara.IsGlobal, CardRenderer.KillActor(), EClass.player, Zone.RemoveCard(), Card.renderer, things, and zone.

Referenced by Zone.Deactivate().

◆ OnDeserialized()

void Map.OnDeserialized ( StreamingContext  context)
inlineprivate

Definition at line 148 of file Map.cs.

149 {
150 bits.Bits = (uint)_bits;
151 }
int _bits
Definition: Map.cs:22

References _bits.

◆ OnImport()

void Map.OnImport ( ZoneExportData  data)
inline

Definition at line 710 of file Map.cs.

711 {
712 tasks = new TaskManager();
713 data.serializedCards.Restore(this, data.orgMap, addToZone: false);
714 }
TaskManager tasks
Definition: Map.cs:34
void Restore(Map map, Map orgMap, bool addToZone, PartialMap partial=null)
SerializedCards serializedCards

References ZoneExportData.orgMap, SerializedCards.Restore(), ZoneExportData.serializedCards, and tasks.

Referenced by Zone.Activate().

◆ OnLoad()

void Map.OnLoad ( )
inline

Definition at line 704 of file Map.cs.

705 {
706 rooms.OnLoad();
707 tasks.OnLoad();
708 }
void OnLoad()
Definition: RoomManager.cs:26
void OnLoad()
Definition: TaskManager.cs:66

References RoomManager.OnLoad(), TaskManager.OnLoad(), rooms, and tasks.

◆ OnSerializing() [1/2]

virtual void Map.OnSerializing ( )
inlineprotectedvirtual

Definition at line 143 of file Map.cs.

144 {
145 }

◆ OnSerializing() [2/2]

void Map.OnSerializing ( StreamingContext  context)
inlineprivate

Definition at line 138 of file Map.cs.

139 {
140 _bits = (int)bits.Bits;
141 }
BitArray32 bits
Definition: Map.cs:75
uint Bits
Definition: BitArray32.cs:6

References _bits, bits, and BitArray32.Bits.

◆ OnSetBlockOrDoor()

void Map.OnSetBlockOrDoor ( int  x,
int  z 
)
inline

Definition at line 1018 of file Map.cs.

1019 {
1020 new Point(x, z);
1021 TryRemoveRoom(x, z);
1022 if (x > 0)
1023 {
1024 TryRemoveRoom(x - 1, z);
1025 }
1026 if (x < Size - 1)
1027 {
1028 TryRemoveRoom(x + 1, z);
1029 }
1030 if (z > 0)
1031 {
1032 TryRemoveRoom(x, z - 1);
1033 }
1034 if (z < Size - 1)
1035 {
1036 TryRemoveRoom(x, z + 1);
1037 }
1038 if (x > 0 && z < Size - 1)
1039 {
1040 TryRemoveRoom(x - 1, z + 1);
1041 }
1042 roomHash.Clear();
1043 TryAddRoom(x, z);
1044 if (x > 0)
1045 {
1046 TryAddRoom(x - 1, z);
1047 }
1048 if (x < Size - 1)
1049 {
1050 TryAddRoom(x + 1, z);
1051 }
1052 if (z > 0)
1053 {
1054 TryAddRoom(x, z - 1);
1055 }
1056 if (z < Size - 1)
1057 {
1058 TryAddRoom(x, z + 1);
1059 }
1060 if (x > 0 && z < Size - 1)
1061 {
1062 TryAddRoom(x - 1, z + 1);
1063 }
1064 }
HashSet< int > roomHash
Definition: Map.cs:105
void TryRemoveRoom(int x, int z)
Definition: Map.cs:1066
void TryAddRoom(int x, int z)
Definition: Map.cs:1078

References roomHash, MapBounds.Size, TryAddRoom(), TryRemoveRoom(), MapBounds.x, and MapBounds.z.

Referenced by SerializedCards.Restore(), SetBlock(), and Card.SetPlaceState().

◆ PutAway()

bool Map.PutAway ( Card  c)
inline

Definition at line 2510 of file Map.cs.

2511 {
2513 {
2514 return false;
2515 }
2516 if (c.isChara)
2517 {
2519 {
2520 return false;
2521 }
2522 c.Destroy();
2523 return true;
2524 }
2525 Thing thing = c.Thing;
2526 if (thing.parent != null)
2527 {
2528 thing.parent.RemoveCard(thing);
2529 }
2530 thing.isMasked = false;
2531 thing.isRoofItem = false;
2532 if (EClass._zone.IsPCFaction && EClass._map.props.installed.traits.GetRandomThing<TraitSpotStockpile>() != null)
2533 {
2534 EClass._zone.TryAddThingInSpot<TraitSpotStockpile>(thing);
2535 return true;
2536 }
2537 if (EClass.debug.enable)
2538 {
2540 return true;
2541 }
2542 EClass.pc.Pick(thing, msg: false);
2543 return true;
2544 }
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:2901
ICardParent parent
Definition: Card.cs:51
void Destroy()
Definition: Card.cs:4538
virtual bool IsPC
Definition: Card.cs:2019
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
Definition: Chara.cs:3920
bool enable
Definition: CoreDebug.cs:285
Thing GetOrCreateDebugContainer()
Definition: CoreDebug.cs:734
bool ignoreBuildRule
Definition: CoreDebug.cs:184
TraitManager traits
Definition: Props.cs:18
virtual bool CanOnlyCarry
Definition: Trait.cs:283
void RemoveCard(Card c)

References EClass._map, EClass._zone, Card.AddThing(), Trait.CanOnlyCarry, EClass.debug, Card.Destroy(), CoreDebug.enable, CoreDebug.GetOrCreateDebugContainer(), CoreDebug.ignoreBuildRule, PropsManager.installed, Card.isChara, Card.IsPC, Zone.IsPCFaction, Card.parent, EClass.pc, Chara.Pick(), props, ICardParent.RemoveCard(), Card.Thing, Card.trait, and Props.traits.

Referenced by DropBlockComponent(), MineObj(), AM_Deconstruct.Perform(), and AM_MoveInstalled.TryPutAway().

◆ Quake()

void Map.Quake ( )
inline

Definition at line 2401 of file Map.cs.

2402 {
2403 Point point = new Point();
2404 int num;
2405 for (num = 0; num < Size; num++)
2406 {
2407 int num2;
2408 for (num2 = 0; num2 < Size; num2++)
2409 {
2410 point.x = num;
2411 point.z = num2;
2412 point.Copy().Animate(AnimeID.Quake, animeBlock: true);
2413 num2 += EClass.rnd(2);
2414 }
2415 num += EClass.rnd(2);
2416 }
2417 }
AnimeID
Definition: AnimeID.cs:2
Point Copy()
Definition: Point.cs:467
void Animate(AnimeID id, bool animeBlock=false)
Definition: Point.cs:1266

References Point.Animate(), Point.Copy(), EClass.rnd(), and MapBounds.Size.

◆ QuickRefreshTile()

void Map.QuickRefreshTile ( int  x,
int  z 
)
inline

Definition at line 2116 of file Map.cs.

2117 {
2118 Cell cell = cells[x, z];
2119 Cell cell2 = ((x > 0) ? cells[x - 1, z] : Cell.Void);
2120 Cell cell3 = ((x + 1 < Size) ? cells[x + 1, z] : Cell.Void);
2121 Cell cell4 = ((z > 0) ? cells[x, z - 1] : Cell.Void);
2122 Cell cell5 = ((z + 1 < Size) ? cells[x, z + 1] : Cell.Void);
2123 Cell cell6 = ((x > 0 && z > 0) ? cells[x - 1, z - 1] : Cell.Void);
2124 Cell cell7 = ((x + 1 < Size && z > 0) ? cells[x + 1, z - 1] : Cell.Void);
2125 Cell cell8 = ((x > 0 && z + 1 < Size) ? cells[x - 1, z + 1] : Cell.Void);
2126 Cell cell9 = ((x + 1 < Size && z + 1 < Size) ? cells[x + 1, z + 1] : Cell.Void);
2127 cell.isSurrounded4d = cell2.HasFullBlock && cell3.HasFullBlock && cell4.HasFullBlock && cell5.HasFullBlock;
2128 cell.isSurrounded = cell.isSurrounded4d && cell6.HasFullBlock && cell7.HasFullBlock && cell8.HasFullBlock && cell9.HasFullBlock;
2129 }
static Cell Void
Definition: Cell.cs:10

References cells, Cell.HasFullBlock, MapBounds.Size, Cell.Void, MapBounds.x, and MapBounds.z.

Referenced by MapGen.GenerateTerrain().

◆ RefreshAllTiles()

void Map.RefreshAllTiles ( )
inline

Definition at line 2086 of file Map.cs.

2087 {
2088 for (int i = 0; i < Size; i++)
2089 {
2090 for (int j = 0; j < Size; j++)
2091 {
2092 cells[i, j].Refresh();
2093 }
2094 }
2095 }
void Refresh()
Definition: Cell.cs:1148

References cells, Cell.Refresh(), and MapBounds.Size.

Referenced by GameDate.AdvanceMonth(), PartialMap.Apply(), ZoneInspector.FillUtil.FlattenHeight(), MapGenDungen.OnGenerateTerrain(), MapGenRegion.OnGenerateTerrain(), Zone.OnSimulateMonth(), MapGen.Populate(), ZoneInspector.RefreshAll(), and HotItemContext.Show().

◆ RefreshFOV()

void Map.RefreshFOV ( int  x,
int  z,
int  radius = 6,
bool  recalculate = false 
)
inline

Definition at line 923 of file Map.cs.

924 {
925 ForeachSphere(x, z, radius, delegate(Point p)
926 {
927 List<Card> list = p.ListCards();
928 if (recalculate)
929 {
930 foreach (Card item in list)
931 {
932 item.RecalculateFOV();
933 }
934 return;
935 }
936 foreach (Card item2 in list)
937 {
938 item2.CalculateFOV();
939 }
940 });
941 }

References Card.CalculateFOV(), ForeachSphere(), item, Point.ListCards(), MapBounds.x, and MapBounds.z.

Referenced by GrowSystem.Grow(), MineBlock(), WidgetArtTool.OnActivate(), TaskBuild.OnProgressComplete(), TaskMoveInstalled.OnProgressComplete(), TraitDoor.ToggleDoor(), and TraitDoorSwing.ToggleDoor().

◆ RefreshFOVAll()

void Map.RefreshFOVAll ( )
inline

Definition at line 943 of file Map.cs.

944 {
945 foreach (Card item in ((IEnumerable<Card>)EClass._map.things).Concat((IEnumerable<Card>)EClass._map.charas))
946 {
947 item.RecalculateFOV();
948 }
949 }

References EClass._map, charas, item, and things.

Referenced by ColorProfile.OnValidate().

◆ RefreshNeighborTiles()

void Map.RefreshNeighborTiles ( int  x,
int  z 
)
inline

Definition at line 2097 of file Map.cs.

2098 {
2099 cells[x, z].Refresh();
2100 for (int i = x - 2; i < x + 3; i++)
2101 {
2102 if (i < 0 || i >= Size)
2103 {
2104 continue;
2105 }
2106 for (int j = z - 2; j < z + 3; j++)
2107 {
2108 if (j >= 0 && j < Size && (x != i || z != j))
2109 {
2110 cells[i, j].Refresh();
2111 }
2112 }
2113 }
2114 }

References cells, Cell.Refresh(), MapBounds.Size, MapBounds.x, and MapBounds.z.

Referenced by AddDecal(), Burn(), Point.RefreshNeighborTiles(), SetBlock(), SetBridge(), SetDecal(), SetFloor(), SetObj(), and SetSeen().

◆ RefreshShadow()

void Map.RefreshShadow ( int  x,
int  z 
)
inline

Definition at line 1787 of file Map.cs.

1788 {
1789 }

Referenced by MineBlock(), and TaskBuild.OnProgressComplete().

◆ RefreshSingleTile()

void Map.RefreshSingleTile ( int  x,
int  z 
)
inline

◆ RefreshSunMap()

void Map.RefreshSunMap ( )
inline

Definition at line 2700 of file Map.cs.

2701 {
2702 if (!isDirtySunMap)
2703 {
2704 return;
2705 }
2706 sunMap.Clear();
2707 foreach (Card sun in EClass._map.props.installed.traits.suns)
2708 {
2709 foreach (Point item in sun.trait.ListPoints(null, onlyPassable: false))
2710 {
2711 sunMap.Add(item.index);
2712 }
2713 }
2714 isDirtySunMap = false;
2715 }
static bool isDirtySunMap
Definition: Map.cs:16
static HashSet< int > sunMap
Definition: Map.cs:14
TraitMap suns
Definition: TraitManager.cs:14
virtual List< Point > ListPoints(Point center=null, bool onlyPassable=true)
Definition: Trait.cs:707

References EClass._map, PropsManager.installed, isDirtySunMap, item, Trait.ListPoints(), props, sunMap, TraitManager.suns, Card.trait, and Props.traits.

Referenced by GameUpdater.Update().

◆ Reload()

void Map.Reload ( )
inline

Definition at line 310 of file Map.cs.

311 {
312 rooms = new RoomManager();
313 SetReference();
314 string id = Game.id;
315 EClass.game.Save();
316 EClass.scene.Init(Scene.Mode.None);
318 RevealAll();
319 TweenUtil.Tween(0.1f, null, delegate
320 {
321 ReloadRoom();
322 });
323 }
Definition: Game.cs:8
static void Load(string id, bool cloud)
Definition: Game.cs:313
static string id
Definition: Game.cs:147
bool Save(bool isAutoSave=false, bool silent=false)
Definition: Game.cs:960
bool isCloud
Definition: Game.cs:239
void ReloadRoom()
Definition: Map.cs:325
void RevealAll(bool reveal=true)
Definition: Map.cs:899
Definition: Scene.cs:8
void Init(Mode newMode)
Definition: Scene.cs:172
Mode
Definition: Scene.cs:10

References EClass.game, Game.id, Scene.Init(), Game.isCloud, Game.Load(), ReloadRoom(), RevealAll(), rooms, Game.Save(), EClass.scene, and SetReference().

Referenced by Resize(), and Shift().

◆ ReloadRoom()

void Map.ReloadRoom ( )
inline

Definition at line 325 of file Map.cs.

326 {
327 List<Thing> list = new List<Thing>();
328 foreach (Thing thing in things)
329 {
330 if (thing.trait.IsDoor)
331 {
332 list.Add(thing);
333 }
334 }
335 foreach (Thing item in list)
336 {
337 Point pos = item.pos;
339 EClass._zone.AddCard(item, pos);
340 item.Install();
341 }
343 }
void RefreshAll()
Definition: RoomManager.cs:43
virtual bool IsDoor
Definition: Trait.cs:56

References EClass._zone, Zone.AddCard(), Trait.IsDoor, item, RoomManager.RefreshAll(), Zone.RemoveCard(), rooms, things, and Card.trait.

Referenced by MapGenDungen.OnGenerateTerrain(), and Reload().

◆ RemoveLonelyRamps()

void Map.RemoveLonelyRamps ( Cell  cell)
inline

Definition at line 1988 of file Map.cs.

1989 {
1990 for (int i = 0; i < 4; i++)
1991 {
1992 Cell dependedRamp = GetDependedRamp(cell);
1993 if (dependedRamp != null)
1994 {
1995 MineBlock(dependedRamp.GetPoint());
1996 continue;
1997 }
1998 break;
1999 }
2000 }
Point GetPoint()
Definition: Cell.cs:1101
Cell GetDependedRamp(Cell cell)
Definition: Map.cs:2168

References GetDependedRamp(), Cell.GetPoint(), and MineBlock().

Referenced by MineBlock(), and MineRamp().

◆ RemovePlant()

void Map.RemovePlant ( Point  pos)
inline

Definition at line 1940 of file Map.cs.

1941 {
1942 plants.Remove(pos.index);
1943 }

References Point.index, and plants.

◆ Reset()

void Map.Reset ( )
inline

Definition at line 345 of file Map.cs.

346 {
347 for (int i = 0; i < Size; i++)
348 {
349 for (int j = 0; j < Size; j++)
350 {
351 cells[i, j].Reset();
352 }
353 }
354 SetReference();
355 }
void Reset()
Definition: Cell.cs:1522

References cells, Cell.Reset(), SetReference(), and MapBounds.Size.

Referenced by MapGen.OnGenerateTerrain().

◆ ResetEditorPos()

void Map.ResetEditorPos ( )
inline

Definition at line 357 of file Map.cs.

358 {
360 foreach (Chara chara in charas)
361 {
362 if (chara.isPlayerCreation && chara.orgPos != null)
363 {
364 MoveCard(chara.orgPos, chara);
365 }
366 }
367 foreach (Thing thing in things)
368 {
369 if (thing.trait is TraitDoor)
370 {
371 (thing.trait as TraitDoor).ForceClose();
372 }
373 }
374 }
bool isPlayerCreation
Definition: Card.cs:466
Point orgPos
Definition: Chara.cs:21
void MoveCard(Point p, Card t)
Definition: Map.cs:835
void Revive()
Definition: Zone.cs:1062

References EClass._zone, charas, Card.isPlayerCreation, MoveCard(), Chara.orgPos, Zone.Revive(), things, and Card.trait.

Referenced by Zone.Export(), and BuildMenu.OnActivate().

◆ Resize()

void Map.Resize ( int  newSize)
inline

Definition at line 226 of file Map.cs.

227 {
228 Point p = new Point(0, 0);
229 foreach (Thing thing in EClass._map.things)
230 {
231 if (thing.pos.x >= newSize || thing.pos.z >= newSize)
232 {
233 MoveCard(p, thing);
234 }
235 }
236 foreach (Chara chara in EClass._map.charas)
237 {
238 if (chara.pos.x >= newSize || chara.pos.z >= newSize)
239 {
240 MoveCard(p, chara);
241 }
242 }
243 Size = (bounds.Size = newSize);
244 maxX = (maxZ = Size);
245 cells = Util.ResizeArray(EClass._map.cells, newSize, newSize, (int x, int y) => new Cell
246 {
247 x = (byte)x,
248 z = (byte)y,
249 isSeen = true
250 });
251 Reload();
252 }
void Reload()
Definition: Map.cs:310
Definition: Util.cs:10

References EClass._map, cells, charas, MapBounds.maxX, MapBounds.maxZ, MoveCard(), Card.pos, Reload(), MapBounds.Size, things, Util, MapBounds.x, Point.x, MapBounds.z, and Point.z.

Referenced by ZoneInspector.ResizeUtil.Apply(), and MapGen.OnGenerateTerrain().

◆ Reveal()

void Map.Reveal ( Point  center,
int  power = 100 
)
inline

Definition at line 912 of file Map.cs.

913 {
914 ForeachSphere(center.x, center.z, 10 + power / 5, delegate(Point p)
915 {
916 if (EClass.rnd(power) >= Mathf.Min(p.Distance(center) * 10, power - 10))
917 {
918 EClass._map.SetSeen(p.x, p.z);
919 }
920 });
921 }
int Distance(Point p)
Definition: Point.cs:953

References Point.Distance(), ForeachSphere(), EClass.rnd(), Point.x, and Point.z.

Referenced by ActEffect.Proc().

◆ RevealAll()

void Map.RevealAll ( bool  reveal = true)
inline

Definition at line 899 of file Map.cs.

900 {
901 for (int i = 0; i < Size; i++)
902 {
903 for (int j = 0; j < Size; j++)
904 {
905 EClass._map.SetSeen(i, j, reveal, refresh: false);
906 }
907 }
910 }
bool revealed
Definition: Map.cs:103
void SetSeen(int x, int z, bool seen=true, bool refresh=true)
Definition: Map.cs:886
static void UpdateMap(List< Cell > newPoints)

References EClass._map, revealed, SetSeen(), MapBounds.Size, and WidgetMinimap.UpdateMap().

Referenced by BuildMenu.Activate(), Zone.ClaimZone(), ZoneProfile.Generate(), DramaManager.ParseLine(), ActEffect.Proc(), Reload(), and CoreDebug.ToggleRevealMap().

◆ Save()

void Map.Save ( string  path,
ZoneExportData  export = null,
PartialMap  partial = null 
)
inline

Definition at line 376 of file Map.cs.

377 {
379 Debug.Log("#io saving map:" + path);
380 IO.CreateDirectory(path);
381 int num = 0;
382 int num2 = 0;
383 int num3 = Size;
384 int num4 = Size;
385 if (partial != null)
386 {
387 num = partial.offsetX;
388 num2 = partial.offsetZ;
389 num3 = partial.w;
390 num4 = partial.h;
391 }
392 int num5 = num3 * num4;
393 byte[] array = new byte[num5];
394 byte[] array2 = new byte[num5];
395 byte[] array3 = new byte[num5];
396 byte[] array4 = new byte[num5];
397 byte[] array5 = new byte[num5];
398 byte[] array6 = new byte[num5];
399 byte[] array7 = new byte[num5];
400 byte[] array8 = new byte[num5];
401 byte[] array9 = new byte[num5];
402 byte[] array10 = new byte[num5];
403 byte[] array11 = new byte[num5];
404 byte[] array12 = new byte[num5];
405 byte[] array13 = new byte[num5];
406 byte[] array14 = new byte[num5];
407 byte[] array15 = new byte[num5];
408 byte[] array16 = new byte[num5];
409 byte[] array17 = new byte[num5];
410 byte[] array18 = new byte[num5];
411 byte[] array19 = new byte[num5];
412 cellEffects.Clear();
413 int num6 = 0;
414 for (int i = num; i < num + num3; i++)
415 {
416 for (int j = num2; j < num2 + num4; j++)
417 {
418 Cell cell = cells[i, j];
419 array[num6] = cell.objVal;
420 array3[num6] = cell._blockMat;
421 array2[num6] = cell._block;
422 array5[num6] = cell._floorMat;
423 array4[num6] = cell._floor;
424 array6[num6] = cell.obj;
425 array7[num6] = cell.objMat;
426 array8[num6] = cell.decal;
427 array9[num6] = cell._dirs;
428 array12[num6] = cell.height;
429 array13[num6] = cell._bridge;
430 array14[num6] = cell._bridgeMat;
431 array15[num6] = cell.bridgeHeight;
432 array17[num6] = cell._roofBlockDir;
433 array18[num6] = cell._roofBlock;
434 array19[num6] = cell._roofBlockMat;
435 array16[num6] = cell.bridgePillar;
436 array10[num6] = array10[num6].SetBit(1, cell.isSeen);
437 array10[num6] = array10[num6].SetBit(2, cell.isHarvested);
438 array10[num6] = array10[num6].SetBit(3, cell.impassable);
439 array10[num6] = array10[num6].SetBit(4, cell.isModified);
440 array10[num6] = array10[num6].SetBit(5, cell.isClearSnow);
441 array10[num6] = array10[num6].SetBit(6, cell.isForceFloat);
442 array10[num6] = array10[num6].SetBit(7, cell.isToggleWallPillar);
443 array11[num6] = array11[num6].SetBit(0, cell.isWatered);
444 array11[num6] = array11[num6].SetBit(1, cell.isObjDyed);
445 array11[num6] = array11[num6].SetBit(2, cell.crossWall);
446 if (cell.effect != null)
447 {
448 cellEffects[j * num4 + i] = cell.effect;
449 }
450 num6++;
451 }
452 }
454 IO.WriteLZ4(path + "objVals", array);
455 IO.WriteLZ4(path + "blocks", array2);
456 IO.WriteLZ4(path + "blockMats", array3);
457 IO.WriteLZ4(path + "floors", array4);
458 IO.WriteLZ4(path + "floorMats", array5);
459 IO.WriteLZ4(path + "objs", array6);
460 IO.WriteLZ4(path + "objMats", array7);
461 IO.WriteLZ4(path + "decal", array8);
462 IO.WriteLZ4(path + "flags", array10);
463 IO.WriteLZ4(path + "flags2", array11);
464 IO.WriteLZ4(path + "dirs", array9);
465 IO.WriteLZ4(path + "heights", array12);
466 IO.WriteLZ4(path + "bridges", array13);
467 IO.WriteLZ4(path + "bridgeMats", array14);
468 IO.WriteLZ4(path + "bridgeHeights", array15);
469 IO.WriteLZ4(path + "bridgePillars", array16);
470 IO.WriteLZ4(path + "roofBlocks", array18);
471 IO.WriteLZ4(path + "roofBlockMats", array19);
472 IO.WriteLZ4(path + "roofBlockDirs", array17);
473 things.Sort((Thing a, Thing b) => a.stackOrder - b.stackOrder);
474 if (export == null)
475 {
476 foreach (Chara chara in charas)
477 {
478 if (!chara.IsGlobal)
479 {
480 serializedCharas.Add(chara);
481 }
482 }
483 GameIO.SaveFile(path + "map", this);
484 }
485 else
486 {
487 export.serializedCards.cards.Clear();
488 if (partial == null)
489 {
490 MapExportSetting mapExportSetting = exportSetting ?? new MapExportSetting();
491 foreach (Chara chara2 in charas)
492 {
493 if (export.usermap)
494 {
495 if ((!mapExportSetting.clearLocalCharas || chara2.IsPCFactionOrMinion) && !chara2.trait.IsUnique && !chara2.IsPC)
496 {
497 export.serializedCards.Add(chara2);
498 }
499 }
500 else if (!chara2.IsGlobal && chara2.isPlayerCreation)
501 {
502 export.serializedCards.Add(chara2);
503 }
504 }
505 foreach (Thing thing in things)
506 {
507 if (thing.isPlayerCreation && thing.c_altName != "DebugContainer")
508 {
509 export.serializedCards.Add(thing);
510 }
511 }
512 }
513 else
514 {
515 foreach (Thing thing2 in things)
516 {
517 if ((ActionMode.Copy.IsActive || thing2.trait.CanCopyInBlueprint) && thing2.pos.x >= num && thing2.pos.z >= num2 && thing2.pos.x < num + num3 && thing2.pos.z < num2 + num4)
518 {
519 export.serializedCards.Add(thing2);
520 }
521 }
522 }
523 List<Thing> list = things;
524 things = new List<Thing>();
525 GameIO.SaveFile(path + "map", this);
526 things = list;
527 }
528 serializedCharas.Clear();
529 }
static AM_Copy Copy
Definition: ActionMode.cs:45
bool IsActive
Definition: ActionMode.cs:121
string c_altName
Definition: Card.cs:1493
byte objMat
Definition: Cell.cs:42
bool isHarvested
Definition: Cell.cs:330
bool isClearSnow
Definition: Cell.cs:450
byte objVal
Definition: Cell.cs:40
byte _floorMat
Definition: Cell.cs:36
byte _roofBlock
Definition: Cell.cs:50
byte height
Definition: Cell.cs:72
bool isWatered
Definition: Cell.cs:342
byte _roofBlockDir
Definition: Cell.cs:54
bool isToggleWallPillar
Definition: Cell.cs:558
byte _roofBlockMat
Definition: Cell.cs:52
bool isSeen
Definition: Cell.cs:282
byte obj
Definition: Cell.cs:38
bool isForceFloat
Definition: Cell.cs:306
bool impassable
Definition: Cell.cs:402
bool crossWall
Definition: Cell.cs:630
bool isObjDyed
Definition: Cell.cs:618
byte bridgeHeight
Definition: Cell.cs:74
byte _dirs
Definition: Cell.cs:28
byte bridgePillar
Definition: Cell.cs:82
new TraitChara trait
Definition: Chara.cs:488
override bool IsPC
Definition: Chara.cs:597
Definition: GameIO.cs:10
static void SaveFile(string path, object obj)
Definition: GameIO.cs:254
Compression
Definition: IO.cs:13
static void WriteLZ4(string _path, byte[] _bytes)
Definition: IO.cs:134
static void CreateDirectory(string path)
Definition: IO.cs:333
List< Chara > serializedCharas
Definition: Map.cs:43
MapExportSetting exportSetting
Definition: Map.cs:73
int offsetX
Definition: PartialMap.cs:31
int offsetZ
Definition: PartialMap.cs:34
void Add(Card c)
List< Data > cards
int stackOrder
Definition: Thing.cs:13
virtual bool IsUnique
Definition: TraitChara.cs:33
virtual bool CanCopyInBlueprint
Definition: Trait.cs:148

References Cell._block, Cell._blockMat, Cell._bridge, Cell._bridgeMat, Cell._dirs, Cell._floor, Cell._floorMat, Cell._roofBlock, Cell._roofBlockDir, Cell._roofBlockMat, Cell.bridgeHeight, Cell.bridgePillar, Card.c_altName, Trait.CanCopyInBlueprint, cellEffects, cells, charas, compression, ActionMode.Copy, EClass.core, Cell.crossWall, Debug, Cell.decal, Cell.effect, exportSetting, Cell.height, Cell.impassable, ActionMode.IsActive, Cell.isClearSnow, Cell.isForceFloat, Chara.IsGlobal, Cell.isHarvested, Cell.isModified, Cell.isObjDyed, Chara.IsPC, Card.IsPCFactionOrMinion, Card.isPlayerCreation, Cell.isSeen, Cell.isToggleWallPillar, TraitChara.IsUnique, Cell.isWatered, Cell.obj, Cell.objMat, Cell.objVal, Card.pos, GameIO.SaveFile(), serializedCharas, MapBounds.Size, Thing.stackOrder, things, Card.trait, Chara.trait, version, BaseCore.version, Point.x, and Point.z.

Referenced by Zone._OnBeforeSave(), and Zone.Export().

◆ SetBlock() [1/2]

void Map.SetBlock ( int  x,
int  z,
int  idMat,
int  idBlock,
int  dir 
)
inline

Definition at line 995 of file Map.cs.

996 {
997 Cell cell = cells[x, z];
998 bool hasFloodBlock = cell.HasFloodBlock;
999 cell._blockMat = (byte)idMat;
1000 cell._block = (byte)idBlock;
1001 cell.blockDir = dir;
1002 if (cell.effect == null || !cell.effect.IsFire)
1003 {
1004 cell.effect = null;
1005 }
1006 cell.isToggleWallPillar = false;
1007 if (cell.room != null)
1008 {
1009 cell.room.SetDirty();
1010 }
1011 if (hasFloodBlock || cell.HasFloodBlock)
1012 {
1014 }
1016 }
bool IsFire
Definition: CellEffect.cs:135
bool HasFloodBlock
Definition: Cell.cs:1017
void OnSetBlockOrDoor(int x, int z)
Definition: Map.cs:1018

References cells, Cell.effect, Cell.HasFloodBlock, CellEffect.IsFire, OnSetBlockOrDoor(), RefreshNeighborTiles(), Cell.room, Room.SetDirty(), MapBounds.x, and MapBounds.z.

◆ SetBlock() [2/2]

void Map.SetBlock ( int  x,
int  z,
int  idMat = 0,
int  idBlock = 0 
)
inline

Definition at line 990 of file Map.cs.

991 {
992 SetBlock(x, z, idMat, idBlock, 0);
993 }

References SetBlock(), MapBounds.x, and MapBounds.z.

Referenced by Recipe.Build(), ZoneInspector.FillUtil.ClearBlock(), DestroyBlock(), ZoneInspector.FillUtil.FillBlock(), MineRamp(), Point.SetBlock(), and SetBlock().

◆ SetBlockDir()

void Map.SetBlockDir ( int  x,
int  z,
int  dir 
)
inline

Definition at line 1159 of file Map.cs.

1160 {
1161 Cell cell = cells[x, z];
1162 cell._block = (byte)cell.sourceBlock.id;
1163 cell.blockDir = dir;
1164 }

References Cell.blockDir, cells, Cell.sourceBlock, MapBounds.x, and MapBounds.z.

Referenced by Recipe.Build().

◆ SetBounds() [1/2]

void Map.SetBounds ( int  size)
inline

Definition at line 2309 of file Map.cs.

2310 {
2311 if (size > Size / 2 + 1)
2312 {
2313 size = Size / 2 - 1;
2314 }
2315 bounds.SetBounds(Size / 2 - size, Size / 2 - size, Size / 2 + size, Size / 2 + size);
2316 }

References bounds, MapBounds.SetBounds(), and MapBounds.Size.

Referenced by CreateNew(), Load(), and MapGen.OnGenerateTerrain().

◆ SetBounds() [2/2]

void Map.SetBounds ( MapBounds  b)
inline

Definition at line 2318 of file Map.cs.

2319 {
2320 bounds.SetBounds(b.x, b.z, b.maxX, b.maxZ);
2321 bounds.Size = b.Size;
2322 }

References bounds, MapBounds.maxX, MapBounds.maxZ, MapBounds.SetBounds(), MapBounds.Size, MapBounds.x, and MapBounds.z.

◆ SetBridge()

void Map.SetBridge ( int  x,
int  z,
int  height = 0,
int  idMat = 0,
int  idBridge = 0,
int  dir = 0 
)
inline

Definition at line 966 of file Map.cs.

967 {
968 Cell cell = cells[x, z];
969 cell.bridgeHeight = (byte)height;
970 cell._bridgeMat = (byte)idMat;
971 cell._bridge = (byte)idBridge;
972 cell.bridgePillar = 0;
973 cell.floorDir = dir;
974 if (cell.room != null)
975 {
976 cell.room.SetDirty();
977 }
979 }

References cells, RefreshNeighborTiles(), Cell.room, Room.SetDirty(), MapBounds.x, and MapBounds.z.

Referenced by Recipe.Build(), MineFloor(), and TaskDig.OnProgressComplete().

◆ SetDecal()

void Map.SetDecal ( int  x,
int  z,
int  id = 0,
int  amount = 1,
bool  refresh = true 
)
inline

Definition at line 2029 of file Map.cs.

2030 {
2031 cells[x, z].decal = (byte)((id != 0 && amount != 0) ? ((uint)(id * 8 + amount)) : 0u);
2032 if (refresh)
2033 {
2035 }
2036 }

References cells, Cell.decal, RefreshNeighborTiles(), MapBounds.x, and MapBounds.z.

Referenced by FactionBranch.DailyOutcome(), AM_MoveInstalled.HitTest(), AIWork_Clean.OnPerformWork(), TaskCut.OnProgressComplete(), AI_Clean.Run(), and TaskClean.Run().

◆ SetEffect()

void Map.SetEffect ( int  x,
int  z,
CellEffect  effect = null 
)
inline

Definition at line 1495 of file Map.cs.

1496 {
1497 cells[x, z].effect = effect;
1498 }

References cells, Cell.effect, MapBounds.x, and MapBounds.z.

Referenced by Chara._Move(), GameUpdater.FastSurfaceUpdater.FixedUpdate(), and ActEffect.ProcAt().

◆ SetFloor() [1/2]

void Map.SetFloor ( int  x,
int  z,
int  idMat,
int  idFloor,
int  dir 
)
inline

Definition at line 956 of file Map.cs.

957 {
958 Cell cell = cells[x, z];
959 cell._floorMat = (byte)idMat;
960 cell._floor = (byte)idFloor;
961 cell.floorDir = dir;
964 }

References cells, Critter.RebuildCritter(), RefreshNeighborTiles(), MapBounds.x, and MapBounds.z.

◆ SetFloor() [2/2]

void Map.SetFloor ( int  x,
int  z,
int  idMat = 0,
int  idFloor = 0 
)
inline

Definition at line 951 of file Map.cs.

952 {
953 SetFloor(x, z, idMat, idFloor, 0);
954 }

References SetFloor(), MapBounds.x, and MapBounds.z.

Referenced by Recipe.Build(), ZonePreEnterDigStairs.Execute(), ZoneInspector.FillUtil.FillFloor(), MineFloor(), Point.SetFloor(), and SetFloor().

◆ SetFoormark()

void Map.SetFoormark ( Point  pos,
int  id,
int  angle,
int  offset = 0 
)
inline

Definition at line 2038 of file Map.cs.

2039 {
2040 Cell cell = pos.cell;
2041 int tile = AngleToIndex(angle) + offset;
2042 Footmark footmark = new Footmark
2043 {
2044 tile = tile,
2045 remaining = 10
2046 };
2047 footmark.pos.Set(pos);
2048 footmarks.Add(footmark);
2049 cell.GetOrCreateDetail().footmark = footmark;
2050 }
Footmark footmark
Definition: CellDetail.cs:17
CellDetail GetOrCreateDetail()
Definition: Cell.cs:1529
Point pos
Definition: Footmark.cs:3
int AngleToIndex(int a)
Definition: Map.cs:2052
List< Footmark > footmarks
Definition: Map.cs:99

References AngleToIndex(), Point.cell, CellDetail.footmark, footmarks, Cell.GetOrCreateDetail(), Footmark.pos, and Point.Set().

Referenced by Chara._Move().

◆ SetLiquid() [1/2]

void Map.SetLiquid ( int  x,
int  z,
CellEffect  effect = null 
)
inline

◆ SetLiquid() [2/2]

void Map.SetLiquid ( int  x,
int  z,
int  id,
int  value = 1 
)
inline

Definition at line 1473 of file Map.cs.

1474 {
1475 Cell cell = cells[x, z];
1476 if (!cell.IsTopWaterAndNoSnow || value == 0)
1477 {
1478 if (value > 3)
1479 {
1480 value = 3;
1481 }
1482 if (value <= 0)
1483 {
1484 cell.effect = null;
1485 return;
1486 }
1487 cell.effect = new CellEffect
1488 {
1489 id = id,
1490 amount = value
1491 };
1492 }
1493 }

References cells, Cell.IsTopWaterAndNoSnow, MapBounds.x, and MapBounds.z.

◆ SetObj() [1/2]

void Map.SetObj ( int  x,
int  z,
int  id = 0,
int  value = 1,
int  dir = 0 
)
inline

◆ SetObj() [2/2]

void Map.SetObj ( int  x,
int  z,
int  idMat,
int  idObj,
int  value,
int  dir,
bool  ignoreRandomMat = false 
)
inline

Definition at line 1527 of file Map.cs.

1528 {
1529 Cell cell = cells[x, z];
1530 if (cell.sourceObj.id == 118 || idObj == 118)
1531 {
1532 EClass._zone.dirtyElectricity = true;
1533 }
1534 cell.obj = (byte)idObj;
1535 cell.objVal = (byte)value;
1536 cell.objMat = (byte)idMat;
1537 cell.objDir = dir;
1538 cell.isHarvested = false;
1539 cell.isObjDyed = false;
1540 SourceObj.Row sourceObj = cell.sourceObj;
1541 if (!ignoreRandomMat && !sourceObj.matCategory.IsEmpty())
1542 {
1543 int num = EClass._zone.DangerLv;
1544 if (sourceObj.tag.Contains("spot"))
1545 {
1546 num += EClass.pc.Evalue(1656) * 5;
1547 }
1548 cell.objMat = (byte)MATERIAL.GetRandomMaterialFromCategory(num, sourceObj.matCategory.Split(','), cell.matObj).id;
1549 }
1550 if (backerObjs.ContainsKey(cell.index))
1551 {
1552 backerObjs.Remove(cell.index);
1553 }
1554 if (plants.ContainsKey(cell.index))
1555 {
1556 plants.Remove(cell.index);
1557 }
1558 cell.growth?.OnSetObj();
1559 Critter.RebuildCritter(cell);
1561 }
int Evalue(int ele)
Definition: Card.cs:2431
virtual void OnSetObj()
Definition: GrowSystem.cs:260
static SourceMaterial.Row GetRandomMaterialFromCategory(int lv, string cat, SourceMaterial.Row fallback)
Definition: MATERIAL.cs:81
string[] tag
Definition: RenderRow.cs:58
string matCategory
Definition: SourceObj.cs:21

References EClass._zone, backerObjs, cells, Zone.DangerLv, Card.Evalue(), MATERIAL.GetRandomMaterialFromCategory(), Cell.growth, Cell.index, SourceObj.Row.matCategory, Cell.matObj, GrowSystem.OnSetObj(), EClass.pc, plants, Critter.RebuildCritter(), RefreshNeighborTiles(), Cell.sourceObj, RenderRow.tag, MapBounds.x, and MapBounds.z.

◆ SetReference()

void Map.SetReference ( )
inline

Definition at line 195 of file Map.cs.

196 {
197 Fov.map = (Cell.map = (Wall.map = (Point.map = (CellDetail.map = this))));
198 Cell.Size = Size;
199 Cell.cells = cells;
201 WeightCell[,] weightMap = cells;
202 pathfinder.Init(this, weightMap, Size);
203 }
IPathfinder pathfinder
Definition: PathManager.cs:24
static PathManager Instance
Definition: PathManager.cs:16
void Init(IPathfindGrid _grid, WeightCell[,] _weightMap, int size)

References cells, IPathfinder.Init(), PathManager.Instance, PathManager.pathfinder, and MapBounds.Size.

Referenced by PartialMap._Load(), Zone.Activate(), PartialMap.Apply(), CreateNew(), Reload(), Reset(), and SetZone().

◆ SetRoofBlock()

void Map.SetRoofBlock ( int  x,
int  z,
int  idMat,
int  idBlock,
int  dir,
int  height 
)
inline

Definition at line 981 of file Map.cs.

982 {
983 Cell cell = cells[x, z];
984 cell._roofBlockMat = (byte)idMat;
985 cell._roofBlock = (byte)idBlock;
986 cell._roofBlockDir = (byte)(dir + height * 4);
988 }

References cells, RefreshSingleTile(), MapBounds.x, and MapBounds.z.

Referenced by Recipe.Build().

◆ SetSeen()

void Map.SetSeen ( int  x,
int  z,
bool  seen = true,
bool  refresh = true 
)
inline

Definition at line 886 of file Map.cs.

887 {
888 if (cells[x, z].isSeen != seen)
889 {
890 cells[x, z].isSeen = seen;
891 if (refresh)
892 {
894 }
896 }
897 }

References EClass._map, cells, Cell.isSeen, RefreshNeighborTiles(), WidgetMinimap.UpdateMap(), MapBounds.x, and MapBounds.z.

Referenced by Fov.Perform(), and RevealAll().

◆ SetZone()

void Map.SetZone ( Zone  _zone)
inline

Definition at line 181 of file Map.cs.

182 {
183 zone = _zone;
184 zone.bounds = bounds;
185 bounds.Size = Size;
186 SetReference();
187 props.Init();
188 EClass.scene.profile = SceneProfile.Load(config.idSceneProfile.IsEmpty("default"));
189 if (!config.idFowProfile.IsEmpty())
190 {
192 }
193 }
static FowProfile Load(string id)
Definition: FowProfile.cs:9
string idSceneProfile
Definition: MapConfig.cs:8
string idFowProfile
Definition: MapConfig.cs:11
FowProfile fowProfile
Definition: Map.cs:101
MapConfig config
Definition: Map.cs:37
static SceneProfile Load(string id)
Definition: SceneProfile.cs:18

References EClass._zone, bounds, config, fowProfile, MapConfig.idFowProfile, MapConfig.idSceneProfile, PropsManager.Init(), FowProfile.Load(), SceneProfile.Load(), props, SetReference(), MapBounds.Size, and zone.

Referenced by Zone.Activate(), Zone.Generate(), ZoneBlueprint.GenerateMap(), MapGen.GenerateTerrain(), MapGenDungen.OnGenerateTerrain(), and MapGenRegion.OnGenerateTerrain().

◆ Shift()

void Map.Shift ( Vector2Int  offset)
inline

Definition at line 254 of file Map.cs.

255 {
256 TweenUtil.Tween(0.1f, null, delegate
257 {
258 foreach (Card item in ((IEnumerable<Card>)EClass._map.things).Concat((IEnumerable<Card>)EClass._map.charas))
259 {
260 item.pos.x += offset.x;
261 item.pos.z += offset.y;
262 item.pos.Clamp();
263 }
264 Cell[,] array = new Cell[Size, Size];
265 for (int i = 0; i < Size; i++)
266 {
267 int num = i - offset.y;
268 for (int j = 0; j < Size; j++)
269 {
270 int num2 = j - offset.x;
271 if (num2 >= 0 && num2 < Size && num >= 0 && num < Size)
272 {
273 array[j, i] = cells[num2, num];
274 }
275 else
276 {
277 array[j, i] = new Cell
278 {
279 x = (byte)j,
280 z = (byte)i
281 };
282 }
283 }
284 }
285 cells = array;
286 bounds.x += offset.x;
287 bounds.z += offset.y;
288 bounds.maxX += offset.x;
289 bounds.maxZ += offset.y;
290 if (bounds.x < 0)
291 {
292 bounds.x = 0;
293 }
294 if (bounds.z < 0)
295 {
296 bounds.z = 0;
297 }
298 if (bounds.maxX > Size)
299 {
300 bounds.maxX = Size;
301 }
302 if (bounds.maxZ > Size)
303 {
304 bounds.maxZ = Size;
305 }
306 Reload();
307 });
308 }

References EClass._map, bounds, cells, charas, item, MapBounds.maxX, MapBounds.maxZ, Reload(), MapBounds.Size, things, Cell.x, MapBounds.x, and MapBounds.z.

Referenced by ZoneInspector.ResizeUtil.Apply().

◆ TryAddRoom()

void Map.TryAddRoom ( int  x,
int  z 
)
inline

Definition at line 1078 of file Map.cs.

1079 {
1080 if (EClass._zone.DisableRooms || roomHash.Contains(x + z * Size) || cells[x, z].HasFloodBlock)
1081 {
1082 return;
1083 }
1084 FloodSpiller floodSpiller = flood;
1085 IFloodCell[,] array = cells;
1086 FloodSpiller.Result result = floodSpiller.SpillFlood(array, x, z);
1087 if (!result.IsValid)
1088 {
1089 return;
1090 }
1091 bool flag = false;
1092 foreach (IFloodCell item in result.visited)
1093 {
1094 if (item.hasDoor)
1095 {
1096 flag = true;
1097 break;
1098 }
1099 Cell cell = item as Cell;
1100 if (cell.sourceBlock.tileType.IsFloodDoor || cell.Front.hasDoor || cell.Right.hasDoor || cell.FrontRight.hasDoor || cell.Back.hasDoor || cell.Left.hasDoor || cell.BackLeft.hasDoor)
1101 {
1102 flag = true;
1103 break;
1104 }
1105 }
1106 if (!flag && IsIndoor)
1107 {
1108 foreach (IFloodCell item2 in result.visited)
1109 {
1110 Cell cell2 = item2 as Cell;
1111 if (cell2.detail == null || cell2.detail.things.Count == 0)
1112 {
1113 continue;
1114 }
1115 foreach (Thing thing in cell2.detail.things)
1116 {
1117 if (thing.trait is TraitRoomPlate || thing.trait is TraitHouseBoard)
1118 {
1119 flag = true;
1120 break;
1121 }
1122 }
1123 if (flag)
1124 {
1125 break;
1126 }
1127 }
1128 }
1129 if (!flag)
1130 {
1131 return;
1132 }
1133 Room room = rooms.AddRoom(new Room());
1134 foreach (IFloodCell item3 in result.visited)
1135 {
1136 Cell cell3 = item3 as Cell;
1137 byte b = cell3.x;
1138 byte b2 = cell3.z;
1139 room.AddPoint(new Point(b, b2));
1140 roomHash.Add(b + b2 * Size);
1141 if (b2 > 0 && cell3.Front.HasFloodBlock && cell3.Front.room == null)
1142 {
1143 room.AddPoint(new Point(b, b2 - 1));
1144 roomHash.Add(b + (b2 - 1) * Size);
1145 }
1146 if (b < Size - 1 && cell3.Right.HasFloodBlock && cell3.Right.room == null)
1147 {
1148 room.AddPoint(new Point(b + 1, b2));
1149 roomHash.Add(b + 1 + b2 * Size);
1150 }
1151 if (b2 > 0 && b < Size - 1 && cell3.FrontRight.HasFloodBlock && cell3.FrontRight.room == null)
1152 {
1153 room.AddPoint(new Point(b + 1, b2 - 1));
1154 roomHash.Add(b + 1 + (b2 - 1) * Size);
1155 }
1156 }
1157 }
Cell BackLeft
Definition: Cell.cs:213
bool hasDoor
Definition: Cell.cs:258
Cell FrontRight
Definition: Cell.cs:177
bool IsIndoor
Definition: Map.cs:131
FloodSpiller flood
Definition: Map.cs:93
Room AddRoom(Room r)
Definition: RoomManager.cs:110
Definition: Room.cs:4
void AddPoint(Point p)
Definition: Room.cs:46
virtual bool DisableRooms
Definition: Zone.cs:118

References EClass._zone, RoomManager.AddRoom(), Cell.Back, Cell.BackLeft, cells, Cell.detail, Zone.DisableRooms, flood, Cell.Front, Cell.FrontRight, Cell.hasDoor, Cell.HasFloodBlock, IsIndoor, item, Cell.Left, Cell.Right, Cell.room, roomHash, rooms, MapBounds.Size, Cell.sourceBlock, Card.things, CellDetail.things, Card.trait, Cell.x, MapBounds.x, Cell.z, and MapBounds.z.

Referenced by OnSetBlockOrDoor().

◆ TryGetPlant() [1/2]

PlantData Map.TryGetPlant ( Cell  c)
inline

Definition at line 1925 of file Map.cs.

1926 {
1927 return plants.TryGetValue(c.index);
1928 }

References Cell.index, and plants.

◆ TryGetPlant() [2/2]

◆ TryLoadFile()

byte[] Map.TryLoadFile ( string  path,
string  s,
int  size 
)
inline

Definition at line 531 of file Map.cs.

532 {
533 byte[] array = IO.ReadLZ4(path + s, size, compression);
534 if (array == null)
535 {
536 Debug.Log("Couldn't load:" + s);
537 return new byte[size];
538 }
539 return array;
540 }
static byte[] ReadLZ4(string _path, int size, Compression compression)
Definition: IO.cs:151

References compression, and Debug.

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

◆ TryRemoveRoom()

void Map.TryRemoveRoom ( int  x,
int  z 
)
inline

Definition at line 1066 of file Map.cs.

1067 {
1068 if (!cells[x, z].HasFloodBlock)
1069 {
1070 Room room = cells[x, z].room;
1071 if (room != null)
1072 {
1073 rooms.RemoveRoom(room);
1074 }
1075 }
1076 }
void RemoveRoom(Room r)
Definition: RoomManager.cs:119

References cells, RoomManager.RemoveRoom(), Cell.room, rooms, MapBounds.x, and MapBounds.z.

Referenced by OnSetBlockOrDoor().

◆ TryShatter()

void Map.TryShatter ( Point  pos,
int  ele,
int  power 
)
inline

Definition at line 1194 of file Map.cs.

1195 {
1196 Element element = Element.Create(ele);
1197 List<Card> list = new List<Card>();
1198 bool fire = ele == 910;
1199 bool flag = ele == 911;
1200 _ = fire;
1201 List<Card> list2 = pos.ListCards();
1202 if (fire && (pos.cell.IsSnowTile || pos.cell.IsTopWater))
1203 {
1204 return;
1205 }
1206 foreach (Card item in list2)
1207 {
1208 if (item.ResistLvFrom(ele) >= 3 || item.trait is TraitBlanket || (EClass.rnd(3) == 0 && !CanCook(item)) || (item.IsPCFaction && EClass.rnd(3) == 0) || (fire && item.HasCondition<ConWet>()) || (flag && item.HasCondition<ConBurning>()))
1209 {
1210 continue;
1211 }
1213 {
1214 Card rootCard = item.GetRootCard();
1215 if (!rootCard.isChara || rootCard.Chara.IsPCFaction)
1216 {
1217 if (pos.IsSync)
1218 {
1219 Msg.Say("damage_protectCore", item);
1220 }
1221 continue;
1222 }
1223 }
1224 if (item.isThing && item.things.Count == 0)
1225 {
1226 list.Add(item);
1227 }
1228 else
1229 {
1230 if (ele == 911 && item.HasElement(1236))
1231 {
1232 continue;
1233 }
1234 Thing thing = ((ele == 910) ? item.things.FindBest<TraitBlanketFireproof>((Thing t) => -t.c_charges) : item.things.FindBest<TraitBlanketColdproof>((Thing t) => -t.c_charges));
1235 if (thing != null)
1236 {
1237 thing.ModCharge(-1);
1238 Card rootCard2 = item.GetRootCard();
1239 if (pos.IsSync)
1240 {
1241 Msg.Say((item.isChara ? "blanketInv_" : "blanketGround_") + element.source.alias, thing, item);
1242 }
1243 if (thing.c_charges <= 0)
1244 {
1245 thing.Die(element);
1246 if (rootCard2.IsPCParty)
1247 {
1249 }
1250 }
1251 continue;
1252 }
1253 foreach (Thing item2 in item.things.List((Thing a) => a.things.Count == 0))
1254 {
1255 Card parentCard = item2.parentCard;
1256 if (parentCard == null || (!(parentCard.trait is TraitChestMerchant) && !parentCard.HasEditorTag(EditorTag.PreciousContainer)))
1257 {
1258 list.Add(item2);
1259 }
1260 }
1261 }
1262 }
1263 list.Shuffle();
1264 int num = 0;
1265 foreach (Card item3 in list)
1266 {
1267 if (!item3.trait.CanBeDestroyed || item3.category.IsChildOf("currency") || item3.trait is TraitDoor || item3.trait is TraitFigure || item3.trait is TraitTrainingDummy || item3.rarity >= Rarity.Legendary)
1268 {
1269 continue;
1270 }
1271 Card rootCard3 = item3.GetRootCard();
1272 if (item3.IsEquipmentOrRangedOrAmmo && (EClass.rnd(4) != 0 || ((item3.IsRangedWeapon || item3.Thing.isEquipped) && rootCard3.IsPCFaction && EClass.rnd(4) != 0)))
1273 {
1274 continue;
1275 }
1276 switch (ele)
1277 {
1278 case 910:
1279 if (item3.isFireproof || (!item3.category.IsChildOf("book") && EClass.rnd(2) == 0))
1280 {
1281 continue;
1282 }
1283 break;
1284 case 911:
1285 if (!item3.category.IsChildOf("drink") && EClass.rnd(5) == 0)
1286 {
1287 continue;
1288 }
1289 break;
1290 }
1291 if (EClass.rnd(num * num) != 0)
1292 {
1293 continue;
1294 }
1295 bool flag2 = CanCook(item3);
1296 string text = "";
1297 if (flag2)
1298 {
1299 List<SourceThing.Row> list3 = new List<SourceThing.Row>();
1300 foreach (RecipeSource item4 in RecipeManager.list)
1301 {
1302 if (!(item4.row is SourceThing.Row { isOrigin: false } row) || row.components.IsEmpty() || (row.components.Length >= 3 && !row.components[2].StartsWith('+')) || !row.Category.IsChildOf("meal"))
1303 {
1304 continue;
1305 }
1306 if (!row.factory.IsEmpty())
1307 {
1308 switch (row.factory[0])
1309 {
1310 case "chopper":
1311 case "mixer":
1312 case "camppot":
1313 case "cauldron":
1314 continue;
1315 }
1316 }
1317 if (row.components[0] == item3.id || row.components[0] == item3.sourceCard._origin)
1318 {
1319 list3.Add(row);
1320 }
1321 }
1322 if (list3.Count > 0)
1323 {
1324 text = list3.RandomItem().id;
1325 }
1326 }
1327 if (flag2 && !text.IsEmpty())
1328 {
1329 item3.GetRoot();
1330 Thing thing2 = item3.Split(1);
1331 List<Thing> list4 = new List<Thing>();
1332 list4.Add(thing2);
1333 Thing thing3 = ThingGen.Create(text);
1334 CraftUtil.MakeDish(thing3, list4, 999);
1335 thing3.elements.ModBase(2, EClass.curve(power / 10, 50, 10));
1336 if (pos.IsSync)
1337 {
1338 Msg.Say((rootCard3 == item3) ? "cook_groundItem" : "cook_invItem", thing2, rootCard3, thing3.Name);
1339 }
1340 if (rootCard3 == item3)
1341 {
1342 EClass._zone.AddCard(thing3, item3.pos);
1343 }
1344 else if (rootCard3.isChara)
1345 {
1346 rootCard3.Chara.Pick(thing3, msg: false);
1347 }
1348 else
1349 {
1350 rootCard3.AddThing(thing3);
1351 }
1352 thing2.Destroy();
1353 }
1354 else
1355 {
1356 int num2 = EClass.rnd(item3.Num) / 2 + 1;
1357 if (item3.Num > num2)
1358 {
1359 Thing thing4 = item3.Split(num2);
1360 if (pos.IsSync)
1361 {
1362 Msg.Say((rootCard3 == item3) ? "damage_groundItem" : "damage_invItem", thing4, rootCard3);
1363 }
1364 thing4.Destroy();
1365 if (rootCard3.IsPCFaction)
1366 {
1367 WidgetPopText.Say("popDestroy".lang(thing4.Name, rootCard3.Name));
1368 }
1369 }
1370 else
1371 {
1372 item3.Die(element);
1373 if (rootCard3.IsPCFaction)
1374 {
1375 WidgetPopText.Say("popDestroy".lang(item3.Name, rootCard3.Name));
1376 }
1377 }
1378 }
1379 if (rootCard3.IsPCParty)
1380 {
1382 }
1383 num++;
1384 }
1385 _ValidateInstalled(pos.x, pos.z);
1386 bool CanCook(Card c)
1387 {
1388 if (fire && c.IsFood)
1389 {
1390 return c.category.IsChildOf("foodstuff");
1391 }
1392 return false;
1393 }
1394 }
EditorTag
Definition: EditorTag.cs:2
int itemLost
Definition: AM_Adv.cs:109
static AM_Adv Adv
Definition: ActionMode.cs:15
string _origin
Definition: CardRow.cs:15
string id
Definition: CardRow.cs:7
Thing Split(int a)
Definition: Card.cs:3231
ElementContainerCard elements
Definition: Card.cs:37
ICardParent GetRoot()
Definition: Card.cs:3164
virtual bool IsPCParty
Definition: Card.cs:2025
bool IsEquipmentOrRangedOrAmmo
Definition: Card.cs:2090
string Name
Definition: Card.cs:2013
virtual void Die(Element e=null, Card origin=null, AttackSource attackSource=AttackSource.None)
Definition: Card.cs:4471
bool IsFood
Definition: Card.cs:2051
void ModCharge(int a, bool destroy=false)
Definition: Card.cs:3627
bool HasEditorTag(EditorTag tag)
Definition: Card.cs:2460
bool isFireproof
Definition: Card.cs:646
Card GetRootCard()
Definition: Card.cs:3173
virtual bool IsPCFaction
Definition: Card.cs:2129
Card parentCard
Definition: Card.cs:99
virtual CardRow sourceCard
Definition: Card.cs:2007
Thing Add(string id, int num=1, int lv=1)
Definition: Card.cs:2878
SourceCategory.Row category
Definition: Card.cs:1925
int c_charges
Definition: Card.cs:1205
bool IsTopWater
Definition: Cell.cs:700
Definition: ConWet.cs:2
static void MakeDish(Thing food, int lv, Chara crafter=null)
Definition: CraftUtil.cs:54
static int curve(int a, int start, int step, int rate=75)
Definition: EClass.cs:55
static FactionBranch Branch
Definition: EClass.cs:22
Element ModBase(int ele, int v)
SourceElement.Row source
Definition: ELEMENT.cs:263
static Element Create(int id, int v=0)
Definition: ELEMENT.cs:913
bool HasItemProtection
void _ValidateInstalled(int x, int y)
Definition: Map.cs:1954
bool IsSync
Definition: Point.cs:320
static List< RecipeSource > list
Definition: RecipeManager.cs:9
RenderRow row
Definition: RecipeSource.cs:5
bool isEquipped
Definition: Thing.cs:17
virtual bool CanBeDestroyed
Definition: Trait.cs:285
static void Say(string text, FontColor fontColor=FontColor.Default, Sprite sprite=null)

References _ValidateInstalled(), EClass._zone, Card.Add(), Zone.AddCard(), Card.AddThing(), ActionMode.Adv, EClass.Branch, Card.c_charges, Card.category, Point.cell, Card.Chara, Element.Create(), ThingGen.Create(), EClass.curve(), Card.Destroy(), Card.Die(), Card.elements, Card.GetRootCard(), Card.HasEditorTag(), FactionBranch.HasItemProtection, CardRow.id, Card.isChara, Card.IsFood, Card.IsPCFaction, Chara.IsPCFaction, Zone.IsPCFaction, Card.IsPCParty, Cell.IsSnowTile, Cell.IsTopWater, item, AM_Adv.itemLost, RecipeManager.list, Point.ListCards(), CraftUtil.MakeDish(), ElementContainer.ModBase(), Card.ModCharge(), Card.Name, Card.parentCard, Chara.Pick(), Card.pos, EClass.rnd(), RecipeSource.row, Msg.Say(), WidgetPopText.Say(), Card.Split(), and Card.trait.

Referenced by ActEffect.DamageEle().

◆ TrySmoothPick() [1/2]

◆ TrySmoothPick() [2/2]

void Map.TrySmoothPick ( Point  p,
Thing  t,
Chara  c 
)
inline

Definition at line 1796 of file Map.cs.

1797 {
1798 if (c != null && c.IsAgent)
1799 {
1800 EClass.pc.PickOrDrop(p, t);
1801 }
1802 else if (c != null && (c.pos.Equals(p) || EClass.core.config.game.smoothPick || EClass._zone.IsRegion))
1803 {
1804 c.PickOrDrop(p, t);
1805 }
1806 else
1807 {
1808 EClass._zone.AddCard(t, p);
1809 }
1810 }
bool IsAgent
Definition: Card.cs:2109
new GameConfig game
Definition: CoreConfig.cs:596
bool Equals(int _x, int _z)
Definition: Point.cs:924

References EClass._zone, Zone.AddCard(), Core.config, EClass.core, Point.Equals(), CoreConfig.game, Card.IsAgent, Spatial.IsRegion, EClass.pc, Chara.PickOrDrop(), Card.pos, and CoreConfig.GameConfig.smoothPick.

◆ UpdateMetaData()

static void Map.UpdateMetaData ( string  pathZip,
PartialMap  partial = null 
)
inlinestatic

Definition at line 759 of file Map.cs.

760 {
762 ZipFile zipFile = ZipFile.Read(pathZip);
763 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
764 zipFile.ExtractAll(IO.TempPath);
765 zipFile.Dispose();
766 EClass._map.ExportMetaData(IO.TempPath + "/", Path.GetFileNameWithoutExtension(pathZip), partial);
767 using (zipFile = new ZipFile())
768 {
769 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
770 zipFile.AddDirectory(IO.TempPath);
771 zipFile.Save(pathZip);
772 zipFile.Dispose();
773 }
775 }
static void CreateTempDirectory(string path=null)
Definition: IO.cs:367
static string TempPath
Definition: IO.cs:64
static void DeleteTempDirectory(string path=null)
Definition: IO.cs:372
void ExportMetaData(string _path, string id, PartialMap partial=null)
Definition: Map.cs:716

References EClass._map, and ExportMetaData().

Referenced by PartialMap.Update().

◆ ValidateInstalled()

void Map.ValidateInstalled ( Point  p)
inline

Definition at line 1945 of file Map.cs.

1946 {
1947 _ValidateInstalled(p.x, p.z);
1948 _ValidateInstalled(p.x + 1, p.z);
1949 _ValidateInstalled(p.x - 1, p.z);
1950 _ValidateInstalled(p.x, p.z + 1);
1951 _ValidateInstalled(p.x, p.z - 1);
1952 }

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

Referenced by MineBlock().

◆ ValidateVersion()

void Map.ValidateVersion ( )
inline

Definition at line 699 of file Map.cs.

700 {
702 }

References EClass.core, version, and BaseCore.version.

Referenced by Load().

Member Data Documentation

◆ _bits

int Map._bits

Definition at line 22 of file Map.cs.

Referenced by OnDeserialized(), and OnSerializing().

◆ _plDay

List<int> Map._plDay = new List<int>()

◆ _plNight

List<int> Map._plNight = new List<int>()

Definition at line 58 of file Map.cs.

Referenced by LayerEditPlaylist.Activate(), and LayerEditPlaylist.OnKill().

◆ _things

List<Thing> Map._things = new List<Thing>()
private

Definition at line 107 of file Map.cs.

Referenced by FindThing().

◆ backerObjs

Dictionary<int, int> Map.backerObjs = new Dictionary<int, int>()

◆ biomes

BiomeProfile [,] Map.biomes

Definition at line 95 of file Map.cs.

◆ bits

BitArray32 Map.bits

Definition at line 75 of file Map.cs.

Referenced by OnSerializing().

◆ bounds

◆ cellEffects

Dictionary<int, CellEffect> Map.cellEffects = new Dictionary<int, CellEffect>()

Definition at line 64 of file Map.cs.

Referenced by Load(), and Save().

◆ cells

◆ charas

List<Chara> Map.charas = new List<Chara>()

Definition at line 81 of file Map.cs.

Referenced by Zone.Activate(), ActionMode.Activate(), SerializedCards.Add(), Zone.AddGlobalCharasOnActivate(), ZoneEventQuest.AggroEnemy(), Point.CallGuard(), Chara.CallHelp(), TraitTrolley.CanActivate(), QuestDefense.CanUpdateOnTalk(), ElementContainerFaction.CheckDirty(), AM_MoveInstalled.CheckEnemyNearBy(), CountChara(), CountGuest(), FactionBranch.CountGuests(), CountHostile(), Zone.CountMinions(), CountNonHostile(), FactionBranch.CountWealthyGuests(), CountWildAnimal(), AI_Torture.CreateProgress(), LayerPeople.CreateSelectEmbarkMembers(), Card.DamageHP(), Chara.Die(), FindChara(), Zone.FindChara(), Chara.FindNearestNewEnemy(), Chara.FindNewEnemy(), GameUpdater.SensorUpdater.FixedUpdate(), GameUpdater.CharaUpdater.FixedUpdate(), GameUpdater.ConditionUpdater.FixedUpdate(), RefChara.GetAndCache(), GoalSiege.GetDestCard(), DramaCustomSequence.GetListGuide(), Zone.GetRandomVisitPos(), TaskCullLife.GetTarget(), QuestManager.HasFarAwayEscort(), TraitShackle.IsRestraining(), ListChara(), Point.ListCharasInRadius(), Zone.ListMinions(), Region.ListMobs(), Chara.MoveZone(), Zone_Casino.OnActivate(), TraitTrap.OnActivateTrap(), FactionBranch.OnAfterSimulate(), Zone_WindRest.OnAfterSimulate(), AI_Torture.OnCancelOrSuccess(), OnCardAddedToZone(), OnCardRemovedFromZone(), NotificationBattle.OnClick(), NotificationGuest.OnClick(), AM_EditMarker.OnDeactivate(), OnDeactivate(), QuestDeliver.OnEnterZone(), ZoneEventSiege.OnFirstTick(), Zone.OnGenerateMap(), Zone_CursedManor.OnGenerateMap(), Zone_RandomDungeon.OnGenerateMap(), Zone_Void.OnGenerateMap(), Zone_SubTown.OnGenerateRooms(), ZoneInstanceRandomQuest.OnLeaveZone(), BaseListPeople.OnList(), ListPeopleBed.OnList(), WidgetNotice.OnRefresh(), AM_Adv.OnRenderTile(), Zone.OnSimulateHour(), ConInvisibility.OnStart(), Zone.OnVisit(), ActSummonGuard.Perform(), ActEffect.Proc(), Card.PurgeDuplicateArtifact(), Zone.RefreshCriminal(), RefreshFOVAll(), Zone.RefreshListCitizen(), WidgetMinimap.RefreshMarkers(), LayerQuestBoard.RefreshQuest(), ActionMode.RefreshTexts(), CoreDebug.RegenerateNames(), Chara.ReleaseMinion(), Chara.RequestProtection(), ResetEditorPos(), Zone.ResetHostility(), Resize(), AI_Fuck.Run(), AI_Idle.Run(), AI_Offer.Run(), Save(), WidgetSearch.Search(), ZoneInspector.SetAllPlayerCreation(), Shift(), Zone.Simulate(), Card.SpawnLoot(), ConSleep.SuccubusSleep(), ConSleep.SuccubusVisit(), ContentRanking.SwitchRanking(), Msg.TalkMaid(), Player.TargetRanged(), Card.Teleport(), CoreDebug.TestSpawn(), Chara.Tick(), ConChampagne.Tick(), ConSleep.Tick(), ThingGen.TryLickChest(), GoalCombat.TryUseAbility(), GameUpdater.Update(), CoreDebug.UpdateInput(), Zone.UpdateQuests(), Chara.UseAbility(), and ElementContainerCard.ValueBonus().

◆ compression

IO.Compression Map.compression

Definition at line 25 of file Map.cs.

Referenced by Load(), Save(), and TryLoadFile().

◆ config

◆ custom

CustomData Map.custom

Definition at line 40 of file Map.cs.

Referenced by ExportMetaData(), LayerUploader.OnInit(), and LayerUploader.SaveID().

◆ deadCharas

◆ effectManager

CellEffectManager Map.effectManager = new CellEffectManager()

Definition at line 89 of file Map.cs.

Referenced by Load(), and ModFire().

◆ exportSetting

MapExportSetting Map.exportSetting

Definition at line 73 of file Map.cs.

Referenced by Zone_User.OnActivate(), LayerUploader.OnInit(), and Save().

◆ flood

FloodSpiller Map.flood = new FloodSpiller()

Definition at line 93 of file Map.cs.

Referenced by TryAddRoom().

◆ footmarks

List<Footmark> Map.footmarks = new List<Footmark>()

Definition at line 99 of file Map.cs.

Referenced by GameDate.AdvanceMin(), and SetFoormark().

◆ fowProfile

FowProfile Map.fowProfile

Definition at line 101 of file Map.cs.

Referenced by SetZone(), and BaseGameScreen.UpdateShaders().

◆ gatherCounts

Dictionary<int, int> Map.gatherCounts = new Dictionary<int, int>()

Definition at line 61 of file Map.cs.

◆ isDirtySunMap

bool Map.isDirtySunMap
static

Definition at line 16 of file Map.cs.

Referenced by RefreshSunMap().

◆ plants

Dictionary<int, PlantData> Map.plants = new Dictionary<int, PlantData>()

Definition at line 70 of file Map.cs.

Referenced by AddPlant(), RemovePlant(), SetObj(), and TryGetPlant().

◆ plDay

◆ plNight

Playlist Map.plNight

Definition at line 79 of file Map.cs.

◆ poiMap

◆ pointAnimes

List<TransAnime> Map.pointAnimes = new List<TransAnime>()

Definition at line 83 of file Map.cs.

Referenced by Point.Animate(), BaseGameScreen.Draw(), and WidgetDebug.UpdateText().

◆ props

◆ revealed

bool Map.revealed

Definition at line 103 of file Map.cs.

Referenced by RevealAll().

◆ roomHash

HashSet<int> Map.roomHash = new HashSet<int>()
private

Definition at line 105 of file Map.cs.

Referenced by OnSetBlockOrDoor(), and TryAddRoom().

◆ rooms

◆ seed

int Map.seed

Definition at line 19 of file Map.cs.

Referenced by AddPlant(), MapGen.Output(), and WidgetDebug.UpdateText().

◆ serializedCharas

List<Chara> Map.serializedCharas = new List<Chara>()

Definition at line 43 of file Map.cs.

Referenced by Zone.Activate(), SerializedCards.Restore(), and Save().

◆ sunMap

HashSet<int> Map.sunMap = new HashSet<int>()
static

Definition at line 14 of file Map.cs.

Referenced by BaseTileMap.DrawTile(), and RefreshSunMap().

◆ tasks

◆ things

List<Thing> Map.things = new List<Thing>()

Definition at line 49 of file Map.cs.

Referenced by Zone.Activate(), ActionMode.Activate(), GameDate.AdvanceMonth(), PartialMap.Apply(), FactionBranch.CalcInnIncome(), QuestSharedContainer.CanUpdateOnTalk(), QuestShippingChest.CanUpdateOnTalk(), Zone.ClaimZone(), Zone.Deactivate(), FindThing(), FindThing< T >(), CoreDebug.Fix_LostCore(), GameUpdater.ThingUpdater.FixedUpdate(), CoreDebug.GetDebugContainer(), Zone.GetElectricity(), DramaCustomSequence.GetListGuide(), CoreDebug.GetOrCreateDebugContainer(), Zone.GetSpawnPos(), AI_Haul.GetThingToClean(), Zone.GrowPlants(), Scene.Init(), Point.IsInSpot< T >(), HomeResourceWorth.ListHeirloom(), ListThing< T >(), Load(), Zone_Tent.OnBeforeDeactivate(), OnCardAddedToZone(), OnCardRemovedFromZone(), AM_EditMarker.OnDeactivate(), OnDeactivate(), Zone_CursedManorDungeon.OnGenerateMap(), Zone_WindRest.OnGenerateMap(), Zone.OnKillGame(), Zone.OnSimulateHour(), ZoneEventHarvest.OnVisit(), ZoneEventMusic.OnVisit(), Scene.RebuildActorEx(), BranchMap.Refresh(), Zone.RefreshElectricity(), RefreshFOVAll(), ActionMode.RefreshTexts(), ReloadRoom(), TraitDaggerGrave.RemainingSword(), ResetEditorPos(), Resize(), SerializedCards.Restore(), TaskDump.Run(), PartialMap.Save(), Save(), TraitDetector.Search(), WidgetSearch.Search(), ZoneInspector.SetAllPlayerCreation(), Shift(), Zone.Simulate(), CoreDebug.Test_Grow(), Zone.TryGetRestock< T >(), Zone.TryListThingsInSpot< T >(), AI_Shopping.TryRestock(), TraitFactionBoard.TrySetAct(), and TraitTeleporter.TryTeleport().

◆ version

Version Map.version

Definition at line 28 of file Map.cs.

Referenced by ExportMetaData(), Save(), and ValidateVersion().

◆ zone

Zone Map.zone

Property Documentation

◆ Cards

IEnumerable<Card> Map.Cards
get

Definition at line 135 of file Map.cs.

Referenced by MapSubset.OnSave(), and ActionMode.RefreshTexts().

◆ Installed

◆ isBreakerDown

bool Map.isBreakerDown
getset

Definition at line 109 of file Map.cs.

110 {
111 get
112 {
113 return bits[0];
114 }
115 set
116 {
117 bits[0] = value;
118 }
119 }

Referenced by TraitLeverBreaker.OnToggle().

◆ isGenerated

bool Map.isGenerated
get

Definition at line 129 of file Map.cs.

Referenced by MapGen.OnGenerateTerrain().

◆ IsIndoor

◆ Roaming

◆ sizeModifier

float Map.sizeModifier
get

Definition at line 127 of file Map.cs.

Referenced by Crawler.Crawl().

◆ SizeXZ

int Map.SizeXZ
get

◆ Stocked


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