Addition of Dimensional Warp instance.

Contributed by gigilo1968.
This commit is contained in:
MobiusDev 2019-01-10 20:39:52 +00:00
parent fdf51df12a
commit 6c38b88b42
125 changed files with 28422 additions and 164 deletions

View File

@ -16836,6 +16836,266 @@
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250002" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="1146">
<node x="-211367" y="239031" />
<node x="-211026" y="238801" />
<node x="-211011" y="238829" />
<node x="-211353" y="239052" />
</nodes>
<location x="-211190" y="238927" z="1154" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250003" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="1552">
<node x="-215940" y="239724" />
<node x="-216100" y="239349" />
<node x="-216071" y="239337" />
<node x="-215918" y="239714" />
</nodes>
<location x="-216007" y="239531" z="1560" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250004" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="2256">
<node x="-219531" y="241694" />
<node x="-219569" y="241297" />
<node x="-219545" y="241296" />
<node x="-219505" y="241693" />
</nodes>
<location x="-219539" y="241489" z="2264" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250005" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="2736">
<node x="-218904" y="246367" />
<node x="-219319" y="246371" />
<node x="-219319" y="246340" />
<node x="-218905" y="246337" />
</nodes>
<location x="-219112" y="246353" z="2744" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250011" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="6551">
<node x="-208062" y="241011" />
<node x="-207772" y="240723" />
<node x="-207749" y="240743" />
<node x="-208041" y="241032" />
</nodes>
<location x="-207904" y="240875" z="6559" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250012" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="7336">
<node x="-211367" y="239031" />
<node x="-211026" y="238801" />
<node x="-211011" y="238829" />
<node x="-211353" y="239052" />
</nodes>
<location x="-211190" y="238927" z="7344" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250013" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="7742">
<node x="-215940" y="239724" />
<node x="-216100" y="239349" />
<node x="-216071" y="239337" />
<node x="-215918" y="239714" />
</nodes>
<location x="-216007" y="239531" z="7750" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250014" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="8446">
<node x="-219531" y="241694" />
<node x="-219569" y="241297" />
<node x="-219545" y="241296" />
<node x="-219505" y="241693" />
</nodes>
<location x="-219539" y="241489" z="8454" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250015" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="8926">
<node x="-218904" y="246367" />
<node x="-219319" y="246371" />
<node x="-219319" y="246340" />
<node x="-218905" y="246337" />
</nodes>
<location x="-219112" y="246353" z="8934" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250016" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="9847">
<node x="-218583" y="250013" />
<node x="-218293" y="249725" />
<node x="-218270" y="249745" />
<node x="-218562" y="250034" />
</nodes>
<location x="-218425" y="249877" z="9855" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250017" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="10634">
<node x="-215318" y="251921" />
<node x="-214977" y="251691" />
<node x="-214962" y="251719" />
<node x="-215304" y="251942" />
</nodes>
<location x="-215141" y="251817" z="10642" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250018" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="11040">
<node x="-210256" y="251408" />
<node x="-210416" y="251033" />
<node x="-210387" y="251021" />
<node x="-210234" y="251398" />
</nodes>
<location x="-210323" y="251215" z="11048" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250019" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="11744">
<node x="-206785" y="249466" />
<node x="-206823" y="249069" />
<node x="-206799" y="249068" />
<node x="-206759" y="249465" />
</nodes>
<location x="-206793" y="249261" z="11752" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250020" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="12225">
<node x="-206752" y="244379" />
<node x="-207167" y="244383" />
<node x="-207167" y="244352" />
<node x="-206753" y="244349" />
</nodes>
<location x="-206960" y="244365" z="12233" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250009" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="5225">
<node x="-206785" y="249466" />
<node x="-206823" y="249069" />
<node x="-206799" y="249068" />
<node x="-206759" y="249465" />
</nodes>
<location x="-206793" y="249261" z="5233" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250008" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="4521">
<node x="-210255" y="251409" />
<node x="-210415" y="251034" />
<node x="-210386" y="251022" />
<node x="-210232" y="251399" />
</nodes>
<location x="-210322" y="251216" z="4529" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250010" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="5706">
<node x="-206752" y="244379" />
<node x="-207167" y="244383" />
<node x="-207167" y="244352" />
<node x="-206753" y="244349" />
</nodes>
<location x="-206960" y="244365" z="5714" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250007" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="4115">
<node x="-215318" y="251921" />
<node x="-214977" y="251691" />
<node x="-214962" y="251719" />
<node x="-215304" y="251942" />
</nodes>
<location x="-215141" y="251817" z="4123" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250001" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="360">
<node x="-208062" y="241011" />
<node x="-207772" y="240723" />
<node x="-207749" y="240743" />
<node x="-208041" y="241032" />
</nodes>
<location x="-207904" y="240875" z="368" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250006" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="3328">
<node x="-218583" y="250015" />
<node x="-218293" y="249727" />
<node x="-218270" y="249747" />
<node x="-218562" y="250036" />
</nodes>
<location x="-218425" y="249879" z="3336" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="15240001" name="Hellfire_Du_Boss_S.Hellfire_Boss_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="-10250">
@ -16875,6 +17135,201 @@
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110001" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="3978">
<node x="-77846" y="-217621" />
<node x="-77557" y="-217909" />
<node x="-77533" y="-217889" />
<node x="-77826" y="-217600" />
</nodes>
<location x="-77688" y="-217757" z="3986" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110002" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="4766">
<node x="-80773" y="-218772" />
<node x="-80432" y="-219002" />
<node x="-80416" y="-218974" />
<node x="-80758" y="-218751" />
</nodes>
<location x="-80595" y="-218876" z="4774" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110003" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="5173">
<node x="-84579" y="-218016" />
<node x="-84739" y="-218391" />
<node x="-84710" y="-218403" />
<node x="-84557" y="-218026" />
</nodes>
<location x="-84646" y="-218209" z="5181" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110004" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="5876">
<node x="-87643" y="-216899" />
<node x="-87681" y="-217296" />
<node x="-87658" y="-217297" />
<node x="-87618" y="-216900" />
</nodes>
<location x="-87651" y="-217104" z="5884" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110005" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="6356">
<node x="-86382" y="-212479" />
<node x="-86797" y="-212475" />
<node x="-86798" y="-212506" />
<node x="-86383" y="-212509" />
</nodes>
<location x="-86590" y="-212493" z="6364" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110011" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="10169">
<node x="-77846" y="-217621" />
<node x="-77557" y="-217909" />
<node x="-77533" y="-217889" />
<node x="-77826" y="-217600" />
</nodes>
<location x="-77688" y="-217757" z="10177" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110012" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="10956">
<node x="-80773" y="-218772" />
<node x="-80432" y="-219002" />
<node x="-80416" y="-218974" />
<node x="-80758" y="-218751" />
</nodes>
<location x="-80595" y="-218876" z="10964" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110013" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="11363">
<node x="-84579" y="-218016" />
<node x="-84739" y="-218391" />
<node x="-84710" y="-218403" />
<node x="-84557" y="-218026" />
</nodes>
<location x="-84646" y="-218209" z="11371" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110014" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="12066">
<node x="-87643" y="-216899" />
<node x="-87681" y="-217296" />
<node x="-87658" y="-217297" />
<node x="-87618" y="-216900" />
</nodes>
<location x="-87651" y="-217104" z="12074" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110015" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="12546">
<node x="-86382" y="-212479" />
<node x="-86797" y="-212475" />
<node x="-86798" y="-212506" />
<node x="-86383" y="-212509" />
</nodes>
<location x="-86590" y="-212493" z="12554" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110006" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="6950">
<node x="-86216" y="-208863" />
<node x="-85927" y="-209151" />
<node x="-85903" y="-209131" />
<node x="-86196" y="-208842" />
</nodes>
<location x="-86058" y="-208999" z="6958" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110007" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="7735">
<node x="-83287" y="-207062" />
<node x="-82946" y="-207292" />
<node x="-82930" y="-207264" />
<node x="-83272" y="-207041" />
</nodes>
<location x="-83109" y="-207166" z="7743" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110008" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="8141">
<node x="-79060" y="-207695" />
<node x="-79220" y="-208070" />
<node x="-79191" y="-208082" />
<node x="-79038" y="-207705" />
</nodes>
<location x="-79127" y="-207888" z="8149" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110009" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="8845">
<node x="-76165" y="-209627" />
<node x="-76203" y="-210024" />
<node x="-76180" y="-210025" />
<node x="-76140" y="-209628" />
</nodes>
<location x="-76173" y="-209832" z="8853" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110010" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="9326">
<node x="-77028" y="-214451" />
<node x="-77443" y="-214447" />
<node x="-77444" y="-214478" />
<node x="-77029" y="-214481" />
</nodes>
<location x="-77236" y="-214465" z="9334" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17230101" name="Combine_dun_S.Comb_inst_door_01">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="-10501">

View File

@ -666,6 +666,171 @@
<loc id="1" x="-186018" y="243468" z="2657" />
<loc id="2" x="-186470" y="243500" z="2618" />
</map>
<!-- Dimensional Wrap Stage 1 -> 2 -->
<map id="46">
<loc id="1" x="-209809" y="239024" z="1560" />
<loc id="2" x="-210349" y="240190" z="1136" />
</map>
<!-- Dimensional Wrap Stage 2 -> 3 -->
<map id="47">
<loc id="1" x="-213737" y="238586" z="1596" />
<loc id="2" x="-214526" y="238900" z="1584" />
</map>
<!-- Dimensional Wrap Stage 3 -> 4 -->
<map id="48">
<loc id="1" x="-218797" y="240326" z="2670" />
<loc id="2" x="-218050" y="241346" z="2248" />
</map>
<!-- Dimensional Wrap Stage 4 -> 5 -->
<map id="49">
<loc id="1" x="-222958" y="241121" z="2386" />
<loc id="2" x="-219093" y="243874" z="2728" />
</map>
<!-- Dimensional Wrap Stage 5 -> 6 -->
<map id="50">
<loc id="1" x="-219640" y="247868" z="3496" />
<loc id="2" x="-219544" y="248776" z="3360" />
</map>
<!-- Dimensional Wrap Stage 6 -> 7 -->
<map id="51">
<loc id="1" x="-216513" y="251722" z="4527" />
<loc id="2" x="-215980" y="250563" z="4104" />
</map>
<!-- Dimensional Wrap Stage 7 -> 8 -->
<map id="52">
<loc id="1" x="-212680" y="251576" z="4680" />
<loc id="2" x="-211773" y="251821" z="4552" />
</map>
<!-- Dimensional Wrap Stage 8 -> 9 -->
<map id="53">
<loc id="1" x="-207533" y="250419" z="5639" />
<loc id="2" x="-208286" y="249412" z="5216" />
</map>
<!-- Dimensional Wrap Stage 9 -> 10 -->
<map id="54">
<loc id="1" x="-204970" y="248587" z="6592" />
<loc id="2" x="-206980" y="246782" z="5696" />
</map>
<!-- Dimensional Wrap Stage 10 -> 11 -->
<map id="55">
<loc id="1" x="-206220" y="242808" z="6656" />
<loc id="2" x="-206756" y="242009" z="6584" />
</map>
<!-- Dimensional Wrap Stage 11 -> 12 -->
<map id="56">
<loc id="1" x="-209814" y="239040" z="7752" />
<loc id="2" x="-210343" y="240201" z="7328" />
</map>
<!-- Dimensional Wrap Stage 12 -> 13 -->
<map id="57">
<loc id="1" x="-213566" y="238711" z="7848" />
<loc id="2" x="-214510" y="238914" z="7776" />
</map>
<!-- Dimensional Wrap Stage 13 -> 14 -->
<map id="58">
<loc id="1" x="-218793" y="240333" z="8860" />
<loc id="2" x="-218034" y="241333" z="8440" />
</map>
<!-- Dimensional Wrap Stage 14 -> 15 -->
<map id="59">
<loc id="1" x="-218699" y="242596" z="8859" />
<loc id="2" x="-219093" y="243899" z="8912" />
</map>
<!-- Dimensional Wrap Stage 15 -> 16 -->
<map id="60">
<loc id="1" x="-220117" y="247939" z="9954" />
<loc id="2" x="-219563" y="248742" z="9880" />
</map>
<!-- Dimensional Wrap Stage 16 -> 17 -->
<map id="61">
<loc id="1" x="-216516" y="251710" z="11052" />
<loc id="2" x="-215980" y="250563" z="10624" />
</map>
<!-- Dimensional Wrap Stage 17 -> 18 -->
<map id="62">
<loc id="1" x="-212765" y="252033" z="11144" />
<loc id="2" x="-211808" y="251842" z="11072" />
</map>
<!-- Dimensional Wrap Stage 18 -> 19 -->
<map id="63">
<loc id="1" x="-207530" y="250423" z="12159" />
<loc id="2" x="-208304" y="249410" z="11736" />
</map>
<!-- Dimensional Wrap Stage 19 -> 20 -->
<map id="64">
<loc id="1" x="-207627" y="248155" z="12155" />
<loc id="2" x="-206945" y="246788" z="12213" />
</map>
<!-- Dimensional Wrap Stage 21 -> 22 -->
<map id="65">
<loc id="1" x="-79225" y="-218779" z="5176" />
<loc id="2" x="-79748" y="-217616" z="4760" />
</map>
<!-- Dimensional Wrap Stage 22 -> 23 -->
<map id="66">
<loc id="1" x="-82213" y="-219036" z="5280" />
<loc id="2" x="-83169" y="-218823" z="5208" />
</map>
<!-- Dimensional Wrap Stage 23 -> 24 -->
<map id="67">
<loc id="1" x="-86907" y="-218255" z="6290" />
<loc id="2" x="-86150" y="-217250" z="5872" />
</map>
<!-- Dimensional Wrap Stage 24 -> 25 -->
<map id="68">
<loc id="1" x="-86810" y="-215997" z="6296" />
<loc id="2" x="-86570" y="-214902" z="6344" />
</map>
<!-- Dimensional Wrap Stage 25 -> 26 -->
<map id="69">
<loc id="1" x="-87748" y="-210937" z="7055" />
<loc id="2" x="-87191" y="-210129" z="6984" />
</map>
<!-- Dimensional Wrap Stage 26 -> 27 -->
<map id="70">
<loc id="1" x="-84473" y="-207277" z="8145" />
<loc id="2" x="-83950" y="-208428" z="7728" />
</map>
<!-- Dimensional Wrap Stage 27 -> 28 -->
<map id="71">
<loc id="1" x="-81572" y="-207061" z="8248" />
<loc id="2" x="-80608" y="-207264" z="8176" />
</map>
<!-- Dimensional Wrap Stage 28 -> 29 -->
<map id="72">
<loc id="1" x="-76906" y="-208670" z="9255" />
<loc id="2" x="-77674" y="-209675" z="8840" />
</map>
<!-- Dimensional Wrap Stage 29 -> 30 -->
<map id="73">
<loc id="1" x="-77002" y="-210933" z="9256" />
<loc id="2" x="-77231" y="-212044" z="9312" />
</map>
<!-- Dimensional Wrap Stage 30 -> 31 -->
<map id="74">
<loc id="1" x="-76000" y="-215820" z="10280" />
<loc id="2" x="-76542" y="-216618" z="10200" />
</map>
<!-- Dimensional Wrap Stage 31 -> 32 -->
<map id="75">
<loc id="1" x="-79225" y="-218778" z="11366" />
<loc id="2" x="-79754" y="-217624" z="10952" />
</map>
<!-- Dimensional Wrap Stage 32 -> 33 -->
<map id="76">
<loc id="1" x="-82216" y="-219042" z="11468" />
<loc id="2" x="-83160" y="-218833" z="11392" />
</map>
<!-- Dimensional Wrap Stage 33 -> 34 -->
<map id="77">
<loc id="1" x="-86920" y="-218259" z="12474" />
<loc id="2" x="-86158" y="-217262" z="12058" />
</map>
<!-- Dimensional Wrap Stage 34 -> 35 -->
<map id="78">
<loc id="1" x="-86692" y="-216159" z="12480" />
<loc id="2" x="-86572" y="-214918" z="12536" />
</map>
<!-- Ecnahnted Valley to East/West Enchanted Valley Side -->
<map id="79">
<selector id="0" x="113562" y="46888" z="-4640">

View File

@ -1,7 +1,7 @@
<html><body>Resed:<br>
The Dimensional Warp was created when the energy, which brought Faeron to the Material Realm from the Wind Spirit Realm, accumulated in one place. Only a party of <font color="LEVEL">4 or less</font> and at <font color="LEVEL">Lv. 99</font> may enter. Each team requires at least <font color="LEVEL">3 Warp Crystals</font>.<br>
Rare bracelets and fragments of an ancient tome can be found there. Do you want to go there?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 0">"Take me to the Dimensional Warp."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap enterInstance">"Take me to the Dimensional Warp."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 906">"I need a Warp Crystal."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 909">"I want to level up my Dimensional Bracelet."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 908">"I want to add abilities to my Dimensional Bracelet."</Button>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<html><body>Einster:<br>
Proof must be shown to go upstairs quiuckly. The level of Dimensional Warp you completed determines which floor you can go to.<br>
Many accidents have happened on floors 31 and higher. To protect researchers, we are investigation those floors. For now, <font color="LEVEL">I can send you up to the 26th floor.</font><br>
Ah, you must <font color="LEVEL">determine how many Warp Crystals you will pay</font> before asking me to send you upstairs. Which floor do you want to go?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_6_f">"Send me to 6F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_11_f">"Send me to 11F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_16_f">"Send me to 16F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_21_f">"Send me to 21F"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_26_f">"Send me to 26F"</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Einster:<br>
You haven't paid Warp Crystals. I can't send you upstairs.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Einster:<br>
You didn't give me the number of Warp Crystals you promised.<br1>
Each member of the party must have <font color="LEVEL">%count% Warp Crystals</font>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Einster:<br>
You made it all the way here. Did you find ani Imps?<br>
You didn't uncover all the secrets yet. Secrets also exist in Abyssal Space. No explorers dared to go there yet.<br>
Please find out those secrets!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap jump_location">"Sure, sure. Let me move on"</Button>
</body></html>

View File

@ -0,0 +1,9 @@
<html><body>Einster:<br>
There's someone who has not met the quest completion requirements, so I cannot send you.<br>
Check the list below to see which floor you can go to.<br><br>
Floor 6: Complete The Dimensional Warp, Part 1<br><br>
Floor 11: Complete The Dimensional Warp, Part 2<br><br>
Floor 16: Complete The Dimensional Warp, Part 3<br><br>
Floor 21: Complete The Dimensional Warp, Part 4<br><br>
Floor 26: Complete The Dimensional Warp, Part 5<br><br>
</body></html>

View File

@ -0,0 +1,12 @@
<html><body>Einster:<br>
I was first one to explore Dimensional Wrap. I heard that the imps here carry materials we could use -- rare books, things to enchant bracelets with, and the like.<br>
The Expeditioners have discovered that the probability of imps appearing increases with our use of Warp Crystals, but we have to use a lot to even think about getting up there.<br>
All members of the team should carry Warp Crystals. I'll divide them up according to the number in your group.<br>
I recently discovered the key to going upstairs directly. If you want, I can send you there.<br>
Okay, let's get started.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 12_warp_crystals">"I'll use 12 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 240_warp_crystals">"I'll use 240 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 1200_warp_crystals">"I'll use 1200 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 906">"I need Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 33975-01.html">"I want to go upstairs directly."</Button>
</body></html>

View File

@ -0,0 +1,77 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import com.l2jmobius.gameserver.enums.ChatType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.NpcSay;
import ai.AbstractNpcAI;
/**
* Dimensional Archon AI
* @author Gigi
* @date 2018-09-08 - [18:09:02]
*/
public class DimensionalArchon extends AbstractNpcAI
{
// NPCs
private static final int DEMINSIONAL_ARCHON = 23469;
private static final int UNWORDLY_ARCHON = 23475;
private static final int ABYSSAL_ARCHON = 23482;
private static final NpcStringId[] ARCHON_MSG =
{
NpcStringId.DO_YOU_KNOW_WHO_IT_IS_THAT_YOU_FACE_IT_IS_BEST_THAT_YOU_RUN_NOW,
NpcStringId.LOOK_INTO_MY_EYES_AND_SEE_WHAT_COUNTLESS_OTHERS_HAVE_SEEN_BEFORE_THEIR_DEATH,
NpcStringId.I_COMMEND_YOUR_TENACITY_IN_COMING_THIS_FAR_BUT_NOW_IT_ENDS,
NpcStringId.DO_YOU_SEE_THIS_SWORD_THE_LIGHT_THAT_SCREAMS_WITH_THE_LIFE_OF_THOSE_IT_HAS_KILLED,
NpcStringId.I_WILL_SHOW_YOU_WHAT_TRUE_POWER_IS,
NpcStringId.YOU_WILL_NEED_TO_SURPASS_ME_EVENTUALLY_BUT_DON_T_FORGET_KNOWING_HOW_TO_FLEE_IS_AN_IMPORTANT_PART_OF_BATTLE
};
public DimensionalArchon()
{
super();
addSpawnId(DEMINSIONAL_ARCHON, UNWORDLY_ARCHON, ABYSSAL_ARCHON);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (event.equals("NPC_SHOUT"))
{
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), ARCHON_MSG[getRandom(ARCHON_MSG.length)]));
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onSpawn(L2Npc npc)
{
npc.setShowSummonAnimation(true);
startQuestTimer("NPC_SHOUT", 2000, npc, null);
return super.onSpawn(npc);
}
public static void main(String[] args)
{
new DimensionalArchon();
}
}

View File

@ -0,0 +1,169 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.SkillHolder;
import ai.AbstractNpcAI;
/**
* Dimensional Trap's AI
* @author Gigi
* @date 2018-09-07 - [17:39:04]
*/
public class DimensionalTrap extends AbstractNpcAI
{
private static final int DIMENSIONAL_DEBUFF_TRAP_1 = 19556; // Debuff trap, power 1
private static final int DIMENSIONAL_DEBUFF_TRAP_2 = 19557; // Debuff trap, power 2
private static final int DIMENSIONAL_DEBUFF_TRAP_3 = 19558; // Debuff trap, power 3
private static final int DIMENSIONAL_DEMAGE_TRAP_1 = 19559; // Damage trap, power 1
private static final int DIMENSIONAL_DEMAGE_TRAP_2 = 19560; // Damage trap, power 2
private static final int DIMENSIONAL_DEMAGE_TRAP_3 = 19561; // Damage trap, power 3
private static final int DIMENSIONAL_HEAL_LIGHT = 19562; // Heal Trap
// skill
private static final SkillHolder TRAP_HOLD = new SkillHolder(16409, 1);
private static final SkillHolder TRAP_ARIALL_YOKE = new SkillHolder(16410, 1);
private static final SkillHolder TRAP_STUN = new SkillHolder(16411, 1);
private static final SkillHolder TRAP_POYSON = new SkillHolder(16413, 1);
private static final SkillHolder PEACE_ZONE_CURE = new SkillHolder(16414, 1);
private int _type;
public DimensionalTrap()
{
super();
addSpawnId(DIMENSIONAL_DEBUFF_TRAP_1, DIMENSIONAL_DEBUFF_TRAP_2, DIMENSIONAL_DEBUFF_TRAP_3, DIMENSIONAL_DEMAGE_TRAP_1, DIMENSIONAL_DEMAGE_TRAP_2, DIMENSIONAL_DEMAGE_TRAP_3, DIMENSIONAL_HEAL_LIGHT);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (npc != null)
{
switch (event)
{
case "debuff_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast((getRandom(10) < 5) ? TRAP_HOLD.getSkill() : TRAP_ARIALL_YOKE.getSkill());
}
});
startQuestTimer("debuff_player", 10000, npc, null);
break;
}
case "demage_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast((getRandom(10) < 5) ? TRAP_STUN.getSkill() : TRAP_POYSON.getSkill());
}
});
startQuestTimer("demage_player", 10000, npc, null);
break;
}
case "heal_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast(PEACE_ZONE_CURE.getSkill());
}
});
startQuestTimer("heal_player", 10000, npc, null);
break;
}
}
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onSpawn(L2Npc npc)
{
npc.setIsInvul(true);
switch (npc.getId())
{
case DIMENSIONAL_DEBUFF_TRAP_1:
{
npc.setDisplayEffect(1);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 50;
break;
}
case DIMENSIONAL_DEBUFF_TRAP_2:
{
npc.setDisplayEffect(2);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 100;
break;
}
case DIMENSIONAL_DEBUFF_TRAP_3:
{
npc.setDisplayEffect(3);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 150;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_1:
{
npc.setDisplayEffect(4);
startQuestTimer("demage_player", 3000, npc, null);
_type = 50;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_2:
{
npc.setDisplayEffect(5);
startQuestTimer("demage_player", 3000, npc, null);
_type = 100;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_3:
{
npc.setDisplayEffect(6);
startQuestTimer("demage_player", 3000, npc, null);
_type = 150;
break;
}
case DIMENSIONAL_HEAL_LIGHT:
{
npc.setDisplayEffect(7);
startQuestTimer("heal_player", 3000, npc, null);
_type = 150;
break;
}
}
return super.onSpawn(npc);
}
public static void main(String[] args)
{
new DimensionalTrap();
}
}

View File

@ -0,0 +1,676 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import com.l2jmobius.Config;
import com.l2jmobius.commons.concurrent.ThreadPool;
import com.l2jmobius.commons.util.CommonUtil;
import com.l2jmobius.gameserver.data.xml.impl.SkillData;
import com.l2jmobius.gameserver.enums.CategoryType;
import com.l2jmobius.gameserver.model.L2Party;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.instancezone.Instance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.Earthquake;
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import instances.AbstractInstance;
/**
* Dimensional Wrap instance
* @URL https://l2wiki.com/Dimensional_Warp
* @Video https://www.youtube.com/watch?v=hOnzk0ELwIg
* @author Gigi
* @date 2018-09-04 - [14:33:31]
*/
public class DimensionalWrap extends AbstractInstance
{
// NPCs
private static final int RESED = 33974;
private static final int EINSTER = 33975;
// Monsters
private static final int DEMINSIONAL_INVISIBLE_FRAGMENT = 19564;
private static final int SALAMANDRA_GENERATOR = 19563;
private static final int SALAMANDRA_GENERATOR_DUMMY = 900112;
private static final int DIMENSIONAL_SALAMANDRA = 23466;
private static final int UNWORDLY_SALAMANDER = 23473;
private static final int DIMENSIONAL_IMP = 19553;
private static final int UNWORDLY_IMP = 19554;
private static final int ABYSSAL_IMP = 19555;
private static final int ABYSSAL_MAKKUM = 26090;
private static final int[] MONSTERS =
{
23462, // Dimensional Orc Butcher
23463, // Dimensional Orc Hunter
23464, // Dimensional Shaman
23465, // Dimensional Bugbear
23467, // Dimensional Binder
23468, // Dimensional Demon
23469, // Dimensional Archon
23470, // Unworldly Demon
23471, // Unworldly Etin
23472, // Unworldly Shaman
23474, // Unworldly Golem
23475, // Unworldly Archon
23476, // Unworldly Harpy
23477, // Abyssal Shaman
23478, // Abyssal Berserker
23480, // Abyssal Harpy
23481, // Abyssal Binder
23482, // Abyssal Archon
23483 // Abyssal Golem
};
private static final int[] TRAPS =
{
19556, // Debuff trap, power 1
19557, // Debuff trap, power 2
19558, // Debuff trap, power 3
19559, // Damage trap, power 1
19560, // Damage trap, power 2
19561, // Damage trap, power 3
19562 // Heal Trap
};
// Location
private static final Location TELEPORTS = new Location(-76136, -216216, 4040);
private static final Location FIRST_TELEPORT = new Location(-219544, 248776, 3360);
private static final Location SECOND_TELEPORT = new Location(-206756, 242009, 6584);
private static final Location THRID_TELEPORT = new Location(-219813, 248484, 9928);
private static final Location FOURTH_TELEPORT = new Location(-87191, -210129, 6984);
// Misc
private static final int TEMPLATE_ID = 250;
private static final int DIMENSIONAL_DARK_FORCES = 16415;
private static final int WARP_CRYSTAL = 39597;
protected double _chance = 0;
protected int _count = 0;
public int _skilllevel = 1;
public int _worldState = 0;
protected ScheduledFuture<?> _debufTask;
public DimensionalWrap()
{
super(TEMPLATE_ID);
addStartNpc(RESED);
addTalkId(EINSTER);
addKillId(MONSTERS);
addKillId(ABYSSAL_MAKKUM);
addSpawnId(SALAMANDRA_GENERATOR, DEMINSIONAL_INVISIBLE_FRAGMENT, SALAMANDRA_GENERATOR_DUMMY);
addFirstTalkId(EINSTER);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
final Instance world = npc.getInstanceWorld();
if (event.equals("enterInstance"))
{
if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
{
htmltext = "no_awakened.html";
}
else if (!player.isInParty())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else if (player.isInParty())
{
if (!player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
}
else
{
final L2Party party = player.getParty();
final List<L2PcInstance> members = party.getMembers();
for (L2PcInstance member : members)
{
if (member.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
{
enterInstance(member, npc, TEMPLATE_ID);
}
}
}
}
}
if (isInInstance(world))
{
switch (event)
{
case "33975-01.html":
{
htmltext = event;
break;
}
case "12_warp_crystals":
{
_chance = 0.3;
if (!player.isInParty())
{
_count = 12;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 6;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 4;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 3;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "240_warp_crystals":
{
_chance = 0.6;
if (!player.isInParty())
{
_count = 240;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 120;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 80;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 60;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "1200_warp_crystals":
{
_chance = 0.9;
if (!player.isInParty())
{
_count = 1200;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 600;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 400;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 300;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "send_6_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0)
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 5)
{
world.setStatus(5);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(FIRST_TELEPORT, world.getTemplateId());
}
break;
}
case "send_11_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 2))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 10)
{
world.setStatus(10);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(SECOND_TELEPORT, world.getTemplateId());
}
break;
}
case "send_16_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 3))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 15)
{
world.setStatus(15);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(THRID_TELEPORT, world.getTemplateId());
}
break;
}
case "send_21_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 4))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 20)
{
world.setStatus(20);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(TELEPORTS, world.getTemplateId());
}
break;
}
case "send_26_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 5))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 25)
{
world.setStatus(25);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(FOURTH_TELEPORT, world.getTemplateId());
}
break;
}
case "jump_location":
{
player.teleToLocation(TELEPORTS, world.getTemplateId());
break;
}
case "SALAMANDRA_SPAWN":
case "SALAMANDRA_SPAWN_DUMMY":
{
if (getRandom(100) < (_worldState / 2))
{
final L2Npc salamandra = addSpawn(_worldState < 17 ? DIMENSIONAL_SALAMANDRA : UNWORDLY_SALAMANDER, npc, false, 0, false, world.getId());
salamandra.setRunning();
L2World.getInstance().forEachVisibleObjectInRange(salamandra, L2PcInstance.class, 2500, p ->
{
if ((p != null) && !p.isDead())
{
addAttackPlayerDesire(salamandra, p);
}
});
}
break;
}
case "START_STAGE":
{
world.setStatus(world.getStatus() + 1);
_worldState = world.getStatus();
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.DIMENSIONAL_WARP_LV_S1, ExShowScreenMessage.TOP_CENTER, 10000, true, String.valueOf(world.getStatus())));
startQuestTimer("FIRST_SPAWN", 1500, npc, null);
break;
}
case "FIRST_SPAWN":
{
world.spawnGroup(_worldState + "_first_spawn");
world.spawnGroup(_worldState + "_trap_spawn");
startQuestTimer("SECOND_SPAWN", 40000, npc, null);
_debufTask = ThreadPool.scheduleAtFixedRate(() ->
{
if ((_worldState > 0) && (_worldState <= 11))
{
_skilllevel = 1;
}
else if ((_worldState > 11) && (_worldState <= 20))
{
_skilllevel = 2;
}
else if ((_worldState > 20) && (_worldState <= 30))
{
_skilllevel = 3;
}
else if (_worldState > 30)
{
_skilllevel = 4;
}
final Skill skill = SkillData.getInstance().getSkill(DIMENSIONAL_DARK_FORCES, _skilllevel);
for (L2PcInstance p : world.getPlayers())
{
if ((p != null) && !p.isDead())
{
skill.applyEffects(p, p);
}
}
}, 5000, 10000);
break;
}
case "SECOND_SPAWN":
{
world.spawnGroup(_worldState + "_second_spawn");
startQuestTimer("THRID_SPAWN", 40000, npc, null);
break;
}
case "THRID_SPAWN":
{
world.spawnGroup(_worldState + "_thred_spawn");
break;
}
case "CHANGE_LOCATION":
{
world.getAliveNpcs(TRAPS).forEach(t -> t.deleteMe());
world.spawnGroup(_worldState + "_trap_spawn");
startQuestTimer("CHANGE_LOCATION", 60000 - (_worldState * 1430), npc, null);
break;
}
case "SWITCH_STAGE":
{
if (world.getAliveNpcs(MONSTERS).isEmpty())
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SURROUNDING_ENERGY_HAS_DISSIPATED, ExShowScreenMessage.TOP_CENTER, 5000, true));
world.broadcastPacket(new Earthquake(npc, 50, 5));
world.openCloseDoor(world.getTemplateParameters().getInt(_worldState + "_st_door"), true);
Clean();
if (_worldState < 35)
{
startQuestTimer("NEXT_STAGE", 5000, npc, null);
}
}
break;
}
case "NEXT_STAGE":
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.S1_SECONDS_HAVE_BEEN_ADDED_TO_THE_INSTANCED_ZONE_DURATION, ExShowScreenMessage.TOP_CENTER, 5000, true, String.valueOf(180)));
world.setDuration((int) ((world.getRemainingTime() / 60000) + 3));
startQuestTimer("START_STAGE", 8000, npc, null);
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
break;
}
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
if (CommonUtil.contains(MONSTERS, npc.getId()) && (getRandom(100) < _chance))
{
if (_worldState < 9)
{
addSpawn(DIMENSIONAL_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.DIMENSIONAL_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
else if ((_worldState >= 9) && (_worldState < 20))
{
addSpawn(UNWORDLY_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.UNWORLDLY_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
else if (_worldState >= 20)
{
addSpawn(ABYSSAL_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.ABYSSAL_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
}
else if (npc.getId() == ABYSSAL_MAKKUM)
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_INSTANCED_ZONE_WILL_CLOSE_SOON, ExShowScreenMessage.TOP_CENTER, 10000, true));
world.finishInstance(3);
Clean();
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (_worldState == 20)
{
return "33975-04.html";
}
return "33975.html";
}
@Override
public String onSpawn(L2Npc npc)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
switch (npc.getId())
{
case SALAMANDRA_GENERATOR:
{
startQuestTimer("SALAMANDRA_SPAWN", 25000, npc, null, true);
startQuestTimer("CHANGE_LOCATION", 60000 - (_worldState * 1300), npc, null);
break;
}
case SALAMANDRA_GENERATOR_DUMMY:
{
startQuestTimer("SALAMANDRA_SPAWN_DUMMY", 20000, npc, null, true);
break;
}
case DEMINSIONAL_INVISIBLE_FRAGMENT:
{
startQuestTimer("SWITCH_STAGE", 5000, npc, null, true);
break;
}
}
}
return super.onSpawn(npc);
}
public void CheckCrystallCount(Instance world, L2PcInstance player, L2Npc npc)
{
boolean canStart = true;
for (L2PcInstance p : world.getPlayers())
{
if (p.getInventory().getInventoryItemCount(WARP_CRYSTAL, -1) < _count)
{
for (L2PcInstance ps : world.getPlayers())
{
final NpcHtmlMessage packet = new NpcHtmlMessage(npc.getObjectId());
packet.setHtml(getHtm(ps, "33975-03.html"));
packet.replace("%count%", Integer.toString(_count));
ps.sendPacket(packet);
ps.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.C1_S_ITEM_REQUIREMENT_IS_NOT_SUFFICIENT_AND_CANNOT_BE_ENTERED).addString(ps.getName()));
canStart = false;
}
}
}
if (!canStart || (_worldState != 0))
{
return;
}
startQuestTimer("START_STAGE", 1000, npc, null);
for (L2PcInstance p : world.getPlayers())
{
takeItems(p, WARP_CRYSTAL, _count);
}
}
protected void Clean()
{
cancelQuestTimers("SWITCH_STAGE");
cancelQuestTimers("SALAMANDRA_SPAWN");
cancelQuestTimers("SALAMANDRA_SPAWN_DUMMY");
cancelQuestTimers("CHANGE_LOCATION");
if (_debufTask != null)
{
_debufTask.cancel(false);
_debufTask = null;
}
}
public static void main(String[] args)
{
new DimensionalWrap();
}
}

