Elin Decompiled Documentation EA 23.321 Nightly Patch 1
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 SetDeco (int x, int z, int idMat, int idDeco)
 
void SetBridge (int x, int z, int height=0, int idMat=0, int idBridge=0, int dir=0, byte idPillar=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, Card CC=null)
 
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< PointListPointsInSquare (Point center, int 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, bool returnOnBlocked=true)
 
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 ForeachSquare (int _x, int _z, int 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 rndSeed (int a, int seed)
 
static int rnd (long a)
 
static int rnd (int a)
 
static int curve (long _a, int start, int step, int rate=75)
 
static int sqrt (int a)
 
static int rndHalf (int a)
 
static float rndf (float a)
 
static int rndSqrt (int a)
 
static void Wait (float a, Card c)
 
static void Wait (float a, Point p)
 
static int Bigger (int a, int b)
 
static int Smaller (int a, int b)
 

Public Attributes

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 858 of file Map.cs.

859 {
860 if (!onAddToZone)
861 {
862 _RemoveCard(t);
863 }
864 t.lastPos.Set(t.pos);
865 t.pos.Set(x, z);
866 if (t.IsMultisize)
867 {
868 t.ForeachPoint(delegate(Point p, bool main)
869 {
870 p.cell.AddCard(t);
871 });
872 }
873 else
874 {
875 t.Cell.AddCard(t);
876 }
877 t.CalculateFOV();
878 if (t.isThing && !t.trait.IDActorEx.IsEmpty())
879 {
881 }
882 }
virtual bool IsMultisize
Definition: Card.cs:2212
virtual bool isThing
Definition: Card.cs:2133
void CalculateFOV()
Definition: Card.cs:6911
void ForeachPoint(Action< Point, bool > action)
Definition: Card.cs:8296
Point pos
Definition: Card.cs:60
Trait trait
Definition: Card.cs:54
Cell Cell
Definition: Card.cs:2107
Point lastPos
Definition: Card.cs:62
void AddCard(Card c)
Definition: Cell.cs:1586
Definition: EClass.cs:6
static Scene scene
Definition: EClass.cs:31
int x
Definition: MapBounds.cs:8
void _RemoveCard(Card t)
Definition: Map.cs:884
Definition: Point.cs:9
Point Set(int _x, int _z)
Definition: Point.cs:503
Cell cell
Definition: Point.cs:51
void AddActorEx(Card c, Action< ActorEx > onBeforeSetOwner=null)
Definition: Scene.cs:1022
virtual string IDActorEx
Definition: Trait.cs:187

References _RemoveCard(), Scene.AddActorEx(), Cell.AddCard(), Card.CalculateFOV(), Card.Cell, Point.cell, Card.ForeachPoint(), Trait.IDActorEx, Card.IsMultisize, Card.isThing, Card.lastPos, 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 884 of file Map.cs.

885 {
886 if (t.IsMultisize)
887 {
888 t.ForeachPoint(delegate(Point p, bool main)
889 {
890 p.cell.RemoveCard(t);
891 });
892 }
893 else
894 {
895 t.Cell.RemoveCard(t);
896 }
897 t.ClearFOV();
898 }
void ClearFOV()
Definition: Card.cs:7001
void RemoveCard(Card c)
Definition: Cell.cs:1602

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 2021 of file Map.cs.

2022 {
2023 Point point = Point.shared.Set(x, y);
2024 if (!point.IsValid)
2025 {
2026 return;
2027 }
2028 List<Card> list = point.ListCards();
2029 CellDetail detail = point.cell.detail;
2030 if (detail == null)
2031 {
2032 return;
2033 }
2034 foreach (Card item in list)
2035 {
2036 if (!item.isThing || !item.trait.CanBeDestroyed || !item.IsInstalled)
2037 {
2038 continue;
2039 }
2040 HitResult hitResult = item.TileType._HitTest(point, item.Thing, canIgnore: false);
2041 if (item.Thing.stackOrder != detail.things.IndexOf(item.Thing) || (hitResult != HitResult.Valid && hitResult != HitResult.Warning))
2042 {
2043 if (EClass._zone.IsPCFaction || (!item.isNPCProperty && !(item.trait is TraitHarvest)))
2044 {
2045 item.SetPlaceState(PlaceState.roaming);
2046 }
2047 else if (item.rarity < Rarity.Legendary)
2048 {
2049 item.Die();
2050 }
2051 }
2052 }
2053 }
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:100
static Zone _zone
Definition: EClass.cs:21
static Point shared
Definition: Point.cs:20
List< Card > ListCards(bool includeMasked=false)
Definition: Point.cs:1057
bool IsValid
Definition: Point.cs:88
bool IsPCFaction
Definition: Zone.cs:477

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 1621 of file Map.cs.

1622 {
1624 int num = ((!draw) ? 1 : 2);
1625 EClass._map.bounds.ForeachCell(delegate(Cell c)
1626 {
1627 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"))
1628 {
1629 backerObjs[c.index] = item.id;
1630 Debug.Log(c.index + "/" + c.x + "/" + c.z + "/" + item.id + "/" + item.Name + "/" + item.tree);
1631 num--;
1633 }
1634 });
1635 }
static int indexTree
Definition: BackerContent.cs:3
Definition: Cell.cs:7
GrowSystem growth
Definition: Cell.cs:233
byte z
Definition: Cell.cs:64
byte x
Definition: Cell.cs:62
int index
Definition: Cell.cs:122
bool ignoreBackerDestoryFlag
Definition: CoreConfig.cs:568
CoreConfig config
Definition: Core.cs:70
static Core core
Definition: EClass.cs:7
static Map _map
Definition: EClass.cs:19
static SourceManager sources
Definition: EClass.cs:43
static Player player
Definition: EClass.cs:13
virtual bool IsMature
Definition: GrowSystem.cs:117
virtual bool IsTree
Definition: GrowSystem.cs:101
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:1140
List< Row > listTree
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 795 of file Map.cs.

796 {
797 c.parent = zone;
799 Chara chara = c.Chara;
800 if (chara != null)
801 {
802 chara.currentZone = EClass._zone;
803 }
804 if (c.isChara)
805 {
806 if (!c.pos.IsInBounds)
807 {
809 }
810 }
811 else if (!c.pos.IsValid)
812 {
814 }
815 _AddCard(c.pos.x, c.pos.z, c, onAddToZone: true);
816 }
virtual Chara Chara
Definition: Card.cs:2122
virtual bool isChara
Definition: Card.cs:2135
Definition: Chara.cs:10
Point GetCenterPos()
Definition: MapBounds.cs:52
void _AddCard(int x, int z, Card t, bool onAddToZone)
Definition: Map.cs:858
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.Activate(), and Zone.AddGlobalCharasOnActivate().

◆ AddDecal()

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

Definition at line 2074 of file Map.cs.

2075 {
2076 if (x < 0 || z < 0 || x >= Size || z >= Size)
2077 {
2078 return;
2079 }
2080 Cell cell = cells[x, z];
2081 if (cell.sourceFloor.tileType.AllowBlood && (cell.decal / 8 == id || cell.decal % 8 <= amount))
2082 {
2083 if (cell.decal / 8 != id && cell.decal % 8 == 0)
2084 {
2085 amount--;
2086 }
2087 int num = Mathf.Clamp(((cell.decal / 8 == id) ? (cell.decal % 8) : 0) + amount, 0, 7);
2088 cell.decal = (byte)(id * 8 + num);
2089 if (refresh)
2090 {
2092 }
2093 }
2094 }
SourceFloor.Row sourceFloor
Definition: Cell.cs:1064
byte decal
Definition: Cell.cs:46
int Size
Definition: MapBounds.cs:20
void RefreshNeighborTiles(int x, int z)
Definition: Map.cs:2164
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 1997 of file Map.cs.

1998 {
1999 PlantData plantData = new PlantData
2000 {
2001 seed = seed
2002 };
2003 plants[pos.index] = plantData;
2004 return plantData;
2005 }
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 Zone.Generate(), TraitFertilizer.OnSimulateHour(), ZoneEventHarvest.OnVisit(), and TraitSeed.TrySprout().

◆ AngleToIndex()

int Map.AngleToIndex ( int  a)
inline

Definition at line 2119 of file Map.cs.

2120 {
2121 if (EClass._zone.IsRegion)
2122 {
2123 return a switch
2124 {
2125 135 => 7,
2126 180 => 0,
2127 225 => 1,
2128 -90 => 2,
2129 -45 => 3,
2130 0 => 4,
2131 45 => 5,
2132 _ => 6,
2133 };
2134 }
2135 return a switch
2136 {
2137 135 => 0,
2138 180 => 1,
2139 225 => 2,
2140 -90 => 3,
2141 -45 => 4,
2142 0 => 5,
2143 45 => 6,
2144 _ => 7,
2145 };
2146 }
virtual bool IsRegion
Definition: Spatial.cs:515

References EClass._zone, and Spatial.IsRegion.

Referenced by SetFoormark().

◆ ApplyBackerObj()

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

Definition at line 1646 of file Map.cs.

1647 {
1648 if (!p.HasObj)
1649 {
1650 return;
1651 }
1652 bool flag = p.sourceObj.id == 82;
1653 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)));
1654 if (row == null)
1655 {
1656 return;
1657 }
1659 {
1660 backerObjs[p.index] = row.id;
1661 if (flag)
1662 {
1663 p.cell.objDir = row.skin;
1664 }
1665 }
1666 else
1667 {
1668 backerObjs.Remove(p.index);
1669 }
1670 }
static int indexRemain
Definition: BackerContent.cs:5
bool HasObj
Definition: Point.cs:137
List< Row > listRemain

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 1454 of file Map.cs.

1455 {
1456 Cell cell = cells[x, z];
1457 Point sharedPoint = cell.GetSharedPoint();
1458 if ((instant || EClass.rnd(10) == 0) && cell.HasObj)
1459 {
1460 if (cell.sourceObj.tileType is TileTypeTree)
1461 {
1462 SetObj(x, z, cell.matObj_fixed.id, 59, 0, EClass.rnd(4));
1463 }
1464 else
1465 {
1466 SetObj(x, z);
1467 if (EClass.rnd(2) == 0)
1468 {
1469 EClass._zone.AddCard(ThingGen.Create((EClass.rnd(2) == 0) ? "ash" : "ash2"), sharedPoint);
1470 }
1471 }
1472 }
1473 if ((instant || EClass.rnd(5) == 0) && cell._block != 0 && cell._block != 96)
1474 {
1475 if (EClass.rnd(10) == 0 || !cell.sourceBlock.tileType.IsWall)
1476 {
1477 cell._block = 0;
1478 }
1479 else
1480 {
1481 cell._block = 96;
1482 }
1483 SetObj(x, z);
1484 if (cell.room != null)
1485 {
1486 cell.room.SetDirty();
1487 }
1489 }
1490 if (instant || EClass.rnd(10) == 0)
1491 {
1492 if (EClass.rnd(4) != 0)
1493 {
1494 cell._floor = 49;
1495 }
1496 if (cell._bridge != 0 && EClass.rnd(5) != 0)
1497 {
1498 cell._bridge = 49;
1499 }
1500 }
1501 foreach (Card item in sharedPoint.ListCards())
1502 {
1503 if (item.trait.CanBeDestroyed && !item.trait.IsDoor && !item.isFireproof && !item.category.IsChildOf("currency") && item.rarity < Rarity.Legendary && !(item.trait is TraitFigure) && item.isThing)
1504 {
1505 if (instant)
1506 {
1507 item.Destroy();
1508 EClass._zone.AddCard(ThingGen.Create((EClass.rnd(2) == 0) ? "ash" : "ash2"), sharedPoint);
1509 }
1510 else
1511 {
1512 item.DamageHP(30L, 910);
1513 }
1514 }
1515 }
1516 if (instant)
1517 {
1518 cell.effect = null;
1519 }
1520 }
byte _block
Definition: Cell.cs:32
Room room
Definition: Cell.cs:110
SourceBlock.Row sourceBlock
Definition: Cell.cs:1062
byte _bridge
Definition: Cell.cs:48
Point GetSharedPoint()
Definition: Cell.cs:1118
SourceObj.Row sourceObj
Definition: Cell.cs:1084
bool HasObj
Definition: Cell.cs:649
SourceMaterial.Row matObj_fixed
Definition: Cell.cs:1049
static int rnd(long a)
Definition: EClass.cs:59
void SetObj(int x, int z, int id=0, int value=1, int dir=0)
Definition: Map.cs:1580
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:2086

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 1571 of file Map.cs.

