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

Public Member Functions

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

Static Public Member Functions

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

Public Attributes

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

Static Public Attributes

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

Protected Member Functions

virtual void OnSerializing ()
 

Properties

bool isBreakerDown [get, set]
 
PropsStocked Stocked [get]
 
PropsInstalled Installed [get]
 
PropsRoaming Roaming [get]
 
float sizeModifier [get]
 
bool isGenerated [get]
 
bool IsIndoor [get]
 
int SizeXZ [get]
 
IEnumerable< CardCards [get]
 
- Properties inherited from MapBounds
int CenterX [get]
 
int CenterZ [get]
 
int Width [get]
 
int Height [get]
 
- Properties inherited from EClass
static Game game [get]
 
static bool AdvMode [get]
 
static Player player [get]
 
static Chara pc [get]
 
static UI ui [get]
 
static Map _map [get]
 
static Zone _zone [get]
 
static FactionBranch Branch [get]
 
static FactionBranch BranchOrHomeBranch [get]
 
static Faction Home [get]
 
static Faction Wilds [get]
 
static Scene scene [get]
 
static BaseGameScreen screen [get]
 
static GameSetting setting [get]
 
static GameData gamedata [get]
 
static ColorProfile Colors [get]
 
static World world [get]
 
static SourceManager sources [get]
 
static SourceManager editorSources [get]
 
static SoundManager Sound [get]
 
static CoreDebug debug [get]
 

Private Member Functions

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

Private Attributes

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

Detailed Description

Definition at line 12 of file Map.cs.

Member Function Documentation

◆ _AddCard()

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

Definition at line 840 of file Map.cs.

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

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

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

◆ _RemoveCard()

void Map._RemoveCard ( Card  t)
inline

Definition at line 865 of file Map.cs.

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

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

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

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

1571 {
1573 int num = ((!draw) ? 1 : 2);
1574 EClass._map.bounds.ForeachCell(delegate(Cell c)
1575 {
1576 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"))
1577 {
1578 backerObjs[c.index] = item.id;
1579 Debug.Log(c.index + "/" + c.x + "/" + c.z + "/" + item.id + "/" + item.Name + "/" + item.tree);
1580 num--;
1582 }
1583 });
1584 }
static int indexTree
Definition: BackerContent.cs:3
Definition: Cell.cs:7
GrowSystem growth
Definition: Cell.cs:225
byte z
Definition: Cell.cs:58
byte x
Definition: Cell.cs:56
int index
Definition: Cell.cs:114
bool ignoreBackerDestoryFlag
Definition: CoreConfig.cs:553
CoreConfig config
Definition: Core.cs:70
static Core core
Definition: EClass.cs:6
static Map _map
Definition: EClass.cs:18
static SourceManager sources
Definition: EClass.cs:42
static Player player
Definition: EClass.cs:12
virtual bool IsMature
Definition: GrowSystem.cs:103
virtual bool IsTree
Definition: GrowSystem.cs:87
void ForeachCell(Action< Cell > action)
Definition: MapBounds.cs:279
Dictionary< int, int > backerObjs
Definition: Map.cs:67
MapBounds bounds
Definition: Map.cs:52
HashSet< int > doneBackers
Definition: Player.cs:993
List< Row > listTree
Definition: SourceBacker.cs:73
SourceBacker backers

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

Referenced by Zone_Field.OnGenerateMap().

◆ AddCardOnActivate()

void Map.AddCardOnActivate ( Card  c)
inline

Definition at line 777 of file Map.cs.

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

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

Referenced by Zone.AddGlobalCharasOnActivate().

◆ AddDecal()

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

Definition at line 2014 of file Map.cs.

2015 {
2016 if (x < 0 || z < 0 || x >= Size || z >= Size)
2017 {
2018 return;
2019 }
2020 Cell cell = cells[x, z];
2021 if (cell.sourceFloor.tileType.AllowBlood && (cell.decal / 8 == id || cell.decal % 8 <= amount))
2022 {
2023 if (cell.decal / 8 != id && cell.decal % 8 == 0)
2024 {
2025 amount--;
2026 }
2027 int num = Mathf.Clamp(((cell.decal / 8 == id) ? (cell.decal % 8) : 0) + amount, 0, 7);
2028 cell.decal = (byte)(id * 8 + num);
2029 if (refresh)
2030 {
2032 }
2033 }
2034 }
SourceFloor.Row sourceFloor
Definition: Cell.cs:1054
byte decal
Definition: Cell.cs:44
int Size
Definition: MapBounds.cs:20
void RefreshNeighborTiles(int x, int z)
Definition: Map.cs:2104
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 1937 of file Map.cs.

1938 {
1939 PlantData plantData = new PlantData
1940 {
1941 seed = seed
1942 };
1943 plants[pos.index] = plantData;
1944 return plantData;
1945 }
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 2059 of file Map.cs.

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

References EClass._zone, and Spatial.IsRegion.

Referenced by SetFoormark().

◆ ApplyBackerObj()

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

Definition at line 1595 of file Map.cs.

1596 {
1597 if (!p.HasObj)
1598 {
1599 return;
1600 }
1601 bool flag = p.sourceObj.id == 82;
1602 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)));
1603 if (row == null)
1604 {
1605 return;
1606 }
1608 {
1609 backerObjs[p.index] = row.id;
1610 if (flag)
1611 {
1612 p.cell.objDir = row.skin;
1613 }
1614 }
1615 else
1616 {
1617 backerObjs.Remove(p.index);
1618 }
1619 }
static int indexRemain
Definition: BackerContent.cs:5
bool HasObj
Definition: Point.cs:137
List< Row > listRemain
Definition: SourceBacker.cs:67

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