View File

@ -0,0 +1,3 @@
<html><body>Resed:<br>
Only those who have completed the 3rd Liberation or have Awakened can enter.
</body></html>

View File

@ -1021,7 +1021,10 @@
</collision>
</npc>
<npc id="19556" level="99" type="L2Npc" name="Dimensional Trap">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="trap_skill_type" value="1" />
<skill name="trap_skill" id="10806" level="2" />
</parameters>
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
@ -1033,7 +1036,12 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<skillList>
<skill id="10806" level="2" /> <!-- Frost Trap -->
</skillList>
<exCrtEffect>true</exCrtEffect>
<ai aggroRange="100" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1052,7 +1060,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1071,7 +1079,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1090,7 +1098,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1109,7 +1117,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1128,7 +1136,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1147,7 +1155,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1166,7 +1174,7 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="1" />
<height normal="1" />
@ -1185,7 +1193,7 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="0.1" />
<height normal="0.1" />

View File

@ -676,6 +676,7 @@
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="7276" sp="1" />
<equipment rhand="78" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="1183" hpRegen="4.5" mp="610" mpRegen="1.8" />
<speed>
@ -703,6 +704,7 @@
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="7276" sp="1" />
<equipment rhand="78" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="1183" hpRegen="4.5" mp="610" mpRegen="1.8" />
<speed>
@ -820,6 +822,7 @@
<race>DRAGON</race>
<sex>MALE</sex>
<acquire exp="331748" sp="79" />
<equipment rhand="13978" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="8923" hpRegen="8.5" mp="1607" mpRegen="3" />
@ -913,6 +916,7 @@
<race>DRAGON</race>
<sex>MALE</sex>
<acquire exp="440867" sp="105" />
<equipment rhand="35708" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="9870" hpRegen="8.5" mp="1674" mpRegen="3" />
@ -960,6 +964,7 @@
<race>DRAGON</race>
<sex>MALE</sex>
<acquire exp="440867" sp="105" />
<equipment rhand="13979" lhand="13980" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="9870" hpRegen="8.5" mp="1674" mpRegen="3" />
@ -1189,6 +1194,7 @@
<race>DRAGON</race>
<sex>MALE</sex>
<acquire exp="440867" sp="105" />
<equipment rhand="35708" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="11506" hpRegen="8.5" mp="1777" mpRegen="3" />
@ -1329,6 +1335,7 @@
<race>UNDEAD</race>
<sex>FEMALE</sex>
<acquire exp="269969" sp="64" />
<equipment rhand="15302" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="8570" hpRegen="8.5" mp="1574" mpRegen="3" />
@ -1420,6 +1427,7 @@
<race>UNDEAD</race>
<sex>MALE</sex>
<acquire exp="331748" sp="79" />
<equipment rhand="221" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="8923" hpRegen="8.5" mp="1607" mpRegen="3" />
@ -1606,6 +1614,7 @@
<race>UNDEAD</race>
<sex>MALE</sex>
<acquire exp="449407" sp="107" />
<equipment rhand="78" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="10930" hpRegen="8.5" mp="1743" mpRegen="3" />
@ -2461,10 +2470,13 @@
</collision>
</npc>
<npc id="23462" level="99" type="L2Monster" name="Dimensional Orc Butcher">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="83739744" sp="301463" />
<equipment rhand="38425" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="376398" hpRegen="10.5" mp="23550" mpRegen="3.6" />
<speed>
@ -2489,6 +2501,11 @@
<skill id="16365" level="1" /> <!-- Dimensional Defense Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="34.1799999999999" /> <!-- Warp Crystal -->
@ -2504,10 +2521,13 @@
</collision>
</npc>
<npc id="23463" level="99" type="L2Monster" name="Dimensional Orc Hunter" title="Scout">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="125609616" sp="452194" />
<equipment rhand="38426" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="752796" hpRegen="10.5" mp="23550" mpRegen="3.6" />
<speed>
@ -2531,6 +2551,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16380" level="1" /> <!-- Dimensional Recoil Shot -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="98.00558631842" /> <!-- Warp Crystal -->
@ -2546,7 +2571,9 @@
</collision>
</npc>
<npc id="23464" level="99" type="L2Monster" name="Dimensional Shaman" title="Watcher">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>DEMONIC</race>
<sex>FEMALE</sex>
<acquire exp="125609616" sp="452194" />
@ -2577,6 +2604,11 @@
<skill id="16372" level="1" /> <!-- Dimensional Spike -->
<skill id="16381" level="1" /> <!-- Dimensional Shield -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="98.075753712167" /> <!-- Warp Crystal -->
@ -2592,10 +2624,13 @@
</collision>
</npc>
<npc id="23465" level="99" type="L2Monster" name="Dimensional Bugbear">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>GIANT</race>
<sex>FEMALE</sex>
<acquire exp="125609616" sp="452194" />
<equipment rhand="160" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="752796" hpRegen="10.5" mp="23550" mpRegen="3.6" />
<speed>
@ -2621,6 +2656,11 @@
<skill id="16375" level="1" /> <!-- Dimensional Hammer -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="98.049789683201" /> <!-- Warp Crystal -->
@ -2636,7 +2676,9 @@
</collision>
</npc>
<npc id="23466" level="99" type="L2Monster" name="Dimensional Salamander" title="Hunter">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>ELEMENTAL</race>
<sex>FEMALE</sex>
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
@ -2673,7 +2715,9 @@
</collision>
</npc>
<npc id="23467" level="99" type="L2Monster" name="Dimensional Binder">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="125609616" sp="452194" />
@ -2703,6 +2747,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="98.072868141029" /> <!-- Warp Crystal -->
@ -2718,7 +2767,9 @@
</collision>
</npc>
<npc id="23468" level="99" type="L2Monster" name="Dimensional Demon">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>DEMONIC</race>
<sex>FEMALE</sex>
<acquire exp="83739744" sp="301463" />
@ -2749,6 +2800,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="33.3200000000001" /> <!-- Warp Crystal -->
@ -2764,7 +2820,9 @@
</collision>
</npc>
<npc id="23469" level="99" type="L2Monster" name="Dimensional Archon" title="Slaughterer">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>UNDEAD</race>
<sex>FEMALE</sex>
<acquire exp="251219232" sp="904389" />
@ -2797,6 +2855,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="2" max="2" chance="96.195469193401" /> <!-- Warp Crystal -->
@ -3346,6 +3409,7 @@
<race>UNDEAD</race>
<sex>FEMALE</sex>
<acquire exp="251219232" sp="904389" />
<equipment rhand="39719" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="1355033" hpRegen="10.5" mp="23550" mpRegen="3.6" />
<speed>

View File

@ -91,55 +91,237 @@
<skill id="16409" toLevel="3" name="Trap Hold">
<!-- Immobilized. -->
<icon>icon.skill4047</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>ROOT_MAGICALLY</abnormalType>
<abnormalVisualEffect>ROOT</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>10</abnormalTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>80</activateRate>
<trait>HOLD</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="Root" />
<effect name="DefenceTrait">
<HOLD>100</HOLD>
</effect>
</effects>
</skill>
<skill id="16410" toLevel="3" name="Trap Aerial Yoke">
<!-- Immobilized. -->
<icon>icon.skill11050</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>AIRBIND</abnormalType>
<abnormalVisualEffect>AIRBIND</abnormalVisualEffect>
<abnormalResists>STUN;TURN_FLEE</abnormalResists>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>80</activateRate>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="AirBind" />
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
</effect>
<effect name="DefenceTrait">
<HOLD>100</HOLD>
<DERANGEMENT>100</DERANGEMENT>
<SHOCK>100</SHOCK>
<KNOCKBACK>100</KNOCKBACK>
<CHANGEBODY>100</CHANGEBODY>
<KNOCKDOWN>100</KNOCKDOWN>
<SLEEP>100</SLEEP>
<AIRBIND>100</AIRBIND>
</effect>
</effects>
</skill>
<skill id="16411" toLevel="3" name="Trap Stun">
<!-- Immobilized. -->
<icon>icon.skill0100</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>STUN</abnormalType>
<abnormalVisualEffect>STUN</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<trait>SHOCK</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="BlockActions" />
</effects>
</skill>
<skill id="16412" toLevel="3" name="Trap Petrify">
<!-- Immobilized. -->
<icon>icon.skill4111</icon>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>10</abnormalTime>
<affectRange>150</affectRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16413" toLevel="3" name="Trap Poison">
<!-- Poisoned and losing 1,000 HP/second. -->
<icon>icon.skill4035</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<trait>POISON</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="DamOverTime">
<power>1000</power>
<ticks>1</ticks>
</effect>
</effects>
</skill>
<skill id="16414" toLevel="1" name="Peace Zone Cure">
<!-- Recover 10% of Max HP and 30% of Max MP of self and everyone within 200 grids. Cooldown is 10 sec. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<affectRange>200</affectRange>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="HealPercent">
<power>10</power>
</effect>
</effects>
<effect name="ManaHealPercent">
<power>30</power>
</effect>
</skill>
<skill id="16415" toLevel="4" name="Dimensional Dark Forces">
<!-- P./M./ Atk. - 10%, and P./M. Critical Rate - 30. -->
<icon>icon.skill1298</icon>
<abnormalLvl>
<value level="1">1</value>
<value level="2">2</value>
<value level="3">3</value>
<value level="4">4</value>
</abnormalLvl>
<abnormalTime>
<value level="1">5</value>
<value level="2">5</value>
<value level="3">10</value>
<value level="4">10</value>
</abnormalTime>
<operateType>A2</operateType>
<rideState>NONE</rideState>
<basicProperty>NONE</basicProperty>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<isDebuff>1</isDebuff>
<affectScope>SINGLE</affectScope>
<targetType>SELF</targetType>
<effects>
<effect name="PAtk">
<amount>
<value level="1">-4</value>
<value level="2">-6</value>
<value level="3">-8</value>
<value level="3">-10</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="MAtk">
<amount>
<value level="1">-4</value>
<value level="2">-6</value>
<value level="3">-8</value>
<value level="3">-10</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="CriticalRate">
<amount>
<value level="1">-5</value>
<value level="2">-10</value>
<value level="3">-20</value>
<value level="3">-30</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="MagicCriticalRate">
<amount>
<value level="1">-5</value>
<value level="2">-10</value>
<value level="3">-20</value>
<value level="3">-30</value>
</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="16416" toLevel="10" name="Bluff Resistance">
<!-- Resistance to Bluff. -->

View File

@ -142,6 +142,172 @@
<stat name="mapId" val="45" />
<node X="-186154" Y="242838" />
</zone>
<!-- Dimensional Wrap Stage 1 -->
<zone name="Sayune_46" type="SayuneZone" shape="Cylinder" minZ="400" maxZ="500" rad="80">
<stat name="mapId" val="46" />
<node X="-208193" Y="240585" />
</zone>
<!-- Dimensional Wrap Stage 2 -->
<zone name="Sayune_47" type="SayuneZone" shape="Cylinder" minZ="1100" maxZ="1200" rad="80">
<stat name="mapId" val="47" />
<node X="-211300" Y="238768" />
</zone>
<!-- Dimensional Wrap Stage 3 -->
<zone name="Sayune_48" type="SayuneZone" shape="Cylinder" minZ="1600" maxZ="1700" rad="80">
<stat name="mapId" val="48" />
<node X="-216356" Y="239680" />
</zone>
<!-- Dimensional Wrap Stage 4 -->
<zone name="Sayune_49" type="SayuneZone" shape="Cylinder" minZ="2250" maxZ="2350" rad="80">
<stat name="mapId" val="49" />
<node X="-219722" Y="241510" />
</zone>
<!-- Dimensional Wrap Stage 5 -->
<zone name="Sayune_50" type="SayuneZone" shape="Cylinder" minZ="2700" maxZ="2800" rad="80">
<stat name="mapId" val="50" />
<node X="-219116" Y="246748" />
</zone>
<!-- Dimensional Wrap Stage 6 -->
<zone name="Sayune_51" type="SayuneZone" shape="Cylinder" minZ="3350" maxZ="3450" rad="80">
<stat name="mapId" val="51" />
<node X="-218132" Y="250177" />
</zone>
<!-- Dimensional Wrap Stage 7 -->
<zone name="Sayune_52" type="SayuneZone" shape="Cylinder" minZ="4100" maxZ="4200" rad="80">
<stat name="mapId" val="52" />
<node X="-215046" Y="251965" />
</zone>
<!-- Dimensional Wrap Stage 8 -->
<zone name="Sayune_53" type="SayuneZone" shape="Cylinder" minZ="4550" maxZ="4650" rad="80">
<stat name="mapId" val="53" />
<node X="-209957" Y="251067" />
</zone>
<!-- Dimensional Wrap Stage 9 -->
<zone name="Sayune_54" type="SayuneZone" shape="Cylinder" minZ="5200" maxZ="5300" rad="80">
<stat name="mapId" val="54" />
<node X="-206602" Y="249250" />
</zone>
<!-- Dimensional Wrap Stage 10 -->
<zone name="Sayune_55" type="SayuneZone" shape="Cylinder" minZ="5550" maxZ="5800" rad="80">
<stat name="mapId" val="55" />
<node X="-206952" Y="243976" />
</zone>
<!-- Dimensional Wrap Stage 11 -->
<zone name="Sayune_56" type="SayuneZone" shape="Cylinder" minZ="6500" maxZ="6750" rad="80">
<stat name="mapId" val="56" />
<node X="-208200" Y="240584" />
</zone>
<!-- Dimensional Wrap Stage 12 -->
<zone name="Sayune_57" type="SayuneZone" shape="Cylinder" minZ="7220" maxZ="7460" rad="80">
<stat name="mapId" val="57" />
<node X="-211304" Y="238760" />
</zone>
<!-- Dimensional Wrap Stage 13 -->
<zone name="Sayune_58" type="SayuneZone" shape="Cylinder" minZ="7700" maxZ="7900" rad="80">
<stat name="mapId" val="58" />
<node X="-216344" Y="239672" />
</zone>
<!-- Dimensional Wrap Stage 14 -->
<zone name="Sayune_59" type="SayuneZone" shape="Cylinder" minZ="8350" maxZ="8555" rad="80">
<stat name="mapId" val="59" />
<node X="-219720" Y="241512" />
</zone>
<!-- Dimensional Wrap Stage 15 -->
<zone name="Sayune_60" type="SayuneZone" shape="Cylinder" minZ="8780" maxZ="9000" rad="80">
<stat name="mapId" val="60" />
<node X="-219112" Y="246744" />
</zone>
<!-- Dimensional Wrap Stage 16 -->
<zone name="Sayune_61" type="SayuneZone" shape="Cylinder" minZ="9800" maxZ="10000" rad="80">
<stat name="mapId" val="61" />
<node X="-218136" Y="250184" />
</zone>
<!-- Dimensional Wrap Stage 17 -->
<zone name="Sayune_62" type="SayuneZone" shape="Cylinder" minZ="10520" maxZ="10790" rad="80">
<stat name="mapId" val="62" />
<node X="-215048" Y="251960" />
</zone>
<!-- Dimensional Wrap Stage 18 -->
<zone name="Sayune_63" type="SayuneZone" shape="Cylinder" minZ="11000" maxZ="11200" rad="80">
<stat name="mapId" val="63" />
<node X="-209960" Y="251080" />
</zone>
<!-- Dimensional Wrap Stage 19 -->
<zone name="Sayune_64" type="SayuneZone" shape="Cylinder" minZ="11650" maxZ="11850" rad="80">
<stat name="mapId" val="64" />
<node X="-206600" Y="249240" />
</zone>
<!-- Dimensional Wrap Stage 21 -->
<zone name="Sayune_65" type="SayuneZone" shape="Cylinder" minZ="4000" maxZ="4100" rad="80">
<stat name="mapId" val="65" />
<node X="-77982" Y="-218040" />
</zone>
<!-- Dimensional Wrap Stage 22 -->
<zone name="Sayune_66" type="SayuneZone" shape="Cylinder" minZ="4700" maxZ="4800" rad="80">
<stat name="mapId" val="66" />
<node X="-80696" Y="-219020" />
</zone>
<!-- Dimensional Wrap Stage 23 -->
<zone name="Sayune_67" type="SayuneZone" shape="Cylinder" minZ="5200" maxZ="5300" rad="80">
<stat name="mapId" val="67" />
<node X="-85023" Y="-218047" />
</zone>
<!-- Dimensional Wrap Stage 24 -->
<zone name="Sayune_68" type="SayuneZone" shape="Cylinder" minZ="5900" maxZ="6000" rad="80">
<stat name="mapId" val="68" />
<node X="-87828" Y="-217077" />
</zone>
<!-- Dimensional Wrap Stage 25 -->
<zone name="Sayune_69" type="SayuneZone" shape="Cylinder" minZ="6300" maxZ="6400" rad="80">
<stat name="mapId" val="69" />
<node X="-86591" Y="-212083" />
</zone>
<!-- Dimensional Wrap Stage 26 -->
<zone name="Sayune_70" type="SayuneZone" shape="Cylinder" minZ="7000" maxZ="7100" rad="80">
<stat name="mapId" val="70" />
<node X="-85764" Y="-208712" />
</zone>
<!-- Dimensional Wrap Stage 27 -->
<zone name="Sayune_71" type="SayuneZone" shape="Cylinder" minZ="7700" maxZ="7800" rad="80">
<stat name="mapId" val="71" />
<node X="-83015" Y="-207015" />
</zone>
<!-- Dimensional Wrap Stage 28 -->
<zone name="Sayune_72" type="SayuneZone" shape="Cylinder" minZ="8200" maxZ="8300" rad="80">
<stat name="mapId" val="72" />
<node X="-78759" Y="-208040" />
</zone>
<!-- Dimensional Wrap Stage 29 -->
<zone name="Sayune_73" type="SayuneZone" shape="Cylinder" minZ="8800" maxZ="8900" rad="80">
<stat name="mapId" val="73" />
<node X="-76010" Y="-209839" />
</zone>
<!-- Dimensional Wrap Stage 30 -->
<zone name="Sayune_74" type="SayuneZone" shape="Cylinder" minZ="9300" maxZ="9400" rad="80">
<stat name="mapId" val="74" />
<node X="-77242" Y="-214850" />
</zone>
<!-- Dimensional Wrap Stage 31 -->
<zone name="Sayune_75" type="SayuneZone" shape="Cylinder" minZ="10200" maxZ="10256" rad="80">
<stat name="mapId" val="75" />
<node X="-77982" Y="-218036" />
</zone>
<!-- Dimensional Wrap Stage 32 -->
<zone name="Sayune_76" type="SayuneZone" shape="Cylinder" minZ="10900" maxZ="11000" rad="80">
<stat name="mapId" val="76" />
<node X="-80697" Y="-219020" />
</zone>
<!-- Dimensional Wrap Stage 33 -->
<zone name="Sayune_77" type="SayuneZone" shape="Cylinder" minZ="11400" maxZ="11500" rad="80">
<stat name="mapId" val="77" />
<node X="-85026" Y="-218044" />
</zone>
<!-- Dimensional Wrap Stage 34 -->
<zone name="Sayune_78" type="SayuneZone" shape="Cylinder" minZ="12050" maxZ="12100" rad="80">
<stat name="mapId" val="78" />
<node X="-87828" Y="-217079" />
</zone>
<!-- Enchanted Valley -->
<zone name="Sayune_79" type="SayuneZone" shape="Cylinder" minZ="-4700" maxZ="-4600" rad="100">
<stat name="mapId" val="79" />
<node X="113562" Y="46888" />

View File