1572 {
1573 ForeachCell(delegate(Cell c)
1574 {
1575 c.effect = null;
1576 c.decal = 0;
1577 });
1578 }
new void ForeachCell(Action< Cell > action)
Definition: Map.cs:2404

References ForeachCell().

Referenced by Zone.Export().

◆ CountChara()

int Map.CountChara ( Faction  faction)
inline

Definition at line 2519 of file Map.cs.

2520 {
2521 int num = 0;
2522 foreach (Chara chara in charas)
2523 {
2524 if (chara.faction == faction)
2525 {
2526 num++;
2527 }
2528 }
2529 return num;
2530 }
Faction faction
Definition: Chara.cs:431
List< Chara > charas
Definition: Map.cs:81

References charas, and Chara.faction.

◆ CountGuest()

int Map.CountGuest ( )
inline

Definition at line 2532 of file Map.cs.

2533 {
2534 int num = 0;
2535 foreach (Chara chara in charas)
2536 {
2537 if (chara.IsGuest())
2538 {
2539 num++;
2540 }
2541 }
2542 return num;
2543 }
bool IsGuest()
Definition: Chara.cs:6903

References charas, and Chara.IsGuest().

◆ CountHostile()

int Map.CountHostile ( )
inline

Definition at line 2545 of file Map.cs.

2546 {
2547 int num = 0;
2548 foreach (Chara chara in charas)
2549 {
2550 if (!chara.IsPCFaction && chara.IsHostile())
2551 {
2552 num++;
2553 }
2554 }
2555 return num;
2556 }
override bool IsPCFaction
Definition: Chara.cs:689
bool IsHostile()
Definition: Chara.cs:6812

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

◆ CountNonHostile()

int Map.CountNonHostile ( )
inline

Definition at line 2571 of file Map.cs.

2572 {
2573 int num = 0;
2574 foreach (Chara chara in charas)
2575 {
2576 if (!chara.IsPCFaction && !chara.IsHostile())
2577 {
2578 num++;
2579 }
2580 }
2581 return num;
2582 }

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

◆ CountWildAnimal()

int Map.CountWildAnimal ( )
inline

Definition at line 2558 of file Map.cs.

2559 {
2560 int num = 0;
2561 foreach (Chara chara in charas)
2562 {
2563 if (!chara.IsPCFaction && chara.IsAnimal)
2564 {
2565 num++;
2566 }
2567 }
2568 return num;
2569 }
bool IsAnimal
Definition: Chara.cs:890

References charas, Chara.IsAnimal, and Chara.IsPCFaction.

◆ 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:2427
void SetBounds(int size)
Definition: Map.cs:2389
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 2069 of file Map.cs.

2070 {
2071 SetBlock(x, z);
2072 }
void SetBlock(int x, int z, int idMat=0, int idBlock=0)
Definition: Map.cs:1017

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

Referenced by OnCardAddedToZone().

◆ DestroyObj()

void Map.DestroyObj ( Point  point)
inline

Definition at line 1870 of file Map.cs.

1871 {
1872 Cell cell = point.cell;
1873 SourceObj.Row sourceObj = cell.sourceObj;
1874 SourceMaterial.Row row = (cell.isObjDyed ? sourceObj.DefaultMaterial : cell.matObj);
1875 if (sourceObj.tileType.IsBlockPass)
1876 {
1877 Effect.Get("smoke").Play(point);
1878 }
1879 Effect.Get("mine").Play(point).SetParticleColor(row.GetColor())
1880 .Emit(10 + EClass.rnd(10));
1881 point.PlaySound(row.GetSoundDead());
1882 row.AddBlood(point, 3);
1883 }
SourceMaterial.Row matObj
Definition: Cell.cs:1046
Definition: Effect.cs:7
static Effect Get(Effect original)
Definition: Effect.cs:80
void Play(float delay, Point from, float fixY=0f, Point to=null, Sprite sprite=null)
Definition: Effect.cs:100
SoundSource PlaySound(string id, bool synced=true, float v=1f, bool spatial=true)
Definition: Point.cs:1259
TileType tileType
Definition: RenderRow.cs:77
void AddBlood(Point p, int a=1)
string GetSoundDead(RenderRow c=null)
virtual bool IsBlockPass
Definition: TileType.cs:159

References SourceMaterial.Row.AddBlood(), Point.cell, Effect.Get(), SourceMaterial.Row.GetColor(), 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 1672 of file Map.cs.

1673 {
1675 {
1676 return;
1677 }
1678 Thing thing = null;
1679 if (r.components.Length == 0)
1680 {
1681 return;
1682 }
1684 if (recoverBlock)
1685 {
1686 thing = ((!(r is SourceFloor.Row)) ? ThingGen.CreateBlock(r.id, mat.id) : ThingGen.CreateFloor(r.id, mat.id, isPlatform));
1687 }
1688 else
1689 {
1690 RecipeSource recipeSource = RecipeManager.Get(r.RecipeID + (isPlatform ? "-b" : ""));
1691 if (recipeSource == null)
1692 {
1693 return;
1694 }
1695 string iDIngredient = recipeSource.GetIDIngredient();
1696 if (iDIngredient == null)
1697 {
1698 return;
1699 }
1700 thing = ThingGen.Create(iDIngredient);
1701 thing.ChangeMaterial(mat.alias);
1702 }
1704 {
1705 PutAway(thing);
1706 }
1707 else
1708 {
1709 TrySmoothPick(point, thing, c);
1710 }
1711 }
virtual bool IsBuildMode
Definition: ActionMode.cs:181
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:3210
bool godBuild
Definition: CoreDebug.cs:319
static Game game
Definition: EClass.cs:9
static CoreDebug debug
Definition: EClass.cs:49
bool disableUsermapBenefit
GamePrincipal principal
Definition: Game.cs:225
void TrySmoothPick(Cell cell, Thing t, Chara c)
Definition: Map.cs:1849
bool PutAway(Card c)
Definition: Map.cs:2610
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:79
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:275

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 732 of file Map.cs.

733 {
734 if (custom == null)
735 {
736 custom = new CustomData();
737 }
738 MapMetaData mapMetaData = new MapMetaData
739 {
740 name = EClass._zone.Name,
742 tag = (EClass._map.exportSetting?.tag ?? ""),
743 partial = partial,
744 underwater = EClass._zone.IsUnderwater
745 };
746 custom.id = (mapMetaData.id = id);
747 IO.SaveFile(_path + "meta", mapMetaData);
748 }
Version version
Definition: BaseCore.cs:17
static BaseCore Instance
Definition: BaseCore.cs:11
Definition: IO.cs:10
static void SaveFile(string path, object obj, bool compress=false, JsonSerializerSettings setting=null)
Definition: IO.cs:88
CustomData custom
Definition: Map.cs:40
MapExportSetting exportSetting
Definition: Map.cs:73
Version version
Definition: Map.cs:28
virtual string Name
Definition: Spatial.cs:509
virtual bool IsUnderwater
Definition: Zone.cs:273
int GetInt()
Definition: Version.cs:21

References EClass._map, EClass._zone, custom, exportSetting, Version.GetInt(), BaseCore.Instance, Zone.IsUnderwater, Spatial.Name, MapExportSetting.tag, version, and BaseCore.version.

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

◆ FindChara() [1/2]

Chara Map.FindChara ( int  uid)
inline

Definition at line 2658 of file Map.cs.

2659 {
2660 foreach (Chara chara in charas)
2661 {
2662 if (chara.uid == uid)
2663 {
2664 return chara;
2665 }
2666 }
2667 return null;
2668 }
int uid
Definition: Card.cs:125

References charas, and Card.uid.

◆ FindChara() [2/2]

◆ FindPublicArea()

BaseArea Map.FindPublicArea ( )
inline

Definition at line 2793 of file Map.cs.

2794 {
2795 return (from a in ((IEnumerable<BaseArea>)rooms.listArea).Concat((IEnumerable<BaseArea>)rooms.listRoom)
2796 where a.type.IsPublicArea
2797 select a).RandomItem();
2798 }
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

◆ FindThing() [2/6]

Thing Map.FindThing ( int  uid)
inline

Definition at line 2682 of file Map.cs.

2683 {
2684 foreach (Thing thing in things)
2685 {
2686 if (thing.uid == uid)
2687 {
2688 return thing;
2689 }
2690 }
2691 return null;
2692 }

References things, and Card.uid.

◆ FindThing() [3/6]

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

Definition at line 2753 of file Map.cs.

2754 {
2755 if (area1 == null && area2 == null)
2756 {
2757 return null;
2758 }
2759 Thing thing = null;
2760 PropSet orCreate = EClass._map.Installed.workMap.GetOrCreate(workTag);
2761 if (area1 != null)
2762 {
2763 IEnumerable<Card> enumerable = orCreate.Where((Card a) => a.pos.HasRoomOrArea(area1));
2764 if (enumerable.Count() > 0)
2765 {
2766 thing = enumerable.RandomItem() as Thing;
2767 }
2768 }
2769 if (thing == null && area2 != null)
2770 {
2771 IEnumerable<Card> enumerable2 = orCreate.Where((Card a) => a.pos.HasRoomOrArea(area2));
2772 if (enumerable2.Count() > 0)
2773 {
2774 thing = enumerable2.RandomItem() as Thing;
2775 }
2776 }
2777 return thing;
2778 }
PropsInstalled Installed
Definition: Map.cs:123
bool HasRoomOrArea(BaseArea a)
Definition: Point.cs:421
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 2780 of file Map.cs.

2781 {
2782 Thing result = null;
2783 IEnumerable<Card> enumerable = from a in EClass._map.Installed.workMap.GetOrCreate(workTag)
2784 where a.pos.IsPublicSpace()
2785 select a;
2786 if (enumerable.Count() > 0)
2787 {
2788 result = enumerable.RandomItem() as Thing;
2789 }
2790 return result;
2791 }

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

◆ FindThing() [5/6]

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

Definition at line 2723 of file Map.cs.

2724 {
2725 if (area1 == null && area2 == null)
2726 {
2727 return null;
2728 }
2729 Thing thing = Find(area1);
2730 if (thing == null && area2 != null)
2731 {
2732 thing = Find(area2);
2733 }
2734 return thing;
2735 Thing Find(BaseArea area)
2736 {
2737 _things.Clear();
2738 foreach (Thing thing2 in EClass._map.props.installed.things)
2739 {
2740 if (type.IsAssignableFrom(thing2.trait.GetType()) && thing2.pos.HasRoomOrArea(area))
2741 {
2742 _things.Add(thing2);
2743 }
2744 }
2745 if (_things.Count <= 0)
2746 {
2747 return null;
2748 }
2749 return _things.RandomItem();
2750 }
2751 }
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 2706 of file Map.cs.

2707 {
2708 _things.Clear();
2709 foreach (Thing thing in EClass._map.props.installed.things)
2710 {
2711 if (type.IsAssignableFrom(thing.trait.GetType()) && thing.pos.IsPublicSpace())
2712 {
2713 _things.Add(thing);
2714 }
2715 }
2716 if (_things.Count <= 0)
2717 {
2718 return null;
2719 }
2720 return _things.RandomItem();
2721 }
bool IsPublicSpace()
Definition: Point.cs:449

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 2694 of file Map.cs.

2694 : Trait
2695 {
2696 foreach (Thing thing in things)
2697 {
2698 if (thing.trait is T)
2699 {
2700 return thing.trait as T;
2701 }
2702 }
2703 return null;
2704 }
Definition: Trait.cs:7

References things, and Card.trait.

◆ ForeachCell()

◆ ForeachNeighbor()

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

Definition at line 2479 of file Map.cs.