Referenced by BackerContentInspector.ContentObj.Apply().

◆ Burn()

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

Definition at line 1403 of file Map.cs.

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

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

1521 {
1522 ForeachCell(delegate(Cell c)
1523 {
1524 c.effect = null;
1525 c.decal = 0;
1526 });
1527 }
new void ForeachCell(Action< Cell > action)
Definition: Map.cs:2331

References ForeachCell().

Referenced by Zone.Export().

◆ CountChara()

int Map.CountChara ( Faction  faction)
inline

Definition at line 2426 of file Map.cs.

2427 {
2428 int num = 0;
2429 foreach (Chara chara in charas)
2430 {
2431 if (chara.faction == faction)
2432 {
2433 num++;
2434 }
2435 }
2436 return num;
2437 }
Faction faction
Definition: Chara.cs:423
List< Chara > charas
Definition: Map.cs:81

References charas, and Chara.faction.

◆ CountGuest()

int Map.CountGuest ( )
inline

Definition at line 2439 of file Map.cs.

2440 {
2441 int num = 0;
2442 foreach (Chara chara in charas)
2443 {
2444 if (chara.IsGuest())
2445 {
2446 num++;
2447 }
2448 }
2449 return num;
2450 }
bool IsGuest()
Definition: Chara.cs:6124

References charas, and Chara.IsGuest().

◆ CountHostile()

int Map.CountHostile ( )
inline

Definition at line 2452 of file Map.cs.

2453 {
2454 int num = 0;
2455 foreach (Chara chara in charas)
2456 {
2457 if (!chara.IsPCFaction && chara.IsHostile())
2458 {
2459 num++;
2460 }
2461 }
2462 return num;
2463 }
override bool IsPCFaction
Definition: Chara.cs:667
bool IsHostile()
Definition: Chara.cs:6041

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

◆ CountNonHostile()

int Map.CountNonHostile ( )
inline

Definition at line 2478 of file Map.cs.

2479 {
2480 int num = 0;
2481 foreach (Chara chara in charas)
2482 {
2483 if (!chara.IsPCFaction && !chara.IsHostile())
2484 {
2485 num++;
2486 }
2487 }
2488 return num;
2489 }

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

◆ CountWildAnimal()

int Map.CountWildAnimal ( )
inline

Definition at line 2465 of file Map.cs.

2466 {
2467 int num = 0;
2468 foreach (Chara chara in charas)
2469 {
2470 if (!chara.IsPCFaction && chara.race.IsAnimal)
2471 {
2472 num++;
2473 }
2474 }
2475 return num;
2476 }
SourceRace.Row race
Definition: Chara.cs:460

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

◆ CreateNew()

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

Definition at line 153 of file Map.cs.

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

2010 {
2011 SetBlock(x, z);
2012 }
void SetBlock(int x, int z, int idMat=0, int idBlock=0)
Definition: Map.cs:990

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

Referenced by OnCardAddedToZone().

◆ DestroyObj()

void Map.DestroyObj ( Point  point)
inline

Definition at line 1819 of file Map.cs.

1820 {
1821 Cell cell = point.cell;
1822 SourceObj.Row sourceObj = cell.sourceObj;
1823 SourceMaterial.Row matObj = cell.matObj;
1824 if (sourceObj.tileType.IsBlockPass)
1825 {
1826 Effect.Get("smoke").Play(point);
1827 }
1828 Effect.Get("mine").Play(point).SetParticleColor(cell.matObj.GetColor())
1829 .Emit(10 + EClass.rnd(10));
1830 point.PlaySound(matObj.GetSoundDead());
1831 matObj.AddBlood(point, 3);
1832 }
SourceMaterial.Row matObj
Definition: Cell.cs:1036
Definition: Effect.cs:7
static Effect Get(Effect original)
Definition: Effect.cs:85
void Play(float delay, Point from, float fixY=0f, Point to=null, Sprite sprite=null)
Definition: Effect.cs:100
SoundSource PlaySound(string id, bool synced=true, float v=1f, bool spatial=true)
Definition: Point.cs:1233
TileType tileType
Definition: RenderRow.cs:77
void AddBlood(Point p, int a=1)
string GetSoundDead(RenderRow c=null)
virtual bool IsBlockPass
Definition: TileType.cs:153

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

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

◆ DropBlockComponent()

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

Definition at line 1621 of file Map.cs.