@ -843,7 +843,7 @@ public final class Instance implements IIdentifiable, INamable
}
_allowed.forEach(player ->
{
if ((player != null))
if (player != null)
{
InstanceManager.getInstance().setReenterPenalty(player.getObjectId(), getTemplateId(), time);
if (player.isOnline())
@ -1147,6 +1147,11 @@ public final class Instance implements IIdentifiable, INamable
*/
private void sendWorldDestroyMessage(int delay)
{
// Dimensional wrap does not show timer after 5 minutes.
if (delay > 5)
{
return;
}
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THIS_INSTANT_ZONE_WILL_BE_TERMINATED_IN_S1_MINUTE_S_YOU_WILL_BE_FORCED_OUT_OF_THE_DUNGEON_WHEN_THE_TIME_EXPIRES);
sm.addInt(delay);
broadcastPacket(sm);

View File

@ -56,6 +56,7 @@ Ertheia:
-Brooch system
-Luck system
-Auto fishing
-Dimensional Warp
Events:
-Birth of Draco

View File

@ -17096,6 +17096,266 @@
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250002" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="1146">
<node x="-211367" y="239031" />
<node x="-211026" y="238801" />
<node x="-211011" y="238829" />
<node x="-211353" y="239052" />
</nodes>
<location x="-211190" y="238927" z="1154" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250003" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="1552">
<node x="-215940" y="239724" />
<node x="-216100" y="239349" />
<node x="-216071" y="239337" />
<node x="-215918" y="239714" />
</nodes>
<location x="-216007" y="239531" z="1560" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250004" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="2256">
<node x="-219531" y="241694" />
<node x="-219569" y="241297" />
<node x="-219545" y="241296" />
<node x="-219505" y="241693" />
</nodes>
<location x="-219539" y="241489" z="2264" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250005" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="2736">
<node x="-218904" y="246367" />
<node x="-219319" y="246371" />
<node x="-219319" y="246340" />
<node x="-218905" y="246337" />
</nodes>
<location x="-219112" y="246353" z="2744" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250011" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="6551">
<node x="-208062" y="241011" />
<node x="-207772" y="240723" />
<node x="-207749" y="240743" />
<node x="-208041" y="241032" />
</nodes>
<location x="-207904" y="240875" z="6559" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250012" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="7336">
<node x="-211367" y="239031" />
<node x="-211026" y="238801" />
<node x="-211011" y="238829" />
<node x="-211353" y="239052" />
</nodes>
<location x="-211190" y="238927" z="7344" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250013" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="7742">
<node x="-215940" y="239724" />
<node x="-216100" y="239349" />
<node x="-216071" y="239337" />
<node x="-215918" y="239714" />
</nodes>
<location x="-216007" y="239531" z="7750" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250014" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="8446">
<node x="-219531" y="241694" />
<node x="-219569" y="241297" />
<node x="-219545" y="241296" />
<node x="-219505" y="241693" />
</nodes>
<location x="-219539" y="241489" z="8454" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250015" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="8926">
<node x="-218904" y="246367" />
<node x="-219319" y="246371" />
<node x="-219319" y="246340" />
<node x="-218905" y="246337" />
</nodes>
<location x="-219112" y="246353" z="8934" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250016" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="9847">
<node x="-218583" y="250013" />
<node x="-218293" y="249725" />
<node x="-218270" y="249745" />
<node x="-218562" y="250034" />
</nodes>
<location x="-218425" y="249877" z="9855" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250017" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="10634">
<node x="-215318" y="251921" />
<node x="-214977" y="251691" />
<node x="-214962" y="251719" />
<node x="-215304" y="251942" />
</nodes>
<location x="-215141" y="251817" z="10642" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250018" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="11040">
<node x="-210256" y="251408" />
<node x="-210416" y="251033" />
<node x="-210387" y="251021" />
<node x="-210234" y="251398" />
</nodes>
<location x="-210323" y="251215" z="11048" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250019" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="11744">
<node x="-206785" y="249466" />
<node x="-206823" y="249069" />
<node x="-206799" y="249068" />
<node x="-206759" y="249465" />
</nodes>
<location x="-206793" y="249261" z="11752" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250020" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="12225">
<node x="-206752" y="244379" />
<node x="-207167" y="244383" />
<node x="-207167" y="244352" />
<node x="-206753" y="244349" />
</nodes>
<location x="-206960" y="244365" z="12233" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250009" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="5225">
<node x="-206785" y="249466" />
<node x="-206823" y="249069" />
<node x="-206799" y="249068" />
<node x="-206759" y="249465" />
</nodes>
<location x="-206793" y="249261" z="5233" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250008" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="4521">
<node x="-210255" y="251409" />
<node x="-210415" y="251034" />
<node x="-210386" y="251022" />
<node x="-210232" y="251399" />
</nodes>
<location x="-210322" y="251216" z="4529" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250010" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="5706">
<node x="-206752" y="244379" />
<node x="-207167" y="244383" />
<node x="-207167" y="244352" />
<node x="-206753" y="244349" />
</nodes>
<location x="-206960" y="244365" z="5714" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250007" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="4115">
<node x="-215318" y="251921" />
<node x="-214977" y="251691" />
<node x="-214962" y="251719" />
<node x="-215304" y="251942" />
</nodes>
<location x="-215141" y="251817" z="4123" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250001" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="360">
<node x="-208062" y="241011" />
<node x="-207772" y="240723" />
<node x="-207749" y="240743" />
<node x="-208041" y="241032" />
</nodes>
<location x="-207904" y="240875" z="368" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250006" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="3328">
<node x="-218583" y="250015" />
<node x="-218293" y="249727" />
<node x="-218270" y="249747" />
<node x="-218562" y="250036" />
</nodes>
<location x="-218425" y="249879" z="3336" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="15240001" name="Hellfire_Du_Boss_S.Hellfire_Boss_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="-10250">
@ -17330,6 +17590,201 @@
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110001" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="3978">
<node x="-77846" y="-217621" />
<node x="-77557" y="-217909" />
<node x="-77533" y="-217889" />
<node x="-77826" y="-217600" />
</nodes>
<location x="-77688" y="-217757" z="3986" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110002" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="4766">
<node x="-80773" y="-218772" />
<node x="-80432" y="-219002" />
<node x="-80416" y="-218974" />
<node x="-80758" y="-218751" />
</nodes>
<location x="-80595" y="-218876" z="4774" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110003" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="5173">
<node x="-84579" y="-218016" />
<node x="-84739" y="-218391" />
<node x="-84710" y="-218403" />
<node x="-84557" y="-218026" />
</nodes>
<location x="-84646" y="-218209" z="5181" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110004" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="5876">
<node x="-87643" y="-216899" />
<node x="-87681" y="-217296" />
<node x="-87658" y="-217297" />
<node x="-87618" y="-216900" />
</nodes>
<location x="-87651" y="-217104" z="5884" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110005" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="6356">
<node x="-86382" y="-212479" />
<node x="-86797" y="-212475" />
<node x="-86798" y="-212506" />
<node x="-86383" y="-212509" />
</nodes>
<location x="-86590" y="-212493" z="6364" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110011" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="10169">
<node x="-77846" y="-217621" />
<node x="-77557" y="-217909" />
<node x="-77533" y="-217889" />
<node x="-77826" y="-217600" />
</nodes>
<location x="-77688" y="-217757" z="10177" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110012" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="10956">
<node x="-80773" y="-218772" />
<node x="-80432" y="-219002" />
<node x="-80416" y="-218974" />
<node x="-80758" y="-218751" />
</nodes>
<location x="-80595" y="-218876" z="10964" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110013" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="11363">
<node x="-84579" y="-218016" />
<node x="-84739" y="-218391" />
<node x="-84710" y="-218403" />
<node x="-84557" y="-218026" />
</nodes>
<location x="-84646" y="-218209" z="11371" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110014" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="12066">
<node x="-87643" y="-216899" />
<node x="-87681" y="-217296" />
<node x="-87658" y="-217297" />
<node x="-87618" y="-216900" />
</nodes>
<location x="-87651" y="-217104" z="12074" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110015" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="12546">
<node x="-86382" y="-212479" />
<node x="-86797" y="-212475" />
<node x="-86798" y="-212506" />
<node x="-86383" y="-212509" />
</nodes>
<location x="-86590" y="-212493" z="12554" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110006" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="6950">
<node x="-86216" y="-208863" />
<node x="-85927" y="-209151" />
<node x="-85903" y="-209131" />
<node x="-86196" y="-208842" />
</nodes>
<location x="-86058" y="-208999" z="6958" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110007" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="7735">
<node x="-83287" y="-207062" />
<node x="-82946" y="-207292" />
<node x="-82930" y="-207264" />
<node x="-83272" y="-207041" />
</nodes>
<location x="-83109" y="-207166" z="7743" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110008" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="8141">
<node x="-79060" y="-207695" />
<node x="-79220" y="-208070" />
<node x="-79191" y="-208082" />
<node x="-79038" y="-207705" />
</nodes>
<location x="-79127" y="-207888" z="8149" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110009" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="8845">
<node x="-76165" y="-209627" />
<node x="-76203" y="-210024" />
<node x="-76180" y="-210025" />
<node x="-76140" y="-209628" />
</nodes>
<location x="-76173" y="-209832" z="8853" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110010" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="9326">
<node x="-77028" y="-214451" />
<node x="-77443" y="-214447" />
<node x="-77444" y="-214478" />
<node x="-77029" y="-214481" />
</nodes>
<location x="-77236" y="-214465" z="9334" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17230101" name="Combine_dun_S.Comb_inst_door_01">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="-10501">

View File

@ -666,6 +666,171 @@
<loc id="1" x="-186018" y="243468" z="2657" />
<loc id="2" x="-186470" y="243500" z="2618" />
</map>
<!-- Dimensional Wrap Stage 1 -> 2 -->
<map id="46">
<loc id="1" x="-209809" y="239024" z="1560" />
<loc id="2" x="-210349" y="240190" z="1136" />
</map>
<!-- Dimensional Wrap Stage 2 -> 3 -->
<map id="47">
<loc id="1" x="-213737" y="238586" z="1596" />
<loc id="2" x="-214526" y="238900" z="1584" />
</map>
<!-- Dimensional Wrap Stage 3 -> 4 -->
<map id="48">
<loc id="1" x="-218797" y="240326" z="2670" />
<loc id="2" x="-218050" y="241346" z="2248" />
</map>
<!-- Dimensional Wrap Stage 4 -> 5 -->
<map id="49">
<loc id="1" x="-222958" y="241121" z="2386" />
<loc id="2" x="-219093" y="243874" z="2728" />
</map>
<!-- Dimensional Wrap Stage 5 -> 6 -->
<map id="50">
<loc id="1" x="-219640" y="247868" z="3496" />
<loc id="2" x="-219544" y="248776" z="3360" />
</map>
<!-- Dimensional Wrap Stage 6 -> 7 -->
<map id="51">
<loc id="1" x="-216513" y="251722" z="4527" />
<loc id="2" x="-215980" y="250563" z="4104" />
</map>
<!-- Dimensional Wrap Stage 7 -> 8 -->
<map id="52">
<loc id="1" x="-212680" y="251576" z="4680" />
<loc id="2" x="-211773" y="251821" z="4552" />
</map>
<!-- Dimensional Wrap Stage 8 -> 9 -->
<map id="53">
<loc id="1" x="-207533" y="250419" z="5639" />
<loc id="2" x="-208286" y="249412" z="5216" />
</map>
<!-- Dimensional Wrap Stage 9 -> 10 -->
<map id="54">
<loc id="1" x="-204970" y="248587" z="6592" />
<loc id="2" x="-206980" y="246782" z="5696" />
</map>
<!-- Dimensional Wrap Stage 10 -> 11 -->
<map id="55">
<loc id="1" x="-206220" y="242808" z="6656" />
<loc id="2" x="-206756" y="242009" z="6584" />
</map>
<!-- Dimensional Wrap Stage 11 -> 12 -->
<map id="56">
<loc id="1" x="-209814" y="239040" z="7752" />
<loc id="2" x="-210343" y="240201" z="7328" />
</map>
<!-- Dimensional Wrap Stage 12 -> 13 -->
<map id="57">
<loc id="1" x="-213566" y="238711" z="7848" />
<loc id="2" x="-214510" y="238914" z="7776" />
</map>
<!-- Dimensional Wrap Stage 13 -> 14 -->
<map id="58">
<loc id="1" x="-218793" y="240333" z="8860" />
<loc id="2" x="-218034" y="241333" z="8440" />
</map>
<!-- Dimensional Wrap Stage 14 -> 15 -->
<map id="59">
<loc id="1" x="-218699" y="242596" z="8859" />
<loc id="2" x="-219093" y="243899" z="8912" />
</map>
<!-- Dimensional Wrap Stage 15 -> 16 -->
<map id="60">
<loc id="1" x="-220117" y="247939" z="9954" />
<loc id="2" x="-219563" y="248742" z="9880" />
</map>
<!-- Dimensional Wrap Stage 16 -> 17 -->
<map id="61">
<loc id="1" x="-216516" y="251710" z="11052" />
<loc id="2" x="-215980" y="250563" z="10624" />
</map>
<!-- Dimensional Wrap Stage 17 -> 18 -->
<map id="62">
<loc id="1" x="-212765" y="252033" z="11144" />
<loc id="2" x="-211808" y="251842" z="11072" />
</map>
<!-- Dimensional Wrap Stage 18 -> 19 -->
<map id="63">
<loc id="1" x="-207530" y="250423" z="12159" />
<loc id="2" x="-208304" y="249410" z="11736" />
</map>
<!-- Dimensional Wrap Stage 19 -> 20 -->
<map id="64">
<loc id="1" x="-207627" y="248155" z="12155" />
<loc id="2" x="-206945" y="246788" z="12213" />
</map>
<!-- Dimensional Wrap Stage 21 -> 22 -->
<map id="65">
<loc id="1" x="-79225" y="-218779" z="5176" />
<loc id="2" x="-79748" y="-217616" z="4760" />
</map>
<!-- Dimensional Wrap Stage 22 -> 23 -->
<map id="66">
<loc id="1" x="-82213" y="-219036" z="5280" />
<loc id="2" x="-83169" y="-218823" z="5208" />
</map>
<!-- Dimensional Wrap Stage 23 -> 24 -->
<map id="67">
<loc id="1" x="-86907" y="-218255" z="6290" />
<loc id="2" x="-86150" y="-217250" z="5872" />
</map>
<!-- Dimensional Wrap Stage 24 -> 25 -->
<map id="68">
<loc id="1" x="-86810" y="-215997" z="6296" />
<loc id="2" x="-86570" y="-214902" z="6344" />
</map>
<!-- Dimensional Wrap Stage 25 -> 26 -->
<map id="69">
<loc id="1" x="-87748" y="-210937" z="7055" />
<loc id="2" x="-87191" y="-210129" z="6984" />
</map>
<!-- Dimensional Wrap Stage 26 -> 27 -->
<map id="70">
<loc id="1" x="-84473" y="-207277" z="8145" />
<loc id="2" x="-83950" y="-208428" z="7728" />
</map>
<!-- Dimensional Wrap Stage 27 -> 28 -->
<map id="71">
<loc id="1" x="-81572" y="-207061" z="8248" />
<loc id="2" x="-80608" y="-207264" z="8176" />
</map>
<!-- Dimensional Wrap Stage 28 -> 29 -->
<map id="72">
<loc id="1" x="-76906" y="-208670" z="9255" />
<loc id="2" x="-77674" y="-209675" z="8840" />
</map>
<!-- Dimensional Wrap Stage 29 -> 30 -->
<map id="73">
<loc id="1" x="-77002" y="-210933" z="9256" />
<loc id="2" x="-77231" y="-212044" z="9312" />
</map>
<!-- Dimensional Wrap Stage 30 -> 31 -->
<map id="74">
<loc id="1" x="-76000" y="-215820" z="10280" />
<loc id="2" x="-76542" y="-216618" z="10200" />
</map>
<!-- Dimensional Wrap Stage 31 -> 32 -->
<map id="75">
<loc id="1" x="-79225" y="-218778" z="11366" />
<loc id="2" x="-79754" y="-217624" z="10952" />
</map>
<!-- Dimensional Wrap Stage 32 -> 33 -->
<map id="76">
<loc id="1" x="-82216" y="-219042" z="11468" />
<loc id="2" x="-83160" y="-218833" z="11392" />
</map>
<!-- Dimensional Wrap Stage 33 -> 34 -->
<map id="77">
<loc id="1" x="-86920" y="-218259" z="12474" />
<loc id="2" x="-86158" y="-217262" z="12058" />
</map>
<!-- Dimensional Wrap Stage 34 -> 35 -->
<map id="78">
<loc id="1" x="-86692" y="-216159" z="12480" />
<loc id="2" x="-86572" y="-214918" z="12536" />
</map>
<!-- Ecnahnted Valley to East/West Enchanted Valley Side -->
<map id="79">
<selector id="0" x="113562" y="46888" z="-4640">

View File

@ -1,7 +1,7 @@
<html><body>Resed:<br>
The Dimensional Warp was created when the energy, which brought Faeron to the Material Realm from the Wind Spirit Realm, accumulated in one place. Only a party of <font color="LEVEL">4 or less</font> and at <font color="LEVEL">Lv. 99</font> may enter. Each team requires at least <font color="LEVEL">3 Warp Crystals</font>.<br>
Rare bracelets and fragments of an ancient tome can be found there. Do you want to go there?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 0">"Take me to the Dimensional Warp."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap enterInstance">"Take me to the Dimensional Warp."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 906">"I need a Warp Crystal."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 909">"I want to level up my Dimensional Bracelet."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 908">"I want to add abilities to my Dimensional Bracelet."</Button>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<html><body>Einster:<br>
Proof must be shown to go upstairs quiuckly. The level of Dimensional Warp you completed determines which floor you can go to.<br>
Many accidents have happened on floors 31 and higher. To protect researchers, we are investigation those floors. For now, <font color="LEVEL">I can send you up to the 26th floor.</font><br>
Ah, you must <font color="LEVEL">determine how many Warp Crystals you will pay</font> before asking me to send you upstairs. Which floor do you want to go?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_6_f">"Send me to 6F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_11_f">"Send me to 11F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_16_f">"Send me to 16F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_21_f">"Send me to 21F"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_26_f">"Send me to 26F"</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Einster:<br>
You haven't paid Warp Crystals. I can't send you upstairs.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Einster:<br>
You didn't give me the number of Warp Crystals you promised.<br1>
Each member of the party must have <font color="LEVEL">%count% Warp Crystals</font>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Einster:<br>
You made it all the way here. Did you find ani Imps?<br>
You didn't uncover all the secrets yet. Secrets also exist in Abyssal Space. No explorers dared to go there yet.<br>
Please find out those secrets!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap jump_location">"Sure, sure. Let me move on"</Button>
</body></html>

View File

@ -0,0 +1,9 @@
<html><body>Einster:<br>
There's someone who has not met the quest completion requirements, so I cannot send you.<br>
Check the list below to see which floor you can go to.<br><br>
Floor 6: Complete The Dimensional Warp, Part 1<br><br>
Floor 11: Complete The Dimensional Warp, Part 2<br><br>
Floor 16: Complete The Dimensional Warp, Part 3<br><br>
Floor 21: Complete The Dimensional Warp, Part 4<br><br>
Floor 26: Complete The Dimensional Warp, Part 5<br><br>
</body></html>

View File

@ -0,0 +1,12 @@
<html><body>Einster:<br>
I was first one to explore Dimensional Wrap. I heard that the imps here carry materials we could use -- rare books, things to enchant bracelets with, and the like.<br>
The Expeditioners have discovered that the probability of imps appearing increases with our use of Warp Crystals, but we have to use a lot to even think about getting up there.<br>
All members of the team should carry Warp Crystals. I'll divide them up according to the number in your group.<br>
I recently discovered the key to going upstairs directly. If you want, I can send you there.<br>
Okay, let's get started.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 12_warp_crystals">"I'll use 12 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 240_warp_crystals">"I'll use 240 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 1200_warp_crystals">"I'll use 1200 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 906">"I need Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 33975-01.html">"I want to go upstairs directly."</Button>
</body></html>

View File

@ -0,0 +1,77 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import com.l2jmobius.gameserver.enums.ChatType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.NpcSay;
import ai.AbstractNpcAI;
/**
* Dimensional Archon AI
* @author Gigi
* @date 2018-09-08 - [18:09:02]
*/
public class DimensionalArchon extends AbstractNpcAI
{
// NPCs
private static final int DEMINSIONAL_ARCHON = 23469;
private static final int UNWORDLY_ARCHON = 23475;
private static final int ABYSSAL_ARCHON = 23482;
private static final NpcStringId[] ARCHON_MSG =
{
NpcStringId.DO_YOU_KNOW_WHO_IT_IS_THAT_YOU_FACE_IT_IS_BEST_THAT_YOU_RUN_NOW,
NpcStringId.LOOK_INTO_MY_EYES_AND_SEE_WHAT_COUNTLESS_OTHERS_HAVE_SEEN_BEFORE_THEIR_DEATH,
NpcStringId.I_COMMEND_YOUR_TENACITY_IN_COMING_THIS_FAR_BUT_NOW_IT_ENDS,
NpcStringId.DO_YOU_SEE_THIS_SWORD_THE_LIGHT_THAT_SCREAMS_WITH_THE_LIFE_OF_THOSE_IT_HAS_KILLED,
NpcStringId.I_WILL_SHOW_YOU_WHAT_TRUE_POWER_IS,
NpcStringId.YOU_WILL_NEED_TO_SURPASS_ME_EVENTUALLY_BUT_DON_T_FORGET_KNOWING_HOW_TO_FLEE_IS_AN_IMPORTANT_PART_OF_BATTLE
};
public DimensionalArchon()
{
super();
addSpawnId(DEMINSIONAL_ARCHON, UNWORDLY_ARCHON, ABYSSAL_ARCHON);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (event.equals("NPC_SHOUT"))
{
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), ARCHON_MSG[getRandom(ARCHON_MSG.length)]));
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onSpawn(L2Npc npc)
{
npc.setShowSummonAnimation(true);
startQuestTimer("NPC_SHOUT", 2000, npc, null);
return super.onSpawn(npc);
}
public static void main(String[] args)
{
new DimensionalArchon();
}
}

View File

@ -0,0 +1,169 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.SkillHolder;
import ai.AbstractNpcAI;
/**
* Dimensional Trap's AI
* @author Gigi
* @date 2018-09-07 - [17:39:04]
*/
public class DimensionalTrap extends AbstractNpcAI
{
private static final int DIMENSIONAL_DEBUFF_TRAP_1 = 19556; // Debuff trap, power 1
private static final int DIMENSIONAL_DEBUFF_TRAP_2 = 19557; // Debuff trap, power 2
private static final int DIMENSIONAL_DEBUFF_TRAP_3 = 19558; // Debuff trap, power 3
private static final int DIMENSIONAL_DEMAGE_TRAP_1 = 19559; // Damage trap, power 1
private static final int DIMENSIONAL_DEMAGE_TRAP_2 = 19560; // Damage trap, power 2
private static final int DIMENSIONAL_DEMAGE_TRAP_3 = 19561; // Damage trap, power 3
private static final int DIMENSIONAL_HEAL_LIGHT = 19562; // Heal Trap
// skill
private static final SkillHolder TRAP_HOLD = new SkillHolder(16409, 1);
private static final SkillHolder TRAP_ARIALL_YOKE = new SkillHolder(16410, 1);
private static final SkillHolder TRAP_STUN = new SkillHolder(16411, 1);
private static final SkillHolder TRAP_POYSON = new SkillHolder(16413, 1);
private static final SkillHolder PEACE_ZONE_CURE = new SkillHolder(16414, 1);
private int _type;
public DimensionalTrap()
{
super();
addSpawnId(DIMENSIONAL_DEBUFF_TRAP_1, DIMENSIONAL_DEBUFF_TRAP_2, DIMENSIONAL_DEBUFF_TRAP_3, DIMENSIONAL_DEMAGE_TRAP_1, DIMENSIONAL_DEMAGE_TRAP_2, DIMENSIONAL_DEMAGE_TRAP_3, DIMENSIONAL_HEAL_LIGHT);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (npc != null)
{
switch (event)
{
case "debuff_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast((getRandom(10) < 5) ? TRAP_HOLD.getSkill() : TRAP_ARIALL_YOKE.getSkill());
}
});
startQuestTimer("debuff_player", 10000, npc, null);
break;
}
case "demage_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast((getRandom(10) < 5) ? TRAP_STUN.getSkill() : TRAP_POYSON.getSkill());
}
});
startQuestTimer("demage_player", 10000, npc, null);
break;
}
case "heal_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast(PEACE_ZONE_CURE.getSkill());
}
});
startQuestTimer("heal_player", 10000, npc, null);
break;
}
}
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onSpawn(L2Npc npc)
{
npc.setIsInvul(true);
switch (npc.getId())
{
case DIMENSIONAL_DEBUFF_TRAP_1:
{
npc.setDisplayEffect(1);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 50;
break;
}
case DIMENSIONAL_DEBUFF_TRAP_2:
{
npc.setDisplayEffect(2);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 100;
break;
}
case DIMENSIONAL_DEBUFF_TRAP_3:
{
npc.setDisplayEffect(3);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 150;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_1:
{
npc.setDisplayEffect(4);
startQuestTimer("demage_player", 3000, npc, null);
_type = 50;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_2:
{
npc.setDisplayEffect(5);
startQuestTimer("demage_player", 3000, npc, null);
_type = 100;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_3:
{
npc.setDisplayEffect(6);
startQuestTimer("demage_player", 3000, npc, null);
_type = 150;
break;
}
case DIMENSIONAL_HEAL_LIGHT:
{
npc.setDisplayEffect(7);
startQuestTimer("heal_player", 3000, npc, null);
_type = 150;
break;
}
}
return super.onSpawn(npc);
}
public static void main(String[] args)
{
new DimensionalTrap();
}
}

View File

@ -0,0 +1,676 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import com.l2jmobius.Config;
import com.l2jmobius.commons.concurrent.ThreadPool;
import com.l2jmobius.commons.util.CommonUtil;
import com.l2jmobius.gameserver.data.xml.impl.SkillData;
import com.l2jmobius.gameserver.enums.CategoryType;
import com.l2jmobius.gameserver.model.L2Party;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.instancezone.Instance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.Earthquake;
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import instances.AbstractInstance;
/**
* Dimensional Wrap instance
* @URL https://l2wiki.com/Dimensional_Warp
* @Video https://www.youtube.com/watch?v=hOnzk0ELwIg
* @author Gigi
* @date 2018-09-04 - [14:33:31]
*/
public class DimensionalWrap extends AbstractInstance
{
// NPCs
private static final int RESED = 33974;
private static final int EINSTER = 33975;
// Monsters
private static final int DEMINSIONAL_INVISIBLE_FRAGMENT = 19564;
private static final int SALAMANDRA_GENERATOR = 19563;
private static final int SALAMANDRA_GENERATOR_DUMMY = 900112;
private static final int DIMENSIONAL_SALAMANDRA = 23466;
private static final int UNWORDLY_SALAMANDER = 23473;
private static final int DIMENSIONAL_IMP = 19553;
private static final int UNWORDLY_IMP = 19554;
private static final int ABYSSAL_IMP = 19555;
private static final int ABYSSAL_MAKKUM = 26090;
private static final int[] MONSTERS =
{
23462, // Dimensional Orc Butcher
23463, // Dimensional Orc Hunter
23464, // Dimensional Shaman
23465, // Dimensional Bugbear
23467, // Dimensional Binder
23468, // Dimensional Demon
23469, // Dimensional Archon
23470, // Unworldly Demon
23471, // Unworldly Etin
23472, // Unworldly Shaman
23474, // Unworldly Golem
23475, // Unworldly Archon
23476, // Unworldly Harpy
23477, // Abyssal Shaman
23478, // Abyssal Berserker
23480, // Abyssal Harpy
23481, // Abyssal Binder
23482, // Abyssal Archon
23483 // Abyssal Golem
};
private static final int[] TRAPS =
{
19556, // Debuff trap, power 1
19557, // Debuff trap, power 2
19558, // Debuff trap, power 3
19559, // Damage trap, power 1
19560, // Damage trap, power 2
19561, // Damage trap, power 3
19562 // Heal Trap
};
// Location
private static final Location TELEPORTS = new Location(-76136, -216216, 4040);
private static final Location FIRST_TELEPORT = new Location(-219544, 248776, 3360);
private static final Location SECOND_TELEPORT = new Location(-206756, 242009, 6584);
private static final Location THRID_TELEPORT = new Location(-219813, 248484, 9928);
private static final Location FOURTH_TELEPORT = new Location(-87191, -210129, 6984);
// Misc
private static final int TEMPLATE_ID = 250;
private static final int DIMENSIONAL_DARK_FORCES = 16415;
private static final int WARP_CRYSTAL = 39597;
protected double _chance = 0;
protected int _count = 0;
public int _skilllevel = 1;
public int _worldState = 0;
protected ScheduledFuture<?> _debufTask;
public DimensionalWrap()
{
super(TEMPLATE_ID);
addStartNpc(RESED);
addTalkId(EINSTER);
addKillId(MONSTERS);
addKillId(ABYSSAL_MAKKUM);
addSpawnId(SALAMANDRA_GENERATOR, DEMINSIONAL_INVISIBLE_FRAGMENT, SALAMANDRA_GENERATOR_DUMMY);
addFirstTalkId(EINSTER);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
final Instance world = npc.getInstanceWorld();
if (event.equals("enterInstance"))
{
if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
{
htmltext = "no_awakened.html";
}
else if (!player.isInParty())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else if (player.isInParty())
{
if (!player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
}
else
{
final L2Party party = player.getParty();
final List<L2PcInstance> members = party.getMembers();
for (L2PcInstance member : members)
{
if (member.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
{
enterInstance(member, npc, TEMPLATE_ID);
}
}
}
}
}
if (isInInstance(world))
{
switch (event)
{
case "33975-01.html":
{
htmltext = event;
break;
}
case "12_warp_crystals":
{
_chance = 0.3;
if (!player.isInParty())
{
_count = 12;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 6;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 4;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 3;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "240_warp_crystals":
{
_chance = 0.6;
if (!player.isInParty())
{
_count = 240;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 120;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 80;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 60;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "1200_warp_crystals":
{
_chance = 0.9;
if (!player.isInParty())
{
_count = 1200;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 600;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 400;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 300;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "send_6_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0)
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 5)
{
world.setStatus(5);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(FIRST_TELEPORT, world.getTemplateId());
}
break;
}
case "send_11_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 2))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 10)
{
world.setStatus(10);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(SECOND_TELEPORT, world.getTemplateId());
}
break;
}
case "send_16_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 3))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 15)
{
world.setStatus(15);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(THRID_TELEPORT, world.getTemplateId());
}
break;
}
case "send_21_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 4))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 20)
{
world.setStatus(20);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(TELEPORTS, world.getTemplateId());
}
break;
}
case "send_26_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 5))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 25)
{
world.setStatus(25);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(FOURTH_TELEPORT, world.getTemplateId());
}
break;
}
case "jump_location":
{
player.teleToLocation(TELEPORTS, world.getTemplateId());
break;
}
case "SALAMANDRA_SPAWN":
case "SALAMANDRA_SPAWN_DUMMY":
{
if (getRandom(100) < (_worldState / 2))
{
final L2Npc salamandra = addSpawn(_worldState < 17 ? DIMENSIONAL_SALAMANDRA : UNWORDLY_SALAMANDER, npc, false, 0, false, world.getId());
salamandra.setRunning();
L2World.getInstance().forEachVisibleObjectInRange(salamandra, L2PcInstance.class, 2500, p ->
{
if ((p != null) && !p.isDead())
{
addAttackPlayerDesire(salamandra, p);
}
});
}
break;
}
case "START_STAGE":
{
world.setStatus(world.getStatus() + 1);
_worldState = world.getStatus();
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.DIMENSIONAL_WARP_LV_S1, ExShowScreenMessage.TOP_CENTER, 10000, true, String.valueOf(world.getStatus())));
startQuestTimer("FIRST_SPAWN", 1500, npc, null);
break;
}
case "FIRST_SPAWN":
{
world.spawnGroup(_worldState + "_first_spawn");
world.spawnGroup(_worldState + "_trap_spawn");
startQuestTimer("SECOND_SPAWN", 40000, npc, null);
_debufTask = ThreadPool.scheduleAtFixedRate(() ->
{
if ((_worldState > 0) && (_worldState <= 11))
{
_skilllevel = 1;
}
else if ((_worldState > 11) && (_worldState <= 20))
{
_skilllevel = 2;
}
else if ((_worldState > 20) && (_worldState <= 30))
{
_skilllevel = 3;
}
else if (_worldState > 30)
{
_skilllevel = 4;
}
final Skill skill = SkillData.getInstance().getSkill(DIMENSIONAL_DARK_FORCES, _skilllevel);
for (L2PcInstance p : world.getPlayers())
{
if ((p != null) && !p.isDead())
{
skill.applyEffects(p, p);
}
}
}, 5000, 10000);
break;
}
case "SECOND_SPAWN":
{
world.spawnGroup(_worldState + "_second_spawn");
startQuestTimer("THRID_SPAWN", 40000, npc, null);
break;
}
case "THRID_SPAWN":
{
world.spawnGroup(_worldState + "_thred_spawn");
break;
}
case "CHANGE_LOCATION":
{
world.getAliveNpcs(TRAPS).forEach(t -> t.deleteMe());
world.spawnGroup(_worldState + "_trap_spawn");
startQuestTimer("CHANGE_LOCATION", 60000 - (_worldState * 1430), npc, null);
break;
}
case "SWITCH_STAGE":
{
if (world.getAliveNpcs(MONSTERS).isEmpty())
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SURROUNDING_ENERGY_HAS_DISSIPATED, ExShowScreenMessage.TOP_CENTER, 5000, true));
world.broadcastPacket(new Earthquake(npc, 50, 5));
world.openCloseDoor(world.getTemplateParameters().getInt(_worldState + "_st_door"), true);
Clean();
if (_worldState < 35)
{
startQuestTimer("NEXT_STAGE", 5000, npc, null);
}
}
break;
}
case "NEXT_STAGE":
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.S1_SECONDS_HAVE_BEEN_ADDED_TO_THE_INSTANCED_ZONE_DURATION, ExShowScreenMessage.TOP_CENTER, 5000, true, String.valueOf(180)));
world.setDuration((int) ((world.getRemainingTime() / 60000) + 3));
startQuestTimer("START_STAGE", 8000, npc, null);
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
break;
}
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
if (CommonUtil.contains(MONSTERS, npc.getId()) && (getRandom(100) < _chance))
{
if (_worldState < 9)
{
addSpawn(DIMENSIONAL_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.DIMENSIONAL_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
else if ((_worldState >= 9) && (_worldState < 20))
{
addSpawn(UNWORDLY_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.UNWORLDLY_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
else if (_worldState >= 20)
{
addSpawn(ABYSSAL_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.ABYSSAL_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
}
else if (npc.getId() == ABYSSAL_MAKKUM)
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_INSTANCED_ZONE_WILL_CLOSE_SOON, ExShowScreenMessage.TOP_CENTER, 10000, true));
world.finishInstance(3);
Clean();
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (_worldState == 20)
{
return "33975-04.html";
}
return "33975.html";
}
@Override
public String onSpawn(L2Npc npc)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
switch (npc.getId())
{
case SALAMANDRA_GENERATOR:
{
startQuestTimer("SALAMANDRA_SPAWN", 25000, npc, null, true);
startQuestTimer("CHANGE_LOCATION", 60000 - (_worldState * 1300), npc, null);
break;
}
case SALAMANDRA_GENERATOR_DUMMY:
{
startQuestTimer("SALAMANDRA_SPAWN_DUMMY", 20000, npc, null, true);
break;
}
case DEMINSIONAL_INVISIBLE_FRAGMENT:
{
startQuestTimer("SWITCH_STAGE", 5000, npc, null, true);
break;
}
}
}
return super.onSpawn(npc);
}
public void CheckCrystallCount(Instance world, L2PcInstance player, L2Npc npc)
{
boolean canStart = true;
for (L2PcInstance p : world.getPlayers())
{
if (p.getInventory().getInventoryItemCount(WARP_CRYSTAL, -1) < _count)
{
for (L2PcInstance ps : world.getPlayers())
{
final NpcHtmlMessage packet = new NpcHtmlMessage(npc.getObjectId());
packet.setHtml(getHtm(ps, "33975-03.html"));
packet.replace("%count%", Integer.toString(_count));
ps.sendPacket(packet);
ps.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.C1_S_ITEM_REQUIREMENT_IS_NOT_SUFFICIENT_AND_CANNOT_BE_ENTERED).addString(ps.getName()));
canStart = false;
}
}
}
if (!canStart || (_worldState != 0))
{
return;
}
startQuestTimer("START_STAGE", 1000, npc, null);
for (L2PcInstance p : world.getPlayers())
{
takeItems(p, WARP_CRYSTAL, _count);
}
}
protected void Clean()
{
cancelQuestTimers("SWITCH_STAGE");
cancelQuestTimers("SALAMANDRA_SPAWN");
cancelQuestTimers("SALAMANDRA_SPAWN_DUMMY");
cancelQuestTimers("CHANGE_LOCATION");
if (_debufTask != null)
{
_debufTask.cancel(false);
_debufTask = null;
}
}
public static void main(String[] args)
{
new DimensionalWrap();
}
}

View File

@ -0,0 +1,3 @@
<html><body>Resed:<br>
Only those who have completed the 3rd Liberation or have Awakened can enter.
</body></html>

View File

@ -1023,7 +1023,10 @@
</collision>
</npc>
<npc id="19556" level="99" type="L2Npc" name="Dimensional Trap">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="trap_skill_type" value="1" />
<skill name="trap_skill" id="10806" level="2" />
</parameters>
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
@ -1035,7 +1038,12 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<skillList>
<skill id="10806" level="2" /> <!-- Frost Trap -->
</skillList>
<exCrtEffect>true</exCrtEffect>
<ai aggroRange="100" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1054,7 +1062,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1073,7 +1081,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1092,7 +1100,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1111,7 +1119,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1130,7 +1138,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1149,7 +1157,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1168,7 +1176,7 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="1" />
<height normal="1" />
@ -1187,7 +1195,7 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="0.1" />
<height normal="0.1" />

View File

@ -676,6 +676,7 @@
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="7276" sp="1" />
<equipment rhand="78" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="1183" hpRegen="4.5" mp="610" mpRegen="1.8" />
<speed>
@ -703,6 +704,7 @@
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="7276" sp="1" />
<equipment rhand="78" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="1183" hpRegen="4.5" mp="610" mpRegen="1.8" />
<speed>
@ -820,6 +822,7 @@
<race>DRAGON</race>
<sex>MALE</sex>
<acquire exp="331748" sp="79" />
<equipment rhand="13978" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="8923" hpRegen="8.5" mp="1607" mpRegen="3" />
@ -913,6 +916,7 @@
<race>DRAGON</race>
<sex>MALE</sex>
<acquire exp="440867" sp="105" />
<equipment rhand="35708" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="9870" hpRegen="8.5" mp="1674" mpRegen="3" />
@ -960,6 +964,7 @@
<race>DRAGON</race>
<sex>MALE</sex>
<acquire exp="440867" sp="105" />
<equipment rhand="13979" lhand="13980" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="9870" hpRegen="8.5" mp="1674" mpRegen="3" />
@ -1189,6 +1194,7 @@
<race>DRAGON</race>
<sex>MALE</sex>
<acquire exp="440867" sp="105" />
<equipment rhand="35708" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="11506" hpRegen="8.5" mp="1777" mpRegen="3" />
@ -1329,6 +1335,7 @@
<race>UNDEAD</race>
<sex>FEMALE</sex>
<acquire exp="269969" sp="64" />
<equipment rhand="15302" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="8570" hpRegen="8.5" mp="1574" mpRegen="3" />
@ -1420,6 +1427,7 @@
<race>UNDEAD</race>
<sex>MALE</sex>
<acquire exp="331748" sp="79" />
<equipment rhand="221" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="8923" hpRegen="8.5" mp="1607" mpRegen="3" />
@ -1606,6 +1614,7 @@
<race>UNDEAD</race>
<sex>MALE</sex>
<acquire exp="449407" sp="107" />
<equipment rhand="78" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="10930" hpRegen="8.5" mp="1743" mpRegen="3" />
@ -2461,10 +2470,13 @@
</collision>
</npc>
<npc id="23462" level="99" type="L2Monster" name="Dimensional Orc Butcher">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="83739744" sp="301463" />
<equipment rhand="38425" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="376398" hpRegen="10.5" mp="23550" mpRegen="3.6" />
<speed>
@ -2489,6 +2501,11 @@
<skill id="16365" level="1" /> <!-- Dimensional Defense Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="34.1799999999999" /> <!-- Warp Crystal -->
@ -2504,10 +2521,13 @@
</collision>
</npc>
<npc id="23463" level="99" type="L2Monster" name="Dimensional Orc Hunter" title="Scout">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="125609616" sp="452194" />
<equipment rhand="38426" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="752796" hpRegen="10.5" mp="23550" mpRegen="3.6" />
<speed>
@ -2531,6 +2551,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16380" level="1" /> <!-- Dimensional Recoil Shot -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="98.00558631842" /> <!-- Warp Crystal -->
@ -2546,7 +2571,9 @@
</collision>
</npc>
<npc id="23464" level="99" type="L2Monster" name="Dimensional Shaman" title="Watcher">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>DEMONIC</race>
<sex>FEMALE</sex>
<acquire exp="125609616" sp="452194" />
@ -2577,6 +2604,11 @@
<skill id="16372" level="1" /> <!-- Dimensional Spike -->
<skill id="16381" level="1" /> <!-- Dimensional Shield -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="98.075753712167" /> <!-- Warp Crystal -->
@ -2592,10 +2624,13 @@
</collision>
</npc>
<npc id="23465" level="99" type="L2Monster" name="Dimensional Bugbear">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>GIANT</race>
<sex>FEMALE</sex>
<acquire exp="125609616" sp="452194" />
<equipment rhand="160" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="752796" hpRegen="10.5" mp="23550" mpRegen="3.6" />
<speed>
@ -2621,6 +2656,11 @@
<skill id="16375" level="1" /> <!-- Dimensional Hammer -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="98.049789683201" /> <!-- Warp Crystal -->
@ -2636,7 +2676,9 @@
</collision>
</npc>
<npc id="23466" level="99" type="L2Monster" name="Dimensional Salamander" title="Hunter">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>ELEMENTAL</race>
<sex>FEMALE</sex>
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
@ -2673,7 +2715,9 @@
</collision>
</npc>
<npc id="23467" level="99" type="L2Monster" name="Dimensional Binder">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="125609616" sp="452194" />
@ -2703,6 +2747,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="98.072868141029" /> <!-- Warp Crystal -->
@ -2718,7 +2767,9 @@
</collision>
</npc>
<npc id="23468" level="99" type="L2Monster" name="Dimensional Demon">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>DEMONIC</race>
<sex>FEMALE</sex>
<acquire exp="83739744" sp="301463" />
@ -2749,6 +2800,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="33.3200000000001" /> <!-- Warp Crystal -->
@ -2764,7 +2820,9 @@
</collision>
</npc>
<npc id="23469" level="99" type="L2Monster" name="Dimensional Archon" title="Slaughterer">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>UNDEAD</race>
<sex>FEMALE</sex>
<acquire exp="251219232" sp="904389" />
@ -2797,6 +2855,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="2" max="2" chance="96.195469193401" /> <!-- Warp Crystal -->
@ -3346,6 +3409,7 @@
<race>UNDEAD</race>
<sex>FEMALE</sex>
<acquire exp="251219232" sp="904389" />
<equipment rhand="39719" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="1355033" hpRegen="10.5" mp="23550" mpRegen="3.6" />
<speed>

View File

@ -91,55 +91,237 @@
<skill id="16409" toLevel="3" name="Trap Hold">
<!-- Immobilized. -->
<icon>icon.skill4047</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>ROOT_MAGICALLY</abnormalType>
<abnormalVisualEffect>ROOT</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>10</abnormalTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>80</activateRate>
<trait>HOLD</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="Root" />
<effect name="DefenceTrait">
<HOLD>100</HOLD>
</effect>
</effects>
</skill>
<skill id="16410" toLevel="3" name="Trap Aerial Yoke">
<!-- Immobilized. -->
<icon>icon.skill11050</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>AIRBIND</abnormalType>
<abnormalVisualEffect>AIRBIND</abnormalVisualEffect>
<abnormalResists>STUN;TURN_FLEE</abnormalResists>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>80</activateRate>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="AirBind" />
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
</effect>
<effect name="DefenceTrait">
<HOLD>100</HOLD>
<DERANGEMENT>100</DERANGEMENT>
<SHOCK>100</SHOCK>
<KNOCKBACK>100</KNOCKBACK>
<CHANGEBODY>100</CHANGEBODY>
<KNOCKDOWN>100</KNOCKDOWN>
<SLEEP>100</SLEEP>
<AIRBIND>100</AIRBIND>
</effect>
</effects>
</skill>
<skill id="16411" toLevel="3" name="Trap Stun">
<!-- Immobilized. -->
<icon>icon.skill0100</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>STUN</abnormalType>
<abnormalVisualEffect>STUN</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<trait>SHOCK</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="BlockActions" />
</effects>
</skill>
<skill id="16412" toLevel="3" name="Trap Petrify">
<!-- Immobilized. -->
<icon>icon.skill4111</icon>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>10</abnormalTime>
<affectRange>150</affectRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16413" toLevel="3" name="Trap Poison">
<!-- Poisoned and losing $s1,$s2 HP/second. -->
<icon>icon.skill4035</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<trait>POISON</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="DamOverTime">
<power>1000</power>
<ticks>1</ticks>
</effect>
</effects>
</skill>
<skill id="16414" toLevel="1" name="Peace Zone Cure">
<!-- Recover 10% of Max HP and 30% of Max MP of self and everyone within 200 grids. Cooldown is 10 sec. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<affectRange>200</affectRange>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="HealPercent">
<power>10</power>
</effect>
</effects>
<effect name="ManaHealPercent">
<power>30</power>
</effect>
</skill>
<skill id="16415" toLevel="4" name="Dimensional Dark Forces">
<!-- P. Atk - $s1, M. Atk. - $s2, and P. Critical Rate - $s3, M. Critical Rate - $s4. -->
<icon>icon.skill1298</icon>
<abnormalLvl>
<value level="1">1</value>
<value level="2">2</value>
<value level="3">3</value>
<value level="4">4</value>
</abnormalLvl>
<abnormalTime>
<value level="1">5</value>
<value level="2">5</value>
<value level="3">10</value>
<value level="4">10</value>
</abnormalTime>
<operateType>A2</operateType>
<rideState>NONE</rideState>
<basicProperty>NONE</basicProperty>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<isDebuff>1</isDebuff>
<affectScope>SINGLE</affectScope>
<targetType>SELF</targetType>
<effects>
<effect name="PAtk">
<amount>
<value level="1">-4</value>
<value level="2">-6</value>
<value level="3">-8</value>
<value level="3">-10</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="MAtk">
<amount>
<value level="1">-4</value>
<value level="2">-6</value>
<value level="3">-8</value>
<value level="3">-10</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="CriticalRate">
<amount>
<value level="1">-5</value>
<value level="2">-10</value>
<value level="3">-20</value>
<value level="3">-30</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="MagicCriticalRate">
<amount>
<value level="1">-5</value>
<value level="2">-10</value>
<value level="3">-20</value>
<value level="3">-30</value>
</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="16416" toLevel="10" name="Bluff Resistance">
<!-- Resistance to Bluff. -->

View File

@ -142,6 +142,172 @@
<stat name="mapId" val="45" />
<node X="-186154" Y="242838" />
</zone>
<!-- Dimensional Wrap Stage 1 -->
<zone name="Sayune_46" type="SayuneZone" shape="Cylinder" minZ="400" maxZ="500" rad="80">
<stat name="mapId" val="46" />
<node X="-208193" Y="240585" />
</zone>
<!-- Dimensional Wrap Stage 2 -->
<zone name="Sayune_47" type="SayuneZone" shape="Cylinder" minZ="1100" maxZ="1200" rad="80">
<stat name="mapId" val="47" />
<node X="-211300" Y="238768" />
</zone>
<!-- Dimensional Wrap Stage 3 -->
<zone name="Sayune_48" type="SayuneZone" shape="Cylinder" minZ="1600" maxZ="1700" rad="80">
<stat name="mapId" val="48" />
<node X="-216356" Y="239680" />
</zone>
<!-- Dimensional Wrap Stage 4 -->
<zone name="Sayune_49" type="SayuneZone" shape="Cylinder" minZ="2250" maxZ="2350" rad="80">
<stat name="mapId" val="49" />
<node X="-219722" Y="241510" />
</zone>
<!-- Dimensional Wrap Stage 5 -->
<zone name="Sayune_50" type="SayuneZone" shape="Cylinder" minZ="2700" maxZ="2800" rad="80">
<stat name="mapId" val="50" />
<node X="-219116" Y="246748" />
</zone>
<!-- Dimensional Wrap Stage 6 -->
<zone name="Sayune_51" type="SayuneZone" shape="Cylinder" minZ="3350" maxZ="3450" rad="80">
<stat name="mapId" val="51" />
<node X="-218132" Y="250177" />
</zone>
<!-- Dimensional Wrap Stage 7 -->
<zone name="Sayune_52" type="SayuneZone" shape="Cylinder" minZ="4100" maxZ="4200" rad="80">
<stat name="mapId" val="52" />
<node X="-215046" Y="251965" />
</zone>
<!-- Dimensional Wrap Stage 8 -->
<zone name="Sayune_53" type="SayuneZone" shape="Cylinder" minZ="4550" maxZ="4650" rad="80">
<stat name="mapId" val="53" />
<node X="-209957" Y="251067" />
</zone>
<!-- Dimensional Wrap Stage 9 -->
<zone name="Sayune_54" type="SayuneZone" shape="Cylinder" minZ="5200" maxZ="5300" rad="80">
<stat name="mapId" val="54" />
<node X="-206602" Y="249250" />
</zone>
<!-- Dimensional Wrap Stage 10 -->
<zone name="Sayune_55" type="SayuneZone" shape="Cylinder" minZ="5550" maxZ="5800" rad="80">
<stat name="mapId" val="55" />
<node X="-206952" Y="243976" />
</zone>
<!-- Dimensional Wrap Stage 11 -->
<zone name="Sayune_56" type="SayuneZone" shape="Cylinder" minZ="6500" maxZ="6750" rad="80">
<stat name="mapId" val="56" />
<node X="-208200" Y="240584" />
</zone>
<!-- Dimensional Wrap Stage 12 -->
<zone name="Sayune_57" type="SayuneZone" shape="Cylinder" minZ="7220" maxZ="7460" rad="80">
<stat name="mapId" val="57" />
<node X="-211304" Y="238760" />
</zone>
<!-- Dimensional Wrap Stage 13 -->
<zone name="Sayune_58" type="SayuneZone" shape="Cylinder" minZ="7700" maxZ="7900" rad="80">
<stat name="mapId" val="58" />
<node X="-216344" Y="239672" />
</zone>
<!-- Dimensional Wrap Stage 14 -->
<zone name="Sayune_59" type="SayuneZone" shape="Cylinder" minZ="8350" maxZ="8555" rad="80">
<stat name="mapId" val="59" />
<node X="-219720" Y="241512" />
</zone>
<!-- Dimensional Wrap Stage 15 -->
<zone name="Sayune_60" type="SayuneZone" shape="Cylinder" minZ="8780" maxZ="9000" rad="80">
<stat name="mapId" val="60" />
<node X="-219112" Y="246744" />
</zone>
<!-- Dimensional Wrap Stage 16 -->
<zone name="Sayune_61" type="SayuneZone" shape="Cylinder" minZ="9800" maxZ="10000" rad="80">
<stat name="mapId" val="61" />
<node X="-218136" Y="250184" />
</zone>
<!-- Dimensional Wrap Stage 17 -->
<zone name="Sayune_62" type="SayuneZone" shape="Cylinder" minZ="10520" maxZ="10790" rad="80">
<stat name="mapId" val="62" />
<node X="-215048" Y="251960" />
</zone>
<!-- Dimensional Wrap Stage 18 -->
<zone name="Sayune_63" type="SayuneZone" shape="Cylinder" minZ="11000" maxZ="11200" rad="80">
<stat name="mapId" val="63" />
<node X="-209960" Y="251080" />
</zone>
<!-- Dimensional Wrap Stage 19 -->
<zone name="Sayune_64" type="SayuneZone" shape="Cylinder" minZ="11650" maxZ="11850" rad="80">
<stat name="mapId" val="64" />
<node X="-206600" Y="249240" />
</zone>
<!-- Dimensional Wrap Stage 21 -->
<zone name="Sayune_65" type="SayuneZone" shape="Cylinder" minZ="4000" maxZ="4100" rad="80">
<stat name="mapId" val="65" />
<node X="-77982" Y="-218040" />
</zone>
<!-- Dimensional Wrap Stage 22 -->
<zone name="Sayune_66" type="SayuneZone" shape="Cylinder" minZ="4700" maxZ="4800" rad="80">
<stat name="mapId" val="66" />
<node X="-80696" Y="-219020" />
</zone>
<!-- Dimensional Wrap Stage 23 -->
<zone name="Sayune_67" type="SayuneZone" shape="Cylinder" minZ="5200" maxZ="5300" rad="80">
<stat name="mapId" val="67" />
<node X="-85023" Y="-218047" />
</zone>
<!-- Dimensional Wrap Stage 24 -->
<zone name="Sayune_68" type="SayuneZone" shape="Cylinder" minZ="5900" maxZ="6000" rad="80">
<stat name="mapId" val="68" />
<node X="-87828" Y="-217077" />
</zone>
<!-- Dimensional Wrap Stage 25 -->
<zone name="Sayune_69" type="SayuneZone" shape="Cylinder" minZ="6300" maxZ="6400" rad="80">
<stat name="mapId" val="69" />
<node X="-86591" Y="-212083" />
</zone>
<!-- Dimensional Wrap Stage 26 -->
<zone name="Sayune_70" type="SayuneZone" shape="Cylinder" minZ="7000" maxZ="7100" rad="80">
<stat name="mapId" val="70" />
<node X="-85764" Y="-208712" />
</zone>
<!-- Dimensional Wrap Stage 27 -->
<zone name="Sayune_71" type="SayuneZone" shape="Cylinder" minZ="7700" maxZ="7800" rad="80">
<stat name="mapId" val="71" />
<node X="-83015" Y="-207015" />
</zone>
<!-- Dimensional Wrap Stage 28 -->
<zone name="Sayune_72" type="SayuneZone" shape="Cylinder" minZ="8200" maxZ="8300" rad="80">
<stat name="mapId" val="72" />
<node X="-78759" Y="-208040" />
</zone>
<!-- Dimensional Wrap Stage 29 -->
<zone name="Sayune_73" type="SayuneZone" shape="Cylinder" minZ="8800" maxZ="8900" rad="80">
<stat name="mapId" val="73" />
<node X="-76010" Y="-209839" />
</zone>
<!-- Dimensional Wrap Stage 30 -->
<zone name="Sayune_74" type="SayuneZone" shape="Cylinder" minZ="9300" maxZ="9400" rad="80">
<stat name="mapId" val="74" />
<node X="-77242" Y="-214850" />
</zone>
<!-- Dimensional Wrap Stage 31 -->
<zone name="Sayune_75" type="SayuneZone" shape="Cylinder" minZ="10200" maxZ="10256" rad="80">
<stat name="mapId" val="75" />
<node X="-77982" Y="-218036" />
</zone>
<!-- Dimensional Wrap Stage 32 -->
<zone name="Sayune_76" type="SayuneZone" shape="Cylinder" minZ="10900" maxZ="11000" rad="80">
<stat name="mapId" val="76" />
<node X="-80697" Y="-219020" />
</zone>
<!-- Dimensional Wrap Stage 33 -->
<zone name="Sayune_77" type="SayuneZone" shape="Cylinder" minZ="11400" maxZ="11500" rad="80">
<stat name="mapId" val="77" />
<node X="-85026" Y="-218044" />
</zone>
<!-- Dimensional Wrap Stage 34 -->
<zone name="Sayune_78" type="SayuneZone" shape="Cylinder" minZ="12050" maxZ="12100" rad="80">
<stat name="mapId" val="78" />
<node X="-87828" Y="-217079" />
</zone>
<!-- Enchanted Valley -->
<zone name="Sayune_79" type="SayuneZone" shape="Cylinder" minZ="-4700" maxZ="-4600" rad="100">
<stat name="mapId" val="79" />
<node X="113562" Y="46888" />

View File

@ -843,7 +843,7 @@ public final class Instance implements IIdentifiable, INamable
}
_allowed.forEach(player ->
{
if ((player != null))
if (player != null)
{
InstanceManager.getInstance().setReenterPenalty(player.getObjectId(), getTemplateId(), time);
if (player.isOnline())
@ -1147,6 +1147,11 @@ public final class Instance implements IIdentifiable, INamable
*/
private void sendWorldDestroyMessage(int delay)
{
// Dimensional wrap does not show timer after 5 minutes.
if (delay > 5)
{
return;
}
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THIS_INSTANT_ZONE_WILL_BE_TERMINATED_IN_S1_MINUTE_S_YOU_WILL_BE_FORCED_OUT_OF_THE_DUNGEON_WHEN_THE_TIME_EXPIRES);
sm.addInt(delay);
broadcastPacket(sm);

View File

@ -56,6 +56,7 @@ Ertheia:
-Brooch system
-Luck system
-Auto fishing
-Dimensional Warp
Infinite Odyssey:
-Garden of Spirits

View File

@ -17096,6 +17096,266 @@
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250002" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="1146">
<node x="-211367" y="239031" />
<node x="-211026" y="238801" />
<node x="-211011" y="238829" />
<node x="-211353" y="239052" />
</nodes>
<location x="-211190" y="238927" z="1154" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250003" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="1552">
<node x="-215940" y="239724" />
<node x="-216100" y="239349" />
<node x="-216071" y="239337" />
<node x="-215918" y="239714" />
</nodes>
<location x="-216007" y="239531" z="1560" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250004" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="2256">
<node x="-219531" y="241694" />
<node x="-219569" y="241297" />
<node x="-219545" y="241296" />
<node x="-219505" y="241693" />
</nodes>
<location x="-219539" y="241489" z="2264" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250005" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="2736">
<node x="-218904" y="246367" />
<node x="-219319" y="246371" />
<node x="-219319" y="246340" />
<node x="-218905" y="246337" />
</nodes>
<location x="-219112" y="246353" z="2744" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250011" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="6551">
<node x="-208062" y="241011" />
<node x="-207772" y="240723" />
<node x="-207749" y="240743" />
<node x="-208041" y="241032" />
</nodes>
<location x="-207904" y="240875" z="6559" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250012" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="7336">
<node x="-211367" y="239031" />
<node x="-211026" y="238801" />
<node x="-211011" y="238829" />
<node x="-211353" y="239052" />
</nodes>
<location x="-211190" y="238927" z="7344" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250013" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="7742">
<node x="-215940" y="239724" />
<node x="-216100" y="239349" />
<node x="-216071" y="239337" />
<node x="-215918" y="239714" />
</nodes>
<location x="-216007" y="239531" z="7750" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250014" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="8446">
<node x="-219531" y="241694" />
<node x="-219569" y="241297" />
<node x="-219545" y="241296" />
<node x="-219505" y="241693" />
</nodes>
<location x="-219539" y="241489" z="8454" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250015" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="8926">
<node x="-218904" y="246367" />
<node x="-219319" y="246371" />
<node x="-219319" y="246340" />
<node x="-218905" y="246337" />
</nodes>
<location x="-219112" y="246353" z="8934" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250016" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="9847">
<node x="-218583" y="250013" />
<node x="-218293" y="249725" />
<node x="-218270" y="249745" />
<node x="-218562" y="250034" />
</nodes>
<location x="-218425" y="249877" z="9855" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250017" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="10634">
<node x="-215318" y="251921" />
<node x="-214977" y="251691" />
<node x="-214962" y="251719" />
<node x="-215304" y="251942" />
</nodes>
<location x="-215141" y="251817" z="10642" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250018" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="11040">
<node x="-210256" y="251408" />
<node x="-210416" y="251033" />
<node x="-210387" y="251021" />
<node x="-210234" y="251398" />
</nodes>
<location x="-210323" y="251215" z="11048" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250019" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="11744">
<node x="-206785" y="249466" />
<node x="-206823" y="249069" />
<node x="-206799" y="249068" />
<node x="-206759" y="249465" />
</nodes>
<location x="-206793" y="249261" z="11752" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250020" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="12225">
<node x="-206752" y="244379" />
<node x="-207167" y="244383" />
<node x="-207167" y="244352" />
<node x="-206753" y="244349" />
</nodes>
<location x="-206960" y="244365" z="12233" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250009" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="5225">
<node x="-206785" y="249466" />
<node x="-206823" y="249069" />
<node x="-206799" y="249068" />
<node x="-206759" y="249465" />
</nodes>
<location x="-206793" y="249261" z="5233" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250008" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="4521">
<node x="-210255" y="251409" />
<node x="-210415" y="251034" />
<node x="-210386" y="251022" />
<node x="-210232" y="251399" />
</nodes>
<location x="-210322" y="251216" z="4529" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250010" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="5706">
<node x="-206752" y="244379" />
<node x="-207167" y="244383" />
<node x="-207167" y="244352" />
<node x="-206753" y="244349" />
</nodes>
<location x="-206960" y="244365" z="5714" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250007" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="4115">
<node x="-215318" y="251921" />
<node x="-214977" y="251691" />
<node x="-214962" y="251719" />
<node x="-215304" y="251942" />
</nodes>
<location x="-215141" y="251817" z="4123" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250001" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="360">
<node x="-208062" y="241011" />
<node x="-207772" y="240723" />
<node x="-207749" y="240743" />
<node x="-208041" y="241032" />
</nodes>
<location x="-207904" y="240875" z="368" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="13250006" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="3328">
<node x="-218583" y="250015" />
<node x="-218293" y="249727" />
<node x="-218270" y="249747" />
<node x="-218562" y="250036" />
</nodes>
<location x="-218425" y="249879" z="3336" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="15240001" name="Hellfire_Du_Boss_S.Hellfire_Boss_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="-10250">
@ -17330,6 +17590,201 @@
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110001" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="3978">
<node x="-77846" y="-217621" />
<node x="-77557" y="-217909" />
<node x="-77533" y="-217889" />
<node x="-77826" y="-217600" />
</nodes>
<location x="-77688" y="-217757" z="3986" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110002" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="4766">
<node x="-80773" y="-218772" />
<node x="-80432" y="-219002" />
<node x="-80416" y="-218974" />
<node x="-80758" y="-218751" />
</nodes>
<location x="-80595" y="-218876" z="4774" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110003" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="5173">
<node x="-84579" y="-218016" />
<node x="-84739" y="-218391" />
<node x="-84710" y="-218403" />
<node x="-84557" y="-218026" />
</nodes>
<location x="-84646" y="-218209" z="5181" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110004" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="5876">
<node x="-87643" y="-216899" />
<node x="-87681" y="-217296" />
<node x="-87658" y="-217297" />
<node x="-87618" y="-216900" />
</nodes>
<location x="-87651" y="-217104" z="5884" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110005" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="6356">
<node x="-86382" y="-212479" />
<node x="-86797" y="-212475" />
<node x="-86798" y="-212506" />
<node x="-86383" y="-212509" />
</nodes>
<location x="-86590" y="-212493" z="6364" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110011" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="10169">
<node x="-77846" y="-217621" />
<node x="-77557" y="-217909" />
<node x="-77533" y="-217889" />
<node x="-77826" y="-217600" />
</nodes>
<location x="-77688" y="-217757" z="10177" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110012" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="10956">
<node x="-80773" y="-218772" />
<node x="-80432" y="-219002" />
<node x="-80416" y="-218974" />
<node x="-80758" y="-218751" />
</nodes>
<location x="-80595" y="-218876" z="10964" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110013" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="11363">
<node x="-84579" y="-218016" />
<node x="-84739" y="-218391" />
<node x="-84710" y="-218403" />
<node x="-84557" y="-218026" />
</nodes>
<location x="-84646" y="-218209" z="11371" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110014" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="12066">
<node x="-87643" y="-216899" />
<node x="-87681" y="-217296" />
<node x="-87658" y="-217297" />
<node x="-87618" y="-216900" />
</nodes>
<location x="-87651" y="-217104" z="12074" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110015" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="12546">
<node x="-86382" y="-212479" />
<node x="-86797" y="-212475" />
<node x="-86798" y="-212506" />
<node x="-86383" y="-212509" />
</nodes>
<location x="-86590" y="-212493" z="12554" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110006" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="6950">
<node x="-86216" y="-208863" />
<node x="-85927" y="-209151" />
<node x="-85903" y="-209131" />
<node x="-86196" y="-208842" />
</nodes>
<location x="-86058" y="-208999" z="6958" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110007" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="7735">
<node x="-83287" y="-207062" />
<node x="-82946" y="-207292" />
<node x="-82930" y="-207264" />
<node x="-83272" y="-207041" />
</nodes>
<location x="-83109" y="-207166" z="7743" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110008" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="8141">
<node x="-79060" y="-207695" />
<node x="-79220" y="-208070" />
<node x="-79191" y="-208082" />
<node x="-79038" y="-207705" />
</nodes>
<location x="-79127" y="-207888" z="8149" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110009" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="8845">
<node x="-76165" y="-209627" />
<node x="-76203" y="-210024" />
<node x="-76180" y="-210025" />
<node x="-76140" y="-209628" />
</nodes>
<location x="-76173" y="-209832" z="8853" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17110010" name="Glacia_kserth_S.G_kserth_az_gate_door">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="9326">
<node x="-77028" y="-214451" />
<node x="-77443" y="-214447" />
<node x="-77444" y="-214478" />
<node x="-77029" y="-214481" />
</nodes>
<location x="-77236" y="-214465" z="9334" />
<stats basePDef="644" baseMDef="518" baseHpMax="169710" />
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="17230101" name="Combine_dun_S.Comb_inst_door_01">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="-10501">

View File

@ -666,6 +666,171 @@
<loc id="1" x="-186018" y="243468" z="2657" />
<loc id="2" x="-186470" y="243500" z="2618" />
</map>
<!-- Dimensional Wrap Stage 1 -> 2 -->
<map id="46">
<loc id="1" x="-209809" y="239024" z="1560" />
<loc id="2" x="-210349" y="240190" z="1136" />
</map>
<!-- Dimensional Wrap Stage 2 -> 3 -->
<map id="47">
<loc id="1" x="-213737" y="238586" z="1596" />
<loc id="2" x="-214526" y="238900" z="1584" />
</map>
<!-- Dimensional Wrap Stage 3 -> 4 -->
<map id="48">
<loc id="1" x="-218797" y="240326" z="2670" />
<loc id="2" x="-218050" y="241346" z="2248" />
</map>
<!-- Dimensional Wrap Stage 4 -> 5 -->
<map id="49">
<loc id="1" x="-222958" y="241121" z="2386" />
<loc id="2" x="-219093" y="243874" z="2728" />
</map>
<!-- Dimensional Wrap Stage 5 -> 6 -->
<map id="50">
<loc id="1" x="-219640" y="247868" z="3496" />
<loc id="2" x="-219544" y="248776" z="3360" />
</map>
<!-- Dimensional Wrap Stage 6 -> 7 -->
<map id="51">
<loc id="1" x="-216513" y="251722" z="4527" />
<loc id="2" x="-215980" y="250563" z="4104" />
</map>
<!-- Dimensional Wrap Stage 7 -> 8 -->
<map id="52">
<loc id="1" x="-212680" y="251576" z="4680" />
<loc id="2" x="-211773" y="251821" z="4552" />
</map>
<!-- Dimensional Wrap Stage 8 -> 9 -->
<map id="53">
<loc id="1" x="-207533" y="250419" z="5639" />
<loc id="2" x="-208286" y="249412" z="5216" />
</map>
<!-- Dimensional Wrap Stage 9 -> 10 -->
<map id="54">
<loc id="1" x="-204970" y="248587" z="6592" />
<loc id="2" x="-206980" y="246782" z="5696" />
</map>
<!-- Dimensional Wrap Stage 10 -> 11 -->
<map id="55">
<loc id="1" x="-206220" y="242808" z="6656" />
<loc id="2" x="-206756" y="242009" z="6584" />
</map>
<!-- Dimensional Wrap Stage 11 -> 12 -->
<map id="56">
<loc id="1" x="-209814" y="239040" z="7752" />
<loc id="2" x="-210343" y="240201" z="7328" />
</map>
<!-- Dimensional Wrap Stage 12 -> 13 -->
<map id="57">
<loc id="1" x="-213566" y="238711" z="7848" />
<loc id="2" x="-214510" y="238914" z="7776" />
</map>
<!-- Dimensional Wrap Stage 13 -> 14 -->
<map id="58">
<loc id="1" x="-218793" y="240333" z="8860" />
<loc id="2" x="-218034" y="241333" z="8440" />
</map>
<!-- Dimensional Wrap Stage 14 -> 15 -->
<map id="59">
<loc id="1" x="-218699" y="242596" z="8859" />
<loc id="2" x="-219093" y="243899" z="8912" />
</map>
<!-- Dimensional Wrap Stage 15 -> 16 -->
<map id="60">
<loc id="1" x="-220117" y="247939" z="9954" />
<loc id="2" x="-219563" y="248742" z="9880" />
</map>
<!-- Dimensional Wrap Stage 16 -> 17 -->
<map id="61">
<loc id="1" x="-216516" y="251710" z="11052" />
<loc id="2" x="-215980" y="250563" z="10624" />
</map>
<!-- Dimensional Wrap Stage 17 -> 18 -->
<map id="62">
<loc id="1" x="-212765" y="252033" z="11144" />
<loc id="2" x="-211808" y="251842" z="11072" />
</map>
<!-- Dimensional Wrap Stage 18 -> 19 -->
<map id="63">
<loc id="1" x="-207530" y="250423" z="12159" />
<loc id="2" x="-208304" y="249410" z="11736" />
</map>
<!-- Dimensional Wrap Stage 19 -> 20 -->
<map id="64">
<loc id="1" x="-207627" y="248155" z="12155" />
<loc id="2" x="-206945" y="246788" z="12213" />
</map>
<!-- Dimensional Wrap Stage 21 -> 22 -->
<map id="65">
<loc id="1" x="-79225" y="-218779" z="5176" />
<loc id="2" x="-79748" y="-217616" z="4760" />
</map>
<!-- Dimensional Wrap Stage 22 -> 23 -->
<map id="66">
<loc id="1" x="-82213" y="-219036" z="5280" />
<loc id="2" x="-83169" y="-218823" z="5208" />
</map>
<!-- Dimensional Wrap Stage 23 -> 24 -->
<map id="67">
<loc id="1" x="-86907" y="-218255" z="6290" />
<loc id="2" x="-86150" y="-217250" z="5872" />
</map>
<!-- Dimensional Wrap Stage 24 -> 25 -->
<map id="68">
<loc id="1" x="-86810" y="-215997" z="6296" />
<loc id="2" x="-86570" y="-214902" z="6344" />
</map>
<!-- Dimensional Wrap Stage 25 -> 26 -->
<map id="69">
<loc id="1" x="-87748" y="-210937" z="7055" />
<loc id="2" x="-87191" y="-210129" z="6984" />
</map>
<!-- Dimensional Wrap Stage 26 -> 27 -->
<map id="70">
<loc id="1" x="-84473" y="-207277" z="8145" />
<loc id="2" x="-83950" y="-208428" z="7728" />
</map>
<!-- Dimensional Wrap Stage 27 -> 28 -->
<map id="71">
<loc id="1" x="-81572" y="-207061" z="8248" />
<loc id="2" x="-80608" y="-207264" z="8176" />
</map>
<!-- Dimensional Wrap Stage 28 -> 29 -->
<map id="72">
<loc id="1" x="-76906" y="-208670" z="9255" />
<loc id="2" x="-77674" y="-209675" z="8840" />
</map>
<!-- Dimensional Wrap Stage 29 -> 30 -->
<map id="73">
<loc id="1" x="-77002" y="-210933" z="9256" />
<loc id="2" x="-77231" y="-212044" z="9312" />
</map>
<!-- Dimensional Wrap Stage 30 -> 31 -->
<map id="74">
<loc id="1" x="-76000" y="-215820" z="10280" />
<loc id="2" x="-76542" y="-216618" z="10200" />
</map>
<!-- Dimensional Wrap Stage 31 -> 32 -->
<map id="75">
<loc id="1" x="-79225" y="-218778" z="11366" />
<loc id="2" x="-79754" y="-217624" z="10952" />
</map>
<!-- Dimensional Wrap Stage 32 -> 33 -->
<map id="76">
<loc id="1" x="-82216" y="-219042" z="11468" />
<loc id="2" x="-83160" y="-218833" z="11392" />
</map>
<!-- Dimensional Wrap Stage 33 -> 34 -->
<map id="77">
<loc id="1" x="-86920" y="-218259" z="12474" />
<loc id="2" x="-86158" y="-217262" z="12058" />
</map>
<!-- Dimensional Wrap Stage 34 -> 35 -->
<map id="78">
<loc id="1" x="-86692" y="-216159" z="12480" />
<loc id="2" x="-86572" y="-214918" z="12536" />
</map>
<!-- Ecnahnted Valley to East/West Enchanted Valley Side -->
<map id="79">
<selector id="0" x="113562" y="46888" z="-4640">

View File

@ -1,7 +1,7 @@
<html><body>Resed:<br>
The Dimensional Warp was created when the energy, which brought Faeron to the Material Realm from the Wind Spirit Realm, accumulated in one place. Only a party of <font color="LEVEL">4 or less</font> and at <font color="LEVEL">Lv. 99</font> may enter. Each team requires at least <font color="LEVEL">3 Warp Crystals</font>.<br>
Rare bracelets and fragments of an ancient tome can be found there. Do you want to go there?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 0">"Take me to the Dimensional Warp."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap enterInstance">"Take me to the Dimensional Warp."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 906">"I need a Warp Crystal."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 909">"I want to level up my Dimensional Bracelet."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 908">"I want to add abilities to my Dimensional Bracelet."</Button>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<html><body>Einster:<br>
Proof must be shown to go upstairs quiuckly. The level of Dimensional Warp you completed determines which floor you can go to.<br>
Many accidents have happened on floors 31 and higher. To protect researchers, we are investigation those floors. For now, <font color="LEVEL">I can send you up to the 26th floor.</font><br>
Ah, you must <font color="LEVEL">determine how many Warp Crystals you will pay</font> before asking me to send you upstairs. Which floor do you want to go?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_6_f">"Send me to 6F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_11_f">"Send me to 11F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_16_f">"Send me to 16F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_21_f">"Send me to 21F"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_26_f">"Send me to 26F"</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Einster:<br>
You haven't paid Warp Crystals. I can't send you upstairs.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Einster:<br>
You didn't give me the number of Warp Crystals you promised.<br1>
Each member of the party must have <font color="LEVEL">%count% Warp Crystals</font>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Einster:<br>
You made it all the way here. Did you find ani Imps?<br>
You didn't uncover all the secrets yet. Secrets also exist in Abyssal Space. No explorers dared to go there yet.<br>
Please find out those secrets!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap jump_location">"Sure, sure. Let me move on"</Button>
</body></html>

View File

@ -0,0 +1,9 @@
<html><body>Einster:<br>
There's someone who has not met the quest completion requirements, so I cannot send you.<br>
Check the list below to see which floor you can go to.<br><br>
Floor 6: Complete The Dimensional Warp, Part 1<br><br>
Floor 11: Complete The Dimensional Warp, Part 2<br><br>
Floor 16: Complete The Dimensional Warp, Part 3<br><br>
Floor 21: Complete The Dimensional Warp, Part 4<br><br>
Floor 26: Complete The Dimensional Warp, Part 5<br><br>
</body></html>

View File

@ -0,0 +1,12 @@
<html><body>Einster:<br>
I was first one to explore Dimensional Wrap. I heard that the imps here carry materials we could use -- rare books, things to enchant bracelets with, and the like.<br>
The Expeditioners have discovered that the probability of imps appearing increases with our use of Warp Crystals, but we have to use a lot to even think about getting up there.<br>
All members of the team should carry Warp Crystals. I'll divide them up according to the number in your group.<br>
I recently discovered the key to going upstairs directly. If you want, I can send you there.<br>
Okay, let's get started.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 12_warp_crystals">"I'll use 12 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 240_warp_crystals">"I'll use 240 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 1200_warp_crystals">"I'll use 1200 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 906">"I need Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 33975-01.html">"I want to go upstairs directly."</Button>
</body></html>

View File

@ -0,0 +1,77 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import com.l2jmobius.gameserver.enums.ChatType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.NpcSay;
import ai.AbstractNpcAI;
/**
* Dimensional Archon AI
* @author Gigi
* @date 2018-09-08 - [18:09:02]
*/
public class DimensionalArchon extends AbstractNpcAI
{
// NPCs
private static final int DEMINSIONAL_ARCHON = 23469;
private static final int UNWORDLY_ARCHON = 23475;
private static final int ABYSSAL_ARCHON = 23482;
private static final NpcStringId[] ARCHON_MSG =
{
NpcStringId.DO_YOU_KNOW_WHO_IT_IS_THAT_YOU_FACE_IT_IS_BEST_THAT_YOU_RUN_NOW,
NpcStringId.LOOK_INTO_MY_EYES_AND_SEE_WHAT_COUNTLESS_OTHERS_HAVE_SEEN_BEFORE_THEIR_DEATH,
NpcStringId.I_COMMEND_YOUR_TENACITY_IN_COMING_THIS_FAR_BUT_NOW_IT_ENDS,
NpcStringId.DO_YOU_SEE_THIS_SWORD_THE_LIGHT_THAT_SCREAMS_WITH_THE_LIFE_OF_THOSE_IT_HAS_KILLED,
NpcStringId.I_WILL_SHOW_YOU_WHAT_TRUE_POWER_IS,
NpcStringId.YOU_WILL_NEED_TO_SURPASS_ME_EVENTUALLY_BUT_DON_T_FORGET_KNOWING_HOW_TO_FLEE_IS_AN_IMPORTANT_PART_OF_BATTLE
};
public DimensionalArchon()
{
super();
addSpawnId(DEMINSIONAL_ARCHON, UNWORDLY_ARCHON, ABYSSAL_ARCHON);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (event.equals("NPC_SHOUT"))
{
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), ARCHON_MSG[getRandom(ARCHON_MSG.length)]));
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onSpawn(L2Npc npc)
{
npc.setShowSummonAnimation(true);
startQuestTimer("NPC_SHOUT", 2000, npc, null);
return super.onSpawn(npc);
}
public static void main(String[] args)
{
new DimensionalArchon();
}
}

View File

@ -0,0 +1,169 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.SkillHolder;
import ai.AbstractNpcAI;
/**
* Dimensional Trap's AI
* @author Gigi
* @date 2018-09-07 - [17:39:04]
*/
public class DimensionalTrap extends AbstractNpcAI
{
private static final int DIMENSIONAL_DEBUFF_TRAP_1 = 19556; // Debuff trap, power 1
private static final int DIMENSIONAL_DEBUFF_TRAP_2 = 19557; // Debuff trap, power 2
private static final int DIMENSIONAL_DEBUFF_TRAP_3 = 19558; // Debuff trap, power 3
private static final int DIMENSIONAL_DEMAGE_TRAP_1 = 19559; // Damage trap, power 1
private static final int DIMENSIONAL_DEMAGE_TRAP_2 = 19560; // Damage trap, power 2
private static final int DIMENSIONAL_DEMAGE_TRAP_3 = 19561; // Damage trap, power 3
private static final int DIMENSIONAL_HEAL_LIGHT = 19562; // Heal Trap
// skill
private static final SkillHolder TRAP_HOLD = new SkillHolder(16409, 1);
private static final SkillHolder TRAP_ARIALL_YOKE = new SkillHolder(16410, 1);
private static final SkillHolder TRAP_STUN = new SkillHolder(16411, 1);
private static final SkillHolder TRAP_POYSON = new SkillHolder(16413, 1);
private static final SkillHolder PEACE_ZONE_CURE = new SkillHolder(16414, 1);
private int _type;
public DimensionalTrap()
{
super();
addSpawnId(DIMENSIONAL_DEBUFF_TRAP_1, DIMENSIONAL_DEBUFF_TRAP_2, DIMENSIONAL_DEBUFF_TRAP_3, DIMENSIONAL_DEMAGE_TRAP_1, DIMENSIONAL_DEMAGE_TRAP_2, DIMENSIONAL_DEMAGE_TRAP_3, DIMENSIONAL_HEAL_LIGHT);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (npc != null)
{
switch (event)
{
case "debuff_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast((getRandom(10) < 5) ? TRAP_HOLD.getSkill() : TRAP_ARIALL_YOKE.getSkill());
}
});
startQuestTimer("debuff_player", 10000, npc, null);
break;
}
case "demage_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast((getRandom(10) < 5) ? TRAP_STUN.getSkill() : TRAP_POYSON.getSkill());
}
});
startQuestTimer("demage_player", 10000, npc, null);
break;
}
case "heal_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast(PEACE_ZONE_CURE.getSkill());
}
});
startQuestTimer("heal_player", 10000, npc, null);
break;
}
}
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onSpawn(L2Npc npc)
{
npc.setIsInvul(true);
switch (npc.getId())
{
case DIMENSIONAL_DEBUFF_TRAP_1:
{
npc.setDisplayEffect(1);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 50;
break;
}
case DIMENSIONAL_DEBUFF_TRAP_2:
{
npc.setDisplayEffect(2);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 100;
break;
}
case DIMENSIONAL_DEBUFF_TRAP_3:
{
npc.setDisplayEffect(3);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 150;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_1:
{
npc.setDisplayEffect(4);
startQuestTimer("demage_player", 3000, npc, null);
_type = 50;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_2:
{
npc.setDisplayEffect(5);
startQuestTimer("demage_player", 3000, npc, null);
_type = 100;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_3:
{
npc.setDisplayEffect(6);
startQuestTimer("demage_player", 3000, npc, null);
_type = 150;
break;
}
case DIMENSIONAL_HEAL_LIGHT:
{
npc.setDisplayEffect(7);
startQuestTimer("heal_player", 3000, npc, null);
_type = 150;
break;
}
}
return super.onSpawn(npc);
}
public static void main(String[] args)
{
new DimensionalTrap();
}
}

View File

@ -0,0 +1,676 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import com.l2jmobius.Config;
import com.l2jmobius.commons.concurrent.ThreadPool;
import com.l2jmobius.commons.util.CommonUtil;
import com.l2jmobius.gameserver.data.xml.impl.SkillData;
import com.l2jmobius.gameserver.enums.CategoryType;
import com.l2jmobius.gameserver.model.L2Party;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.instancezone.Instance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.Earthquake;
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import instances.AbstractInstance;
/**
* Dimensional Wrap instance
* @URL https://l2wiki.com/Dimensional_Warp
* @Video https://www.youtube.com/watch?v=hOnzk0ELwIg
* @author Gigi
* @date 2018-09-04 - [14:33:31]
*/
public class DimensionalWrap extends AbstractInstance
{
// NPCs
private static final int RESED = 33974;
private static final int EINSTER = 33975;
// Monsters
private static final int DEMINSIONAL_INVISIBLE_FRAGMENT = 19564;
private static final int SALAMANDRA_GENERATOR = 19563;
private static final int SALAMANDRA_GENERATOR_DUMMY = 900112;
private static final int DIMENSIONAL_SALAMANDRA = 23466;
private static final int UNWORDLY_SALAMANDER = 23473;
private static final int DIMENSIONAL_IMP = 19553;
private static final int UNWORDLY_IMP = 19554;
private static final int ABYSSAL_IMP = 19555;
private static final int ABYSSAL_MAKKUM = 26090;
private static final int[] MONSTERS =
{
23462, // Dimensional Orc Butcher
23463, // Dimensional Orc Hunter
23464, // Dimensional Shaman
23465, // Dimensional Bugbear
23467, // Dimensional Binder
23468, // Dimensional Demon
23469, // Dimensional Archon
23470, // Unworldly Demon
23471, // Unworldly Etin
23472, // Unworldly Shaman
23474, // Unworldly Golem
23475, // Unworldly Archon
23476, // Unworldly Harpy
23477, // Abyssal Shaman
23478, // Abyssal Berserker
23480, // Abyssal Harpy
23481, // Abyssal Binder
23482, // Abyssal Archon
23483 // Abyssal Golem
};
private static final int[] TRAPS =
{
19556, // Debuff trap, power 1
19557, // Debuff trap, power 2
19558, // Debuff trap, power 3
19559, // Damage trap, power 1
19560, // Damage trap, power 2
19561, // Damage trap, power 3
19562 // Heal Trap
};
// Location
private static final Location TELEPORTS = new Location(-76136, -216216, 4040);
private static final Location FIRST_TELEPORT = new Location(-219544, 248776, 3360);
private static final Location SECOND_TELEPORT = new Location(-206756, 242009, 6584);
private static final Location THRID_TELEPORT = new Location(-219813, 248484, 9928);
private static final Location FOURTH_TELEPORT = new Location(-87191, -210129, 6984);
// Misc
private static final int TEMPLATE_ID = 250;
private static final int DIMENSIONAL_DARK_FORCES = 16415;
private static final int WARP_CRYSTAL = 39597;
protected double _chance = 0;
protected int _count = 0;
public int _skilllevel = 1;
public int _worldState = 0;
protected ScheduledFuture<?> _debufTask;
public DimensionalWrap()
{
super(TEMPLATE_ID);
addStartNpc(RESED);
addTalkId(EINSTER);
addKillId(MONSTERS);
addKillId(ABYSSAL_MAKKUM);
addSpawnId(SALAMANDRA_GENERATOR, DEMINSIONAL_INVISIBLE_FRAGMENT, SALAMANDRA_GENERATOR_DUMMY);
addFirstTalkId(EINSTER);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
final Instance world = npc.getInstanceWorld();
if (event.equals("enterInstance"))
{
if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
{
htmltext = "no_awakened.html";
}
else if (!player.isInParty())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else if (player.isInParty())
{
if (!player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
}
else
{
final L2Party party = player.getParty();
final List<L2PcInstance> members = party.getMembers();
for (L2PcInstance member : members)
{
if (member.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
{
enterInstance(member, npc, TEMPLATE_ID);
}
}
}
}
}
if (isInInstance(world))
{
switch (event)
{
case "33975-01.html":
{
htmltext = event;
break;
}
case "12_warp_crystals":
{
_chance = 0.3;
if (!player.isInParty())
{
_count = 12;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 6;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 4;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 3;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "240_warp_crystals":
{
_chance = 0.6;
if (!player.isInParty())
{
_count = 240;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 120;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 80;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 60;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "1200_warp_crystals":
{
_chance = 0.9;
if (!player.isInParty())
{
_count = 1200;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 600;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 400;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 300;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "send_6_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0)
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 5)
{
world.setStatus(5);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(FIRST_TELEPORT, world.getTemplateId());
}
break;
}
case "send_11_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 2))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 10)
{
world.setStatus(10);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(SECOND_TELEPORT, world.getTemplateId());
}
break;
}
case "send_16_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 3))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 15)
{
world.setStatus(15);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(THRID_TELEPORT, world.getTemplateId());
}
break;
}
case "send_21_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 4))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 20)
{
world.setStatus(20);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(TELEPORTS, world.getTemplateId());
}
break;
}
case "send_26_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 5))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 25)
{
world.setStatus(25);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(FOURTH_TELEPORT, world.getTemplateId());
}
break;
}
case "jump_location":
{
player.teleToLocation(TELEPORTS, world.getTemplateId());
break;
}
case "SALAMANDRA_SPAWN":
case "SALAMANDRA_SPAWN_DUMMY":
{
if (getRandom(100) < (_worldState / 2))
{
final L2Npc salamandra = addSpawn(_worldState < 17 ? DIMENSIONAL_SALAMANDRA : UNWORDLY_SALAMANDER, npc, false, 0, false, world.getId());
salamandra.setRunning();
L2World.getInstance().forEachVisibleObjectInRange(salamandra, L2PcInstance.class, 2500, p ->
{
if ((p != null) && !p.isDead())
{
addAttackPlayerDesire(salamandra, p);
}
});
}
break;
}
case "START_STAGE":
{
world.setStatus(world.getStatus() + 1);
_worldState = world.getStatus();
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.DIMENSIONAL_WARP_LV_S1, ExShowScreenMessage.TOP_CENTER, 10000, true, String.valueOf(world.getStatus())));
startQuestTimer("FIRST_SPAWN", 1500, npc, null);
break;
}
case "FIRST_SPAWN":
{
world.spawnGroup(_worldState + "_first_spawn");
world.spawnGroup(_worldState + "_trap_spawn");
startQuestTimer("SECOND_SPAWN", 40000, npc, null);
_debufTask = ThreadPool.scheduleAtFixedRate(() ->
{
if ((_worldState > 0) && (_worldState <= 11))
{
_skilllevel = 1;
}
else if ((_worldState > 11) && (_worldState <= 20))
{
_skilllevel = 2;
}
else if ((_worldState > 20) && (_worldState <= 30))
{
_skilllevel = 3;
}
else if (_worldState > 30)
{
_skilllevel = 4;
}
final Skill skill = SkillData.getInstance().getSkill(DIMENSIONAL_DARK_FORCES, _skilllevel);
for (L2PcInstance p : world.getPlayers())
{
if ((p != null) && !p.isDead())
{
skill.applyEffects(p, p);
}
}
}, 5000, 10000);
break;
}
case "SECOND_SPAWN":
{
world.spawnGroup(_worldState + "_second_spawn");
startQuestTimer("THRID_SPAWN", 40000, npc, null);
break;
}
case "THRID_SPAWN":
{
world.spawnGroup(_worldState + "_thred_spawn");
break;
}
case "CHANGE_LOCATION":
{
world.getAliveNpcs(TRAPS).forEach(t -> t.deleteMe());
world.spawnGroup(_worldState + "_trap_spawn");
startQuestTimer("CHANGE_LOCATION", 60000 - (_worldState * 1430), npc, null);
break;
}
case "SWITCH_STAGE":
{
if (world.getAliveNpcs(MONSTERS).isEmpty())
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SURROUNDING_ENERGY_HAS_DISSIPATED, ExShowScreenMessage.TOP_CENTER, 5000, true));
world.broadcastPacket(new Earthquake(npc, 50, 5));
world.openCloseDoor(world.getTemplateParameters().getInt(_worldState + "_st_door"), true);
Clean();
if (_worldState < 35)
{
startQuestTimer("NEXT_STAGE", 5000, npc, null);
}
}
break;
}
case "NEXT_STAGE":
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.S1_SECONDS_HAVE_BEEN_ADDED_TO_THE_INSTANCED_ZONE_DURATION, ExShowScreenMessage.TOP_CENTER, 5000, true, String.valueOf(180)));
world.setDuration((int) ((world.getRemainingTime() / 60000) + 3));
startQuestTimer("START_STAGE", 8000, npc, null);
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
break;
}
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
if (CommonUtil.contains(MONSTERS, npc.getId()) && (getRandom(100) < _chance))
{
if (_worldState < 9)
{
addSpawn(DIMENSIONAL_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.DIMENSIONAL_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
else if ((_worldState >= 9) && (_worldState < 20))
{
addSpawn(UNWORDLY_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.UNWORLDLY_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
else if (_worldState >= 20)
{
addSpawn(ABYSSAL_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.ABYSSAL_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
}
else if (npc.getId() == ABYSSAL_MAKKUM)
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_INSTANCED_ZONE_WILL_CLOSE_SOON, ExShowScreenMessage.TOP_CENTER, 10000, true));
world.finishInstance(3);
Clean();
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (_worldState == 20)
{
return "33975-04.html";
}
return "33975.html";
}
@Override
public String onSpawn(L2Npc npc)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
switch (npc.getId())
{
case SALAMANDRA_GENERATOR:
{
startQuestTimer("SALAMANDRA_SPAWN", 25000, npc, null, true);
startQuestTimer("CHANGE_LOCATION", 60000 - (_worldState * 1300), npc, null);
break;
}
case SALAMANDRA_GENERATOR_DUMMY:
{
startQuestTimer("SALAMANDRA_SPAWN_DUMMY", 20000, npc, null, true);
break;
}
case DEMINSIONAL_INVISIBLE_FRAGMENT:
{
startQuestTimer("SWITCH_STAGE", 5000, npc, null, true);
break;
}
}
}
return super.onSpawn(npc);
}
public void CheckCrystallCount(Instance world, L2PcInstance player, L2Npc npc)
{
boolean canStart = true;
for (L2PcInstance p : world.getPlayers())
{
if (p.getInventory().getInventoryItemCount(WARP_CRYSTAL, -1) < _count)
{
for (L2PcInstance ps : world.getPlayers())
{
final NpcHtmlMessage packet = new NpcHtmlMessage(npc.getObjectId());
packet.setHtml(getHtm(ps, "33975-03.html"));
packet.replace("%count%", Integer.toString(_count));
ps.sendPacket(packet);
ps.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.C1_S_ITEM_REQUIREMENT_IS_NOT_SUFFICIENT_AND_CANNOT_BE_ENTERED).addString(ps.getName()));
canStart = false;
}
}
}
if (!canStart || (_worldState != 0))
{
return;
}
startQuestTimer("START_STAGE", 1000, npc, null);
for (L2PcInstance p : world.getPlayers())
{
takeItems(p, WARP_CRYSTAL, _count);
}
}
protected void Clean()
{
cancelQuestTimers("SWITCH_STAGE");
cancelQuestTimers("SALAMANDRA_SPAWN");
cancelQuestTimers("SALAMANDRA_SPAWN_DUMMY");
cancelQuestTimers("CHANGE_LOCATION");
if (_debufTask != null)
{
_debufTask.cancel(false);
_debufTask = null;
}
}
public static void main(String[] args)
{
new DimensionalWrap();
}
}

View File

@ -0,0 +1,3 @@
<html><body>Resed:<br>
Only those who have completed the 3rd Liberation or have Awakened can enter.
</body></html>

View File

@ -1023,7 +1023,10 @@
</collision>
</npc>
<npc id="19556" level="99" type="L2Npc" name="Dimensional Trap">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="trap_skill_type" value="1" />
<skill name="trap_skill" id="10806" level="2" />
</parameters>
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
@ -1035,7 +1038,12 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<skillList>
<skill id="10806" level="2" /> <!-- Frost Trap -->
</skillList>
<exCrtEffect>true</exCrtEffect>
<ai aggroRange="100" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1054,7 +1062,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1073,7 +1081,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1092,7 +1100,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1111,7 +1119,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1130,7 +1138,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1149,7 +1157,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -1168,7 +1176,7 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="1" />
<height normal="1" />
@ -1187,7 +1195,7 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="0.1" />
<height normal="0.1" />

View File

@ -676,6 +676,7 @@
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="7276" sp="1" />
<equipment rhand="78" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="1183" hpRegen="4.5" mp="610" mpRegen="1.8" />
<speed>
@ -703,6 +704,7 @@
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="7276" sp="1" />
<equipment rhand="78" />
<stats str="79" int="34" dex="42" wit="66" con="75" men="12">
<vitals hp="1183" hpRegen="4.5" mp="610" mpRegen="1.8" />
<speed>
@ -820,6 +822,7 @@
<race>DRAGON</race>
<sex>MALE</sex>
<acquire exp="331748" sp="79" />
<equipment rhand="13978" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="10385" hpRegen="8.5" mp="1708" mpRegen="3" />
@ -913,6 +916,7 @@
<race>DRAGON</race>
<sex>MALE</sex>
<acquire exp="440867" sp="105" />
<equipment rhand="35708" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="11506" hpRegen="8.5" mp="1777" mpRegen="3" />
@ -960,6 +964,7 @@
<race>DRAGON</race>
<sex>MALE</sex>
<acquire exp="440867" sp="105" />
<equipment rhand="13979" lhand="13980" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="11506" hpRegen="8.5" mp="1777" mpRegen="3" />
@ -1189,6 +1194,7 @@
<race>DRAGON</race>
<sex>MALE</sex>
<acquire exp="440867" sp="105" />
<equipment rhand="35708" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="11506" hpRegen="8.5" mp="1777" mpRegen="3" />
@ -1329,6 +1335,7 @@
<race>UNDEAD</race>
<sex>FEMALE</sex>
<acquire exp="269969" sp="64" />
<equipment rhand="15302" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="9870" hpRegen="8.5" mp="1674" mpRegen="3" />
@ -1420,6 +1427,7 @@
<race>UNDEAD</race>
<sex>MALE</sex>
<acquire exp="331748" sp="79" />
<equipment rhand="221" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="10385" hpRegen="8.5" mp="1708" mpRegen="3" />
@ -1606,6 +1614,7 @@
<race>UNDEAD</race>
<sex>MALE</sex>
<acquire exp="449407" sp="107" />
<equipment rhand="78" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<!-- L2 Wiki Update date: 2017-09-12 -->
<vitals hp="10930" hpRegen="8.5" mp="1743" mpRegen="3" />
@ -2415,10 +2424,13 @@
</collision>
</npc>
<npc id="23462" level="99" type="L2Monster" name="Dimensional Orc Butcher">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="83739744" sp="301463" />
<equipment rhand="38425" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="376398" hpRegen="10.5" mp="23550" mpRegen="3.6" />
<speed>
@ -2443,6 +2455,11 @@
<skill id="16365" level="1" /> <!-- Dimensional Defense Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="34.1799999999999" /> <!-- Warp Crystal -->
@ -2458,10 +2475,13 @@
</collision>
</npc>
<npc id="23463" level="99" type="L2Monster" name="Dimensional Orc Hunter" title="Scout">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="125609616" sp="452194" />
<equipment rhand="38426" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="752796" hpRegen="10.5" mp="23550" mpRegen="3.6" />
<speed>
@ -2485,6 +2505,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16380" level="1" /> <!-- Dimensional Recoil Shot -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="98.00558631842" /> <!-- Warp Crystal -->
@ -2500,7 +2525,9 @@
</collision>
</npc>
<npc id="23464" level="99" type="L2Monster" name="Dimensional Shaman" title="Watcher">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>DEMONIC</race>
<sex>FEMALE</sex>
<acquire exp="125609616" sp="452194" />
@ -2531,6 +2558,11 @@
<skill id="16372" level="1" /> <!-- Dimensional Spike -->
<skill id="16381" level="1" /> <!-- Dimensional Shield -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="98.075753712167" /> <!-- Warp Crystal -->
@ -2546,10 +2578,13 @@
</collision>
</npc>
<npc id="23465" level="99" type="L2Monster" name="Dimensional Bugbear">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>GIANT</race>
<sex>FEMALE</sex>
<acquire exp="125609616" sp="452194" />
<equipment rhand="160" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="752796" hpRegen="10.5" mp="23550" mpRegen="3.6" />
<speed>
@ -2575,6 +2610,11 @@
<skill id="16375" level="1" /> <!-- Dimensional Hammer -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="98.049789683201" /> <!-- Warp Crystal -->
@ -2590,7 +2630,9 @@
</collision>
</npc>
<npc id="23466" level="99" type="L2Monster" name="Dimensional Salamander" title="Hunter">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>ELEMENTAL</race>
<sex>FEMALE</sex>
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
@ -2627,7 +2669,9 @@
</collision>
</npc>
<npc id="23467" level="99" type="L2Monster" name="Dimensional Binder">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="125609616" sp="452194" />
@ -2657,6 +2701,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="98.072868141029" /> <!-- Warp Crystal -->
@ -2672,7 +2721,9 @@
</collision>
</npc>
<npc id="23468" level="99" type="L2Monster" name="Dimensional Demon">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>DEMONIC</race>
<sex>FEMALE</sex>
<acquire exp="83739744" sp="301463" />
@ -2703,6 +2754,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="33.3200000000001" /> <!-- Warp Crystal -->
@ -2718,7 +2774,9 @@
</collision>
</npc>
<npc id="23469" level="99" type="L2Monster" name="Dimensional Archon" title="Slaughterer">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>UNDEAD</race>
<sex>FEMALE</sex>
<acquire exp="251219232" sp="904389" />
@ -2751,6 +2809,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="2" max="2" chance="96.195469193401" /> <!-- Warp Crystal -->
@ -3300,6 +3363,7 @@
<race>UNDEAD</race>
<sex>FEMALE</sex>
<acquire exp="251219232" sp="904389" />
<equipment rhand="39719" />
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
<vitals hp="1355033" hpRegen="10.5" mp="23550" mpRegen="3.6" />
<speed>

View File

@ -91,55 +91,237 @@
<skill id="16409" toLevel="3" name="Trap Hold">
<!-- Immobilized. -->
<icon>icon.skill4047</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>ROOT_MAGICALLY</abnormalType>
<abnormalVisualEffect>ROOT</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>10</abnormalTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>80</activateRate>
<trait>HOLD</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="Root" />
<effect name="DefenceTrait">
<HOLD>100</HOLD>
</effect>
</effects>
</skill>
<skill id="16410" toLevel="3" name="Trap Aerial Yoke">
<!-- Immobilized. -->
<icon>icon.skill11050</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>AIRBIND</abnormalType>
<abnormalVisualEffect>AIRBIND</abnormalVisualEffect>
<abnormalResists>STUN;TURN_FLEE</abnormalResists>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>80</activateRate>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="AirBind" />
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
</effect>
<effect name="DefenceTrait">
<HOLD>100</HOLD>
<DERANGEMENT>100</DERANGEMENT>
<SHOCK>100</SHOCK>
<KNOCKBACK>100</KNOCKBACK>
<CHANGEBODY>100</CHANGEBODY>
<KNOCKDOWN>100</KNOCKDOWN>
<SLEEP>100</SLEEP>
<AIRBIND>100</AIRBIND>
</effect>
</effects>
</skill>
<skill id="16411" toLevel="3" name="Trap Stun">
<!-- Immobilized. -->
<icon>icon.skill0100</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>STUN</abnormalType>
<abnormalVisualEffect>STUN</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<trait>SHOCK</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="BlockActions" />
</effects>
</skill>
<skill id="16412" toLevel="3" name="Trap Petrify">
<!-- Immobilized. -->
<icon>icon.skill4111</icon>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>10</abnormalTime>
<affectRange>150</affectRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16413" toLevel="3" name="Trap Poison">
<!-- Poisoned and losing $s1,$s2 HP/second. -->
<icon>icon.skill4035</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<trait>POISON</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="DamOverTime">
<power>1000</power>
<ticks>1</ticks>
</effect>
</effects>
</skill>
<skill id="16414" toLevel="1" name="Peace Zone Cure">
<!-- Recover 10% of Max HP and 30% of Max MP of self and everyone within 200 grids. Cooldown is 10 sec. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<affectRange>200</affectRange>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="HealPercent">
<power>10</power>
</effect>
</effects>
<effect name="ManaHealPercent">
<power>30</power>
</effect>
</skill>
<skill id="16415" toLevel="4" name="Dimensional Dark Forces">
<!-- P. Atk - $s1, M. Atk. - $s2, and P. Critical Rate - $s3, M. Critical Rate - $s4. -->
<icon>icon.skill1298</icon>
<abnormalLvl>
<value level="1">1</value>
<value level="2">2</value>
<value level="3">3</value>
<value level="4">4</value>
</abnormalLvl>
<abnormalTime>
<value level="1">5</value>
<value level="2">5</value>
<value level="3">10</value>
<value level="4">10</value>
</abnormalTime>
<operateType>A2</operateType>
<rideState>NONE</rideState>
<basicProperty>NONE</basicProperty>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<isDebuff>1</isDebuff>
<affectScope>SINGLE</affectScope>
<targetType>SELF</targetType>
<effects>
<effect name="PAtk">
<amount>
<value level="1">-4</value>
<value level="2">-6</value>
<value level="3">-8</value>
<value level="3">-10</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="MAtk">
<amount>
<value level="1">-4</value>
<value level="2">-6</value>
<value level="3">-8</value>
<value level="3">-10</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="CriticalRate">
<amount>
<value level="1">-5</value>
<value level="2">-10</value>
<value level="3">-20</value>
<value level="3">-30</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="MagicCriticalRate">
<amount>
<value level="1">-5</value>
<value level="2">-10</value>
<value level="3">-20</value>
<value level="3">-30</value>
</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="16416" toLevel="10" name="Bluff Resistance">
<!-- Resistance to Bluff. -->

View File

@ -142,6 +142,172 @@
<stat name="mapId" val="45" />
<node X="-186154" Y="242838" />
</zone>
<!-- Dimensional Wrap Stage 1 -->
<zone name="Sayune_46" type="SayuneZone" shape="Cylinder" minZ="400" maxZ="500" rad="80">
<stat name="mapId" val="46" />
<node X="-208193" Y="240585" />
</zone>
<!-- Dimensional Wrap Stage 2 -->
<zone name="Sayune_47" type="SayuneZone" shape="Cylinder" minZ="1100" maxZ="1200" rad="80">
<stat name="mapId" val="47" />
<node X="-211300" Y="238768" />
</zone>
<!-- Dimensional Wrap Stage 3 -->
<zone name="Sayune_48" type="SayuneZone" shape="Cylinder" minZ="1600" maxZ="1700" rad="80">
<stat name="mapId" val="48" />
<node X="-216356" Y="239680" />
</zone>
<!-- Dimensional Wrap Stage 4 -->
<zone name="Sayune_49" type="SayuneZone" shape="Cylinder" minZ="2250" maxZ="2350" rad="80">
<stat name="mapId" val="49" />
<node X="-219722" Y="241510" />
</zone>
<!-- Dimensional Wrap Stage 5 -->
<zone name="Sayune_50" type="SayuneZone" shape="Cylinder" minZ="2700" maxZ="2800" rad="80">
<stat name="mapId" val="50" />
<node X="-219116" Y="246748" />
</zone>
<!-- Dimensional Wrap Stage 6 -->
<zone name="Sayune_51" type="SayuneZone" shape="Cylinder" minZ="3350" maxZ="3450" rad="80">
<stat name="mapId" val="51" />
<node X="-218132" Y="250177" />
</zone>
<!-- Dimensional Wrap Stage 7 -->
<zone name="Sayune_52" type="SayuneZone" shape="Cylinder" minZ="4100" maxZ="4200" rad="80">
<stat name="mapId" val="52" />
<node X="-215046" Y="251965" />
</zone>
<!-- Dimensional Wrap Stage 8 -->
<zone name="Sayune_53" type="SayuneZone" shape="Cylinder" minZ="4550" maxZ="4650" rad="80">
<stat name="mapId" val="53" />
<node X="-209957" Y="251067" />
</zone>
<!-- Dimensional Wrap Stage 9 -->
<zone name="Sayune_54" type="SayuneZone" shape="Cylinder" minZ="5200" maxZ="5300" rad="80">
<stat name="mapId" val="54" />
<node X="-206602" Y="249250" />
</zone>
<!-- Dimensional Wrap Stage 10 -->
<zone name="Sayune_55" type="SayuneZone" shape="Cylinder" minZ="5550" maxZ="5800" rad="80">
<stat name="mapId" val="55" />
<node X="-206952" Y="243976" />
</zone>
<!-- Dimensional Wrap Stage 11 -->
<zone name="Sayune_56" type="SayuneZone" shape="Cylinder" minZ="6500" maxZ="6750" rad="80">
<stat name="mapId" val="56" />
<node X="-208200" Y="240584" />
</zone>
<!-- Dimensional Wrap Stage 12 -->
<zone name="Sayune_57" type="SayuneZone" shape="Cylinder" minZ="7220" maxZ="7460" rad="80">
<stat name="mapId" val="57" />
<node X="-211304" Y="238760" />
</zone>
<!-- Dimensional Wrap Stage 13 -->
<zone name="Sayune_58" type="SayuneZone" shape="Cylinder" minZ="7700" maxZ="7900" rad="80">
<stat name="mapId" val="58" />
<node X="-216344" Y="239672" />
</zone>
<!-- Dimensional Wrap Stage 14 -->
<zone name="Sayune_59" type="SayuneZone" shape="Cylinder" minZ="8350" maxZ="8555" rad="80">
<stat name="mapId" val="59" />
<node X="-219720" Y="241512" />
</zone>
<!-- Dimensional Wrap Stage 15 -->
<zone name="Sayune_60" type="SayuneZone" shape="Cylinder" minZ="8780" maxZ="9000" rad="80">
<stat name="mapId" val="60" />
<node X="-219112" Y="246744" />
</zone>
<!-- Dimensional Wrap Stage 16 -->
<zone name="Sayune_61" type="SayuneZone" shape="Cylinder" minZ="9800" maxZ="10000" rad="80">
<stat name="mapId" val="61" />
<node X="-218136" Y="250184" />
</zone>
<!-- Dimensional Wrap Stage 17 -->
<zone name="Sayune_62" type="SayuneZone" shape="Cylinder" minZ="10520" maxZ="10790" rad="80">
<stat name="mapId" val="62" />
<node X="-215048" Y="251960" />
</zone>
<!-- Dimensional Wrap Stage 18 -->
<zone name="Sayune_63" type="SayuneZone" shape="Cylinder" minZ="11000" maxZ="11200" rad="80">
<stat name="mapId" val="63" />
<node X="-209960" Y="251080" />
</zone>
<!-- Dimensional Wrap Stage 19 -->
<zone name="Sayune_64" type="SayuneZone" shape="Cylinder" minZ="11650" maxZ="11850" rad="80">
<stat name="mapId" val="64" />
<node X="-206600" Y="249240" />
</zone>
<!-- Dimensional Wrap Stage 21 -->
<zone name="Sayune_65" type="SayuneZone" shape="Cylinder" minZ="4000" maxZ="4100" rad="80">
<stat name="mapId" val="65" />
<node X="-77982" Y="-218040" />
</zone>
<!-- Dimensional Wrap Stage 22 -->
<zone name="Sayune_66" type="SayuneZone" shape="Cylinder" minZ="4700" maxZ="4800" rad="80">
<stat name="mapId" val="66" />
<node X="-80696" Y="-219020" />
</zone>
<!-- Dimensional Wrap Stage 23 -->
<zone name="Sayune_67" type="SayuneZone" shape="Cylinder" minZ="5200" maxZ="5300" rad="80">
<stat name="mapId" val="67" />
<node X="-85023" Y="-218047" />
</zone>
<!-- Dimensional Wrap Stage 24 -->
<zone name="Sayune_68" type="SayuneZone" shape="Cylinder" minZ="5900" maxZ="6000" rad="80">
<stat name="mapId" val="68" />
<node X="-87828" Y="-217077" />
</zone>
<!-- Dimensional Wrap Stage 25 -->
<zone name="Sayune_69" type="SayuneZone" shape="Cylinder" minZ="6300" maxZ="6400" rad="80">
<stat name="mapId" val="69" />
<node X="-86591" Y="-212083" />
</zone>
<!-- Dimensional Wrap Stage 26 -->
<zone name="Sayune_70" type="SayuneZone" shape="Cylinder" minZ="7000" maxZ="7100" rad="80">
<stat name="mapId" val="70" />
<node X="-85764" Y="-208712" />
</zone>
<!-- Dimensional Wrap Stage 27 -->
<zone name="Sayune_71" type="SayuneZone" shape="Cylinder" minZ="7700" maxZ="7800" rad="80">
<stat name="mapId" val="71" />
<node X="-83015" Y="-207015" />
</zone>
<!-- Dimensional Wrap Stage 28 -->
<zone name="Sayune_72" type="SayuneZone" shape="Cylinder" minZ="8200" maxZ="8300" rad="80">
<stat name="mapId" val="72" />
<node X="-78759" Y="-208040" />
</zone>
<!-- Dimensional Wrap Stage 29 -->
<zone name="Sayune_73" type="SayuneZone" shape="Cylinder" minZ="8800" maxZ="8900" rad="80">
<stat name="mapId" val="73" />
<node X="-76010" Y="-209839" />
</zone>
<!-- Dimensional Wrap Stage 30 -->
<zone name="Sayune_74" type="SayuneZone" shape="Cylinder" minZ="9300" maxZ="9400" rad="80">
<stat name="mapId" val="74" />
<node X="-77242" Y="-214850" />
</zone>
<!-- Dimensional Wrap Stage 31 -->
<zone name="Sayune_75" type="SayuneZone" shape="Cylinder" minZ="10200" maxZ="10256" rad="80">
<stat name="mapId" val="75" />
<node X="-77982" Y="-218036" />
</zone>
<!-- Dimensional Wrap Stage 32 -->
<zone name="Sayune_76" type="SayuneZone" shape="Cylinder" minZ="10900" maxZ="11000" rad="80">
<stat name="mapId" val="76" />
<node X="-80697" Y="-219020" />
</zone>
<!-- Dimensional Wrap Stage 33 -->
<zone name="Sayune_77" type="SayuneZone" shape="Cylinder" minZ="11400" maxZ="11500" rad="80">
<stat name="mapId" val="77" />
<node X="-85026" Y="-218044" />
</zone>
<!-- Dimensional Wrap Stage 34 -->
<zone name="Sayune_78" type="SayuneZone" shape="Cylinder" minZ="12050" maxZ="12100" rad="80">
<stat name="mapId" val="78" />
<node X="-87828" Y="-217079" />
</zone>
<!-- Enchanted Valley -->
<zone name="Sayune_79" type="SayuneZone" shape="Cylinder" minZ="-4700" maxZ="-4600" rad="100">
<stat name="mapId" val="79" />
<node X="113562" Y="46888" />

View File

@ -843,7 +843,7 @@ public final class Instance implements IIdentifiable, INamable
}
_allowed.forEach(player ->
{
if ((player != null))
if (player != null)
{
InstanceManager.getInstance().setReenterPenalty(player.getObjectId(), getTemplateId(), time);
if (player.isOnline())
@ -1147,6 +1147,11 @@ public final class Instance implements IIdentifiable, INamable
*/
private void sendWorldDestroyMessage(int delay)
{
// Dimensional wrap does not show timer after 5 minutes.
if (delay > 5)
{
return;
}
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THIS_INSTANT_ZONE_WILL_BE_TERMINATED_IN_S1_MINUTE_S_YOU_WILL_BE_FORCED_OUT_OF_THE_DUNGEON_WHEN_THE_TIME_EXPIRES);
sm.addInt(delay);
broadcastPacket(sm);

View File

@ -56,6 +56,7 @@ Ertheia:
-Brooch system
-Luck system
-Auto fishing
-Dimensional Warp
Infinite Odyssey:
-Garden of Spirits

View File

@ -621,6 +621,171 @@
<loc id="1" x="-186018" y="243468" z="2657" />
<loc id="2" x="-186470" y="243500" z="2618" />
</map>
<!-- Dimensional Wrap Stage 1 -> 2 -->
<map id="46">
<loc id="1" x="-209809" y="239024" z="1560" />
<loc id="2" x="-210349" y="240190" z="1136" />
</map>
<!-- Dimensional Wrap Stage 2 -> 3 -->
<map id="47">
<loc id="1" x="-213737" y="238586" z="1596" />
<loc id="2" x="-214526" y="238900" z="1584" />
</map>
<!-- Dimensional Wrap Stage 3 -> 4 -->
<map id="48">
<loc id="1" x="-218797" y="240326" z="2670" />
<loc id="2" x="-218050" y="241346" z="2248" />
</map>
<!-- Dimensional Wrap Stage 4 -> 5 -->
<map id="49">
<loc id="1" x="-222958" y="241121" z="2386" />
<loc id="2" x="-219093" y="243874" z="2728" />
</map>
<!-- Dimensional Wrap Stage 5 -> 6 -->
<map id="50">
<loc id="1" x="-219640" y="247868" z="3496" />
<loc id="2" x="-219544" y="248776" z="3360" />
</map>
<!-- Dimensional Wrap Stage 6 -> 7 -->
<map id="51">
<loc id="1" x="-216513" y="251722" z="4527" />
<loc id="2" x="-215980" y="250563" z="4104" />
</map>
<!-- Dimensional Wrap Stage 7 -> 8 -->
<map id="52">
<loc id="1" x="-212680" y="251576" z="4680" />
<loc id="2" x="-211773" y="251821" z="4552" />
</map>
<!-- Dimensional Wrap Stage 8 -> 9 -->
<map id="53">
<loc id="1" x="-207533" y="250419" z="5639" />
<loc id="2" x="-208286" y="249412" z="5216" />
</map>
<!-- Dimensional Wrap Stage 9 -> 10 -->
<map id="54">
<loc id="1" x="-204970" y="248587" z="6592" />
<loc id="2" x="-206980" y="246782" z="5696" />
</map>
<!-- Dimensional Wrap Stage 10 -> 11 -->
<map id="55">
<loc id="1" x="-206220" y="242808" z="6656" />
<loc id="2" x="-206756" y="242009" z="6584" />
</map>
<!-- Dimensional Wrap Stage 11 -> 12 -->
<map id="56">
<loc id="1" x="-209814" y="239040" z="7752" />
<loc id="2" x="-210343" y="240201" z="7328" />
</map>
<!-- Dimensional Wrap Stage 12 -> 13 -->
<map id="57">
<loc id="1" x="-213566" y="238711" z="7848" />
<loc id="2" x="-214510" y="238914" z="7776" />
</map>
<!-- Dimensional Wrap Stage 13 -> 14 -->
<map id="58">
<loc id="1" x="-218793" y="240333" z="8860" />
<loc id="2" x="-218034" y="241333" z="8440" />
</map>
<!-- Dimensional Wrap Stage 14 -> 15 -->
<map id="59">
<loc id="1" x="-218699" y="242596" z="8859" />
<loc id="2" x="-219093" y="243899" z="8912" />
</map>
<!-- Dimensional Wrap Stage 15 -> 16 -->
<map id="60">
<loc id="1" x="-220117" y="247939" z="9954" />
<loc id="2" x="-219563" y="248742" z="9880" />
</map>
<!-- Dimensional Wrap Stage 16 -> 17 -->
<map id="61">
<loc id="1" x="-216516" y="251710" z="11052" />
<loc id="2" x="-215980" y="250563" z="10624" />
</map>
<!-- Dimensional Wrap Stage 17 -> 18 -->
<map id="62">
<loc id="1" x="-212765" y="252033" z="11144" />
<loc id="2" x="-211808" y="251842" z="11072" />
</map>
<!-- Dimensional Wrap Stage 18 -> 19 -->
<map id="63">
<loc id="1" x="-207530" y="250423" z="12159" />
<loc id="2" x="-208304" y="249410" z="11736" />
</map>
<!-- Dimensional Wrap Stage 19 -> 20 -->
<map id="64">
<loc id="1" x="-207627" y="248155" z="12155" />
<loc id="2" x="-206945" y="246788" z="12213" />
</map>
<!-- Dimensional Wrap Stage 21 -> 22 -->
<map id="65">
<loc id="1" x="-79225" y="-218779" z="5176" />
<loc id="2" x="-79748" y="-217616" z="4760" />
</map>
<!-- Dimensional Wrap Stage 22 -> 23 -->
<map id="66">
<loc id="1" x="-82213" y="-219036" z="5280" />
<loc id="2" x="-83169" y="-218823" z="5208" />
</map>
<!-- Dimensional Wrap Stage 23 -> 24 -->
<map id="67">
<loc id="1" x="-86907" y="-218255" z="6290" />
<loc id="2" x="-86150" y="-217250" z="5872" />
</map>
<!-- Dimensional Wrap Stage 24 -> 25 -->
<map id="68">
<loc id="1" x="-86810" y="-215997" z="6296" />
<loc id="2" x="-86570" y="-214902" z="6344" />
</map>
<!-- Dimensional Wrap Stage 25 -> 26 -->
<map id="69">
<loc id="1" x="-87748" y="-210937" z="7055" />
<loc id="2" x="-87191" y="-210129" z="6984" />
</map>
<!-- Dimensional Wrap Stage 26 -> 27 -->
<map id="70">
<loc id="1" x="-84473" y="-207277" z="8145" />
<loc id="2" x="-83950" y="-208428" z="7728" />
</map>
<!-- Dimensional Wrap Stage 27 -> 28 -->
<map id="71">
<loc id="1" x="-81572" y="-207061" z="8248" />
<loc id="2" x="-80608" y="-207264" z="8176" />
</map>
<!-- Dimensional Wrap Stage 28 -> 29 -->
<map id="72">
<loc id="1" x="-76906" y="-208670" z="9255" />
<loc id="2" x="-77674" y="-209675" z="8840" />
</map>
<!-- Dimensional Wrap Stage 29 -> 30 -->
<map id="73">
<loc id="1" x="-77002" y="-210933" z="9256" />
<loc id="2" x="-77231" y="-212044" z="9312" />
</map>
<!-- Dimensional Wrap Stage 30 -> 31 -->
<map id="74">
<loc id="1" x="-76000" y="-215820" z="10280" />
<loc id="2" x="-76542" y="-216618" z="10200" />
</map>
<!-- Dimensional Wrap Stage 31 -> 32 -->
<map id="75">
<loc id="1" x="-79225" y="-218778" z="11366" />
<loc id="2" x="-79754" y="-217624" z="10952" />
</map>
<!-- Dimensional Wrap Stage 32 -> 33 -->
<map id="76">
<loc id="1" x="-82216" y="-219042" z="11468" />
<loc id="2" x="-83160" y="-218833" z="11392" />
</map>
<!-- Dimensional Wrap Stage 33 -> 34 -->
<map id="77">
<loc id="1" x="-86920" y="-218259" z="12474" />
<loc id="2" x="-86158" y="-217262" z="12058" />
</map>
<!-- Dimensional Wrap Stage 34 -> 35 -->
<map id="78">
<loc id="1" x="-86692" y="-216159" z="12480" />
<loc id="2" x="-86572" y="-214918" z="12536" />
</map>
<!-- Ecnahnted Valley to East/West Enchanted Valley Side -->
<map id="79">
<selector id="0" x="113562" y="46888" z="-4640">

View File

@ -1,7 +1,7 @@
<html><body>Resed:<br>
The Dimensional Warp was created when the energy, which brought Faeron to the Material Realm from the Wind Spirit Realm, accumulated in one place. Only a party of <font color="LEVEL">4 or less</font> and at <font color="LEVEL">Lv. 99</font> may enter. Each team requires at least <font color="LEVEL">3 Warp Crystals</font>.<br>
Rare bracelets and fragments of an ancient tome can be found there. Do you want to go there?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 0">"Take me to the Dimensional Warp."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap enterInstance">"Take me to the Dimensional Warp."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 906">"I need a Warp Crystal."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 909">"I want to level up my Dimensional Bracelet."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 908">"I want to add abilities to my Dimensional Bracelet."</Button>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<html><body>Einster:<br>
Proof must be shown to go upstairs quiuckly. The level of Dimensional Warp you completed determines which floor you can go to.<br>
Many accidents have happened on floors 31 and higher. To protect researchers, we are investigation those floors. For now, <font color="LEVEL">I can send you up to the 26th floor.</font><br>
Ah, you must <font color="LEVEL">determine how many Warp Crystals you will pay</font> before asking me to send you upstairs. Which floor do you want to go?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_6_f">"Send me to 6F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_11_f">"Send me to 11F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_16_f">"Send me to 16F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_21_f">"Send me to 21F"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_26_f">"Send me to 26F"</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Einster:<br>
You haven't paid Warp Crystals. I can't send you upstairs.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Einster:<br>
You didn't give me the number of Warp Crystals you promised.<br1>
Each member of the party must have <font color="LEVEL">%count% Warp Crystals</font>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Einster:<br>
You made it all the way here. Did you find ani Imps?<br>
You didn't uncover all the secrets yet. Secrets also exist in Abyssal Space. No explorers dared to go there yet.<br>
Please find out those secrets!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap jump_location">"Sure, sure. Let me move on"</Button>
</body></html>

View File

@ -0,0 +1,9 @@
<html><body>Einster:<br>
There's someone who has not met the quest completion requirements, so I cannot send you.<br>
Check the list below to see which floor you can go to.<br><br>
Floor 6: Complete The Dimensional Warp, Part 1<br><br>
Floor 11: Complete The Dimensional Warp, Part 2<br><br>
Floor 16: Complete The Dimensional Warp, Part 3<br><br>
Floor 21: Complete The Dimensional Warp, Part 4<br><br>
Floor 26: Complete The Dimensional Warp, Part 5<br><br>
</body></html>

View File

@ -0,0 +1,12 @@
<html><body>Einster:<br>
I was first one to explore Dimensional Wrap. I heard that the imps here carry materials we could use -- rare books, things to enchant bracelets with, and the like.<br>
The Expeditioners have discovered that the probability of imps appearing increases with our use of Warp Crystals, but we have to use a lot to even think about getting up there.<br>
All members of the team should carry Warp Crystals. I'll divide them up according to the number in your group.<br>
I recently discovered the key to going upstairs directly. If you want, I can send you there.<br>
Okay, let's get started.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 12_warp_crystals">"I'll use 12 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 240_warp_crystals">"I'll use 240 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 1200_warp_crystals">"I'll use 1200 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 906">"I need Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 33975-01.html">"I want to go upstairs directly."</Button>
</body></html>

View File

@ -0,0 +1,77 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import com.l2jmobius.gameserver.enums.ChatType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.NpcSay;
import ai.AbstractNpcAI;
/**
* Dimensional Archon AI
* @author Gigi
* @date 2018-09-08 - [18:09:02]
*/
public class DimensionalArchon extends AbstractNpcAI
{
// NPCs
private static final int DEMINSIONAL_ARCHON = 23469;
private static final int UNWORDLY_ARCHON = 23475;
private static final int ABYSSAL_ARCHON = 23482;
private static final NpcStringId[] ARCHON_MSG =
{
NpcStringId.DO_YOU_KNOW_WHO_IT_IS_THAT_YOU_FACE_IT_IS_BEST_THAT_YOU_RUN_NOW,
NpcStringId.LOOK_INTO_MY_EYES_AND_SEE_WHAT_COUNTLESS_OTHERS_HAVE_SEEN_BEFORE_THEIR_DEATH,
NpcStringId.I_COMMEND_YOUR_TENACITY_IN_COMING_THIS_FAR_BUT_NOW_IT_ENDS,
NpcStringId.DO_YOU_SEE_THIS_SWORD_THE_LIGHT_THAT_SCREAMS_WITH_THE_LIFE_OF_THOSE_IT_HAS_KILLED,
NpcStringId.I_WILL_SHOW_YOU_WHAT_TRUE_POWER_IS,
NpcStringId.YOU_WILL_NEED_TO_SURPASS_ME_EVENTUALLY_BUT_DON_T_FORGET_KNOWING_HOW_TO_FLEE_IS_AN_IMPORTANT_PART_OF_BATTLE
};
public DimensionalArchon()
{
super();
addSpawnId(DEMINSIONAL_ARCHON, UNWORDLY_ARCHON, ABYSSAL_ARCHON);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (event.equals("NPC_SHOUT"))
{
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), ARCHON_MSG[getRandom(ARCHON_MSG.length)]));
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onSpawn(L2Npc npc)
{
npc.setShowSummonAnimation(true);
startQuestTimer("NPC_SHOUT", 2000, npc, null);
return super.onSpawn(npc);
}
public static void main(String[] args)
{
new DimensionalArchon();
}
}

View File

@ -0,0 +1,169 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.SkillHolder;
import ai.AbstractNpcAI;
/**
* Dimensional Trap's AI
* @author Gigi
* @date 2018-09-07 - [17:39:04]
*/
public class DimensionalTrap extends AbstractNpcAI
{
private static final int DIMENSIONAL_DEBUFF_TRAP_1 = 19556; // Debuff trap, power 1
private static final int DIMENSIONAL_DEBUFF_TRAP_2 = 19557; // Debuff trap, power 2
private static final int DIMENSIONAL_DEBUFF_TRAP_3 = 19558; // Debuff trap, power 3
private static final int DIMENSIONAL_DEMAGE_TRAP_1 = 19559; // Damage trap, power 1
private static final int DIMENSIONAL_DEMAGE_TRAP_2 = 19560; // Damage trap, power 2
private static final int DIMENSIONAL_DEMAGE_TRAP_3 = 19561; // Damage trap, power 3
private static final int DIMENSIONAL_HEAL_LIGHT = 19562; // Heal Trap
// skill
private static final SkillHolder TRAP_HOLD = new SkillHolder(16409, 1);
private static final SkillHolder TRAP_ARIALL_YOKE = new SkillHolder(16410, 1);
private static final SkillHolder TRAP_STUN = new SkillHolder(16411, 1);
private static final SkillHolder TRAP_POYSON = new SkillHolder(16413, 1);
private static final SkillHolder PEACE_ZONE_CURE = new SkillHolder(16414, 1);
private int _type;
public DimensionalTrap()
{
super();
addSpawnId(DIMENSIONAL_DEBUFF_TRAP_1, DIMENSIONAL_DEBUFF_TRAP_2, DIMENSIONAL_DEBUFF_TRAP_3, DIMENSIONAL_DEMAGE_TRAP_1, DIMENSIONAL_DEMAGE_TRAP_2, DIMENSIONAL_DEMAGE_TRAP_3, DIMENSIONAL_HEAL_LIGHT);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (npc != null)
{
switch (event)
{
case "debuff_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast((getRandom(10) < 5) ? TRAP_HOLD.getSkill() : TRAP_ARIALL_YOKE.getSkill());
}
});
startQuestTimer("debuff_player", 10000, npc, null);
break;
}
case "demage_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast((getRandom(10) < 5) ? TRAP_STUN.getSkill() : TRAP_POYSON.getSkill());
}
});
startQuestTimer("demage_player", 10000, npc, null);
break;
}
case "heal_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast(PEACE_ZONE_CURE.getSkill());
}
});
startQuestTimer("heal_player", 10000, npc, null);
break;
}
}
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onSpawn(L2Npc npc)
{
npc.setIsInvul(true);
switch (npc.getId())
{
case DIMENSIONAL_DEBUFF_TRAP_1:
{
npc.setDisplayEffect(1);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 50;
break;
}
case DIMENSIONAL_DEBUFF_TRAP_2:
{
npc.setDisplayEffect(2);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 100;
break;
}
case DIMENSIONAL_DEBUFF_TRAP_3:
{
npc.setDisplayEffect(3);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 150;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_1:
{
npc.setDisplayEffect(4);
startQuestTimer("demage_player", 3000, npc, null);
_type = 50;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_2:
{
npc.setDisplayEffect(5);
startQuestTimer("demage_player", 3000, npc, null);
_type = 100;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_3:
{
npc.setDisplayEffect(6);
startQuestTimer("demage_player", 3000, npc, null);
_type = 150;
break;
}
case DIMENSIONAL_HEAL_LIGHT:
{
npc.setDisplayEffect(7);
startQuestTimer("heal_player", 3000, npc, null);
_type = 150;
break;
}
}
return super.onSpawn(npc);
}
public static void main(String[] args)
{
new DimensionalTrap();
}
}

View File

@ -0,0 +1,676 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import com.l2jmobius.Config;
import com.l2jmobius.commons.concurrent.ThreadPool;
import com.l2jmobius.commons.util.CommonUtil;
import com.l2jmobius.gameserver.data.xml.impl.SkillData;
import com.l2jmobius.gameserver.enums.CategoryType;
import com.l2jmobius.gameserver.model.L2Party;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.instancezone.Instance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.Earthquake;
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import instances.AbstractInstance;
/**
* Dimensional Wrap instance
* @URL https://l2wiki.com/Dimensional_Warp
* @Video https://www.youtube.com/watch?v=hOnzk0ELwIg
* @author Gigi
* @date 2018-09-04 - [14:33:31]
*/
public class DimensionalWrap extends AbstractInstance
{
// NPCs
private static final int RESED = 33974;
private static final int EINSTER = 33975;
// Monsters
private static final int DEMINSIONAL_INVISIBLE_FRAGMENT = 19564;
private static final int SALAMANDRA_GENERATOR = 19563;
private static final int SALAMANDRA_GENERATOR_DUMMY = 900112;
private static final int DIMENSIONAL_SALAMANDRA = 23466;
private static final int UNWORDLY_SALAMANDER = 23473;
private static final int DIMENSIONAL_IMP = 19553;
private static final int UNWORDLY_IMP = 19554;
private static final int ABYSSAL_IMP = 19555;
private static final int ABYSSAL_MAKKUM = 26090;
private static final int[] MONSTERS =
{
23462, // Dimensional Orc Butcher
23463, // Dimensional Orc Hunter
23464, // Dimensional Shaman
23465, // Dimensional Bugbear
23467, // Dimensional Binder
23468, // Dimensional Demon
23469, // Dimensional Archon
23470, // Unworldly Demon
23471, // Unworldly Etin
23472, // Unworldly Shaman
23474, // Unworldly Golem
23475, // Unworldly Archon
23476, // Unworldly Harpy
23477, // Abyssal Shaman
23478, // Abyssal Berserker
23480, // Abyssal Harpy
23481, // Abyssal Binder
23482, // Abyssal Archon
23483 // Abyssal Golem
};
private static final int[] TRAPS =
{
19556, // Debuff trap, power 1
19557, // Debuff trap, power 2
19558, // Debuff trap, power 3
19559, // Damage trap, power 1
19560, // Damage trap, power 2
19561, // Damage trap, power 3
19562 // Heal Trap
};
// Location
private static final Location TELEPORTS = new Location(-76136, -216216, 4040);
private static final Location FIRST_TELEPORT = new Location(-219544, 248776, 3360);
private static final Location SECOND_TELEPORT = new Location(-206756, 242009, 6584);
private static final Location THRID_TELEPORT = new Location(-219813, 248484, 9928);
private static final Location FOURTH_TELEPORT = new Location(-87191, -210129, 6984);
// Misc
private static final int TEMPLATE_ID = 250;
private static final int DIMENSIONAL_DARK_FORCES = 16415;
private static final int WARP_CRYSTAL = 39597;
protected double _chance = 0;
protected int _count = 0;
public int _skilllevel = 1;
public int _worldState = 0;
protected ScheduledFuture<?> _debufTask;
public DimensionalWrap()
{
super(TEMPLATE_ID);
addStartNpc(RESED);
addTalkId(EINSTER);
addKillId(MONSTERS);
addKillId(ABYSSAL_MAKKUM);
addSpawnId(SALAMANDRA_GENERATOR, DEMINSIONAL_INVISIBLE_FRAGMENT, SALAMANDRA_GENERATOR_DUMMY);
addFirstTalkId(EINSTER);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
final Instance world = npc.getInstanceWorld();
if (event.equals("enterInstance"))
{
if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
{
htmltext = "no_awakened.html";
}
else if (!player.isInParty())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else if (player.isInParty())
{
if (!player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
}
else
{
final L2Party party = player.getParty();
final List<L2PcInstance> members = party.getMembers();
for (L2PcInstance member : members)
{
if (member.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
{
enterInstance(member, npc, TEMPLATE_ID);
}
}
}
}
}
if (isInInstance(world))
{
switch (event)
{
case "33975-01.html":
{
htmltext = event;
break;
}
case "12_warp_crystals":
{
_chance = 0.3;
if (!player.isInParty())
{
_count = 12;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 6;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 4;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 3;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "240_warp_crystals":
{
_chance = 0.6;
if (!player.isInParty())
{
_count = 240;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 120;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 80;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 60;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "1200_warp_crystals":
{
_chance = 0.9;
if (!player.isInParty())
{
_count = 1200;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 600;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 400;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 300;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "send_6_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0)
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 5)
{
world.setStatus(5);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(FIRST_TELEPORT, world.getTemplateId());
}
break;
}
case "send_11_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 2))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 10)
{
world.setStatus(10);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(SECOND_TELEPORT, world.getTemplateId());
}
break;
}
case "send_16_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 3))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 15)
{
world.setStatus(15);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(THRID_TELEPORT, world.getTemplateId());
}
break;
}
case "send_21_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 4))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 20)
{
world.setStatus(20);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(TELEPORTS, world.getTemplateId());
}
break;
}
case "send_26_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 5))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 25)
{
world.setStatus(25);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(FOURTH_TELEPORT, world.getTemplateId());
}
break;
}
case "jump_location":
{
player.teleToLocation(TELEPORTS, world.getTemplateId());
break;
}
case "SALAMANDRA_SPAWN":
case "SALAMANDRA_SPAWN_DUMMY":
{
if (getRandom(100) < (_worldState / 2))
{
final L2Npc salamandra = addSpawn(_worldState < 17 ? DIMENSIONAL_SALAMANDRA : UNWORDLY_SALAMANDER, npc, false, 0, false, world.getId());
salamandra.setRunning();
L2World.getInstance().forEachVisibleObjectInRange(salamandra, L2PcInstance.class, 2500, p ->
{
if ((p != null) && !p.isDead())
{
addAttackPlayerDesire(salamandra, p);
}
});
}
break;
}
case "START_STAGE":
{
world.setStatus(world.getStatus() + 1);
_worldState = world.getStatus();
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.DIMENSIONAL_WARP_LV_S1, ExShowScreenMessage.TOP_CENTER, 10000, true, String.valueOf(world.getStatus())));
startQuestTimer("FIRST_SPAWN", 1500, npc, null);
break;
}
case "FIRST_SPAWN":
{
world.spawnGroup(_worldState + "_first_spawn");
world.spawnGroup(_worldState + "_trap_spawn");
startQuestTimer("SECOND_SPAWN", 40000, npc, null);
_debufTask = ThreadPool.scheduleAtFixedRate(() ->
{
if ((_worldState > 0) && (_worldState <= 11))
{
_skilllevel = 1;
}
else if ((_worldState > 11) && (_worldState <= 20))
{
_skilllevel = 2;
}
else if ((_worldState > 20) && (_worldState <= 30))
{
_skilllevel = 3;
}
else if (_worldState > 30)
{
_skilllevel = 4;
}
final Skill skill = SkillData.getInstance().getSkill(DIMENSIONAL_DARK_FORCES, _skilllevel);
for (L2PcInstance p : world.getPlayers())
{
if ((p != null) && !p.isDead())
{
skill.applyEffects(p, p);
}
}
}, 5000, 10000);
break;
}
case "SECOND_SPAWN":
{
world.spawnGroup(_worldState + "_second_spawn");
startQuestTimer("THRID_SPAWN", 40000, npc, null);
break;
}
case "THRID_SPAWN":
{
world.spawnGroup(_worldState + "_thred_spawn");
break;
}
case "CHANGE_LOCATION":
{
world.getAliveNpcs(TRAPS).forEach(t -> t.deleteMe());
world.spawnGroup(_worldState + "_trap_spawn");
startQuestTimer("CHANGE_LOCATION", 60000 - (_worldState * 1430), npc, null);
break;
}
case "SWITCH_STAGE":
{
if (world.getAliveNpcs(MONSTERS).isEmpty())
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SURROUNDING_ENERGY_HAS_DISSIPATED, ExShowScreenMessage.TOP_CENTER, 5000, true));
world.broadcastPacket(new Earthquake(npc, 50, 5));
world.openCloseDoor(world.getTemplateParameters().getInt(_worldState + "_st_door"), true);
Clean();
if (_worldState < 35)
{
startQuestTimer("NEXT_STAGE", 5000, npc, null);
}
}
break;
}
case "NEXT_STAGE":
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.S1_SECONDS_HAVE_BEEN_ADDED_TO_THE_INSTANCED_ZONE_DURATION, ExShowScreenMessage.TOP_CENTER, 5000, true, String.valueOf(180)));
world.setDuration((int) ((world.getRemainingTime() / 60000) + 3));
startQuestTimer("START_STAGE", 8000, npc, null);
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
break;
}
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
if (CommonUtil.contains(MONSTERS, npc.getId()) && (getRandom(100) < _chance))
{
if (_worldState < 9)
{
addSpawn(DIMENSIONAL_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.DIMENSIONAL_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
else if ((_worldState >= 9) && (_worldState < 20))
{
addSpawn(UNWORDLY_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.UNWORLDLY_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
else if (_worldState >= 20)
{
addSpawn(ABYSSAL_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.ABYSSAL_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
}
else if (npc.getId() == ABYSSAL_MAKKUM)
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_INSTANCED_ZONE_WILL_CLOSE_SOON, ExShowScreenMessage.TOP_CENTER, 10000, true));
world.finishInstance(3);
Clean();
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (_worldState == 20)
{
return "33975-04.html";
}
return "33975.html";
}
@Override
public String onSpawn(L2Npc npc)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
switch (npc.getId())
{
case SALAMANDRA_GENERATOR:
{
startQuestTimer("SALAMANDRA_SPAWN", 25000, npc, null, true);
startQuestTimer("CHANGE_LOCATION", 60000 - (_worldState * 1300), npc, null);
break;
}
case SALAMANDRA_GENERATOR_DUMMY:
{
startQuestTimer("SALAMANDRA_SPAWN_DUMMY", 20000, npc, null, true);
break;
}
case DEMINSIONAL_INVISIBLE_FRAGMENT:
{
startQuestTimer("SWITCH_STAGE", 5000, npc, null, true);
break;
}
}
}
return super.onSpawn(npc);
}
public void CheckCrystallCount(Instance world, L2PcInstance player, L2Npc npc)
{
boolean canStart = true;
for (L2PcInstance p : world.getPlayers())
{
if (p.getInventory().getInventoryItemCount(WARP_CRYSTAL, -1) < _count)
{
for (L2PcInstance ps : world.getPlayers())
{
final NpcHtmlMessage packet = new NpcHtmlMessage(npc.getObjectId());
packet.setHtml(getHtm(ps, "33975-03.html"));
packet.replace("%count%", Integer.toString(_count));
ps.sendPacket(packet);
ps.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.C1_S_ITEM_REQUIREMENT_IS_NOT_SUFFICIENT_AND_CANNOT_BE_ENTERED).addString(ps.getName()));
canStart = false;
}
}
}
if (!canStart || (_worldState != 0))
{
return;
}
startQuestTimer("START_STAGE", 1000, npc, null);
for (L2PcInstance p : world.getPlayers())
{
takeItems(p, WARP_CRYSTAL, _count);
}
}
protected void Clean()
{
cancelQuestTimers("SWITCH_STAGE");
cancelQuestTimers("SALAMANDRA_SPAWN");
cancelQuestTimers("SALAMANDRA_SPAWN_DUMMY");
cancelQuestTimers("CHANGE_LOCATION");
if (_debufTask != null)
{
_debufTask.cancel(false);
_debufTask = null;
}
}
public static void main(String[] args)
{
new DimensionalWrap();
}
}

View File

@ -0,0 +1,3 @@
<html><body>Resed:<br>
Only those who have completed the 3rd Liberation or have Awakened can enter.
</body></html>

View File

@ -461,7 +461,10 @@
</collision>
</npc>
<npc id="19556" level="99" type="L2Npc" name="Dimensional Trap">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="trap_skill_type" value="1" />
<skill name="trap_skill" id="10806" level="2" />
</parameters>
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
@ -473,7 +476,12 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<skillList>
<skill id="10806" level="2" /> <!-- Frost Trap -->
</skillList>
<exCrtEffect>true</exCrtEffect>
<ai aggroRange="100" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -492,7 +500,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -511,7 +519,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -530,7 +538,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -549,7 +557,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -568,7 +576,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -587,7 +595,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -606,7 +614,7 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="1" />
<height normal="1" />
@ -625,7 +633,7 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="0.1" />
<height normal="0.1" />

View File

@ -2265,7 +2265,9 @@
</collision>
</npc>
<npc id="23462" level="102" type="L2Monster" name="Dimensional Orc Butcher">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="336298896" sp="336361" />
@ -2294,6 +2296,11 @@
<skill id="16365" level="1" /> <!-- Dimensional Defense Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="19.74" /> <!-- Warp Crystal -->
@ -2308,7 +2315,9 @@
</collision>
</npc>
<npc id="23463" level="102" type="L2Monster" name="Dimensional Orc Hunter" title="Scout">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="504448344" sp="504489" />
@ -2336,6 +2345,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16380" level="1" /> <!-- Dimensional Recoil Shot -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="48.99" /> <!-- Warp Crystal -->
@ -2350,7 +2364,9 @@
</collision>
</npc>
<npc id="23464" level="102" type="L2Monster" name="Dimensional Shaman" title="Watcher">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>DEMONIC</race>
<sex>FEMALE</sex>
<acquire exp="504448344" sp="504489" />
@ -2381,6 +2397,11 @@
<skill id="16372" level="1" /> <!-- Dimensional Spike -->
<skill id="16381" level="1" /> <!-- Dimensional Shield -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="50.04" /> <!-- Warp Crystal -->
@ -2395,7 +2416,9 @@
</collision>
</npc>
<npc id="23465" level="102" type="L2Monster" name="Dimensional Bugbear">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>GIANT</race>
<sex>FEMALE</sex>
<acquire exp="504448344" sp="504489" />
@ -2425,6 +2448,11 @@
<skill id="16375" level="1" /> <!-- Dimensional Hammer -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="49.28" /> <!-- Warp Crystal -->
@ -2439,7 +2467,9 @@
</collision>
</npc>
<npc id="23466" level="102" type="L2Monster" name="Dimensional Salamander" title="Hunter">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>ELEMENTAL</race>
<sex>FEMALE</sex>
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
@ -2476,7 +2506,9 @@
</collision>
</npc>
<npc id="23467" level="102" type="L2Monster" name="Dimensional Binder">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="504448344" sp="504489" />
@ -2506,6 +2538,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="50.98" /> <!-- Warp Crystal -->
@ -2520,7 +2557,9 @@
</collision>
</npc>
<npc id="23468" level="102" type="L2Monster" name="Dimensional Demon">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>DEMONIC</race>
<sex>FEMALE</sex>
<acquire exp="336298896" sp="336361" />
@ -2551,6 +2590,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="19.69" /> <!-- Warp Crystal -->
@ -2565,7 +2609,9 @@
</collision>
</npc>
<npc id="23469" level="102" type="L2Monster" name="Dimensional Archon" title="Slaughterer">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>UNDEAD</race>
<sex>FEMALE</sex>
<acquire exp="1008896688" sp="1008979" />
@ -2598,6 +2644,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="2" max="2" chance="49.87" /> <!-- Warp Crystal -->
@ -2743,7 +2794,7 @@
<height normal="42" />
</collision>
</npc>
<npc id="23473" level="103" type="L2Monster" name="Unworldly Salamander" title="Hunter">
<npc id="23473" level="99" type="L2Monster" name="Unworldly Salamander" title="Hunter">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ELEMENTAL</race>
<sex>FEMALE</sex>

View File

@ -91,55 +91,237 @@
<skill id="16409" toLevel="3" name="Trap Hold">
<!-- Immobilized. -->
<icon>icon.skill4047</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>ROOT_MAGICALLY</abnormalType>
<abnormalVisualEffect>ROOT</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>10</abnormalTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>80</activateRate>
<trait>HOLD</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="Root" />
<effect name="DefenceTrait">
<HOLD>100</HOLD>
</effect>
</effects>
</skill>
<skill id="16410" toLevel="3" name="Trap Aerial Yoke">
<!-- Immobilized. -->
<icon>icon.skill11050</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>AIRBIND</abnormalType>
<abnormalVisualEffect>AIRBIND</abnormalVisualEffect>
<abnormalResists>STUN;TURN_FLEE</abnormalResists>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>80</activateRate>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="AirBind" />
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
</effect>
<effect name="DefenceTrait">
<HOLD>100</HOLD>
<DERANGEMENT>100</DERANGEMENT>
<SHOCK>100</SHOCK>
<KNOCKBACK>100</KNOCKBACK>
<CHANGEBODY>100</CHANGEBODY>
<KNOCKDOWN>100</KNOCKDOWN>
<SLEEP>100</SLEEP>
<AIRBIND>100</AIRBIND>
</effect>
</effects>
</skill>
<skill id="16411" toLevel="3" name="Trap Stun">
<!-- Immobilized. -->
<icon>icon.skill0100</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>STUN</abnormalType>
<abnormalVisualEffect>STUN</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<trait>SHOCK</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="BlockActions" />
</effects>
</skill>
<skill id="16412" toLevel="3" name="Trap Petrify">
<!-- Immobilized. -->
<icon>icon.skill4111</icon>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>10</abnormalTime>
<affectRange>150</affectRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16413" toLevel="3" name="Trap Poison">
<!-- Poisons the target, causing them to lose $s1 HP every second. -->
<!-- Poisoned and losing 1,000 HP/second. -->
<icon>icon.skill4035</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<trait>POISON</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="DamOverTime">
<power>1000</power>
<ticks>1</ticks>
</effect>
</effects>
</skill>
<skill id="16414" toLevel="1" name="Peace Zone Cure">
<!-- Recover 10% of Max HP and 30% of Max MP of self and everyone within 200 grids. Cooldown is 10 sec. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<affectRange>200</affectRange>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="HealPercent">
<power>10</power>
</effect>
</effects>
<effect name="ManaHealPercent">
<power>30</power>
</effect>
</skill>
<skill id="16415" toLevel="4" name="Dimensional Dark Forces">
<!-- P. Atk - $s1, M. Atk. - $s2, and P. Critical Rate - $s3, M. Critical Rate - $s4. -->
<icon>icon.skill1298</icon>
<abnormalLvl>
<value level="1">1</value>
<value level="2">2</value>
<value level="3">3</value>
<value level="4">4</value>
</abnormalLvl>
<abnormalTime>
<value level="1">5</value>
<value level="2">5</value>
<value level="3">10</value>
<value level="4">10</value>
</abnormalTime>
<operateType>A2</operateType>
<rideState>NONE</rideState>
<basicProperty>NONE</basicProperty>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<isDebuff>1</isDebuff>
<affectScope>SINGLE</affectScope>
<targetType>SELF</targetType>
<effects>
<effect name="PAtk">
<amount>
<value level="1">-4</value>
<value level="2">-6</value>
<value level="3">-8</value>
<value level="3">-10</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="MAtk">
<amount>
<value level="1">-4</value>
<value level="2">-6</value>
<value level="3">-8</value>
<value level="3">-10</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="CriticalRate">
<amount>
<value level="1">-5</value>
<value level="2">-10</value>
<value level="3">-20</value>
<value level="3">-30</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="MagicCriticalRate">
<amount>
<value level="1">-5</value>
<value level="2">-10</value>
<value level="3">-20</value>
<value level="3">-30</value>
</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="16416" toLevel="10" name="Bluff Resistance">
<!-- Slightly resistant to Bluff. -->

View File

@ -132,6 +132,172 @@
<stat name="mapId" val="45" />
<node X="-186154" Y="242838" />
</zone>
<!-- Dimensional Wrap Stage 1 -->
<zone name="Sayune_46" type="SayuneZone" shape="Cylinder" minZ="400" maxZ="500" rad="80">
<stat name="mapId" val="46" />
<node X="-208193" Y="240585" />
</zone>
<!-- Dimensional Wrap Stage 2 -->
<zone name="Sayune_47" type="SayuneZone" shape="Cylinder" minZ="1100" maxZ="1200" rad="80">
<stat name="mapId" val="47" />
<node X="-211300" Y="238768" />
</zone>
<!-- Dimensional Wrap Stage 3 -->
<zone name="Sayune_48" type="SayuneZone" shape="Cylinder" minZ="1600" maxZ="1700" rad="80">
<stat name="mapId" val="48" />
<node X="-216356" Y="239680" />
</zone>
<!-- Dimensional Wrap Stage 4 -->
<zone name="Sayune_49" type="SayuneZone" shape="Cylinder" minZ="2250" maxZ="2350" rad="80">
<stat name="mapId" val="49" />
<node X="-219722" Y="241510" />
</zone>
<!-- Dimensional Wrap Stage 5 -->
<zone name="Sayune_50" type="SayuneZone" shape="Cylinder" minZ="2700" maxZ="2800" rad="80">
<stat name="mapId" val="50" />
<node X="-219116" Y="246748" />
</zone>
<!-- Dimensional Wrap Stage 6 -->
<zone name="Sayune_51" type="SayuneZone" shape="Cylinder" minZ="3350" maxZ="3450" rad="80">
<stat name="mapId" val="51" />
<node X="-218132" Y="250177" />
</zone>
<!-- Dimensional Wrap Stage 7 -->
<zone name="Sayune_52" type="SayuneZone" shape="Cylinder" minZ="4100" maxZ="4200" rad="80">
<stat name="mapId" val="52" />
<node X="-215046" Y="251965" />
</zone>
<!-- Dimensional Wrap Stage 8 -->
<zone name="Sayune_53" type="SayuneZone" shape="Cylinder" minZ="4550" maxZ="4650" rad="80">
<stat name="mapId" val="53" />
<node X="-209957" Y="251067" />
</zone>
<!-- Dimensional Wrap Stage 9 -->
<zone name="Sayune_54" type="SayuneZone" shape="Cylinder" minZ="5200" maxZ="5300" rad="80">
<stat name="mapId" val="54" />
<node X="-206602" Y="249250" />
</zone>
<!-- Dimensional Wrap Stage 10 -->
<zone name="Sayune_55" type="SayuneZone" shape="Cylinder" minZ="5550" maxZ="5800" rad="80">
<stat name="mapId" val="55" />
<node X="-206952" Y="243976" />
</zone>
<!-- Dimensional Wrap Stage 11 -->
<zone name="Sayune_56" type="SayuneZone" shape="Cylinder" minZ="6500" maxZ="6750" rad="80">
<stat name="mapId" val="56" />
<node X="-208200" Y="240584" />
</zone>
<!-- Dimensional Wrap Stage 12 -->
<zone name="Sayune_57" type="SayuneZone" shape="Cylinder" minZ="7220" maxZ="7460" rad="80">
<stat name="mapId" val="57" />
<node X="-211304" Y="238760" />
</zone>
<!-- Dimensional Wrap Stage 13 -->
<zone name="Sayune_58" type="SayuneZone" shape="Cylinder" minZ="7700" maxZ="7900" rad="80">
<stat name="mapId" val="58" />
<node X="-216344" Y="239672" />
</zone>
<!-- Dimensional Wrap Stage 14 -->
<zone name="Sayune_59" type="SayuneZone" shape="Cylinder" minZ="8350" maxZ="8555" rad="80">
<stat name="mapId" val="59" />
<node X="-219720" Y="241512" />
</zone>
<!-- Dimensional Wrap Stage 15 -->
<zone name="Sayune_60" type="SayuneZone" shape="Cylinder" minZ="8780" maxZ="9000" rad="80">
<stat name="mapId" val="60" />
<node X="-219112" Y="246744" />
</zone>
<!-- Dimensional Wrap Stage 16 -->
<zone name="Sayune_61" type="SayuneZone" shape="Cylinder" minZ="9800" maxZ="10000" rad="80">
<stat name="mapId" val="61" />
<node X="-218136" Y="250184" />
</zone>
<!-- Dimensional Wrap Stage 17 -->
<zone name="Sayune_62" type="SayuneZone" shape="Cylinder" minZ="10520" maxZ="10790" rad="80">
<stat name="mapId" val="62" />
<node X="-215048" Y="251960" />
</zone>
<!-- Dimensional Wrap Stage 18 -->
<zone name="Sayune_63" type="SayuneZone" shape="Cylinder" minZ="11000" maxZ="11200" rad="80">
<stat name="mapId" val="63" />
<node X="-209960" Y="251080" />
</zone>
<!-- Dimensional Wrap Stage 19 -->
<zone name="Sayune_64" type="SayuneZone" shape="Cylinder" minZ="11650" maxZ="11850" rad="80">
<stat name="mapId" val="64" />
<node X="-206600" Y="249240" />
</zone>
<!-- Dimensional Wrap Stage 21 -->
<zone name="Sayune_65" type="SayuneZone" shape="Cylinder" minZ="4000" maxZ="4100" rad="80">
<stat name="mapId" val="65" />
<node X="-77982" Y="-218040" />
</zone>
<!-- Dimensional Wrap Stage 22 -->
<zone name="Sayune_66" type="SayuneZone" shape="Cylinder" minZ="4700" maxZ="4800" rad="80">
<stat name="mapId" val="66" />
<node X="-80696" Y="-219020" />
</zone>
<!-- Dimensional Wrap Stage 23 -->
<zone name="Sayune_67" type="SayuneZone" shape="Cylinder" minZ="5200" maxZ="5300" rad="80">
<stat name="mapId" val="67" />
<node X="-85023" Y="-218047" />
</zone>
<!-- Dimensional Wrap Stage 24 -->
<zone name="Sayune_68" type="SayuneZone" shape="Cylinder" minZ="5900" maxZ="6000" rad="80">
<stat name="mapId" val="68" />
<node X="-87828" Y="-217077" />
</zone>
<!-- Dimensional Wrap Stage 25 -->
<zone name="Sayune_69" type="SayuneZone" shape="Cylinder" minZ="6300" maxZ="6400" rad="80">
<stat name="mapId" val="69" />
<node X="-86591" Y="-212083" />
</zone>
<!-- Dimensional Wrap Stage 26 -->
<zone name="Sayune_70" type="SayuneZone" shape="Cylinder" minZ="7000" maxZ="7100" rad="80">
<stat name="mapId" val="70" />
<node X="-85764" Y="-208712" />
</zone>
<!-- Dimensional Wrap Stage 27 -->
<zone name="Sayune_71" type="SayuneZone" shape="Cylinder" minZ="7700" maxZ="7800" rad="80">
<stat name="mapId" val="71" />
<node X="-83015" Y="-207015" />
</zone>
<!-- Dimensional Wrap Stage 28 -->
<zone name="Sayune_72" type="SayuneZone" shape="Cylinder" minZ="8200" maxZ="8300" rad="80">
<stat name="mapId" val="72" />
<node X="-78759" Y="-208040" />
</zone>
<!-- Dimensional Wrap Stage 29 -->
<zone name="Sayune_73" type="SayuneZone" shape="Cylinder" minZ="8800" maxZ="8900" rad="80">
<stat name="mapId" val="73" />
<node X="-76010" Y="-209839" />
</zone>
<!-- Dimensional Wrap Stage 30 -->
<zone name="Sayune_74" type="SayuneZone" shape="Cylinder" minZ="9300" maxZ="9400" rad="80">
<stat name="mapId" val="74" />
<node X="-77242" Y="-214850" />
</zone>
<!-- Dimensional Wrap Stage 31 -->
<zone name="Sayune_75" type="SayuneZone" shape="Cylinder" minZ="10200" maxZ="10256" rad="80">
<stat name="mapId" val="75" />
<node X="-77982" Y="-218036" />
</zone>
<!-- Dimensional Wrap Stage 32 -->
<zone name="Sayune_76" type="SayuneZone" shape="Cylinder" minZ="10900" maxZ="11000" rad="80">
<stat name="mapId" val="76" />
<node X="-80697" Y="-219020" />
</zone>
<!-- Dimensional Wrap Stage 33 -->
<zone name="Sayune_77" type="SayuneZone" shape="Cylinder" minZ="11400" maxZ="11500" rad="80">
<stat name="mapId" val="77" />
<node X="-85026" Y="-218044" />
</zone>
<!-- Dimensional Wrap Stage 34 -->
<zone name="Sayune_78" type="SayuneZone" shape="Cylinder" minZ="12050" maxZ="12100" rad="80">
<stat name="mapId" val="78" />
<node X="-87828" Y="-217079" />
</zone>
<!-- Enchanted Valley -->
<zone name="Sayune_79" type="SayuneZone" shape="Cylinder" minZ="-4700" maxZ="-4600" rad="100">
<stat name="mapId" val="79" />
<node X="113562" Y="46888" />

View File

@ -843,7 +843,7 @@ public final class Instance implements IIdentifiable, INamable
}
_allowed.forEach(player ->
{
if ((player != null))
if (player != null)
{
InstanceManager.getInstance().setReenterPenalty(player.getObjectId(), getTemplateId(), time);
if (player.isOnline())
@ -1147,6 +1147,11 @@ public final class Instance implements IIdentifiable, INamable
*/
private void sendWorldDestroyMessage(int delay)
{
// Dimensional wrap does not show timer after 5 minutes.
if (delay > 5)
{
return;
}
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THIS_INSTANT_ZONE_WILL_BE_TERMINATED_IN_S1_MINUTE_S_YOU_WILL_BE_FORCED_OUT_OF_THE_DUNGEON_WHEN_THE_TIME_EXPIRES);
sm.addInt(delay);
broadcastPacket(sm);

View File

@ -56,6 +56,7 @@ Ertheia:
-Brooch system
-Luck system
-Auto fishing
-Dimensional Warp
Infinite Odyssey:
-Garden of Spirits

View File

@ -621,6 +621,171 @@
<loc id="1" x="-186018" y="243468" z="2657" />
<loc id="2" x="-186470" y="243500" z="2618" />
</map>
<!-- Dimensional Wrap Stage 1 -> 2 -->
<map id="46">
<loc id="1" x="-209809" y="239024" z="1560" />
<loc id="2" x="-210349" y="240190" z="1136" />
</map>
<!-- Dimensional Wrap Stage 2 -> 3 -->
<map id="47">
<loc id="1" x="-213737" y="238586" z="1596" />
<loc id="2" x="-214526" y="238900" z="1584" />
</map>
<!-- Dimensional Wrap Stage 3 -> 4 -->
<map id="48">
<loc id="1" x="-218797" y="240326" z="2670" />
<loc id="2" x="-218050" y="241346" z="2248" />
</map>
<!-- Dimensional Wrap Stage 4 -> 5 -->
<map id="49">
<loc id="1" x="-222958" y="241121" z="2386" />
<loc id="2" x="-219093" y="243874" z="2728" />
</map>
<!-- Dimensional Wrap Stage 5 -> 6 -->
<map id="50">
<loc id="1" x="-219640" y="247868" z="3496" />
<loc id="2" x="-219544" y="248776" z="3360" />
</map>
<!-- Dimensional Wrap Stage 6 -> 7 -->
<map id="51">
<loc id="1" x="-216513" y="251722" z="4527" />
<loc id="2" x="-215980" y="250563" z="4104" />
</map>
<!-- Dimensional Wrap Stage 7 -> 8 -->
<map id="52">
<loc id="1" x="-212680" y="251576" z="4680" />
<loc id="2" x="-211773" y="251821" z="4552" />
</map>
<!-- Dimensional Wrap Stage 8 -> 9 -->
<map id="53">
<loc id="1" x="-207533" y="250419" z="5639" />
<loc id="2" x="-208286" y="249412" z="5216" />
</map>
<!-- Dimensional Wrap Stage 9 -> 10 -->
<map id="54">
<loc id="1" x="-204970" y="248587" z="6592" />
<loc id="2" x="-206980" y="246782" z="5696" />
</map>
<!-- Dimensional Wrap Stage 10 -> 11 -->
<map id="55">
<loc id="1" x="-206220" y="242808" z="6656" />
<loc id="2" x="-206756" y="242009" z="6584" />
</map>
<!-- Dimensional Wrap Stage 11 -> 12 -->
<map id="56">
<loc id="1" x="-209814" y="239040" z="7752" />
<loc id="2" x="-210343" y="240201" z="7328" />
</map>
<!-- Dimensional Wrap Stage 12 -> 13 -->
<map id="57">
<loc id="1" x="-213566" y="238711" z="7848" />
<loc id="2" x="-214510" y="238914" z="7776" />
</map>
<!-- Dimensional Wrap Stage 13 -> 14 -->
<map id="58">
<loc id="1" x="-218793" y="240333" z="8860" />
<loc id="2" x="-218034" y="241333" z="8440" />
</map>
<!-- Dimensional Wrap Stage 14 -> 15 -->
<map id="59">
<loc id="1" x="-218699" y="242596" z="8859" />
<loc id="2" x="-219093" y="243899" z="8912" />
</map>
<!-- Dimensional Wrap Stage 15 -> 16 -->
<map id="60">
<loc id="1" x="-220117" y="247939" z="9954" />
<loc id="2" x="-219563" y="248742" z="9880" />
</map>
<!-- Dimensional Wrap Stage 16 -> 17 -->
<map id="61">
<loc id="1" x="-216516" y="251710" z="11052" />
<loc id="2" x="-215980" y="250563" z="10624" />
</map>
<!-- Dimensional Wrap Stage 17 -> 18 -->
<map id="62">
<loc id="1" x="-212765" y="252033" z="11144" />
<loc id="2" x="-211808" y="251842" z="11072" />
</map>
<!-- Dimensional Wrap Stage 18 -> 19 -->
<map id="63">
<loc id="1" x="-207530" y="250423" z="12159" />
<loc id="2" x="-208304" y="249410" z="11736" />
</map>
<!-- Dimensional Wrap Stage 19 -> 20 -->
<map id="64">
<loc id="1" x="-207627" y="248155" z="12155" />
<loc id="2" x="-206945" y="246788" z="12213" />
</map>
<!-- Dimensional Wrap Stage 21 -> 22 -->
<map id="65">
<loc id="1" x="-79225" y="-218779" z="5176" />
<loc id="2" x="-79748" y="-217616" z="4760" />
</map>
<!-- Dimensional Wrap Stage 22 -> 23 -->
<map id="66">
<loc id="1" x="-82213" y="-219036" z="5280" />
<loc id="2" x="-83169" y="-218823" z="5208" />
</map>
<!-- Dimensional Wrap Stage 23 -> 24 -->
<map id="67">
<loc id="1" x="-86907" y="-218255" z="6290" />
<loc id="2" x="-86150" y="-217250" z="5872" />
</map>
<!-- Dimensional Wrap Stage 24 -> 25 -->
<map id="68">
<loc id="1" x="-86810" y="-215997" z="6296" />
<loc id="2" x="-86570" y="-214902" z="6344" />
</map>
<!-- Dimensional Wrap Stage 25 -> 26 -->
<map id="69">
<loc id="1" x="-87748" y="-210937" z="7055" />
<loc id="2" x="-87191" y="-210129" z="6984" />
</map>
<!-- Dimensional Wrap Stage 26 -> 27 -->
<map id="70">
<loc id="1" x="-84473" y="-207277" z="8145" />
<loc id="2" x="-83950" y="-208428" z="7728" />
</map>
<!-- Dimensional Wrap Stage 27 -> 28 -->
<map id="71">
<loc id="1" x="-81572" y="-207061" z="8248" />
<loc id="2" x="-80608" y="-207264" z="8176" />
</map>
<!-- Dimensional Wrap Stage 28 -> 29 -->
<map id="72">
<loc id="1" x="-76906" y="-208670" z="9255" />
<loc id="2" x="-77674" y="-209675" z="8840" />
</map>
<!-- Dimensional Wrap Stage 29 -> 30 -->
<map id="73">
<loc id="1" x="-77002" y="-210933" z="9256" />
<loc id="2" x="-77231" y="-212044" z="9312" />
</map>
<!-- Dimensional Wrap Stage 30 -> 31 -->
<map id="74">
<loc id="1" x="-76000" y="-215820" z="10280" />
<loc id="2" x="-76542" y="-216618" z="10200" />
</map>
<!-- Dimensional Wrap Stage 31 -> 32 -->
<map id="75">
<loc id="1" x="-79225" y="-218778" z="11366" />
<loc id="2" x="-79754" y="-217624" z="10952" />
</map>
<!-- Dimensional Wrap Stage 32 -> 33 -->
<map id="76">
<loc id="1" x="-82216" y="-219042" z="11468" />
<loc id="2" x="-83160" y="-218833" z="11392" />
</map>
<!-- Dimensional Wrap Stage 33 -> 34 -->
<map id="77">
<loc id="1" x="-86920" y="-218259" z="12474" />
<loc id="2" x="-86158" y="-217262" z="12058" />
</map>
<!-- Dimensional Wrap Stage 34 -> 35 -->
<map id="78">
<loc id="1" x="-86692" y="-216159" z="12480" />
<loc id="2" x="-86572" y="-214918" z="12536" />
</map>
<!-- Ecnahnted Valley to East/West Enchanted Valley Side -->
<map id="79">
<selector id="0" x="113562" y="46888" z="-4640">

View File

@ -1,7 +1,7 @@
<html><body>Resed:<br>
The Dimensional Warp was created when the energy, which brought Faeron to the Material Realm from the Wind Spirit Realm, accumulated in one place. Only a party of <font color="LEVEL">4 or less</font> and at <font color="LEVEL">Lv. 99</font> may enter. Each team requires at least <font color="LEVEL">3 Warp Crystals</font>.<br>
Rare bracelets and fragments of an ancient tome can be found there. Do you want to go there?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 0">"Take me to the Dimensional Warp."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap enterInstance">"Take me to the Dimensional Warp."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 906">"I need a Warp Crystal."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 909">"I want to level up my Dimensional Bracelet."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 908">"I want to add abilities to my Dimensional Bracelet."</Button>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,10 @@
<html><body>Einster:<br>
Proof must be shown to go upstairs quiuckly. The level of Dimensional Warp you completed determines which floor you can go to.<br>
Many accidents have happened on floors 31 and higher. To protect researchers, we are investigation those floors. For now, <font color="LEVEL">I can send you up to the 26th floor.</font><br>
Ah, you must <font color="LEVEL">determine how many Warp Crystals you will pay</font> before asking me to send you upstairs. Which floor do you want to go?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_6_f">"Send me to 6F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_11_f">"Send me to 11F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_16_f">"Send me to 16F."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_21_f">"Send me to 21F"</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap send_26_f">"Send me to 26F"</Button>
</body></html>

View File

@ -0,0 +1,3 @@
<html><body>Einster:<br>
You haven't paid Warp Crystals. I can't send you upstairs.
</body></html>

View File

@ -0,0 +1,4 @@
<html><body>Einster:<br>
You didn't give me the number of Warp Crystals you promised.<br1>
Each member of the party must have <font color="LEVEL">%count% Warp Crystals</font>
</body></html>

View File

@ -0,0 +1,6 @@
<html><body>Einster:<br>
You made it all the way here. Did you find ani Imps?<br>
You didn't uncover all the secrets yet. Secrets also exist in Abyssal Space. No explorers dared to go there yet.<br>
Please find out those secrets!<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap jump_location">"Sure, sure. Let me move on"</Button>
</body></html>

View File

@ -0,0 +1,9 @@
<html><body>Einster:<br>
There's someone who has not met the quest completion requirements, so I cannot send you.<br>
Check the list below to see which floor you can go to.<br><br>
Floor 6: Complete The Dimensional Warp, Part 1<br><br>
Floor 11: Complete The Dimensional Warp, Part 2<br><br>
Floor 16: Complete The Dimensional Warp, Part 3<br><br>
Floor 21: Complete The Dimensional Warp, Part 4<br><br>
Floor 26: Complete The Dimensional Warp, Part 5<br><br>
</body></html>

View File

@ -0,0 +1,12 @@
<html><body>Einster:<br>
I was first one to explore Dimensional Wrap. I heard that the imps here carry materials we could use -- rare books, things to enchant bracelets with, and the like.<br>
The Expeditioners have discovered that the probability of imps appearing increases with our use of Warp Crystals, but we have to use a lot to even think about getting up there.<br>
All members of the team should carry Warp Crystals. I'll divide them up according to the number in your group.<br>
I recently discovered the key to going upstairs directly. If you want, I can send you there.<br>
Okay, let's get started.<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 12_warp_crystals">"I'll use 12 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 240_warp_crystals">"I'll use 240 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 1200_warp_crystals">"I'll use 1200 Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 906">"I need Warp Crystals."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap 33975-01.html">"I want to go upstairs directly."</Button>
</body></html>

View File

@ -0,0 +1,77 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import com.l2jmobius.gameserver.enums.ChatType;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.serverpackets.NpcSay;
import ai.AbstractNpcAI;
/**
* Dimensional Archon AI
* @author Gigi
* @date 2018-09-08 - [18:09:02]
*/
public class DimensionalArchon extends AbstractNpcAI
{
// NPCs
private static final int DEMINSIONAL_ARCHON = 23469;
private static final int UNWORDLY_ARCHON = 23475;
private static final int ABYSSAL_ARCHON = 23482;
private static final NpcStringId[] ARCHON_MSG =
{
NpcStringId.DO_YOU_KNOW_WHO_IT_IS_THAT_YOU_FACE_IT_IS_BEST_THAT_YOU_RUN_NOW,
NpcStringId.LOOK_INTO_MY_EYES_AND_SEE_WHAT_COUNTLESS_OTHERS_HAVE_SEEN_BEFORE_THEIR_DEATH,
NpcStringId.I_COMMEND_YOUR_TENACITY_IN_COMING_THIS_FAR_BUT_NOW_IT_ENDS,
NpcStringId.DO_YOU_SEE_THIS_SWORD_THE_LIGHT_THAT_SCREAMS_WITH_THE_LIFE_OF_THOSE_IT_HAS_KILLED,
NpcStringId.I_WILL_SHOW_YOU_WHAT_TRUE_POWER_IS,
NpcStringId.YOU_WILL_NEED_TO_SURPASS_ME_EVENTUALLY_BUT_DON_T_FORGET_KNOWING_HOW_TO_FLEE_IS_AN_IMPORTANT_PART_OF_BATTLE
};
public DimensionalArchon()
{
super();
addSpawnId(DEMINSIONAL_ARCHON, UNWORDLY_ARCHON, ABYSSAL_ARCHON);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (event.equals("NPC_SHOUT"))
{
npc.broadcastPacket(new NpcSay(npc.getObjectId(), ChatType.NPC_GENERAL, npc.getId(), ARCHON_MSG[getRandom(ARCHON_MSG.length)]));
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onSpawn(L2Npc npc)
{
npc.setShowSummonAnimation(true);
startQuestTimer("NPC_SHOUT", 2000, npc, null);
return super.onSpawn(npc);
}
public static void main(String[] args)
{
new DimensionalArchon();
}
}

View File

@ -0,0 +1,169 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.holders.SkillHolder;
import ai.AbstractNpcAI;
/**
* Dimensional Trap's AI
* @author Gigi
* @date 2018-09-07 - [17:39:04]
*/
public class DimensionalTrap extends AbstractNpcAI
{
private static final int DIMENSIONAL_DEBUFF_TRAP_1 = 19556; // Debuff trap, power 1
private static final int DIMENSIONAL_DEBUFF_TRAP_2 = 19557; // Debuff trap, power 2
private static final int DIMENSIONAL_DEBUFF_TRAP_3 = 19558; // Debuff trap, power 3
private static final int DIMENSIONAL_DEMAGE_TRAP_1 = 19559; // Damage trap, power 1
private static final int DIMENSIONAL_DEMAGE_TRAP_2 = 19560; // Damage trap, power 2
private static final int DIMENSIONAL_DEMAGE_TRAP_3 = 19561; // Damage trap, power 3
private static final int DIMENSIONAL_HEAL_LIGHT = 19562; // Heal Trap
// skill
private static final SkillHolder TRAP_HOLD = new SkillHolder(16409, 1);
private static final SkillHolder TRAP_ARIALL_YOKE = new SkillHolder(16410, 1);
private static final SkillHolder TRAP_STUN = new SkillHolder(16411, 1);
private static final SkillHolder TRAP_POYSON = new SkillHolder(16413, 1);
private static final SkillHolder PEACE_ZONE_CURE = new SkillHolder(16414, 1);
private int _type;
public DimensionalTrap()
{
super();
addSpawnId(DIMENSIONAL_DEBUFF_TRAP_1, DIMENSIONAL_DEBUFF_TRAP_2, DIMENSIONAL_DEBUFF_TRAP_3, DIMENSIONAL_DEMAGE_TRAP_1, DIMENSIONAL_DEMAGE_TRAP_2, DIMENSIONAL_DEMAGE_TRAP_3, DIMENSIONAL_HEAL_LIGHT);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
if (npc != null)
{
switch (event)
{
case "debuff_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast((getRandom(10) < 5) ? TRAP_HOLD.getSkill() : TRAP_ARIALL_YOKE.getSkill());
}
});
startQuestTimer("debuff_player", 10000, npc, null);
break;
}
case "demage_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast((getRandom(10) < 5) ? TRAP_STUN.getSkill() : TRAP_POYSON.getSkill());
}
});
startQuestTimer("demage_player", 10000, npc, null);
break;
}
case "heal_player":
{
L2World.getInstance().forEachVisibleObjectInRange(npc, L2PcInstance.class, _type, p ->
{
if ((p != null) && p.isPlayer() && !p.isDead())
{
npc.setTarget(p);
npc.doCast(PEACE_ZONE_CURE.getSkill());
}
});
startQuestTimer("heal_player", 10000, npc, null);
break;
}
}
}
return super.onAdvEvent(event, npc, player);
}
@Override
public String onSpawn(L2Npc npc)
{
npc.setIsInvul(true);
switch (npc.getId())
{
case DIMENSIONAL_DEBUFF_TRAP_1:
{
npc.setDisplayEffect(1);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 50;
break;
}
case DIMENSIONAL_DEBUFF_TRAP_2:
{
npc.setDisplayEffect(2);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 100;
break;
}
case DIMENSIONAL_DEBUFF_TRAP_3:
{
npc.setDisplayEffect(3);
startQuestTimer("debuff_player", 3000, npc, null);
_type = 150;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_1:
{
npc.setDisplayEffect(4);
startQuestTimer("demage_player", 3000, npc, null);
_type = 50;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_2:
{
npc.setDisplayEffect(5);
startQuestTimer("demage_player", 3000, npc, null);
_type = 100;
break;
}
case DIMENSIONAL_DEMAGE_TRAP_3:
{
npc.setDisplayEffect(6);
startQuestTimer("demage_player", 3000, npc, null);
_type = 150;
break;
}
case DIMENSIONAL_HEAL_LIGHT:
{
npc.setDisplayEffect(7);
startQuestTimer("heal_player", 3000, npc, null);
_type = 150;
break;
}
}
return super.onSpawn(npc);
}
public static void main(String[] args)
{
new DimensionalTrap();
}
}

View File

@ -0,0 +1,676 @@
/*
* This file is part of the L2J Mobius project.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package instances.DimensionalWrap;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import com.l2jmobius.Config;
import com.l2jmobius.commons.concurrent.ThreadPool;
import com.l2jmobius.commons.util.CommonUtil;
import com.l2jmobius.gameserver.data.xml.impl.SkillData;
import com.l2jmobius.gameserver.enums.CategoryType;
import com.l2jmobius.gameserver.model.L2Party;
import com.l2jmobius.gameserver.model.L2World;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.instancezone.Instance;
import com.l2jmobius.gameserver.model.skills.Skill;
import com.l2jmobius.gameserver.network.NpcStringId;
import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.Earthquake;
import com.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jmobius.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import instances.AbstractInstance;
/**
* Dimensional Wrap instance
* @URL https://l2wiki.com/Dimensional_Warp
* @Video https://www.youtube.com/watch?v=hOnzk0ELwIg
* @author Gigi
* @date 2018-09-04 - [14:33:31]
*/
public class DimensionalWrap extends AbstractInstance
{
// NPCs
private static final int RESED = 33974;
private static final int EINSTER = 33975;
// Monsters
private static final int DEMINSIONAL_INVISIBLE_FRAGMENT = 19564;
private static final int SALAMANDRA_GENERATOR = 19563;
private static final int SALAMANDRA_GENERATOR_DUMMY = 900112;
private static final int DIMENSIONAL_SALAMANDRA = 23466;
private static final int UNWORDLY_SALAMANDER = 23473;
private static final int DIMENSIONAL_IMP = 19553;
private static final int UNWORDLY_IMP = 19554;
private static final int ABYSSAL_IMP = 19555;
private static final int ABYSSAL_MAKKUM = 26090;
private static final int[] MONSTERS =
{
23462, // Dimensional Orc Butcher
23463, // Dimensional Orc Hunter
23464, // Dimensional Shaman
23465, // Dimensional Bugbear
23467, // Dimensional Binder
23468, // Dimensional Demon
23469, // Dimensional Archon
23470, // Unworldly Demon
23471, // Unworldly Etin
23472, // Unworldly Shaman
23474, // Unworldly Golem
23475, // Unworldly Archon
23476, // Unworldly Harpy
23477, // Abyssal Shaman
23478, // Abyssal Berserker
23480, // Abyssal Harpy
23481, // Abyssal Binder
23482, // Abyssal Archon
23483 // Abyssal Golem
};
private static final int[] TRAPS =
{
19556, // Debuff trap, power 1
19557, // Debuff trap, power 2
19558, // Debuff trap, power 3
19559, // Damage trap, power 1
19560, // Damage trap, power 2
19561, // Damage trap, power 3
19562 // Heal Trap
};
// Location
private static final Location TELEPORTS = new Location(-76136, -216216, 4040);
private static final Location FIRST_TELEPORT = new Location(-219544, 248776, 3360);
private static final Location SECOND_TELEPORT = new Location(-206756, 242009, 6584);
private static final Location THRID_TELEPORT = new Location(-219813, 248484, 9928);
private static final Location FOURTH_TELEPORT = new Location(-87191, -210129, 6984);
// Misc
private static final int TEMPLATE_ID = 250;
private static final int DIMENSIONAL_DARK_FORCES = 16415;
private static final int WARP_CRYSTAL = 39597;
protected double _chance = 0;
protected int _count = 0;
public int _skilllevel = 1;
public int _worldState = 0;
protected ScheduledFuture<?> _debufTask;
public DimensionalWrap()
{
super(TEMPLATE_ID);
addStartNpc(RESED);
addTalkId(EINSTER);
addKillId(MONSTERS);
addKillId(ABYSSAL_MAKKUM);
addSpawnId(SALAMANDRA_GENERATOR, DEMINSIONAL_INVISIBLE_FRAGMENT, SALAMANDRA_GENERATOR_DUMMY);
addFirstTalkId(EINSTER);
}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = null;
final Instance world = npc.getInstanceWorld();
if (event.equals("enterInstance"))
{
if (!player.isInCategory(CategoryType.SIXTH_CLASS_GROUP))
{
htmltext = "no_awakened.html";
}
else if (!player.isInParty())
{
enterInstance(player, npc, TEMPLATE_ID);
}
else if (player.isInParty())
{
if (!player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
}
else
{
final L2Party party = player.getParty();
final List<L2PcInstance> members = party.getMembers();
for (L2PcInstance member : members)
{
if (member.isInsideRadius3D(npc, Config.ALT_PARTY_RANGE))
{
enterInstance(member, npc, TEMPLATE_ID);
}
}
}
}
}
if (isInInstance(world))
{
switch (event)
{
case "33975-01.html":
{
htmltext = event;
break;
}
case "12_warp_crystals":
{
_chance = 0.3;
if (!player.isInParty())
{
_count = 12;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 6;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 4;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 3;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "240_warp_crystals":
{
_chance = 0.6;
if (!player.isInParty())
{
_count = 240;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 120;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 80;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 60;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "1200_warp_crystals":
{
_chance = 0.9;
if (!player.isInParty())
{
_count = 1200;
CheckCrystallCount(world, player, npc);
break;
}
else if (player.isInParty() && !player.getParty().isLeader(player))
{
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ONLY_A_PARTY_LEADER_CAN_MAKE_THE_REQUEST_TO_ENTER));
break;
}
switch (player.getParty().getMemberCount())
{
case 2:
{
_count = 600;
CheckCrystallCount(world, player, npc);
break;
}
case 3:
{
_count = 400;
CheckCrystallCount(world, player, npc);
break;
}
case 4:
{
_count = 300;
CheckCrystallCount(world, player, npc);
break;
}
}
break;
}
case "send_6_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0)
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 5)
{
world.setStatus(5);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(FIRST_TELEPORT, world.getTemplateId());
}
break;
}
case "send_11_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 2))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 10)
{
world.setStatus(10);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(SECOND_TELEPORT, world.getTemplateId());
}
break;
}
case "send_16_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 3))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 15)
{
world.setStatus(15);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(THRID_TELEPORT, world.getTemplateId());
}
break;
}
case "send_21_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 4))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 20)
{
world.setStatus(20);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(TELEPORTS, world.getTemplateId());
}
break;
}
case "send_26_f":
{
if (_worldState == 0)
{
htmltext = "33975-02.html";
break;
}
if ((player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL", 0) == 0) || (player.getVariables().getInt("DIMENSIONAL_WRAP_LEVEL") < 5))
{
htmltext = "33975-05.html";
break;
}
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
if (world.getStatus() < 25)
{
world.setStatus(25);
cancelQuestTimers("SECOND_SPAWN");
cancelQuestTimers("THRID_SPAWN");
startQuestTimer("START_STAGE", 5000, npc, null);
}
for (L2PcInstance pl : world.getPlayers())
{
pl.teleToLocation(FOURTH_TELEPORT, world.getTemplateId());
}
break;
}
case "jump_location":
{
player.teleToLocation(TELEPORTS, world.getTemplateId());
break;
}
case "SALAMANDRA_SPAWN":
case "SALAMANDRA_SPAWN_DUMMY":
{
if (getRandom(100) < (_worldState / 2))
{
final L2Npc salamandra = addSpawn(_worldState < 17 ? DIMENSIONAL_SALAMANDRA : UNWORDLY_SALAMANDER, npc, false, 0, false, world.getId());
salamandra.setRunning();
L2World.getInstance().forEachVisibleObjectInRange(salamandra, L2PcInstance.class, 2500, p ->
{
if ((p != null) && !p.isDead())
{
addAttackPlayerDesire(salamandra, p);
}
});
}
break;
}
case "START_STAGE":
{
world.setStatus(world.getStatus() + 1);
_worldState = world.getStatus();
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.DIMENSIONAL_WARP_LV_S1, ExShowScreenMessage.TOP_CENTER, 10000, true, String.valueOf(world.getStatus())));
startQuestTimer("FIRST_SPAWN", 1500, npc, null);
break;
}
case "FIRST_SPAWN":
{
world.spawnGroup(_worldState + "_first_spawn");
world.spawnGroup(_worldState + "_trap_spawn");
startQuestTimer("SECOND_SPAWN", 40000, npc, null);
_debufTask = ThreadPool.scheduleAtFixedRate(() ->
{
if ((_worldState > 0) && (_worldState <= 11))
{
_skilllevel = 1;
}
else if ((_worldState > 11) && (_worldState <= 20))
{
_skilllevel = 2;
}
else if ((_worldState > 20) && (_worldState <= 30))
{
_skilllevel = 3;
}
else if (_worldState > 30)
{
_skilllevel = 4;
}
final Skill skill = SkillData.getInstance().getSkill(DIMENSIONAL_DARK_FORCES, _skilllevel);
for (L2PcInstance p : world.getPlayers())
{
if ((p != null) && !p.isDead())
{
skill.applyEffects(p, p);
}
}
}, 5000, 10000);
break;
}
case "SECOND_SPAWN":
{
world.spawnGroup(_worldState + "_second_spawn");
startQuestTimer("THRID_SPAWN", 40000, npc, null);
break;
}
case "THRID_SPAWN":
{
world.spawnGroup(_worldState + "_thred_spawn");
break;
}
case "CHANGE_LOCATION":
{
world.getAliveNpcs(TRAPS).forEach(t -> t.deleteMe());
world.spawnGroup(_worldState + "_trap_spawn");
startQuestTimer("CHANGE_LOCATION", 60000 - (_worldState * 1430), npc, null);
break;
}
case "SWITCH_STAGE":
{
if (world.getAliveNpcs(MONSTERS).isEmpty())
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_SURROUNDING_ENERGY_HAS_DISSIPATED, ExShowScreenMessage.TOP_CENTER, 5000, true));
world.broadcastPacket(new Earthquake(npc, 50, 5));
world.openCloseDoor(world.getTemplateParameters().getInt(_worldState + "_st_door"), true);
Clean();
if (_worldState < 35)
{
startQuestTimer("NEXT_STAGE", 5000, npc, null);
}
}
break;
}
case "NEXT_STAGE":
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.S1_SECONDS_HAVE_BEEN_ADDED_TO_THE_INSTANCE_ZONE_DURATION, ExShowScreenMessage.TOP_CENTER, 5000, true, String.valueOf(180)));
world.setDuration((int) ((world.getRemainingTime() / 60000) + 3));
startQuestTimer("START_STAGE", 8000, npc, null);
for (L2Npc n : world.getAliveNpcs())
{
if (n.getId() != EINSTER)
{
n.deleteMe();
}
}
break;
}
}
}
return htmltext;
}
@Override
public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
if (CommonUtil.contains(MONSTERS, npc.getId()) && (getRandom(100) < _chance))
{
if (_worldState < 9)
{
addSpawn(DIMENSIONAL_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.DIMENSIONAL_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
else if ((_worldState >= 9) && (_worldState < 20))
{
addSpawn(UNWORDLY_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.UNWORLDLY_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
else if (_worldState >= 20)
{
addSpawn(ABYSSAL_IMP, npc, true, 0, false, world.getId());
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.ABYSSAL_IMP, ExShowScreenMessage.TOP_CENTER, 5000, true));
}
}
else if (npc.getId() == ABYSSAL_MAKKUM)
{
world.broadcastPacket(new ExShowScreenMessage(NpcStringId.THE_INSTANCE_ZONE_WILL_CLOSE_SOON, ExShowScreenMessage.TOP_CENTER, 10000, true));
world.finishInstance(3);
Clean();
}
}
return super.onKill(npc, killer, isSummon);
}
@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (_worldState == 20)
{
return "33975-04.html";
}
return "33975.html";
}
@Override
public String onSpawn(L2Npc npc)
{
final Instance world = npc.getInstanceWorld();
if (isInInstance(world))
{
switch (npc.getId())
{
case SALAMANDRA_GENERATOR:
{
startQuestTimer("SALAMANDRA_SPAWN", 25000, npc, null, true);
startQuestTimer("CHANGE_LOCATION", 60000 - (_worldState * 1300), npc, null);
break;
}
case SALAMANDRA_GENERATOR_DUMMY:
{
startQuestTimer("SALAMANDRA_SPAWN_DUMMY", 20000, npc, null, true);
break;
}
case DEMINSIONAL_INVISIBLE_FRAGMENT:
{
startQuestTimer("SWITCH_STAGE", 5000, npc, null, true);
break;
}
}
}
return super.onSpawn(npc);
}
public void CheckCrystallCount(Instance world, L2PcInstance player, L2Npc npc)
{
boolean canStart = true;
for (L2PcInstance p : world.getPlayers())
{
if (p.getInventory().getInventoryItemCount(WARP_CRYSTAL, -1) < _count)
{
for (L2PcInstance ps : world.getPlayers())
{
final NpcHtmlMessage packet = new NpcHtmlMessage(npc.getObjectId());
packet.setHtml(getHtm(ps, "33975-03.html"));
packet.replace("%count%", Integer.toString(_count));
ps.sendPacket(packet);
ps.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.C1_S_ITEM_REQUIREMENT_IS_NOT_SUFFICIENT_AND_CANNOT_BE_ENTERED).addString(ps.getName()));
canStart = false;
}
}
}
if (!canStart || (_worldState != 0))
{
return;
}
startQuestTimer("START_STAGE", 1000, npc, null);
for (L2PcInstance p : world.getPlayers())
{
takeItems(p, WARP_CRYSTAL, _count);
}
}
protected void Clean()
{
cancelQuestTimers("SWITCH_STAGE");
cancelQuestTimers("SALAMANDRA_SPAWN");
cancelQuestTimers("SALAMANDRA_SPAWN_DUMMY");
cancelQuestTimers("CHANGE_LOCATION");
if (_debufTask != null)
{
_debufTask.cancel(false);
_debufTask = null;
}
}
public static void main(String[] args)
{
new DimensionalWrap();
}
}

View File

@ -0,0 +1,3 @@
<html><body>Resed:<br>
Only those who have completed the 3rd Liberation or have Awakened can enter.
</body></html>

View File

@ -461,7 +461,10 @@
</collision>
</npc>
<npc id="19556" level="99" type="L2Npc" name="Dimensional Trap">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="trap_skill_type" value="1" />
<skill name="trap_skill" id="10806" level="2" />
</parameters>
<race>ETC</race>
<sex>FEMALE</sex>
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
@ -473,7 +476,12 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<skillList>
<skill id="10806" level="2" /> <!-- Frost Trap -->
</skillList>
<exCrtEffect>true</exCrtEffect>
<ai aggroRange="100" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -492,7 +500,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -511,7 +519,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -530,7 +538,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -549,7 +557,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -568,7 +576,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -587,7 +595,7 @@
<attack physical="47220.557386874" magical="8305.0410766139" critical="4" attackSpeed="253" range="40" />
<defence physical="526.06382978723" magical="305.10497858296" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="10" />
<height normal="20" />
@ -606,7 +614,7 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="1" />
<height normal="1" />
@ -625,7 +633,7 @@
<attack physical="1950.2231755595" magical="1331.5869440987" critical="4" attackSpeed="253" range="40" />
<defence physical="405.85106382979" magical="297.0297029703" />
</stats>
<status attackable="false" />
<status attackable="false" targetable="false" showName="false" canMove="false" talkable="false" />
<collision>
<radius normal="0.1" />
<height normal="0.1" />

View File

@ -2265,7 +2265,9 @@
</collision>
</npc>
<npc id="23462" level="102" type="L2Monster" name="Dimensional Orc Butcher">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="336298896" sp="336361" />
@ -2294,6 +2296,11 @@
<skill id="16365" level="1" /> <!-- Dimensional Defense Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="19.74" /> <!-- Warp Crystal -->
@ -2308,7 +2315,9 @@
</collision>
</npc>
<npc id="23463" level="102" type="L2Monster" name="Dimensional Orc Hunter" title="Scout">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="504448344" sp="504489" />
@ -2336,6 +2345,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16380" level="1" /> <!-- Dimensional Recoil Shot -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="48.99" /> <!-- Warp Crystal -->
@ -2350,7 +2364,9 @@
</collision>
</npc>
<npc id="23464" level="102" type="L2Monster" name="Dimensional Shaman" title="Watcher">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>DEMONIC</race>
<sex>FEMALE</sex>
<acquire exp="504448344" sp="504489" />
@ -2381,6 +2397,11 @@
<skill id="16372" level="1" /> <!-- Dimensional Spike -->
<skill id="16381" level="1" /> <!-- Dimensional Shield -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="50.04" /> <!-- Warp Crystal -->
@ -2395,7 +2416,9 @@
</collision>
</npc>
<npc id="23465" level="102" type="L2Monster" name="Dimensional Bugbear">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>GIANT</race>
<sex>FEMALE</sex>
<acquire exp="504448344" sp="504489" />
@ -2425,6 +2448,11 @@
<skill id="16375" level="1" /> <!-- Dimensional Hammer -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="49.28" /> <!-- Warp Crystal -->
@ -2439,7 +2467,9 @@
</collision>
</npc>
<npc id="23466" level="102" type="L2Monster" name="Dimensional Salamander" title="Hunter">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>ELEMENTAL</race>
<sex>FEMALE</sex>
<stats str="88" int="79" dex="55" wit="78" con="82" men="78">
@ -2476,7 +2506,9 @@
</collision>
</npc>
<npc id="23467" level="102" type="L2Monster" name="Dimensional Binder">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>HUMANOID</race>
<sex>FEMALE</sex>
<acquire exp="504448344" sp="504489" />
@ -2506,6 +2538,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="50.98" /> <!-- Warp Crystal -->
@ -2520,7 +2557,9 @@
</collision>
</npc>
<npc id="23468" level="102" type="L2Monster" name="Dimensional Demon">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>DEMONIC</race>
<sex>FEMALE</sex>
<acquire exp="336298896" sp="336361" />
@ -2551,6 +2590,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="1" max="1" chance="19.69" /> <!-- Warp Crystal -->
@ -2565,7 +2609,9 @@
</collision>
</npc>
<npc id="23469" level="102" type="L2Monster" name="Dimensional Archon" title="Slaughterer">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<parameters>
<param name="IsAggressive" value="1" />
</parameters>
<race>UNDEAD</race>
<sex>FEMALE</sex>
<acquire exp="1008896688" sp="1008979" />
@ -2598,6 +2644,11 @@
<skill id="16367" level="1" /> <!-- Dimensional Speed Decrease -->
<skill id="16368" level="1" /> <!-- Dimensional Strike -->
</skillList>
<ai clanHelpRange="400" aggroRange="600">
<clanList>
<clan>WRAP_MOB</clan>
</clanList>
</ai>
<dropLists>
<drop>
<item id="39597" min="2" max="2" chance="49.87" /> <!-- Warp Crystal -->
@ -2743,7 +2794,7 @@
<height normal="42" />
</collision>
</npc>
<npc id="23473" level="103" type="L2Monster" name="Unworldly Salamander" title="Hunter">
<npc id="23473" level="99" type="L2Monster" name="Unworldly Salamander" title="Hunter">
<!-- AUTO GENERATED NPC TODO: FIX IT -->
<race>ELEMENTAL</race>
<sex>FEMALE</sex>

View File

@ -91,55 +91,237 @@
<skill id="16409" toLevel="3" name="Trap Hold">
<!-- Immobilized. -->
<icon>icon.skill4047</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>ROOT_MAGICALLY</abnormalType>
<abnormalVisualEffect>ROOT</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>10</abnormalTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>80</activateRate>
<trait>HOLD</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="Root" />
<effect name="DefenceTrait">
<HOLD>100</HOLD>
</effect>
</effects>
</skill>
<skill id="16410" toLevel="3" name="Trap Aerial Yoke">
<!-- Immobilized. -->
<icon>icon.skill11050</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>AIRBIND</abnormalType>
<abnormalVisualEffect>AIRBIND</abnormalVisualEffect>
<abnormalResists>STUN;TURN_FLEE</abnormalResists>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>80</activateRate>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="AirBind" />
<effect name="BlockActions">
<allowedSkills>10279;10517;10025;10776;11770;1904;11264;11093;13314;1912</allowedSkills>
</effect>
<effect name="DefenceTrait">
<HOLD>100</HOLD>
<DERANGEMENT>100</DERANGEMENT>
<SHOCK>100</SHOCK>
<KNOCKBACK>100</KNOCKBACK>
<CHANGEBODY>100</CHANGEBODY>
<KNOCKDOWN>100</KNOCKDOWN>
<SLEEP>100</SLEEP>
<AIRBIND>100</AIRBIND>
</effect>
</effects>
</skill>
<skill id="16411" toLevel="3" name="Trap Stun">
<!-- Immobilized. -->
<icon>icon.skill0100</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<abnormalType>STUN</abnormalType>
<abnormalVisualEffect>STUN</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<trait>SHOCK</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="BlockActions" />
</effects>
</skill>
<skill id="16412" toLevel="3" name="Trap Petrify">
<!-- Immobilized. -->
<icon>icon.skill4111</icon>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>10</abnormalTime>
<affectRange>150</affectRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
</skill>
<skill id="16413" toLevel="3" name="Trap Poison">
<!-- Poisons the target, causing them to lose $s2 HP every $s1. -->
<icon>icon.skill4035</icon>
<abnormalLvl>1</abnormalLvl>
<abnormalTime>
<value level="1">6</value>
<value level="2">8</value>
<value level="3">10</value>
</abnormalTime>
<subordinationAbnormalType>POISON</subordinationAbnormalType>
<abnormalType>POISON</abnormalType>
<abnormalVisualEffect>DOT_POISON</abnormalVisualEffect>
<operateType>A2</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<hitCancelTime>0</hitCancelTime>
<affectRange>150</affectRange>
<castRange>150</castRange>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<activateRate>100</activateRate>
<trait>POISON</trait>
<isDebuff>1</isDebuff>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="DamOverTime">
<power>1000</power>
<ticks>1</ticks>
</effect>
</effects>
</skill>
<skill id="16414" toLevel="1" name="Peace Zone Cure">
<!-- Recover 10% of Max HP and 30% of Max MP of self and everyone within 200 grids. Cooldown is 10 sec. -->
<icon>icon.skill0000</icon>
<operateType>A1</operateType>
<reuseDelay>10000</reuseDelay>
<basicProperty>NONE</basicProperty>
<rideState>NONE</rideState>
<magicCriticalRate>-5</magicCriticalRate>
<affectRange>200</affectRange>
<targetType>TARGET</targetType>
<affectScope>SINGLE</affectScope>
<effects>
<effect name="HealPercent">
<power>10</power>
</effect>
</effects>
<effect name="ManaHealPercent">
<power>30</power>
</effect>
</skill>
<skill id="16415" toLevel="4" name="Dimensional Dark Forces">
<!-- P. Atk -$s1, M. Atk. -$s2, and P. Critical Rate -$s3, M. Critical Rate -$s4. -->
<icon>icon.skill1298</icon>
<abnormalLvl>
<value level="1">1</value>
<value level="2">2</value>
<value level="3">3</value>
<value level="4">4</value>
</abnormalLvl>
<abnormalTime>
<value level="1">5</value>
<value level="2">5</value>
<value level="3">10</value>
<value level="4">10</value>
</abnormalTime>
<operateType>A2</operateType>
<rideState>NONE</rideState>
<basicProperty>NONE</basicProperty>
<effectPoint>-100</effectPoint>
<isDebuff>true</isDebuff>
<isDebuff>1</isDebuff>
<affectScope>SINGLE</affectScope>
<targetType>SELF</targetType>
<effects>
<effect name="PAtk">
<amount>
<value level="1">-4</value>
<value level="2">-6</value>
<value level="3">-8</value>
<value level="3">-10</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="MAtk">
<amount>
<value level="1">-4</value>
<value level="2">-6</value>
<value level="3">-8</value>
<value level="3">-10</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="CriticalRate">
<amount>
<value level="1">-5</value>
<value level="2">-10</value>
<value level="3">-20</value>
<value level="3">-30</value>
</amount>
<mode>PER</mode>
</effect>
<effect name="MagicCriticalRate">
<amount>
<value level="1">-5</value>
<value level="2">-10</value>
<value level="3">-20</value>
<value level="3">-30</value>
</amount>
<mode>PER</mode>
</effect>
</effects>
</skill>
<skill id="16416" toLevel="10" name="Bluff Resistance">
<!-- Slightly resistant to Bluff. -->

View File

@ -132,6 +132,172 @@
<stat name="mapId" val="45" />
<node X="-186154" Y="242838" />
</zone>
<!-- Dimensional Wrap Stage 1 -->
<zone name="Sayune_46" type="SayuneZone" shape="Cylinder" minZ="400" maxZ="500" rad="80">
<stat name="mapId" val="46" />
<node X="-208193" Y="240585" />
</zone>
<!-- Dimensional Wrap Stage 2 -->
<zone name="Sayune_47" type="SayuneZone" shape="Cylinder" minZ="1100" maxZ="1200" rad="80">
<stat name="mapId" val="47" />
<node X="-211300" Y="238768" />
</zone>
<!-- Dimensional Wrap Stage 3 -->
<zone name="Sayune_48" type="SayuneZone" shape="Cylinder" minZ="1600" maxZ="1700" rad="80">
<stat name="mapId" val="48" />
<node X="-216356" Y="239680" />
</zone>
<!-- Dimensional Wrap Stage 4 -->
<zone name="Sayune_49" type="SayuneZone" shape="Cylinder" minZ="2250" maxZ="2350" rad="80">
<stat name="mapId" val="49" />
<node X="-219722" Y="241510" />
</zone>
<!-- Dimensional Wrap Stage 5 -->
<zone name="Sayune_50" type="SayuneZone" shape="Cylinder" minZ="2700" maxZ="2800" rad="80">
<stat name="mapId" val="50" />
<node X="-219116" Y="246748" />
</zone>
<!-- Dimensional Wrap Stage 6 -->
<zone name="Sayune_51" type="SayuneZone" shape="Cylinder" minZ="3350" maxZ="3450" rad="80">
<stat name="mapId" val="51" />
<node X="-218132" Y="250177" />
</zone>
<!-- Dimensional Wrap Stage 7 -->
<zone name="Sayune_52" type="SayuneZone" shape="Cylinder" minZ="4100" maxZ="4200" rad="80">
<stat name="mapId" val="52" />
<node X="-215046" Y="251965" />
</zone>
<!-- Dimensional Wrap Stage 8 -->
<zone name="Sayune_53" type="SayuneZone" shape="Cylinder" minZ="4550" maxZ="4650" rad="80">
<stat name="mapId" val="53" />
<node X="-209957" Y="251067" />
</zone>
<!-- Dimensional Wrap Stage 9 -->
<zone name="Sayune_54" type="SayuneZone" shape="Cylinder" minZ="5200" maxZ="5300" rad="80">
<stat name="mapId" val="54" />
<node X="-206602" Y="249250" />
</zone>
<!-- Dimensional Wrap Stage 10 -->
<zone name="Sayune_55" type="SayuneZone" shape="Cylinder" minZ="5550" maxZ="5800" rad="80">
<stat name="mapId" val="55" />
<node X="-206952" Y="243976" />
</zone>
<!-- Dimensional Wrap Stage 11 -->
<zone name="Sayune_56" type="SayuneZone" shape="Cylinder" minZ="6500" maxZ="6750" rad="80">
<stat name="mapId" val="56" />
<node X="-208200" Y="240584" />
</zone>
<!-- Dimensional Wrap Stage 12 -->
<zone name="Sayune_57" type="SayuneZone" shape="Cylinder" minZ="7220" maxZ="7460" rad="80">
<stat name="mapId" val="57" />
<node X="-211304" Y="238760" />
</zone>
<!-- Dimensional Wrap Stage 13 -->
<zone name="Sayune_58" type="SayuneZone" shape="Cylinder" minZ="7700" maxZ="7900" rad="80">
<stat name="mapId" val="58" />
<node X="-216344" Y="239672" />
</zone>
<!-- Dimensional Wrap Stage 14 -->
<zone name="Sayune_59" type="SayuneZone" shape="Cylinder" minZ="8350" maxZ="8555" rad="80">
<stat name="mapId" val="59" />
<node X="-219720" Y="241512" />
</zone>
<!-- Dimensional Wrap Stage 15 -->
<zone name="Sayune_60" type="SayuneZone" shape="Cylinder" minZ="8780" maxZ="9000" rad="80">
<stat name="mapId" val="60" />
<node X="-219112" Y="246744" />
</zone>
<!-- Dimensional Wrap Stage 16 -->
<zone name="Sayune_61" type="SayuneZone" shape="Cylinder" minZ="9800" maxZ="10000" rad="80">
<stat name="mapId" val="61" />
<node X="-218136" Y="250184" />
</zone>
<!-- Dimensional Wrap Stage 17 -->
<zone name="Sayune_62" type="SayuneZone" shape="Cylinder" minZ="10520" maxZ="10790" rad="80">
<stat name="mapId" val="62" />
<node X="-215048" Y="251960" />
</zone>
<!-- Dimensional Wrap Stage 18 -->
<zone name="Sayune_63" type="SayuneZone" shape="Cylinder" minZ="11000" maxZ="11200" rad="80">
<stat name="mapId" val="63" />
<node X="-209960" Y="251080" />
</zone>
<!-- Dimensional Wrap Stage 19 -->
<zone name="Sayune_64" type="SayuneZone" shape="Cylinder" minZ="11650" maxZ="11850" rad="80">
<stat name="mapId" val="64" />
<node X="-206600" Y="249240" />
</zone>
<!-- Dimensional Wrap Stage 21 -->
<zone name="Sayune_65" type="SayuneZone" shape="Cylinder" minZ="4000" maxZ="4100" rad="80">
<stat name="mapId" val="65" />
<node X="-77982" Y="-218040" />
</zone>
<!-- Dimensional Wrap Stage 22 -->
<zone name="Sayune_66" type="SayuneZone" shape="Cylinder" minZ="4700" maxZ="4800" rad="80">
<stat name="mapId" val="66" />
<node X="-80696" Y="-219020" />
</zone>
<!-- Dimensional Wrap Stage 23 -->
<zone name="Sayune_67" type="SayuneZone" shape="Cylinder" minZ="5200" maxZ="5300" rad="80">
<stat name="mapId" val="67" />
<node X="-85023" Y="-218047" />
</zone>
<!-- Dimensional Wrap Stage 24 -->
<zone name="Sayune_68" type="SayuneZone" shape="Cylinder" minZ="5900" maxZ="6000" rad="80">
<stat name="mapId" val="68" />
<node X="-87828" Y="-217077" />
</zone>
<!-- Dimensional Wrap Stage 25 -->
<zone name="Sayune_69" type="SayuneZone" shape="Cylinder" minZ="6300" maxZ="6400" rad="80">
<stat name="mapId" val="69" />
<node X="-86591" Y="-212083" />
</zone>
<!-- Dimensional Wrap Stage 26 -->
<zone name="Sayune_70" type="SayuneZone" shape="Cylinder" minZ="7000" maxZ="7100" rad="80">
<stat name="mapId" val="70" />
<node X="-85764" Y="-208712" />
</zone>
<!-- Dimensional Wrap Stage 27 -->
<zone name="Sayune_71" type="SayuneZone" shape="Cylinder" minZ="7700" maxZ="7800" rad="80">
<stat name="mapId" val="71" />
<node X="-83015" Y="-207015" />
</zone>
<!-- Dimensional Wrap Stage 28 -->
<zone name="Sayune_72" type="SayuneZone" shape="Cylinder" minZ="8200" maxZ="8300" rad="80">
<stat name="mapId" val="72" />
<node X="-78759" Y="-208040" />
</zone>
<!-- Dimensional Wrap Stage 29 -->
<zone name="Sayune_73" type="SayuneZone" shape="Cylinder" minZ="8800" maxZ="8900" rad="80">
<stat name="mapId" val="73" />
<node X="-76010" Y="-209839" />
</zone>
<!-- Dimensional Wrap Stage 30 -->
<zone name="Sayune_74" type="SayuneZone" shape="Cylinder" minZ="9300" maxZ="9400" rad="80">
<stat name="mapId" val="74" />
<node X="-77242" Y="-214850" />
</zone>
<!-- Dimensional Wrap Stage 31 -->
<zone name="Sayune_75" type="SayuneZone" shape="Cylinder" minZ="10200" maxZ="10256" rad="80">
<stat name="mapId" val="75" />
<node X="-77982" Y="-218036" />
</zone>
<!-- Dimensional Wrap Stage 32 -->
<zone name="Sayune_76" type="SayuneZone" shape="Cylinder" minZ="10900" maxZ="11000" rad="80">
<stat name="mapId" val="76" />
<node X="-80697" Y="-219020" />
</zone>
<!-- Dimensional Wrap Stage 33 -->
<zone name="Sayune_77" type="SayuneZone" shape="Cylinder" minZ="11400" maxZ="11500" rad="80">
<stat name="mapId" val="77" />
<node X="-85026" Y="-218044" />
</zone>
<!-- Dimensional Wrap Stage 34 -->
<zone name="Sayune_78" type="SayuneZone" shape="Cylinder" minZ="12050" maxZ="12100" rad="80">
<stat name="mapId" val="78" />
<node X="-87828" Y="-217079" />
</zone>
<!-- Enchanted Valley -->
<zone name="Sayune_79" type="SayuneZone" shape="Cylinder" minZ="-4700" maxZ="-4600" rad="100">
<stat name="mapId" val="79" />
<node X="113562" Y="46888" />

View File

@ -843,7 +843,7 @@ public final class Instance implements IIdentifiable, INamable
}
_allowed.forEach(player ->
{
if ((player != null))
if (player != null)
{
InstanceManager.getInstance().setReenterPenalty(player.getObjectId(), getTemplateId(), time);
if (player.isOnline())
@ -1147,6 +1147,11 @@ public final class Instance implements IIdentifiable, INamable
*/
private void sendWorldDestroyMessage(int delay)
{
// Dimensional wrap does not show timer after 5 minutes.
if (delay > 5)
{
return;
}
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THIS_INSTANT_ZONE_WILL_BE_TERMINATED_IN_S1_MIN_YOU_WILL_BE_FORCED_OUT_OF_THE_DUNGEON_WHEN_THE_TIME_EXPIRES);
sm.addInt(delay);
broadcastPacket(sm);

View File

@ -54,6 +54,7 @@ Ertheia:
-Brooch system
-Luck system
-Auto fishing
-Dimensional Warp
Infinite Odyssey:
-Garden of Spirits

View File

@ -621,6 +621,171 @@
<loc id="1" x="-186018" y="243468" z="2657" />
<loc id="2" x="-186470" y="243500" z="2618" />
</map>
<!-- Dimensional Wrap Stage 1 -> 2 -->
<map id="46">
<loc id="1" x="-209809" y="239024" z="1560" />
<loc id="2" x="-210349" y="240190" z="1136" />
</map>
<!-- Dimensional Wrap Stage 2 -> 3 -->
<map id="47">
<loc id="1" x="-213737" y="238586" z="1596" />
<loc id="2" x="-214526" y="238900" z="1584" />
</map>
<!-- Dimensional Wrap Stage 3 -> 4 -->
<map id="48">
<loc id="1" x="-218797" y="240326" z="2670" />
<loc id="2" x="-218050" y="241346" z="2248" />
</map>
<!-- Dimensional Wrap Stage 4 -> 5 -->
<map id="49">
<loc id="1" x="-222958" y="241121" z="2386" />
<loc id="2" x="-219093" y="243874" z="2728" />
</map>
<!-- Dimensional Wrap Stage 5 -> 6 -->
<map id="50">
<loc id="1" x="-219640" y="247868" z="3496" />
<loc id="2" x="-219544" y="248776" z="3360" />
</map>
<!-- Dimensional Wrap Stage 6 -> 7 -->
<map id="51">
<loc id="1" x="-216513" y="251722" z="4527" />
<loc id="2" x="-215980" y="250563" z="4104" />
</map>
<!-- Dimensional Wrap Stage 7 -> 8 -->
<map id="52">
<loc id="1" x="-212680" y="251576" z="4680" />
<loc id="2" x="-211773" y="251821" z="4552" />
</map>
<!-- Dimensional Wrap Stage 8 -> 9 -->
<map id="53">
<loc id="1" x="-207533" y="250419" z="5639" />
<loc id="2" x="-208286" y="249412" z="5216" />
</map>
<!-- Dimensional Wrap Stage 9 -> 10 -->
<map id="54">
<loc id="1" x="-204970" y="248587" z="6592" />
<loc id="2" x="-206980" y="246782" z="5696" />
</map>
<!-- Dimensional Wrap Stage 10 -> 11 -->
<map id="55">
<loc id="1" x="-206220" y="242808" z="6656" />
<loc id="2" x="-206756" y="242009" z="6584" />
</map>
<!-- Dimensional Wrap Stage 11 -> 12 -->
<map id="56">
<loc id="1" x="-209814" y="239040" z="7752" />
<loc id="2" x="-210343" y="240201" z="7328" />
</map>
<!-- Dimensional Wrap Stage 12 -> 13 -->
<map id="57">
<loc id="1" x="-213566" y="238711" z="7848" />
<loc id="2" x="-214510" y="238914" z="7776" />
</map>
<!-- Dimensional Wrap Stage 13 -> 14 -->
<map id="58">
<loc id="1" x="-218793" y="240333" z="8860" />
<loc id="2" x="-218034" y="241333" z="8440" />
</map>
<!-- Dimensional Wrap Stage 14 -> 15 -->
<map id="59">
<loc id="1" x="-218699" y="242596" z="8859" />
<loc id="2" x="-219093" y="243899" z="8912" />
</map>
<!-- Dimensional Wrap Stage 15 -> 16 -->
<map id="60">
<loc id="1" x="-220117" y="247939" z="9954" />
<loc id="2" x="-219563" y="248742" z="9880" />
</map>
<!-- Dimensional Wrap Stage 16 -> 17 -->
<map id="61">
<loc id="1" x="-216516" y="251710" z="11052" />
<loc id="2" x="-215980" y="250563" z="10624" />
</map>
<!-- Dimensional Wrap Stage 17 -> 18 -->
<map id="62">
<loc id="1" x="-212765" y="252033" z="11144" />
<loc id="2" x="-211808" y="251842" z="11072" />
</map>
<!-- Dimensional Wrap Stage 18 -> 19 -->
<map id="63">
<loc id="1" x="-207530" y="250423" z="12159" />
<loc id="2" x="-208304" y="249410" z="11736" />
</map>
<!-- Dimensional Wrap Stage 19 -> 20 -->
<map id="64">
<loc id="1" x="-207627" y="248155" z="12155" />
<loc id="2" x="-206945" y="246788" z="12213" />
</map>
<!-- Dimensional Wrap Stage 21 -> 22 -->
<map id="65">
<loc id="1" x="-79225" y="-218779" z="5176" />
<loc id="2" x="-79748" y="-217616" z="4760" />
</map>
<!-- Dimensional Wrap Stage 22 -> 23 -->
<map id="66">
<loc id="1" x="-82213" y="-219036" z="5280" />
<loc id="2" x="-83169" y="-218823" z="5208" />
</map>
<!-- Dimensional Wrap Stage 23 -> 24 -->
<map id="67">
<loc id="1" x="-86907" y="-218255" z="6290" />
<loc id="2" x="-86150" y="-217250" z="5872" />
</map>
<!-- Dimensional Wrap Stage 24 -> 25 -->
<map id="68">
<loc id="1" x="-86810" y="-215997" z="6296" />
<loc id="2" x="-86570" y="-214902" z="6344" />
</map>
<!-- Dimensional Wrap Stage 25 -> 26 -->
<map id="69">
<loc id="1" x="-87748" y="-210937" z="7055" />
<loc id="2" x="-87191" y="-210129" z="6984" />
</map>
<!-- Dimensional Wrap Stage 26 -> 27 -->
<map id="70">
<loc id="1" x="-84473" y="-207277" z="8145" />
<loc id="2" x="-83950" y="-208428" z="7728" />
</map>
<!-- Dimensional Wrap Stage 27 -> 28 -->
<map id="71">
<loc id="1" x="-81572" y="-207061" z="8248" />
<loc id="2" x="-80608" y="-207264" z="8176" />
</map>
<!-- Dimensional Wrap Stage 28 -> 29 -->
<map id="72">
<loc id="1" x="-76906" y="-208670" z="9255" />
<loc id="2" x="-77674" y="-209675" z="8840" />
</map>
<!-- Dimensional Wrap Stage 29 -> 30 -->
<map id="73">
<loc id="1" x="-77002" y="-210933" z="9256" />
<loc id="2" x="-77231" y="-212044" z="9312" />
</map>
<!-- Dimensional Wrap Stage 30 -> 31 -->
<map id="74">
<loc id="1" x="-76000" y="-215820" z="10280" />
<loc id="2" x="-76542" y="-216618" z="10200" />
</map>
<!-- Dimensional Wrap Stage 31 -> 32 -->
<map id="75">
<loc id="1" x="-79225" y="-218778" z="11366" />
<loc id="2" x="-79754" y="-217624" z="10952" />
</map>
<!-- Dimensional Wrap Stage 32 -> 33 -->
<map id="76">
<loc id="1" x="-82216" y="-219042" z="11468" />
<loc id="2" x="-83160" y="-218833" z="11392" />
</map>
<!-- Dimensional Wrap Stage 33 -> 34 -->
<map id="77">
<loc id="1" x="-86920" y="-218259" z="12474" />
<loc id="2" x="-86158" y="-217262" z="12058" />
</map>
<!-- Dimensional Wrap Stage 34 -> 35 -->
<map id="78">
<loc id="1" x="-86692" y="-216159" z="12480" />
<loc id="2" x="-86572" y="-214918" z="12536" />
</map>
<!-- Ecnahnted Valley to East/West Enchanted Valley Side -->
<map id="79">
<selector id="0" x="113562" y="46888" z="-4640">

View File

@ -1,7 +1,7 @@
<html><body>Resed:<br>
The Dimensional Warp was created when the energy, which brought Faeron to the Material Realm from the Wind Spirit Realm, accumulated in one place. Only a party of <font color="LEVEL">4 or less</font> and at <font color="LEVEL">Lv. 99</font> may enter. Each team requires at least <font color="LEVEL">3 Warp Crystals</font>.<br>
Rare bracelets and fragments of an ancient tome can be found there. Do you want to go there?<br>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Chat 0">"Take me to the Dimensional Warp."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest DimensionalWrap enterInstance">"Take me to the Dimensional Warp."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 906">"I need a Warp Crystal."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 909">"I want to level up my Dimensional Bracelet."</Button>
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 908">"I want to add abilities to my Dimensional Bracelet."</Button>

Some files were not shown because too many files have changed in this diff Show More