2480 {
2481 int num = center.x;
2482 int num2 = center.z;
2483 Point point = new Point();
2484 for (int i = num - 1; i < num + 2; i++)
2485 {
2486 if (i < 0 || i >= Size)
2487 {
2488 continue;
2489 }
2490 for (int j = num2 - 1; j < num2 + 2; j++)
2491 {
2492 if (j >= 0 && j < Size)
2493 {
2494 point.Set(i, j);
2495 action(point);
2496 }
2497 }
2498 }
2499 }

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

◆ ForeachPoint()

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

Definition at line 2415 of file Map.cs.

2416 {
2417 Point point = new Point();
2418 for (int i = 0; i < Size; i++)
2419 {
2420 for (int j = 0; j < Size; j++)
2421 {
2422 action(point.Set(i, j));
2423 }
2424 }
2425 }

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 2438 of file Map.cs.

2439 {
2440 Point point = new Point();
2441 int num = (int)Mathf.Ceil(r);
2442 for (int i = _x - num; i < _x + num + 1; i++)
2443 {
2444 if (i < 0 || i >= Size)
2445 {
2446 continue;
2447 }
2448 for (int j = _z - num; j < _z + num + 1; j++)
2449 {
2450 if (j >= 0 && j < Size && (float)((i - _x) * (i - _x) + (j - _z) * (j - _z)) < r * r)
2451 {
2452 point.Set(i, j);
2453 action(point);
2454 }
2455 }
2456 }
2457 }

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

Referenced by SurvivalManager.GetRandomPoint(), 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().

◆ ForeachSquare()

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

Definition at line 2459 of file Map.cs.

2460 {
2461 Point point = new Point();
2462 for (int i = _x - r; i < _x + r + 1; i++)
2463 {
2464 if (i < 0 || i >= Size)
2465 {
2466 continue;
2467 }
2468 for (int j = _z - r; j < _z + r + 1; j++)
2469 {
2470 if (j >= 0 && j < Size)
2471 {
2472 point.Set(i, j);
2473 action(point);
2474 }
2475 }
2476 }
2477 }

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

Referenced by ListPointsInSquare().

◆ ForeachXYZ()

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

Definition at line 2427 of file Map.cs.

2428 {
2429 for (int i = 0; i < Size; i++)
2430 {
2431 for (int j = 0; j < Size; j++)
2432 {
2433 action(i, j);
2434 }
2435 }
2436 }

References MapBounds.Size.

Referenced by CreateNew().

◆ GetBackerObj()

SourceBacker.Row Map.GetBackerObj ( Point  p)
inline

Definition at line 1637 of file Map.cs.

1638 {
1639 if (!backerObjs.ContainsKey(p.index))
1640 {
1641 return null;
1642 }
1643 return EClass.sources.backers.map.TryGetValue(backerObjs[p.index]);
1644 }

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

Referenced by TaskHarvest.OnCreateProgress().

◆ GetCell()

Cell Map.GetCell ( int  index)
inline

Definition at line 900 of file Map.cs.

901 {
902 return cells[index % Size, index % SizeXZ / Size];
903 }
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 2235 of file Map.cs.

2236 {
2237 Cell right = cell.Right;
2238 if (right.HasRamp && !right.HasStairs && right.blockDir == 1)
2239 {
2240 return right;
2241 }
2242 Cell front = cell.Front;
2243 if (front.HasRamp && !front.HasStairs && front.blockDir == 0)
2244 {
2245 return front;
2246 }
2247 Cell left = cell.Left;
2248 if (left.HasRamp && !left.HasStairs && left.blockDir == 3)
2249 {
2250 return left;
2251 }
2252 Cell back = cell.Back;
2253 if (back.HasRamp && !back.HasStairs && back.blockDir == 2)
2254 {
2255 return back;
2256 }
2257 return null;
2258 }
Cell Back
Definition: Cell.cs:161
bool HasStairs
Definition: Cell.cs:863
Cell Front
Definition: Cell.cs:137
Cell Left
Definition: Cell.cs:173
Cell Right
Definition: Cell.cs:149
bool HasRamp
Definition: Cell.cs:845
int blockDir
Definition: Cell.cs:906

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 750 of file Map.cs.

751 {
752 try
753 {
754 using ZipFile zipFile = ZipFile.Read(pathZip);
755 ZipEntry zipEntry = zipFile["meta"];
756 if (zipEntry != null)
757 {
758 using (MemoryStream stream = new MemoryStream())
759 {
760 zipEntry.Extract(stream);
761 MapMetaData mapMetaData = IO.LoadStreamJson<MapMetaData>(stream);
762 mapMetaData.path = pathZip;
763 return mapMetaData;
764 }
765 }
766 }
767 catch (Exception message)
768 {
769 if (Application.isEditor)
770 {
771 Debug.Log(message);
772 }
773 }
774 return null;
775 }

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 2303 of file Map.cs.

2304 {
2305 Point point = new Point();
2306 int num = ((EClass.rnd(2) == 0) ? 1 : (-1));
2307 int num2 = ((EClass.rnd(2) == 0) ? 1 : (-1));
2308 for (int i = 0; i < 3; i++)
2309 {
2310 point.x = center.x - num + i * num;
2311 for (int j = 0; j < 3; j++)
2312 {
2313 point.z = center.z - num2 + j * num2;
2314 if (point.IsValid && point.area == null && point.cell.CanHarvest())
2315 {
2316 return point;
2317 }
2318 }
2319 }
2320 return Point.Invalid;
2321 }
bool CanHarvest()
Definition: Cell.cs:1700
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 2198 of file Map.cs.

2199 {
2200 Cell cell = cells[x, z];
2201 if (cell.HasFullBlock)
2202 {
2203 if (blockType == null)
2204 {
2205 blockType = cell.sourceBlock.tileType;
2206 }
2207 Cell right = cell.Right;
2208 Cell front = cell.Front;
2209 Cell left = cell.Left;
2210 Cell back = cell.Back;
2211 if (!right.HasBlock && !right.IsVoid && left.HasFullBlock && front.CanBuildRamp(1) && back.CanBuildRamp(1))
2212 {
2213 return 1;
2214 }
2215 if (!front.HasBlock && !front.IsVoid && back.HasFullBlock && left.CanBuildRamp(0) && right.CanBuildRamp(0))
2216 {
2217 return 0;
2218 }
2219 if (!left.HasBlock && !left.IsVoid && right.HasFullBlock && front.CanBuildRamp(3) && back.CanBuildRamp(3))
2220 {
2221 return 3;
2222 }
2223 if (!back.HasBlock && !back.IsVoid && front.HasFullBlock && left.CanBuildRamp(2) && right.CanBuildRamp(2))
2224 {
2225 return 2;
2226 }
2227 if (!blockType.IsRamp)
2228 {
2229 return 0;
2230 }
2231 }
2232 return -1;
2233 }
bool HasBlock
Definition: Cell.cs:651
bool CanBuildRamp(int dir)
Definition: Cell.cs:1155
bool HasFullBlock
Definition: Cell.cs:825
bool IsVoid
Definition: Cell.cs:967
bool IsRamp
Definition: TileType.cs:153

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 2278 of file Map.cs.

2279 {
2280 int num = 0;
2281 int num2 = 0;
2282 for (int i = 0; i < 10000; i++)
2283 {
2284 if (EClass.rnd(2) == 0)
2285 {
2286 num = ((EClass.rnd(2) == 0) ? EClass.rnd(r) : (Size - 1 - EClass.rnd(r)));
2287 num2 = EClass.rnd(Size);
2288 }
2289 else
2290 {
2291 num2 = ((EClass.rnd(2) == 0) ? EClass.rnd(r) : (Size - 1 - EClass.rnd(r)));
2292 num = EClass.rnd(Size);
2293 }
2294 Point surface = GetSurface(num, num2, walkable: false);
2295 if (surface.IsValid)
2296 {
2297 return surface;
2298 }
2299 }
2300 return GetSurface(Size / 2, Size / 2, walkable: false);
2301 }
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 ZoneEventSiege.GetSpawnPos(), and MapGen.MakeRiver().

◆ GetRandomPoint()

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

Definition at line 2260 of file Map.cs.

2261 {
2262 Point point = new Point();
2263 for (int i = 0; i < tries; i++)
2264 {
2265 point.x = center.x + EClass.rnd(radius * 2 + 1) - radius;
2266 point.z = center.z + EClass.rnd(radius * 2 + 1) - radius;
2267 point.Clamp();
2268 if ((!mustBeWalkable || !point.cell.blocked) && (!requireLos || Los.IsVisible(center, point)))
2269 {
2270 return point;
2271 }
2272 }
2273 Debug.Log("GetRandomPoint failed center:" + center?.ToString() + " rad:" + radius);
2274 point.IsValid = false;
2275 return point;
2276 }
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:1014

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

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

◆ ListChara()

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

Definition at line 2584 of file Map.cs.

2585 {
2586 List<Chara> list = new List<Chara>();
2587 foreach (Chara chara in charas)
2588 {
2589 if (chara.faction == faction)
2590 {
2591 list.Add(chara);
2592 }
2593 }
2594 return list;
2595 }

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 2349 of file Map.cs.

2350 {
2351 List<Chara> list = new List<Chara>();
2352 foreach (Point item in ListPointsInCircle(center, radius, mustBeWalkable: false, los))
2353 {
2354 CellDetail detail = item.detail;
2355 if (detail == null || detail.charas.Count <= 0)
2356 {
2357 continue;
2358 }
2359 foreach (Chara chara in item.detail.charas)
2360 {
2361 list.Add(chara);
2362 }
2363 }
2364 return list;
2365 }
List< Chara > charas
Definition: CellDetail.cs:13
List< Point > ListPointsInCircle(Point center, float radius, bool mustBeWalkable=true, bool los=true)
Definition: Map.cs:2323

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 2367 of file Map.cs.

2368 {
2369 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));
2370 Point point = new Point(0, 0);
2371 List<Point> list = new List<Point>();
2372 float diff = point.GetAngle2(to2);
2373 ForeachSphere(center.x, center.z, radius, delegate(Point p)
2374 {
2375 float angle2 = center.GetAngle2(p);
2376 if ((Mathf.Abs(diff - angle2) < angle || Mathf.Abs(diff - angle2 + 360f) < angle || Mathf.Abs(360f - diff + angle2) < angle) && Los.IsVisible(center, p) && !p.IsBlocked)
2377 {
2378 list.Add(p.Copy());
2379 }
2380 });
2381 return list;
2382 }
void ForeachSphere(int _x, int _z, float r, Action< Point > action)
Definition: Map.cs:2438
bool IsBlocked
Definition: Point.cs:363
float GetAngle2(Point to)
Definition: Point.cs:618

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 2323 of file Map.cs.

2324 {
2325 List<Point> list = new List<Point>();
2326 ForeachSphere(center.x, center.z, radius, delegate(Point p)
2327 {
2328 if ((!mustBeWalkable || !p.cell.blocked) && (!los || Los.IsVisible(center, p)))
2329 {
2330 list.Add(p.Copy());
2331 }
2332 });
2333 return list;
2334 }

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,
bool  returnOnBlocked = true 
)
inline

Definition at line 2384 of file Map.cs.

2385 {
2386 return Los.ListVisible(center, to, radius, null, returnOnBlocked);
2387 }
static List< Point > ListVisible(Point p1, Point p2, int radius, Action< Point, bool > _onVisit=null, bool returnOnBlocked=true)
Definition: Los.cs:90

References Los.ListVisible().

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

◆ ListPointsInSquare()

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

Definition at line 2336 of file Map.cs.

2337 {
2338 List<Point> list = new List<Point>();
2339 ForeachSquare(center.x, center.z, radius, delegate(Point p)
2340 {
2341 if ((!mustBeWalkable || !p.cell.blocked) && (!los || Los.IsVisible(center, p)))
2342 {
2343 list.Add(p.Copy());
2344 }
2345 });
2346 return list;
2347 }
void ForeachSquare(int _x, int _z, int r, Action< Point > action)
Definition: Map.cs:2459

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