1622 {
1624 {
1625 return;
1626 }
1627 Thing thing = null;
1628 if (r.components.Length == 0)
1629 {
1630 return;
1631 }
1633 if (recoverBlock)
1634 {
1635 thing = ((!(r is SourceFloor.Row)) ? ThingGen.CreateBlock(r.id, mat.id) : ThingGen.CreateFloor(r.id, mat.id, isPlatform));
1636 }
1637 else
1638 {
1639 RecipeSource recipeSource = RecipeManager.Get(r.RecipeID + (isPlatform ? "-b" : ""));
1640 if (recipeSource == null)
1641 {
1642 return;
1643 }
1644 string iDIngredient = recipeSource.GetIDIngredient();
1645 if (iDIngredient == null)
1646 {
1647 return;
1648 }
1649 thing = ThingGen.Create(iDIngredient);
1650 thing.ChangeMaterial(mat.alias);
1651 }
1653 {
1654 PutAway(thing);
1655 }
1656 else
1657 {
1658 TrySmoothPick(point, thing, c);
1659 }
1660 }
virtual bool IsBuildMode
Definition: ActionMode.cs:181
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:2957
bool godBuild
Definition: CoreDebug.cs:303
static Game game
Definition: EClass.cs:8
static CoreDebug debug
Definition: EClass.cs:48
bool disableUsermapBenefit
GamePrincipal principal
Definition: Game.cs:221
void TrySmoothPick(Cell cell, Thing t, Chara c)
Definition: Map.cs:1798
bool PutAway(Card c)
Definition: Map.cs:2517
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:266

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

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

◆ ExportMetaData()

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

Definition at line 716 of file Map.cs.

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

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

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

◆ FindChara() [1/2]

Chara Map.FindChara ( int  uid)
inline

Definition at line 2565 of file Map.cs.

2566 {
2567 foreach (Chara chara in charas)
2568 {
2569 if (chara.uid == uid)
2570 {
2571 return chara;
2572 }
2573 }
2574 return null;
2575 }
int uid
Definition: Card.cs:118

References charas, and Card.uid.

◆ FindChara() [2/2]

Chara Map.FindChara ( string  id)
inline

Definition at line 2553 of file Map.cs.

2554 {
2555 foreach (Chara chara in charas)
2556 {
2557 if (chara.id == id)
2558 {
2559 return chara;
2560 }
2561 }
2562 return null;
2563 }
string id
Definition: Card.cs:31

References charas, and Card.id.

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

◆ FindPublicArea()

BaseArea Map.FindPublicArea ( )
inline

Definition at line 2700 of file Map.cs.

2701 {
2702 return (from a in ((IEnumerable<BaseArea>)rooms.listArea).Concat((IEnumerable<BaseArea>)rooms.listRoom)
2703 where a.type.IsPublicArea
2704 select a).RandomItem();
2705 }
RoomManager rooms
Definition: Map.cs:31
List< Room > listRoom
Definition: RoomManager.cs:13
List< Area > listArea
Definition: RoomManager.cs:10

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

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

◆ FindThing() [1/6]

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

Definition at line 2577 of file Map.cs.

2578 {
2579 foreach (Thing thing in things)
2580 {
2581 if (func(thing))
2582 {
2583 return thing;
2584 }
2585 }
2586 return null;
2587 }
List< Thing > things
Definition: Map.cs:49

References things.

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

◆ FindThing() [2/6]

Thing Map.FindThing ( int  uid)
inline

Definition at line 2589 of file Map.cs.

2590 {
2591 foreach (Thing thing in things)
2592 {
2593 if (thing.uid == uid)
2594 {
2595 return thing;
2596 }
2597 }
2598 return null;
2599 }

References things, and Card.uid.

◆ FindThing() [3/6]

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

Definition at line 2660 of file Map.cs.

2661 {
2662 if (area1 == null && area2 == null)
2663 {
2664 return null;
2665 }
2666 Thing thing = null;
2667 PropSet orCreate = EClass._map.Installed.workMap.GetOrCreate(workTag);
2668 if (area1 != null)
2669 {
2670 IEnumerable<Card> enumerable = orCreate.Where((Card a) => a.pos.HasRoomOrArea(area1));
2671 if (enumerable.Count() > 0)
2672 {
2673 thing = enumerable.RandomItem() as Thing;
2674 }
2675 }
2676 if (thing == null && area2 != null)
2677 {
2678 IEnumerable<Card> enumerable2 = orCreate.Where((Card a) => a.pos.HasRoomOrArea(area2));
2679 if (enumerable2.Count() > 0)
2680 {
2681 thing = enumerable2.RandomItem() as Thing;
2682 }
2683 }
2684 return thing;
2685 }
PropsInstalled Installed
Definition: Map.cs:123
bool HasRoomOrArea(BaseArea a)
Definition: Point.cs:409
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 2687 of file Map.cs.

2688 {
2689 Thing result = null;
2690 IEnumerable<Card> enumerable = from a in EClass._map.Installed.workMap.GetOrCreate(workTag)
2691 where a.pos.IsPublicSpace()
2692 select a;
2693 if (enumerable.Count() > 0)
2694 {
2695 result = enumerable.RandomItem() as Thing;
2696 }
2697 return result;
2698 }

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

◆ FindThing() [5/6]

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

Definition at line 2630 of file Map.cs.

2631 {
2632 if (area1 == null && area2 == null)
2633 {
2634 return null;
2635 }
2636 Thing thing = Find(area1);
2637 if (thing == null && area2 != null)
2638 {
2639 thing = Find(area2);
2640 }
2641 return thing;
2642 Thing Find(BaseArea area)
2643 {
2644 _things.Clear();
2645 foreach (Thing thing2 in EClass._map.props.installed.things)
2646 {
2647 if (type.IsAssignableFrom(thing2.trait.GetType()) && thing2.pos.HasRoomOrArea(area))
2648 {
2649 _things.Add(thing2);
2650 }
2651 }
2652 if (_things.Count <= 0)
2653 {
2654 return null;
2655 }
2656 return _things.RandomItem();
2657 }
2658 }
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 2613 of file Map.cs.

2614 {
2615 _things.Clear();
2616 foreach (Thing thing in EClass._map.props.installed.things)
2617 {
2618 if (type.IsAssignableFrom(thing.trait.GetType()) && thing.pos.IsPublicSpace())
2619 {
2620 _things.Add(thing);
2621 }
2622 }
2623 if (_things.Count <= 0)
2624 {
2625 return null;
2626 }
2627 return _things.RandomItem();
2628 }
bool IsPublicSpace()
Definition: Point.cs:437

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

2601 : Trait
2602 {
2603 foreach (Thing thing in things)
2604 {
2605 if (thing.trait is T)
2606 {
2607 return thing.trait as T;
2608 }
2609 }
2610 return null;
2611 }
Definition: Trait.cs:7

References things, and Card.trait.

◆ ForeachCell()

◆ ForeachNeighbor()

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

Definition at line 2386 of file Map.cs.

2387 {
2388 int num = center.x;
2389 int num2 = center.z;
2390 Point point = new Point();
2391 for (int i = num - 1; i < num + 2; i++)
2392 {
2393 if (i < 0 || i >= Size)
2394 {
2395 continue;
2396 }
2397 for (int j = num2 - 1; j < num2 + 2; j++)
2398 {
2399 if (j >= 0 && j < Size)
2400 {
2401 point.Set(i, j);
2402 action(point);
2403 }
2404 }
2405 }
2406 }

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

◆ ForeachPoint()

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

Definition at line 2342 of file Map.cs.

2343 {
2344 Point point = new Point();
2345 for (int i = 0; i < Size; i++)
2346 {
2347 for (int j = 0; j < Size; j++)
2348 {
2349 action(point.Set(i, j));
2350 }
2351 }
2352 }

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

2366 {
2367 Point point = new Point();
2368 int num = (int)Mathf.Ceil(r);
2369 for (int i = _x - num; i < _x + num + 1; i++)
2370 {
2371 if (i < 0 || i >= Size)
2372 {
2373 continue;
2374 }
2375 for (int j = _z - num; j < _z + num + 1; j++)
2376 {
2377 if (j >= 0 && j < Size && (float)((i - _x) * (i - _x) + (j - _z) * (j - _z)) < r * r)
2378 {
2379 point.Set(i, j);
2380 action(point);
2381 }
2382 }
2383 }
2384 }

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

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

◆ ForeachXYZ()

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

Definition at line 2354 of file Map.cs.

2355 {
2356 for (int i = 0; i < Size; i++)
2357 {
2358 for (int j = 0; j < Size; j++)
2359 {
2360 action(i, j);
2361 }
2362 }
2363 }

References MapBounds.Size.

Referenced by CreateNew().

◆ GetBackerObj()

SourceBacker.Row Map.GetBackerObj ( Point  p)
inline

Definition at line 1586 of file Map.cs.

1587 {
1588 if (!backerObjs.ContainsKey(p.index))
1589 {
1590 return null;
1591 }
1592 return EClass.sources.backers.map.TryGetValue(backerObjs[p.index]);
1593 }

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

Referenced by TaskHarvest.OnCreateProgress().

◆ GetCell()

Cell Map.GetCell ( int  index)
inline

Definition at line 881 of file Map.cs.

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

References cells, MapBounds.Size, and SizeXZ.

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

◆ GetDependedRamp()

Cell Map.GetDependedRamp ( Cell  cell)
inline

Definition at line 2175 of file Map.cs.

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

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

Referenced by RemoveLonelyRamps().

◆ GetMetaData()

static MapMetaData Map.GetMetaData ( string  pathZip)
inlinestatic

Definition at line 732 of file Map.cs.

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

References Debug.

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

◆ GetNearbyResourcePoint()

Point Map.GetNearbyResourcePoint ( Point  center)
inline

Definition at line 2243 of file Map.cs.

2244 {
2245 Point point = new Point();
2246 int num = ((EClass.rnd(2) == 0) ? 1 : (-1));
2247 int num2 = ((EClass.rnd(2) == 0) ? 1 : (-1));
2248 for (int i = 0; i < 3; i++)
2249 {
2250 point.x = center.x - num + i * num;
2251 for (int j = 0; j < 3; j++)
2252 {
2253 point.z = center.z - num2 + j * num2;
2254 if (point.IsValid && point.area == null && point.cell.CanHarvest())
2255 {
2256 return point;
2257 }
2258 }
2259 }
2260 return Point.Invalid;
2261 }
bool CanHarvest()
Definition: Cell.cs:1664
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 2138 of file Map.cs.

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

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

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

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

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

◆ GetRandomPoint()

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

Definition at line 2200 of file Map.cs.

2201 {
2202 Point point = new Point();
2203 for (int i = 0; i < tries; i++)
2204 {
2205 point.x = center.x + EClass.rnd(radius * 2 + 1) - radius;
2206 point.z = center.z + EClass.rnd(radius * 2 + 1) - radius;
2207 point.Clamp();
2208 if ((!mustBeWalkable || !point.cell.blocked) && (!requireLos || Los.IsVisible(center, point)))
2209 {
2210 return point;
2211 }
2212 }
2213 Debug.Log("GetRandomPoint failed center:" + center?.ToString() + " rad:" + radius);
2214 point.IsValid = false;
2215 return point;
2216 }
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:988

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

2492 {
2493 List<Chara> list = new List<Chara>();
2494 foreach (Chara chara in charas)
2495 {
2496 if (chara.faction == faction)
2497 {
2498 list.Add(chara);
2499 }
2500 }
2501 return list;
2502 }

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

2277 {
2278 List<Chara> list = new List<Chara>();
2279 foreach (Point item in ListPointsInCircle(center, radius, mustBeWalkable: false, los))
2280 {
2281 CellDetail detail = item.detail;
2282 if (detail == null || detail.charas.Count <= 0)
2283 {
2284 continue;
2285 }
2286 foreach (Chara chara in item.detail.charas)
2287 {
2288 list.Add(chara);
2289 }
2290 }
2291 return list;
2292 }
List< Chara > charas
Definition: CellDetail.cs:13
List< Point > ListPointsInCircle(Point center, float radius, bool mustBeWalkable=true, bool los=true)
Definition: Map.cs:2263

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

2295 {
2296 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));
2297 Point point = new Point(0, 0);
2298 List<Point> list = new List<Point>();
2299 float diff = point.GetAngle2(to2);
2300 ForeachSphere(center.x, center.z, radius, delegate(Point p)
2301 {
2302 float angle2 = center.GetAngle2(p);
2303 if ((Mathf.Abs(diff - angle2) < angle || Mathf.Abs(diff - angle2 + 360f) < angle || Mathf.Abs(360f - diff + angle2) < angle) && Los.IsVisible(center, p) && !p.IsBlocked)
2304 {
2305 list.Add(p.Copy());
2306 }
2307 });
2308 return list;
2309 }
void ForeachSphere(int _x, int _z, float r, Action< Point > action)
Definition: Map.cs:2365
bool IsBlocked
Definition: Point.cs:351
float GetAngle2(Point to)
Definition: Point.cs:601

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

2264 {
2265 List<Point> list = new List<Point>();
2266 ForeachSphere(center.x, center.z, radius, delegate(Point p)
2267 {
2268 if ((!mustBeWalkable || !p.cell.blocked) && (!los || Los.IsVisible(center, p)))
2269 {
2270 list.Add(p.Copy());
2271 }
2272 });
2273 return list;
2274 }

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

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

◆ ListPointsInLine()

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

Definition at line 2311 of file Map.cs.

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

References Los.ListVisible().

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

◆ ListThing< T >()

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

Definition at line 2504 of file Map.cs.

2504 : Trait
2505 {
2506 List<Thing> list = new List<Thing>();
2507 foreach (Thing thing in things)
2508 {
2509 if (thing.IsInstalled && thing.trait is T)
2510 {
2511 list.Add(thing);
2512 }
2513 }
2514 return list;
2515 }
bool IsInstalled
Definition: Card.cs:2317

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

◆ Load()

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

Definition at line 542 of file Map.cs.

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

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

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

◆ MineBlock()

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

Definition at line 1662 of file Map.cs.

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

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

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

◆ MineFloor()

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

Definition at line 1746 of file Map.cs.

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

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

Referenced by TaskDig.OnProgressComplete().

◆ MineObj()

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

Definition at line 1834 of file Map.cs.

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

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

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

◆ MineObjSound()

void Map.MineObjSound ( Point  point)
inline

Definition at line 1922 of file Map.cs.

1923 {
1924 point.PlaySound(point.cell.matObj.GetSoundDead(point.cell.sourceObj));
1925 }

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

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

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

Referenced by TaskMine.OnProgressComplete().

◆ ModFire()

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

Definition at line 1166 of file Map.cs.

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

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

1508 {
1509 Cell cell = cells[x, z];
1510 if (!cell.IsTopWaterAndNoSnow && cell.effect != null)
1511 {
1512 cell.effect.amount += amount;
1513 if (cell.effect.amount <= 0)
1514 {
1515 cell.effect = null;
1516 }
1517 }
1518 }
int amount
Definition: CellEffect.cs:26

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

Referenced by GameUpdater.SurfaceUpdater.FixedUpdate().

◆ MoveCard()

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

Definition at line 835 of file Map.cs.

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

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

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

◆ OnCardAddedToZone()

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

Definition at line 800 of file Map.cs.

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

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

Referenced by Zone.AddCard().

◆ OnCardRemovedFromZone()

void Map.OnCardRemovedFromZone ( Card  t)
inline

Definition at line 819 of file Map.cs.

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

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

Referenced by Zone.RemoveCard().

◆ OnDeactivate()

void Map.OnDeactivate ( )
inline

Definition at line 205 of file Map.cs.

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

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

Referenced by Zone.Deactivate().

◆ OnDeserialized()

void Map.OnDeserialized ( StreamingContext  context)
inlineprivate

Definition at line 148 of file Map.cs.

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

References _bits.

◆ OnImport()

void Map.OnImport ( ZoneExportData  data)
inline

Definition at line 710 of file Map.cs.

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

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

Referenced by Zone.Activate().

◆ OnLoad()

void Map.OnLoad ( )
inline

Definition at line 704 of file Map.cs.

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

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

◆ OnSerializing() [1/2]

virtual void Map.OnSerializing ( )
inlineprotectedvirtual

Definition at line 143 of file Map.cs.

144 {
145 }

◆ OnSerializing() [2/2]

void Map.OnSerializing ( StreamingContext  context)
inlineprivate

Definition at line 138 of file Map.cs.

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

References _bits, bits, and BitArray32.Bits.

◆ OnSetBlockOrDoor()

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

Definition at line 1018 of file Map.cs.

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

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

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

◆ PutAway()

bool Map.PutAway ( Card  c)
inline

Definition at line 2517 of file Map.cs.

2518 {
2520 {
2521 return false;
2522 }
2523 if (c.isChara)
2524 {
2526 {
2527 return false;
2528 }
2529 c.Destroy();
2530 return true;
2531 }
2532 Thing thing = c.Thing;
2533 if (thing.parent != null)
2534 {
2535 thing.parent.RemoveCard(thing);
2536 }
2537 thing.isMasked = false;
2538 thing.isRoofItem = false;
2539 if (EClass._zone.IsPCFaction && EClass._map.props.installed.traits.GetRandomThing<TraitSpotStockpile>() != null)
2540 {
2541 EClass._zone.TryAddThingInSpot<TraitSpotStockpile>(thing);
2542 return true;
2543 }
2544 if (EClass.debug.enable)
2545 {
2547 return true;
2548 }
2549 EClass.pc.Pick(thing, msg: false);
2550 return true;
2551 }
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:3020
ICardParent parent
Definition: Card.cs:51
void Destroy()
Definition: Card.cs:4783
virtual bool IsPC
Definition: Card.cs:2079
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
Definition: Chara.cs:4017
bool enable
Definition: CoreDebug.cs:285
Thing GetOrCreateDebugContainer()
Definition: CoreDebug.cs:738
bool ignoreBuildRule
Definition: CoreDebug.cs:184
TraitManager traits
Definition: Props.cs:18
virtual bool CanOnlyCarry
Definition: Trait.cs:287
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 2408 of file Map.cs.

2409 {
2410 Point point = new Point();
2411 int num;
2412 for (num = 0; num < Size; num++)
2413 {
2414 int num2;
2415 for (num2 = 0; num2 < Size; num2++)
2416 {
2417 point.x = num;
2418 point.z = num2;
2419 point.Copy().Animate(AnimeID.Quake, animeBlock: true);
2420 num2 += EClass.rnd(2);
2421 }
2422 num += EClass.rnd(2);
2423 }
2424 }
AnimeID
Definition: AnimeID.cs:2
Point Copy()
Definition: Point.cs:479
void Animate(AnimeID id, bool animeBlock=false)
Definition: Point.cs:1282

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

◆ QuickRefreshTile()

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

Definition at line 2123 of file Map.cs.

2124 {
2125 Cell cell = cells[x, z];
2126 Cell cell2 = ((x > 0) ? cells[x - 1, z] : Cell.Void);
2127 Cell cell3 = ((x + 1 < Size) ? cells[x + 1, z] : Cell.Void);
2128 Cell cell4 = ((z > 0) ? cells[x, z - 1] : Cell.Void);
2129 Cell cell5 = ((z + 1 < Size) ? cells[x, z + 1] : Cell.Void);
2130 Cell cell6 = ((x > 0 && z > 0) ? cells[x - 1, z - 1] : Cell.Void);
2131 Cell cell7 = ((x + 1 < Size && z > 0) ? cells[x + 1, z - 1] : Cell.Void);
2132 Cell cell8 = ((x > 0 && z + 1 < Size) ? cells[x - 1, z + 1] : Cell.Void);
2133 Cell cell9 = ((x + 1 < Size && z + 1 < Size) ? cells[x + 1, z + 1] : Cell.Void);
2134 cell.isSurrounded4d = cell2.HasFullBlock && cell3.HasFullBlock && cell4.HasFullBlock && cell5.HasFullBlock;
2135 cell.isSurrounded = cell.isSurrounded4d && cell6.HasFullBlock && cell7.HasFullBlock && cell8.HasFullBlock && cell9.HasFullBlock;
2136 }
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 2093 of file Map.cs.

2094 {
2095 for (int i = 0; i < Size; i++)
2096 {
2097 for (int j = 0; j < Size; j++)
2098 {
2099 cells[i, j].Refresh();
2100 }
2101 }
2102 }
void Refresh()
Definition: Cell.cs:1152

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

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

◆ RefreshFOV()

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

Definition at line 923 of file Map.cs.

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

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

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

◆ RefreshFOVAll()

void Map.RefreshFOVAll ( )
inline

Definition at line 943 of file Map.cs.

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

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

Referenced by ColorProfile.OnValidate().

◆ RefreshNeighborTiles()

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

Definition at line 2104 of file Map.cs.

2105 {
2106 cells[x, z].Refresh();
2107 for (int i = x - 2; i < x + 3; i++)
2108 {
2109 if (i < 0 || i >= Size)
2110 {
2111 continue;
2112 }
2113 for (int j = z - 2; j < z + 3; j++)
2114 {
2115 if (j >= 0 && j < Size && (x != i || z != j))
2116 {
2117 cells[i, j].Refresh();
2118 }
2119 }
2120 }
2121 }

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

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

◆ RefreshShadow()

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

Definition at line 1794 of file Map.cs.

1795 {
1796 }

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

◆ RefreshSingleTile()

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

◆ RefreshSunMap()

void Map.RefreshSunMap ( )
inline

Definition at line 2707 of file Map.cs.

2708 {
2709 if (!isDirtySunMap)
2710 {
2711 return;
2712 }
2713 sunMap.Clear();
2714 foreach (Card sun in EClass._map.props.installed.traits.suns)
2715 {
2716 foreach (Point item in sun.trait.ListPoints(null, onlyPassable: false))
2717 {
2718 sunMap.Add(item.index);
2719 }
2720 }
2721 isDirtySunMap = false;
2722 }
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:745

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

Referenced by GameUpdater.Update().

◆ Reload()

void Map.Reload ( )
inline

Definition at line 310 of file Map.cs.

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

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

Referenced by Resize(), and Shift().

◆ ReloadRoom()

void Map.ReloadRoom ( )
inline

Definition at line 325 of file Map.cs.

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

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

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

◆ RemoveLonelyRamps()

void Map.RemoveLonelyRamps ( Cell  cell)
inline

Definition at line 1995 of file Map.cs.

1996 {
1997 for (int i = 0; i < 4; i++)
1998 {
1999 Cell dependedRamp = GetDependedRamp(cell);
2000 if (dependedRamp != null)
2001 {
2002 MineBlock(dependedRamp.GetPoint());
2003 continue;
2004 }
2005 break;
2006 }
2007 }
Point GetPoint()
Definition: Cell.cs:1101
Cell GetDependedRamp(Cell cell)
Definition: Map.cs:2175

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

Referenced by MineBlock(), and MineRamp().

◆ RemovePlant()

void Map.RemovePlant ( Point  pos)
inline

Definition at line 1947 of file Map.cs.

1948 {
1949 plants.Remove(pos.index);
1950 }

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

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

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

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

◆ Resize()

void Map.Resize ( int  newSize)
inline

Definition at line 226 of file Map.cs.

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

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

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

◆ Reveal()

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

Definition at line 912 of file Map.cs.

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

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

Referenced by ActEffect.Proc().

◆ RevealAll()

void Map.RevealAll ( bool  reveal = true)
inline

Definition at line 899 of file Map.cs.

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

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

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

◆ Save()

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

Definition at line 376 of file Map.cs.

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

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

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

◆ SetBlock() [1/2]

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

Definition at line 995 of file Map.cs.

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

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

◆ SetBlock() [2/2]

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

Definition at line 990 of file Map.cs.

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

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

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

◆ SetBlockDir()

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

Definition at line 1159 of file Map.cs.

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

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

Referenced by Recipe.Build().

◆ SetBounds() [1/2]

void Map.SetBounds ( int  size)
inline

Definition at line 2316 of file Map.cs.

2317 {
2318 if (size > Size / 2 + 1)
2319 {
2320 size = Size / 2 - 1;
2321 }
2322 bounds.SetBounds(Size / 2 - size, Size / 2 - size, Size / 2 + size, Size / 2 + size);
2323 }

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

2326 {
2327 bounds.SetBounds(b.x, b.z, b.maxX, b.maxZ);
2328 bounds.Size = b.Size;
2329 }

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

◆ SetBridge()

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

Definition at line 966 of file Map.cs.

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

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

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

◆ SetDecal()

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

Definition at line 2036 of file Map.cs.

2037 {
2038 cells[x, z].decal = (byte)((id != 0 && amount != 0) ? ((uint)(id * 8 + amount)) : 0u);
2039 if (refresh)
2040 {
2042 }
2043 }

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

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

◆ SetEffect()

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

Definition at line 1502 of file Map.cs.

1503 {
1504 cells[x, z].effect = effect;
1505 }

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

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

◆ SetFloor() [1/2]

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

Definition at line 956 of file Map.cs.

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

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

◆ SetFloor() [2/2]

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

Definition at line 951 of file Map.cs.

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

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

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

◆ SetFoormark()

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

Definition at line 2045 of file Map.cs.

2046 {
2047 Cell cell = pos.cell;
2048 int tile = AngleToIndex(angle) + offset;
2049 Footmark footmark = new Footmark
2050 {
2051 tile = tile,
2052 remaining = 10
2053 };
2054 footmark.pos.Set(pos);
2055 footmarks.Add(footmark);
2056 cell.GetOrCreateDetail().footmark = footmark;
2057 }
Footmark footmark
Definition: CellDetail.cs:17
CellDetail GetOrCreateDetail()
Definition: Cell.cs:1533
Point pos
Definition: Footmark.cs:3
int AngleToIndex(int a)
Definition: Map.cs:2059
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 1480 of file Map.cs.

1481 {
1482 Cell cell = cells[x, z];
1483 if (!cell.IsTopWaterAndNoSnow || value == 0)
1484 {
1485 if (value > 3)
1486 {
1487 value = 3;
1488 }
1489 if (value <= 0)
1490 {
1491 cell.effect = null;
1492 return;
1493 }
1494 cell.effect = new CellEffect
1495 {
1496 id = id,
1497 amount = value
1498 };
1499 }
1500 }

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

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

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

◆ SetReference()

void Map.SetReference ( )
inline

Definition at line 195 of file Map.cs.

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

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

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

◆ SetRoofBlock()

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

Definition at line 981 of file Map.cs.

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

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

Referenced by Recipe.Build().

◆ SetSeen()

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

Definition at line 886 of file Map.cs.

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

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

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

◆ SetZone()

void Map.SetZone ( Zone  _zone)
inline

Definition at line 181 of file Map.cs.

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

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

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

◆ Shift()

void Map.Shift ( Vector2Int  offset)
inline

Definition at line 254 of file Map.cs.

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

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

Referenced by ZoneInspector.ResizeUtil.Apply().

◆ TryAddRoom()

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

Definition at line 1078 of file Map.cs.

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

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

Referenced by OnSetBlockOrDoor().

◆ TryGetPlant() [1/2]

PlantData Map.TryGetPlant ( Cell  c)
inline

Definition at line 1932 of file Map.cs.

1933 {
1934 return plants.TryGetValue(c.index);
1935 }

References Cell.index, and plants.

◆ TryGetPlant() [2/2]

◆ TryLoadFile()

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

Definition at line 531 of file Map.cs.

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

References compression, and Debug.

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

◆ TryRemoveRoom()

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

Definition at line 1066 of file Map.cs.

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

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

Referenced by OnSetBlockOrDoor().

◆ TryShatter()

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

Definition at line 1194 of file Map.cs.

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

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

Referenced by ActEffect.DamageEle().

◆ TrySmoothPick() [1/2]

◆ TrySmoothPick() [2/2]

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

Definition at line 1803 of file Map.cs.

1804 {
1805 if (c != null && c.IsAgent)
1806 {
1807 EClass.pc.PickOrDrop(p, t);
1808 }
1809 else if (c != null && (c.pos.Equals(p) || EClass.core.config.game.smoothPick || EClass._zone.IsRegion))
1810 {
1811 c.PickOrDrop(p, t);
1812 }
1813 else
1814 {
1815 EClass._zone.AddCard(t, p);
1816 }
1817 }
bool IsAgent
Definition: Card.cs:2185
new GameConfig game
Definition: CoreConfig.cs:600
bool Equals(int _x, int _z)
Definition: Point.cs:940

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

◆ UpdateMetaData()

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

Definition at line 759 of file Map.cs.

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

References EClass._map, and ExportMetaData().

Referenced by PartialMap.Update().

◆ ValidateInstalled()

void Map.ValidateInstalled ( Point  p)
inline

Definition at line 1952 of file Map.cs.

1953 {
1954 _ValidateInstalled(p.x, p.z);
1955 _ValidateInstalled(p.x + 1, p.z);
1956 _ValidateInstalled(p.x - 1, p.z);
1957 _ValidateInstalled(p.x, p.z + 1);
1958 _ValidateInstalled(p.x, p.z - 1);
1959 }

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

Referenced by MineBlock().

◆ ValidateVersion()

void Map.ValidateVersion ( )
inline

Definition at line 699 of file Map.cs.

700 {
702 }

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

Referenced by Load().

Member Data Documentation

◆ _bits

int Map._bits

Definition at line 22 of file Map.cs.

Referenced by OnDeserialized(), and OnSerializing().

◆ _plDay

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

◆ _plNight

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

Definition at line 58 of file Map.cs.

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

◆ _things

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

Definition at line 107 of file Map.cs.

Referenced by FindThing().

◆ backerObjs

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

◆ biomes

BiomeProfile [,] Map.biomes

Definition at line 95 of file Map.cs.

◆ bits

BitArray32 Map.bits

Definition at line 75 of file Map.cs.

Referenced by OnSerializing().

◆ bounds

◆ cellEffects

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

Definition at line 64 of file Map.cs.

Referenced by Load(), and Save().

◆ cells

◆ charas

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

Definition at line 81 of file Map.cs.

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

◆ compression

IO.Compression Map.compression

Definition at line 25 of file Map.cs.

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

◆ config

◆ custom

CustomData Map.custom

Definition at line 40 of file Map.cs.

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

◆ deadCharas

◆ effectManager

CellEffectManager Map.effectManager = new CellEffectManager()

Definition at line 89 of file Map.cs.

Referenced by Load(), and ModFire().

◆ exportSetting

MapExportSetting Map.exportSetting

Definition at line 73 of file Map.cs.

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

◆ flood

FloodSpiller Map.flood = new FloodSpiller()

Definition at line 93 of file Map.cs.

Referenced by TryAddRoom().

◆ footmarks

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

Definition at line 99 of file Map.cs.

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

◆ fowProfile

FowProfile Map.fowProfile

Definition at line 101 of file Map.cs.

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

◆ gatherCounts

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

Definition at line 61 of file Map.cs.

◆ isDirtySunMap

bool Map.isDirtySunMap
static

Definition at line 16 of file Map.cs.

Referenced by RefreshSunMap().

◆ plants

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

Definition at line 70 of file Map.cs.

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

◆ plDay

◆ plNight

Playlist Map.plNight

Definition at line 79 of file Map.cs.

◆ poiMap

◆ pointAnimes

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

Definition at line 83 of file Map.cs.

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

◆ props

◆ revealed

bool Map.revealed

Definition at line 103 of file Map.cs.

Referenced by RevealAll().

◆ roomHash

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

Definition at line 105 of file Map.cs.

Referenced by OnSetBlockOrDoor(), and TryAddRoom().

◆ rooms

◆ seed

int Map.seed

Definition at line 19 of file Map.cs.

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

◆ serializedCharas

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

Definition at line 43 of file Map.cs.

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

◆ sunMap

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

Definition at line 14 of file Map.cs.

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

◆ tasks

◆ things

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

Definition at line 49 of file Map.cs.

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

◆ version

Version Map.version

Definition at line 28 of file Map.cs.

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

◆ zone

Zone Map.zone

Property Documentation

◆ Cards

IEnumerable<Card> Map.Cards
get

Definition at line 135 of file Map.cs.

Referenced by MapSubset.OnSave(), 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: