Okay this is a lot more complicated than I realised lol. So can you give me an example? Like for instance, I want to activate Sabex Armory, is it possible to have a step by step?
So, I got this working (kinda, still haven't got Vanguard Request for it fully working, but the dungeon itself can be entered and works fine). I'm using Dziobus's client data file which I think may have some client-side work done as I've noticed all the removed dungeons show on the world map, and I didn't have to do any client-side work, at least to get the dungeon itself accessible. Not an expert but I'll put the steps of what I did to implement it since it seems to have worked well at least.
1 - Grab the Hunting Zone ID of the dungeon by looking up a creature from the dungeon on Teralore.com. For this I'll go with Yateveo, the end boss, which shows up as 0080830031000 for its ID. The first five numbers seem to generally be the hunting zone ID, minus any 0s at the front. In this case, the first five numbers are 00808, so the hunting zone ID of Sabex Armory is 808.
2 - Go to DungeonConstraint.xml and search the file to find huntingZoneId="808" in a line. This should be Sabex Armory's line in this file. Make sure you make a note of the continent ID, which is 9808 in this case. Then find isActive="false" and change that false to true. While many of the removed dungeons appear to be commented out in this file, I don't believe Sabex Armory actually was, but if I'm misremembering or you want to try implementing a different dungeon this way, you might need to remove the "<!--" and "-->" at the beginning and end of the line respectively to uncomment it. In Notepad++ it shows the line as green when it's commented out which helps make it easy to tell if it is or not.
3 - Go to DungeonMatching.xml and search for the line with <Dungeon id="9808". Remember the continent ID from the last file? This one doesn't have the hunting zone ID listed so you have to use the continent ID to find it here. If you try to implement a different dungeon the continent ID will be whatever you got for that dungeon naturally. Now uncomment the block of text for this dungeon by removing the "<!--" and "-->" at the beginning and end of it. Your block of text in this file for Sabex Armory should look like this:
Code:
<Dungeon id="9808" name="아크데바 무기고" dungeonLevel="61" dungeonMinLevel="60" dungeonMaxLevel="70" minItemLevel="302" matchingRoleId="23" >
<NeedItem id=""/>
<DungeonCle arCompensation itemTemplateId="411" itemAmount="1" />
<DungeonClearCompensation itemTemplateId="364" itemAmount="1" />
</Dungeon>
I'm not sure if this file is actually required to access the dungeon, it seems like it's just used for the group finder system, but it may still be used elsewhere so I'd just do it even if you don't have enough players on your server for group finder, unless you feel like experimenting to verify if it's needed or not.
4 - Go to TeleportData.xml and find the three line text block with continentId="9808", which should look like this.
Code:
<TeleportList id="808002">
<Teleport uniqueId="808002" desc="아크데바 무기고" stringId="@rgn:9808001" continentId="9808" pos="37667.7148,144185.2344,436.9510" dir="" distance="10"/>
</TeleportList>
I don't remember for sure if it was commented out or not, but if it is, uncomment it the same way you did previously. If it isn't, still good to understand that this will probably be required for implementing other dungeons as I do see quite a few of them commented out here.
4 - Now open up DungeonData_9808, once again 9808 is the continent ID for the dungeon here, and note down the exitPos, "9289,-26822,935". What we're doing here is essentially the best approximation for teleporter spawn coordinates I've been able to find so far, because I haven't found a way to grab the actual original coordinates for dungeon teleporters yet. Their spawns seem to have sadly been deleted entirely from the datasheets rather than just commented out or disabled.
5 - Search Sabex Armory Teleportal in Teralore.com and note down its ID, 00182302. Unfortunately, some dungeons simply have teleportals named "Teleportal" and I'm not actually sure how you get IDs for these besides a bit of trial and error, however Sabex Armory's is conveniently named Sabex Armory Teleportal, making it easy to find this way.
6 - Now last step is to spawn the teleportal in-game to make it possible to actually enter the dungeon without GM commands. Note that once again, the first five digits of Sabex Armory Teleportal's ID, minus the 0s at the beginning, are its hunting zone ID, so in this case 182. This is, I assume, the hunting zone ID for Spring Valley. Now using this ID, open up TerritoryData_182.xml. You're going to want to create a new spawn here, in this case RK-9 is an enabled dungeon in the same zone, so do a search for RK-9. You'll actually find a few instances, I'm not actually sure entirely what everything is here, but I copied this specific block of code.
Code:
<TerritoryGroup id="18209735" desc="RK-9 격납고 차원의 마법석">
<TerritoryList>
<Territory id="18209735" desc="차원의 마법석" type="normal" addMaxZ="200.000000" subtractMinZ="230.000000" absoluteFenceZ="0.000000" randomPosMinDist="100.000000" peaceMoveNpcCheckDist="100.000000" eventId="0">
<Fence pos="2910.56860352,-20828.01367188,849.94396973"/>
<Fence pos="3154.61352539,-21058.58789063,1381.63354492"/>
<Fence pos="3596.62890625,-21157.27734375,1381.63427734"/>
<Fence pos="3720.26416016,-20688.04101563,1247.17163086"/>
<Fence pos="3044.24365234,-20208.64062500,1276.93395996"/>
<Npc instanceId="18209735" desc="RK-9 격납고 이동" memberId="0" npcTemplateId="9735" battlefieldTeam="" ai="127" randomPos="false" spawnCount="1" pos="3349.00000000,-20611.00000000,815.00000000" offsetZ="0" dir="75" respawnTime="0" delaySpawnTimeWhenWorldStart="0" isAggressiveMonster="false" viewRadius="300" viewAngle="130" alertRadius="400" alertAngle="360" aggroSendToClanDistance="300" aggroSendToPartyDistance="400" aggroSendToTerritory="" aggroReceiveOnlyInSight="false" aggroIgnorePartyId="" aggroShareGroupId="0" aggroTargetIsUserOnly="false" escapeLocation="0.00000000,0.00000000,0.00000000" isReturn="true" isReturnMyTerritory="false" conditionalSpawn="false" returnDistance="2000" questPatrol="false" peaceStateNoMoving="false" cautionStateNoMoving="false" voidSpawn="false" respawnRandomTime="20000" moveInTerritory="true" popupMsg="" msgProb="0.000000" msgInterval="0" msgBroadcastingChannel="false" excludeAggroLimit="false" aggroCopyFromNpc="" aggroCopyFromNpcDistance="0" isFlying="false" flyMoveSequenceId="0" interactionRuleId="0">
<PatrolList type="default" socialDuration="0" randomSocial="false"/>
<SocialSet checkInterval="0" probSocial="0.000000"/>
</Npc>
<Attribute achieveConditionId="0" abnormality="0"/>
<DungeonTrigger cameraCurrentZoom="0" cameraMaxZoom="0"/>
</Territory>
</TerritoryList>
<BerserkAi working="false" duration="0" berserkRate="0.000000" combatRatioDiffToBerserk="0.000000"/>
<BlastRegenAi working="false" checkType="time" intervalToBlastRegen="0" spawnedRatioToBlastRegen="0.000000"/>
<DoorAiList/>
<RespawnTimeAi working="false" combatRateToReduceRespawnTime="0.000000" respawnReduceTime="0.000000" duration="0"/>
<SpawnNewNpcAi working="false" npcDeadCount="0" duration="0"/>
</TerritoryGroup>
Put a copy of that code below the original, and change the id, 18209735, to 18203022 in all three places it appears across the block of code. You might notice that 18203022 is not actually the ID we pulled from Sabex Armory Teleportal. This data file seems to format it a bit differently by cutting the 0s from the start and inserting a 0 between the hunting zone ID (182) and the individual creature ID (3022). I noticed that oddity and copied the formating which seems to have worked.
In this data file you will also need to edit the coordinates ' pos="3349.00000000,-20611.00000000,815.00000000" ' to match the coordinates we pulled from DungeonData_9808.xml earlier. Once again though, this file seems to have somewhat different formatting standards and it's good to try to match that to avoid running into any issues, specifically it adds 8 decimal places at the end of all the coordinates, so in this case "9289.000000,-26822.000000,935.000000" will be the coordinates we're going to use here. Ignore the fence coordinates, I assume those have something to do with the radius mobs can wander, but doesn't seem to cause any issues for this, likely because it's a stationary creature. (While you wouldn't normally think of a teleportal as a creature, that is what they're setup as internally.)
My full block of code for this spawn is
Code:
<TerritoryGroup id="18203022" desc="RK-9 격납고 차원의 마법석">
<TerritoryList>
<Territory id="18203022" desc="차원의 마법석" type="normal" addMaxZ="200.000000" subtractMinZ="230.000000" absoluteFenceZ="0.000000" randomPosMinDist="100.000000" peaceMoveNpcCheckDist="100.000000" eventId="0">
<Fence pos="2910.56860352,-20828.01367188,849.94396973"/>
<Fence pos="3154.61352539,-21058.58789063,1381.63354492"/>
<Fence pos="3596.62890625,-21157.27734375,1381.63427734"/>
<Fence pos="3720.26416016,-20688.04101563,1247.17163086"/>
<Fence pos="3044.24365234,-20208.64062500,1276.93395996"/>
<Npc instanceId="18203022" desc="Sabex 격납고 이동" memberId="0" npcTemplateId="3022" battlefieldTeam="" ai="127" randomPos="false" spawnCount="1" pos="9289.000000,-26822.000000,935.000000" offsetZ="0" dir="75" respawnTime="0" delaySpawnTimeWhenWorldStart="0" isAggressiveMonster="false" viewRadius="300" viewAngle="130" alertRadius="400" alertAngle="360" aggroSendToClanDistance="300" aggroSendToPartyDistance="400" aggroSendToTerritory="" aggroReceiveOnlyInSight="false" aggroIgnorePartyId="" aggroShareGroupId="0" aggroTargetIsUserOnly="false" escapeLocation="0.00000000,0.00000000,0.00000000" isReturn="true" isReturnMyTerritory="false" conditionalSpawn="false" returnDistance="2000" questPatrol="false" peaceStateNoMoving="false" cautionStateNoMoving="false" voidSpawn="false" respawnRandomTime="20000" moveInTerritory="true" popupMsg="" msgProb="0.000000" msgInterval="0" msgBroadcastingChannel="false" excludeAggroLimit="false" aggroCopyFromNpc="" aggroCopyFromNpcDistance="0" isFlying="false" flyMoveSequenceId="0" interactionRuleId="0">
<PatrolList type="default" socialDuration="0" randomSocial="false"/>
<SocialSet checkInterval="0" probSocial="0.000000"/>
</Npc>
<Attribute achieveConditionId="0" abnormality="0"/>
<DungeonTrigger cameraCurrentZoom="0" cameraMaxZoom="0"/>
</Territory>
</TerritoryList>
<BerserkAi working="false" duration="0" berserkRate="0.000000" combatRatioDiffToBerserk="0.000000"/>
<BlastRegenAi working="false" checkType="time" intervalToBlastRegen="0" spawnedRatioToBlastRegen="0.000000"/>
<DoorAiList/>
<RespawnTimeAi working="false" combatRateToReduceRespawnTime="0.000000" respawnReduceTime="0.000000" duration="0"/>
<SpawnNewNpcAi working="false" npcDeadCount="0" duration="0"/>
</TerritoryGroup>
You might notice I changed RK-9 to Sabex in one of the desc sections but not the other. I'm 99% sure you can edit this in both without issue, but I noticed it while typing this out and didn't want to put anything in here that I hadn't tested on my server first. From what I've seen the desc section never actually impacts anything in game, I changed the one just so I could search Sabex in the file to find it again easily.
Now, restart your server and the Sabex Armory Teleportal should be spawning in Spring Valley around where the Sabex Armory Teleport Scroll will take you, and where the dungeon is marked on the map, and you should be able to use it to enter the dungeon. (Note, while I was typing this out, Operation Overwatch activated and that seemed to have caused the teleportal to despawn. I assume it will come back after, but this may be something to check for if you find it missing.)
While the dungeon itself should be fully playable after all of this, a key thing you'll still be missing is a Vanguard Request for the dungeon. I've partially gotten this working but it's not displaying properly even if it technically works mechanically so I'm holding off on typing out this part for now until I figure out why it has no name or objective text and displays as level 0, I assume something with the client side of it. I'll come back here with a part 2 explaining how to create this when/if I get this working properly.
As a bonus though, Sabex Armory is a 5 player dungeon still rather than 3 player dungeon like other Tera leveling dungeons in 100.02. This is fine if you've got a full 5 player party on your server to run it with, but if you're the only person on the server or just have a couple friends on, this might not be feasible to complete at-level. If you want to scale it down a bit to more in-line with other dungeons, I'll post my data file for the changes I made to the dungeon, which you can put into your server datasheet, replacing the file of the same name that is currently there. Mine is tuned for solo play, though since the 3 player dungeons are generally already beatable solo, I balanced it much closer to those than the very easy solo mode dungeons that are around in the game. The only change I've been making to the 3 player dungeons is reducing boss HP by 50% to make them a bit less tedious. (If you want to balance it around the actual 3 player dungeons, just doubling the boss HP in my data should put it pretty close.)
It hasn't been tested a lot, but I ran through with my level 62 Berserker and it felt like it was in a decent place of being very doable without being too easy.
Solo-Friendly Sabex Armory Data -
You must be registered to see links