Referenced by TaskDrawWater.OnCreateProgress(), TaskPlow.OnCreateProgress(), TaskPourWater.OnCreateProgress(), TaskDig.OnProgressComplete(), ActWater.Perform(), AI_Shear.Run(), TaskClean.Run(), and TaskWater.Run().

◆ ListThing< T >()

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

Definition at line 2597 of file Map.cs.

2597 : Trait
2598 {
2599 List<Thing> list = new List<Thing>();
2600 foreach (Thing thing in things)
2601 {
2602 if (thing.IsInstalled && thing.trait is T)
2603 {
2604 list.Add(thing);
2605 }
2606 }
2607 return list;
2608 }
bool IsInstalled
Definition: Card.cs:2451

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

◆ Load()

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

Definition at line 552 of file Map.cs.

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

1714 {
1715 bool flag = ActionMode.Mine.IsRoofEditMode() && point.cell._roofBlock != 0;
1716 if (!point.IsValid || (!flag && !point.cell.HasBlock))
1717 {
1718 return;
1719 }
1720 SourceMaterial.Row row = (flag ? point.matRoofBlock : point.matBlock);
1721 byte b = (flag ? point.cell._roofBlock : point.cell._block);
1722 SourceBlock.Row row2 = EClass.sources.blocks.rows[b];
1723 Effect.Get("smoke").Play(point);
1724 Effect.Get("mine").Play(point).SetParticleColor(row.GetColor())
1725 .Emit(10 + EClass.rnd(10));
1726 point.PlaySound(row.GetSoundDead(row2));
1727 row.AddBlood(point, 8);
1728 bool flag2 = c == null || c.IsAgent || c.IsPCFactionOrMinion;
1730 {
1731 flag2 = false;
1732 }
1733 if (flag)
1734 {
1735 point.cell._roofBlock = 0;
1736 RefreshSingleTile(point.x, point.z);
1737 }
1738 else
1739 {
1740 if (point.cell.HasFullBlock)
1741 {
1742 RemoveLonelyRamps(point.cell);
1743 }
1744 point.SetBlock();
1745 if (flag2 && point.sourceObj.tileType.IsBlockMount && mineObj)
1746 {
1747 MineObj(point, null, c);
1748 }
1749 }
1750 if (flag2)
1751 {
1752 DropBlockComponent(point, row2, row, recoverBlock, isPlatform: false, c);
1753 }
1754 RefreshShadow(point.x, point.z);
1755 RefreshShadow(point.x, point.z - 1);
1756 ValidateInstalled(point);
1757 RefreshFOV(point.x, point.z);
1758 if (flag2 && !point.cell.isModified && !flag)
1759 {
1760 if (b == 17 || EClass.rnd(100) == 0)
1761 {
1762 zone.AddCard(ThingGen.Create("money2"), point);
1763 }
1764 if (EClass._zone.DangerLv >= 10 && EClass.rnd(200) == 0)
1765 {
1766 zone.AddCard(ThingGen.Create("crystal_earth"), point);
1767 }
1768 if (EClass._zone.DangerLv >= 25 && EClass.rnd(200) == 0)
1769 {
1770 zone.AddCard(ThingGen.Create("crystal_sun"), point);
1771 }
1772 if (EClass._zone.DangerLv >= 40 && EClass.rnd(200) == 0)
1773 {
1774 zone.AddCard(ThingGen.Create("crystal_mana"), point);
1775 }
1776 point.cell.isModified = true;
1777 }
1778 }
override bool IsRoofEditMode(Card c=null)
Definition: AM_Mine.cs:19
static AM_Mine Mine
Definition: ActionMode.cs:33
bool IsPCFactionOrMinion
Definition: Card.cs:2342
bool isModified
Definition: Cell.cs:446
void RefreshSingleTile(int x, int z)
Definition: Map.cs:2148
void RefreshFOV(int x, int z, int radius=6, bool recalculate=false)
Definition: Map.cs:942
void MineObj(Point point, Task task=null, Chara c=null)
Definition: Map.cs:1885
void RemoveLonelyRamps(Cell cell)
Definition: Map.cs:2055
void ValidateInstalled(Point p)
Definition: Map.cs:2012
void DropBlockComponent(Point point, TileRow r, SourceMaterial.Row mat, bool recoverBlock, bool isPlatform=false, Chara c=null)
Definition: Map.cs:1672
void RefreshShadow(int x, int z)
Definition: Map.cs:1845
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:924
SourceBlock blocks
override int DangerLv
Definition: Zone.cs:112

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 1797 of file Map.cs.

1798 {
1799 if (!point.IsValid || (!point.HasFloor && !point.HasBridge))
1800 {
1801 return;
1802 }
1803 SourceMaterial.Row row = (point.cell.HasBridge ? point.matBridge : point.matFloor);
1804 SourceFloor.Row c2 = (point.cell.HasBridge ? point.sourceBridge : point.sourceFloor);
1805 Effect.Get("mine").Play(point).SetParticleColor(row.GetColor())
1806 .Emit(10 + EClass.rnd(10));
1807 point.PlaySound(row.GetSoundDead(c2));
1808 MineObj(point, null, c);
1809 if (point.cell.HasBridge && removePlatform)
1810 {
1811 DropBlockComponent(EClass.pc.pos, point.sourceBridge, point.matBridge, recoverBlock, isPlatform: true, c);
1812 EClass._map.SetBridge(point.x, point.z, 0, 0, 0, 0, 0);
1813 if (point.IsSky)
1814 {
1815 EClass.pc.Kick(point, ignoreSelf: true);
1816 }
1817 return;
1818 }
1820 {
1821 DropBlockComponent(EClass.pc.pos, point.sourceFloor, row, recoverBlock, isPlatform: false, c);
1822 SetFloor(point.x, point.z, 0, 90);
1823 if (point.IsSky)
1824 {
1825 EClass.pc.Kick(point, ignoreSelf: true);
1826 }
1827 return;
1828 }
1829 if (zone.IsRegion || point.cell._floor == 40)
1830 {
1831 Thing thing = ThingGen.CreateRawMaterial(row);
1832 thing.ChangeMaterial(row.alias);
1833 TrySmoothPick(point, thing, c);
1834 }
1835 else
1836 {
1837 DropBlockComponent(point, point.sourceFloor, row, recoverBlock, isPlatform: false, c);
1838 }
1839 if (!EClass._zone.IsRegion && !point.sourceFloor.components[0].Contains("chunk@soil"))
1840 {
1841 point.SetFloor(EClass.sources.floors.rows[1].DefaultMaterial.id, 40);
1842 }
1843 }
void Kick(Point p, bool ignoreSelf=false, bool checkWall=true)
Definition: Card.cs:6252
byte _floor
Definition: Cell.cs:36
bool HasBridge
Definition: Cell.cs:679
static Chara pc
Definition: EClass.cs:15
void SetBridge(int x, int z, int height=0, int idMat=0, int idBridge=0, int dir=0, byte idPillar=0)
Definition: Map.cs:993
void SetFloor(int x, int z, int idMat=0, int idFloor=0)
Definition: Map.cs:970
SourceMaterial.Row matFloor
Definition: Point.cs:57
bool HasBridge
Definition: Point.cs:221
bool IsSky
Definition: Point.cs:224
SourceMaterial.Row matBridge
Definition: Point.cs:59
void SetFloor(int idMat=0, int idFloor=0)
Definition: Point.cs:929
SourceFloor.Row sourceFloor
Definition: Point.cs:65
bool HasFloor
Definition: Point.cs:219
SourceFloor.Row sourceBridge
Definition: Point.cs:67
static Thing CreateRawMaterial(SourceMaterial.Row m)
Definition: ThingGen.cs:68
virtual bool IsSkyLevel
Definition: Zone.cs:271

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, Card.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 1885 of file Map.cs.

1886 {
1887 if (!point.IsValid || !point.HasObj)
1888 {
1889 return;
1890 }
1891 Cell cell = point.cell;
1892 SourceObj.Row sourceObj = cell.sourceObj;
1893 if (c == null && task != null)
1894 {
1895 c = task.owner;
1896 }
1897 bool num = c == null || c.IsAgent || c.IsPCFactionOrMinion;
1898 DestroyObj(point);
1899 if (num)
1900 {
1901 SourceMaterial.Row matObj_fixed = cell.matObj_fixed;
1902 if (task is TaskHarvest { IsReapSeed: not false })
1903 {
1904 int num2 = 1 + EClass.rnd(2) + ((EClass.rnd(3) == 0) ? 1 : 0);
1905 int soilCost = EClass._zone.GetSoilCost();
1906 int maxSoil = EClass._zone.MaxSoil;
1907 if (soilCost > maxSoil)
1908 {
1909 num2 -= EClass.rnd(2 + (soilCost - maxSoil) / 10);
1910 }
1911 if (num2 <= 0)
1912 {
1913 Msg.Say("seedSpoiled", cell.GetObjName());
1914 }
1915 else if (!EClass._zone.IsUserZone)
1916 {
1917 Thing t2 = TraitSeed.MakeSeed(cell).SetNum(num2);
1918 EClass.pc.PickOrDrop(point, t2);
1919 }
1920 if (cell.growth.IsTree)
1921 {
1922 cell.isHarvested = true;
1923 return;
1924 }
1925 }
1926 else if (sourceObj.HasGrowth)
1927 {
1928 cell.growth.PopMineObj(c);
1929 }
1930 else
1931 {
1932 if (cell.HasBlock && (sourceObj.id == 18 || sourceObj.id == 19))
1933 {
1934 MineBlock(point, recoverBlock: false, c, mineObj: false);
1935 }
1937 {
1938 if (EClass.game.survival.OnMineWreck(point))
1939 {
1940 Rand.SetSeed();
1941 return;
1942 }
1943 Rand.SetSeed();
1944 }
1945 switch (sourceObj.alias)
1946 {
1947 case "nest_bird":
1948 if (EClass.rnd(5) <= 1)
1949 {
1950 Pop(ThingGen.Create((EClass.rnd(10) == 0) ? "egg_fertilized" : "_egg").TryMakeRandomItem());
1951 }
1952 break;
1953 }
1954 int num3 = EClass.rnd(EClass.rnd(sourceObj.components.Length) + 1);
1955 string[] array = sourceObj.components[num3].Split('/');
1956 Thing thing = ThingGen.Create(array[0].Split('|')[0], matObj_fixed.alias);
1957 if (array.Length > 1)
1958 {
1959 thing.SetNum(EClass.rnd(array[1].ToInt()) + 1);
1960 }
1961 Pop(thing);
1962 }
1963 }
1964 SetObj(point.x, point.z);
1965 cell.gatherCount = 0;
1966 void Pop(Thing t)
1967 {
1969 {
1971 {
1972 EClass._map.PutAway(t);
1973 }
1974 else
1975 {
1976 TrySmoothPick(point, t, c);
1977 }
1978 }
1979 }
1980 }
static bool not(DramaManager dm, Dictionary< string, string > line, params string[] parameters)
new Chara owner
Definition: AIAct.cs:14
Thing TryMakeRandomItem(int lv=-1, TryMakeRandomItemSource itemSource=TryMakeRandomItemSource.Default, Chara crafter=null)
Definition: Card.cs:5707
Thing SetNum(int a)
Definition: Card.cs:3669
string GetObjName()
Definition: Cell.cs:1640
void PickOrDrop(Point p, string idThing, int idMat=-1, int num=1, bool msg=true)
Definition: Chara.cs:4495
SurvivalManager survival
Definition: Game.cs:228
bool IsSurvival
Definition: Game.cs:276
void PopMineObj(Chara c=null)
Definition: GrowSystem.cs:547
void DestroyObj(Point point)
Definition: Map.cs:1870
void MineBlock(Point point, bool recoverBlock=false, Chara c=null, bool mineObj=true)
Definition: Map.cs:1713
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
Definition: Rand.cs:4
static void SetSeed(int a=-1)
Definition: Rand.cs:44
bool HasGrowth
Definition: SourceObj.cs:28
bool OnMineWreck(Point point)
string alias
Definition: TileRow.cs:12
static Thing MakeSeed(string idSource)
Definition: TraitSeed.cs:105
virtual int MaxSoil
Definition: Zone.cs:520
int GetSoilCost()
Definition: Zone.cs:3914

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, Game.IsSurvival, GrowSystem.IsTree, Zone.IsUserZone, Point.IsValid, TraitSeed.MakeSeed(), Cell.matObj_fixed, Zone.MaxSoil, MineBlock(), not(), SurvivalManager.OnMineWreck(), EClass.pc, Chara.PickOrDrop(), GrowSystem.PopMineObj(), Game.principal, PutAway(), EClass.rnd(), Msg.Say(), EClass.scene, Card.SetNum(), SetObj(), Rand.SetSeed(), Cell.sourceObj, Game.survival, 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 1982 of file Map.cs.

1983 {
1984 point.PlaySound(point.cell.matObj.GetSoundDead(point.cell.sourceObj));
1985 }

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 1780 of file Map.cs.

1781 {
1782 if (point.IsValid && point.cell.HasFullBlock)
1783 {
1784 SourceMaterial.Row matBlock = point.matBlock;
1785 byte block = point.cell._block;
1786 Effect.Get("smoke").Play(point);
1787 Effect.Get("mine").Play(point).SetParticleColor(point.matBlock.GetColor())
1788 .Emit(10 + EClass.rnd(10));
1789 MineObj(point);
1790 int rampDir = EClass._map.GetRampDir(point.x, point.z, EClass.sources.blocks.rows[ramp].tileType);
1791 RemoveLonelyRamps(point.cell);
1792 SetBlock(point.x, point.z, point.cell._blockMat, ramp, rampDir);
1793 DropBlockComponent(point, EClass.sources.blocks.rows[block], matBlock, recoverBlock);
1794 }
1795 }
byte _blockMat
Definition: Cell.cs:34
int GetRampDir(int x, int z, TileType blockType=null)
Definition: Map.cs:2198

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 1193 of file Map.cs.

1194 {
1195 Cell cell = cells[x, z];
1196 if (amount <= 0 || (!cell.IsTopWaterAndNoSnow && !cell.IsSnowTile && !EClass._zone.IsUnderwater))
1197 {
1198 if (cell.effect == null && amount > 0)
1199 {
1200 SE.Play("fire");
1201 }
1202 int num = amount + (cell.effect?.FireAmount ?? 0);
1203 if (num > 20)
1204 {
1205 num = 20;
1206 }
1207 if (num <= 0)
1208 {
1209 cell.effect = null;
1210 return;
1211 }
1212 cell.effect = new CellEffect
1213 {
1214 id = 3,
1215 amount = num
1216 };
1218 }
1219 }
int FireAmount
Definition: CellEffect.cs:162
bool IsSnowTile
Definition: Cell.cs:790
bool IsTopWaterAndNoSnow
Definition: Cell.cs:720

References EClass._zone, cells, Cell.effect, effectManager, CellEffect.FireAmount, LogicalPointManager.GetOrCreate(), Cell.IsSnowTile, Cell.IsTopWaterAndNoSnow, Zone.IsUnderwater, 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 1558 of file Map.cs.

1559 {
1560 Cell cell = cells[x, z];
1561 if (!cell.IsTopWaterAndNoSnow && cell.effect != null)
1562 {
1563 cell.effect.amount += amount;
1564 if (cell.effect.amount <= 0)
1565 {
1566 cell.effect = null;
1567 }
1568 }
1569 }
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 853 of file Map.cs.

854 {
855 _AddCard(p.x, p.z, t, onAddToZone: false);
856 }

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 818 of file Map.cs.

819 {
820 if (t.isChara)
821 {
822 charas.Add(t.Chara);
823 }
824 else
825 {
826 things.Add(t.Thing);
827 }
829 if (t.isChara && new Point(x, z).cell.HasFullBlock)
830 {
831 DestroyBlock(x, z);
832 }
833 _AddCard(x, z, t, onAddToZone: true);
835 }
virtual Thing Thing
Definition: Card.cs:2110
void DestroyBlock(int x, int z)
Definition: Map.cs:2069
virtual void OnAddedToZone()
Definition: Trait.cs:716

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 837 of file Map.cs.

838 {
841 _RemoveCard(t);
842 t.parent = null;
843 if (t.isChara)
844 {
845 charas.Remove(t.Chara);
846 }
847 else
848 {
849 things.Remove(t.Thing);
850 }
851 }
void SetPlaceState(PlaceState newState, bool byPlayer=false)
Definition: Card.cs:3921
virtual void OnRemovedFromZone()
Definition: Trait.cs:720

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:64
override bool IsGlobal
Definition: Chara.cs:628
Definition: NoGoal.cs:4
void ClearMapHighlights()
Definition: Player.cs:2518
void RemoveCard(Card t)
Definition: Zone.cs:2126

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 726 of file Map.cs.

727 {
728 tasks = new TaskManager();
729 data.serializedCards.Restore(this, data.orgMap, addToZone: false);
730 }
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 720 of file Map.cs.

721 {
722 rooms.OnLoad();
723 tasks.OnLoad();
724 }
void OnLoad()
Definition: RoomManager.cs:26
void OnLoad()
Definition: TaskManager.cs:66

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

Referenced by Zone.Activate().

◆ 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 1045 of file Map.cs.

1046 {
1047 new Point(x, z);
1048 TryRemoveRoom(x, z);
1049 if (x > 0)
1050 {
1051 TryRemoveRoom(x - 1, z);
1052 }
1053 if (x < Size - 1)
1054 {
1055 TryRemoveRoom(x + 1, z);
1056 }
1057 if (z > 0)
1058 {
1059 TryRemoveRoom(x, z - 1);
1060 }
1061 if (z < Size - 1)
1062 {
1063 TryRemoveRoom(x, z + 1);
1064 }
1065 if (x > 0 && z < Size - 1)
1066 {
1067 TryRemoveRoom(x - 1, z + 1);
1068 }
1069 roomHash.Clear();
1070 TryAddRoom(x, z);
1071 if (x > 0)
1072 {
1073 TryAddRoom(x - 1, z);
1074 }
1075 if (x < Size - 1)
1076 {
1077 TryAddRoom(x + 1, z);
1078 }
1079 if (z > 0)
1080 {
1081 TryAddRoom(x, z - 1);
1082 }
1083 if (z < Size - 1)
1084 {
1085 TryAddRoom(x, z + 1);
1086 }
1087 if (x > 0 && z < Size - 1)
1088 {
1089 TryAddRoom(x - 1, z + 1);
1090 }
1091 }
HashSet< int > roomHash
Definition: Map.cs:105
void TryRemoveRoom(int x, int z)
Definition: Map.cs:1093
void TryAddRoom(int x, int z)
Definition: Map.cs:1105

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 2610 of file Map.cs.

2611 {
2613 {
2614 return false;
2615 }
2616 if (c.isChara)
2617 {
2619 {
2620 return false;
2621 }
2622 c.Destroy();
2623 return true;
2624 }
2625 Thing thing = c.Thing;
2626 if (thing.parent != null)
2627 {
2628 thing.parent.RemoveCard(thing);
2629 }
2630 thing.isMasked = false;
2631 thing.isRoofItem = false;
2632 if (EClass._zone.IsPCFaction && EClass._map.props.installed.traits.GetRandomThing<TraitSpotStockpile>() != null)
2633 {
2634 EClass._zone.TryAddThingInSpot<TraitSpotStockpile>(thing);
2635 return true;
2636 }
2637 if (EClass.debug.enable)
2638 {
2640 return true;
2641 }
2642 EClass.pc.Pick(thing, msg: false);
2643 return true;
2644 }
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:3273
ICardParent parent
Definition: Card.cs:56
void Destroy()
Definition: Card.cs:5284
virtual bool IsPC
Definition: Card.cs:2197
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
Definition: Chara.cs:4515
bool enable
Definition: CoreDebug.cs:301
Thing GetOrCreateDebugContainer()
Definition: CoreDebug.cs:781
bool ignoreBuildRule
Definition: CoreDebug.cs:200
TraitManager traits
Definition: Props.cs:18
virtual bool CanOnlyCarry
Definition: Trait.cs:305
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 2501 of file Map.cs.

2502 {
2503 Point point = new Point();
2504 int num;
2505 for (num = 0; num < Size; num++)
2506 {
2507 int num2;
2508 for (num2 = 0; num2 < Size; num2++)
2509 {
2510 point.x = num;
2511 point.z = num2;
2512 point.Copy().Animate(AnimeID.Quake, animeBlock: true);
2513 num2 += EClass.rnd(2);
2514 }
2515 num += EClass.rnd(2);
2516 }
2517 }
AnimeID
Definition: AnimeID.cs:2
Point Copy()
Definition: Point.cs:491
void Animate(AnimeID id, bool animeBlock=false)
Definition: Point.cs:1308

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

◆ QuickRefreshTile()

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

Definition at line 2183 of file Map.cs.

2184 {
2185 Cell cell = cells[x, z];
2186 Cell cell2 = ((x > 0) ? cells[x - 1, z] : Cell.Void);
2187 Cell cell3 = ((x + 1 < Size) ? cells[x + 1, z] : Cell.Void);
2188 Cell cell4 = ((z > 0) ? cells[x, z - 1] : Cell.Void);
2189 Cell cell5 = ((z + 1 < Size) ? cells[x, z + 1] : Cell.Void);
2190 Cell cell6 = ((x > 0 && z > 0) ? cells[x - 1, z - 1] : Cell.Void);
2191 Cell cell7 = ((x + 1 < Size && z > 0) ? cells[x + 1, z - 1] : Cell.Void);
2192 Cell cell8 = ((x > 0 && z + 1 < Size) ? cells[x - 1, z + 1] : Cell.Void);
2193 Cell cell9 = ((x + 1 < Size && z + 1 < Size) ? cells[x + 1, z + 1] : Cell.Void);
2194 cell.isSurrounded4d = cell2.HasFullBlock && cell3.HasFullBlock && cell4.HasFullBlock && cell5.HasFullBlock;
2195 cell.isSurrounded = cell.isSurrounded4d && cell6.HasFullBlock && cell7.HasFullBlock && cell8.HasFullBlock && cell9.HasFullBlock;
2196 }
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 2153 of file Map.cs.

2154 {
2155 for (int i = 0; i < Size; i++)
2156 {
2157 for (int j = 0; j < Size; j++)
2158 {
2159 cells[i, j].Refresh();
2160 }
2161 }
2162 }
void Refresh()
Definition: Cell.cs:1164

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

Referenced by Zone.Activate(), 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 942 of file Map.cs.

943 {
944 ForeachSphere(x, z, radius, delegate(Point p)
945 {
946 List<Card> list = p.ListCards();
947 if (recalculate)
948 {
949 foreach (Card item in list)
950 {
951 item.RecalculateFOV();
952 }
953 return;
954 }
955 foreach (Card item2 in list)
956 {
957 item2.CalculateFOV();
958 }
959 });
960 }

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

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

◆ RefreshFOVAll()

void Map.RefreshFOVAll ( )
inline

Definition at line 962 of file Map.cs.

963 {
964 foreach (Card item in ((IEnumerable<Card>)EClass._map.things).Concat((IEnumerable<Card>)EClass._map.charas))
965 {
966 item.RecalculateFOV();
967 }
968 }

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

Referenced by ColorProfile.OnValidate().

◆ RefreshNeighborTiles()

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

Definition at line 2164 of file Map.cs.

2165 {
2166 cells[x, z].Refresh();
2167 for (int i = x - 2; i < x + 3; i++)
2168 {
2169 if (i < 0 || i >= Size)
2170 {
2171 continue;
2172 }
2173 for (int j = z - 2; j < z + 3; j++)
2174 {
2175 if (j >= 0 && j < Size && (x != i || z != j))
2176 {
2177 cells[i, j].Refresh();
2178 }
2179 }
2180 }
2181 }

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

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

◆ RefreshShadow()

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

Definition at line 1845 of file Map.cs.

1846 {
1847 }

Referenced by MineBlock().

◆ RefreshSingleTile()

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

◆ RefreshSunMap()

void Map.RefreshSunMap ( )
inline

Definition at line 2800 of file Map.cs.

2801 {
2802 if (!isDirtySunMap)
2803 {
2804 return;
2805 }
2806 sunMap.Clear();
2807 foreach (Card sun in EClass._map.props.installed.traits.suns)
2808 {
2809 foreach (Point item in sun.trait.ListPoints(null, onlyPassable: false))
2810 {
2811 sunMap.Add(item.index);
2812 }
2813 }
2814 isDirtySunMap = false;
2815 }
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:864

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);
317 Game.Load(id, cloud: false);
318 RevealAll();
319 TweenUtil.Tween(0.1f, null, delegate
320 {
321 ReloadRoom();
322 });
323 }
Definition: Game.cs:9
static void Load(string id, bool cloud)
Definition: Game.cs:322
static string id
Definition: Game.cs:148
bool Save(bool isAutoSave=false, bool silent=false)
Definition: Game.cs:1040
void ReloadRoom()
Definition: Map.cs:325
void RevealAll(bool reveal=true)
Definition: Map.cs:918
Definition: Scene.cs:8
void Init(Mode newMode)
Definition: Scene.cs:178
Mode
Definition: Scene.cs:10

References EClass.game, Game.id, Scene.Init(), 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:58

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

2056 {
2057 for (int i = 0; i < 4; i++)
2058 {
2059 Cell dependedRamp = GetDependedRamp(cell);
2060 if (dependedRamp != null)
2061 {
2062 MineBlock(dependedRamp.GetPoint());
2063 continue;
2064 }
2065 break;
2066 }
2067 }
Point GetPoint()
Definition: Cell.cs:1113
Cell GetDependedRamp(Cell cell)
Definition: Map.cs:2235

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

Referenced by MineBlock(), and MineRamp().

◆ RemovePlant()

void Map.RemovePlant ( Point  pos)
inline

Definition at line 2007 of file Map.cs.

2008 {
2009 plants.Remove(pos.index);
2010 }

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

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:497
Point orgPos
Definition: Chara.cs:21
void MoveCard(Point p, Card t)
Definition: Map.cs:853
void Revive()
Definition: Zone.cs:1195

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 931 of file Map.cs.

932 {
933 ForeachSphere(center.x, center.z, 10 + power / 5, delegate(Point p)
934 {
935 if (EClass.rnd(power) >= Mathf.Min(p.Distance(center) * 10, power - 10))
936 {
937 EClass._map.SetSeen(p.x, p.z);
938 }
939 });
940 }
int Distance(Point p)
Definition: Point.cs:995

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 918 of file Map.cs.

919 {
920 for (int i = 0; i < Size; i++)
921 {
922 for (int j = 0; j < Size; j++)
923 {
924 EClass._map.SetSeen(i, j, reveal, refresh: false);
925 }
926 }
929 }
bool revealed
Definition: Map.cs:103
void SetSeen(int x, int z, bool seen=true, bool refresh=true)
Definition: Map.cs:905
static void UpdateMap(List< Cell > newPoints)

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

Referenced by BuildMenu.Activate(), Zone.ClaimZone(), ZoneProfile.Generate(), 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 byte[] array20 = new byte[num5];
413 byte[] array21 = new byte[num5];
414 cellEffects.Clear();
415 int num6 = 0;
416 for (int i = num; i < num + num3; i++)
417 {
418 for (int j = num2; j < num2 + num4; j++)
419 {
420 Cell cell = cells[i, j];
421 array[num6] = cell.objVal;
422 array3[num6] = cell._blockMat;
423 array2[num6] = cell._block;
424 array5[num6] = cell._floorMat;
425 array4[num6] = cell._floor;
426 array6[num6] = cell.obj;
427 array20[num6] = cell._deco;
428 array21[num6] = cell._decoMat;
429 array7[num6] = cell.objMat;
430 array8[num6] = cell.decal;
431 array9[num6] = cell._dirs;
432 array12[num6] = cell.height;
433 array13[num6] = cell._bridge;
434 array14[num6] = cell._bridgeMat;
435 array15[num6] = cell.bridgeHeight;
436 array17[num6] = cell._roofBlockDir;
437 array18[num6] = cell._roofBlock;
438 array19[num6] = cell._roofBlockMat;
439 array16[num6] = cell.bridgePillar;
440 array10[num6] = array10[num6].SetBit(1, cell.isSeen);
441 array10[num6] = array10[num6].SetBit(2, cell.isHarvested);
442 array10[num6] = array10[num6].SetBit(3, cell.impassable);
443 array10[num6] = array10[num6].SetBit(4, cell.isModified);
444 array10[num6] = array10[num6].SetBit(5, cell.isClearSnow);
445 array10[num6] = array10[num6].SetBit(6, cell.isForceFloat);
446 array10[num6] = array10[num6].SetBit(7, cell.isToggleWallPillar);
447 array11[num6] = array11[num6].SetBit(0, cell.isWatered);
448 array11[num6] = array11[num6].SetBit(1, cell.isObjDyed);
449 array11[num6] = array11[num6].SetBit(2, cell.crossWall);
450 if (cell.effect != null)
451 {
452 cellEffects[j * num4 + i] = cell.effect;
453 }
454 num6++;
455 }
456 }
458 Write(path + "objVals", array);
459 Write(path + "blocks", array2);
460 Write(path + "blockMats", array3);
461 Write(path + "floors", array4);
462 Write(path + "floorMats", array5);
463 Write(path + "objs", array6);
464 Write(path + "objMats", array7);
465 Write(path + "decal", array8);
466 Write(path + "flags", array10);
467 Write(path + "flags2", array11);
468 Write(path + "dirs", array9);
469 Write(path + "heights", array12);
470 Write(path + "bridges", array13);
471 Write(path + "bridgeMats", array14);
472 Write(path + "bridgeHeights", array15);
473 Write(path + "bridgePillars", array16);
474 Write(path + "roofBlocks", array18);
475 Write(path + "roofBlockMats", array19);
476 Write(path + "roofBlockDirs", array17);
477 Write(path + "decos", array20);
478 Write(path + "decoMats", array21);
479 things.Sort((Thing a, Thing b) => a.stackOrder - b.stackOrder);
480 if (export == null)
481 {
482 foreach (Chara chara in charas)
483 {
484 if (!chara.IsGlobal)
485 {
486 serializedCharas.Add(chara);
487 }
488 }
489 GameIO.SaveFile(path + "map", this);
490 }
491 else
492 {
493 export.serializedCards.cards.Clear();
494 if (partial == null)
495 {
496 MapExportSetting mapExportSetting = exportSetting ?? new MapExportSetting();
497 foreach (Chara chara2 in charas)
498 {
499 if (export.usermap)
500 {
501 if ((!mapExportSetting.clearLocalCharas || chara2.IsPCFactionOrMinion) && !chara2.trait.IsUnique && !chara2.IsPC)
502 {
503 export.serializedCards.Add(chara2);
504 }
505 }
506 else if (!chara2.IsGlobal && chara2.isPlayerCreation)
507 {
508 export.serializedCards.Add(chara2);
509 }
510 }
511 foreach (Thing thing in things)
512 {
513 if (thing.isPlayerCreation && thing.c_altName != "DebugContainer")
514 {
515 export.serializedCards.Add(thing);
516 }
517 }
518 }
519 else
520 {
521 foreach (Thing thing2 in things)
522 {
523 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)
524 {
525 export.serializedCards.Add(thing2);
526 }
527 }
528 }
529 List<Thing> list = things;
530 things = new List<Thing>();
531 GameIO.SaveFile(path + "map", this);
532 things = list;
533 }
534 serializedCharas.Clear();
535 void Write(string _path, byte[] bytes)
536 {
537 IO.WriteLZ4(_path, bytes, compression);
538 }
539 }
static AM_Copy Copy
Definition: ActionMode.cs:45
bool IsActive
Definition: ActionMode.cs:121
string c_altName
Definition: Card.cs:1633
byte objMat
Definition: Cell.cs:44
bool isHarvested
Definition: Cell.cs:338
bool isClearSnow
Definition: Cell.cs:458
byte _deco
Definition: Cell.cs:58
byte _decoMat
Definition: Cell.cs:60
byte objVal
Definition: Cell.cs:42
byte _floorMat
Definition: Cell.cs:38
byte _roofBlock
Definition: Cell.cs:52
byte height
Definition: Cell.cs:80
bool isWatered
Definition: Cell.cs:350
byte _roofBlockDir
Definition: Cell.cs:56
bool isToggleWallPillar
Definition: Cell.cs:566
byte _roofBlockMat
Definition: Cell.cs:54
bool isSeen
Definition: Cell.cs:290
byte obj
Definition: Cell.cs:40
bool isForceFloat
Definition: Cell.cs:314
bool impassable
Definition: Cell.cs:410
bool crossWall
Definition: Cell.cs:638
bool isObjDyed
Definition: Cell.cs:626
byte bridgeHeight
Definition: Cell.cs:82
byte _dirs
Definition: Cell.cs:30
byte bridgePillar
Definition: Cell.cs:90
new TraitChara trait
Definition: Chara.cs:509
override bool IsPC
Definition: Chara.cs:630
Definition: GameIO.cs:11
static void SaveFile(string path, object obj)
Definition: GameIO.cs:257
Compression
Definition: IO.cs:12
static void CreateDirectory(string path)
Definition: IO.cs:384
static void WriteLZ4(string _path, byte[] _bytes, Compression compression=Compression.None)
Definition: IO.cs:140
List< Chara > serializedCharas
Definition: Map.cs:43
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:34
virtual bool CanCopyInBlueprint
Definition: Trait.cs:166

References Cell._block, Cell._blockMat, Cell._bridge, Cell._bridgeMat, Cell._deco, Cell._decoMat, 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, CoreConfig.Test.compressSave, Core.config, 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, CoreConfig.test, 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 1022 of file Map.cs.

1023 {
1024 Cell cell = cells[x, z];
1025 bool hasFloodBlock = cell.HasFloodBlock;
1026 cell._blockMat = (byte)idMat;
1027 cell._block = (byte)idBlock;
1028 cell.blockDir = dir;
1029 if (cell.effect == null || !cell.effect.IsFire)
1030 {
1031 cell.effect = null;
1032 }
1033 cell.isToggleWallPillar = false;
1034 if (cell.room != null)
1035 {
1036 cell.room.SetDirty();
1037 }
1038 if (hasFloodBlock || cell.HasFloodBlock)
1039 {
1041 }
1043 }
bool IsFire
Definition: CellEffect.cs:147
bool HasFloodBlock
Definition: Cell.cs:1025
void OnSetBlockOrDoor(int x, int z)
Definition: Map.cs:1045

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 1017 of file Map.cs.

1018 {
1019 SetBlock(x, z, idMat, idBlock, 0);
1020 }

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 1186 of file Map.cs.

1187 {
1188 Cell cell = cells[x, z];
1189 cell._block = (byte)cell.sourceBlock.id;
1190 cell.blockDir = dir;
1191 }

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 2389 of file Map.cs.

2390 {
2391 if (size > Size / 2 + 1)
2392 {
2393 size = Size / 2 - 1;
2394 }
2395 bounds.SetBounds(Size / 2 - size, Size / 2 - size, Size / 2 + size, Size / 2 + size);
2396 }

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 2398 of file Map.cs.

2399 {
2400 bounds.SetBounds(b.x, b.z, b.maxX, b.maxZ);
2401 bounds.Size = b.Size;
2402 }

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,
byte  idPillar = 0 
)
inline

Definition at line 993 of file Map.cs.

994 {
995 Cell cell = cells[x, z];
996 cell.bridgeHeight = (byte)height;
997 cell._bridgeMat = (byte)idMat;
998 cell._bridge = (byte)idBridge;
999 cell.bridgePillar = idPillar;
1000 cell.floorDir = dir;
1001 if (cell.room != null)
1002 {
1003 cell.room.SetDirty();
1004 }
1006 }

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 2096 of file Map.cs.

2097 {
2098 cells[x, z].decal = (byte)((id != 0 && amount != 0) ? ((uint)(id * 8 + amount)) : 0u);
2099 if (refresh)
2100 {
2102 }
2103 }

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

◆ SetDeco()

void Map.SetDeco ( int  x,
int  z,
int  idMat,
int  idDeco 
)
inline

Definition at line 985 of file Map.cs.

986 {
987 Cell cell = cells[x, z];
988 cell._decoMat = (byte)idMat;
989 cell._deco = (byte)idDeco;
991 }

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

Referenced by Recipe.Build().

◆ SetEffect()

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

Definition at line 1553 of file Map.cs.

1554 {
1555 cells[x, z].effect = effect;
1556 }

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 975 of file Map.cs.

976 {
977 Cell cell = cells[x, z];
978 cell._floorMat = (byte)idMat;
979 cell._floor = (byte)idFloor;
980 cell.floorDir = dir;
983 }

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 970 of file Map.cs.

971 {
972 SetFloor(x, z, idMat, idFloor, 0);
973 }

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

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

◆ SetFoormark()

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

Definition at line 2105 of file Map.cs.

2106 {
2107 Cell cell = pos.cell;
2108 int tile = AngleToIndex(angle) + offset;
2109 Footmark footmark = new Footmark
2110 {
2111 tile = tile,
2112 remaining = 10
2113 };
2114 footmark.pos.Set(pos);
2115 footmarks.Add(footmark);
2116 cell.GetOrCreateDetail().footmark = footmark;
2117 }
Footmark footmark
Definition: CellDetail.cs:17
CellDetail GetOrCreateDetail()
Definition: Cell.cs:1569
Point pos
Definition: Footmark.cs:3
int AngleToIndex(int a)
Definition: Map.cs:2119
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 1531 of file Map.cs.

1532 {
1533 Cell cell = cells[x, z];
1534 if (!cell.IsTopWaterAndNoSnow || value == 0)
1535 {
1536 if (value > 3)
1537 {
1538 value = 3;
1539 }
1540 if (value <= 0)
1541 {
1542 cell.effect = null;
1543 return;
1544 }
1545 cell.effect = new CellEffect
1546 {
1547 id = id,
1548 amount = value
1549 };
1550 }
1551 }

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 1585 of file Map.cs.

1586 {
1587 Cell cell = cells[x, z];
1588 if (cell.sourceObj.id == 118 || idObj == 118)
1589 {
1590 EClass._zone.dirtyElectricity = true;
1591 }
1592 cell.obj = (byte)idObj;
1593 cell.objVal = (byte)value;
1594 cell.objMat = (byte)idMat;
1595 cell.objDir = dir;
1596 cell.isHarvested = false;
1597 cell.isObjDyed = false;
1598 SourceObj.Row sourceObj = cell.sourceObj;
1599 if (!ignoreRandomMat && !sourceObj.matCategory.IsEmpty())
1600 {
1601 int num = EClass._zone.DangerLv;
1602 if (sourceObj.tag.Contains("spot"))
1603 {
1604 num += EClass.pc.Evalue(1656) * 5;
1605 }
1606 cell.objMat = (byte)MATERIAL.GetRandomMaterialFromCategory(num, sourceObj.matCategory.Split(','), cell.matObj).id;
1607 }
1608 if (backerObjs.ContainsKey(cell.index))
1609 {
1610 backerObjs.Remove(cell.index);
1611 }
1612 if (plants.ContainsKey(cell.index))
1613 {
1614 plants.Remove(cell.index);
1615 }
1616 cell.growth?.OnSetObj();
1617 Critter.RebuildCritter(cell);
1619 }
int Evalue(int ele)
Definition: Card.cs:2704
virtual void OnSetObj()
Definition: GrowSystem.cs:283
static SourceMaterial.Row GetRandomMaterialFromCategory(int lv, string cat, SourceMaterial.Row fallback)
Definition: MATERIAL.cs:93
string[] tag
Definition: RenderRow.cs:58
string matCategory
Definition: SourceObj.cs:23

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 1008 of file Map.cs.

1009 {
1010 Cell cell = cells[x, z];
1011 cell._roofBlockMat = (byte)idMat;
1012 cell._roofBlock = (byte)idBlock;
1013 cell._roofBlockDir = (byte)(dir + height * 4);
1015 }

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 905 of file Map.cs.

906 {
907 if (cells[x, z].isSeen != seen)
908 {
909 cells[x, z].isSeen = seen;
910 if (refresh)
911 {
913 }
915 }
916 }

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 1105 of file Map.cs.

1106 {
1107 if (EClass._zone.DisableRooms || roomHash.Contains(x + z * Size) || cells[x, z].HasFloodBlock)
1108 {
1109 return;
1110 }
1111 FloodSpiller floodSpiller = flood;
1112 IFloodCell[,] array = cells;
1113 FloodSpiller.Result result = floodSpiller.SpillFlood(array, x, z);
1114 if (!result.IsValid)
1115 {
1116 return;
1117 }
1118 bool flag = false;
1119 foreach (IFloodCell item in result.visited)
1120 {
1121 if (item.hasDoor)
1122 {
1123 flag = true;
1124 break;
1125 }
1126 Cell cell = item as Cell;
1127 if (cell.sourceBlock.tileType.IsFloodDoor || cell.Front.hasDoor || cell.Right.hasDoor || cell.FrontRight.hasDoor || cell.Back.hasDoor || cell.Left.hasDoor || cell.BackLeft.hasDoor)
1128 {
1129 flag = true;
1130 break;
1131 }
1132 }
1133 if (!flag && IsIndoor)
1134 {
1135 foreach (IFloodCell item2 in result.visited)
1136 {
1137 Cell cell2 = item2 as Cell;
1138 if (cell2.detail == null || cell2.detail.things.Count == 0)
1139 {
1140 continue;
1141 }
1142 foreach (Thing thing in cell2.detail.things)
1143 {
1144 if (thing.trait is TraitRoomPlate || thing.trait is TraitHouseBoard)
1145 {
1146 flag = true;
1147 break;
1148 }
1149 }
1150 if (flag)
1151 {
1152 break;
1153 }
1154 }
1155 }
1156 if (!flag)
1157 {
1158 return;
1159 }
1160 Room room = rooms.AddRoom(new Room());
1161 foreach (IFloodCell item3 in result.visited)
1162 {
1163 Cell cell3 = item3 as Cell;
1164 byte b = cell3.x;
1165 byte b2 = cell3.z;
1166 room.AddPoint(new Point(b, b2));
1167 roomHash.Add(b + b2 * Size);
1168 if (b2 > 0 && cell3.Front.HasFloodBlock && cell3.Front.room == null)
1169 {
1170 room.AddPoint(new Point(b, b2 - 1));
1171 roomHash.Add(b + (b2 - 1) * Size);
1172 }
1173 if (b < Size - 1 && cell3.Right.HasFloodBlock && cell3.Right.room == null)
1174 {
1175 room.AddPoint(new Point(b + 1, b2));
1176 roomHash.Add(b + 1 + b2 * Size);
1177 }
1178 if (b2 > 0 && b < Size - 1 && cell3.FrontRight.HasFloodBlock && cell3.FrontRight.room == null)
1179 {
1180 room.AddPoint(new Point(b + 1, b2 - 1));
1181 roomHash.Add(b + 1 + (b2 - 1) * Size);
1182 }
1183 }
1184 }
Cell BackLeft
Definition: Cell.cs:221
bool hasDoor
Definition: Cell.cs:266
Cell FrontRight
Definition: Cell.cs:185
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:123

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

1993 {
1994 return plants.TryGetValue(c.index);
1995 }

References Cell.index, and plants.

◆ TryGetPlant() [2/2]

◆ TryLoadFile()

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

Definition at line 541 of file Map.cs.

542 {
543 byte[] array = IO.ReadLZ4(path + s, size, compression);
544 if (array == null)
545 {
546 Debug.Log("Couldn't load:" + s);
547 return new byte[size];
548 }
549 return array;
550 }
static byte[] ReadLZ4(string _path, int size, Compression compression)
Definition: IO.cs:158

References compression, and Debug.

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

◆ TryRemoveRoom()

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

Definition at line 1093 of file Map.cs.

1094 {
1095 if (!cells[x, z].HasFloodBlock)
1096 {
1097 Room room = cells[x, z].room;
1098 if (room != null)
1099 {
1100 rooms.RemoveRoom(room);
1101 }
1102 }
1103 }
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,
Card  CC = null 
)
inline

Definition at line 1221 of file Map.cs.

1222 {
1223 bool flag = false;
1224 if (CC != null && CC.IsPCFactionOrMinion && (CC.HasElement(1651) || EClass.pc.Evalue(1651) >= 2))
1225 {
1226 flag = true;
1227 }
1228 Element element = Element.Create(ele);
1229 List<Card> list = new List<Card>();
1230 bool fire = ele == 910;
1231 bool cold = ele == 911;
1232 _ = fire;
1233 List<Card> list2 = pos.ListCards();
1234 if (fire && (pos.cell.IsSnowTile || pos.cell.IsTopWater))
1235 {
1236 return;
1237 }
1238 foreach (Card item in list2)
1239 {
1240 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>()) || (cold && item.HasCondition<ConBurning>()))
1241 {
1242 continue;
1243 }
1244 if (flag)
1245 {
1246 if (item.isChara)
1247 {
1248 if (item.IsPCFactionOrMinion)
1249 {
1250 continue;
1251 }
1252 }
1253 else if (!CanCook(item))
1254 {
1255 continue;
1256 }
1257 }
1259 {
1260 Card rootCard = item.GetRootCard();
1261 if (!rootCard.isChara || rootCard.Chara.IsPCFaction)
1262 {
1263 if (pos.IsSync)
1264 {
1265 Msg.Say("damage_protectCore", item);
1266 }
1267 continue;
1268 }
1269 }
1270 if (item.isThing && item.things.Count == 0)
1271 {
1272 list.Add(item);
1273 }
1274 else
1275 {
1276 if (ele == 911 && item.HasElement(1236))
1277 {
1278 continue;
1279 }
1280 Thing thing = ((ele == 910) ? item.things.FindBest<TraitBlanketFireproof>((Thing t) => -t.c_charges) : item.things.FindBest<TraitBlanketColdproof>((Thing t) => -t.c_charges));
1281 if (thing != null)
1282 {
1283 thing.ModCharge(-1);
1284 Card rootCard2 = item.GetRootCard();
1285 if (pos.IsSync)
1286 {
1287 Msg.Say((item.isChara ? "blanketInv_" : "blanketGround_") + element.source.alias, thing, item);
1288 }
1289 if (thing.c_charges <= 0)
1290 {
1291 thing.Die(element);
1292 if (rootCard2.IsPCParty)
1293 {
1295 }
1296 }
1297 continue;
1298 }
1299 foreach (Thing item2 in item.things.List((Thing a) => a.things.Count == 0))
1300 {
1301 Card parentCard = item2.parentCard;
1302 if (parentCard == null || (!(parentCard.trait is TraitChestMerchant) && !parentCard.HasEditorTag(EditorTag.PreciousContainer)))
1303 {
1304 list.Add(item2);
1305 }
1306 }
1307 }
1308 }
1309 list.Shuffle();
1310 int num = 0;
1311 bool flag2 = false;
1312 foreach (Card item3 in list)
1313 {
1314 if (!item3.trait.CanBeDestroyed || item3.category.IsChildOf("currency") || item3.trait is TraitDoor || item3.trait is TraitFigure || item3.trait is TraitTrainingDummy || item3.rarity >= Rarity.Legendary)
1315 {
1316 continue;
1317 }
1318 Card rootCard3 = item3.GetRootCard();
1319 if (item3.IsEquipmentOrRangedOrAmmo && (EClass.rnd(4) != 0 || ((item3.IsRangedWeapon || item3.Thing.isEquipped) && rootCard3.IsPCFaction && EClass.rnd(4) != 0)))
1320 {
1321 continue;
1322 }
1323 switch (ele)
1324 {
1325 case 910:
1326 if (item3.isFireproof || (!item3.category.IsChildOf("book") && EClass.rnd(2) == 0))
1327 {
1328 continue;
1329 }
1330 break;
1331 case 911:
1332 if (!item3.category.IsChildOf("drink") && EClass.rnd(5) == 0)
1333 {
1334 continue;
1335 }
1336 break;
1337 }
1338 if (EClass.rnd(num * num) != 0)
1339 {
1340 continue;
1341 }
1342 bool flag3 = CanCook(item3);
1343 string text = "";
1344 if (flag3)
1345 {
1346 if (fire)
1347 {
1348 List<SourceThing.Row> list3 = new List<SourceThing.Row>();
1349 foreach (RecipeSource item4 in RecipeManager.list)
1350 {
1351 if (!(item4.row is SourceThing.Row { isOrigin: false, chance: not 0 } row) || row.components.IsEmpty() || (row.components.Length >= 3 && !row.components[2].StartsWith('+')) || !row.Category.IsChildOf("meal") || (row.HasTag(CTAG.dish_fail) && power > EClass.rnd(500)))
1352 {
1353 continue;
1354 }
1355 if (!row.factory.IsEmpty())
1356 {
1357 switch (row.factory[0])
1358 {
1359 case "chopper":
1360 case "mixer":
1361 case "camppot":
1362 case "cauldron":
1363 continue;
1364 }
1365 }
1366 if (row.components[0].Split('|').Contains(item3.id) || row.components[0].Split('|').Contains(item3.sourceCard._origin))
1367 {
1368 list3.Add(row);
1369 }
1370 }
1371 if (list3.Count > 0)
1372 {
1373 text = list3.RandomItemWeighted((SourceThing.Row r) => r.chance)?.id;
1374 }
1375 }
1376 else
1377 {
1378 text = "711";
1379 }
1380 }
1381 if (flag3 && !text.IsEmpty())
1382 {
1383 Thing thing2 = item3.Split(1);
1384 List<Thing> list4 = new List<Thing>();
1385 list4.Add(thing2);
1386 Thing thing3 = ThingGen.Create(text);
1387 CraftUtil.MakeDish(thing3, list4, 999);
1388 thing3.elements.ModBase(2, EClass.curve(power / 10, 50, 10));
1389 if (pos.IsSync)
1390 {
1391 Msg.Say(((rootCard3 == item3) ? "cook_groundItem" : "cook_invItem") + (fire ? "" : "_cold"), thing2, rootCard3, thing3.Name);
1392 }
1393 if (rootCard3 == item3)
1394 {
1395 EClass._zone.AddCard(thing3, item3.pos);
1396 }
1397 else if (rootCard3.isChara)
1398 {
1399 rootCard3.Chara.Pick(thing3, msg: false);
1400 }
1401 else
1402 {
1403 rootCard3.AddThing(thing3);
1404 }
1405 thing2.Destroy();
1406 }
1407 else
1408 {
1409 int num2 = EClass.rnd(item3.Num) / 2 + 1;
1410 if (item3.Num > num2)
1411 {
1412 Thing thing4 = item3.Split(num2);
1413 if (pos.IsSync)
1414 {
1415 Msg.Say((rootCard3 == item3) ? "damage_groundItem" : "damage_invItem", thing4, rootCard3);
1416 }
1417 thing4.Destroy();
1418 if (rootCard3.IsPCFaction)
1419 {
1420 WidgetPopText.Say("popDestroy".lang(thing4.Name, rootCard3.Name));
1421 }
1422 }
1423 else
1424 {
1425 item3.Die(element);
1426 if (rootCard3.IsPCFaction)
1427 {
1428 WidgetPopText.Say("popDestroy".lang(item3.Name, rootCard3.Name));
1429 }
1430 }
1431 }
1432 if (rootCard3.IsPCParty)
1433 {
1435 }
1436 if (!flag2)
1437 {
1438 pos.PlayEffect(fire ? "Element/eleFire" : "Element/eleCold");
1439 flag2 = true;
1440 }
1441 num++;
1442 }
1443 _ValidateInstalled(pos.x, pos.z);
1444 bool CanCook(Card c)
1445 {
1446 if ((fire || cold) && c.IsFood)
1447 {
1448 return c.category.IsChildOf("foodstuff");
1449 }
1450 return false;
1451 }
1452 }
CTAG
Definition: CTAG.cs:2
EditorTag
Definition: EditorTag.cs:2
int itemLost
Definition: AM_Adv.cs:110
static AM_Adv Adv
Definition: ActionMode.cs:15
string _origin
Definition: CardRow.cs:15
Thing Split(int a)
Definition: Card.cs:3658
ElementContainerCard elements
Definition: Card.cs:42
virtual void Die(Element e=null, Card origin=null, AttackSource attackSource=AttackSource.None, Chara originalTarget=null)
Definition: Card.cs:5216
virtual bool IsPCParty
Definition: Card.cs:2203
bool IsEquipmentOrRangedOrAmmo
Definition: Card.cs:2284
string Name
Definition: Card.cs:2191
bool IsFood
Definition: Card.cs:2229
void ModCharge(int a, bool destroy=false)
Definition: Card.cs:4124
bool HasEditorTag(EditorTag tag)
Definition: Card.cs:2733
bool isFireproof
Definition: Card.cs:677
Card GetRootCard()
Definition: Card.cs:3600
virtual bool IsPCFaction
Definition: Card.cs:2339
Card parentCard
Definition: Card.cs:106
virtual CardRow sourceCard
Definition: Card.cs:2183
Thing Add(string id, int num=1, int lv=1)
Definition: Card.cs:3250
SourceCategory.Row category
Definition: Card.cs:2101
int c_charges
Definition: Card.cs:1309
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6320
bool IsTopWater
Definition: Cell.cs:708
Definition: ConWet.cs:2
static void MakeDish(Thing food, int lv, Chara crafter=null, int seed=-1)
Definition: CraftUtil.cs:62
static int curve(long _a, int start, int step, int rate=75)
Definition: EClass.cs:69
static FactionBranch Branch
Definition: EClass.cs:23
Element ModBase(int ele, int v)
SourceElement.Row source
Definition: ELEMENT.cs:280
static Element Create(int id, int v=0)
Definition: ELEMENT.cs:1121
bool HasItemProtection
void _ValidateInstalled(int x, int y)
Definition: Map.cs:2021
bool IsSync
Definition: Point.cs:344
Effect PlayEffect(string id)
Definition: Point.cs:1254
static List< RecipeSource > list
RenderRow row
Definition: RecipeSource.cs:5
bool isEquipped
Definition: Thing.cs:17
virtual bool CanBeDestroyed
Definition: Trait.cs:307
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.Evalue(), Card.GetRootCard(), Card.HasEditorTag(), FactionBranch.HasItemProtection, 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, EClass.pc, Chara.Pick(), Card.pos, EClass.rnd(), RecipeSource.row, Msg.Say(), WidgetPopText.Say(), Card.Split(), and Card.trait.

Referenced by ActEffect.DamageEle(), and GameUpdater.FastSurfaceUpdater.FixedUpdate().

◆ TrySmoothPick() [1/2]

◆ TrySmoothPick() [2/2]

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

Definition at line 1854 of file Map.cs.

1855 {
1856 if (c != null && c.IsAgent)
1857 {
1858 EClass.pc.PickOrDrop(p, t);
1859 }
1860 else if (c != null && c.IsPC && (c.pos.Equals(p) || EClass.core.config.game.smoothPick || EClass._zone.IsRegion))
1861 {
1862 c.PickOrDrop(p, t);
1863 }
1864 else
1865 {
1866 EClass._zone.AddCard(t, p);
1867 }
1868 }
bool IsAgent
Definition: Card.cs:2303
new GameConfig game
Definition: CoreConfig.cs:617
bool Equals(int _x, int _z)
Definition: Point.cs:966

References EClass._zone, Zone.AddCard(), Core.config, EClass.core, Point.Equals(), CoreConfig.game, Card.IsAgent, Chara.IsPC, 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 777 of file Map.cs.

778 {
780 ZipFile zipFile = ZipFile.Read(pathZip);
781 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
782 zipFile.ExtractAll(IO.TempPath);
783 zipFile.Dispose();
784 EClass._map.ExportMetaData(IO.TempPath + "/", Path.GetFileNameWithoutExtension(pathZip), partial);
785 using (zipFile = new ZipFile())
786 {
787 zipFile.ExtractExistingFile = ExtractExistingFileAction.OverwriteSilently;
788 zipFile.AddDirectory(IO.TempPath);
789 zipFile.Save(pathZip);
790 zipFile.Dispose();
791 }
793 }
static void CreateTempDirectory(string path=null)
Definition: IO.cs:419
static string TempPath
Definition: IO.cs:63
static void DeleteTempDirectory(string path=null)
Definition: IO.cs:424
void ExportMetaData(string _path, string id, PartialMap partial=null)
Definition: Map.cs:732

References EClass._map, and ExportMetaData().

Referenced by PartialMap.Update().

◆ ValidateInstalled()

void Map.ValidateInstalled ( Point  p)
inline

Definition at line 2012 of file Map.cs.

2013 {
2014 _ValidateInstalled(p.x, p.z);
2015 _ValidateInstalled(p.x + 1, p.z);
2016 _ValidateInstalled(p.x - 1, p.z);
2017 _ValidateInstalled(p.x, p.z + 1);
2018 _ValidateInstalled(p.x, p.z - 1);
2019 }

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

Referenced by MineBlock().

◆ ValidateVersion()

void Map.ValidateVersion ( )
inline

Definition at line 715 of file Map.cs.

716 {
718 }

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 ReligionManager.ジュアさまの薄い本をください(), ActPlan._Update(), Zone.Activate(), ActionMode.Activate(), SerializedCards.Add(), Zone.AddGlobalCharasOnActivate(), LayerSleep.Advance(), ZoneEventQuest.AggroEnemy(), Chara.BanishAllMinions(), 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(), AI_Mofu.GetMofu(), Zone.GetRandomVisitPos(), TaskCullLife.GetTarget(), QuestManager.HasFarAwayEscort(), Chara.HasMinion(), TraitShackle.IsRestraining(), ListChara(), Point.ListCharasInRadius(), Zone.ListMinions(), Region.ListMobs(), CraftUtil.MakeDarkSoup(), DramaOutcome.marry(), Chara.MoveZone(), Zone.OnActivate(), Zone_Casino.OnActivate(), Zone_LittleGarden.OnActivate(), TraitTrap.OnActivateTrap(), FactionBranch.OnAfterSimulate(), Zone_WindRest.OnAfterSimulate(), AI_Torture.OnCancelOrSuccess(), OnCardAddedToZone(), OnCardRemovedFromZone(), NotificationBattle.OnClick(), NotificationGuest.OnClick(), AM_EditMarker.OnDeactivate(), OnDeactivate(), QuestDeliver.OnEnterZone(), 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(), ZoneEventSiege.OnVisit(), DramaManager.ParseLine(), ActCryRage.Perform(), ActCrySad.Perform(), ActSummonGuard.Perform(), ActEffect.Proc(), ActEffect.ProcAt(), Card.PurgeDuplicateArtifact(), Card.PurgeEythArtifact(), Zone.RefreshCriminal(), Zone.RefreshDeathSentense(), RefreshFOVAll(), Zone.RefreshListCitizen(), WidgetMinimap.RefreshMarkers(), LayerQuestBoard.RefreshQuest(), ActionMode.RefreshTexts(), CoreDebug.RegenerateNames(), Chara.RequestProtection(), ResetEditorPos(), Zone.ResetHostility(), Resize(), AI_Fuck.Run(), AI_Idle.Run(), AI_Offer.Run(), GoalCombat.Run(), Save(), WidgetSearch.Search(), Zone.SetAlarm(), 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(), Chara.TryClearInventory(), ThingGen.TryLickChest(), GoalCombat.TryUseAbility(), Chara.UnmakeMinion(), GameUpdater.Update(), CoreDebug.UpdateInput(), Player.UpdateNyan(), 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

◆ 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 Zone.Activate(), 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_Awning(), 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(), ZoneEventWedding.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(), Zone_CurryRuinDungeon.SetAlarm(), 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(), Zone.OnActivate(), Zone_Nefu.OnActivate(), 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 Zone.Activate(), MapSubset.OnSave(), ActSwarm.Perform(), 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: