private void DoEnterBuilding() { NWPlayer oPC = GetPC(); NWPlaceable door = (NWPlaceable)GetDialogTarget(); int structureID = _structure.GetPlaceableStructureID(door); if (structureID <= 0) { _.FloatingTextStringOnCreature("ERROR: Door doesn't have a structure ID assigned. Notify an admin about this issue.", oPC.Object, FALSE); return; } PCTerritoryFlagsStructure structure = _structure.GetPCStructureByID(structureID); if (structure.BuildingInterior == null) { _.FloatingTextStringOnCreature("ERROR: Could not locate interior object for structure. Notify an admin about this issue.", oPC.Object, FALSE); return; } NWArea instance = GetAreaInstance(structureID); if (instance == null) { PCTerritoryFlag flag = _structure.GetPCTerritoryFlagByBuildingStructureID(structureID); string name = structure.CustomName; if (name == string.Empty) { PlayerCharacter owner = _player.GetPlayerEntity(structure.PCTerritoryFlag.PlayerID); if (flag.ShowOwnerName) { name = owner.CharacterName + "'s Building"; } else { name = "Building"; } } instance = NWArea.Wrap(_.CreateArea(structure.BuildingInterior.AreaResref, "", name)); instance.SetLocalInt("BUILDING_STRUCTURE_ID", structureID); instance.SetLocalInt("TERRITORY_FLAG_ID", flag.PCTerritoryFlagID); // Load structures & construction sites foreach (Data.Entities.ConstructionSite entity in flag.ConstructionSites) { if (entity.IsActive) { _structure.CreateConstructionSiteFromEntity(entity); } } foreach (PCTerritoryFlagsStructure entity in flag.PCTerritoryFlagsStructures) { if (entity.IsActive) { _structure.CreateStructureFromEntity(entity); } } } instance.SetLocalInt("BUILDING_DISABLED", 0); _structure.JumpPCToBuildingInterior(oPC, instance); }