Addition of Crystal Cavern instances.
Author: St3eT Adapted from: L2jUnity free files.
This commit is contained in:
parent
8a8b5c0cb6
commit
e9abca9dbe
73
L2J_Mobius_1.0_Ertheia/dist/game/data/Routes.xml
vendored
73
L2J_Mobius_1.0_Ertheia/dist/game/data/Routes.xml
vendored
@ -2476,6 +2476,79 @@
|
||||
<point X="182894" Y="17577" Z="-10304" delay="2" run="true" />
|
||||
<point X="182426" Y="18210" Z="-10304" delay="3" run="true" />
|
||||
</route>
|
||||
<route name="gd_golem_1" repeat="false" repeatStyle="back">
|
||||
<point X="139821" Y="217257" Z="-11768" delay="0" run="true" />
|
||||
<point X="139925" Y="217250" Z="-11768" delay="0" run="true" />
|
||||
<point X="140050" Y="217251" Z="-11768" delay="0" run="true" />
|
||||
<point X="140137" Y="217244" Z="-11768" delay="0" run="true" />
|
||||
<point X="140156" Y="217190" Z="-11768" delay="0" run="true" />
|
||||
<point X="140170" Y="217104" Z="-11768" delay="0" run="true" />
|
||||
<point X="140198" Y="217003" Z="-11768" delay="0" run="true" />
|
||||
<point X="140224" Y="216897" Z="-11768" delay="0" run="true" />
|
||||
<point X="140287" Y="216756" Z="-11768" delay="0" run="true" />
|
||||
<point X="140352" Y="216600" Z="-11768" delay="0" run="true" />
|
||||
<point X="140468" Y="216459" Z="-11768" delay="0" run="true" />
|
||||
<point X="140594" Y="216334" Z="-11768" delay="0" run="true" />
|
||||
<point X="140703" Y="216212" Z="-11768" delay="0" run="true" />
|
||||
<point X="140805" Y="216144" Z="-11768" delay="0" run="true" />
|
||||
<point X="140916" Y="216065" Z="-11768" delay="0" run="true" />
|
||||
<point X="141076" Y="216000" Z="-11768" delay="0" run="true" />
|
||||
<point X="141206" Y="215970" Z="-11768" delay="0" run="true" />
|
||||
<point X="141343" Y="215974" Z="-11768" delay="0" run="true" />
|
||||
<point X="141502" Y="216016" Z="-11768" delay="0" run="true" />
|
||||
<point X="141654" Y="216106" Z="-11768" delay="0" run="true" />
|
||||
<point X="141805" Y="216240" Z="-11768" delay="0" run="true" />
|
||||
<point X="141942" Y="216354" Z="-11768" delay="0" run="true" />
|
||||
<point X="142038" Y="216472" Z="-11768" delay="0" run="true" />
|
||||
<point X="142151" Y="216643" Z="-11768" delay="0" run="true" />
|
||||
<point X="142240" Y="216782" Z="-11768" delay="0" run="true" />
|
||||
<point X="142284" Y="216894" Z="-11768" delay="0" run="true" />
|
||||
<point X="142326" Y="217024" Z="-11768" delay="0" run="true" />
|
||||
<point X="142345" Y="217100" Z="-11768" delay="0" run="true" />
|
||||
<point X="142364" Y="217166" Z="-11768" delay="0" run="true" />
|
||||
<point X="142397" Y="217238" Z="-11768" delay="0" run="true" />
|
||||
<point X="142481" Y="217250" Z="-11768" delay="0" run="true" />
|
||||
<point X="142608" Y="217249" Z="-11768" delay="0" run="true" />
|
||||
<point X="142664" Y="217269" Z="-11768" delay="0" run="true" />
|
||||
<point X="142939" Y="217270" Z="-11776" delay="10000" run="true" />
|
||||
</route>
|
||||
<route name="gd_golem_2" repeat="false" repeatStyle="back">
|
||||
<point X="142642" Y="217278" Z="-11768" delay="0" run="true" />
|
||||
<point X="142536" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="142457" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="142367" Y="217287" Z="-11768" delay="0" run="true" />
|
||||
<point X="142344" Y="217364" Z="-11768" delay="0" run="true" />
|
||||
<point X="142319" Y="217442" Z="-11768" delay="0" run="true" />
|
||||
<point X="142305" Y="217527" Z="-11768" delay="0" run="true" />
|
||||
<point X="142279" Y="217614" Z="-11768" delay="0" run="true" />
|
||||
<point X="142246" Y="217704" Z="-11768" delay="0" run="true" />
|
||||
<point X="142186" Y="217815" Z="-11768" delay="0" run="true" />
|
||||
<point X="142114" Y="217924" Z="-11768" delay="0" run="true" />
|
||||
<point X="142039" Y="218047" Z="-11768" delay="0" run="true" />
|
||||
<point X="141950" Y="218157" Z="-11768" delay="0" run="true" />
|
||||
<point X="141821" Y="218287" Z="-11768" delay="0" run="true" />
|
||||
<point X="141645" Y="218418" Z="-11768" delay="0" run="true" />
|
||||
<point X="141459" Y="218510" Z="-11768" delay="0" run="true" />
|
||||
<point X="141262" Y="218532" Z="-11768" delay="0" run="true" />
|
||||
<point X="141135" Y="218517" Z="-11768" delay="0" run="true" />
|
||||
<point X="140977" Y="218469" Z="-11768" delay="0" run="true" />
|
||||
<point X="140861" Y="218401" Z="-11768" delay="0" run="true" />
|
||||
<point X="140762" Y="218327" Z="-11768" delay="0" run="true" />
|
||||
<point X="140655" Y="218230" Z="-11768" delay="0" run="true" />
|
||||
<point X="140542" Y="218106" Z="-11768" delay="0" run="true" />
|
||||
<point X="140447" Y="218012" Z="-11768" delay="0" run="true" />
|
||||
<point X="140369" Y="217903" Z="-11768" delay="0" run="true" />
|
||||
<point X="140305" Y="217796" Z="-11768" delay="0" run="true" />
|
||||
<point X="140257" Y="217701" Z="-11768" delay="0" run="true" />
|
||||
<point X="140222" Y="217593" Z="-11768" delay="0" run="true" />
|
||||
<point X="140204" Y="217492" Z="-11768" delay="0" run="true" />
|
||||
<point X="140179" Y="217411" Z="-11768" delay="0" run="true" />
|
||||
<point X="140157" Y="217323" Z="-11768" delay="0" run="true" />
|
||||
<point X="140100" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="139972" Y="217277" Z="-11768" delay="0" run="true" />
|
||||
<point X="139843" Y="217279" Z="-11768" delay="0" run="true" />
|
||||
<point X="139502" Y="217276" Z="-11776" delay="10000" run="true" />
|
||||
</route>
|
||||
<route name="FPC_Giran_Evi" repeat="true" repeatStyle="cycle">
|
||||
<target id="80000" spawnX="83485" spawnY="147998" spawnZ="-3407" />
|
||||
<point X="83485" Y="147998" Z="-3407" delay="10" run="true" /> <!-- Gatekeeper -->
|
||||
|
238
L2J_Mobius_1.0_Ertheia/dist/game/data/instances/CrystalCavernsCoralGarden.xml
vendored
Normal file
238
L2J_Mobius_1.0_Ertheia/dist/game/data/instances/CrystalCavernsCoralGarden.xml
vendored
Normal file
@ -0,0 +1,238 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Crystal Caverns - Coral Garden -->
|
||||
<instance id="165" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="60" empty="3" />
|
||||
<removeBuffs type="ALL" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="142003" y="214496" z="-11600" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="149364" y="173631" z="-920" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Party" showMessageAndHtml="true">
|
||||
<param name="html" value="condNoParty.html" />
|
||||
</condition>
|
||||
<condition type="PartyLeader">
|
||||
<param name="html" value="condNoPartyLeader.html" />
|
||||
</condition>
|
||||
<condition type="GroupMin">
|
||||
<param name="limit" value="2" />
|
||||
</condition>
|
||||
<condition type="GroupMax">
|
||||
<param name="limit" value="7" />
|
||||
</condition>
|
||||
<condition type="Level">
|
||||
<param name="min" value="97" />
|
||||
</condition>
|
||||
<condition type="Distance" />
|
||||
<condition type="Reenter">
|
||||
<param name="instanceId" value="165" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<reenter apply="ON_FINISH">
|
||||
<reset day="MONDAY" hour="6" minute="30" />
|
||||
<reset day="TUESDAY" hour="6" minute="30" />
|
||||
<reset day="WEDNESDAY" hour="6" minute="30" />
|
||||
<reset day="THURSDAY" hour="6" minute="30" />
|
||||
<reset day="FRIDAY" hour="6" minute="30" />
|
||||
<reset day="SATURDAY" hour="6" minute="30" />
|
||||
<reset day="SUNDAY" hour="6" minute="30" />
|
||||
</reenter>
|
||||
<doorlist>
|
||||
<door id="24240021">
|
||||
<openStatus default="close" />
|
||||
</door>
|
||||
<door id="24240024">
|
||||
<openStatus default="open" />
|
||||
</door>
|
||||
<door id="24240025">
|
||||
<openStatus default="open" />
|
||||
</door>
|
||||
<door id="24240026">
|
||||
<openStatus default="close" />
|
||||
</door>
|
||||
</doorlist>
|
||||
<spawnlist>
|
||||
<group name="innadril24_2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_01" minZ="-11812" maxZ="-11612">
|
||||
<node x="140772" y="214027" />
|
||||
<node x="141701" y="214024" />
|
||||
<node x="141722" y="214971" />
|
||||
<node x="140776" y="214973" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="5" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_02" minZ="-11817" maxZ="-11617">
|
||||
<node x="141288" y="215403" />
|
||||
<node x="141740" y="215413" />
|
||||
<node x="141887" y="215959" />
|
||||
<node x="142400" y="216437" />
|
||||
<node x="141647" y="216436" />
|
||||
<node x="141288" y="216181" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="4" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_03m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_03" minZ="-11819" maxZ="-11619">
|
||||
<node x="140792" y="215411" />
|
||||
<node x="141224" y="215411" />
|
||||
<node x="141241" y="216166" />
|
||||
<node x="140860" y="216435" />
|
||||
<node x="140148" y="216438" />
|
||||
<node x="140635" y="215920" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="4" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_04m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_04" minZ="-11816" maxZ="-11616">
|
||||
<node x="140113" y="216495" />
|
||||
<node x="140842" y="216485" />
|
||||
<node x="140659" y="216910" />
|
||||
<node x="140646" y="217244" />
|
||||
<node x="139829" y="217222" />
|
||||
<node x="139829" y="217222" />
|
||||
<node x="139852" y="216817" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_05m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_05" minZ="-11813" maxZ="-11613">
|
||||
<node x="141670" y="216494" />
|
||||
<node x="142425" y="216494" />
|
||||
<node x="142638" y="216831" />
|
||||
<node x="142692" y="217230" />
|
||||
<node x="141859" y="217241" />
|
||||
<node x="141840" y="216891" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_06m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_06" minZ="-11817" maxZ="-11617">
|
||||
<node x="141856" y="217297" />
|
||||
<node x="142687" y="217287" />
|
||||
<node x="142550" y="217912" />
|
||||
<node x="142020" y="218441" />
|
||||
<node x="141567" y="218171" />
|
||||
<node x="141810" y="217710" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_07m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_07" minZ="-11820" maxZ="-11620">
|
||||
<node x="139832" y="217298" />
|
||||
<node x="140644" y="217281" />
|
||||
<node x="140695" y="217709" />
|
||||
<node x="140919" y="218175" />
|
||||
<node x="140469" y="218436" />
|
||||
<node x="139940" y="217889" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_08m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_08" minZ="-11812" maxZ="-11612">
|
||||
<node x="140506" y="218463" />
|
||||
<node x="140950" y="218188" />
|
||||
<node x="141244" y="218401" />
|
||||
<node x="140675" y="218807" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_09m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_09" minZ="-11829" maxZ="-11629">
|
||||
<node x="141540" y="218183" />
|
||||
<node x="142012" y="218480" />
|
||||
<node x="141815" y="218808" />
|
||||
<node x="141271" y="218405" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_10m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_10" minZ="-11815" maxZ="-11615">
|
||||
<node x="141261" y="218427" />
|
||||
<node x="141798" y="218823" />
|
||||
<node x="141732" y="219192" />
|
||||
<node x="140779" y="219201" />
|
||||
<node x="140713" y="218815" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_11m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_11" minZ="-11814" maxZ="-11614">
|
||||
<node x="140749" y="219542" />
|
||||
<node x="141733" y="219539" />
|
||||
<node x="141721" y="220520" />
|
||||
<node x="140746" y="220531" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" count="2" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" count="2" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" count="2" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_12m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_12" minZ="-11815" maxZ="-11615">
|
||||
<node x="142059" y="219549" />
|
||||
<node x="143029" y="219542" />
|
||||
<node x="143030" y="220520" />
|
||||
<node x="142059" y="220531" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" count="2" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" count="2" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" count="3" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_e2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril24_e2422_01" minZ="-11817" maxZ="-11617">
|
||||
<node x="139388" y="217164" />
|
||||
<node x="139588" y="217164" />
|
||||
<node x="139588" y="217364" />
|
||||
<node x="139388" y="217364" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19013" x="139488" y="217264" z="-11817" count="1" /> <!-- Crystalline Golem -->
|
||||
</group>
|
||||
<group name="innadril24_e2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril24_e2422_02" minZ="-11817" maxZ="-11617">
|
||||
<node x="142908" y="217164" />
|
||||
<node x="143108" y="217164" />
|
||||
<node x="143108" y="217364" />
|
||||
<node x="142908" y="217364" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19014" x="143008" y="217264" z="-11817" heading="32768" count="1" /> <!-- Crystalline Golem -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
2511
L2J_Mobius_1.0_Ertheia/dist/game/data/instances/CrystalCavernsEmeraldSquare.xml
vendored
Normal file
2511
L2J_Mobius_1.0_Ertheia/dist/game/data/instances/CrystalCavernsEmeraldSquare.xml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
694
L2J_Mobius_1.0_Ertheia/dist/game/data/instances/CrystalCavernsSteamCorridor.xml
vendored
Normal file
694
L2J_Mobius_1.0_Ertheia/dist/game/data/instances/CrystalCavernsSteamCorridor.xml
vendored
Normal file
@ -0,0 +1,694 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Crystal Caverns - Steam Corridor -->
|
||||
<instance id="164" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="60" empty="3" />
|
||||
<removeBuffs type="ALL" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="144324" y="218207" z="-12000" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="149364" y="173631" z="-920" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Party" showMessageAndHtml="true">
|
||||
<param name="html" value="condNoParty.html" />
|
||||
</condition>
|
||||
<condition type="PartyLeader">
|
||||
<param name="html" value="condNoPartyLeader.html" />
|
||||
</condition>
|
||||
<condition type="GroupMin">
|
||||
<param name="limit" value="2" />
|
||||
</condition>
|
||||
<condition type="GroupMax">
|
||||
<param name="limit" value="7" />
|
||||
</condition>
|
||||
<condition type="Level">
|
||||
<param name="min" value="97" />
|
||||
</condition>
|
||||
<condition type="Distance" />
|
||||
<condition type="Reenter">
|
||||
<param name="instanceId" value="164" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<reenter apply="ON_FINISH">
|
||||
<reset day="MONDAY" hour="6" minute="30" />
|
||||
<reset day="TUESDAY" hour="6" minute="30" />
|
||||
<reset day="WEDNESDAY" hour="6" minute="30" />
|
||||
<reset day="THURSDAY" hour="6" minute="30" />
|
||||
<reset day="FRIDAY" hour="6" minute="30" />
|
||||
<reset day="SATURDAY" hour="6" minute="30" />
|
||||
<reset day="SUNDAY" hour="6" minute="30" />
|
||||
</reenter>
|
||||
<spawnlist>
|
||||
<group name="innadril23_2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_01" minZ="-12178" maxZ="-11678">
|
||||
<node x="144778" y="217940" />
|
||||
<node x="145497" y="217937" />
|
||||
<node x="145510" y="218475" />
|
||||
<node x="144781" y="218469" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="1" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="5"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="1" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="145129" y="218189" z="-12136" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="30" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_02" minZ="-12160" maxZ="-11660">
|
||||
<node x="145563" y="217941" />
|
||||
<node x="146353" y="217943" />
|
||||
<node x="146357" y="218483" />
|
||||
<node x="145572" y="218481" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="4"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="4"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="146016" y="218235" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="34" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_03m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_03" minZ="-12167" maxZ="-11667">
|
||||
<node x="146422" y="217935" />
|
||||
<node x="147125" y="217942" />
|
||||
<node x="147128" y="218482" />
|
||||
<node x="146431" y="218475" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="3" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="5"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="3" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_01"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_03m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_03" minZ="-12167" maxZ="-11667">
|
||||
<node x="146422" y="217935" />
|
||||
<node x="147125" y="217942" />
|
||||
<node x="147128" y="218482" />
|
||||
<node x="146431" y="218475" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="146875" y="218229" z="-12167" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="37" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_04m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_04" minZ="-12160" maxZ="-11660">
|
||||
<node x="147465" y="217937" />
|
||||
<node x="148256" y="217938" />
|
||||
<node x="148259" y="218478" />
|
||||
<node x="147475" y="218477" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="4" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="6"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="4" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="147918" y="218230" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="60" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_05m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_05" minZ="-12166" maxZ="-11666">
|
||||
<node x="148258" y="217940" />
|
||||
<node x="149048" y="217942" />
|
||||
<node x="149051" y="218482" />
|
||||
<node x="148267" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="5" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="10"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="5" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="148710" y="218233" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="64" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_06m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_06" minZ="-12166" maxZ="-11666">
|
||||
<node x="149027" y="217940" />
|
||||
<node x="149818" y="217942" />
|
||||
<node x="149821" y="218482" />
|
||||
<node x="149037" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="6" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="12"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="6" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_02"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_06m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_06" minZ="-12166" maxZ="-11666">
|
||||
<node x="149027" y="217940" />
|
||||
<node x="149818" y="217942" />
|
||||
<node x="149821" y="218482" />
|
||||
<node x="149037" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="149480" y="218233" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="67" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_07m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_07" minZ="-12170" maxZ="-11670">
|
||||
<node x="150145" y="217941" />
|
||||
<node x="150856" y="217941" />
|
||||
<node x="150859" y="218481" />
|
||||
<node x="150155" y="218481" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="5"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="5"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150598" y="218234" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="90" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_08m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_08" minZ="-12170" maxZ="-11670">
|
||||
<node x="150935" y="217936" />
|
||||
<node x="151726" y="217942" />
|
||||
<node x="151729" y="218482" />
|
||||
<node x="150945" y="218476" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="8" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="15"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="8" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="151388" y="218229" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="94" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_09m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_09" minZ="-12170" maxZ="-11670">
|
||||
<node x="151791" y="217952" />
|
||||
<node x="152499" y="217939" />
|
||||
<node x="152502" y="218479" />
|
||||
<node x="151801" y="218492" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="9" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="3"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="9" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_03"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_09m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_09" minZ="-12170" maxZ="-11670">
|
||||
<node x="151791" y="217952" />
|
||||
<node x="152499" y="217939" />
|
||||
<node x="152502" y="218479" />
|
||||
<node x="151801" y="218492" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="152244" y="218245" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="97" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_10m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_10" minZ="-12166" maxZ="-11666">
|
||||
<node x="145650" y="219795" />
|
||||
<node x="146356" y="219796" />
|
||||
<node x="146358" y="220337" />
|
||||
<node x="145652" y="220331" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="10" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="10"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="10" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="145984" y="220051" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="120" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_11m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_11" minZ="-12166" maxZ="-11666">
|
||||
<node x="146468" y="219793" />
|
||||
<node x="147174" y="219794" />
|
||||
<node x="147176" y="220335" />
|
||||
<node x="146470" y="220329" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="11" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="11" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="146802" y="220049" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="124" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_12m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_12" minZ="-12166" maxZ="-11666">
|
||||
<node x="147298" y="219800" />
|
||||
<node x="148004" y="219801" />
|
||||
<node x="148006" y="220342" />
|
||||
<node x="147300" y="220336" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="12" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="12" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_04"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="3"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="12" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_04"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_12m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_12" minZ="-12166" maxZ="-11666">
|
||||
<node x="147298" y="219800" />
|
||||
<node x="148004" y="219801" />
|
||||
<node x="148006" y="220342" />
|
||||
<node x="147300" y="220336" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="147632" y="220056" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="127" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_13m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_13" minZ="-12165" maxZ="-11665">
|
||||
<node x="148361" y="219796" />
|
||||
<node x="149067" y="219797" />
|
||||
<node x="149069" y="220338" />
|
||||
<node x="148363" y="220332" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="15"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="148695" y="220052" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="150" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_14m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_14" minZ="-12165" maxZ="-11665">
|
||||
<node x="149095" y="219796" />
|
||||
<node x="149801" y="219797" />
|
||||
<node x="149803" y="220338" />
|
||||
<node x="149097" y="220332" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="17"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="17"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="149429" y="220052" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="154" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_15m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_15" minZ="-12165" maxZ="-11665">
|
||||
<node x="149865" y="219798" />
|
||||
<node x="150571" y="219799" />
|
||||
<node x="150573" y="220340" />
|
||||
<node x="149867" y="220334" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="15" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="5"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="15" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_05"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_15m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_15" minZ="-12165" maxZ="-11665">
|
||||
<node x="149865" y="219798" />
|
||||
<node x="150571" y="219799" />
|
||||
<node x="150573" y="220340" />
|
||||
<node x="149867" y="220334" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="150199" y="220054" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="157" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_16m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_16" minZ="-12160" maxZ="-11660">
|
||||
<node x="149819" y="215314" />
|
||||
<node x="150580" y="215309" />
|
||||
<node x="150592" y="215840" />
|
||||
<node x="149834" y="215842" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="16" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="20"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="16" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150198" y="215606" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="180" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_17m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_17" minZ="-12160" maxZ="-11660">
|
||||
<node x="150589" y="215313" />
|
||||
<node x="151350" y="215308" />
|
||||
<node x="151362" y="215839" />
|
||||
<node x="150604" y="215841" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="17" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="5"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="17" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150968" y="215605" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="184" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_18m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_18" minZ="-12160" maxZ="-11660">
|
||||
<node x="151375" y="215317" />
|
||||
<node x="152136" y="215312" />
|
||||
<node x="152148" y="215843" />
|
||||
<node x="151390" y="215845" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="18" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="20"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="18" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_05"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_18m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_18" minZ="-12160" maxZ="-11660">
|
||||
<node x="151375" y="215317" />
|
||||
<node x="152136" y="215312" />
|
||||
<node x="152148" y="215843" />
|
||||
<node x="151390" y="215845" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="151754" y="215609" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="187" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_mb2422m1">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422" minZ="-12140" maxZ="-11740">
|
||||
<node x="154093" y="215667" />
|
||||
<node x="153813" y="215602" />
|
||||
<node x="153627" y="215436" />
|
||||
<node x="153537" y="215291" />
|
||||
<node x="153506" y="215131" />
|
||||
<node x="153555" y="214913" />
|
||||
<node x="153696" y="214713" />
|
||||
<node x="153892" y="214590" />
|
||||
<node x="154087" y="214538" />
|
||||
<node x="154301" y="214602" />
|
||||
<node x="154479" y="214720" />
|
||||
<node x="154601" y="214903" />
|
||||
<node x="154646" y="215119" />
|
||||
<node x="154613" y="215288" />
|
||||
<node x="154550" y="215411" />
|
||||
<node x="154462" y="215527" />
|
||||
<node x="154304" y="215624" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="154078" y="215125" z="-12140" respawnTime="1min" count="1" /> <!-- Fire Region -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt1m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt1" minZ="-12145" maxZ="-11945">
|
||||
<node x="146993" y="218107" />
|
||||
<node x="147193" y="218107" />
|
||||
<node x="147193" y="218307" />
|
||||
<node x="146993" y="218307" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="147148" y="218208" z="-12112" heading="32624" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt2m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt2" minZ="-12147" maxZ="-11947">
|
||||
<node x="149740" y="218107" />
|
||||
<node x="149940" y="218107" />
|
||||
<node x="149940" y="218307" />
|
||||
<node x="149740" y="218307" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="149818" y="218208" z="-12096" heading="32496" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt3m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt3" minZ="-12141" maxZ="-11941">
|
||||
<node x="152440" y="218104" />
|
||||
<node x="152640" y="218104" />
|
||||
<node x="152640" y="218304" />
|
||||
<node x="152440" y="218304" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="152538" y="218208" z="-12096" heading="32552" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt4m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt4" minZ="-12146" maxZ="-11946">
|
||||
<node x="147916" y="219968" />
|
||||
<node x="148116" y="219968" />
|
||||
<node x="148116" y="220168" />
|
||||
<node x="147916" y="220168" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="148022" y="220069" z="-12112" heading="-32568" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt5m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt5" minZ="-12144" maxZ="-11944">
|
||||
<node x="150613" y="219960" />
|
||||
<node x="150813" y="219960" />
|
||||
<node x="150813" y="220160" />
|
||||
<node x="150613" y="220160" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="150699" y="220064" z="-12112" heading="-32696" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt6m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt6" minZ="-12143" maxZ="-11943">
|
||||
<node x="152084" y="215474" />
|
||||
<node x="152284" y="215474" />
|
||||
<node x="152284" y="215674" />
|
||||
<node x="152084" y="215674" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="152214" y="215586" z="-12112" heading="32568" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
@ -0,0 +1,215 @@
|
||||
/*
|
||||
* 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 ai.areas.Parnassus.EntrancePortalToCrystalCaverns;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.OnEventTrigger;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
import instances.CrystalCaverns.CrystalCavernsCoralGarden;
|
||||
import instances.CrystalCaverns.CrystalCavernsEmeraldSquare;
|
||||
import instances.CrystalCaverns.CrystalCavernsSteamCorridor;
|
||||
|
||||
/**
|
||||
* Entrance Portal to Crystal Caverns AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class EntrancePortalToCrystalCaverns extends AbstractNpcAI
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
// Misc
|
||||
private static final int EMERALD_SQUARE_TEMPLATE_ID = 163;
|
||||
private static final int STEAM_CORRIDOR_TEMPLATE_ID = 164;
|
||||
private static final int CORAL_GARDEN_TEMPLATE_ID = 165;
|
||||
private static final int PRISON_ENTRACE_TRIGGER_1 = 24230010;
|
||||
private static final int PRISON_ENTRACE_TRIGGER_2 = 24230012;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_1 = 24230014;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_2 = 24230016;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_3 = 24230018;
|
||||
|
||||
private EntrancePortalToCrystalCaverns()
|
||||
{
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addFirstTalkId(CAVERNS_ENTRACE);
|
||||
addSpawnId(CAVERNS_ENTRACE);
|
||||
addSeeCreatureId(CAVERNS_ENTRACE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
Quest instanceScript = null;
|
||||
|
||||
switch (getCurrentInstanceTemplateId())
|
||||
{
|
||||
case EMERALD_SQUARE_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsEmeraldSquare.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
case STEAM_CORRIDOR_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsSteamCorridor.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
case CORAL_GARDEN_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsCoralGarden.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (instanceScript != null)
|
||||
{
|
||||
instanceScript.notifyEvent(event, npc, player);
|
||||
}
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
return "EntrancePortal_" + getCurrentInstanceTemplateId() + ".html";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
getTimers().addRepeatingTimer("LOOP_TIMER", 10000, npc, null);
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("LOOP_TIMER"))
|
||||
{
|
||||
final int currentTemplateId = getCurrentInstanceTemplateId();
|
||||
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, PlayerInstance.class, 500, p ->
|
||||
{
|
||||
updateTriggersForPlayer(player, currentTemplateId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSeeCreature(Npc npc, Creature creature, boolean isSummon)
|
||||
{
|
||||
if (creature.isPlayer())
|
||||
{
|
||||
creature.getActingPlayer().sendPacket(new OnEventTrigger(PRISON_ENTRACE_TRIGGER_1, true));
|
||||
creature.getActingPlayer().sendPacket(new OnEventTrigger(PRISON_ENTRACE_TRIGGER_2, true));
|
||||
updateTriggersForPlayer(creature.getActingPlayer(), getCurrentInstanceTemplateId());
|
||||
}
|
||||
return super.onSeeCreature(npc, creature, isSummon);
|
||||
}
|
||||
|
||||
public void updateTriggersForPlayer(PlayerInstance player, int currentTemplateId)
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_1, false));
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_2, false));
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_3, false));
|
||||
|
||||
switch (currentTemplateId)
|
||||
{
|
||||
case EMERALD_SQUARE_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_1, true));
|
||||
break;
|
||||
}
|
||||
case STEAM_CORRIDOR_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_2, true));
|
||||
break;
|
||||
}
|
||||
case CORAL_GARDEN_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_3, true));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getCurrentInstanceTemplateId()
|
||||
{
|
||||
final int day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
|
||||
final int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
|
||||
int templateId = -1;
|
||||
|
||||
switch (day)
|
||||
{
|
||||
case Calendar.MONDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.TUESDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? CORAL_GARDEN_TEMPLATE_ID : EMERALD_SQUARE_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.WEDNESDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? STEAM_CORRIDOR_TEMPLATE_ID : CORAL_GARDEN_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.THURSDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.FRIDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? CORAL_GARDEN_TEMPLATE_ID : EMERALD_SQUARE_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.SATURDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? STEAM_CORRIDOR_TEMPLATE_ID : CORAL_GARDEN_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.SUNDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return templateId;
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new EntrancePortalToCrystalCaverns();
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Emerald Square</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Steam Corridor</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Coral Garden</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,253 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.WalkingManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.Spawn;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Coral Garden instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsCoralGarden extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int MICHAELA_NORMAL = 25799;
|
||||
private static final int MICHAELA_WISE = 26116;
|
||||
private static final int MICHAELA_WEALTHY = 26115;
|
||||
private static final int MICHAELA_ARMED = 26114;
|
||||
private static final int GOLEM_1 = 19013; // Crystalline Golem
|
||||
private static final int GOLEM_2 = 19014; // Crystalline Golem
|
||||
// Location
|
||||
private static final Location BOSS_LOC = new Location(144307, 220032, -11824);
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 165;
|
||||
private static final int BOSS_DOOR_ID = 24240026;
|
||||
private static final int PLAYER_MAX_DISTANCE = 250;
|
||||
|
||||
public CrystalCavernsCoralGarden()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addFirstTalkId(GOLEM_1, GOLEM_2);
|
||||
addKillId(MICHAELA_NORMAL, MICHAELA_WISE, MICHAELA_WEALTHY, MICHAELA_ARMED);
|
||||
addAttackId(MICHAELA_NORMAL, MICHAELA_WISE, MICHAELA_WEALTHY, MICHAELA_ARMED);
|
||||
addRouteFinishedId(GOLEM_1, GOLEM_2);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "SUCCESS_TIMER":
|
||||
{
|
||||
showOnScreenMsg(instance, NpcStringId.GOLEM_LOCATION_SUCCESSFUL_ENTRY_ACCESSED, ExShowScreenMessage.MIDDLE_CENTER, 5000);
|
||||
break;
|
||||
}
|
||||
case "LOOP_TIMER":
|
||||
{
|
||||
player = npcVars.getObject("PLAYER_OBJECT", PlayerInstance.class);
|
||||
|
||||
if ((player != null) && (npc.calculateDistance3D(player) > PLAYER_MAX_DISTANCE) && npcVars.getBoolean("NPC_FOLLOWING", true))
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
addMoveToDesire(npc, new Location(npc.getX() + getRandom(-100, 100), npc.getY() + getRandom(-150, 150), npc.getZ()), 23);
|
||||
npc.setRunning();
|
||||
npcVars.set("NPC_FOLLOWING", false);
|
||||
getTimers().cancelTimer("LOOP_TIMER", npc, null);
|
||||
getTimers().addTimer("FAIL_TIMER", 5000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "FAIL_TIMER":
|
||||
{
|
||||
final Spawn spawn = npc.getSpawn();
|
||||
|
||||
if (!npcVars.getBoolean("NPC_FOLLOWING", true))
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
npc.setWalking();
|
||||
npc.teleToLocation(npc.getSpawn().getX(), npc.getSpawn().getY(), npc.getSpawn().getZ());
|
||||
npc.setScriptValue(0);
|
||||
npc.setNameString(null);
|
||||
npc.setTitleString(null);
|
||||
npc.setTitle(null);
|
||||
npc.broadcastInfo();
|
||||
}
|
||||
npcVars.set("CAN_CALL_MONSTERS", ((spawn.getX() - ((npc.getX() * spawn.getX()) - npc.getX())) + (spawn.getY() - (npc.getY() * spawn.getY()) - npc.getY())) > (200 * 200));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.getVariables().set("PLAYER_OBJECT", player);
|
||||
npc.setNameString(NpcStringId.TRAITOR_CRYSTALLINE_GOLEM);
|
||||
npc.setTitleString(NpcStringId.GIVEN_TO_S1);
|
||||
npc.setTitle(player.getName());
|
||||
npc.broadcastInfo();
|
||||
WalkingManager.getInstance().startMoving(npc, npc.getId() == GOLEM_1 ? "gd_golem_1" : "gd_golem_2");
|
||||
getTimers().addRepeatingTimer("LOOP_TIMER", 500, npc, null);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRouteFinished(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (instance != null)
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
showOnScreenMsg(instance, NpcStringId.GOLEM_ENTERED_THE_REQUIRED_ZONE, ExShowScreenMessage.MIDDLE_CENTER, 5000);
|
||||
npc.deleteMe();
|
||||
|
||||
if (instance.getAliveNpcs(GOLEM_1, GOLEM_2).isEmpty())
|
||||
{
|
||||
instance.openCloseDoor(BOSS_DOOR_ID, true);
|
||||
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = MICHAELA_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = MICHAELA_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = MICHAELA_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = MICHAELA_ARMED;
|
||||
}
|
||||
|
||||
final Npc boss = addSpawn(bossId, BOSS_LOC, false, 0, false, instance.getId());
|
||||
getTimers().addTimer("SUCCESS_TIMER", 5000, boss, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MICHAELA_NORMAL:
|
||||
case MICHAELA_WISE:
|
||||
case MICHAELA_WEALTHY:
|
||||
case MICHAELA_ARMED:
|
||||
{
|
||||
instance.finishInstance();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MICHAELA_NORMAL:
|
||||
case MICHAELA_WISE:
|
||||
case MICHAELA_WEALTHY:
|
||||
case MICHAELA_ARMED:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
instance.openCloseDoor(BOSS_DOOR_ID, false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsCoralGarden();
|
||||
}
|
||||
}
|
@ -0,0 +1,424 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Emerald Square instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsEmeraldSquare extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int VERIDAN_NORMAL = 25796;
|
||||
private static final int VERIDAN_WISE = 26107;
|
||||
private static final int VERIDAN_WEALTHY = 26106;
|
||||
private static final int VERIDAN_ARMED = 26105;
|
||||
private static final int WATER_CANNON = 19008;
|
||||
private static final int WATER_CANNON_SKILL = 19009;
|
||||
private static final int STRONGHOLD_PROTECTOR = 23012;
|
||||
private static final int SQUARE_INTRUDER = 23010;
|
||||
private static final int SQUARE_ATTACKER = 23011;
|
||||
// Skills
|
||||
private static final SkillHolder DESTROY_SKILL = new SkillHolder(12003, 1);
|
||||
private static final SkillHolder WATER_CANNON_SKILL_ATTACK = new SkillHolder(14179, 1);
|
||||
// Locations
|
||||
private static final Location[] BOSS_SPAWNS =
|
||||
{
|
||||
new Location(152745, 145957, -12584, 16446),
|
||||
new Location(152816, 145968, -12633, 16446),
|
||||
};
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 163;
|
||||
private static final int RAID_DOOR_1 = 24220005;
|
||||
private static final int RAID_DOOR_2 = 24220006;
|
||||
|
||||
public CrystalCavernsEmeraldSquare()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addSpawnId(WATER_CANNON);
|
||||
addKillId(WATER_CANNON, VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED);
|
||||
addAttackId(WATER_CANNON, VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED);
|
||||
addSpellFinishedId(WATER_CANNON_SKILL);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
setCreatureSeeId(this::onCreatureSee, WATER_CANNON);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "HP_REGEN_TIMER":
|
||||
{
|
||||
int value = ((baseId == 5) || (baseId == 6)) ? 5 : baseId;
|
||||
npc.getStat().addFixedValue(Stats.REGENERATE_HP_RATE, Double.valueOf(value * 1000));
|
||||
break;
|
||||
}
|
||||
case "SUPPORT_SPAWN_TIMER":
|
||||
{
|
||||
int supportVal = npcVars.getInt("SUPPORT_VALUE", 0);
|
||||
|
||||
if (supportVal > 3)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((supportVal == 0) || (supportVal == 1) || (supportVal == 2))
|
||||
{
|
||||
final String spawnName = npcParams.getString("SupportMaker" + (supportVal + 1), null);
|
||||
if (spawnName != null)
|
||||
{
|
||||
instance.spawnGroup(spawnName);
|
||||
}
|
||||
npcVars.increaseInt("SUPPORT_VALUE", 1);
|
||||
}
|
||||
|
||||
if (!npcVars.getBoolean("PREVIOUS_BASE_DESTROYED", false))
|
||||
{
|
||||
getTimers().addTimer("SUPPORT_SPAWN_TIMER", 60000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "CANNON_LOOP_ATTACK":
|
||||
{
|
||||
if (npc.getCurrentHpPercent() > 30)
|
||||
{
|
||||
if (npcVars.getBoolean("IS_DESTROY_ACTIVATED", false) || (getRandom(10) < 2))
|
||||
{
|
||||
final Npc cannonSkill = addSpawn(WATER_CANNON_SKILL, npc, true, 0, false, instance.getId());
|
||||
addSkillCastDesire(cannonSkill, cannonSkill, WATER_CANNON_SKILL_ATTACK, 23);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SUICIDE_TIMER":
|
||||
{
|
||||
npc.doDie(null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VERIDAN_WISE:
|
||||
case VERIDAN_WEALTHY:
|
||||
case VERIDAN_ARMED:
|
||||
{
|
||||
if (!npcVars.getBoolean("CLOSED_DOORS", false))
|
||||
{
|
||||
npcVars.set("CLOSED_DOORS", true);
|
||||
instance.openCloseDoor(RAID_DOOR_2, false);
|
||||
}
|
||||
}
|
||||
case WATER_CANNON:
|
||||
{
|
||||
if ((skill != null) && (skill.getId() == DESTROY_SKILL.getSkillId()) && !npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npcVars.set("IS_DESTROY_ACTIVATED", true);
|
||||
npc.setDisplayEffect(2);
|
||||
getTimers().addTimer("SUICIDE_TIMER", 60000, npc, null);
|
||||
}
|
||||
|
||||
if (npc.getCurrentHpPercent() < 30)
|
||||
{
|
||||
if (!npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npc.setDisplayEffect(3);
|
||||
|
||||
}
|
||||
}
|
||||
else if (!npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npc.setDisplayEffect(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VERIDAN_NORMAL:
|
||||
case VERIDAN_WISE:
|
||||
case VERIDAN_WEALTHY:
|
||||
case VERIDAN_ARMED:
|
||||
{
|
||||
if (instance.getAliveNpcs(VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED).isEmpty())
|
||||
{
|
||||
instance.finishInstance();
|
||||
}
|
||||
else
|
||||
{
|
||||
instance.setReenterTime();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WATER_CANNON:
|
||||
{
|
||||
npc.setDisplayEffect(4);
|
||||
showOnScreenMsg(instance, NpcStringId.SUCCESSFUL_DESTRUCTION_OF_STRONGHOLD_S1, ExShowScreenMessage.MIDDLE_CENTER, 4000, String.valueOf(npc.getParameters().getInt("base_id", -1)));
|
||||
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, MonsterInstance.class, 400, monster ->
|
||||
{
|
||||
if ((monster.getId() == STRONGHOLD_PROTECTOR) || (monster.getId() == SQUARE_INTRUDER) || (monster.getId() == SQUARE_ATTACKER))
|
||||
{
|
||||
monster.doDie(null);
|
||||
}
|
||||
});
|
||||
|
||||
instance.getAliveNpcs(WATER_CANNON).forEach(cannon ->
|
||||
{
|
||||
final int cannonBaseId = cannon.getParameters().getInt("base_id", -1);
|
||||
|
||||
switch (baseId)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
if (cannonBaseId == 2)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (cannonBaseId == 3)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
if (cannonBaseId == 4)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
if ((cannonBaseId == 5) || (cannonBaseId == 6))
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
case 6:
|
||||
{
|
||||
if (cannonBaseId == 7)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
if ((cannonBaseId == 8) || (cannonBaseId == 9))
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if ((baseId == 8) || (baseId == 9))
|
||||
{
|
||||
instance.getParameters().increaseInt("MAIN_TARGETS_KILLED", 0, 1);
|
||||
|
||||
if (instance.getParameters().getInt("MAIN_TARGETS_KILLED", 0) == 2)
|
||||
{
|
||||
showOnScreenMsg(instance, NpcStringId.SUCCESSFUL_DESTRUCTION_OF_STRONGHOLD_ENTRY_ACCESSED, ExShowScreenMessage.MIDDLE_CENTER, 4000);
|
||||
instance.openCloseDoor(RAID_DOOR_1, true);
|
||||
instance.openCloseDoor(RAID_DOOR_2, true);
|
||||
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = VERIDAN_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = VERIDAN_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = VERIDAN_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = VERIDAN_ARMED;
|
||||
}
|
||||
|
||||
for (Location loc : BOSS_SPAWNS)
|
||||
{
|
||||
addSpawn(bossId, loc, false, 0, false, instance.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpellFinished(Npc npc, PlayerInstance player, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance) && (npc.getId() == WATER_CANNON_SKILL) && (skill.getId() == WATER_CANNON_SKILL_ATTACK.getSkillId()))
|
||||
{
|
||||
npc.deleteMe();
|
||||
}
|
||||
return super.onSpellFinished(npc, player, skill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case WATER_CANNON:
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
if (baseId != 1)
|
||||
{
|
||||
npc.setTargetable(false);
|
||||
}
|
||||
|
||||
getTimers().addTimer("HP_REGEN_TIMER", 10000, npc, null);
|
||||
|
||||
if (baseId > 0)
|
||||
{
|
||||
getTimers().addTimer("SUPPORT_SPAWN_TIMER", (baseId * 60) * 1000, npc, null);
|
||||
}
|
||||
npc.initSeenCreatures();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
public void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final Creature creature = event.getSeen();
|
||||
final Npc npc = (Npc) event.getSeer();
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
|
||||
if ((world != null) && creature.isPlayer() && npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.setDisplayEffect(1);
|
||||
getTimers().addRepeatingTimer("CANNON_LOOP_ATTACK", 1000, npc, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsEmeraldSquare();
|
||||
}
|
||||
}
|
@ -0,0 +1,408 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.ChatType;
|
||||
import org.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneType;
|
||||
import org.l2jmobius.gameserver.model.zone.type.TeleportZone;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Steam Corridor instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsSteamCorridor extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int KECHI_NORMAL = 25797;
|
||||
private static final int KECHI_WISE = 26113;
|
||||
private static final int KECHI_WEALTHY = 26112;
|
||||
private static final int KECHI_ARMED = 26111;
|
||||
private static final int VICIOUS_DUELER = 23014;
|
||||
private static final int VICIOUS_WARRIOR = 23016;
|
||||
private static final int VICIOUS_SWORDSMAN = 23015;
|
||||
private static final int SPIRIT_PROTECTOR = 23013;
|
||||
private static final int FIRE_REGION = 19161;
|
||||
private static final int PLAYER_DETECTOR = 19075;
|
||||
private static final int TRAP_1 = 19011;
|
||||
private static final int TRAP_2 = 19012;
|
||||
// Skills
|
||||
private static final SkillHolder FIRE_SKILL_1 = new SkillHolder(14373, 1);
|
||||
private static final SkillHolder FIRE_SKILL_2 = new SkillHolder(14373, 2);
|
||||
private static final SkillHolder FIRE_SKILL_3 = new SkillHolder(14197, 1);
|
||||
private static final SkillHolder TRAP_SKILL_1 = new SkillHolder(14180, 1);
|
||||
private static final SkillHolder TRAP_SKILL_2 = new SkillHolder(14181, 1);
|
||||
private static final SkillHolder TRAP_SKILL_3 = new SkillHolder(14372, 1);
|
||||
// Location
|
||||
private static final Location BOSS_LOC = new Location(154078, 215125, -12140);
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 164;
|
||||
|
||||
public CrystalCavernsSteamCorridor()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addAttackId(TRAP_1, TRAP_2);
|
||||
addKillId(VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN, KECHI_NORMAL, KECHI_WISE, KECHI_WEALTHY, KECHI_ARMED);
|
||||
addSpawnId(SPIRIT_PROTECTOR, VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN, FIRE_REGION, PLAYER_DETECTOR);
|
||||
addEventReceivedId(SPIRIT_PROTECTOR, VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN);
|
||||
addInstanceCreatedId(TEMPLATE_ID);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
setCreatureSeeId(this::onCreatureSee, PLAYER_DETECTOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "FIRE_REGION_TIMER_1":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_1, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_2", 10000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "FIRE_REGION_TIMER_2":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_2, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_3", 10000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "FIRE_REGION_TIMER_3":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_3, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_3", 1000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "TRAP_REACT_TIMER":
|
||||
{
|
||||
final int timer = npcVars.increaseInt("TIMER_VAL", -1);
|
||||
if (timer > 0)
|
||||
{
|
||||
npc.broadcastSay(ChatType.NPC_GENERAL, " " + timer);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (npc.getId() == TRAP_1)
|
||||
{
|
||||
addSkillCastDesire(npc, npc, (getRandom(10) < 8 ? TRAP_SKILL_1 : TRAP_SKILL_3), 23);
|
||||
}
|
||||
else if (npc.getId() == TRAP_2)
|
||||
{
|
||||
addSkillCastDesire(npc, npc, (getRandom(10) < 8 ? TRAP_SKILL_2 : TRAP_SKILL_3), 23);
|
||||
}
|
||||
}
|
||||
getTimers().addTimer("TRAP_REACT_TIMER", 1000, npc, null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceCreated(Instance instance, PlayerInstance player)
|
||||
{
|
||||
instance.setStatus(1);
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
final ZoneType zone = ZoneManager.getInstance().getZoneByName("24_24_fire_telezone_0" + i, TeleportZone.class);
|
||||
if (zone != null)
|
||||
{
|
||||
zone.setEnabled(false, instance.getId());
|
||||
}
|
||||
}
|
||||
super.onInstanceCreated(instance, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case SPIRIT_PROTECTOR:
|
||||
case VICIOUS_DUELER:
|
||||
case VICIOUS_WARRIOR:
|
||||
case VICIOUS_SWORDSMAN:
|
||||
{
|
||||
npc.setTargetable(false);
|
||||
npc.disableCoreAI(true);
|
||||
npc.setInvisible(true);
|
||||
break;
|
||||
}
|
||||
case FIRE_REGION:
|
||||
{
|
||||
final int timeLimit = npcParams.getInt("Limit_Time", 0);
|
||||
if (timeLimit > 0)
|
||||
{
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_1", ((timeLimit * 30) * 100), npc, null);
|
||||
}
|
||||
npc.setTargetable(false);
|
||||
npc.setIsInvul(true);
|
||||
npc.setRandomAnimation(false);
|
||||
npc.setRandomWalking(false);
|
||||
npc.disableCoreAI(true);
|
||||
break;
|
||||
}
|
||||
case PLAYER_DETECTOR:
|
||||
{
|
||||
npc.initSeenCreatures();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onEventReceived(String eventName, Npc sender, Npc receiver, WorldObject reference)
|
||||
{
|
||||
final Instance instance = receiver.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = receiver.getParameters();
|
||||
|
||||
if (eventName.equals(String.valueOf(24220005 + npcParams.getInt("Terri_ID", 0))))
|
||||
{
|
||||
receiver.setTargetable(true);
|
||||
receiver.disableCoreAI(false);
|
||||
receiver.setInvisible(false);
|
||||
}
|
||||
}
|
||||
return super.onEventReceived(eventName, sender, receiver, reference);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case TRAP_1:
|
||||
case TRAP_2:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
getTimers().addTimer("TRAP_REACT_TIMER", 1000, npc, null);
|
||||
npc.setScriptValue(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int killTarget = instance.getParameters().getInt("KILL_TARGET", 5);
|
||||
int currentKillCount = instance.getParameters().getInt("KILL_COUNT", 0);
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VICIOUS_DUELER:
|
||||
case VICIOUS_WARRIOR:
|
||||
case VICIOUS_SWORDSMAN:
|
||||
{
|
||||
if (npcParams.getInt("last_checker", 0) == 1)
|
||||
{
|
||||
currentKillCount = instance.getParameters().increaseInt("KILL_COUNT", 0, 1);
|
||||
|
||||
if (currentKillCount >= killTarget)
|
||||
{
|
||||
final ZoneType zone = ZoneManager.getInstance().getZoneByName(npc.getParameters().getString("AreaTeleName"), TeleportZone.class);
|
||||
if (zone != null)
|
||||
{
|
||||
zone.setEnabled(true, instance.getId());
|
||||
showOnScreenMsg(instance, NpcStringId.THE_PORTAL_TO_THE_NEXT_ROOM_IS_NOW_OPEN, ExShowScreenMessage.MIDDLE_CENTER, 4000);
|
||||
instance.spawnGroup("innadril23_mb2422_pt" + instance.getStatus() + "m1");
|
||||
instance.getParameters().set("KILL_COUNT", 0);
|
||||
|
||||
switch (instance.getStatus())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 12);
|
||||
instance.setStatus(2);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 3);
|
||||
instance.setStatus(3);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 18);
|
||||
instance.setStatus(4);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 5);
|
||||
instance.setStatus(5);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 20);
|
||||
instance.setStatus(6);
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = KECHI_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = KECHI_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = KECHI_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = KECHI_ARMED;
|
||||
}
|
||||
|
||||
addSpawn(bossId, BOSS_LOC, false, 0, false, instance.getId());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER.warning("Cannot find teleport zone for Crystal Cavern: Steam Corridor instance!!!");
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case KECHI_NORMAL:
|
||||
case KECHI_WISE:
|
||||
case KECHI_WEALTHY:
|
||||
case KECHI_ARMED:
|
||||
{
|
||||
instance.finishInstance();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
private void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final Creature creature = event.getSeen();
|
||||
final Npc npc = (Npc) event.getSeer();
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
|
||||
if (isInInstance(instance) && creature.isPlayer())
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case PLAYER_DETECTOR:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.broadcastEvent(String.valueOf(24220005 + npcParams.getInt("Terri_ID", 0)), 2000, null);
|
||||
|
||||
for (int i = 0; i < getRandom(5); i++)
|
||||
{
|
||||
final Npc trap = addSpawn(((npcParams.getInt("MobType", 0) == 0) ? TRAP_1 : TRAP_2), npc, true, 0, false, instance.getId());
|
||||
trap.getVariables().set("TIMER_VAL", 4);
|
||||
}
|
||||
npc.deleteMe();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsSteamCorridor();
|
||||
}
|
||||
}
|
3
L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/instances/CrystalCaverns/condNoParty.html
vendored
Normal file
3
L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/instances/CrystalCaverns/condNoParty.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Crystal Caverns Admission Portal:<br>
|
||||
You must be in a party to enter.
|
||||
</body></html>
|
@ -0,0 +1,3 @@
|
||||
<html><body>Crystal Caverns Admission Portal:<br>
|
||||
The leader of the party should try to enter.
|
||||
</body></html>
|
@ -366,7 +366,7 @@
|
||||
<height normal="13" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="19013" level="96" type="Npc" name="Crystalline Golem">
|
||||
<npc id="19013" level="96" type="FriendlyNpc" name="Crystalline Golem" usingServerSideTitle="true">
|
||||
<!-- AUTO GENERATED NPC TODO: FIX IT -->
|
||||
<parameters>
|
||||
<skill name="Link_Skill_01" id="14283" level="1" />
|
||||
@ -403,7 +403,7 @@
|
||||
<height normal="47" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="19014" level="96" type="Npc" name="Crystalline Golem">
|
||||
<npc id="19014" level="96" type="FriendlyNpc" name="Crystalline Golem" usingServerSideTitle="true">
|
||||
<!-- AUTO GENERATED NPC TODO: FIX IT -->
|
||||
<parameters>
|
||||
<skill name="Link_Skill_01" id="14283" level="1" />
|
||||
|
@ -154,6 +154,72 @@
|
||||
<node X="108616" Y="-41676" />
|
||||
<node X="108816" Y="-40776" />
|
||||
<node X="107856" Y="-40652" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_01" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="147444" />
|
||||
<stat name="oustY" val="218208" />
|
||||
<stat name="oustZ" val="-12117" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="147204" Y="218138" />
|
||||
<node X="147200" Y="218279" />
|
||||
<node X="147138" Y="218278" />
|
||||
<node X="147133" Y="218135" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_02" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="150143" />
|
||||
<stat name="oustY" val="218205" />
|
||||
<stat name="oustZ" val="-12121" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="149886" Y="218138" />
|
||||
<node X="149884" Y="218278" />
|
||||
<node X="149822" Y="218274" />
|
||||
<node X="149833" Y="218135" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_03" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="145610" />
|
||||
<stat name="oustY" val="220065" />
|
||||
<stat name="oustZ" val="-12106" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="152585" Y="218139" />
|
||||
<node X="152579" Y="218276" />
|
||||
<node X="152514" Y="218272" />
|
||||
<node X="152521" Y="218134" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_04" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="148309" />
|
||||
<stat name="oustY" val="220064" />
|
||||
<stat name="oustZ" val="-12118" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="148064" Y="219993" />
|
||||
<node X="148061" Y="220133" />
|
||||
<node X="147999" Y="220129" />
|
||||
<node X="148007" Y="219994" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_05" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="149761" />
|
||||
<stat name="oustY" val="215582" />
|
||||
<stat name="oustZ" val="-12104" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="150747" Y="219991" />
|
||||
<node X="150748" Y="220132" />
|
||||
<node X="150688" Y="220134" />
|
||||
<node X="150697" Y="219994" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_06" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="153400" />
|
||||
<stat name="oustY" val="215138" />
|
||||
<stat name="oustZ" val="-12102" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="152267" Y="215518" />
|
||||
<node X="152258" Y="215654" />
|
||||
<node X="152173" Y="215653" />
|
||||
<node X="152180" Y="215514" />
|
||||
</zone>
|
||||
<zone name="26_20_orbis_enter" type="TeleportZone" shape="NPoly" minZ="-458" maxZ="-158">
|
||||
<stat name="oustX" val="213983" />
|
||||
|
@ -2476,6 +2476,79 @@
|
||||
<point X="182894" Y="17577" Z="-10304" delay="2" run="true" />
|
||||
<point X="182426" Y="18210" Z="-10304" delay="3" run="true" />
|
||||
</route>
|
||||
<route name="gd_golem_1" repeat="false" repeatStyle="back">
|
||||
<point X="139821" Y="217257" Z="-11768" delay="0" run="true" />
|
||||
<point X="139925" Y="217250" Z="-11768" delay="0" run="true" />
|
||||
<point X="140050" Y="217251" Z="-11768" delay="0" run="true" />
|
||||
<point X="140137" Y="217244" Z="-11768" delay="0" run="true" />
|
||||
<point X="140156" Y="217190" Z="-11768" delay="0" run="true" />
|
||||
<point X="140170" Y="217104" Z="-11768" delay="0" run="true" />
|
||||
<point X="140198" Y="217003" Z="-11768" delay="0" run="true" />
|
||||
<point X="140224" Y="216897" Z="-11768" delay="0" run="true" />
|
||||
<point X="140287" Y="216756" Z="-11768" delay="0" run="true" />
|
||||
<point X="140352" Y="216600" Z="-11768" delay="0" run="true" />
|
||||
<point X="140468" Y="216459" Z="-11768" delay="0" run="true" />
|
||||
<point X="140594" Y="216334" Z="-11768" delay="0" run="true" />
|
||||
<point X="140703" Y="216212" Z="-11768" delay="0" run="true" />
|
||||
<point X="140805" Y="216144" Z="-11768" delay="0" run="true" />
|
||||
<point X="140916" Y="216065" Z="-11768" delay="0" run="true" />
|
||||
<point X="141076" Y="216000" Z="-11768" delay="0" run="true" />
|
||||
<point X="141206" Y="215970" Z="-11768" delay="0" run="true" />
|
||||
<point X="141343" Y="215974" Z="-11768" delay="0" run="true" />
|
||||
<point X="141502" Y="216016" Z="-11768" delay="0" run="true" />
|
||||
<point X="141654" Y="216106" Z="-11768" delay="0" run="true" />
|
||||
<point X="141805" Y="216240" Z="-11768" delay="0" run="true" />
|
||||
<point X="141942" Y="216354" Z="-11768" delay="0" run="true" />
|
||||
<point X="142038" Y="216472" Z="-11768" delay="0" run="true" />
|
||||
<point X="142151" Y="216643" Z="-11768" delay="0" run="true" />
|
||||
<point X="142240" Y="216782" Z="-11768" delay="0" run="true" />
|
||||
<point X="142284" Y="216894" Z="-11768" delay="0" run="true" />
|
||||
<point X="142326" Y="217024" Z="-11768" delay="0" run="true" />
|
||||
<point X="142345" Y="217100" Z="-11768" delay="0" run="true" />
|
||||
<point X="142364" Y="217166" Z="-11768" delay="0" run="true" />
|
||||
<point X="142397" Y="217238" Z="-11768" delay="0" run="true" />
|
||||
<point X="142481" Y="217250" Z="-11768" delay="0" run="true" />
|
||||
<point X="142608" Y="217249" Z="-11768" delay="0" run="true" />
|
||||
<point X="142664" Y="217269" Z="-11768" delay="0" run="true" />
|
||||
<point X="142939" Y="217270" Z="-11776" delay="10000" run="true" />
|
||||
</route>
|
||||
<route name="gd_golem_2" repeat="false" repeatStyle="back">
|
||||
<point X="142642" Y="217278" Z="-11768" delay="0" run="true" />
|
||||
<point X="142536" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="142457" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="142367" Y="217287" Z="-11768" delay="0" run="true" />
|
||||
<point X="142344" Y="217364" Z="-11768" delay="0" run="true" />
|
||||
<point X="142319" Y="217442" Z="-11768" delay="0" run="true" />
|
||||
<point X="142305" Y="217527" Z="-11768" delay="0" run="true" />
|
||||
<point X="142279" Y="217614" Z="-11768" delay="0" run="true" />
|
||||
<point X="142246" Y="217704" Z="-11768" delay="0" run="true" />
|
||||
<point X="142186" Y="217815" Z="-11768" delay="0" run="true" />
|
||||
<point X="142114" Y="217924" Z="-11768" delay="0" run="true" />
|
||||
<point X="142039" Y="218047" Z="-11768" delay="0" run="true" />
|
||||
<point X="141950" Y="218157" Z="-11768" delay="0" run="true" />
|
||||
<point X="141821" Y="218287" Z="-11768" delay="0" run="true" />
|
||||
<point X="141645" Y="218418" Z="-11768" delay="0" run="true" />
|
||||
<point X="141459" Y="218510" Z="-11768" delay="0" run="true" />
|
||||
<point X="141262" Y="218532" Z="-11768" delay="0" run="true" />
|
||||
<point X="141135" Y="218517" Z="-11768" delay="0" run="true" />
|
||||
<point X="140977" Y="218469" Z="-11768" delay="0" run="true" />
|
||||
<point X="140861" Y="218401" Z="-11768" delay="0" run="true" />
|
||||
<point X="140762" Y="218327" Z="-11768" delay="0" run="true" />
|
||||
<point X="140655" Y="218230" Z="-11768" delay="0" run="true" />
|
||||
<point X="140542" Y="218106" Z="-11768" delay="0" run="true" />
|
||||
<point X="140447" Y="218012" Z="-11768" delay="0" run="true" />
|
||||
<point X="140369" Y="217903" Z="-11768" delay="0" run="true" />
|
||||
<point X="140305" Y="217796" Z="-11768" delay="0" run="true" />
|
||||
<point X="140257" Y="217701" Z="-11768" delay="0" run="true" />
|
||||
<point X="140222" Y="217593" Z="-11768" delay="0" run="true" />
|
||||
<point X="140204" Y="217492" Z="-11768" delay="0" run="true" />
|
||||
<point X="140179" Y="217411" Z="-11768" delay="0" run="true" />
|
||||
<point X="140157" Y="217323" Z="-11768" delay="0" run="true" />
|
||||
<point X="140100" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="139972" Y="217277" Z="-11768" delay="0" run="true" />
|
||||
<point X="139843" Y="217279" Z="-11768" delay="0" run="true" />
|
||||
<point X="139502" Y="217276" Z="-11776" delay="10000" run="true" />
|
||||
</route>
|
||||
<route name="FPC_Giran_Evi" repeat="true" repeatStyle="cycle">
|
||||
<target id="80000" spawnX="83485" spawnY="147998" spawnZ="-3407" />
|
||||
<point X="83485" Y="147998" Z="-3407" delay="10" run="true" /> <!-- Gatekeeper -->
|
||||
|
238
L2J_Mobius_2.5_Underground/dist/game/data/instances/CrystalCavernsCoralGarden.xml
vendored
Normal file
238
L2J_Mobius_2.5_Underground/dist/game/data/instances/CrystalCavernsCoralGarden.xml
vendored
Normal file
@ -0,0 +1,238 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Crystal Caverns - Coral Garden -->
|
||||
<instance id="165" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="60" empty="3" />
|
||||
<removeBuffs type="ALL" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="142003" y="214496" z="-11600" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="149364" y="173631" z="-920" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Party" showMessageAndHtml="true">
|
||||
<param name="html" value="condNoParty.html" />
|
||||
</condition>
|
||||
<condition type="PartyLeader">
|
||||
<param name="html" value="condNoPartyLeader.html" />
|
||||
</condition>
|
||||
<condition type="GroupMin">
|
||||
<param name="limit" value="2" />
|
||||
</condition>
|
||||
<condition type="GroupMax">
|
||||
<param name="limit" value="7" />
|
||||
</condition>
|
||||
<condition type="Level">
|
||||
<param name="min" value="97" />
|
||||
</condition>
|
||||
<condition type="Distance" />
|
||||
<condition type="Reenter">
|
||||
<param name="instanceId" value="165" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<reenter apply="ON_FINISH">
|
||||
<reset day="MONDAY" hour="6" minute="30" />
|
||||
<reset day="TUESDAY" hour="6" minute="30" />
|
||||
<reset day="WEDNESDAY" hour="6" minute="30" />
|
||||
<reset day="THURSDAY" hour="6" minute="30" />
|
||||
<reset day="FRIDAY" hour="6" minute="30" />
|
||||
<reset day="SATURDAY" hour="6" minute="30" />
|
||||
<reset day="SUNDAY" hour="6" minute="30" />
|
||||
</reenter>
|
||||
<doorlist>
|
||||
<door id="24240021">
|
||||
<openStatus default="close" />
|
||||
</door>
|
||||
<door id="24240024">
|
||||
<openStatus default="open" />
|
||||
</door>
|
||||
<door id="24240025">
|
||||
<openStatus default="open" />
|
||||
</door>
|
||||
<door id="24240026">
|
||||
<openStatus default="close" />
|
||||
</door>
|
||||
</doorlist>
|
||||
<spawnlist>
|
||||
<group name="innadril24_2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_01" minZ="-11812" maxZ="-11612">
|
||||
<node x="140772" y="214027" />
|
||||
<node x="141701" y="214024" />
|
||||
<node x="141722" y="214971" />
|
||||
<node x="140776" y="214973" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="5" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_02" minZ="-11817" maxZ="-11617">
|
||||
<node x="141288" y="215403" />
|
||||
<node x="141740" y="215413" />
|
||||
<node x="141887" y="215959" />
|
||||
<node x="142400" y="216437" />
|
||||
<node x="141647" y="216436" />
|
||||
<node x="141288" y="216181" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="4" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_03m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_03" minZ="-11819" maxZ="-11619">
|
||||
<node x="140792" y="215411" />
|
||||
<node x="141224" y="215411" />
|
||||
<node x="141241" y="216166" />
|
||||
<node x="140860" y="216435" />
|
||||
<node x="140148" y="216438" />
|
||||
<node x="140635" y="215920" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="4" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_04m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_04" minZ="-11816" maxZ="-11616">
|
||||
<node x="140113" y="216495" />
|
||||
<node x="140842" y="216485" />
|
||||
<node x="140659" y="216910" />
|
||||
<node x="140646" y="217244" />
|
||||
<node x="139829" y="217222" />
|
||||
<node x="139829" y="217222" />
|
||||
<node x="139852" y="216817" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_05m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_05" minZ="-11813" maxZ="-11613">
|
||||
<node x="141670" y="216494" />
|
||||
<node x="142425" y="216494" />
|
||||
<node x="142638" y="216831" />
|
||||
<node x="142692" y="217230" />
|
||||
<node x="141859" y="217241" />
|
||||
<node x="141840" y="216891" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_06m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_06" minZ="-11817" maxZ="-11617">
|
||||
<node x="141856" y="217297" />
|
||||
<node x="142687" y="217287" />
|
||||
<node x="142550" y="217912" />
|
||||
<node x="142020" y="218441" />
|
||||
<node x="141567" y="218171" />
|
||||
<node x="141810" y="217710" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_07m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_07" minZ="-11820" maxZ="-11620">
|
||||
<node x="139832" y="217298" />
|
||||
<node x="140644" y="217281" />
|
||||
<node x="140695" y="217709" />
|
||||
<node x="140919" y="218175" />
|
||||
<node x="140469" y="218436" />
|
||||
<node x="139940" y="217889" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_08m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_08" minZ="-11812" maxZ="-11612">
|
||||
<node x="140506" y="218463" />
|
||||
<node x="140950" y="218188" />
|
||||
<node x="141244" y="218401" />
|
||||
<node x="140675" y="218807" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_09m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_09" minZ="-11829" maxZ="-11629">
|
||||
<node x="141540" y="218183" />
|
||||
<node x="142012" y="218480" />
|
||||
<node x="141815" y="218808" />
|
||||
<node x="141271" y="218405" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_10m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_10" minZ="-11815" maxZ="-11615">
|
||||
<node x="141261" y="218427" />
|
||||
<node x="141798" y="218823" />
|
||||
<node x="141732" y="219192" />
|
||||
<node x="140779" y="219201" />
|
||||
<node x="140713" y="218815" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_11m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_11" minZ="-11814" maxZ="-11614">
|
||||
<node x="140749" y="219542" />
|
||||
<node x="141733" y="219539" />
|
||||
<node x="141721" y="220520" />
|
||||
<node x="140746" y="220531" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" count="2" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" count="2" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" count="2" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_12m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_12" minZ="-11815" maxZ="-11615">
|
||||
<node x="142059" y="219549" />
|
||||
<node x="143029" y="219542" />
|
||||
<node x="143030" y="220520" />
|
||||
<node x="142059" y="220531" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" count="2" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" count="2" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" count="3" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_e2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril24_e2422_01" minZ="-11817" maxZ="-11617">
|
||||
<node x="139388" y="217164" />
|
||||
<node x="139588" y="217164" />
|
||||
<node x="139588" y="217364" />
|
||||
<node x="139388" y="217364" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19013" x="139488" y="217264" z="-11817" count="1" /> <!-- Crystalline Golem -->
|
||||
</group>
|
||||
<group name="innadril24_e2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril24_e2422_02" minZ="-11817" maxZ="-11617">
|
||||
<node x="142908" y="217164" />
|
||||
<node x="143108" y="217164" />
|
||||
<node x="143108" y="217364" />
|
||||
<node x="142908" y="217364" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19014" x="143008" y="217264" z="-11817" heading="32768" count="1" /> <!-- Crystalline Golem -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
2511
L2J_Mobius_2.5_Underground/dist/game/data/instances/CrystalCavernsEmeraldSquare.xml
vendored
Normal file
2511
L2J_Mobius_2.5_Underground/dist/game/data/instances/CrystalCavernsEmeraldSquare.xml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
694
L2J_Mobius_2.5_Underground/dist/game/data/instances/CrystalCavernsSteamCorridor.xml
vendored
Normal file
694
L2J_Mobius_2.5_Underground/dist/game/data/instances/CrystalCavernsSteamCorridor.xml
vendored
Normal file
@ -0,0 +1,694 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Crystal Caverns - Steam Corridor -->
|
||||
<instance id="164" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="60" empty="3" />
|
||||
<removeBuffs type="ALL" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="144324" y="218207" z="-12000" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="149364" y="173631" z="-920" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Party" showMessageAndHtml="true">
|
||||
<param name="html" value="condNoParty.html" />
|
||||
</condition>
|
||||
<condition type="PartyLeader">
|
||||
<param name="html" value="condNoPartyLeader.html" />
|
||||
</condition>
|
||||
<condition type="GroupMin">
|
||||
<param name="limit" value="2" />
|
||||
</condition>
|
||||
<condition type="GroupMax">
|
||||
<param name="limit" value="7" />
|
||||
</condition>
|
||||
<condition type="Level">
|
||||
<param name="min" value="97" />
|
||||
</condition>
|
||||
<condition type="Distance" />
|
||||
<condition type="Reenter">
|
||||
<param name="instanceId" value="164" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<reenter apply="ON_FINISH">
|
||||
<reset day="MONDAY" hour="6" minute="30" />
|
||||
<reset day="TUESDAY" hour="6" minute="30" />
|
||||
<reset day="WEDNESDAY" hour="6" minute="30" />
|
||||
<reset day="THURSDAY" hour="6" minute="30" />
|
||||
<reset day="FRIDAY" hour="6" minute="30" />
|
||||
<reset day="SATURDAY" hour="6" minute="30" />
|
||||
<reset day="SUNDAY" hour="6" minute="30" />
|
||||
</reenter>
|
||||
<spawnlist>
|
||||
<group name="innadril23_2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_01" minZ="-12178" maxZ="-11678">
|
||||
<node x="144778" y="217940" />
|
||||
<node x="145497" y="217937" />
|
||||
<node x="145510" y="218475" />
|
||||
<node x="144781" y="218469" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="1" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="5"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="1" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="145129" y="218189" z="-12136" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="30" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_02" minZ="-12160" maxZ="-11660">
|
||||
<node x="145563" y="217941" />
|
||||
<node x="146353" y="217943" />
|
||||
<node x="146357" y="218483" />
|
||||
<node x="145572" y="218481" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="4"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="4"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="146016" y="218235" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="34" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_03m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_03" minZ="-12167" maxZ="-11667">
|
||||
<node x="146422" y="217935" />
|
||||
<node x="147125" y="217942" />
|
||||
<node x="147128" y="218482" />
|
||||
<node x="146431" y="218475" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="3" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="5"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="3" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_01"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_03m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_03" minZ="-12167" maxZ="-11667">
|
||||
<node x="146422" y="217935" />
|
||||
<node x="147125" y="217942" />
|
||||
<node x="147128" y="218482" />
|
||||
<node x="146431" y="218475" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="146875" y="218229" z="-12167" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="37" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_04m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_04" minZ="-12160" maxZ="-11660">
|
||||
<node x="147465" y="217937" />
|
||||
<node x="148256" y="217938" />
|
||||
<node x="148259" y="218478" />
|
||||
<node x="147475" y="218477" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="4" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="6"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="4" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="147918" y="218230" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="60" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_05m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_05" minZ="-12166" maxZ="-11666">
|
||||
<node x="148258" y="217940" />
|
||||
<node x="149048" y="217942" />
|
||||
<node x="149051" y="218482" />
|
||||
<node x="148267" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="5" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="10"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="5" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="148710" y="218233" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="64" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_06m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_06" minZ="-12166" maxZ="-11666">
|
||||
<node x="149027" y="217940" />
|
||||
<node x="149818" y="217942" />
|
||||
<node x="149821" y="218482" />
|
||||
<node x="149037" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="6" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="12"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="6" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_02"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_06m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_06" minZ="-12166" maxZ="-11666">
|
||||
<node x="149027" y="217940" />
|
||||
<node x="149818" y="217942" />
|
||||
<node x="149821" y="218482" />
|
||||
<node x="149037" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="149480" y="218233" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="67" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_07m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_07" minZ="-12170" maxZ="-11670">
|
||||
<node x="150145" y="217941" />
|
||||
<node x="150856" y="217941" />
|
||||
<node x="150859" y="218481" />
|
||||
<node x="150155" y="218481" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="5"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="5"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150598" y="218234" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="90" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_08m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_08" minZ="-12170" maxZ="-11670">
|
||||
<node x="150935" y="217936" />
|
||||
<node x="151726" y="217942" />
|
||||
<node x="151729" y="218482" />
|
||||
<node x="150945" y="218476" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="8" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="15"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="8" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="151388" y="218229" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="94" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_09m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_09" minZ="-12170" maxZ="-11670">
|
||||
<node x="151791" y="217952" />
|
||||
<node x="152499" y="217939" />
|
||||
<node x="152502" y="218479" />
|
||||
<node x="151801" y="218492" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="9" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="3"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="9" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_03"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_09m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_09" minZ="-12170" maxZ="-11670">
|
||||
<node x="151791" y="217952" />
|
||||
<node x="152499" y="217939" />
|
||||
<node x="152502" y="218479" />
|
||||
<node x="151801" y="218492" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="152244" y="218245" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="97" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_10m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_10" minZ="-12166" maxZ="-11666">
|
||||
<node x="145650" y="219795" />
|
||||
<node x="146356" y="219796" />
|
||||
<node x="146358" y="220337" />
|
||||
<node x="145652" y="220331" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="10" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="10"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="10" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="145984" y="220051" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="120" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_11m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_11" minZ="-12166" maxZ="-11666">
|
||||
<node x="146468" y="219793" />
|
||||
<node x="147174" y="219794" />
|
||||
<node x="147176" y="220335" />
|
||||
<node x="146470" y="220329" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="11" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="11" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="146802" y="220049" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="124" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_12m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_12" minZ="-12166" maxZ="-11666">
|
||||
<node x="147298" y="219800" />
|
||||
<node x="148004" y="219801" />
|
||||
<node x="148006" y="220342" />
|
||||
<node x="147300" y="220336" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="12" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="12" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_04"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="3"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="12" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_04"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_12m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_12" minZ="-12166" maxZ="-11666">
|
||||
<node x="147298" y="219800" />
|
||||
<node x="148004" y="219801" />
|
||||
<node x="148006" y="220342" />
|
||||
<node x="147300" y="220336" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="147632" y="220056" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="127" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_13m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_13" minZ="-12165" maxZ="-11665">
|
||||
<node x="148361" y="219796" />
|
||||
<node x="149067" y="219797" />
|
||||
<node x="149069" y="220338" />
|
||||
<node x="148363" y="220332" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="15"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="148695" y="220052" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="150" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_14m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_14" minZ="-12165" maxZ="-11665">
|
||||
<node x="149095" y="219796" />
|
||||
<node x="149801" y="219797" />
|
||||
<node x="149803" y="220338" />
|
||||
<node x="149097" y="220332" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="17"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="17"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="149429" y="220052" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="154" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_15m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_15" minZ="-12165" maxZ="-11665">
|
||||
<node x="149865" y="219798" />
|
||||
<node x="150571" y="219799" />
|
||||
<node x="150573" y="220340" />
|
||||
<node x="149867" y="220334" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="15" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="5"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="15" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_05"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_15m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_15" minZ="-12165" maxZ="-11665">
|
||||
<node x="149865" y="219798" />
|
||||
<node x="150571" y="219799" />
|
||||
<node x="150573" y="220340" />
|
||||
<node x="149867" y="220334" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="150199" y="220054" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="157" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_16m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_16" minZ="-12160" maxZ="-11660">
|
||||
<node x="149819" y="215314" />
|
||||
<node x="150580" y="215309" />
|
||||
<node x="150592" y="215840" />
|
||||
<node x="149834" y="215842" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="16" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="20"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="16" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150198" y="215606" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="180" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_17m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_17" minZ="-12160" maxZ="-11660">
|
||||
<node x="150589" y="215313" />
|
||||
<node x="151350" y="215308" />
|
||||
<node x="151362" y="215839" />
|
||||
<node x="150604" y="215841" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="17" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="5"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="17" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150968" y="215605" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="184" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_18m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_18" minZ="-12160" maxZ="-11660">
|
||||
<node x="151375" y="215317" />
|
||||
<node x="152136" y="215312" />
|
||||
<node x="152148" y="215843" />
|
||||
<node x="151390" y="215845" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="18" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="20"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="18" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_05"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_18m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_18" minZ="-12160" maxZ="-11660">
|
||||
<node x="151375" y="215317" />
|
||||
<node x="152136" y="215312" />
|
||||
<node x="152148" y="215843" />
|
||||
<node x="151390" y="215845" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="151754" y="215609" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="187" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_mb2422m1">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422" minZ="-12140" maxZ="-11740">
|
||||
<node x="154093" y="215667" />
|
||||
<node x="153813" y="215602" />
|
||||
<node x="153627" y="215436" />
|
||||
<node x="153537" y="215291" />
|
||||
<node x="153506" y="215131" />
|
||||
<node x="153555" y="214913" />
|
||||
<node x="153696" y="214713" />
|
||||
<node x="153892" y="214590" />
|
||||
<node x="154087" y="214538" />
|
||||
<node x="154301" y="214602" />
|
||||
<node x="154479" y="214720" />
|
||||
<node x="154601" y="214903" />
|
||||
<node x="154646" y="215119" />
|
||||
<node x="154613" y="215288" />
|
||||
<node x="154550" y="215411" />
|
||||
<node x="154462" y="215527" />
|
||||
<node x="154304" y="215624" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="154078" y="215125" z="-12140" respawnTime="1min" count="1" /> <!-- Fire Region -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt1m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt1" minZ="-12145" maxZ="-11945">
|
||||
<node x="146993" y="218107" />
|
||||
<node x="147193" y="218107" />
|
||||
<node x="147193" y="218307" />
|
||||
<node x="146993" y="218307" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="147148" y="218208" z="-12112" heading="32624" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt2m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt2" minZ="-12147" maxZ="-11947">
|
||||
<node x="149740" y="218107" />
|
||||
<node x="149940" y="218107" />
|
||||
<node x="149940" y="218307" />
|
||||
<node x="149740" y="218307" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="149818" y="218208" z="-12096" heading="32496" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt3m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt3" minZ="-12141" maxZ="-11941">
|
||||
<node x="152440" y="218104" />
|
||||
<node x="152640" y="218104" />
|
||||
<node x="152640" y="218304" />
|
||||
<node x="152440" y="218304" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="152538" y="218208" z="-12096" heading="32552" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt4m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt4" minZ="-12146" maxZ="-11946">
|
||||
<node x="147916" y="219968" />
|
||||
<node x="148116" y="219968" />
|
||||
<node x="148116" y="220168" />
|
||||
<node x="147916" y="220168" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="148022" y="220069" z="-12112" heading="-32568" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt5m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt5" minZ="-12144" maxZ="-11944">
|
||||
<node x="150613" y="219960" />
|
||||
<node x="150813" y="219960" />
|
||||
<node x="150813" y="220160" />
|
||||
<node x="150613" y="220160" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="150699" y="220064" z="-12112" heading="-32696" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt6m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt6" minZ="-12143" maxZ="-11943">
|
||||
<node x="152084" y="215474" />
|
||||
<node x="152284" y="215474" />
|
||||
<node x="152284" y="215674" />
|
||||
<node x="152084" y="215674" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="152214" y="215586" z="-12112" heading="32568" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
@ -0,0 +1,215 @@
|
||||
/*
|
||||
* 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 ai.areas.Parnassus.EntrancePortalToCrystalCaverns;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.OnEventTrigger;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
import instances.CrystalCaverns.CrystalCavernsCoralGarden;
|
||||
import instances.CrystalCaverns.CrystalCavernsEmeraldSquare;
|
||||
import instances.CrystalCaverns.CrystalCavernsSteamCorridor;
|
||||
|
||||
/**
|
||||
* Entrance Portal to Crystal Caverns AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class EntrancePortalToCrystalCaverns extends AbstractNpcAI
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
// Misc
|
||||
private static final int EMERALD_SQUARE_TEMPLATE_ID = 163;
|
||||
private static final int STEAM_CORRIDOR_TEMPLATE_ID = 164;
|
||||
private static final int CORAL_GARDEN_TEMPLATE_ID = 165;
|
||||
private static final int PRISON_ENTRACE_TRIGGER_1 = 24230010;
|
||||
private static final int PRISON_ENTRACE_TRIGGER_2 = 24230012;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_1 = 24230014;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_2 = 24230016;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_3 = 24230018;
|
||||
|
||||
private EntrancePortalToCrystalCaverns()
|
||||
{
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addFirstTalkId(CAVERNS_ENTRACE);
|
||||
addSpawnId(CAVERNS_ENTRACE);
|
||||
addSeeCreatureId(CAVERNS_ENTRACE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
Quest instanceScript = null;
|
||||
|
||||
switch (getCurrentInstanceTemplateId())
|
||||
{
|
||||
case EMERALD_SQUARE_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsEmeraldSquare.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
case STEAM_CORRIDOR_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsSteamCorridor.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
case CORAL_GARDEN_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsCoralGarden.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (instanceScript != null)
|
||||
{
|
||||
instanceScript.notifyEvent(event, npc, player);
|
||||
}
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
return "EntrancePortal_" + getCurrentInstanceTemplateId() + ".html";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
getTimers().addRepeatingTimer("LOOP_TIMER", 10000, npc, null);
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("LOOP_TIMER"))
|
||||
{
|
||||
final int currentTemplateId = getCurrentInstanceTemplateId();
|
||||
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, PlayerInstance.class, 500, p ->
|
||||
{
|
||||
updateTriggersForPlayer(player, currentTemplateId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSeeCreature(Npc npc, Creature creature, boolean isSummon)
|
||||
{
|
||||
if (creature.isPlayer())
|
||||
{
|
||||
creature.getActingPlayer().sendPacket(new OnEventTrigger(PRISON_ENTRACE_TRIGGER_1, true));
|
||||
creature.getActingPlayer().sendPacket(new OnEventTrigger(PRISON_ENTRACE_TRIGGER_2, true));
|
||||
updateTriggersForPlayer(creature.getActingPlayer(), getCurrentInstanceTemplateId());
|
||||
}
|
||||
return super.onSeeCreature(npc, creature, isSummon);
|
||||
}
|
||||
|
||||
public void updateTriggersForPlayer(PlayerInstance player, int currentTemplateId)
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_1, false));
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_2, false));
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_3, false));
|
||||
|
||||
switch (currentTemplateId)
|
||||
{
|
||||
case EMERALD_SQUARE_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_1, true));
|
||||
break;
|
||||
}
|
||||
case STEAM_CORRIDOR_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_2, true));
|
||||
break;
|
||||
}
|
||||
case CORAL_GARDEN_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_3, true));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getCurrentInstanceTemplateId()
|
||||
{
|
||||
final int day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
|
||||
final int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
|
||||
int templateId = -1;
|
||||
|
||||
switch (day)
|
||||
{
|
||||
case Calendar.MONDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.TUESDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? CORAL_GARDEN_TEMPLATE_ID : EMERALD_SQUARE_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.WEDNESDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? STEAM_CORRIDOR_TEMPLATE_ID : CORAL_GARDEN_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.THURSDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.FRIDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? CORAL_GARDEN_TEMPLATE_ID : EMERALD_SQUARE_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.SATURDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? STEAM_CORRIDOR_TEMPLATE_ID : CORAL_GARDEN_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.SUNDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return templateId;
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new EntrancePortalToCrystalCaverns();
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Emerald Square</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Steam Corridor</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Coral Garden</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,253 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.WalkingManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.Spawn;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Coral Garden instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsCoralGarden extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int MICHAELA_NORMAL = 25799;
|
||||
private static final int MICHAELA_WISE = 26116;
|
||||
private static final int MICHAELA_WEALTHY = 26115;
|
||||
private static final int MICHAELA_ARMED = 26114;
|
||||
private static final int GOLEM_1 = 19013; // Crystalline Golem
|
||||
private static final int GOLEM_2 = 19014; // Crystalline Golem
|
||||
// Location
|
||||
private static final Location BOSS_LOC = new Location(144307, 220032, -11824);
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 165;
|
||||
private static final int BOSS_DOOR_ID = 24240026;
|
||||
private static final int PLAYER_MAX_DISTANCE = 250;
|
||||
|
||||
public CrystalCavernsCoralGarden()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addFirstTalkId(GOLEM_1, GOLEM_2);
|
||||
addKillId(MICHAELA_NORMAL, MICHAELA_WISE, MICHAELA_WEALTHY, MICHAELA_ARMED);
|
||||
addAttackId(MICHAELA_NORMAL, MICHAELA_WISE, MICHAELA_WEALTHY, MICHAELA_ARMED);
|
||||
addRouteFinishedId(GOLEM_1, GOLEM_2);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "SUCCESS_TIMER":
|
||||
{
|
||||
showOnScreenMsg(instance, NpcStringId.GOLEM_LOCATION_SUCCESSFUL_ENTRY_ACCESSED, ExShowScreenMessage.MIDDLE_CENTER, 5000);
|
||||
break;
|
||||
}
|
||||
case "LOOP_TIMER":
|
||||
{
|
||||
player = npcVars.getObject("PLAYER_OBJECT", PlayerInstance.class);
|
||||
|
||||
if ((player != null) && (npc.calculateDistance3D(player) > PLAYER_MAX_DISTANCE) && npcVars.getBoolean("NPC_FOLLOWING", true))
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
addMoveToDesire(npc, new Location(npc.getX() + getRandom(-100, 100), npc.getY() + getRandom(-150, 150), npc.getZ()), 23);
|
||||
npc.setRunning();
|
||||
npcVars.set("NPC_FOLLOWING", false);
|
||||
getTimers().cancelTimer("LOOP_TIMER", npc, null);
|
||||
getTimers().addTimer("FAIL_TIMER", 5000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "FAIL_TIMER":
|
||||
{
|
||||
final Spawn spawn = npc.getSpawn();
|
||||
|
||||
if (!npcVars.getBoolean("NPC_FOLLOWING", true))
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
npc.setWalking();
|
||||
npc.teleToLocation(npc.getSpawn().getX(), npc.getSpawn().getY(), npc.getSpawn().getZ());
|
||||
npc.setScriptValue(0);
|
||||
npc.setNameString(null);
|
||||
npc.setTitleString(null);
|
||||
npc.setTitle(null);
|
||||
npc.broadcastInfo();
|
||||
}
|
||||
npcVars.set("CAN_CALL_MONSTERS", ((spawn.getX() - ((npc.getX() * spawn.getX()) - npc.getX())) + (spawn.getY() - (npc.getY() * spawn.getY()) - npc.getY())) > (200 * 200));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.getVariables().set("PLAYER_OBJECT", player);
|
||||
npc.setNameString(NpcStringId.TRAITOR_CRYSTALLINE_GOLEM);
|
||||
npc.setTitleString(NpcStringId.GIVEN_TO_S1);
|
||||
npc.setTitle(player.getName());
|
||||
npc.broadcastInfo();
|
||||
WalkingManager.getInstance().startMoving(npc, npc.getId() == GOLEM_1 ? "gd_golem_1" : "gd_golem_2");
|
||||
getTimers().addRepeatingTimer("LOOP_TIMER", 500, npc, null);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRouteFinished(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (instance != null)
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
showOnScreenMsg(instance, NpcStringId.GOLEM_ENTERED_THE_REQUIRED_ZONE, ExShowScreenMessage.MIDDLE_CENTER, 5000);
|
||||
npc.deleteMe();
|
||||
|
||||
if (instance.getAliveNpcs(GOLEM_1, GOLEM_2).isEmpty())
|
||||
{
|
||||
instance.openCloseDoor(BOSS_DOOR_ID, true);
|
||||
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = MICHAELA_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = MICHAELA_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = MICHAELA_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = MICHAELA_ARMED;
|
||||
}
|
||||
|
||||
final Npc boss = addSpawn(bossId, BOSS_LOC, false, 0, false, instance.getId());
|
||||
getTimers().addTimer("SUCCESS_TIMER", 5000, boss, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MICHAELA_NORMAL:
|
||||
case MICHAELA_WISE:
|
||||
case MICHAELA_WEALTHY:
|
||||
case MICHAELA_ARMED:
|
||||
{
|
||||
instance.finishInstance();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MICHAELA_NORMAL:
|
||||
case MICHAELA_WISE:
|
||||
case MICHAELA_WEALTHY:
|
||||
case MICHAELA_ARMED:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
instance.openCloseDoor(BOSS_DOOR_ID, false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsCoralGarden();
|
||||
}
|
||||
}
|
@ -0,0 +1,424 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Emerald Square instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsEmeraldSquare extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int VERIDAN_NORMAL = 25796;
|
||||
private static final int VERIDAN_WISE = 26107;
|
||||
private static final int VERIDAN_WEALTHY = 26106;
|
||||
private static final int VERIDAN_ARMED = 26105;
|
||||
private static final int WATER_CANNON = 19008;
|
||||
private static final int WATER_CANNON_SKILL = 19009;
|
||||
private static final int STRONGHOLD_PROTECTOR = 23012;
|
||||
private static final int SQUARE_INTRUDER = 23010;
|
||||
private static final int SQUARE_ATTACKER = 23011;
|
||||
// Skills
|
||||
private static final SkillHolder DESTROY_SKILL = new SkillHolder(12003, 1);
|
||||
private static final SkillHolder WATER_CANNON_SKILL_ATTACK = new SkillHolder(14179, 1);
|
||||
// Locations
|
||||
private static final Location[] BOSS_SPAWNS =
|
||||
{
|
||||
new Location(152745, 145957, -12584, 16446),
|
||||
new Location(152816, 145968, -12633, 16446),
|
||||
};
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 163;
|
||||
private static final int RAID_DOOR_1 = 24220005;
|
||||
private static final int RAID_DOOR_2 = 24220006;
|
||||
|
||||
public CrystalCavernsEmeraldSquare()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addSpawnId(WATER_CANNON);
|
||||
addKillId(WATER_CANNON, VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED);
|
||||
addAttackId(WATER_CANNON, VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED);
|
||||
addSpellFinishedId(WATER_CANNON_SKILL);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
setCreatureSeeId(this::onCreatureSee, WATER_CANNON);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "HP_REGEN_TIMER":
|
||||
{
|
||||
int value = ((baseId == 5) || (baseId == 6)) ? 5 : baseId;
|
||||
npc.getStat().addFixedValue(Stats.REGENERATE_HP_RATE, Double.valueOf(value * 1000));
|
||||
break;
|
||||
}
|
||||
case "SUPPORT_SPAWN_TIMER":
|
||||
{
|
||||
int supportVal = npcVars.getInt("SUPPORT_VALUE", 0);
|
||||
|
||||
if (supportVal > 3)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((supportVal == 0) || (supportVal == 1) || (supportVal == 2))
|
||||
{
|
||||
final String spawnName = npcParams.getString("SupportMaker" + (supportVal + 1), null);
|
||||
if (spawnName != null)
|
||||
{
|
||||
instance.spawnGroup(spawnName);
|
||||
}
|
||||
npcVars.increaseInt("SUPPORT_VALUE", 1);
|
||||
}
|
||||
|
||||
if (!npcVars.getBoolean("PREVIOUS_BASE_DESTROYED", false))
|
||||
{
|
||||
getTimers().addTimer("SUPPORT_SPAWN_TIMER", 60000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "CANNON_LOOP_ATTACK":
|
||||
{
|
||||
if (npc.getCurrentHpPercent() > 30)
|
||||
{
|
||||
if (npcVars.getBoolean("IS_DESTROY_ACTIVATED", false) || (getRandom(10) < 2))
|
||||
{
|
||||
final Npc cannonSkill = addSpawn(WATER_CANNON_SKILL, npc, true, 0, false, instance.getId());
|
||||
addSkillCastDesire(cannonSkill, cannonSkill, WATER_CANNON_SKILL_ATTACK, 23);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SUICIDE_TIMER":
|
||||
{
|
||||
npc.doDie(null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VERIDAN_WISE:
|
||||
case VERIDAN_WEALTHY:
|
||||
case VERIDAN_ARMED:
|
||||
{
|
||||
if (!npcVars.getBoolean("CLOSED_DOORS", false))
|
||||
{
|
||||
npcVars.set("CLOSED_DOORS", true);
|
||||
instance.openCloseDoor(RAID_DOOR_2, false);
|
||||
}
|
||||
}
|
||||
case WATER_CANNON:
|
||||
{
|
||||
if ((skill != null) && (skill.getId() == DESTROY_SKILL.getSkillId()) && !npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npcVars.set("IS_DESTROY_ACTIVATED", true);
|
||||
npc.setDisplayEffect(2);
|
||||
getTimers().addTimer("SUICIDE_TIMER", 60000, npc, null);
|
||||
}
|
||||
|
||||
if (npc.getCurrentHpPercent() < 30)
|
||||
{
|
||||
if (!npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npc.setDisplayEffect(3);
|
||||
|
||||
}
|
||||
}
|
||||
else if (!npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npc.setDisplayEffect(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VERIDAN_NORMAL:
|
||||
case VERIDAN_WISE:
|
||||
case VERIDAN_WEALTHY:
|
||||
case VERIDAN_ARMED:
|
||||
{
|
||||
if (instance.getAliveNpcs(VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED).isEmpty())
|
||||
{
|
||||
instance.finishInstance();
|
||||
}
|
||||
else
|
||||
{
|
||||
instance.setReenterTime();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WATER_CANNON:
|
||||
{
|
||||
npc.setDisplayEffect(4);
|
||||
showOnScreenMsg(instance, NpcStringId.SUCCESSFUL_DESTRUCTION_OF_STRONGHOLD_S1, ExShowScreenMessage.MIDDLE_CENTER, 4000, String.valueOf(npc.getParameters().getInt("base_id", -1)));
|
||||
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, MonsterInstance.class, 400, monster ->
|
||||
{
|
||||
if ((monster.getId() == STRONGHOLD_PROTECTOR) || (monster.getId() == SQUARE_INTRUDER) || (monster.getId() == SQUARE_ATTACKER))
|
||||
{
|
||||
monster.doDie(null);
|
||||
}
|
||||
});
|
||||
|
||||
instance.getAliveNpcs(WATER_CANNON).forEach(cannon ->
|
||||
{
|
||||
final int cannonBaseId = cannon.getParameters().getInt("base_id", -1);
|
||||
|
||||
switch (baseId)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
if (cannonBaseId == 2)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (cannonBaseId == 3)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
if (cannonBaseId == 4)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
if ((cannonBaseId == 5) || (cannonBaseId == 6))
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
case 6:
|
||||
{
|
||||
if (cannonBaseId == 7)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
if ((cannonBaseId == 8) || (cannonBaseId == 9))
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if ((baseId == 8) || (baseId == 9))
|
||||
{
|
||||
instance.getParameters().increaseInt("MAIN_TARGETS_KILLED", 0, 1);
|
||||
|
||||
if (instance.getParameters().getInt("MAIN_TARGETS_KILLED", 0) == 2)
|
||||
{
|
||||
showOnScreenMsg(instance, NpcStringId.SUCCESSFUL_DESTRUCTION_OF_STRONGHOLD_ENTRY_ACCESSED, ExShowScreenMessage.MIDDLE_CENTER, 4000);
|
||||
instance.openCloseDoor(RAID_DOOR_1, true);
|
||||
instance.openCloseDoor(RAID_DOOR_2, true);
|
||||
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = VERIDAN_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = VERIDAN_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = VERIDAN_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = VERIDAN_ARMED;
|
||||
}
|
||||
|
||||
for (Location loc : BOSS_SPAWNS)
|
||||
{
|
||||
addSpawn(bossId, loc, false, 0, false, instance.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpellFinished(Npc npc, PlayerInstance player, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance) && (npc.getId() == WATER_CANNON_SKILL) && (skill.getId() == WATER_CANNON_SKILL_ATTACK.getSkillId()))
|
||||
{
|
||||
npc.deleteMe();
|
||||
}
|
||||
return super.onSpellFinished(npc, player, skill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case WATER_CANNON:
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
if (baseId != 1)
|
||||
{
|
||||
npc.setTargetable(false);
|
||||
}
|
||||
|
||||
getTimers().addTimer("HP_REGEN_TIMER", 10000, npc, null);
|
||||
|
||||
if (baseId > 0)
|
||||
{
|
||||
getTimers().addTimer("SUPPORT_SPAWN_TIMER", (baseId * 60) * 1000, npc, null);
|
||||
}
|
||||
npc.initSeenCreatures();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
public void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final Creature creature = event.getSeen();
|
||||
final Npc npc = (Npc) event.getSeer();
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
|
||||
if ((world != null) && creature.isPlayer() && npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.setDisplayEffect(1);
|
||||
getTimers().addRepeatingTimer("CANNON_LOOP_ATTACK", 1000, npc, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsEmeraldSquare();
|
||||
}
|
||||
}
|
@ -0,0 +1,408 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.ChatType;
|
||||
import org.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneType;
|
||||
import org.l2jmobius.gameserver.model.zone.type.TeleportZone;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Steam Corridor instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsSteamCorridor extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int KECHI_NORMAL = 25797;
|
||||
private static final int KECHI_WISE = 26113;
|
||||
private static final int KECHI_WEALTHY = 26112;
|
||||
private static final int KECHI_ARMED = 26111;
|
||||
private static final int VICIOUS_DUELER = 23014;
|
||||
private static final int VICIOUS_WARRIOR = 23016;
|
||||
private static final int VICIOUS_SWORDSMAN = 23015;
|
||||
private static final int SPIRIT_PROTECTOR = 23013;
|
||||
private static final int FIRE_REGION = 19161;
|
||||
private static final int PLAYER_DETECTOR = 19075;
|
||||
private static final int TRAP_1 = 19011;
|
||||
private static final int TRAP_2 = 19012;
|
||||
// Skills
|
||||
private static final SkillHolder FIRE_SKILL_1 = new SkillHolder(14373, 1);
|
||||
private static final SkillHolder FIRE_SKILL_2 = new SkillHolder(14373, 2);
|
||||
private static final SkillHolder FIRE_SKILL_3 = new SkillHolder(14197, 1);
|
||||
private static final SkillHolder TRAP_SKILL_1 = new SkillHolder(14180, 1);
|
||||
private static final SkillHolder TRAP_SKILL_2 = new SkillHolder(14181, 1);
|
||||
private static final SkillHolder TRAP_SKILL_3 = new SkillHolder(14372, 1);
|
||||
// Location
|
||||
private static final Location BOSS_LOC = new Location(154078, 215125, -12140);
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 164;
|
||||
|
||||
public CrystalCavernsSteamCorridor()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addAttackId(TRAP_1, TRAP_2);
|
||||
addKillId(VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN, KECHI_NORMAL, KECHI_WISE, KECHI_WEALTHY, KECHI_ARMED);
|
||||
addSpawnId(SPIRIT_PROTECTOR, VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN, FIRE_REGION, PLAYER_DETECTOR);
|
||||
addEventReceivedId(SPIRIT_PROTECTOR, VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN);
|
||||
addInstanceCreatedId(TEMPLATE_ID);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
setCreatureSeeId(this::onCreatureSee, PLAYER_DETECTOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "FIRE_REGION_TIMER_1":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_1, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_2", 10000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "FIRE_REGION_TIMER_2":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_2, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_3", 10000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "FIRE_REGION_TIMER_3":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_3, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_3", 1000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "TRAP_REACT_TIMER":
|
||||
{
|
||||
final int timer = npcVars.increaseInt("TIMER_VAL", -1);
|
||||
if (timer > 0)
|
||||
{
|
||||
npc.broadcastSay(ChatType.NPC_GENERAL, " " + timer);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (npc.getId() == TRAP_1)
|
||||
{
|
||||
addSkillCastDesire(npc, npc, (getRandom(10) < 8 ? TRAP_SKILL_1 : TRAP_SKILL_3), 23);
|
||||
}
|
||||
else if (npc.getId() == TRAP_2)
|
||||
{
|
||||
addSkillCastDesire(npc, npc, (getRandom(10) < 8 ? TRAP_SKILL_2 : TRAP_SKILL_3), 23);
|
||||
}
|
||||
}
|
||||
getTimers().addTimer("TRAP_REACT_TIMER", 1000, npc, null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceCreated(Instance instance, PlayerInstance player)
|
||||
{
|
||||
instance.setStatus(1);
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
final ZoneType zone = ZoneManager.getInstance().getZoneByName("24_24_fire_telezone_0" + i, TeleportZone.class);
|
||||
if (zone != null)
|
||||
{
|
||||
zone.setEnabled(false, instance.getId());
|
||||
}
|
||||
}
|
||||
super.onInstanceCreated(instance, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case SPIRIT_PROTECTOR:
|
||||
case VICIOUS_DUELER:
|
||||
case VICIOUS_WARRIOR:
|
||||
case VICIOUS_SWORDSMAN:
|
||||
{
|
||||
npc.setTargetable(false);
|
||||
npc.disableCoreAI(true);
|
||||
npc.setInvisible(true);
|
||||
break;
|
||||
}
|
||||
case FIRE_REGION:
|
||||
{
|
||||
final int timeLimit = npcParams.getInt("Limit_Time", 0);
|
||||
if (timeLimit > 0)
|
||||
{
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_1", ((timeLimit * 30) * 100), npc, null);
|
||||
}
|
||||
npc.setTargetable(false);
|
||||
npc.setIsInvul(true);
|
||||
npc.setRandomAnimation(false);
|
||||
npc.setRandomWalking(false);
|
||||
npc.disableCoreAI(true);
|
||||
break;
|
||||
}
|
||||
case PLAYER_DETECTOR:
|
||||
{
|
||||
npc.initSeenCreatures();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onEventReceived(String eventName, Npc sender, Npc receiver, WorldObject reference)
|
||||
{
|
||||
final Instance instance = receiver.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = receiver.getParameters();
|
||||
|
||||
if (eventName.equals(String.valueOf(24220005 + npcParams.getInt("Terri_ID", 0))))
|
||||
{
|
||||
receiver.setTargetable(true);
|
||||
receiver.disableCoreAI(false);
|
||||
receiver.setInvisible(false);
|
||||
}
|
||||
}
|
||||
return super.onEventReceived(eventName, sender, receiver, reference);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case TRAP_1:
|
||||
case TRAP_2:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
getTimers().addTimer("TRAP_REACT_TIMER", 1000, npc, null);
|
||||
npc.setScriptValue(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int killTarget = instance.getParameters().getInt("KILL_TARGET", 5);
|
||||
int currentKillCount = instance.getParameters().getInt("KILL_COUNT", 0);
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VICIOUS_DUELER:
|
||||
case VICIOUS_WARRIOR:
|
||||
case VICIOUS_SWORDSMAN:
|
||||
{
|
||||
if (npcParams.getInt("last_checker", 0) == 1)
|
||||
{
|
||||
currentKillCount = instance.getParameters().increaseInt("KILL_COUNT", 0, 1);
|
||||
|
||||
if (currentKillCount >= killTarget)
|
||||
{
|
||||
final ZoneType zone = ZoneManager.getInstance().getZoneByName(npc.getParameters().getString("AreaTeleName"), TeleportZone.class);
|
||||
if (zone != null)
|
||||
{
|
||||
zone.setEnabled(true, instance.getId());
|
||||
showOnScreenMsg(instance, NpcStringId.THE_PORTAL_TO_THE_NEXT_ROOM_IS_NOW_OPEN, ExShowScreenMessage.MIDDLE_CENTER, 4000);
|
||||
instance.spawnGroup("innadril23_mb2422_pt" + instance.getStatus() + "m1");
|
||||
instance.getParameters().set("KILL_COUNT", 0);
|
||||
|
||||
switch (instance.getStatus())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 12);
|
||||
instance.setStatus(2);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 3);
|
||||
instance.setStatus(3);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 18);
|
||||
instance.setStatus(4);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 5);
|
||||
instance.setStatus(5);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 20);
|
||||
instance.setStatus(6);
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = KECHI_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = KECHI_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = KECHI_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = KECHI_ARMED;
|
||||
}
|
||||
|
||||
addSpawn(bossId, BOSS_LOC, false, 0, false, instance.getId());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER.warning("Cannot find teleport zone for Crystal Cavern: Steam Corridor instance!!!");
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case KECHI_NORMAL:
|
||||
case KECHI_WISE:
|
||||
case KECHI_WEALTHY:
|
||||
case KECHI_ARMED:
|
||||
{
|
||||
instance.finishInstance();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
private void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final Creature creature = event.getSeen();
|
||||
final Npc npc = (Npc) event.getSeer();
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
|
||||
if (isInInstance(instance) && creature.isPlayer())
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case PLAYER_DETECTOR:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.broadcastEvent(String.valueOf(24220005 + npcParams.getInt("Terri_ID", 0)), 2000, null);
|
||||
|
||||
for (int i = 0; i < getRandom(5); i++)
|
||||
{
|
||||
final Npc trap = addSpawn(((npcParams.getInt("MobType", 0) == 0) ? TRAP_1 : TRAP_2), npc, true, 0, false, instance.getId());
|
||||
trap.getVariables().set("TIMER_VAL", 4);
|
||||
}
|
||||
npc.deleteMe();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsSteamCorridor();
|
||||
}
|
||||
}
|
3
L2J_Mobius_2.5_Underground/dist/game/data/scripts/instances/CrystalCaverns/condNoParty.html
vendored
Normal file
3
L2J_Mobius_2.5_Underground/dist/game/data/scripts/instances/CrystalCaverns/condNoParty.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Crystal Caverns Admission Portal:<br>
|
||||
You must be in a party to enter.
|
||||
</body></html>
|
@ -0,0 +1,3 @@
|
||||
<html><body>Crystal Caverns Admission Portal:<br>
|
||||
The leader of the party should try to enter.
|
||||
</body></html>
|
@ -366,7 +366,7 @@
|
||||
<height normal="13" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="19013" level="96" type="Npc" name="Crystalline Golem">
|
||||
<npc id="19013" level="96" type="FriendlyNpc" name="Crystalline Golem" usingServerSideTitle="true">
|
||||
<!-- AUTO GENERATED NPC TODO: FIX IT -->
|
||||
<parameters>
|
||||
<skill name="Link_Skill_01" id="14283" level="1" />
|
||||
@ -403,7 +403,7 @@
|
||||
<height normal="47" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="19014" level="96" type="Npc" name="Crystalline Golem">
|
||||
<npc id="19014" level="96" type="FriendlyNpc" name="Crystalline Golem" usingServerSideTitle="true">
|
||||
<!-- AUTO GENERATED NPC TODO: FIX IT -->
|
||||
<parameters>
|
||||
<skill name="Link_Skill_01" id="14283" level="1" />
|
||||
|
@ -154,6 +154,72 @@
|
||||
<node X="108616" Y="-41676" />
|
||||
<node X="108816" Y="-40776" />
|
||||
<node X="107856" Y="-40652" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_01" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="147444" />
|
||||
<stat name="oustY" val="218208" />
|
||||
<stat name="oustZ" val="-12117" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="147204" Y="218138" />
|
||||
<node X="147200" Y="218279" />
|
||||
<node X="147138" Y="218278" />
|
||||
<node X="147133" Y="218135" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_02" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="150143" />
|
||||
<stat name="oustY" val="218205" />
|
||||
<stat name="oustZ" val="-12121" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="149886" Y="218138" />
|
||||
<node X="149884" Y="218278" />
|
||||
<node X="149822" Y="218274" />
|
||||
<node X="149833" Y="218135" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_03" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="145610" />
|
||||
<stat name="oustY" val="220065" />
|
||||
<stat name="oustZ" val="-12106" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="152585" Y="218139" />
|
||||
<node X="152579" Y="218276" />
|
||||
<node X="152514" Y="218272" />
|
||||
<node X="152521" Y="218134" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_04" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="148309" />
|
||||
<stat name="oustY" val="220064" />
|
||||
<stat name="oustZ" val="-12118" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="148064" Y="219993" />
|
||||
<node X="148061" Y="220133" />
|
||||
<node X="147999" Y="220129" />
|
||||
<node X="148007" Y="219994" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_05" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="149761" />
|
||||
<stat name="oustY" val="215582" />
|
||||
<stat name="oustZ" val="-12104" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="150747" Y="219991" />
|
||||
<node X="150748" Y="220132" />
|
||||
<node X="150688" Y="220134" />
|
||||
<node X="150697" Y="219994" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_06" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="153400" />
|
||||
<stat name="oustY" val="215138" />
|
||||
<stat name="oustZ" val="-12102" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="152267" Y="215518" />
|
||||
<node X="152258" Y="215654" />
|
||||
<node X="152173" Y="215653" />
|
||||
<node X="152180" Y="215514" />
|
||||
</zone>
|
||||
<zone name="26_20_orbis_enter" type="TeleportZone" shape="NPoly" minZ="-458" maxZ="-158">
|
||||
<stat name="oustX" val="213983" />
|
||||
|
73
L2J_Mobius_3.0_Helios/dist/game/data/Routes.xml
vendored
73
L2J_Mobius_3.0_Helios/dist/game/data/Routes.xml
vendored
@ -2476,6 +2476,79 @@
|
||||
<point X="182894" Y="17577" Z="-10304" delay="2" run="true" />
|
||||
<point X="182426" Y="18210" Z="-10304" delay="3" run="true" />
|
||||
</route>
|
||||
<route name="gd_golem_1" repeat="false" repeatStyle="back">
|
||||
<point X="139821" Y="217257" Z="-11768" delay="0" run="true" />
|
||||
<point X="139925" Y="217250" Z="-11768" delay="0" run="true" />
|
||||
<point X="140050" Y="217251" Z="-11768" delay="0" run="true" />
|
||||
<point X="140137" Y="217244" Z="-11768" delay="0" run="true" />
|
||||
<point X="140156" Y="217190" Z="-11768" delay="0" run="true" />
|
||||
<point X="140170" Y="217104" Z="-11768" delay="0" run="true" />
|
||||
<point X="140198" Y="217003" Z="-11768" delay="0" run="true" />
|
||||
<point X="140224" Y="216897" Z="-11768" delay="0" run="true" />
|
||||
<point X="140287" Y="216756" Z="-11768" delay="0" run="true" />
|
||||
<point X="140352" Y="216600" Z="-11768" delay="0" run="true" />
|
||||
<point X="140468" Y="216459" Z="-11768" delay="0" run="true" />
|
||||
<point X="140594" Y="216334" Z="-11768" delay="0" run="true" />
|
||||
<point X="140703" Y="216212" Z="-11768" delay="0" run="true" />
|
||||
<point X="140805" Y="216144" Z="-11768" delay="0" run="true" />
|
||||
<point X="140916" Y="216065" Z="-11768" delay="0" run="true" />
|
||||
<point X="141076" Y="216000" Z="-11768" delay="0" run="true" />
|
||||
<point X="141206" Y="215970" Z="-11768" delay="0" run="true" />
|
||||
<point X="141343" Y="215974" Z="-11768" delay="0" run="true" />
|
||||
<point X="141502" Y="216016" Z="-11768" delay="0" run="true" />
|
||||
<point X="141654" Y="216106" Z="-11768" delay="0" run="true" />
|
||||
<point X="141805" Y="216240" Z="-11768" delay="0" run="true" />
|
||||
<point X="141942" Y="216354" Z="-11768" delay="0" run="true" />
|
||||
<point X="142038" Y="216472" Z="-11768" delay="0" run="true" />
|
||||
<point X="142151" Y="216643" Z="-11768" delay="0" run="true" />
|
||||
<point X="142240" Y="216782" Z="-11768" delay="0" run="true" />
|
||||
<point X="142284" Y="216894" Z="-11768" delay="0" run="true" />
|
||||
<point X="142326" Y="217024" Z="-11768" delay="0" run="true" />
|
||||
<point X="142345" Y="217100" Z="-11768" delay="0" run="true" />
|
||||
<point X="142364" Y="217166" Z="-11768" delay="0" run="true" />
|
||||
<point X="142397" Y="217238" Z="-11768" delay="0" run="true" />
|
||||
<point X="142481" Y="217250" Z="-11768" delay="0" run="true" />
|
||||
<point X="142608" Y="217249" Z="-11768" delay="0" run="true" />
|
||||
<point X="142664" Y="217269" Z="-11768" delay="0" run="true" />
|
||||
<point X="142939" Y="217270" Z="-11776" delay="10000" run="true" />
|
||||
</route>
|
||||
<route name="gd_golem_2" repeat="false" repeatStyle="back">
|
||||
<point X="142642" Y="217278" Z="-11768" delay="0" run="true" />
|
||||
<point X="142536" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="142457" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="142367" Y="217287" Z="-11768" delay="0" run="true" />
|
||||
<point X="142344" Y="217364" Z="-11768" delay="0" run="true" />
|
||||
<point X="142319" Y="217442" Z="-11768" delay="0" run="true" />
|
||||
<point X="142305" Y="217527" Z="-11768" delay="0" run="true" />
|
||||
<point X="142279" Y="217614" Z="-11768" delay="0" run="true" />
|
||||
<point X="142246" Y="217704" Z="-11768" delay="0" run="true" />
|
||||
<point X="142186" Y="217815" Z="-11768" delay="0" run="true" />
|
||||
<point X="142114" Y="217924" Z="-11768" delay="0" run="true" />
|
||||
<point X="142039" Y="218047" Z="-11768" delay="0" run="true" />
|
||||
<point X="141950" Y="218157" Z="-11768" delay="0" run="true" />
|
||||
<point X="141821" Y="218287" Z="-11768" delay="0" run="true" />
|
||||
<point X="141645" Y="218418" Z="-11768" delay="0" run="true" />
|
||||
<point X="141459" Y="218510" Z="-11768" delay="0" run="true" />
|
||||
<point X="141262" Y="218532" Z="-11768" delay="0" run="true" />
|
||||
<point X="141135" Y="218517" Z="-11768" delay="0" run="true" />
|
||||
<point X="140977" Y="218469" Z="-11768" delay="0" run="true" />
|
||||
<point X="140861" Y="218401" Z="-11768" delay="0" run="true" />
|
||||
<point X="140762" Y="218327" Z="-11768" delay="0" run="true" />
|
||||
<point X="140655" Y="218230" Z="-11768" delay="0" run="true" />
|
||||
<point X="140542" Y="218106" Z="-11768" delay="0" run="true" />
|
||||
<point X="140447" Y="218012" Z="-11768" delay="0" run="true" />
|
||||
<point X="140369" Y="217903" Z="-11768" delay="0" run="true" />
|
||||
<point X="140305" Y="217796" Z="-11768" delay="0" run="true" />
|
||||
<point X="140257" Y="217701" Z="-11768" delay="0" run="true" />
|
||||
<point X="140222" Y="217593" Z="-11768" delay="0" run="true" />
|
||||
<point X="140204" Y="217492" Z="-11768" delay="0" run="true" />
|
||||
<point X="140179" Y="217411" Z="-11768" delay="0" run="true" />
|
||||
<point X="140157" Y="217323" Z="-11768" delay="0" run="true" />
|
||||
<point X="140100" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="139972" Y="217277" Z="-11768" delay="0" run="true" />
|
||||
<point X="139843" Y="217279" Z="-11768" delay="0" run="true" />
|
||||
<point X="139502" Y="217276" Z="-11776" delay="10000" run="true" />
|
||||
</route>
|
||||
<route name="FPC_Giran_Evi" repeat="true" repeatStyle="cycle">
|
||||
<target id="80000" spawnX="83485" spawnY="147998" spawnZ="-3407" />
|
||||
<point X="83485" Y="147998" Z="-3407" delay="10" run="true" /> <!-- Gatekeeper -->
|
||||
|
238
L2J_Mobius_3.0_Helios/dist/game/data/instances/CrystalCavernsCoralGarden.xml
vendored
Normal file
238
L2J_Mobius_3.0_Helios/dist/game/data/instances/CrystalCavernsCoralGarden.xml
vendored
Normal file
@ -0,0 +1,238 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Crystal Caverns - Coral Garden -->
|
||||
<instance id="165" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="60" empty="3" />
|
||||
<removeBuffs type="ALL" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="142003" y="214496" z="-11600" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="149364" y="173631" z="-920" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Party" showMessageAndHtml="true">
|
||||
<param name="html" value="condNoParty.html" />
|
||||
</condition>
|
||||
<condition type="PartyLeader">
|
||||
<param name="html" value="condNoPartyLeader.html" />
|
||||
</condition>
|
||||
<condition type="GroupMin">
|
||||
<param name="limit" value="2" />
|
||||
</condition>
|
||||
<condition type="GroupMax">
|
||||
<param name="limit" value="7" />
|
||||
</condition>
|
||||
<condition type="Level">
|
||||
<param name="min" value="97" />
|
||||
</condition>
|
||||
<condition type="Distance" />
|
||||
<condition type="Reenter">
|
||||
<param name="instanceId" value="165" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<reenter apply="ON_FINISH">
|
||||
<reset day="MONDAY" hour="6" minute="30" />
|
||||
<reset day="TUESDAY" hour="6" minute="30" />
|
||||
<reset day="WEDNESDAY" hour="6" minute="30" />
|
||||
<reset day="THURSDAY" hour="6" minute="30" />
|
||||
<reset day="FRIDAY" hour="6" minute="30" />
|
||||
<reset day="SATURDAY" hour="6" minute="30" />
|
||||
<reset day="SUNDAY" hour="6" minute="30" />
|
||||
</reenter>
|
||||
<doorlist>
|
||||
<door id="24240021">
|
||||
<openStatus default="close" />
|
||||
</door>
|
||||
<door id="24240024">
|
||||
<openStatus default="open" />
|
||||
</door>
|
||||
<door id="24240025">
|
||||
<openStatus default="open" />
|
||||
</door>
|
||||
<door id="24240026">
|
||||
<openStatus default="close" />
|
||||
</door>
|
||||
</doorlist>
|
||||
<spawnlist>
|
||||
<group name="innadril24_2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_01" minZ="-11812" maxZ="-11612">
|
||||
<node x="140772" y="214027" />
|
||||
<node x="141701" y="214024" />
|
||||
<node x="141722" y="214971" />
|
||||
<node x="140776" y="214973" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="5" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_02" minZ="-11817" maxZ="-11617">
|
||||
<node x="141288" y="215403" />
|
||||
<node x="141740" y="215413" />
|
||||
<node x="141887" y="215959" />
|
||||
<node x="142400" y="216437" />
|
||||
<node x="141647" y="216436" />
|
||||
<node x="141288" y="216181" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="4" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_03m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_03" minZ="-11819" maxZ="-11619">
|
||||
<node x="140792" y="215411" />
|
||||
<node x="141224" y="215411" />
|
||||
<node x="141241" y="216166" />
|
||||
<node x="140860" y="216435" />
|
||||
<node x="140148" y="216438" />
|
||||
<node x="140635" y="215920" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="4" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_04m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_04" minZ="-11816" maxZ="-11616">
|
||||
<node x="140113" y="216495" />
|
||||
<node x="140842" y="216485" />
|
||||
<node x="140659" y="216910" />
|
||||
<node x="140646" y="217244" />
|
||||
<node x="139829" y="217222" />
|
||||
<node x="139829" y="217222" />
|
||||
<node x="139852" y="216817" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_05m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_05" minZ="-11813" maxZ="-11613">
|
||||
<node x="141670" y="216494" />
|
||||
<node x="142425" y="216494" />
|
||||
<node x="142638" y="216831" />
|
||||
<node x="142692" y="217230" />
|
||||
<node x="141859" y="217241" />
|
||||
<node x="141840" y="216891" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_06m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_06" minZ="-11817" maxZ="-11617">
|
||||
<node x="141856" y="217297" />
|
||||
<node x="142687" y="217287" />
|
||||
<node x="142550" y="217912" />
|
||||
<node x="142020" y="218441" />
|
||||
<node x="141567" y="218171" />
|
||||
<node x="141810" y="217710" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_07m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_07" minZ="-11820" maxZ="-11620">
|
||||
<node x="139832" y="217298" />
|
||||
<node x="140644" y="217281" />
|
||||
<node x="140695" y="217709" />
|
||||
<node x="140919" y="218175" />
|
||||
<node x="140469" y="218436" />
|
||||
<node x="139940" y="217889" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_08m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_08" minZ="-11812" maxZ="-11612">
|
||||
<node x="140506" y="218463" />
|
||||
<node x="140950" y="218188" />
|
||||
<node x="141244" y="218401" />
|
||||
<node x="140675" y="218807" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_09m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_09" minZ="-11829" maxZ="-11629">
|
||||
<node x="141540" y="218183" />
|
||||
<node x="142012" y="218480" />
|
||||
<node x="141815" y="218808" />
|
||||
<node x="141271" y="218405" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_10m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_10" minZ="-11815" maxZ="-11615">
|
||||
<node x="141261" y="218427" />
|
||||
<node x="141798" y="218823" />
|
||||
<node x="141732" y="219192" />
|
||||
<node x="140779" y="219201" />
|
||||
<node x="140713" y="218815" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_11m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_11" minZ="-11814" maxZ="-11614">
|
||||
<node x="140749" y="219542" />
|
||||
<node x="141733" y="219539" />
|
||||
<node x="141721" y="220520" />
|
||||
<node x="140746" y="220531" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" count="2" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" count="2" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" count="2" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_12m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_12" minZ="-11815" maxZ="-11615">
|
||||
<node x="142059" y="219549" />
|
||||
<node x="143029" y="219542" />
|
||||
<node x="143030" y="220520" />
|
||||
<node x="142059" y="220531" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" count="2" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" count="2" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" count="3" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_e2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril24_e2422_01" minZ="-11817" maxZ="-11617">
|
||||
<node x="139388" y="217164" />
|
||||
<node x="139588" y="217164" />
|
||||
<node x="139588" y="217364" />
|
||||
<node x="139388" y="217364" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19013" x="139488" y="217264" z="-11817" count="1" /> <!-- Crystalline Golem -->
|
||||
</group>
|
||||
<group name="innadril24_e2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril24_e2422_02" minZ="-11817" maxZ="-11617">
|
||||
<node x="142908" y="217164" />
|
||||
<node x="143108" y="217164" />
|
||||
<node x="143108" y="217364" />
|
||||
<node x="142908" y="217364" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19014" x="143008" y="217264" z="-11817" heading="32768" count="1" /> <!-- Crystalline Golem -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
2511
L2J_Mobius_3.0_Helios/dist/game/data/instances/CrystalCavernsEmeraldSquare.xml
vendored
Normal file
2511
L2J_Mobius_3.0_Helios/dist/game/data/instances/CrystalCavernsEmeraldSquare.xml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
694
L2J_Mobius_3.0_Helios/dist/game/data/instances/CrystalCavernsSteamCorridor.xml
vendored
Normal file
694
L2J_Mobius_3.0_Helios/dist/game/data/instances/CrystalCavernsSteamCorridor.xml
vendored
Normal file
@ -0,0 +1,694 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Crystal Caverns - Steam Corridor -->
|
||||
<instance id="164" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="60" empty="3" />
|
||||
<removeBuffs type="ALL" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="144324" y="218207" z="-12000" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="149364" y="173631" z="-920" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Party" showMessageAndHtml="true">
|
||||
<param name="html" value="condNoParty.html" />
|
||||
</condition>
|
||||
<condition type="PartyLeader">
|
||||
<param name="html" value="condNoPartyLeader.html" />
|
||||
</condition>
|
||||
<condition type="GroupMin">
|
||||
<param name="limit" value="2" />
|
||||
</condition>
|
||||
<condition type="GroupMax">
|
||||
<param name="limit" value="7" />
|
||||
</condition>
|
||||
<condition type="Level">
|
||||
<param name="min" value="97" />
|
||||
</condition>
|
||||
<condition type="Distance" />
|
||||
<condition type="Reenter">
|
||||
<param name="instanceId" value="164" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<reenter apply="ON_FINISH">
|
||||
<reset day="MONDAY" hour="6" minute="30" />
|
||||
<reset day="TUESDAY" hour="6" minute="30" />
|
||||
<reset day="WEDNESDAY" hour="6" minute="30" />
|
||||
<reset day="THURSDAY" hour="6" minute="30" />
|
||||
<reset day="FRIDAY" hour="6" minute="30" />
|
||||
<reset day="SATURDAY" hour="6" minute="30" />
|
||||
<reset day="SUNDAY" hour="6" minute="30" />
|
||||
</reenter>
|
||||
<spawnlist>
|
||||
<group name="innadril23_2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_01" minZ="-12178" maxZ="-11678">
|
||||
<node x="144778" y="217940" />
|
||||
<node x="145497" y="217937" />
|
||||
<node x="145510" y="218475" />
|
||||
<node x="144781" y="218469" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="1" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="5"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="1" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="145129" y="218189" z="-12136" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="30" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_02" minZ="-12160" maxZ="-11660">
|
||||
<node x="145563" y="217941" />
|
||||
<node x="146353" y="217943" />
|
||||
<node x="146357" y="218483" />
|
||||
<node x="145572" y="218481" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="4"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="4"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="146016" y="218235" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="34" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_03m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_03" minZ="-12167" maxZ="-11667">
|
||||
<node x="146422" y="217935" />
|
||||
<node x="147125" y="217942" />
|
||||
<node x="147128" y="218482" />
|
||||
<node x="146431" y="218475" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="3" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="5"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="3" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_01"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_03m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_03" minZ="-12167" maxZ="-11667">
|
||||
<node x="146422" y="217935" />
|
||||
<node x="147125" y="217942" />
|
||||
<node x="147128" y="218482" />
|
||||
<node x="146431" y="218475" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="146875" y="218229" z="-12167" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="37" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_04m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_04" minZ="-12160" maxZ="-11660">
|
||||
<node x="147465" y="217937" />
|
||||
<node x="148256" y="217938" />
|
||||
<node x="148259" y="218478" />
|
||||
<node x="147475" y="218477" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="4" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="6"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="4" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="147918" y="218230" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="60" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_05m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_05" minZ="-12166" maxZ="-11666">
|
||||
<node x="148258" y="217940" />
|
||||
<node x="149048" y="217942" />
|
||||
<node x="149051" y="218482" />
|
||||
<node x="148267" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="5" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="10"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="5" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="148710" y="218233" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="64" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_06m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_06" minZ="-12166" maxZ="-11666">
|
||||
<node x="149027" y="217940" />
|
||||
<node x="149818" y="217942" />
|
||||
<node x="149821" y="218482" />
|
||||
<node x="149037" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="6" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="12"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="6" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_02"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_06m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_06" minZ="-12166" maxZ="-11666">
|
||||
<node x="149027" y="217940" />
|
||||
<node x="149818" y="217942" />
|
||||
<node x="149821" y="218482" />
|
||||
<node x="149037" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="149480" y="218233" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="67" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_07m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_07" minZ="-12170" maxZ="-11670">
|
||||
<node x="150145" y="217941" />
|
||||
<node x="150856" y="217941" />
|
||||
<node x="150859" y="218481" />
|
||||
<node x="150155" y="218481" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="5"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="5"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150598" y="218234" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="90" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_08m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_08" minZ="-12170" maxZ="-11670">
|
||||
<node x="150935" y="217936" />
|
||||
<node x="151726" y="217942" />
|
||||
<node x="151729" y="218482" />
|
||||
<node x="150945" y="218476" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="8" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="15"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="8" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="151388" y="218229" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="94" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_09m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_09" minZ="-12170" maxZ="-11670">
|
||||
<node x="151791" y="217952" />
|
||||
<node x="152499" y="217939" />
|
||||
<node x="152502" y="218479" />
|
||||
<node x="151801" y="218492" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="9" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="3"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="9" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_03"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_09m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_09" minZ="-12170" maxZ="-11670">
|
||||
<node x="151791" y="217952" />
|
||||
<node x="152499" y="217939" />
|
||||
<node x="152502" y="218479" />
|
||||
<node x="151801" y="218492" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="152244" y="218245" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="97" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_10m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_10" minZ="-12166" maxZ="-11666">
|
||||
<node x="145650" y="219795" />
|
||||
<node x="146356" y="219796" />
|
||||
<node x="146358" y="220337" />
|
||||
<node x="145652" y="220331" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="10" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="10"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="10" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="145984" y="220051" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="120" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_11m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_11" minZ="-12166" maxZ="-11666">
|
||||
<node x="146468" y="219793" />
|
||||
<node x="147174" y="219794" />
|
||||
<node x="147176" y="220335" />
|
||||
<node x="146470" y="220329" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="11" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="11" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="146802" y="220049" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="124" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_12m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_12" minZ="-12166" maxZ="-11666">
|
||||
<node x="147298" y="219800" />
|
||||
<node x="148004" y="219801" />
|
||||
<node x="148006" y="220342" />
|
||||
<node x="147300" y="220336" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="12" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="12" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_04"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="3"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="12" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_04"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_12m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_12" minZ="-12166" maxZ="-11666">
|
||||
<node x="147298" y="219800" />
|
||||
<node x="148004" y="219801" />
|
||||
<node x="148006" y="220342" />
|
||||
<node x="147300" y="220336" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="147632" y="220056" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="127" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_13m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_13" minZ="-12165" maxZ="-11665">
|
||||
<node x="148361" y="219796" />
|
||||
<node x="149067" y="219797" />
|
||||
<node x="149069" y="220338" />
|
||||
<node x="148363" y="220332" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="15"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="148695" y="220052" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="150" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_14m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_14" minZ="-12165" maxZ="-11665">
|
||||
<node x="149095" y="219796" />
|
||||
<node x="149801" y="219797" />
|
||||
<node x="149803" y="220338" />
|
||||
<node x="149097" y="220332" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="17"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="17"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="149429" y="220052" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="154" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_15m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_15" minZ="-12165" maxZ="-11665">
|
||||
<node x="149865" y="219798" />
|
||||
<node x="150571" y="219799" />
|
||||
<node x="150573" y="220340" />
|
||||
<node x="149867" y="220334" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="15" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="5"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="15" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_05"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_15m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_15" minZ="-12165" maxZ="-11665">
|
||||
<node x="149865" y="219798" />
|
||||
<node x="150571" y="219799" />
|
||||
<node x="150573" y="220340" />
|
||||
<node x="149867" y="220334" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="150199" y="220054" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="157" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_16m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_16" minZ="-12160" maxZ="-11660">
|
||||
<node x="149819" y="215314" />
|
||||
<node x="150580" y="215309" />
|
||||
<node x="150592" y="215840" />
|
||||
<node x="149834" y="215842" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="16" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="20"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="16" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150198" y="215606" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="180" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_17m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_17" minZ="-12160" maxZ="-11660">
|
||||
<node x="150589" y="215313" />
|
||||
<node x="151350" y="215308" />
|
||||
<node x="151362" y="215839" />
|
||||
<node x="150604" y="215841" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="17" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="5"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="17" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150968" y="215605" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="184" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_18m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_18" minZ="-12160" maxZ="-11660">
|
||||
<node x="151375" y="215317" />
|
||||
<node x="152136" y="215312" />
|
||||
<node x="152148" y="215843" />
|
||||
<node x="151390" y="215845" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="18" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="20"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="18" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_05"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_18m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_18" minZ="-12160" maxZ="-11660">
|
||||
<node x="151375" y="215317" />
|
||||
<node x="152136" y="215312" />
|
||||
<node x="152148" y="215843" />
|
||||
<node x="151390" y="215845" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="151754" y="215609" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="187" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_mb2422m1">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422" minZ="-12140" maxZ="-11740">
|
||||
<node x="154093" y="215667" />
|
||||
<node x="153813" y="215602" />
|
||||
<node x="153627" y="215436" />
|
||||
<node x="153537" y="215291" />
|
||||
<node x="153506" y="215131" />
|
||||
<node x="153555" y="214913" />
|
||||
<node x="153696" y="214713" />
|
||||
<node x="153892" y="214590" />
|
||||
<node x="154087" y="214538" />
|
||||
<node x="154301" y="214602" />
|
||||
<node x="154479" y="214720" />
|
||||
<node x="154601" y="214903" />
|
||||
<node x="154646" y="215119" />
|
||||
<node x="154613" y="215288" />
|
||||
<node x="154550" y="215411" />
|
||||
<node x="154462" y="215527" />
|
||||
<node x="154304" y="215624" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="154078" y="215125" z="-12140" respawnTime="1min" count="1" /> <!-- Fire Region -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt1m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt1" minZ="-12145" maxZ="-11945">
|
||||
<node x="146993" y="218107" />
|
||||
<node x="147193" y="218107" />
|
||||
<node x="147193" y="218307" />
|
||||
<node x="146993" y="218307" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="147148" y="218208" z="-12112" heading="32624" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt2m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt2" minZ="-12147" maxZ="-11947">
|
||||
<node x="149740" y="218107" />
|
||||
<node x="149940" y="218107" />
|
||||
<node x="149940" y="218307" />
|
||||
<node x="149740" y="218307" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="149818" y="218208" z="-12096" heading="32496" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt3m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt3" minZ="-12141" maxZ="-11941">
|
||||
<node x="152440" y="218104" />
|
||||
<node x="152640" y="218104" />
|
||||
<node x="152640" y="218304" />
|
||||
<node x="152440" y="218304" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="152538" y="218208" z="-12096" heading="32552" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt4m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt4" minZ="-12146" maxZ="-11946">
|
||||
<node x="147916" y="219968" />
|
||||
<node x="148116" y="219968" />
|
||||
<node x="148116" y="220168" />
|
||||
<node x="147916" y="220168" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="148022" y="220069" z="-12112" heading="-32568" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt5m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt5" minZ="-12144" maxZ="-11944">
|
||||
<node x="150613" y="219960" />
|
||||
<node x="150813" y="219960" />
|
||||
<node x="150813" y="220160" />
|
||||
<node x="150613" y="220160" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="150699" y="220064" z="-12112" heading="-32696" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt6m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt6" minZ="-12143" maxZ="-11943">
|
||||
<node x="152084" y="215474" />
|
||||
<node x="152284" y="215474" />
|
||||
<node x="152284" y="215674" />
|
||||
<node x="152084" y="215674" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="152214" y="215586" z="-12112" heading="32568" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
@ -0,0 +1,215 @@
|
||||
/*
|
||||
* 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 ai.areas.Parnassus.EntrancePortalToCrystalCaverns;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.OnEventTrigger;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
import instances.CrystalCaverns.CrystalCavernsCoralGarden;
|
||||
import instances.CrystalCaverns.CrystalCavernsEmeraldSquare;
|
||||
import instances.CrystalCaverns.CrystalCavernsSteamCorridor;
|
||||
|
||||
/**
|
||||
* Entrance Portal to Crystal Caverns AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class EntrancePortalToCrystalCaverns extends AbstractNpcAI
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
// Misc
|
||||
private static final int EMERALD_SQUARE_TEMPLATE_ID = 163;
|
||||
private static final int STEAM_CORRIDOR_TEMPLATE_ID = 164;
|
||||
private static final int CORAL_GARDEN_TEMPLATE_ID = 165;
|
||||
private static final int PRISON_ENTRACE_TRIGGER_1 = 24230010;
|
||||
private static final int PRISON_ENTRACE_TRIGGER_2 = 24230012;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_1 = 24230014;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_2 = 24230016;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_3 = 24230018;
|
||||
|
||||
private EntrancePortalToCrystalCaverns()
|
||||
{
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addFirstTalkId(CAVERNS_ENTRACE);
|
||||
addSpawnId(CAVERNS_ENTRACE);
|
||||
addSeeCreatureId(CAVERNS_ENTRACE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
Quest instanceScript = null;
|
||||
|
||||
switch (getCurrentInstanceTemplateId())
|
||||
{
|
||||
case EMERALD_SQUARE_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsEmeraldSquare.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
case STEAM_CORRIDOR_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsSteamCorridor.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
case CORAL_GARDEN_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsCoralGarden.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (instanceScript != null)
|
||||
{
|
||||
instanceScript.notifyEvent(event, npc, player);
|
||||
}
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
return "EntrancePortal_" + getCurrentInstanceTemplateId() + ".html";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
getTimers().addRepeatingTimer("LOOP_TIMER", 10000, npc, null);
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("LOOP_TIMER"))
|
||||
{
|
||||
final int currentTemplateId = getCurrentInstanceTemplateId();
|
||||
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, PlayerInstance.class, 500, p ->
|
||||
{
|
||||
updateTriggersForPlayer(player, currentTemplateId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSeeCreature(Npc npc, Creature creature, boolean isSummon)
|
||||
{
|
||||
if (creature.isPlayer())
|
||||
{
|
||||
creature.getActingPlayer().sendPacket(new OnEventTrigger(PRISON_ENTRACE_TRIGGER_1, true));
|
||||
creature.getActingPlayer().sendPacket(new OnEventTrigger(PRISON_ENTRACE_TRIGGER_2, true));
|
||||
updateTriggersForPlayer(creature.getActingPlayer(), getCurrentInstanceTemplateId());
|
||||
}
|
||||
return super.onSeeCreature(npc, creature, isSummon);
|
||||
}
|
||||
|
||||
public void updateTriggersForPlayer(PlayerInstance player, int currentTemplateId)
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_1, false));
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_2, false));
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_3, false));
|
||||
|
||||
switch (currentTemplateId)
|
||||
{
|
||||
case EMERALD_SQUARE_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_1, true));
|
||||
break;
|
||||
}
|
||||
case STEAM_CORRIDOR_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_2, true));
|
||||
break;
|
||||
}
|
||||
case CORAL_GARDEN_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_3, true));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getCurrentInstanceTemplateId()
|
||||
{
|
||||
final int day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
|
||||
final int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
|
||||
int templateId = -1;
|
||||
|
||||
switch (day)
|
||||
{
|
||||
case Calendar.MONDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.TUESDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? CORAL_GARDEN_TEMPLATE_ID : EMERALD_SQUARE_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.WEDNESDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? STEAM_CORRIDOR_TEMPLATE_ID : CORAL_GARDEN_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.THURSDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.FRIDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? CORAL_GARDEN_TEMPLATE_ID : EMERALD_SQUARE_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.SATURDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? STEAM_CORRIDOR_TEMPLATE_ID : CORAL_GARDEN_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.SUNDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return templateId;
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new EntrancePortalToCrystalCaverns();
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Emerald Square</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Steam Corridor</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Coral Garden</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
253
L2J_Mobius_3.0_Helios/dist/game/data/scripts/instances/CrystalCaverns/CrystalCavernsCoralGarden.java
vendored
Normal file
253
L2J_Mobius_3.0_Helios/dist/game/data/scripts/instances/CrystalCaverns/CrystalCavernsCoralGarden.java
vendored
Normal file
@ -0,0 +1,253 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.WalkingManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.Spawn;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Coral Garden instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsCoralGarden extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int MICHAELA_NORMAL = 25799;
|
||||
private static final int MICHAELA_WISE = 26116;
|
||||
private static final int MICHAELA_WEALTHY = 26115;
|
||||
private static final int MICHAELA_ARMED = 26114;
|
||||
private static final int GOLEM_1 = 19013; // Crystalline Golem
|
||||
private static final int GOLEM_2 = 19014; // Crystalline Golem
|
||||
// Location
|
||||
private static final Location BOSS_LOC = new Location(144307, 220032, -11824);
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 165;
|
||||
private static final int BOSS_DOOR_ID = 24240026;
|
||||
private static final int PLAYER_MAX_DISTANCE = 250;
|
||||
|
||||
public CrystalCavernsCoralGarden()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addFirstTalkId(GOLEM_1, GOLEM_2);
|
||||
addKillId(MICHAELA_NORMAL, MICHAELA_WISE, MICHAELA_WEALTHY, MICHAELA_ARMED);
|
||||
addAttackId(MICHAELA_NORMAL, MICHAELA_WISE, MICHAELA_WEALTHY, MICHAELA_ARMED);
|
||||
addRouteFinishedId(GOLEM_1, GOLEM_2);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "SUCCESS_TIMER":
|
||||
{
|
||||
showOnScreenMsg(instance, NpcStringId.GOLEM_LOCATION_SUCCESSFUL_ENTRY_ACCESSED, ExShowScreenMessage.MIDDLE_CENTER, 5000);
|
||||
break;
|
||||
}
|
||||
case "LOOP_TIMER":
|
||||
{
|
||||
player = npcVars.getObject("PLAYER_OBJECT", PlayerInstance.class);
|
||||
|
||||
if ((player != null) && (npc.calculateDistance3D(player) > PLAYER_MAX_DISTANCE) && npcVars.getBoolean("NPC_FOLLOWING", true))
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
addMoveToDesire(npc, new Location(npc.getX() + getRandom(-100, 100), npc.getY() + getRandom(-150, 150), npc.getZ()), 23);
|
||||
npc.setRunning();
|
||||
npcVars.set("NPC_FOLLOWING", false);
|
||||
getTimers().cancelTimer("LOOP_TIMER", npc, null);
|
||||
getTimers().addTimer("FAIL_TIMER", 5000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "FAIL_TIMER":
|
||||
{
|
||||
final Spawn spawn = npc.getSpawn();
|
||||
|
||||
if (!npcVars.getBoolean("NPC_FOLLOWING", true))
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
npc.setWalking();
|
||||
npc.teleToLocation(npc.getSpawn().getX(), npc.getSpawn().getY(), npc.getSpawn().getZ());
|
||||
npc.setScriptValue(0);
|
||||
npc.setNameString(null);
|
||||
npc.setTitleString(null);
|
||||
npc.setTitle(null);
|
||||
npc.broadcastInfo();
|
||||
}
|
||||
npcVars.set("CAN_CALL_MONSTERS", ((spawn.getX() - ((npc.getX() * spawn.getX()) - npc.getX())) + (spawn.getY() - (npc.getY() * spawn.getY()) - npc.getY())) > (200 * 200));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.getVariables().set("PLAYER_OBJECT", player);
|
||||
npc.setNameString(NpcStringId.TRAITOR_CRYSTALLINE_GOLEM);
|
||||
npc.setTitleString(NpcStringId.GIVEN_TO_S1);
|
||||
npc.setTitle(player.getName());
|
||||
npc.broadcastInfo();
|
||||
WalkingManager.getInstance().startMoving(npc, npc.getId() == GOLEM_1 ? "gd_golem_1" : "gd_golem_2");
|
||||
getTimers().addRepeatingTimer("LOOP_TIMER", 500, npc, null);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRouteFinished(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (instance != null)
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
showOnScreenMsg(instance, NpcStringId.GOLEM_ENTERED_THE_REQUIRED_ZONE, ExShowScreenMessage.MIDDLE_CENTER, 5000);
|
||||
npc.deleteMe();
|
||||
|
||||
if (instance.getAliveNpcs(GOLEM_1, GOLEM_2).isEmpty())
|
||||
{
|
||||
instance.openCloseDoor(BOSS_DOOR_ID, true);
|
||||
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = MICHAELA_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = MICHAELA_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = MICHAELA_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = MICHAELA_ARMED;
|
||||
}
|
||||
|
||||
final Npc boss = addSpawn(bossId, BOSS_LOC, false, 0, false, instance.getId());
|
||||
getTimers().addTimer("SUCCESS_TIMER", 5000, boss, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MICHAELA_NORMAL:
|
||||
case MICHAELA_WISE:
|
||||
case MICHAELA_WEALTHY:
|
||||
case MICHAELA_ARMED:
|
||||
{
|
||||
instance.finishInstance();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MICHAELA_NORMAL:
|
||||
case MICHAELA_WISE:
|
||||
case MICHAELA_WEALTHY:
|
||||
case MICHAELA_ARMED:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
instance.openCloseDoor(BOSS_DOOR_ID, false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsCoralGarden();
|
||||
}
|
||||
}
|
@ -0,0 +1,424 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Emerald Square instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsEmeraldSquare extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int VERIDAN_NORMAL = 25796;
|
||||
private static final int VERIDAN_WISE = 26107;
|
||||
private static final int VERIDAN_WEALTHY = 26106;
|
||||
private static final int VERIDAN_ARMED = 26105;
|
||||
private static final int WATER_CANNON = 19008;
|
||||
private static final int WATER_CANNON_SKILL = 19009;
|
||||
private static final int STRONGHOLD_PROTECTOR = 23012;
|
||||
private static final int SQUARE_INTRUDER = 23010;
|
||||
private static final int SQUARE_ATTACKER = 23011;
|
||||
// Skills
|
||||
private static final SkillHolder DESTROY_SKILL = new SkillHolder(12003, 1);
|
||||
private static final SkillHolder WATER_CANNON_SKILL_ATTACK = new SkillHolder(14179, 1);
|
||||
// Locations
|
||||
private static final Location[] BOSS_SPAWNS =
|
||||
{
|
||||
new Location(152745, 145957, -12584, 16446),
|
||||
new Location(152816, 145968, -12633, 16446),
|
||||
};
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 163;
|
||||
private static final int RAID_DOOR_1 = 24220005;
|
||||
private static final int RAID_DOOR_2 = 24220006;
|
||||
|
||||
public CrystalCavernsEmeraldSquare()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addSpawnId(WATER_CANNON);
|
||||
addKillId(WATER_CANNON, VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED);
|
||||
addAttackId(WATER_CANNON, VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED);
|
||||
addSpellFinishedId(WATER_CANNON_SKILL);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
setCreatureSeeId(this::onCreatureSee, WATER_CANNON);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "HP_REGEN_TIMER":
|
||||
{
|
||||
int value = ((baseId == 5) || (baseId == 6)) ? 5 : baseId;
|
||||
npc.getStat().addFixedValue(Stats.REGENERATE_HP_RATE, Double.valueOf(value * 1000));
|
||||
break;
|
||||
}
|
||||
case "SUPPORT_SPAWN_TIMER":
|
||||
{
|
||||
int supportVal = npcVars.getInt("SUPPORT_VALUE", 0);
|
||||
|
||||
if (supportVal > 3)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((supportVal == 0) || (supportVal == 1) || (supportVal == 2))
|
||||
{
|
||||
final String spawnName = npcParams.getString("SupportMaker" + (supportVal + 1), null);
|
||||
if (spawnName != null)
|
||||
{
|
||||
instance.spawnGroup(spawnName);
|
||||
}
|
||||
npcVars.increaseInt("SUPPORT_VALUE", 1);
|
||||
}
|
||||
|
||||
if (!npcVars.getBoolean("PREVIOUS_BASE_DESTROYED", false))
|
||||
{
|
||||
getTimers().addTimer("SUPPORT_SPAWN_TIMER", 60000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "CANNON_LOOP_ATTACK":
|
||||
{
|
||||
if (npc.getCurrentHpPercent() > 30)
|
||||
{
|
||||
if (npcVars.getBoolean("IS_DESTROY_ACTIVATED", false) || (getRandom(10) < 2))
|
||||
{
|
||||
final Npc cannonSkill = addSpawn(WATER_CANNON_SKILL, npc, true, 0, false, instance.getId());
|
||||
addSkillCastDesire(cannonSkill, cannonSkill, WATER_CANNON_SKILL_ATTACK, 23);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SUICIDE_TIMER":
|
||||
{
|
||||
npc.doDie(null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VERIDAN_WISE:
|
||||
case VERIDAN_WEALTHY:
|
||||
case VERIDAN_ARMED:
|
||||
{
|
||||
if (!npcVars.getBoolean("CLOSED_DOORS", false))
|
||||
{
|
||||
npcVars.set("CLOSED_DOORS", true);
|
||||
instance.openCloseDoor(RAID_DOOR_2, false);
|
||||
}
|
||||
}
|
||||
case WATER_CANNON:
|
||||
{
|
||||
if ((skill != null) && (skill.getId() == DESTROY_SKILL.getSkillId()) && !npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npcVars.set("IS_DESTROY_ACTIVATED", true);
|
||||
npc.setDisplayEffect(2);
|
||||
getTimers().addTimer("SUICIDE_TIMER", 60000, npc, null);
|
||||
}
|
||||
|
||||
if (npc.getCurrentHpPercent() < 30)
|
||||
{
|
||||
if (!npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npc.setDisplayEffect(3);
|
||||
|
||||
}
|
||||
}
|
||||
else if (!npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npc.setDisplayEffect(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VERIDAN_NORMAL:
|
||||
case VERIDAN_WISE:
|
||||
case VERIDAN_WEALTHY:
|
||||
case VERIDAN_ARMED:
|
||||
{
|
||||
if (instance.getAliveNpcs(VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED).isEmpty())
|
||||
{
|
||||
instance.finishInstance();
|
||||
}
|
||||
else
|
||||
{
|
||||
instance.setReenterTime();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WATER_CANNON:
|
||||
{
|
||||
npc.setDisplayEffect(4);
|
||||
showOnScreenMsg(instance, NpcStringId.SUCCESSFUL_DESTRUCTION_OF_STRONGHOLD_S1, ExShowScreenMessage.MIDDLE_CENTER, 4000, String.valueOf(npc.getParameters().getInt("base_id", -1)));
|
||||
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, MonsterInstance.class, 400, monster ->
|
||||
{
|
||||
if ((monster.getId() == STRONGHOLD_PROTECTOR) || (monster.getId() == SQUARE_INTRUDER) || (monster.getId() == SQUARE_ATTACKER))
|
||||
{
|
||||
monster.doDie(null);
|
||||
}
|
||||
});
|
||||
|
||||
instance.getAliveNpcs(WATER_CANNON).forEach(cannon ->
|
||||
{
|
||||
final int cannonBaseId = cannon.getParameters().getInt("base_id", -1);
|
||||
|
||||
switch (baseId)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
if (cannonBaseId == 2)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (cannonBaseId == 3)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
if (cannonBaseId == 4)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
if ((cannonBaseId == 5) || (cannonBaseId == 6))
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
case 6:
|
||||
{
|
||||
if (cannonBaseId == 7)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
if ((cannonBaseId == 8) || (cannonBaseId == 9))
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if ((baseId == 8) || (baseId == 9))
|
||||
{
|
||||
instance.getParameters().increaseInt("MAIN_TARGETS_KILLED", 0, 1);
|
||||
|
||||
if (instance.getParameters().getInt("MAIN_TARGETS_KILLED", 0) == 2)
|
||||
{
|
||||
showOnScreenMsg(instance, NpcStringId.SUCCESSFUL_DESTRUCTION_OF_STRONGHOLD_ENTRY_ACCESSED, ExShowScreenMessage.MIDDLE_CENTER, 4000);
|
||||
instance.openCloseDoor(RAID_DOOR_1, true);
|
||||
instance.openCloseDoor(RAID_DOOR_2, true);
|
||||
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = VERIDAN_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = VERIDAN_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = VERIDAN_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = VERIDAN_ARMED;
|
||||
}
|
||||
|
||||
for (Location loc : BOSS_SPAWNS)
|
||||
{
|
||||
addSpawn(bossId, loc, false, 0, false, instance.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpellFinished(Npc npc, PlayerInstance player, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance) && (npc.getId() == WATER_CANNON_SKILL) && (skill.getId() == WATER_CANNON_SKILL_ATTACK.getSkillId()))
|
||||
{
|
||||
npc.deleteMe();
|
||||
}
|
||||
return super.onSpellFinished(npc, player, skill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case WATER_CANNON:
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
if (baseId != 1)
|
||||
{
|
||||
npc.setTargetable(false);
|
||||
}
|
||||
|
||||
getTimers().addTimer("HP_REGEN_TIMER", 10000, npc, null);
|
||||
|
||||
if (baseId > 0)
|
||||
{
|
||||
getTimers().addTimer("SUPPORT_SPAWN_TIMER", (baseId * 60) * 1000, npc, null);
|
||||
}
|
||||
npc.initSeenCreatures();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
public void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final Creature creature = event.getSeen();
|
||||
final Npc npc = (Npc) event.getSeer();
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
|
||||
if ((world != null) && creature.isPlayer() && npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.setDisplayEffect(1);
|
||||
getTimers().addRepeatingTimer("CANNON_LOOP_ATTACK", 1000, npc, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsEmeraldSquare();
|
||||
}
|
||||
}
|
@ -0,0 +1,408 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.ChatType;
|
||||
import org.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneType;
|
||||
import org.l2jmobius.gameserver.model.zone.type.TeleportZone;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Steam Corridor instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsSteamCorridor extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int KECHI_NORMAL = 25797;
|
||||
private static final int KECHI_WISE = 26113;
|
||||
private static final int KECHI_WEALTHY = 26112;
|
||||
private static final int KECHI_ARMED = 26111;
|
||||
private static final int VICIOUS_DUELER = 23014;
|
||||
private static final int VICIOUS_WARRIOR = 23016;
|
||||
private static final int VICIOUS_SWORDSMAN = 23015;
|
||||
private static final int SPIRIT_PROTECTOR = 23013;
|
||||
private static final int FIRE_REGION = 19161;
|
||||
private static final int PLAYER_DETECTOR = 19075;
|
||||
private static final int TRAP_1 = 19011;
|
||||
private static final int TRAP_2 = 19012;
|
||||
// Skills
|
||||
private static final SkillHolder FIRE_SKILL_1 = new SkillHolder(14373, 1);
|
||||
private static final SkillHolder FIRE_SKILL_2 = new SkillHolder(14373, 2);
|
||||
private static final SkillHolder FIRE_SKILL_3 = new SkillHolder(14197, 1);
|
||||
private static final SkillHolder TRAP_SKILL_1 = new SkillHolder(14180, 1);
|
||||
private static final SkillHolder TRAP_SKILL_2 = new SkillHolder(14181, 1);
|
||||
private static final SkillHolder TRAP_SKILL_3 = new SkillHolder(14372, 1);
|
||||
// Location
|
||||
private static final Location BOSS_LOC = new Location(154078, 215125, -12140);
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 164;
|
||||
|
||||
public CrystalCavernsSteamCorridor()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addAttackId(TRAP_1, TRAP_2);
|
||||
addKillId(VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN, KECHI_NORMAL, KECHI_WISE, KECHI_WEALTHY, KECHI_ARMED);
|
||||
addSpawnId(SPIRIT_PROTECTOR, VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN, FIRE_REGION, PLAYER_DETECTOR);
|
||||
addEventReceivedId(SPIRIT_PROTECTOR, VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN);
|
||||
addInstanceCreatedId(TEMPLATE_ID);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
setCreatureSeeId(this::onCreatureSee, PLAYER_DETECTOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "FIRE_REGION_TIMER_1":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_1, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_2", 10000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "FIRE_REGION_TIMER_2":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_2, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_3", 10000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "FIRE_REGION_TIMER_3":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_3, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_3", 1000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "TRAP_REACT_TIMER":
|
||||
{
|
||||
final int timer = npcVars.increaseInt("TIMER_VAL", -1);
|
||||
if (timer > 0)
|
||||
{
|
||||
npc.broadcastSay(ChatType.NPC_GENERAL, " " + timer);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (npc.getId() == TRAP_1)
|
||||
{
|
||||
addSkillCastDesire(npc, npc, (getRandom(10) < 8 ? TRAP_SKILL_1 : TRAP_SKILL_3), 23);
|
||||
}
|
||||
else if (npc.getId() == TRAP_2)
|
||||
{
|
||||
addSkillCastDesire(npc, npc, (getRandom(10) < 8 ? TRAP_SKILL_2 : TRAP_SKILL_3), 23);
|
||||
}
|
||||
}
|
||||
getTimers().addTimer("TRAP_REACT_TIMER", 1000, npc, null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceCreated(Instance instance, PlayerInstance player)
|
||||
{
|
||||
instance.setStatus(1);
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
final ZoneType zone = ZoneManager.getInstance().getZoneByName("24_24_fire_telezone_0" + i, TeleportZone.class);
|
||||
if (zone != null)
|
||||
{
|
||||
zone.setEnabled(false, instance.getId());
|
||||
}
|
||||
}
|
||||
super.onInstanceCreated(instance, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case SPIRIT_PROTECTOR:
|
||||
case VICIOUS_DUELER:
|
||||
case VICIOUS_WARRIOR:
|
||||
case VICIOUS_SWORDSMAN:
|
||||
{
|
||||
npc.setTargetable(false);
|
||||
npc.disableCoreAI(true);
|
||||
npc.setInvisible(true);
|
||||
break;
|
||||
}
|
||||
case FIRE_REGION:
|
||||
{
|
||||
final int timeLimit = npcParams.getInt("Limit_Time", 0);
|
||||
if (timeLimit > 0)
|
||||
{
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_1", ((timeLimit * 30) * 100), npc, null);
|
||||
}
|
||||
npc.setTargetable(false);
|
||||
npc.setIsInvul(true);
|
||||
npc.setRandomAnimation(false);
|
||||
npc.setRandomWalking(false);
|
||||
npc.disableCoreAI(true);
|
||||
break;
|
||||
}
|
||||
case PLAYER_DETECTOR:
|
||||
{
|
||||
npc.initSeenCreatures();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onEventReceived(String eventName, Npc sender, Npc receiver, WorldObject reference)
|
||||
{
|
||||
final Instance instance = receiver.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = receiver.getParameters();
|
||||
|
||||
if (eventName.equals(String.valueOf(24220005 + npcParams.getInt("Terri_ID", 0))))
|
||||
{
|
||||
receiver.setTargetable(true);
|
||||
receiver.disableCoreAI(false);
|
||||
receiver.setInvisible(false);
|
||||
}
|
||||
}
|
||||
return super.onEventReceived(eventName, sender, receiver, reference);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case TRAP_1:
|
||||
case TRAP_2:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
getTimers().addTimer("TRAP_REACT_TIMER", 1000, npc, null);
|
||||
npc.setScriptValue(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int killTarget = instance.getParameters().getInt("KILL_TARGET", 5);
|
||||
int currentKillCount = instance.getParameters().getInt("KILL_COUNT", 0);
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VICIOUS_DUELER:
|
||||
case VICIOUS_WARRIOR:
|
||||
case VICIOUS_SWORDSMAN:
|
||||
{
|
||||
if (npcParams.getInt("last_checker", 0) == 1)
|
||||
{
|
||||
currentKillCount = instance.getParameters().increaseInt("KILL_COUNT", 0, 1);
|
||||
|
||||
if (currentKillCount >= killTarget)
|
||||
{
|
||||
final ZoneType zone = ZoneManager.getInstance().getZoneByName(npc.getParameters().getString("AreaTeleName"), TeleportZone.class);
|
||||
if (zone != null)
|
||||
{
|
||||
zone.setEnabled(true, instance.getId());
|
||||
showOnScreenMsg(instance, NpcStringId.THE_PORTAL_TO_THE_NEXT_ROOM_IS_NOW_OPEN, ExShowScreenMessage.MIDDLE_CENTER, 4000);
|
||||
instance.spawnGroup("innadril23_mb2422_pt" + instance.getStatus() + "m1");
|
||||
instance.getParameters().set("KILL_COUNT", 0);
|
||||
|
||||
switch (instance.getStatus())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 12);
|
||||
instance.setStatus(2);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 3);
|
||||
instance.setStatus(3);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 18);
|
||||
instance.setStatus(4);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 5);
|
||||
instance.setStatus(5);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 20);
|
||||
instance.setStatus(6);
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = KECHI_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = KECHI_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = KECHI_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = KECHI_ARMED;
|
||||
}
|
||||
|
||||
addSpawn(bossId, BOSS_LOC, false, 0, false, instance.getId());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER.warning("Cannot find teleport zone for Crystal Cavern: Steam Corridor instance!!!");
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case KECHI_NORMAL:
|
||||
case KECHI_WISE:
|
||||
case KECHI_WEALTHY:
|
||||
case KECHI_ARMED:
|
||||
{
|
||||
instance.finishInstance();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
private void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final Creature creature = event.getSeen();
|
||||
final Npc npc = (Npc) event.getSeer();
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
|
||||
if (isInInstance(instance) && creature.isPlayer())
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case PLAYER_DETECTOR:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.broadcastEvent(String.valueOf(24220005 + npcParams.getInt("Terri_ID", 0)), 2000, null);
|
||||
|
||||
for (int i = 0; i < getRandom(5); i++)
|
||||
{
|
||||
final Npc trap = addSpawn(((npcParams.getInt("MobType", 0) == 0) ? TRAP_1 : TRAP_2), npc, true, 0, false, instance.getId());
|
||||
trap.getVariables().set("TIMER_VAL", 4);
|
||||
}
|
||||
npc.deleteMe();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsSteamCorridor();
|
||||
}
|
||||
}
|
3
L2J_Mobius_3.0_Helios/dist/game/data/scripts/instances/CrystalCaverns/condNoParty.html
vendored
Normal file
3
L2J_Mobius_3.0_Helios/dist/game/data/scripts/instances/CrystalCaverns/condNoParty.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Crystal Caverns Admission Portal:<br>
|
||||
You must be in a party to enter.
|
||||
</body></html>
|
3
L2J_Mobius_3.0_Helios/dist/game/data/scripts/instances/CrystalCaverns/condNoPartyLeader.html
vendored
Normal file
3
L2J_Mobius_3.0_Helios/dist/game/data/scripts/instances/CrystalCaverns/condNoPartyLeader.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Crystal Caverns Admission Portal:<br>
|
||||
The leader of the party should try to enter.
|
||||
</body></html>
|
@ -366,7 +366,7 @@
|
||||
<height normal="13" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="19013" level="96" type="Npc" name="Crystalline Golem">
|
||||
<npc id="19013" level="96" type="FriendlyNpc" name="Crystalline Golem" usingServerSideTitle="true">
|
||||
<!-- AUTO GENERATED NPC TODO: FIX IT -->
|
||||
<parameters>
|
||||
<skill name="Link_Skill_01" id="14283" level="1" />
|
||||
@ -403,7 +403,7 @@
|
||||
<height normal="47" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="19014" level="96" type="Npc" name="Crystalline Golem">
|
||||
<npc id="19014" level="96" type="FriendlyNpc" name="Crystalline Golem" usingServerSideTitle="true">
|
||||
<!-- AUTO GENERATED NPC TODO: FIX IT -->
|
||||
<parameters>
|
||||
<skill name="Link_Skill_01" id="14283" level="1" />
|
||||
|
@ -154,6 +154,72 @@
|
||||
<node X="108616" Y="-41676" />
|
||||
<node X="108816" Y="-40776" />
|
||||
<node X="107856" Y="-40652" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_01" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="147444" />
|
||||
<stat name="oustY" val="218208" />
|
||||
<stat name="oustZ" val="-12117" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="147204" Y="218138" />
|
||||
<node X="147200" Y="218279" />
|
||||
<node X="147138" Y="218278" />
|
||||
<node X="147133" Y="218135" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_02" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="150143" />
|
||||
<stat name="oustY" val="218205" />
|
||||
<stat name="oustZ" val="-12121" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="149886" Y="218138" />
|
||||
<node X="149884" Y="218278" />
|
||||
<node X="149822" Y="218274" />
|
||||
<node X="149833" Y="218135" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_03" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="145610" />
|
||||
<stat name="oustY" val="220065" />
|
||||
<stat name="oustZ" val="-12106" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="152585" Y="218139" />
|
||||
<node X="152579" Y="218276" />
|
||||
<node X="152514" Y="218272" />
|
||||
<node X="152521" Y="218134" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_04" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="148309" />
|
||||
<stat name="oustY" val="220064" />
|
||||
<stat name="oustZ" val="-12118" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="148064" Y="219993" />
|
||||
<node X="148061" Y="220133" />
|
||||
<node X="147999" Y="220129" />
|
||||
<node X="148007" Y="219994" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_05" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="149761" />
|
||||
<stat name="oustY" val="215582" />
|
||||
<stat name="oustZ" val="-12104" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="150747" Y="219991" />
|
||||
<node X="150748" Y="220132" />
|
||||
<node X="150688" Y="220134" />
|
||||
<node X="150697" Y="219994" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_06" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="153400" />
|
||||
<stat name="oustY" val="215138" />
|
||||
<stat name="oustZ" val="-12102" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="152267" Y="215518" />
|
||||
<node X="152258" Y="215654" />
|
||||
<node X="152173" Y="215653" />
|
||||
<node X="152180" Y="215514" />
|
||||
</zone>
|
||||
<zone name="26_20_orbis_enter" type="TeleportZone" shape="NPoly" minZ="-458" maxZ="-158">
|
||||
<stat name="oustX" val="213983" />
|
||||
|
@ -2476,6 +2476,79 @@
|
||||
<point X="182894" Y="17577" Z="-10304" delay="2" run="true" />
|
||||
<point X="182426" Y="18210" Z="-10304" delay="3" run="true" />
|
||||
</route>
|
||||
<route name="gd_golem_1" repeat="false" repeatStyle="back">
|
||||
<point X="139821" Y="217257" Z="-11768" delay="0" run="true" />
|
||||
<point X="139925" Y="217250" Z="-11768" delay="0" run="true" />
|
||||
<point X="140050" Y="217251" Z="-11768" delay="0" run="true" />
|
||||
<point X="140137" Y="217244" Z="-11768" delay="0" run="true" />
|
||||
<point X="140156" Y="217190" Z="-11768" delay="0" run="true" />
|
||||
<point X="140170" Y="217104" Z="-11768" delay="0" run="true" />
|
||||
<point X="140198" Y="217003" Z="-11768" delay="0" run="true" />
|
||||
<point X="140224" Y="216897" Z="-11768" delay="0" run="true" />
|
||||
<point X="140287" Y="216756" Z="-11768" delay="0" run="true" />
|
||||
<point X="140352" Y="216600" Z="-11768" delay="0" run="true" />
|
||||
<point X="140468" Y="216459" Z="-11768" delay="0" run="true" />
|
||||
<point X="140594" Y="216334" Z="-11768" delay="0" run="true" />
|
||||
<point X="140703" Y="216212" Z="-11768" delay="0" run="true" />
|
||||
<point X="140805" Y="216144" Z="-11768" delay="0" run="true" />
|
||||
<point X="140916" Y="216065" Z="-11768" delay="0" run="true" />
|
||||
<point X="141076" Y="216000" Z="-11768" delay="0" run="true" />
|
||||
<point X="141206" Y="215970" Z="-11768" delay="0" run="true" />
|
||||
<point X="141343" Y="215974" Z="-11768" delay="0" run="true" />
|
||||
<point X="141502" Y="216016" Z="-11768" delay="0" run="true" />
|
||||
<point X="141654" Y="216106" Z="-11768" delay="0" run="true" />
|
||||
<point X="141805" Y="216240" Z="-11768" delay="0" run="true" />
|
||||
<point X="141942" Y="216354" Z="-11768" delay="0" run="true" />
|
||||
<point X="142038" Y="216472" Z="-11768" delay="0" run="true" />
|
||||
<point X="142151" Y="216643" Z="-11768" delay="0" run="true" />
|
||||
<point X="142240" Y="216782" Z="-11768" delay="0" run="true" />
|
||||
<point X="142284" Y="216894" Z="-11768" delay="0" run="true" />
|
||||
<point X="142326" Y="217024" Z="-11768" delay="0" run="true" />
|
||||
<point X="142345" Y="217100" Z="-11768" delay="0" run="true" />
|
||||
<point X="142364" Y="217166" Z="-11768" delay="0" run="true" />
|
||||
<point X="142397" Y="217238" Z="-11768" delay="0" run="true" />
|
||||
<point X="142481" Y="217250" Z="-11768" delay="0" run="true" />
|
||||
<point X="142608" Y="217249" Z="-11768" delay="0" run="true" />
|
||||
<point X="142664" Y="217269" Z="-11768" delay="0" run="true" />
|
||||
<point X="142939" Y="217270" Z="-11776" delay="10000" run="true" />
|
||||
</route>
|
||||
<route name="gd_golem_2" repeat="false" repeatStyle="back">
|
||||
<point X="142642" Y="217278" Z="-11768" delay="0" run="true" />
|
||||
<point X="142536" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="142457" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="142367" Y="217287" Z="-11768" delay="0" run="true" />
|
||||
<point X="142344" Y="217364" Z="-11768" delay="0" run="true" />
|
||||
<point X="142319" Y="217442" Z="-11768" delay="0" run="true" />
|
||||
<point X="142305" Y="217527" Z="-11768" delay="0" run="true" />
|
||||
<point X="142279" Y="217614" Z="-11768" delay="0" run="true" />
|
||||
<point X="142246" Y="217704" Z="-11768" delay="0" run="true" />
|
||||
<point X="142186" Y="217815" Z="-11768" delay="0" run="true" />
|
||||
<point X="142114" Y="217924" Z="-11768" delay="0" run="true" />
|
||||
<point X="142039" Y="218047" Z="-11768" delay="0" run="true" />
|
||||
<point X="141950" Y="218157" Z="-11768" delay="0" run="true" />
|
||||
<point X="141821" Y="218287" Z="-11768" delay="0" run="true" />
|
||||
<point X="141645" Y="218418" Z="-11768" delay="0" run="true" />
|
||||
<point X="141459" Y="218510" Z="-11768" delay="0" run="true" />
|
||||
<point X="141262" Y="218532" Z="-11768" delay="0" run="true" />
|
||||
<point X="141135" Y="218517" Z="-11768" delay="0" run="true" />
|
||||
<point X="140977" Y="218469" Z="-11768" delay="0" run="true" />
|
||||
<point X="140861" Y="218401" Z="-11768" delay="0" run="true" />
|
||||
<point X="140762" Y="218327" Z="-11768" delay="0" run="true" />
|
||||
<point X="140655" Y="218230" Z="-11768" delay="0" run="true" />
|
||||
<point X="140542" Y="218106" Z="-11768" delay="0" run="true" />
|
||||
<point X="140447" Y="218012" Z="-11768" delay="0" run="true" />
|
||||
<point X="140369" Y="217903" Z="-11768" delay="0" run="true" />
|
||||
<point X="140305" Y="217796" Z="-11768" delay="0" run="true" />
|
||||
<point X="140257" Y="217701" Z="-11768" delay="0" run="true" />
|
||||
<point X="140222" Y="217593" Z="-11768" delay="0" run="true" />
|
||||
<point X="140204" Y="217492" Z="-11768" delay="0" run="true" />
|
||||
<point X="140179" Y="217411" Z="-11768" delay="0" run="true" />
|
||||
<point X="140157" Y="217323" Z="-11768" delay="0" run="true" />
|
||||
<point X="140100" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="139972" Y="217277" Z="-11768" delay="0" run="true" />
|
||||
<point X="139843" Y="217279" Z="-11768" delay="0" run="true" />
|
||||
<point X="139502" Y="217276" Z="-11776" delay="10000" run="true" />
|
||||
</route>
|
||||
<route name="FPC_Giran_Evi" repeat="true" repeatStyle="cycle">
|
||||
<target id="80000" spawnX="83485" spawnY="147998" spawnZ="-3407" />
|
||||
<point X="83485" Y="147998" Z="-3407" delay="10" run="true" /> <!-- Gatekeeper -->
|
||||
|
238
L2J_Mobius_4.0_GrandCrusade/dist/game/data/instances/CrystalCavernsCoralGarden.xml
vendored
Normal file
238
L2J_Mobius_4.0_GrandCrusade/dist/game/data/instances/CrystalCavernsCoralGarden.xml
vendored
Normal file
@ -0,0 +1,238 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Crystal Caverns - Coral Garden -->
|
||||
<instance id="165" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="60" empty="3" />
|
||||
<removeBuffs type="ALL" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="142003" y="214496" z="-11600" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="149364" y="173631" z="-920" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Party" showMessageAndHtml="true">
|
||||
<param name="html" value="condNoParty.html" />
|
||||
</condition>
|
||||
<condition type="PartyLeader">
|
||||
<param name="html" value="condNoPartyLeader.html" />
|
||||
</condition>
|
||||
<condition type="GroupMin">
|
||||
<param name="limit" value="2" />
|
||||
</condition>
|
||||
<condition type="GroupMax">
|
||||
<param name="limit" value="7" />
|
||||
</condition>
|
||||
<condition type="Level">
|
||||
<param name="min" value="97" />
|
||||
</condition>
|
||||
<condition type="Distance" />
|
||||
<condition type="Reenter">
|
||||
<param name="instanceId" value="165" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<reenter apply="ON_FINISH">
|
||||
<reset day="MONDAY" hour="6" minute="30" />
|
||||
<reset day="TUESDAY" hour="6" minute="30" />
|
||||
<reset day="WEDNESDAY" hour="6" minute="30" />
|
||||
<reset day="THURSDAY" hour="6" minute="30" />
|
||||
<reset day="FRIDAY" hour="6" minute="30" />
|
||||
<reset day="SATURDAY" hour="6" minute="30" />
|
||||
<reset day="SUNDAY" hour="6" minute="30" />
|
||||
</reenter>
|
||||
<doorlist>
|
||||
<door id="24240021">
|
||||
<openStatus default="close" />
|
||||
</door>
|
||||
<door id="24240024">
|
||||
<openStatus default="open" />
|
||||
</door>
|
||||
<door id="24240025">
|
||||
<openStatus default="open" />
|
||||
</door>
|
||||
<door id="24240026">
|
||||
<openStatus default="close" />
|
||||
</door>
|
||||
</doorlist>
|
||||
<spawnlist>
|
||||
<group name="innadril24_2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_01" minZ="-11812" maxZ="-11612">
|
||||
<node x="140772" y="214027" />
|
||||
<node x="141701" y="214024" />
|
||||
<node x="141722" y="214971" />
|
||||
<node x="140776" y="214973" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="5" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_02" minZ="-11817" maxZ="-11617">
|
||||
<node x="141288" y="215403" />
|
||||
<node x="141740" y="215413" />
|
||||
<node x="141887" y="215959" />
|
||||
<node x="142400" y="216437" />
|
||||
<node x="141647" y="216436" />
|
||||
<node x="141288" y="216181" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="4" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_03m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_03" minZ="-11819" maxZ="-11619">
|
||||
<node x="140792" y="215411" />
|
||||
<node x="141224" y="215411" />
|
||||
<node x="141241" y="216166" />
|
||||
<node x="140860" y="216435" />
|
||||
<node x="140148" y="216438" />
|
||||
<node x="140635" y="215920" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="4" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_04m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_04" minZ="-11816" maxZ="-11616">
|
||||
<node x="140113" y="216495" />
|
||||
<node x="140842" y="216485" />
|
||||
<node x="140659" y="216910" />
|
||||
<node x="140646" y="217244" />
|
||||
<node x="139829" y="217222" />
|
||||
<node x="139829" y="217222" />
|
||||
<node x="139852" y="216817" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_05m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_05" minZ="-11813" maxZ="-11613">
|
||||
<node x="141670" y="216494" />
|
||||
<node x="142425" y="216494" />
|
||||
<node x="142638" y="216831" />
|
||||
<node x="142692" y="217230" />
|
||||
<node x="141859" y="217241" />
|
||||
<node x="141840" y="216891" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_06m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_06" minZ="-11817" maxZ="-11617">
|
||||
<node x="141856" y="217297" />
|
||||
<node x="142687" y="217287" />
|
||||
<node x="142550" y="217912" />
|
||||
<node x="142020" y="218441" />
|
||||
<node x="141567" y="218171" />
|
||||
<node x="141810" y="217710" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_07m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_07" minZ="-11820" maxZ="-11620">
|
||||
<node x="139832" y="217298" />
|
||||
<node x="140644" y="217281" />
|
||||
<node x="140695" y="217709" />
|
||||
<node x="140919" y="218175" />
|
||||
<node x="140469" y="218436" />
|
||||
<node x="139940" y="217889" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_08m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_08" minZ="-11812" maxZ="-11612">
|
||||
<node x="140506" y="218463" />
|
||||
<node x="140950" y="218188" />
|
||||
<node x="141244" y="218401" />
|
||||
<node x="140675" y="218807" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_09m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_09" minZ="-11829" maxZ="-11629">
|
||||
<node x="141540" y="218183" />
|
||||
<node x="142012" y="218480" />
|
||||
<node x="141815" y="218808" />
|
||||
<node x="141271" y="218405" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_10m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_10" minZ="-11815" maxZ="-11615">
|
||||
<node x="141261" y="218427" />
|
||||
<node x="141798" y="218823" />
|
||||
<node x="141732" y="219192" />
|
||||
<node x="140779" y="219201" />
|
||||
<node x="140713" y="218815" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_11m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_11" minZ="-11814" maxZ="-11614">
|
||||
<node x="140749" y="219542" />
|
||||
<node x="141733" y="219539" />
|
||||
<node x="141721" y="220520" />
|
||||
<node x="140746" y="220531" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" count="2" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" count="2" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" count="2" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_12m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_12" minZ="-11815" maxZ="-11615">
|
||||
<node x="142059" y="219549" />
|
||||
<node x="143029" y="219542" />
|
||||
<node x="143030" y="220520" />
|
||||
<node x="142059" y="220531" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" count="2" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" count="2" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" count="3" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_e2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril24_e2422_01" minZ="-11817" maxZ="-11617">
|
||||
<node x="139388" y="217164" />
|
||||
<node x="139588" y="217164" />
|
||||
<node x="139588" y="217364" />
|
||||
<node x="139388" y="217364" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19013" x="139488" y="217264" z="-11817" count="1" /> <!-- Crystalline Golem -->
|
||||
</group>
|
||||
<group name="innadril24_e2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril24_e2422_02" minZ="-11817" maxZ="-11617">
|
||||
<node x="142908" y="217164" />
|
||||
<node x="143108" y="217164" />
|
||||
<node x="143108" y="217364" />
|
||||
<node x="142908" y="217364" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19014" x="143008" y="217264" z="-11817" heading="32768" count="1" /> <!-- Crystalline Golem -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
2511
L2J_Mobius_4.0_GrandCrusade/dist/game/data/instances/CrystalCavernsEmeraldSquare.xml
vendored
Normal file
2511
L2J_Mobius_4.0_GrandCrusade/dist/game/data/instances/CrystalCavernsEmeraldSquare.xml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
694
L2J_Mobius_4.0_GrandCrusade/dist/game/data/instances/CrystalCavernsSteamCorridor.xml
vendored
Normal file
694
L2J_Mobius_4.0_GrandCrusade/dist/game/data/instances/CrystalCavernsSteamCorridor.xml
vendored
Normal file
@ -0,0 +1,694 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Crystal Caverns - Steam Corridor -->
|
||||
<instance id="164" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="60" empty="3" />
|
||||
<removeBuffs type="ALL" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="144324" y="218207" z="-12000" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="149364" y="173631" z="-920" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Party" showMessageAndHtml="true">
|
||||
<param name="html" value="condNoParty.html" />
|
||||
</condition>
|
||||
<condition type="PartyLeader">
|
||||
<param name="html" value="condNoPartyLeader.html" />
|
||||
</condition>
|
||||
<condition type="GroupMin">
|
||||
<param name="limit" value="2" />
|
||||
</condition>
|
||||
<condition type="GroupMax">
|
||||
<param name="limit" value="7" />
|
||||
</condition>
|
||||
<condition type="Level">
|
||||
<param name="min" value="97" />
|
||||
</condition>
|
||||
<condition type="Distance" />
|
||||
<condition type="Reenter">
|
||||
<param name="instanceId" value="164" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<reenter apply="ON_FINISH">
|
||||
<reset day="MONDAY" hour="6" minute="30" />
|
||||
<reset day="TUESDAY" hour="6" minute="30" />
|
||||
<reset day="WEDNESDAY" hour="6" minute="30" />
|
||||
<reset day="THURSDAY" hour="6" minute="30" />
|
||||
<reset day="FRIDAY" hour="6" minute="30" />
|
||||
<reset day="SATURDAY" hour="6" minute="30" />
|
||||
<reset day="SUNDAY" hour="6" minute="30" />
|
||||
</reenter>
|
||||
<spawnlist>
|
||||
<group name="innadril23_2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_01" minZ="-12178" maxZ="-11678">
|
||||
<node x="144778" y="217940" />
|
||||
<node x="145497" y="217937" />
|
||||
<node x="145510" y="218475" />
|
||||
<node x="144781" y="218469" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="1" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="5"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="1" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="145129" y="218189" z="-12136" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="30" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_02" minZ="-12160" maxZ="-11660">
|
||||
<node x="145563" y="217941" />
|
||||
<node x="146353" y="217943" />
|
||||
<node x="146357" y="218483" />
|
||||
<node x="145572" y="218481" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="4"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="4"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="146016" y="218235" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="34" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_03m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_03" minZ="-12167" maxZ="-11667">
|
||||
<node x="146422" y="217935" />
|
||||
<node x="147125" y="217942" />
|
||||
<node x="147128" y="218482" />
|
||||
<node x="146431" y="218475" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="3" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="5"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="3" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_01"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_03m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_03" minZ="-12167" maxZ="-11667">
|
||||
<node x="146422" y="217935" />
|
||||
<node x="147125" y="217942" />
|
||||
<node x="147128" y="218482" />
|
||||
<node x="146431" y="218475" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="146875" y="218229" z="-12167" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="37" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_04m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_04" minZ="-12160" maxZ="-11660">
|
||||
<node x="147465" y="217937" />
|
||||
<node x="148256" y="217938" />
|
||||
<node x="148259" y="218478" />
|
||||
<node x="147475" y="218477" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="4" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="6"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="4" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="147918" y="218230" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="60" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_05m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_05" minZ="-12166" maxZ="-11666">
|
||||
<node x="148258" y="217940" />
|
||||
<node x="149048" y="217942" />
|
||||
<node x="149051" y="218482" />
|
||||
<node x="148267" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="5" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="10"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="5" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="148710" y="218233" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="64" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_06m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_06" minZ="-12166" maxZ="-11666">
|
||||
<node x="149027" y="217940" />
|
||||
<node x="149818" y="217942" />
|
||||
<node x="149821" y="218482" />
|
||||
<node x="149037" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="6" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="12"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="6" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_02"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_06m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_06" minZ="-12166" maxZ="-11666">
|
||||
<node x="149027" y="217940" />
|
||||
<node x="149818" y="217942" />
|
||||
<node x="149821" y="218482" />
|
||||
<node x="149037" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="149480" y="218233" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="67" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_07m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_07" minZ="-12170" maxZ="-11670">
|
||||
<node x="150145" y="217941" />
|
||||
<node x="150856" y="217941" />
|
||||
<node x="150859" y="218481" />
|
||||
<node x="150155" y="218481" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="5"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="5"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150598" y="218234" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="90" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_08m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_08" minZ="-12170" maxZ="-11670">
|
||||
<node x="150935" y="217936" />
|
||||
<node x="151726" y="217942" />
|
||||
<node x="151729" y="218482" />
|
||||
<node x="150945" y="218476" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="8" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="15"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="8" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="151388" y="218229" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="94" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_09m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_09" minZ="-12170" maxZ="-11670">
|
||||
<node x="151791" y="217952" />
|
||||
<node x="152499" y="217939" />
|
||||
<node x="152502" y="218479" />
|
||||
<node x="151801" y="218492" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="9" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="3"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="9" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_03"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_09m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_09" minZ="-12170" maxZ="-11670">
|
||||
<node x="151791" y="217952" />
|
||||
<node x="152499" y="217939" />
|
||||
<node x="152502" y="218479" />
|
||||
<node x="151801" y="218492" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="152244" y="218245" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="97" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_10m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_10" minZ="-12166" maxZ="-11666">
|
||||
<node x="145650" y="219795" />
|
||||
<node x="146356" y="219796" />
|
||||
<node x="146358" y="220337" />
|
||||
<node x="145652" y="220331" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="10" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="10"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="10" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="145984" y="220051" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="120" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_11m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_11" minZ="-12166" maxZ="-11666">
|
||||
<node x="146468" y="219793" />
|
||||
<node x="147174" y="219794" />
|
||||
<node x="147176" y="220335" />
|
||||
<node x="146470" y="220329" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="11" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="11" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="146802" y="220049" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="124" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_12m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_12" minZ="-12166" maxZ="-11666">
|
||||
<node x="147298" y="219800" />
|
||||
<node x="148004" y="219801" />
|
||||
<node x="148006" y="220342" />
|
||||
<node x="147300" y="220336" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="12" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="12" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_04"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="3"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="12" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_04"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_12m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_12" minZ="-12166" maxZ="-11666">
|
||||
<node x="147298" y="219800" />
|
||||
<node x="148004" y="219801" />
|
||||
<node x="148006" y="220342" />
|
||||
<node x="147300" y="220336" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="147632" y="220056" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="127" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_13m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_13" minZ="-12165" maxZ="-11665">
|
||||
<node x="148361" y="219796" />
|
||||
<node x="149067" y="219797" />
|
||||
<node x="149069" y="220338" />
|
||||
<node x="148363" y="220332" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="15"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="148695" y="220052" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="150" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_14m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_14" minZ="-12165" maxZ="-11665">
|
||||
<node x="149095" y="219796" />
|
||||
<node x="149801" y="219797" />
|
||||
<node x="149803" y="220338" />
|
||||
<node x="149097" y="220332" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="17"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="17"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="149429" y="220052" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="154" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_15m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_15" minZ="-12165" maxZ="-11665">
|
||||
<node x="149865" y="219798" />
|
||||
<node x="150571" y="219799" />
|
||||
<node x="150573" y="220340" />
|
||||
<node x="149867" y="220334" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="15" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="5"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="15" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_05"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_15m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_15" minZ="-12165" maxZ="-11665">
|
||||
<node x="149865" y="219798" />
|
||||
<node x="150571" y="219799" />
|
||||
<node x="150573" y="220340" />
|
||||
<node x="149867" y="220334" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="150199" y="220054" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="157" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_16m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_16" minZ="-12160" maxZ="-11660">
|
||||
<node x="149819" y="215314" />
|
||||
<node x="150580" y="215309" />
|
||||
<node x="150592" y="215840" />
|
||||
<node x="149834" y="215842" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="16" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="20"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="16" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150198" y="215606" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="180" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_17m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_17" minZ="-12160" maxZ="-11660">
|
||||
<node x="150589" y="215313" />
|
||||
<node x="151350" y="215308" />
|
||||
<node x="151362" y="215839" />
|
||||
<node x="150604" y="215841" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="17" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="5"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="17" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150968" y="215605" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="184" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_18m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_18" minZ="-12160" maxZ="-11660">
|
||||
<node x="151375" y="215317" />
|
||||
<node x="152136" y="215312" />
|
||||
<node x="152148" y="215843" />
|
||||
<node x="151390" y="215845" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="18" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="20"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="18" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_05"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_18m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_18" minZ="-12160" maxZ="-11660">
|
||||
<node x="151375" y="215317" />
|
||||
<node x="152136" y="215312" />
|
||||
<node x="152148" y="215843" />
|
||||
<node x="151390" y="215845" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="151754" y="215609" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="187" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_mb2422m1">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422" minZ="-12140" maxZ="-11740">
|
||||
<node x="154093" y="215667" />
|
||||
<node x="153813" y="215602" />
|
||||
<node x="153627" y="215436" />
|
||||
<node x="153537" y="215291" />
|
||||
<node x="153506" y="215131" />
|
||||
<node x="153555" y="214913" />
|
||||
<node x="153696" y="214713" />
|
||||
<node x="153892" y="214590" />
|
||||
<node x="154087" y="214538" />
|
||||
<node x="154301" y="214602" />
|
||||
<node x="154479" y="214720" />
|
||||
<node x="154601" y="214903" />
|
||||
<node x="154646" y="215119" />
|
||||
<node x="154613" y="215288" />
|
||||
<node x="154550" y="215411" />
|
||||
<node x="154462" y="215527" />
|
||||
<node x="154304" y="215624" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="154078" y="215125" z="-12140" respawnTime="1min" count="1" /> <!-- Fire Region -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt1m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt1" minZ="-12145" maxZ="-11945">
|
||||
<node x="146993" y="218107" />
|
||||
<node x="147193" y="218107" />
|
||||
<node x="147193" y="218307" />
|
||||
<node x="146993" y="218307" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="147148" y="218208" z="-12112" heading="32624" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt2m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt2" minZ="-12147" maxZ="-11947">
|
||||
<node x="149740" y="218107" />
|
||||
<node x="149940" y="218107" />
|
||||
<node x="149940" y="218307" />
|
||||
<node x="149740" y="218307" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="149818" y="218208" z="-12096" heading="32496" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt3m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt3" minZ="-12141" maxZ="-11941">
|
||||
<node x="152440" y="218104" />
|
||||
<node x="152640" y="218104" />
|
||||
<node x="152640" y="218304" />
|
||||
<node x="152440" y="218304" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="152538" y="218208" z="-12096" heading="32552" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt4m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt4" minZ="-12146" maxZ="-11946">
|
||||
<node x="147916" y="219968" />
|
||||
<node x="148116" y="219968" />
|
||||
<node x="148116" y="220168" />
|
||||
<node x="147916" y="220168" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="148022" y="220069" z="-12112" heading="-32568" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt5m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt5" minZ="-12144" maxZ="-11944">
|
||||
<node x="150613" y="219960" />
|
||||
<node x="150813" y="219960" />
|
||||
<node x="150813" y="220160" />
|
||||
<node x="150613" y="220160" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="150699" y="220064" z="-12112" heading="-32696" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt6m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt6" minZ="-12143" maxZ="-11943">
|
||||
<node x="152084" y="215474" />
|
||||
<node x="152284" y="215474" />
|
||||
<node x="152284" y="215674" />
|
||||
<node x="152084" y="215674" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="152214" y="215586" z="-12112" heading="32568" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
@ -0,0 +1,215 @@
|
||||
/*
|
||||
* 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 ai.areas.Parnassus.EntrancePortalToCrystalCaverns;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.OnEventTrigger;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
import instances.CrystalCaverns.CrystalCavernsCoralGarden;
|
||||
import instances.CrystalCaverns.CrystalCavernsEmeraldSquare;
|
||||
import instances.CrystalCaverns.CrystalCavernsSteamCorridor;
|
||||
|
||||
/**
|
||||
* Entrance Portal to Crystal Caverns AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class EntrancePortalToCrystalCaverns extends AbstractNpcAI
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
// Misc
|
||||
private static final int EMERALD_SQUARE_TEMPLATE_ID = 163;
|
||||
private static final int STEAM_CORRIDOR_TEMPLATE_ID = 164;
|
||||
private static final int CORAL_GARDEN_TEMPLATE_ID = 165;
|
||||
private static final int PRISON_ENTRACE_TRIGGER_1 = 24230010;
|
||||
private static final int PRISON_ENTRACE_TRIGGER_2 = 24230012;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_1 = 24230014;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_2 = 24230016;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_3 = 24230018;
|
||||
|
||||
private EntrancePortalToCrystalCaverns()
|
||||
{
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addFirstTalkId(CAVERNS_ENTRACE);
|
||||
addSpawnId(CAVERNS_ENTRACE);
|
||||
addSeeCreatureId(CAVERNS_ENTRACE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
Quest instanceScript = null;
|
||||
|
||||
switch (getCurrentInstanceTemplateId())
|
||||
{
|
||||
case EMERALD_SQUARE_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsEmeraldSquare.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
case STEAM_CORRIDOR_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsSteamCorridor.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
case CORAL_GARDEN_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsCoralGarden.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (instanceScript != null)
|
||||
{
|
||||
instanceScript.notifyEvent(event, npc, player);
|
||||
}
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
return "EntrancePortal_" + getCurrentInstanceTemplateId() + ".html";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
getTimers().addRepeatingTimer("LOOP_TIMER", 10000, npc, null);
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("LOOP_TIMER"))
|
||||
{
|
||||
final int currentTemplateId = getCurrentInstanceTemplateId();
|
||||
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, PlayerInstance.class, 500, p ->
|
||||
{
|
||||
updateTriggersForPlayer(player, currentTemplateId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSeeCreature(Npc npc, Creature creature, boolean isSummon)
|
||||
{
|
||||
if (creature.isPlayer())
|
||||
{
|
||||
creature.getActingPlayer().sendPacket(new OnEventTrigger(PRISON_ENTRACE_TRIGGER_1, true));
|
||||
creature.getActingPlayer().sendPacket(new OnEventTrigger(PRISON_ENTRACE_TRIGGER_2, true));
|
||||
updateTriggersForPlayer(creature.getActingPlayer(), getCurrentInstanceTemplateId());
|
||||
}
|
||||
return super.onSeeCreature(npc, creature, isSummon);
|
||||
}
|
||||
|
||||
public void updateTriggersForPlayer(PlayerInstance player, int currentTemplateId)
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_1, false));
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_2, false));
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_3, false));
|
||||
|
||||
switch (currentTemplateId)
|
||||
{
|
||||
case EMERALD_SQUARE_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_1, true));
|
||||
break;
|
||||
}
|
||||
case STEAM_CORRIDOR_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_2, true));
|
||||
break;
|
||||
}
|
||||
case CORAL_GARDEN_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_3, true));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getCurrentInstanceTemplateId()
|
||||
{
|
||||
final int day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
|
||||
final int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
|
||||
int templateId = -1;
|
||||
|
||||
switch (day)
|
||||
{
|
||||
case Calendar.MONDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.TUESDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? CORAL_GARDEN_TEMPLATE_ID : EMERALD_SQUARE_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.WEDNESDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? STEAM_CORRIDOR_TEMPLATE_ID : CORAL_GARDEN_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.THURSDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.FRIDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? CORAL_GARDEN_TEMPLATE_ID : EMERALD_SQUARE_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.SATURDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? STEAM_CORRIDOR_TEMPLATE_ID : CORAL_GARDEN_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.SUNDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return templateId;
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new EntrancePortalToCrystalCaverns();
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Emerald Square</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Steam Corridor</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Coral Garden</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,253 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.WalkingManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.Spawn;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Coral Garden instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsCoralGarden extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int MICHAELA_NORMAL = 25799;
|
||||
private static final int MICHAELA_WISE = 26116;
|
||||
private static final int MICHAELA_WEALTHY = 26115;
|
||||
private static final int MICHAELA_ARMED = 26114;
|
||||
private static final int GOLEM_1 = 19013; // Crystalline Golem
|
||||
private static final int GOLEM_2 = 19014; // Crystalline Golem
|
||||
// Location
|
||||
private static final Location BOSS_LOC = new Location(144307, 220032, -11824);
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 165;
|
||||
private static final int BOSS_DOOR_ID = 24240026;
|
||||
private static final int PLAYER_MAX_DISTANCE = 250;
|
||||
|
||||
public CrystalCavernsCoralGarden()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addFirstTalkId(GOLEM_1, GOLEM_2);
|
||||
addKillId(MICHAELA_NORMAL, MICHAELA_WISE, MICHAELA_WEALTHY, MICHAELA_ARMED);
|
||||
addAttackId(MICHAELA_NORMAL, MICHAELA_WISE, MICHAELA_WEALTHY, MICHAELA_ARMED);
|
||||
addRouteFinishedId(GOLEM_1, GOLEM_2);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "SUCCESS_TIMER":
|
||||
{
|
||||
showOnScreenMsg(instance, NpcStringId.GOLEM_LOCATION_SUCCESSFUL_ENTRY_ACCESSED, ExShowScreenMessage.MIDDLE_CENTER, 5000);
|
||||
break;
|
||||
}
|
||||
case "LOOP_TIMER":
|
||||
{
|
||||
player = npcVars.getObject("PLAYER_OBJECT", PlayerInstance.class);
|
||||
|
||||
if ((player != null) && (npc.calculateDistance3D(player) > PLAYER_MAX_DISTANCE) && npcVars.getBoolean("NPC_FOLLOWING", true))
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
addMoveToDesire(npc, new Location(npc.getX() + getRandom(-100, 100), npc.getY() + getRandom(-150, 150), npc.getZ()), 23);
|
||||
npc.setRunning();
|
||||
npcVars.set("NPC_FOLLOWING", false);
|
||||
getTimers().cancelTimer("LOOP_TIMER", npc, null);
|
||||
getTimers().addTimer("FAIL_TIMER", 5000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "FAIL_TIMER":
|
||||
{
|
||||
final Spawn spawn = npc.getSpawn();
|
||||
|
||||
if (!npcVars.getBoolean("NPC_FOLLOWING", true))
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
npc.setWalking();
|
||||
npc.teleToLocation(npc.getSpawn().getX(), npc.getSpawn().getY(), npc.getSpawn().getZ());
|
||||
npc.setScriptValue(0);
|
||||
npc.setNameString(null);
|
||||
npc.setTitleString(null);
|
||||
npc.setTitle(null);
|
||||
npc.broadcastInfo();
|
||||
}
|
||||
npcVars.set("CAN_CALL_MONSTERS", ((spawn.getX() - ((npc.getX() * spawn.getX()) - npc.getX())) + (spawn.getY() - (npc.getY() * spawn.getY()) - npc.getY())) > (200 * 200));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.getVariables().set("PLAYER_OBJECT", player);
|
||||
npc.setNameString(NpcStringId.TRAITOR_CRYSTALLINE_GOLEM);
|
||||
npc.setTitleString(NpcStringId.GIVEN_TO_S1);
|
||||
npc.setTitle(player.getName());
|
||||
npc.broadcastInfo();
|
||||
WalkingManager.getInstance().startMoving(npc, npc.getId() == GOLEM_1 ? "gd_golem_1" : "gd_golem_2");
|
||||
getTimers().addRepeatingTimer("LOOP_TIMER", 500, npc, null);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRouteFinished(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (instance != null)
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
showOnScreenMsg(instance, NpcStringId.GOLEM_ENTERED_THE_REQUIRED_ZONE, ExShowScreenMessage.MIDDLE_CENTER, 5000);
|
||||
npc.deleteMe();
|
||||
|
||||
if (instance.getAliveNpcs(GOLEM_1, GOLEM_2).isEmpty())
|
||||
{
|
||||
instance.openCloseDoor(BOSS_DOOR_ID, true);
|
||||
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = MICHAELA_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = MICHAELA_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = MICHAELA_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = MICHAELA_ARMED;
|
||||
}
|
||||
|
||||
final Npc boss = addSpawn(bossId, BOSS_LOC, false, 0, false, instance.getId());
|
||||
getTimers().addTimer("SUCCESS_TIMER", 5000, boss, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MICHAELA_NORMAL:
|
||||
case MICHAELA_WISE:
|
||||
case MICHAELA_WEALTHY:
|
||||
case MICHAELA_ARMED:
|
||||
{
|
||||
instance.finishInstance();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MICHAELA_NORMAL:
|
||||
case MICHAELA_WISE:
|
||||
case MICHAELA_WEALTHY:
|
||||
case MICHAELA_ARMED:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
instance.openCloseDoor(BOSS_DOOR_ID, false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsCoralGarden();
|
||||
}
|
||||
}
|
@ -0,0 +1,424 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Emerald Square instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsEmeraldSquare extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int VERIDAN_NORMAL = 25796;
|
||||
private static final int VERIDAN_WISE = 26107;
|
||||
private static final int VERIDAN_WEALTHY = 26106;
|
||||
private static final int VERIDAN_ARMED = 26105;
|
||||
private static final int WATER_CANNON = 19008;
|
||||
private static final int WATER_CANNON_SKILL = 19009;
|
||||
private static final int STRONGHOLD_PROTECTOR = 23012;
|
||||
private static final int SQUARE_INTRUDER = 23010;
|
||||
private static final int SQUARE_ATTACKER = 23011;
|
||||
// Skills
|
||||
private static final SkillHolder DESTROY_SKILL = new SkillHolder(12003, 1);
|
||||
private static final SkillHolder WATER_CANNON_SKILL_ATTACK = new SkillHolder(14179, 1);
|
||||
// Locations
|
||||
private static final Location[] BOSS_SPAWNS =
|
||||
{
|
||||
new Location(152745, 145957, -12584, 16446),
|
||||
new Location(152816, 145968, -12633, 16446),
|
||||
};
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 163;
|
||||
private static final int RAID_DOOR_1 = 24220005;
|
||||
private static final int RAID_DOOR_2 = 24220006;
|
||||
|
||||
public CrystalCavernsEmeraldSquare()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addSpawnId(WATER_CANNON);
|
||||
addKillId(WATER_CANNON, VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED);
|
||||
addAttackId(WATER_CANNON, VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED);
|
||||
addSpellFinishedId(WATER_CANNON_SKILL);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
setCreatureSeeId(this::onCreatureSee, WATER_CANNON);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "HP_REGEN_TIMER":
|
||||
{
|
||||
int value = ((baseId == 5) || (baseId == 6)) ? 5 : baseId;
|
||||
npc.getStat().addFixedValue(Stats.REGENERATE_HP_RATE, Double.valueOf(value * 1000));
|
||||
break;
|
||||
}
|
||||
case "SUPPORT_SPAWN_TIMER":
|
||||
{
|
||||
int supportVal = npcVars.getInt("SUPPORT_VALUE", 0);
|
||||
|
||||
if (supportVal > 3)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((supportVal == 0) || (supportVal == 1) || (supportVal == 2))
|
||||
{
|
||||
final String spawnName = npcParams.getString("SupportMaker" + (supportVal + 1), null);
|
||||
if (spawnName != null)
|
||||
{
|
||||
instance.spawnGroup(spawnName);
|
||||
}
|
||||
npcVars.increaseInt("SUPPORT_VALUE", 1);
|
||||
}
|
||||
|
||||
if (!npcVars.getBoolean("PREVIOUS_BASE_DESTROYED", false))
|
||||
{
|
||||
getTimers().addTimer("SUPPORT_SPAWN_TIMER", 60000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "CANNON_LOOP_ATTACK":
|
||||
{
|
||||
if (npc.getCurrentHpPercent() > 30)
|
||||
{
|
||||
if (npcVars.getBoolean("IS_DESTROY_ACTIVATED", false) || (getRandom(10) < 2))
|
||||
{
|
||||
final Npc cannonSkill = addSpawn(WATER_CANNON_SKILL, npc, true, 0, false, instance.getId());
|
||||
addSkillCastDesire(cannonSkill, cannonSkill, WATER_CANNON_SKILL_ATTACK, 23);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SUICIDE_TIMER":
|
||||
{
|
||||
npc.doDie(null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VERIDAN_WISE:
|
||||
case VERIDAN_WEALTHY:
|
||||
case VERIDAN_ARMED:
|
||||
{
|
||||
if (!npcVars.getBoolean("CLOSED_DOORS", false))
|
||||
{
|
||||
npcVars.set("CLOSED_DOORS", true);
|
||||
instance.openCloseDoor(RAID_DOOR_2, false);
|
||||
}
|
||||
}
|
||||
case WATER_CANNON:
|
||||
{
|
||||
if ((skill != null) && (skill.getId() == DESTROY_SKILL.getSkillId()) && !npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npcVars.set("IS_DESTROY_ACTIVATED", true);
|
||||
npc.setDisplayEffect(2);
|
||||
getTimers().addTimer("SUICIDE_TIMER", 60000, npc, null);
|
||||
}
|
||||
|
||||
if (npc.getCurrentHpPercent() < 30)
|
||||
{
|
||||
if (!npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npc.setDisplayEffect(3);
|
||||
|
||||
}
|
||||
}
|
||||
else if (!npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npc.setDisplayEffect(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VERIDAN_NORMAL:
|
||||
case VERIDAN_WISE:
|
||||
case VERIDAN_WEALTHY:
|
||||
case VERIDAN_ARMED:
|
||||
{
|
||||
if (instance.getAliveNpcs(VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED).isEmpty())
|
||||
{
|
||||
instance.finishInstance();
|
||||
}
|
||||
else
|
||||
{
|
||||
instance.setReenterTime();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WATER_CANNON:
|
||||
{
|
||||
npc.setDisplayEffect(4);
|
||||
showOnScreenMsg(instance, NpcStringId.SUCCESSFUL_DESTRUCTION_OF_STRONGHOLD_S1, ExShowScreenMessage.MIDDLE_CENTER, 4000, String.valueOf(npc.getParameters().getInt("base_id", -1)));
|
||||
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, MonsterInstance.class, 400, monster ->
|
||||
{
|
||||
if ((monster.getId() == STRONGHOLD_PROTECTOR) || (monster.getId() == SQUARE_INTRUDER) || (monster.getId() == SQUARE_ATTACKER))
|
||||
{
|
||||
monster.doDie(null);
|
||||
}
|
||||
});
|
||||
|
||||
instance.getAliveNpcs(WATER_CANNON).forEach(cannon ->
|
||||
{
|
||||
final int cannonBaseId = cannon.getParameters().getInt("base_id", -1);
|
||||
|
||||
switch (baseId)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
if (cannonBaseId == 2)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (cannonBaseId == 3)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
if (cannonBaseId == 4)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
if ((cannonBaseId == 5) || (cannonBaseId == 6))
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
case 6:
|
||||
{
|
||||
if (cannonBaseId == 7)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
if ((cannonBaseId == 8) || (cannonBaseId == 9))
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if ((baseId == 8) || (baseId == 9))
|
||||
{
|
||||
instance.getParameters().increaseInt("MAIN_TARGETS_KILLED", 0, 1);
|
||||
|
||||
if (instance.getParameters().getInt("MAIN_TARGETS_KILLED", 0) == 2)
|
||||
{
|
||||
showOnScreenMsg(instance, NpcStringId.SUCCESSFUL_DESTRUCTION_OF_STRONGHOLD_ENTRY_ACCESSED, ExShowScreenMessage.MIDDLE_CENTER, 4000);
|
||||
instance.openCloseDoor(RAID_DOOR_1, true);
|
||||
instance.openCloseDoor(RAID_DOOR_2, true);
|
||||
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = VERIDAN_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = VERIDAN_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = VERIDAN_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = VERIDAN_ARMED;
|
||||
}
|
||||
|
||||
for (Location loc : BOSS_SPAWNS)
|
||||
{
|
||||
addSpawn(bossId, loc, false, 0, false, instance.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpellFinished(Npc npc, PlayerInstance player, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance) && (npc.getId() == WATER_CANNON_SKILL) && (skill.getId() == WATER_CANNON_SKILL_ATTACK.getSkillId()))
|
||||
{
|
||||
npc.deleteMe();
|
||||
}
|
||||
return super.onSpellFinished(npc, player, skill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case WATER_CANNON:
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
if (baseId != 1)
|
||||
{
|
||||
npc.setTargetable(false);
|
||||
}
|
||||
|
||||
getTimers().addTimer("HP_REGEN_TIMER", 10000, npc, null);
|
||||
|
||||
if (baseId > 0)
|
||||
{
|
||||
getTimers().addTimer("SUPPORT_SPAWN_TIMER", (baseId * 60) * 1000, npc, null);
|
||||
}
|
||||
npc.initSeenCreatures();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
public void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final Creature creature = event.getSeen();
|
||||
final Npc npc = (Npc) event.getSeer();
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
|
||||
if ((world != null) && creature.isPlayer() && npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.setDisplayEffect(1);
|
||||
getTimers().addRepeatingTimer("CANNON_LOOP_ATTACK", 1000, npc, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsEmeraldSquare();
|
||||
}
|
||||
}
|
@ -0,0 +1,408 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.ChatType;
|
||||
import org.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneType;
|
||||
import org.l2jmobius.gameserver.model.zone.type.TeleportZone;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Steam Corridor instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsSteamCorridor extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int KECHI_NORMAL = 25797;
|
||||
private static final int KECHI_WISE = 26113;
|
||||
private static final int KECHI_WEALTHY = 26112;
|
||||
private static final int KECHI_ARMED = 26111;
|
||||
private static final int VICIOUS_DUELER = 23014;
|
||||
private static final int VICIOUS_WARRIOR = 23016;
|
||||
private static final int VICIOUS_SWORDSMAN = 23015;
|
||||
private static final int SPIRIT_PROTECTOR = 23013;
|
||||
private static final int FIRE_REGION = 19161;
|
||||
private static final int PLAYER_DETECTOR = 19075;
|
||||
private static final int TRAP_1 = 19011;
|
||||
private static final int TRAP_2 = 19012;
|
||||
// Skills
|
||||
private static final SkillHolder FIRE_SKILL_1 = new SkillHolder(14373, 1);
|
||||
private static final SkillHolder FIRE_SKILL_2 = new SkillHolder(14373, 2);
|
||||
private static final SkillHolder FIRE_SKILL_3 = new SkillHolder(14197, 1);
|
||||
private static final SkillHolder TRAP_SKILL_1 = new SkillHolder(14180, 1);
|
||||
private static final SkillHolder TRAP_SKILL_2 = new SkillHolder(14181, 1);
|
||||
private static final SkillHolder TRAP_SKILL_3 = new SkillHolder(14372, 1);
|
||||
// Location
|
||||
private static final Location BOSS_LOC = new Location(154078, 215125, -12140);
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 164;
|
||||
|
||||
public CrystalCavernsSteamCorridor()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addAttackId(TRAP_1, TRAP_2);
|
||||
addKillId(VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN, KECHI_NORMAL, KECHI_WISE, KECHI_WEALTHY, KECHI_ARMED);
|
||||
addSpawnId(SPIRIT_PROTECTOR, VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN, FIRE_REGION, PLAYER_DETECTOR);
|
||||
addEventReceivedId(SPIRIT_PROTECTOR, VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN);
|
||||
addInstanceCreatedId(TEMPLATE_ID);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
setCreatureSeeId(this::onCreatureSee, PLAYER_DETECTOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "FIRE_REGION_TIMER_1":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_1, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_2", 10000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "FIRE_REGION_TIMER_2":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_2, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_3", 10000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "FIRE_REGION_TIMER_3":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_3, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_3", 1000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "TRAP_REACT_TIMER":
|
||||
{
|
||||
final int timer = npcVars.increaseInt("TIMER_VAL", -1);
|
||||
if (timer > 0)
|
||||
{
|
||||
npc.broadcastSay(ChatType.NPC_GENERAL, " " + timer);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (npc.getId() == TRAP_1)
|
||||
{
|
||||
addSkillCastDesire(npc, npc, (getRandom(10) < 8 ? TRAP_SKILL_1 : TRAP_SKILL_3), 23);
|
||||
}
|
||||
else if (npc.getId() == TRAP_2)
|
||||
{
|
||||
addSkillCastDesire(npc, npc, (getRandom(10) < 8 ? TRAP_SKILL_2 : TRAP_SKILL_3), 23);
|
||||
}
|
||||
}
|
||||
getTimers().addTimer("TRAP_REACT_TIMER", 1000, npc, null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceCreated(Instance instance, PlayerInstance player)
|
||||
{
|
||||
instance.setStatus(1);
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
final ZoneType zone = ZoneManager.getInstance().getZoneByName("24_24_fire_telezone_0" + i, TeleportZone.class);
|
||||
if (zone != null)
|
||||
{
|
||||
zone.setEnabled(false, instance.getId());
|
||||
}
|
||||
}
|
||||
super.onInstanceCreated(instance, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case SPIRIT_PROTECTOR:
|
||||
case VICIOUS_DUELER:
|
||||
case VICIOUS_WARRIOR:
|
||||
case VICIOUS_SWORDSMAN:
|
||||
{
|
||||
npc.setTargetable(false);
|
||||
npc.disableCoreAI(true);
|
||||
npc.setInvisible(true);
|
||||
break;
|
||||
}
|
||||
case FIRE_REGION:
|
||||
{
|
||||
final int timeLimit = npcParams.getInt("Limit_Time", 0);
|
||||
if (timeLimit > 0)
|
||||
{
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_1", ((timeLimit * 30) * 100), npc, null);
|
||||
}
|
||||
npc.setTargetable(false);
|
||||
npc.setIsInvul(true);
|
||||
npc.setRandomAnimation(false);
|
||||
npc.setRandomWalking(false);
|
||||
npc.disableCoreAI(true);
|
||||
break;
|
||||
}
|
||||
case PLAYER_DETECTOR:
|
||||
{
|
||||
npc.initSeenCreatures();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onEventReceived(String eventName, Npc sender, Npc receiver, WorldObject reference)
|
||||
{
|
||||
final Instance instance = receiver.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = receiver.getParameters();
|
||||
|
||||
if (eventName.equals(String.valueOf(24220005 + npcParams.getInt("Terri_ID", 0))))
|
||||
{
|
||||
receiver.setTargetable(true);
|
||||
receiver.disableCoreAI(false);
|
||||
receiver.setInvisible(false);
|
||||
}
|
||||
}
|
||||
return super.onEventReceived(eventName, sender, receiver, reference);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case TRAP_1:
|
||||
case TRAP_2:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
getTimers().addTimer("TRAP_REACT_TIMER", 1000, npc, null);
|
||||
npc.setScriptValue(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int killTarget = instance.getParameters().getInt("KILL_TARGET", 5);
|
||||
int currentKillCount = instance.getParameters().getInt("KILL_COUNT", 0);
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VICIOUS_DUELER:
|
||||
case VICIOUS_WARRIOR:
|
||||
case VICIOUS_SWORDSMAN:
|
||||
{
|
||||
if (npcParams.getInt("last_checker", 0) == 1)
|
||||
{
|
||||
currentKillCount = instance.getParameters().increaseInt("KILL_COUNT", 0, 1);
|
||||
|
||||
if (currentKillCount >= killTarget)
|
||||
{
|
||||
final ZoneType zone = ZoneManager.getInstance().getZoneByName(npc.getParameters().getString("AreaTeleName"), TeleportZone.class);
|
||||
if (zone != null)
|
||||
{
|
||||
zone.setEnabled(true, instance.getId());
|
||||
showOnScreenMsg(instance, NpcStringId.THE_PORTAL_TO_THE_NEXT_ROOM_IS_NOW_OPEN, ExShowScreenMessage.MIDDLE_CENTER, 4000);
|
||||
instance.spawnGroup("innadril23_mb2422_pt" + instance.getStatus() + "m1");
|
||||
instance.getParameters().set("KILL_COUNT", 0);
|
||||
|
||||
switch (instance.getStatus())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 12);
|
||||
instance.setStatus(2);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 3);
|
||||
instance.setStatus(3);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 18);
|
||||
instance.setStatus(4);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 5);
|
||||
instance.setStatus(5);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 20);
|
||||
instance.setStatus(6);
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = KECHI_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = KECHI_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = KECHI_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = KECHI_ARMED;
|
||||
}
|
||||
|
||||
addSpawn(bossId, BOSS_LOC, false, 0, false, instance.getId());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER.warning("Cannot find teleport zone for Crystal Cavern: Steam Corridor instance!!!");
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case KECHI_NORMAL:
|
||||
case KECHI_WISE:
|
||||
case KECHI_WEALTHY:
|
||||
case KECHI_ARMED:
|
||||
{
|
||||
instance.finishInstance();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
private void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final Creature creature = event.getSeen();
|
||||
final Npc npc = (Npc) event.getSeer();
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
|
||||
if (isInInstance(instance) && creature.isPlayer())
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case PLAYER_DETECTOR:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.broadcastEvent(String.valueOf(24220005 + npcParams.getInt("Terri_ID", 0)), 2000, null);
|
||||
|
||||
for (int i = 0; i < getRandom(5); i++)
|
||||
{
|
||||
final Npc trap = addSpawn(((npcParams.getInt("MobType", 0) == 0) ? TRAP_1 : TRAP_2), npc, true, 0, false, instance.getId());
|
||||
trap.getVariables().set("TIMER_VAL", 4);
|
||||
}
|
||||
npc.deleteMe();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsSteamCorridor();
|
||||
}
|
||||
}
|
3
L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/instances/CrystalCaverns/condNoParty.html
vendored
Normal file
3
L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/instances/CrystalCaverns/condNoParty.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Crystal Caverns Admission Portal:<br>
|
||||
You must be in a party to enter.
|
||||
</body></html>
|
@ -0,0 +1,3 @@
|
||||
<html><body>Crystal Caverns Admission Portal:<br>
|
||||
The leader of the party should try to enter.
|
||||
</body></html>
|
@ -366,7 +366,7 @@
|
||||
<height normal="13" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="19013" level="96" type="Npc" name="Crystalline Golem">
|
||||
<npc id="19013" level="96" type="FriendlyNpc" name="Crystalline Golem" usingServerSideTitle="true">
|
||||
<!-- AUTO GENERATED NPC TODO: FIX IT -->
|
||||
<parameters>
|
||||
<skill name="Link_Skill_01" id="14283" level="1" />
|
||||
@ -403,7 +403,7 @@
|
||||
<height normal="47" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="19014" level="96" type="Npc" name="Crystalline Golem">
|
||||
<npc id="19014" level="96" type="FriendlyNpc" name="Crystalline Golem" usingServerSideTitle="true">
|
||||
<!-- AUTO GENERATED NPC TODO: FIX IT -->
|
||||
<parameters>
|
||||
<skill name="Link_Skill_01" id="14283" level="1" />
|
||||
|
@ -154,6 +154,72 @@
|
||||
<node X="108616" Y="-41676" />
|
||||
<node X="108816" Y="-40776" />
|
||||
<node X="107856" Y="-40652" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_01" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="147444" />
|
||||
<stat name="oustY" val="218208" />
|
||||
<stat name="oustZ" val="-12117" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="147204" Y="218138" />
|
||||
<node X="147200" Y="218279" />
|
||||
<node X="147138" Y="218278" />
|
||||
<node X="147133" Y="218135" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_02" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="150143" />
|
||||
<stat name="oustY" val="218205" />
|
||||
<stat name="oustZ" val="-12121" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="149886" Y="218138" />
|
||||
<node X="149884" Y="218278" />
|
||||
<node X="149822" Y="218274" />
|
||||
<node X="149833" Y="218135" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_03" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="145610" />
|
||||
<stat name="oustY" val="220065" />
|
||||
<stat name="oustZ" val="-12106" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="152585" Y="218139" />
|
||||
<node X="152579" Y="218276" />
|
||||
<node X="152514" Y="218272" />
|
||||
<node X="152521" Y="218134" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_04" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="148309" />
|
||||
<stat name="oustY" val="220064" />
|
||||
<stat name="oustZ" val="-12118" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="148064" Y="219993" />
|
||||
<node X="148061" Y="220133" />
|
||||
<node X="147999" Y="220129" />
|
||||
<node X="148007" Y="219994" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_05" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="149761" />
|
||||
<stat name="oustY" val="215582" />
|
||||
<stat name="oustZ" val="-12104" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="150747" Y="219991" />
|
||||
<node X="150748" Y="220132" />
|
||||
<node X="150688" Y="220134" />
|
||||
<node X="150697" Y="219994" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_06" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="153400" />
|
||||
<stat name="oustY" val="215138" />
|
||||
<stat name="oustZ" val="-12102" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="152267" Y="215518" />
|
||||
<node X="152258" Y="215654" />
|
||||
<node X="152173" Y="215653" />
|
||||
<node X="152180" Y="215514" />
|
||||
</zone>
|
||||
<zone name="26_20_orbis_enter" type="TeleportZone" shape="NPoly" minZ="-458" maxZ="-158">
|
||||
<stat name="oustX" val="213983" />
|
||||
|
@ -2476,6 +2476,79 @@
|
||||
<point X="182894" Y="17577" Z="-10304" delay="2" run="true" />
|
||||
<point X="182426" Y="18210" Z="-10304" delay="3" run="true" />
|
||||
</route>
|
||||
<route name="gd_golem_1" repeat="false" repeatStyle="back">
|
||||
<point X="139821" Y="217257" Z="-11768" delay="0" run="true" />
|
||||
<point X="139925" Y="217250" Z="-11768" delay="0" run="true" />
|
||||
<point X="140050" Y="217251" Z="-11768" delay="0" run="true" />
|
||||
<point X="140137" Y="217244" Z="-11768" delay="0" run="true" />
|
||||
<point X="140156" Y="217190" Z="-11768" delay="0" run="true" />
|
||||
<point X="140170" Y="217104" Z="-11768" delay="0" run="true" />
|
||||
<point X="140198" Y="217003" Z="-11768" delay="0" run="true" />
|
||||
<point X="140224" Y="216897" Z="-11768" delay="0" run="true" />
|
||||
<point X="140287" Y="216756" Z="-11768" delay="0" run="true" />
|
||||
<point X="140352" Y="216600" Z="-11768" delay="0" run="true" />
|
||||
<point X="140468" Y="216459" Z="-11768" delay="0" run="true" />
|
||||
<point X="140594" Y="216334" Z="-11768" delay="0" run="true" />
|
||||
<point X="140703" Y="216212" Z="-11768" delay="0" run="true" />
|
||||
<point X="140805" Y="216144" Z="-11768" delay="0" run="true" />
|
||||
<point X="140916" Y="216065" Z="-11768" delay="0" run="true" />
|
||||
<point X="141076" Y="216000" Z="-11768" delay="0" run="true" />
|
||||
<point X="141206" Y="215970" Z="-11768" delay="0" run="true" />
|
||||
<point X="141343" Y="215974" Z="-11768" delay="0" run="true" />
|
||||
<point X="141502" Y="216016" Z="-11768" delay="0" run="true" />
|
||||
<point X="141654" Y="216106" Z="-11768" delay="0" run="true" />
|
||||
<point X="141805" Y="216240" Z="-11768" delay="0" run="true" />
|
||||
<point X="141942" Y="216354" Z="-11768" delay="0" run="true" />
|
||||
<point X="142038" Y="216472" Z="-11768" delay="0" run="true" />
|
||||
<point X="142151" Y="216643" Z="-11768" delay="0" run="true" />
|
||||
<point X="142240" Y="216782" Z="-11768" delay="0" run="true" />
|
||||
<point X="142284" Y="216894" Z="-11768" delay="0" run="true" />
|
||||
<point X="142326" Y="217024" Z="-11768" delay="0" run="true" />
|
||||
<point X="142345" Y="217100" Z="-11768" delay="0" run="true" />
|
||||
<point X="142364" Y="217166" Z="-11768" delay="0" run="true" />
|
||||
<point X="142397" Y="217238" Z="-11768" delay="0" run="true" />
|
||||
<point X="142481" Y="217250" Z="-11768" delay="0" run="true" />
|
||||
<point X="142608" Y="217249" Z="-11768" delay="0" run="true" />
|
||||
<point X="142664" Y="217269" Z="-11768" delay="0" run="true" />
|
||||
<point X="142939" Y="217270" Z="-11776" delay="10000" run="true" />
|
||||
</route>
|
||||
<route name="gd_golem_2" repeat="false" repeatStyle="back">
|
||||
<point X="142642" Y="217278" Z="-11768" delay="0" run="true" />
|
||||
<point X="142536" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="142457" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="142367" Y="217287" Z="-11768" delay="0" run="true" />
|
||||
<point X="142344" Y="217364" Z="-11768" delay="0" run="true" />
|
||||
<point X="142319" Y="217442" Z="-11768" delay="0" run="true" />
|
||||
<point X="142305" Y="217527" Z="-11768" delay="0" run="true" />
|
||||
<point X="142279" Y="217614" Z="-11768" delay="0" run="true" />
|
||||
<point X="142246" Y="217704" Z="-11768" delay="0" run="true" />
|
||||
<point X="142186" Y="217815" Z="-11768" delay="0" run="true" />
|
||||
<point X="142114" Y="217924" Z="-11768" delay="0" run="true" />
|
||||
<point X="142039" Y="218047" Z="-11768" delay="0" run="true" />
|
||||
<point X="141950" Y="218157" Z="-11768" delay="0" run="true" />
|
||||
<point X="141821" Y="218287" Z="-11768" delay="0" run="true" />
|
||||
<point X="141645" Y="218418" Z="-11768" delay="0" run="true" />
|
||||
<point X="141459" Y="218510" Z="-11768" delay="0" run="true" />
|
||||
<point X="141262" Y="218532" Z="-11768" delay="0" run="true" />
|
||||
<point X="141135" Y="218517" Z="-11768" delay="0" run="true" />
|
||||
<point X="140977" Y="218469" Z="-11768" delay="0" run="true" />
|
||||
<point X="140861" Y="218401" Z="-11768" delay="0" run="true" />
|
||||
<point X="140762" Y="218327" Z="-11768" delay="0" run="true" />
|
||||
<point X="140655" Y="218230" Z="-11768" delay="0" run="true" />
|
||||
<point X="140542" Y="218106" Z="-11768" delay="0" run="true" />
|
||||
<point X="140447" Y="218012" Z="-11768" delay="0" run="true" />
|
||||
<point X="140369" Y="217903" Z="-11768" delay="0" run="true" />
|
||||
<point X="140305" Y="217796" Z="-11768" delay="0" run="true" />
|
||||
<point X="140257" Y="217701" Z="-11768" delay="0" run="true" />
|
||||
<point X="140222" Y="217593" Z="-11768" delay="0" run="true" />
|
||||
<point X="140204" Y="217492" Z="-11768" delay="0" run="true" />
|
||||
<point X="140179" Y="217411" Z="-11768" delay="0" run="true" />
|
||||
<point X="140157" Y="217323" Z="-11768" delay="0" run="true" />
|
||||
<point X="140100" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="139972" Y="217277" Z="-11768" delay="0" run="true" />
|
||||
<point X="139843" Y="217279" Z="-11768" delay="0" run="true" />
|
||||
<point X="139502" Y="217276" Z="-11776" delay="10000" run="true" />
|
||||
</route>
|
||||
<route name="FPC_Giran_Evi" repeat="true" repeatStyle="cycle">
|
||||
<target id="80000" spawnX="83485" spawnY="147998" spawnZ="-3407" />
|
||||
<point X="83485" Y="147998" Z="-3407" delay="10" run="true" /> <!-- Gatekeeper -->
|
||||
|
238
L2J_Mobius_5.0_Salvation/dist/game/data/instances/CrystalCavernsCoralGarden.xml
vendored
Normal file
238
L2J_Mobius_5.0_Salvation/dist/game/data/instances/CrystalCavernsCoralGarden.xml
vendored
Normal file
@ -0,0 +1,238 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Crystal Caverns - Coral Garden -->
|
||||
<instance id="165" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="60" empty="3" />
|
||||
<removeBuffs type="ALL" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="142003" y="214496" z="-11600" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="149364" y="173631" z="-920" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Party" showMessageAndHtml="true">
|
||||
<param name="html" value="condNoParty.html" />
|
||||
</condition>
|
||||
<condition type="PartyLeader">
|
||||
<param name="html" value="condNoPartyLeader.html" />
|
||||
</condition>
|
||||
<condition type="GroupMin">
|
||||
<param name="limit" value="2" />
|
||||
</condition>
|
||||
<condition type="GroupMax">
|
||||
<param name="limit" value="7" />
|
||||
</condition>
|
||||
<condition type="Level">
|
||||
<param name="min" value="97" />
|
||||
</condition>
|
||||
<condition type="Distance" />
|
||||
<condition type="Reenter">
|
||||
<param name="instanceId" value="165" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<reenter apply="ON_FINISH">
|
||||
<reset day="MONDAY" hour="6" minute="30" />
|
||||
<reset day="TUESDAY" hour="6" minute="30" />
|
||||
<reset day="WEDNESDAY" hour="6" minute="30" />
|
||||
<reset day="THURSDAY" hour="6" minute="30" />
|
||||
<reset day="FRIDAY" hour="6" minute="30" />
|
||||
<reset day="SATURDAY" hour="6" minute="30" />
|
||||
<reset day="SUNDAY" hour="6" minute="30" />
|
||||
</reenter>
|
||||
<doorlist>
|
||||
<door id="24240021">
|
||||
<openStatus default="close" />
|
||||
</door>
|
||||
<door id="24240024">
|
||||
<openStatus default="open" />
|
||||
</door>
|
||||
<door id="24240025">
|
||||
<openStatus default="open" />
|
||||
</door>
|
||||
<door id="24240026">
|
||||
<openStatus default="close" />
|
||||
</door>
|
||||
</doorlist>
|
||||
<spawnlist>
|
||||
<group name="innadril24_2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_01" minZ="-11812" maxZ="-11612">
|
||||
<node x="140772" y="214027" />
|
||||
<node x="141701" y="214024" />
|
||||
<node x="141722" y="214971" />
|
||||
<node x="140776" y="214973" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="5" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_02" minZ="-11817" maxZ="-11617">
|
||||
<node x="141288" y="215403" />
|
||||
<node x="141740" y="215413" />
|
||||
<node x="141887" y="215959" />
|
||||
<node x="142400" y="216437" />
|
||||
<node x="141647" y="216436" />
|
||||
<node x="141288" y="216181" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="4" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_03m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_03" minZ="-11819" maxZ="-11619">
|
||||
<node x="140792" y="215411" />
|
||||
<node x="141224" y="215411" />
|
||||
<node x="141241" y="216166" />
|
||||
<node x="140860" y="216435" />
|
||||
<node x="140148" y="216438" />
|
||||
<node x="140635" y="215920" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="4" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_04m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_04" minZ="-11816" maxZ="-11616">
|
||||
<node x="140113" y="216495" />
|
||||
<node x="140842" y="216485" />
|
||||
<node x="140659" y="216910" />
|
||||
<node x="140646" y="217244" />
|
||||
<node x="139829" y="217222" />
|
||||
<node x="139829" y="217222" />
|
||||
<node x="139852" y="216817" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_05m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_05" minZ="-11813" maxZ="-11613">
|
||||
<node x="141670" y="216494" />
|
||||
<node x="142425" y="216494" />
|
||||
<node x="142638" y="216831" />
|
||||
<node x="142692" y="217230" />
|
||||
<node x="141859" y="217241" />
|
||||
<node x="141840" y="216891" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_06m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_06" minZ="-11817" maxZ="-11617">
|
||||
<node x="141856" y="217297" />
|
||||
<node x="142687" y="217287" />
|
||||
<node x="142550" y="217912" />
|
||||
<node x="142020" y="218441" />
|
||||
<node x="141567" y="218171" />
|
||||
<node x="141810" y="217710" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_07m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_07" minZ="-11820" maxZ="-11620">
|
||||
<node x="139832" y="217298" />
|
||||
<node x="140644" y="217281" />
|
||||
<node x="140695" y="217709" />
|
||||
<node x="140919" y="218175" />
|
||||
<node x="140469" y="218436" />
|
||||
<node x="139940" y="217889" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_08m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_08" minZ="-11812" maxZ="-11612">
|
||||
<node x="140506" y="218463" />
|
||||
<node x="140950" y="218188" />
|
||||
<node x="141244" y="218401" />
|
||||
<node x="140675" y="218807" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_09m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_09" minZ="-11829" maxZ="-11629">
|
||||
<node x="141540" y="218183" />
|
||||
<node x="142012" y="218480" />
|
||||
<node x="141815" y="218808" />
|
||||
<node x="141271" y="218405" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_10m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_10" minZ="-11815" maxZ="-11615">
|
||||
<node x="141261" y="218427" />
|
||||
<node x="141798" y="218823" />
|
||||
<node x="141732" y="219192" />
|
||||
<node x="140779" y="219201" />
|
||||
<node x="140713" y="218815" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_11m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_11" minZ="-11814" maxZ="-11614">
|
||||
<node x="140749" y="219542" />
|
||||
<node x="141733" y="219539" />
|
||||
<node x="141721" y="220520" />
|
||||
<node x="140746" y="220531" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" count="2" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" count="2" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" count="2" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_12m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_12" minZ="-11815" maxZ="-11615">
|
||||
<node x="142059" y="219549" />
|
||||
<node x="143029" y="219542" />
|
||||
<node x="143030" y="220520" />
|
||||
<node x="142059" y="220531" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" count="2" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" count="2" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" count="3" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_e2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril24_e2422_01" minZ="-11817" maxZ="-11617">
|
||||
<node x="139388" y="217164" />
|
||||
<node x="139588" y="217164" />
|
||||
<node x="139588" y="217364" />
|
||||
<node x="139388" y="217364" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19013" x="139488" y="217264" z="-11817" count="1" /> <!-- Crystalline Golem -->
|
||||
</group>
|
||||
<group name="innadril24_e2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril24_e2422_02" minZ="-11817" maxZ="-11617">
|
||||
<node x="142908" y="217164" />
|
||||
<node x="143108" y="217164" />
|
||||
<node x="143108" y="217364" />
|
||||
<node x="142908" y="217364" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19014" x="143008" y="217264" z="-11817" heading="32768" count="1" /> <!-- Crystalline Golem -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
2511
L2J_Mobius_5.0_Salvation/dist/game/data/instances/CrystalCavernsEmeraldSquare.xml
vendored
Normal file
2511
L2J_Mobius_5.0_Salvation/dist/game/data/instances/CrystalCavernsEmeraldSquare.xml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
694
L2J_Mobius_5.0_Salvation/dist/game/data/instances/CrystalCavernsSteamCorridor.xml
vendored
Normal file
694
L2J_Mobius_5.0_Salvation/dist/game/data/instances/CrystalCavernsSteamCorridor.xml
vendored
Normal file
@ -0,0 +1,694 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Crystal Caverns - Steam Corridor -->
|
||||
<instance id="164" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="60" empty="3" />
|
||||
<removeBuffs type="ALL" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="144324" y="218207" z="-12000" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="149364" y="173631" z="-920" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Party" showMessageAndHtml="true">
|
||||
<param name="html" value="condNoParty.html" />
|
||||
</condition>
|
||||
<condition type="PartyLeader">
|
||||
<param name="html" value="condNoPartyLeader.html" />
|
||||
</condition>
|
||||
<condition type="GroupMin">
|
||||
<param name="limit" value="2" />
|
||||
</condition>
|
||||
<condition type="GroupMax">
|
||||
<param name="limit" value="7" />
|
||||
</condition>
|
||||
<condition type="Level">
|
||||
<param name="min" value="97" />
|
||||
</condition>
|
||||
<condition type="Distance" />
|
||||
<condition type="Reenter">
|
||||
<param name="instanceId" value="164" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<reenter apply="ON_FINISH">
|
||||
<reset day="MONDAY" hour="6" minute="30" />
|
||||
<reset day="TUESDAY" hour="6" minute="30" />
|
||||
<reset day="WEDNESDAY" hour="6" minute="30" />
|
||||
<reset day="THURSDAY" hour="6" minute="30" />
|
||||
<reset day="FRIDAY" hour="6" minute="30" />
|
||||
<reset day="SATURDAY" hour="6" minute="30" />
|
||||
<reset day="SUNDAY" hour="6" minute="30" />
|
||||
</reenter>
|
||||
<spawnlist>
|
||||
<group name="innadril23_2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_01" minZ="-12178" maxZ="-11678">
|
||||
<node x="144778" y="217940" />
|
||||
<node x="145497" y="217937" />
|
||||
<node x="145510" y="218475" />
|
||||
<node x="144781" y="218469" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="1" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="5"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="1" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="145129" y="218189" z="-12136" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="30" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_02" minZ="-12160" maxZ="-11660">
|
||||
<node x="145563" y="217941" />
|
||||
<node x="146353" y="217943" />
|
||||
<node x="146357" y="218483" />
|
||||
<node x="145572" y="218481" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="4"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="4"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="146016" y="218235" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="34" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_03m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_03" minZ="-12167" maxZ="-11667">
|
||||
<node x="146422" y="217935" />
|
||||
<node x="147125" y="217942" />
|
||||
<node x="147128" y="218482" />
|
||||
<node x="146431" y="218475" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="3" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="5"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="3" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_01"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_03m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_03" minZ="-12167" maxZ="-11667">
|
||||
<node x="146422" y="217935" />
|
||||
<node x="147125" y="217942" />
|
||||
<node x="147128" y="218482" />
|
||||
<node x="146431" y="218475" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="146875" y="218229" z="-12167" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="37" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_04m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_04" minZ="-12160" maxZ="-11660">
|
||||
<node x="147465" y="217937" />
|
||||
<node x="148256" y="217938" />
|
||||
<node x="148259" y="218478" />
|
||||
<node x="147475" y="218477" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="4" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="6"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="4" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="147918" y="218230" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="60" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_05m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_05" minZ="-12166" maxZ="-11666">
|
||||
<node x="148258" y="217940" />
|
||||
<node x="149048" y="217942" />
|
||||
<node x="149051" y="218482" />
|
||||
<node x="148267" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="5" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="10"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="5" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="148710" y="218233" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="64" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_06m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_06" minZ="-12166" maxZ="-11666">
|
||||
<node x="149027" y="217940" />
|
||||
<node x="149818" y="217942" />
|
||||
<node x="149821" y="218482" />
|
||||
<node x="149037" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="6" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="12"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="6" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_02"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_06m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_06" minZ="-12166" maxZ="-11666">
|
||||
<node x="149027" y="217940" />
|
||||
<node x="149818" y="217942" />
|
||||
<node x="149821" y="218482" />
|
||||
<node x="149037" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="149480" y="218233" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="67" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_07m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_07" minZ="-12170" maxZ="-11670">
|
||||
<node x="150145" y="217941" />
|
||||
<node x="150856" y="217941" />
|
||||
<node x="150859" y="218481" />
|
||||
<node x="150155" y="218481" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="5"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="5"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150598" y="218234" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="90" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_08m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_08" minZ="-12170" maxZ="-11670">
|
||||
<node x="150935" y="217936" />
|
||||
<node x="151726" y="217942" />
|
||||
<node x="151729" y="218482" />
|
||||
<node x="150945" y="218476" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="8" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="15"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="8" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="151388" y="218229" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="94" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_09m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_09" minZ="-12170" maxZ="-11670">
|
||||
<node x="151791" y="217952" />
|
||||
<node x="152499" y="217939" />
|
||||
<node x="152502" y="218479" />
|
||||
<node x="151801" y="218492" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="9" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="3"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="9" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_03"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_09m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_09" minZ="-12170" maxZ="-11670">
|
||||
<node x="151791" y="217952" />
|
||||
<node x="152499" y="217939" />
|
||||
<node x="152502" y="218479" />
|
||||
<node x="151801" y="218492" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="152244" y="218245" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="97" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_10m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_10" minZ="-12166" maxZ="-11666">
|
||||
<node x="145650" y="219795" />
|
||||
<node x="146356" y="219796" />
|
||||
<node x="146358" y="220337" />
|
||||
<node x="145652" y="220331" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="10" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="10"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="10" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="145984" y="220051" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="120" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_11m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_11" minZ="-12166" maxZ="-11666">
|
||||
<node x="146468" y="219793" />
|
||||
<node x="147174" y="219794" />
|
||||
<node x="147176" y="220335" />
|
||||
<node x="146470" y="220329" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="11" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="11" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="146802" y="220049" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="124" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_12m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_12" minZ="-12166" maxZ="-11666">
|
||||
<node x="147298" y="219800" />
|
||||
<node x="148004" y="219801" />
|
||||
<node x="148006" y="220342" />
|
||||
<node x="147300" y="220336" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="12" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="12" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_04"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="3"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="12" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_04"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_12m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_12" minZ="-12166" maxZ="-11666">
|
||||
<node x="147298" y="219800" />
|
||||
<node x="148004" y="219801" />
|
||||
<node x="148006" y="220342" />
|
||||
<node x="147300" y="220336" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="147632" y="220056" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="127" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_13m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_13" minZ="-12165" maxZ="-11665">
|
||||
<node x="148361" y="219796" />
|
||||
<node x="149067" y="219797" />
|
||||
<node x="149069" y="220338" />
|
||||
<node x="148363" y="220332" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="15"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="148695" y="220052" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="150" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_14m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_14" minZ="-12165" maxZ="-11665">
|
||||
<node x="149095" y="219796" />
|
||||
<node x="149801" y="219797" />
|
||||
<node x="149803" y="220338" />
|
||||
<node x="149097" y="220332" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="17"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="17"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="149429" y="220052" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="154" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_15m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_15" minZ="-12165" maxZ="-11665">
|
||||
<node x="149865" y="219798" />
|
||||
<node x="150571" y="219799" />
|
||||
<node x="150573" y="220340" />
|
||||
<node x="149867" y="220334" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="15" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="5"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="15" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_05"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_15m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_15" minZ="-12165" maxZ="-11665">
|
||||
<node x="149865" y="219798" />
|
||||
<node x="150571" y="219799" />
|
||||
<node x="150573" y="220340" />
|
||||
<node x="149867" y="220334" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="150199" y="220054" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="157" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_16m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_16" minZ="-12160" maxZ="-11660">
|
||||
<node x="149819" y="215314" />
|
||||
<node x="150580" y="215309" />
|
||||
<node x="150592" y="215840" />
|
||||
<node x="149834" y="215842" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="16" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="20"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="16" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150198" y="215606" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="180" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_17m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_17" minZ="-12160" maxZ="-11660">
|
||||
<node x="150589" y="215313" />
|
||||
<node x="151350" y="215308" />
|
||||
<node x="151362" y="215839" />
|
||||
<node x="150604" y="215841" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="17" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="5"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="17" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150968" y="215605" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="184" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_18m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_18" minZ="-12160" maxZ="-11660">
|
||||
<node x="151375" y="215317" />
|
||||
<node x="152136" y="215312" />
|
||||
<node x="152148" y="215843" />
|
||||
<node x="151390" y="215845" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="18" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="20"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="18" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_05"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_18m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_18" minZ="-12160" maxZ="-11660">
|
||||
<node x="151375" y="215317" />
|
||||
<node x="152136" y="215312" />
|
||||
<node x="152148" y="215843" />
|
||||
<node x="151390" y="215845" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="151754" y="215609" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="187" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_mb2422m1">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422" minZ="-12140" maxZ="-11740">
|
||||
<node x="154093" y="215667" />
|
||||
<node x="153813" y="215602" />
|
||||
<node x="153627" y="215436" />
|
||||
<node x="153537" y="215291" />
|
||||
<node x="153506" y="215131" />
|
||||
<node x="153555" y="214913" />
|
||||
<node x="153696" y="214713" />
|
||||
<node x="153892" y="214590" />
|
||||
<node x="154087" y="214538" />
|
||||
<node x="154301" y="214602" />
|
||||
<node x="154479" y="214720" />
|
||||
<node x="154601" y="214903" />
|
||||
<node x="154646" y="215119" />
|
||||
<node x="154613" y="215288" />
|
||||
<node x="154550" y="215411" />
|
||||
<node x="154462" y="215527" />
|
||||
<node x="154304" y="215624" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="154078" y="215125" z="-12140" respawnTime="1min" count="1" /> <!-- Fire Region -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt1m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt1" minZ="-12145" maxZ="-11945">
|
||||
<node x="146993" y="218107" />
|
||||
<node x="147193" y="218107" />
|
||||
<node x="147193" y="218307" />
|
||||
<node x="146993" y="218307" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="147148" y="218208" z="-12112" heading="32624" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt2m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt2" minZ="-12147" maxZ="-11947">
|
||||
<node x="149740" y="218107" />
|
||||
<node x="149940" y="218107" />
|
||||
<node x="149940" y="218307" />
|
||||
<node x="149740" y="218307" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="149818" y="218208" z="-12096" heading="32496" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt3m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt3" minZ="-12141" maxZ="-11941">
|
||||
<node x="152440" y="218104" />
|
||||
<node x="152640" y="218104" />
|
||||
<node x="152640" y="218304" />
|
||||
<node x="152440" y="218304" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="152538" y="218208" z="-12096" heading="32552" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt4m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt4" minZ="-12146" maxZ="-11946">
|
||||
<node x="147916" y="219968" />
|
||||
<node x="148116" y="219968" />
|
||||
<node x="148116" y="220168" />
|
||||
<node x="147916" y="220168" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="148022" y="220069" z="-12112" heading="-32568" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt5m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt5" minZ="-12144" maxZ="-11944">
|
||||
<node x="150613" y="219960" />
|
||||
<node x="150813" y="219960" />
|
||||
<node x="150813" y="220160" />
|
||||
<node x="150613" y="220160" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="150699" y="220064" z="-12112" heading="-32696" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt6m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt6" minZ="-12143" maxZ="-11943">
|
||||
<node x="152084" y="215474" />
|
||||
<node x="152284" y="215474" />
|
||||
<node x="152284" y="215674" />
|
||||
<node x="152084" y="215674" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="152214" y="215586" z="-12112" heading="32568" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
@ -0,0 +1,215 @@
|
||||
/*
|
||||
* 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 ai.areas.Parnassus.EntrancePortalToCrystalCaverns;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.OnEventTrigger;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
import instances.CrystalCaverns.CrystalCavernsCoralGarden;
|
||||
import instances.CrystalCaverns.CrystalCavernsEmeraldSquare;
|
||||
import instances.CrystalCaverns.CrystalCavernsSteamCorridor;
|
||||
|
||||
/**
|
||||
* Entrance Portal to Crystal Caverns AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class EntrancePortalToCrystalCaverns extends AbstractNpcAI
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
// Misc
|
||||
private static final int EMERALD_SQUARE_TEMPLATE_ID = 163;
|
||||
private static final int STEAM_CORRIDOR_TEMPLATE_ID = 164;
|
||||
private static final int CORAL_GARDEN_TEMPLATE_ID = 165;
|
||||
private static final int PRISON_ENTRACE_TRIGGER_1 = 24230010;
|
||||
private static final int PRISON_ENTRACE_TRIGGER_2 = 24230012;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_1 = 24230014;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_2 = 24230016;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_3 = 24230018;
|
||||
|
||||
private EntrancePortalToCrystalCaverns()
|
||||
{
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addFirstTalkId(CAVERNS_ENTRACE);
|
||||
addSpawnId(CAVERNS_ENTRACE);
|
||||
addSeeCreatureId(CAVERNS_ENTRACE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
Quest instanceScript = null;
|
||||
|
||||
switch (getCurrentInstanceTemplateId())
|
||||
{
|
||||
case EMERALD_SQUARE_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsEmeraldSquare.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
case STEAM_CORRIDOR_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsSteamCorridor.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
case CORAL_GARDEN_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsCoralGarden.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (instanceScript != null)
|
||||
{
|
||||
instanceScript.notifyEvent(event, npc, player);
|
||||
}
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
return "EntrancePortal_" + getCurrentInstanceTemplateId() + ".html";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
getTimers().addRepeatingTimer("LOOP_TIMER", 10000, npc, null);
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("LOOP_TIMER"))
|
||||
{
|
||||
final int currentTemplateId = getCurrentInstanceTemplateId();
|
||||
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, PlayerInstance.class, 500, p ->
|
||||
{
|
||||
updateTriggersForPlayer(player, currentTemplateId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSeeCreature(Npc npc, Creature creature, boolean isSummon)
|
||||
{
|
||||
if (creature.isPlayer())
|
||||
{
|
||||
creature.getActingPlayer().sendPacket(new OnEventTrigger(PRISON_ENTRACE_TRIGGER_1, true));
|
||||
creature.getActingPlayer().sendPacket(new OnEventTrigger(PRISON_ENTRACE_TRIGGER_2, true));
|
||||
updateTriggersForPlayer(creature.getActingPlayer(), getCurrentInstanceTemplateId());
|
||||
}
|
||||
return super.onSeeCreature(npc, creature, isSummon);
|
||||
}
|
||||
|
||||
public void updateTriggersForPlayer(PlayerInstance player, int currentTemplateId)
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_1, false));
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_2, false));
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_3, false));
|
||||
|
||||
switch (currentTemplateId)
|
||||
{
|
||||
case EMERALD_SQUARE_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_1, true));
|
||||
break;
|
||||
}
|
||||
case STEAM_CORRIDOR_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_2, true));
|
||||
break;
|
||||
}
|
||||
case CORAL_GARDEN_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_3, true));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getCurrentInstanceTemplateId()
|
||||
{
|
||||
final int day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
|
||||
final int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
|
||||
int templateId = -1;
|
||||
|
||||
switch (day)
|
||||
{
|
||||
case Calendar.MONDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.TUESDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? CORAL_GARDEN_TEMPLATE_ID : EMERALD_SQUARE_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.WEDNESDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? STEAM_CORRIDOR_TEMPLATE_ID : CORAL_GARDEN_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.THURSDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.FRIDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? CORAL_GARDEN_TEMPLATE_ID : EMERALD_SQUARE_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.SATURDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? STEAM_CORRIDOR_TEMPLATE_ID : CORAL_GARDEN_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.SUNDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return templateId;
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new EntrancePortalToCrystalCaverns();
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Emerald Square</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Steam Corridor</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Coral Garden</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,253 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.WalkingManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.Spawn;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Coral Garden instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsCoralGarden extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int MICHAELA_NORMAL = 25799;
|
||||
private static final int MICHAELA_WISE = 26116;
|
||||
private static final int MICHAELA_WEALTHY = 26115;
|
||||
private static final int MICHAELA_ARMED = 26114;
|
||||
private static final int GOLEM_1 = 19013; // Crystalline Golem
|
||||
private static final int GOLEM_2 = 19014; // Crystalline Golem
|
||||
// Location
|
||||
private static final Location BOSS_LOC = new Location(144307, 220032, -11824);
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 165;
|
||||
private static final int BOSS_DOOR_ID = 24240026;
|
||||
private static final int PLAYER_MAX_DISTANCE = 250;
|
||||
|
||||
public CrystalCavernsCoralGarden()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addFirstTalkId(GOLEM_1, GOLEM_2);
|
||||
addKillId(MICHAELA_NORMAL, MICHAELA_WISE, MICHAELA_WEALTHY, MICHAELA_ARMED);
|
||||
addAttackId(MICHAELA_NORMAL, MICHAELA_WISE, MICHAELA_WEALTHY, MICHAELA_ARMED);
|
||||
addRouteFinishedId(GOLEM_1, GOLEM_2);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "SUCCESS_TIMER":
|
||||
{
|
||||
showOnScreenMsg(instance, NpcStringId.GOLEM_LOCATION_SUCCESSFUL_ENTRY_ACCESSED, ExShowScreenMessage.MIDDLE_CENTER, 5000);
|
||||
break;
|
||||
}
|
||||
case "LOOP_TIMER":
|
||||
{
|
||||
player = npcVars.getObject("PLAYER_OBJECT", PlayerInstance.class);
|
||||
|
||||
if ((player != null) && (npc.calculateDistance3D(player) > PLAYER_MAX_DISTANCE) && npcVars.getBoolean("NPC_FOLLOWING", true))
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
addMoveToDesire(npc, new Location(npc.getX() + getRandom(-100, 100), npc.getY() + getRandom(-150, 150), npc.getZ()), 23);
|
||||
npc.setRunning();
|
||||
npcVars.set("NPC_FOLLOWING", false);
|
||||
getTimers().cancelTimer("LOOP_TIMER", npc, null);
|
||||
getTimers().addTimer("FAIL_TIMER", 5000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "FAIL_TIMER":
|
||||
{
|
||||
final Spawn spawn = npc.getSpawn();
|
||||
|
||||
if (!npcVars.getBoolean("NPC_FOLLOWING", true))
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
npc.setWalking();
|
||||
npc.teleToLocation(npc.getSpawn().getX(), npc.getSpawn().getY(), npc.getSpawn().getZ());
|
||||
npc.setScriptValue(0);
|
||||
npc.setNameString(null);
|
||||
npc.setTitleString(null);
|
||||
npc.setTitle(null);
|
||||
npc.broadcastInfo();
|
||||
}
|
||||
npcVars.set("CAN_CALL_MONSTERS", ((spawn.getX() - ((npc.getX() * spawn.getX()) - npc.getX())) + (spawn.getY() - (npc.getY() * spawn.getY()) - npc.getY())) > (200 * 200));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.getVariables().set("PLAYER_OBJECT", player);
|
||||
npc.setNameString(NpcStringId.TRAITOR_CRYSTALLINE_GOLEM);
|
||||
npc.setTitleString(NpcStringId.GIVEN_TO_S1);
|
||||
npc.setTitle(player.getName());
|
||||
npc.broadcastInfo();
|
||||
WalkingManager.getInstance().startMoving(npc, npc.getId() == GOLEM_1 ? "gd_golem_1" : "gd_golem_2");
|
||||
getTimers().addRepeatingTimer("LOOP_TIMER", 500, npc, null);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRouteFinished(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (instance != null)
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
showOnScreenMsg(instance, NpcStringId.GOLEM_ENTERED_THE_REQUIRED_ZONE, ExShowScreenMessage.MIDDLE_CENTER, 5000);
|
||||
npc.deleteMe();
|
||||
|
||||
if (instance.getAliveNpcs(GOLEM_1, GOLEM_2).isEmpty())
|
||||
{
|
||||
instance.openCloseDoor(BOSS_DOOR_ID, true);
|
||||
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = MICHAELA_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = MICHAELA_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = MICHAELA_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = MICHAELA_ARMED;
|
||||
}
|
||||
|
||||
final Npc boss = addSpawn(bossId, BOSS_LOC, false, 0, false, instance.getId());
|
||||
getTimers().addTimer("SUCCESS_TIMER", 5000, boss, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MICHAELA_NORMAL:
|
||||
case MICHAELA_WISE:
|
||||
case MICHAELA_WEALTHY:
|
||||
case MICHAELA_ARMED:
|
||||
{
|
||||
instance.finishInstance();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MICHAELA_NORMAL:
|
||||
case MICHAELA_WISE:
|
||||
case MICHAELA_WEALTHY:
|
||||
case MICHAELA_ARMED:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
instance.openCloseDoor(BOSS_DOOR_ID, false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsCoralGarden();
|
||||
}
|
||||
}
|
@ -0,0 +1,424 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Emerald Square instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsEmeraldSquare extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int VERIDAN_NORMAL = 25796;
|
||||
private static final int VERIDAN_WISE = 26107;
|
||||
private static final int VERIDAN_WEALTHY = 26106;
|
||||
private static final int VERIDAN_ARMED = 26105;
|
||||
private static final int WATER_CANNON = 19008;
|
||||
private static final int WATER_CANNON_SKILL = 19009;
|
||||
private static final int STRONGHOLD_PROTECTOR = 23012;
|
||||
private static final int SQUARE_INTRUDER = 23010;
|
||||
private static final int SQUARE_ATTACKER = 23011;
|
||||
// Skills
|
||||
private static final SkillHolder DESTROY_SKILL = new SkillHolder(12003, 1);
|
||||
private static final SkillHolder WATER_CANNON_SKILL_ATTACK = new SkillHolder(14179, 1);
|
||||
// Locations
|
||||
private static final Location[] BOSS_SPAWNS =
|
||||
{
|
||||
new Location(152745, 145957, -12584, 16446),
|
||||
new Location(152816, 145968, -12633, 16446),
|
||||
};
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 163;
|
||||
private static final int RAID_DOOR_1 = 24220005;
|
||||
private static final int RAID_DOOR_2 = 24220006;
|
||||
|
||||
public CrystalCavernsEmeraldSquare()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addSpawnId(WATER_CANNON);
|
||||
addKillId(WATER_CANNON, VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED);
|
||||
addAttackId(WATER_CANNON, VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED);
|
||||
addSpellFinishedId(WATER_CANNON_SKILL);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
setCreatureSeeId(this::onCreatureSee, WATER_CANNON);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "HP_REGEN_TIMER":
|
||||
{
|
||||
int value = ((baseId == 5) || (baseId == 6)) ? 5 : baseId;
|
||||
npc.getStat().addFixedValue(Stats.REGENERATE_HP_RATE, Double.valueOf(value * 1000));
|
||||
break;
|
||||
}
|
||||
case "SUPPORT_SPAWN_TIMER":
|
||||
{
|
||||
int supportVal = npcVars.getInt("SUPPORT_VALUE", 0);
|
||||
|
||||
if (supportVal > 3)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((supportVal == 0) || (supportVal == 1) || (supportVal == 2))
|
||||
{
|
||||
final String spawnName = npcParams.getString("SupportMaker" + (supportVal + 1), null);
|
||||
if (spawnName != null)
|
||||
{
|
||||
instance.spawnGroup(spawnName);
|
||||
}
|
||||
npcVars.increaseInt("SUPPORT_VALUE", 1);
|
||||
}
|
||||
|
||||
if (!npcVars.getBoolean("PREVIOUS_BASE_DESTROYED", false))
|
||||
{
|
||||
getTimers().addTimer("SUPPORT_SPAWN_TIMER", 60000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "CANNON_LOOP_ATTACK":
|
||||
{
|
||||
if (npc.getCurrentHpPercent() > 30)
|
||||
{
|
||||
if (npcVars.getBoolean("IS_DESTROY_ACTIVATED", false) || (getRandom(10) < 2))
|
||||
{
|
||||
final Npc cannonSkill = addSpawn(WATER_CANNON_SKILL, npc, true, 0, false, instance.getId());
|
||||
addSkillCastDesire(cannonSkill, cannonSkill, WATER_CANNON_SKILL_ATTACK, 23);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SUICIDE_TIMER":
|
||||
{
|
||||
npc.doDie(null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VERIDAN_WISE:
|
||||
case VERIDAN_WEALTHY:
|
||||
case VERIDAN_ARMED:
|
||||
{
|
||||
if (!npcVars.getBoolean("CLOSED_DOORS", false))
|
||||
{
|
||||
npcVars.set("CLOSED_DOORS", true);
|
||||
instance.openCloseDoor(RAID_DOOR_2, false);
|
||||
}
|
||||
}
|
||||
case WATER_CANNON:
|
||||
{
|
||||
if ((skill != null) && (skill.getId() == DESTROY_SKILL.getSkillId()) && !npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npcVars.set("IS_DESTROY_ACTIVATED", true);
|
||||
npc.setDisplayEffect(2);
|
||||
getTimers().addTimer("SUICIDE_TIMER", 60000, npc, null);
|
||||
}
|
||||
|
||||
if (npc.getCurrentHpPercent() < 30)
|
||||
{
|
||||
if (!npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npc.setDisplayEffect(3);
|
||||
|
||||
}
|
||||
}
|
||||
else if (!npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npc.setDisplayEffect(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VERIDAN_NORMAL:
|
||||
case VERIDAN_WISE:
|
||||
case VERIDAN_WEALTHY:
|
||||
case VERIDAN_ARMED:
|
||||
{
|
||||
if (instance.getAliveNpcs(VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED).isEmpty())
|
||||
{
|
||||
instance.finishInstance();
|
||||
}
|
||||
else
|
||||
{
|
||||
instance.setReenterTime();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WATER_CANNON:
|
||||
{
|
||||
npc.setDisplayEffect(4);
|
||||
showOnScreenMsg(instance, NpcStringId.SUCCESSFUL_DESTRUCTION_OF_STRONGHOLD_S1, ExShowScreenMessage.MIDDLE_CENTER, 4000, String.valueOf(npc.getParameters().getInt("base_id", -1)));
|
||||
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, MonsterInstance.class, 400, monster ->
|
||||
{
|
||||
if ((monster.getId() == STRONGHOLD_PROTECTOR) || (monster.getId() == SQUARE_INTRUDER) || (monster.getId() == SQUARE_ATTACKER))
|
||||
{
|
||||
monster.doDie(null);
|
||||
}
|
||||
});
|
||||
|
||||
instance.getAliveNpcs(WATER_CANNON).forEach(cannon ->
|
||||
{
|
||||
final int cannonBaseId = cannon.getParameters().getInt("base_id", -1);
|
||||
|
||||
switch (baseId)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
if (cannonBaseId == 2)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (cannonBaseId == 3)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
if (cannonBaseId == 4)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
if ((cannonBaseId == 5) || (cannonBaseId == 6))
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
case 6:
|
||||
{
|
||||
if (cannonBaseId == 7)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
if ((cannonBaseId == 8) || (cannonBaseId == 9))
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if ((baseId == 8) || (baseId == 9))
|
||||
{
|
||||
instance.getParameters().increaseInt("MAIN_TARGETS_KILLED", 0, 1);
|
||||
|
||||
if (instance.getParameters().getInt("MAIN_TARGETS_KILLED", 0) == 2)
|
||||
{
|
||||
showOnScreenMsg(instance, NpcStringId.SUCCESSFUL_DESTRUCTION_OF_STRONGHOLD_ENTRY_ACCESSED, ExShowScreenMessage.MIDDLE_CENTER, 4000);
|
||||
instance.openCloseDoor(RAID_DOOR_1, true);
|
||||
instance.openCloseDoor(RAID_DOOR_2, true);
|
||||
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = VERIDAN_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = VERIDAN_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = VERIDAN_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = VERIDAN_ARMED;
|
||||
}
|
||||
|
||||
for (Location loc : BOSS_SPAWNS)
|
||||
{
|
||||
addSpawn(bossId, loc, false, 0, false, instance.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpellFinished(Npc npc, PlayerInstance player, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance) && (npc.getId() == WATER_CANNON_SKILL) && (skill.getId() == WATER_CANNON_SKILL_ATTACK.getSkillId()))
|
||||
{
|
||||
npc.deleteMe();
|
||||
}
|
||||
return super.onSpellFinished(npc, player, skill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case WATER_CANNON:
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
if (baseId != 1)
|
||||
{
|
||||
npc.setTargetable(false);
|
||||
}
|
||||
|
||||
getTimers().addTimer("HP_REGEN_TIMER", 10000, npc, null);
|
||||
|
||||
if (baseId > 0)
|
||||
{
|
||||
getTimers().addTimer("SUPPORT_SPAWN_TIMER", (baseId * 60) * 1000, npc, null);
|
||||
}
|
||||
npc.initSeenCreatures();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
public void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final Creature creature = event.getSeen();
|
||||
final Npc npc = (Npc) event.getSeer();
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
|
||||
if ((world != null) && creature.isPlayer() && npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.setDisplayEffect(1);
|
||||
getTimers().addRepeatingTimer("CANNON_LOOP_ATTACK", 1000, npc, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsEmeraldSquare();
|
||||
}
|
||||
}
|
@ -0,0 +1,408 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.ChatType;
|
||||
import org.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneType;
|
||||
import org.l2jmobius.gameserver.model.zone.type.TeleportZone;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Steam Corridor instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsSteamCorridor extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int KECHI_NORMAL = 25797;
|
||||
private static final int KECHI_WISE = 26113;
|
||||
private static final int KECHI_WEALTHY = 26112;
|
||||
private static final int KECHI_ARMED = 26111;
|
||||
private static final int VICIOUS_DUELER = 23014;
|
||||
private static final int VICIOUS_WARRIOR = 23016;
|
||||
private static final int VICIOUS_SWORDSMAN = 23015;
|
||||
private static final int SPIRIT_PROTECTOR = 23013;
|
||||
private static final int FIRE_REGION = 19161;
|
||||
private static final int PLAYER_DETECTOR = 19075;
|
||||
private static final int TRAP_1 = 19011;
|
||||
private static final int TRAP_2 = 19012;
|
||||
// Skills
|
||||
private static final SkillHolder FIRE_SKILL_1 = new SkillHolder(14373, 1);
|
||||
private static final SkillHolder FIRE_SKILL_2 = new SkillHolder(14373, 2);
|
||||
private static final SkillHolder FIRE_SKILL_3 = new SkillHolder(14197, 1);
|
||||
private static final SkillHolder TRAP_SKILL_1 = new SkillHolder(14180, 1);
|
||||
private static final SkillHolder TRAP_SKILL_2 = new SkillHolder(14181, 1);
|
||||
private static final SkillHolder TRAP_SKILL_3 = new SkillHolder(14372, 1);
|
||||
// Location
|
||||
private static final Location BOSS_LOC = new Location(154078, 215125, -12140);
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 164;
|
||||
|
||||
public CrystalCavernsSteamCorridor()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addAttackId(TRAP_1, TRAP_2);
|
||||
addKillId(VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN, KECHI_NORMAL, KECHI_WISE, KECHI_WEALTHY, KECHI_ARMED);
|
||||
addSpawnId(SPIRIT_PROTECTOR, VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN, FIRE_REGION, PLAYER_DETECTOR);
|
||||
addEventReceivedId(SPIRIT_PROTECTOR, VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN);
|
||||
addInstanceCreatedId(TEMPLATE_ID);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
setCreatureSeeId(this::onCreatureSee, PLAYER_DETECTOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "FIRE_REGION_TIMER_1":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_1, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_2", 10000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "FIRE_REGION_TIMER_2":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_2, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_3", 10000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "FIRE_REGION_TIMER_3":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_3, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_3", 1000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "TRAP_REACT_TIMER":
|
||||
{
|
||||
final int timer = npcVars.increaseInt("TIMER_VAL", -1);
|
||||
if (timer > 0)
|
||||
{
|
||||
npc.broadcastSay(ChatType.NPC_GENERAL, " " + timer);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (npc.getId() == TRAP_1)
|
||||
{
|
||||
addSkillCastDesire(npc, npc, (getRandom(10) < 8 ? TRAP_SKILL_1 : TRAP_SKILL_3), 23);
|
||||
}
|
||||
else if (npc.getId() == TRAP_2)
|
||||
{
|
||||
addSkillCastDesire(npc, npc, (getRandom(10) < 8 ? TRAP_SKILL_2 : TRAP_SKILL_3), 23);
|
||||
}
|
||||
}
|
||||
getTimers().addTimer("TRAP_REACT_TIMER", 1000, npc, null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceCreated(Instance instance, PlayerInstance player)
|
||||
{
|
||||
instance.setStatus(1);
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
final ZoneType zone = ZoneManager.getInstance().getZoneByName("24_24_fire_telezone_0" + i, TeleportZone.class);
|
||||
if (zone != null)
|
||||
{
|
||||
zone.setEnabled(false, instance.getId());
|
||||
}
|
||||
}
|
||||
super.onInstanceCreated(instance, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case SPIRIT_PROTECTOR:
|
||||
case VICIOUS_DUELER:
|
||||
case VICIOUS_WARRIOR:
|
||||
case VICIOUS_SWORDSMAN:
|
||||
{
|
||||
npc.setTargetable(false);
|
||||
npc.disableCoreAI(true);
|
||||
npc.setInvisible(true);
|
||||
break;
|
||||
}
|
||||
case FIRE_REGION:
|
||||
{
|
||||
final int timeLimit = npcParams.getInt("Limit_Time", 0);
|
||||
if (timeLimit > 0)
|
||||
{
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_1", ((timeLimit * 30) * 100), npc, null);
|
||||
}
|
||||
npc.setTargetable(false);
|
||||
npc.setIsInvul(true);
|
||||
npc.setRandomAnimation(false);
|
||||
npc.setRandomWalking(false);
|
||||
npc.disableCoreAI(true);
|
||||
break;
|
||||
}
|
||||
case PLAYER_DETECTOR:
|
||||
{
|
||||
npc.initSeenCreatures();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onEventReceived(String eventName, Npc sender, Npc receiver, WorldObject reference)
|
||||
{
|
||||
final Instance instance = receiver.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = receiver.getParameters();
|
||||
|
||||
if (eventName.equals(String.valueOf(24220005 + npcParams.getInt("Terri_ID", 0))))
|
||||
{
|
||||
receiver.setTargetable(true);
|
||||
receiver.disableCoreAI(false);
|
||||
receiver.setInvisible(false);
|
||||
}
|
||||
}
|
||||
return super.onEventReceived(eventName, sender, receiver, reference);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case TRAP_1:
|
||||
case TRAP_2:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
getTimers().addTimer("TRAP_REACT_TIMER", 1000, npc, null);
|
||||
npc.setScriptValue(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int killTarget = instance.getParameters().getInt("KILL_TARGET", 5);
|
||||
int currentKillCount = instance.getParameters().getInt("KILL_COUNT", 0);
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VICIOUS_DUELER:
|
||||
case VICIOUS_WARRIOR:
|
||||
case VICIOUS_SWORDSMAN:
|
||||
{
|
||||
if (npcParams.getInt("last_checker", 0) == 1)
|
||||
{
|
||||
currentKillCount = instance.getParameters().increaseInt("KILL_COUNT", 0, 1);
|
||||
|
||||
if (currentKillCount >= killTarget)
|
||||
{
|
||||
final ZoneType zone = ZoneManager.getInstance().getZoneByName(npc.getParameters().getString("AreaTeleName"), TeleportZone.class);
|
||||
if (zone != null)
|
||||
{
|
||||
zone.setEnabled(true, instance.getId());
|
||||
showOnScreenMsg(instance, NpcStringId.THE_PORTAL_TO_THE_NEXT_ROOM_IS_NOW_OPEN, ExShowScreenMessage.MIDDLE_CENTER, 4000);
|
||||
instance.spawnGroup("innadril23_mb2422_pt" + instance.getStatus() + "m1");
|
||||
instance.getParameters().set("KILL_COUNT", 0);
|
||||
|
||||
switch (instance.getStatus())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 12);
|
||||
instance.setStatus(2);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 3);
|
||||
instance.setStatus(3);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 18);
|
||||
instance.setStatus(4);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 5);
|
||||
instance.setStatus(5);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 20);
|
||||
instance.setStatus(6);
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = KECHI_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = KECHI_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = KECHI_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = KECHI_ARMED;
|
||||
}
|
||||
|
||||
addSpawn(bossId, BOSS_LOC, false, 0, false, instance.getId());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER.warning("Cannot find teleport zone for Crystal Cavern: Steam Corridor instance!!!");
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case KECHI_NORMAL:
|
||||
case KECHI_WISE:
|
||||
case KECHI_WEALTHY:
|
||||
case KECHI_ARMED:
|
||||
{
|
||||
instance.finishInstance();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
private void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final Creature creature = event.getSeen();
|
||||
final Npc npc = (Npc) event.getSeer();
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
|
||||
if (isInInstance(instance) && creature.isPlayer())
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case PLAYER_DETECTOR:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.broadcastEvent(String.valueOf(24220005 + npcParams.getInt("Terri_ID", 0)), 2000, null);
|
||||
|
||||
for (int i = 0; i < getRandom(5); i++)
|
||||
{
|
||||
final Npc trap = addSpawn(((npcParams.getInt("MobType", 0) == 0) ? TRAP_1 : TRAP_2), npc, true, 0, false, instance.getId());
|
||||
trap.getVariables().set("TIMER_VAL", 4);
|
||||
}
|
||||
npc.deleteMe();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsSteamCorridor();
|
||||
}
|
||||
}
|
3
L2J_Mobius_5.0_Salvation/dist/game/data/scripts/instances/CrystalCaverns/condNoParty.html
vendored
Normal file
3
L2J_Mobius_5.0_Salvation/dist/game/data/scripts/instances/CrystalCaverns/condNoParty.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Crystal Caverns Admission Portal:<br>
|
||||
You must be in a party to enter.
|
||||
</body></html>
|
@ -0,0 +1,3 @@
|
||||
<html><body>Crystal Caverns Admission Portal:<br>
|
||||
The leader of the party should try to enter.
|
||||
</body></html>
|
@ -366,7 +366,7 @@
|
||||
<height normal="13" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="19013" level="96" type="Npc" name="Crystalline Golem">
|
||||
<npc id="19013" level="96" type="FriendlyNpc" name="Crystalline Golem" usingServerSideTitle="true">
|
||||
<!-- AUTO GENERATED NPC TODO: FIX IT -->
|
||||
<parameters>
|
||||
<skill name="Link_Skill_01" id="14283" level="1" />
|
||||
@ -403,7 +403,7 @@
|
||||
<height normal="47" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="19014" level="96" type="Npc" name="Crystalline Golem">
|
||||
<npc id="19014" level="96" type="FriendlyNpc" name="Crystalline Golem" usingServerSideTitle="true">
|
||||
<!-- AUTO GENERATED NPC TODO: FIX IT -->
|
||||
<parameters>
|
||||
<skill name="Link_Skill_01" id="14283" level="1" />
|
||||
|
@ -154,6 +154,72 @@
|
||||
<node X="108616" Y="-41676" />
|
||||
<node X="108816" Y="-40776" />
|
||||
<node X="107856" Y="-40652" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_01" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="147444" />
|
||||
<stat name="oustY" val="218208" />
|
||||
<stat name="oustZ" val="-12117" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="147204" Y="218138" />
|
||||
<node X="147200" Y="218279" />
|
||||
<node X="147138" Y="218278" />
|
||||
<node X="147133" Y="218135" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_02" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="150143" />
|
||||
<stat name="oustY" val="218205" />
|
||||
<stat name="oustZ" val="-12121" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="149886" Y="218138" />
|
||||
<node X="149884" Y="218278" />
|
||||
<node X="149822" Y="218274" />
|
||||
<node X="149833" Y="218135" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_03" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="145610" />
|
||||
<stat name="oustY" val="220065" />
|
||||
<stat name="oustZ" val="-12106" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="152585" Y="218139" />
|
||||
<node X="152579" Y="218276" />
|
||||
<node X="152514" Y="218272" />
|
||||
<node X="152521" Y="218134" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_04" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="148309" />
|
||||
<stat name="oustY" val="220064" />
|
||||
<stat name="oustZ" val="-12118" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="148064" Y="219993" />
|
||||
<node X="148061" Y="220133" />
|
||||
<node X="147999" Y="220129" />
|
||||
<node X="148007" Y="219994" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_05" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="149761" />
|
||||
<stat name="oustY" val="215582" />
|
||||
<stat name="oustZ" val="-12104" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="150747" Y="219991" />
|
||||
<node X="150748" Y="220132" />
|
||||
<node X="150688" Y="220134" />
|
||||
<node X="150697" Y="219994" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_06" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="153400" />
|
||||
<stat name="oustY" val="215138" />
|
||||
<stat name="oustZ" val="-12102" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="152267" Y="215518" />
|
||||
<node X="152258" Y="215654" />
|
||||
<node X="152173" Y="215653" />
|
||||
<node X="152180" Y="215514" />
|
||||
</zone>
|
||||
<zone name="26_20_orbis_enter" type="TeleportZone" shape="NPoly" minZ="-458" maxZ="-158">
|
||||
<stat name="oustX" val="213983" />
|
||||
|
@ -2476,6 +2476,79 @@
|
||||
<point X="182894" Y="17577" Z="-10304" delay="2" run="true" />
|
||||
<point X="182426" Y="18210" Z="-10304" delay="3" run="true" />
|
||||
</route>
|
||||
<route name="gd_golem_1" repeat="false" repeatStyle="back">
|
||||
<point X="139821" Y="217257" Z="-11768" delay="0" run="true" />
|
||||
<point X="139925" Y="217250" Z="-11768" delay="0" run="true" />
|
||||
<point X="140050" Y="217251" Z="-11768" delay="0" run="true" />
|
||||
<point X="140137" Y="217244" Z="-11768" delay="0" run="true" />
|
||||
<point X="140156" Y="217190" Z="-11768" delay="0" run="true" />
|
||||
<point X="140170" Y="217104" Z="-11768" delay="0" run="true" />
|
||||
<point X="140198" Y="217003" Z="-11768" delay="0" run="true" />
|
||||
<point X="140224" Y="216897" Z="-11768" delay="0" run="true" />
|
||||
<point X="140287" Y="216756" Z="-11768" delay="0" run="true" />
|
||||
<point X="140352" Y="216600" Z="-11768" delay="0" run="true" />
|
||||
<point X="140468" Y="216459" Z="-11768" delay="0" run="true" />
|
||||
<point X="140594" Y="216334" Z="-11768" delay="0" run="true" />
|
||||
<point X="140703" Y="216212" Z="-11768" delay="0" run="true" />
|
||||
<point X="140805" Y="216144" Z="-11768" delay="0" run="true" />
|
||||
<point X="140916" Y="216065" Z="-11768" delay="0" run="true" />
|
||||
<point X="141076" Y="216000" Z="-11768" delay="0" run="true" />
|
||||
<point X="141206" Y="215970" Z="-11768" delay="0" run="true" />
|
||||
<point X="141343" Y="215974" Z="-11768" delay="0" run="true" />
|
||||
<point X="141502" Y="216016" Z="-11768" delay="0" run="true" />
|
||||
<point X="141654" Y="216106" Z="-11768" delay="0" run="true" />
|
||||
<point X="141805" Y="216240" Z="-11768" delay="0" run="true" />
|
||||
<point X="141942" Y="216354" Z="-11768" delay="0" run="true" />
|
||||
<point X="142038" Y="216472" Z="-11768" delay="0" run="true" />
|
||||
<point X="142151" Y="216643" Z="-11768" delay="0" run="true" />
|
||||
<point X="142240" Y="216782" Z="-11768" delay="0" run="true" />
|
||||
<point X="142284" Y="216894" Z="-11768" delay="0" run="true" />
|
||||
<point X="142326" Y="217024" Z="-11768" delay="0" run="true" />
|
||||
<point X="142345" Y="217100" Z="-11768" delay="0" run="true" />
|
||||
<point X="142364" Y="217166" Z="-11768" delay="0" run="true" />
|
||||
<point X="142397" Y="217238" Z="-11768" delay="0" run="true" />
|
||||
<point X="142481" Y="217250" Z="-11768" delay="0" run="true" />
|
||||
<point X="142608" Y="217249" Z="-11768" delay="0" run="true" />
|
||||
<point X="142664" Y="217269" Z="-11768" delay="0" run="true" />
|
||||
<point X="142939" Y="217270" Z="-11776" delay="10000" run="true" />
|
||||
</route>
|
||||
<route name="gd_golem_2" repeat="false" repeatStyle="back">
|
||||
<point X="142642" Y="217278" Z="-11768" delay="0" run="true" />
|
||||
<point X="142536" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="142457" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="142367" Y="217287" Z="-11768" delay="0" run="true" />
|
||||
<point X="142344" Y="217364" Z="-11768" delay="0" run="true" />
|
||||
<point X="142319" Y="217442" Z="-11768" delay="0" run="true" />
|
||||
<point X="142305" Y="217527" Z="-11768" delay="0" run="true" />
|
||||
<point X="142279" Y="217614" Z="-11768" delay="0" run="true" />
|
||||
<point X="142246" Y="217704" Z="-11768" delay="0" run="true" />
|
||||
<point X="142186" Y="217815" Z="-11768" delay="0" run="true" />
|
||||
<point X="142114" Y="217924" Z="-11768" delay="0" run="true" />
|
||||
<point X="142039" Y="218047" Z="-11768" delay="0" run="true" />
|
||||
<point X="141950" Y="218157" Z="-11768" delay="0" run="true" />
|
||||
<point X="141821" Y="218287" Z="-11768" delay="0" run="true" />
|
||||
<point X="141645" Y="218418" Z="-11768" delay="0" run="true" />
|
||||
<point X="141459" Y="218510" Z="-11768" delay="0" run="true" />
|
||||
<point X="141262" Y="218532" Z="-11768" delay="0" run="true" />
|
||||
<point X="141135" Y="218517" Z="-11768" delay="0" run="true" />
|
||||
<point X="140977" Y="218469" Z="-11768" delay="0" run="true" />
|
||||
<point X="140861" Y="218401" Z="-11768" delay="0" run="true" />
|
||||
<point X="140762" Y="218327" Z="-11768" delay="0" run="true" />
|
||||
<point X="140655" Y="218230" Z="-11768" delay="0" run="true" />
|
||||
<point X="140542" Y="218106" Z="-11768" delay="0" run="true" />
|
||||
<point X="140447" Y="218012" Z="-11768" delay="0" run="true" />
|
||||
<point X="140369" Y="217903" Z="-11768" delay="0" run="true" />
|
||||
<point X="140305" Y="217796" Z="-11768" delay="0" run="true" />
|
||||
<point X="140257" Y="217701" Z="-11768" delay="0" run="true" />
|
||||
<point X="140222" Y="217593" Z="-11768" delay="0" run="true" />
|
||||
<point X="140204" Y="217492" Z="-11768" delay="0" run="true" />
|
||||
<point X="140179" Y="217411" Z="-11768" delay="0" run="true" />
|
||||
<point X="140157" Y="217323" Z="-11768" delay="0" run="true" />
|
||||
<point X="140100" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="139972" Y="217277" Z="-11768" delay="0" run="true" />
|
||||
<point X="139843" Y="217279" Z="-11768" delay="0" run="true" />
|
||||
<point X="139502" Y="217276" Z="-11776" delay="10000" run="true" />
|
||||
</route>
|
||||
<route name="FPC_Giran_Evi" repeat="true" repeatStyle="cycle">
|
||||
<target id="80000" spawnX="83485" spawnY="147998" spawnZ="-3407" />
|
||||
<point X="83485" Y="147998" Z="-3407" delay="10" run="true" /> <!-- Gatekeeper -->
|
||||
|
238
L2J_Mobius_5.5_EtinasFate/dist/game/data/instances/CrystalCavernsCoralGarden.xml
vendored
Normal file
238
L2J_Mobius_5.5_EtinasFate/dist/game/data/instances/CrystalCavernsCoralGarden.xml
vendored
Normal file
@ -0,0 +1,238 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Crystal Caverns - Coral Garden -->
|
||||
<instance id="165" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="60" empty="3" />
|
||||
<removeBuffs type="ALL" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="142003" y="214496" z="-11600" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="149364" y="173631" z="-920" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Party" showMessageAndHtml="true">
|
||||
<param name="html" value="condNoParty.html" />
|
||||
</condition>
|
||||
<condition type="PartyLeader">
|
||||
<param name="html" value="condNoPartyLeader.html" />
|
||||
</condition>
|
||||
<condition type="GroupMin">
|
||||
<param name="limit" value="2" />
|
||||
</condition>
|
||||
<condition type="GroupMax">
|
||||
<param name="limit" value="7" />
|
||||
</condition>
|
||||
<condition type="Level">
|
||||
<param name="min" value="97" />
|
||||
</condition>
|
||||
<condition type="Distance" />
|
||||
<condition type="Reenter">
|
||||
<param name="instanceId" value="165" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<reenter apply="ON_FINISH">
|
||||
<reset day="MONDAY" hour="6" minute="30" />
|
||||
<reset day="TUESDAY" hour="6" minute="30" />
|
||||
<reset day="WEDNESDAY" hour="6" minute="30" />
|
||||
<reset day="THURSDAY" hour="6" minute="30" />
|
||||
<reset day="FRIDAY" hour="6" minute="30" />
|
||||
<reset day="SATURDAY" hour="6" minute="30" />
|
||||
<reset day="SUNDAY" hour="6" minute="30" />
|
||||
</reenter>
|
||||
<doorlist>
|
||||
<door id="24240021">
|
||||
<openStatus default="close" />
|
||||
</door>
|
||||
<door id="24240024">
|
||||
<openStatus default="open" />
|
||||
</door>
|
||||
<door id="24240025">
|
||||
<openStatus default="open" />
|
||||
</door>
|
||||
<door id="24240026">
|
||||
<openStatus default="close" />
|
||||
</door>
|
||||
</doorlist>
|
||||
<spawnlist>
|
||||
<group name="innadril24_2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_01" minZ="-11812" maxZ="-11612">
|
||||
<node x="140772" y="214027" />
|
||||
<node x="141701" y="214024" />
|
||||
<node x="141722" y="214971" />
|
||||
<node x="140776" y="214973" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="5" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_02" minZ="-11817" maxZ="-11617">
|
||||
<node x="141288" y="215403" />
|
||||
<node x="141740" y="215413" />
|
||||
<node x="141887" y="215959" />
|
||||
<node x="142400" y="216437" />
|
||||
<node x="141647" y="216436" />
|
||||
<node x="141288" y="216181" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="4" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_03m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_03" minZ="-11819" maxZ="-11619">
|
||||
<node x="140792" y="215411" />
|
||||
<node x="141224" y="215411" />
|
||||
<node x="141241" y="216166" />
|
||||
<node x="140860" y="216435" />
|
||||
<node x="140148" y="216438" />
|
||||
<node x="140635" y="215920" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="4" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_04m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_04" minZ="-11816" maxZ="-11616">
|
||||
<node x="140113" y="216495" />
|
||||
<node x="140842" y="216485" />
|
||||
<node x="140659" y="216910" />
|
||||
<node x="140646" y="217244" />
|
||||
<node x="139829" y="217222" />
|
||||
<node x="139829" y="217222" />
|
||||
<node x="139852" y="216817" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_05m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_05" minZ="-11813" maxZ="-11613">
|
||||
<node x="141670" y="216494" />
|
||||
<node x="142425" y="216494" />
|
||||
<node x="142638" y="216831" />
|
||||
<node x="142692" y="217230" />
|
||||
<node x="141859" y="217241" />
|
||||
<node x="141840" y="216891" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_06m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_06" minZ="-11817" maxZ="-11617">
|
||||
<node x="141856" y="217297" />
|
||||
<node x="142687" y="217287" />
|
||||
<node x="142550" y="217912" />
|
||||
<node x="142020" y="218441" />
|
||||
<node x="141567" y="218171" />
|
||||
<node x="141810" y="217710" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_07m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_07" minZ="-11820" maxZ="-11620">
|
||||
<node x="139832" y="217298" />
|
||||
<node x="140644" y="217281" />
|
||||
<node x="140695" y="217709" />
|
||||
<node x="140919" y="218175" />
|
||||
<node x="140469" y="218436" />
|
||||
<node x="139940" y="217889" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_08m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_08" minZ="-11812" maxZ="-11612">
|
||||
<node x="140506" y="218463" />
|
||||
<node x="140950" y="218188" />
|
||||
<node x="141244" y="218401" />
|
||||
<node x="140675" y="218807" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_09m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_09" minZ="-11829" maxZ="-11629">
|
||||
<node x="141540" y="218183" />
|
||||
<node x="142012" y="218480" />
|
||||
<node x="141815" y="218808" />
|
||||
<node x="141271" y="218405" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_10m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_10" minZ="-11815" maxZ="-11615">
|
||||
<node x="141261" y="218427" />
|
||||
<node x="141798" y="218823" />
|
||||
<node x="141732" y="219192" />
|
||||
<node x="140779" y="219201" />
|
||||
<node x="140713" y="218815" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_11m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_11" minZ="-11814" maxZ="-11614">
|
||||
<node x="140749" y="219542" />
|
||||
<node x="141733" y="219539" />
|
||||
<node x="141721" y="220520" />
|
||||
<node x="140746" y="220531" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" count="2" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" count="2" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" count="2" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_12m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_12" minZ="-11815" maxZ="-11615">
|
||||
<node x="142059" y="219549" />
|
||||
<node x="143029" y="219542" />
|
||||
<node x="143030" y="220520" />
|
||||
<node x="142059" y="220531" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" count="2" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" count="2" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" count="3" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_e2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril24_e2422_01" minZ="-11817" maxZ="-11617">
|
||||
<node x="139388" y="217164" />
|
||||
<node x="139588" y="217164" />
|
||||
<node x="139588" y="217364" />
|
||||
<node x="139388" y="217364" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19013" x="139488" y="217264" z="-11817" count="1" /> <!-- Crystalline Golem -->
|
||||
</group>
|
||||
<group name="innadril24_e2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril24_e2422_02" minZ="-11817" maxZ="-11617">
|
||||
<node x="142908" y="217164" />
|
||||
<node x="143108" y="217164" />
|
||||
<node x="143108" y="217364" />
|
||||
<node x="142908" y="217364" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19014" x="143008" y="217264" z="-11817" heading="32768" count="1" /> <!-- Crystalline Golem -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
2511
L2J_Mobius_5.5_EtinasFate/dist/game/data/instances/CrystalCavernsEmeraldSquare.xml
vendored
Normal file
2511
L2J_Mobius_5.5_EtinasFate/dist/game/data/instances/CrystalCavernsEmeraldSquare.xml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
694
L2J_Mobius_5.5_EtinasFate/dist/game/data/instances/CrystalCavernsSteamCorridor.xml
vendored
Normal file
694
L2J_Mobius_5.5_EtinasFate/dist/game/data/instances/CrystalCavernsSteamCorridor.xml
vendored
Normal file
@ -0,0 +1,694 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Crystal Caverns - Steam Corridor -->
|
||||
<instance id="164" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="60" empty="3" />
|
||||
<removeBuffs type="ALL" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="144324" y="218207" z="-12000" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="149364" y="173631" z="-920" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Party" showMessageAndHtml="true">
|
||||
<param name="html" value="condNoParty.html" />
|
||||
</condition>
|
||||
<condition type="PartyLeader">
|
||||
<param name="html" value="condNoPartyLeader.html" />
|
||||
</condition>
|
||||
<condition type="GroupMin">
|
||||
<param name="limit" value="2" />
|
||||
</condition>
|
||||
<condition type="GroupMax">
|
||||
<param name="limit" value="7" />
|
||||
</condition>
|
||||
<condition type="Level">
|
||||
<param name="min" value="97" />
|
||||
</condition>
|
||||
<condition type="Distance" />
|
||||
<condition type="Reenter">
|
||||
<param name="instanceId" value="164" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<reenter apply="ON_FINISH">
|
||||
<reset day="MONDAY" hour="6" minute="30" />
|
||||
<reset day="TUESDAY" hour="6" minute="30" />
|
||||
<reset day="WEDNESDAY" hour="6" minute="30" />
|
||||
<reset day="THURSDAY" hour="6" minute="30" />
|
||||
<reset day="FRIDAY" hour="6" minute="30" />
|
||||
<reset day="SATURDAY" hour="6" minute="30" />
|
||||
<reset day="SUNDAY" hour="6" minute="30" />
|
||||
</reenter>
|
||||
<spawnlist>
|
||||
<group name="innadril23_2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_01" minZ="-12178" maxZ="-11678">
|
||||
<node x="144778" y="217940" />
|
||||
<node x="145497" y="217937" />
|
||||
<node x="145510" y="218475" />
|
||||
<node x="144781" y="218469" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="1" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="5"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="1" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="145129" y="218189" z="-12136" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="30" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_02" minZ="-12160" maxZ="-11660">
|
||||
<node x="145563" y="217941" />
|
||||
<node x="146353" y="217943" />
|
||||
<node x="146357" y="218483" />
|
||||
<node x="145572" y="218481" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="4"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="4"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="146016" y="218235" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="34" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_03m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_03" minZ="-12167" maxZ="-11667">
|
||||
<node x="146422" y="217935" />
|
||||
<node x="147125" y="217942" />
|
||||
<node x="147128" y="218482" />
|
||||
<node x="146431" y="218475" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="3" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="5"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="3" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_01"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_03m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_03" minZ="-12167" maxZ="-11667">
|
||||
<node x="146422" y="217935" />
|
||||
<node x="147125" y="217942" />
|
||||
<node x="147128" y="218482" />
|
||||
<node x="146431" y="218475" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="146875" y="218229" z="-12167" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="37" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_04m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_04" minZ="-12160" maxZ="-11660">
|
||||
<node x="147465" y="217937" />
|
||||
<node x="148256" y="217938" />
|
||||
<node x="148259" y="218478" />
|
||||
<node x="147475" y="218477" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="4" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="6"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="4" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="147918" y="218230" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="60" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_05m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_05" minZ="-12166" maxZ="-11666">
|
||||
<node x="148258" y="217940" />
|
||||
<node x="149048" y="217942" />
|
||||
<node x="149051" y="218482" />
|
||||
<node x="148267" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="5" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="10"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="5" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="148710" y="218233" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="64" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_06m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_06" minZ="-12166" maxZ="-11666">
|
||||
<node x="149027" y="217940" />
|
||||
<node x="149818" y="217942" />
|
||||
<node x="149821" y="218482" />
|
||||
<node x="149037" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="6" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="12"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="6" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_02"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_06m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_06" minZ="-12166" maxZ="-11666">
|
||||
<node x="149027" y="217940" />
|
||||
<node x="149818" y="217942" />
|
||||
<node x="149821" y="218482" />
|
||||
<node x="149037" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="149480" y="218233" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="67" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_07m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_07" minZ="-12170" maxZ="-11670">
|
||||
<node x="150145" y="217941" />
|
||||
<node x="150856" y="217941" />
|
||||
<node x="150859" y="218481" />
|
||||
<node x="150155" y="218481" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="5"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="5"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150598" y="218234" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="90" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_08m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_08" minZ="-12170" maxZ="-11670">
|
||||
<node x="150935" y="217936" />
|
||||
<node x="151726" y="217942" />
|
||||
<node x="151729" y="218482" />
|
||||
<node x="150945" y="218476" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="8" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="15"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="8" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="151388" y="218229" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="94" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_09m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_09" minZ="-12170" maxZ="-11670">
|
||||
<node x="151791" y="217952" />
|
||||
<node x="152499" y="217939" />
|
||||
<node x="152502" y="218479" />
|
||||
<node x="151801" y="218492" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="9" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="3"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="9" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_03"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_09m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_09" minZ="-12170" maxZ="-11670">
|
||||
<node x="151791" y="217952" />
|
||||
<node x="152499" y="217939" />
|
||||
<node x="152502" y="218479" />
|
||||
<node x="151801" y="218492" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="152244" y="218245" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="97" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_10m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_10" minZ="-12166" maxZ="-11666">
|
||||
<node x="145650" y="219795" />
|
||||
<node x="146356" y="219796" />
|
||||
<node x="146358" y="220337" />
|
||||
<node x="145652" y="220331" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="10" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="10"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="10" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="145984" y="220051" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="120" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_11m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_11" minZ="-12166" maxZ="-11666">
|
||||
<node x="146468" y="219793" />
|
||||
<node x="147174" y="219794" />
|
||||
<node x="147176" y="220335" />
|
||||
<node x="146470" y="220329" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="11" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="11" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="146802" y="220049" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="124" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_12m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_12" minZ="-12166" maxZ="-11666">
|
||||
<node x="147298" y="219800" />
|
||||
<node x="148004" y="219801" />
|
||||
<node x="148006" y="220342" />
|
||||
<node x="147300" y="220336" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="12" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="12" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_04"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="3"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="12" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_04"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_12m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_12" minZ="-12166" maxZ="-11666">
|
||||
<node x="147298" y="219800" />
|
||||
<node x="148004" y="219801" />
|
||||
<node x="148006" y="220342" />
|
||||
<node x="147300" y="220336" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="147632" y="220056" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="127" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_13m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_13" minZ="-12165" maxZ="-11665">
|
||||
<node x="148361" y="219796" />
|
||||
<node x="149067" y="219797" />
|
||||
<node x="149069" y="220338" />
|
||||
<node x="148363" y="220332" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="15"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="148695" y="220052" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="150" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_14m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_14" minZ="-12165" maxZ="-11665">
|
||||
<node x="149095" y="219796" />
|
||||
<node x="149801" y="219797" />
|
||||
<node x="149803" y="220338" />
|
||||
<node x="149097" y="220332" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="17"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="17"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="149429" y="220052" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="154" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_15m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_15" minZ="-12165" maxZ="-11665">
|
||||
<node x="149865" y="219798" />
|
||||
<node x="150571" y="219799" />
|
||||
<node x="150573" y="220340" />
|
||||
<node x="149867" y="220334" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="15" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="5"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="15" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_05"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_15m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_15" minZ="-12165" maxZ="-11665">
|
||||
<node x="149865" y="219798" />
|
||||
<node x="150571" y="219799" />
|
||||
<node x="150573" y="220340" />
|
||||
<node x="149867" y="220334" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="150199" y="220054" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="157" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_16m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_16" minZ="-12160" maxZ="-11660">
|
||||
<node x="149819" y="215314" />
|
||||
<node x="150580" y="215309" />
|
||||
<node x="150592" y="215840" />
|
||||
<node x="149834" y="215842" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="16" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="20"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="16" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150198" y="215606" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="180" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_17m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_17" minZ="-12160" maxZ="-11660">
|
||||
<node x="150589" y="215313" />
|
||||
<node x="151350" y="215308" />
|
||||
<node x="151362" y="215839" />
|
||||
<node x="150604" y="215841" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="17" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="5"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="17" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150968" y="215605" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="184" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_18m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_18" minZ="-12160" maxZ="-11660">
|
||||
<node x="151375" y="215317" />
|
||||
<node x="152136" y="215312" />
|
||||
<node x="152148" y="215843" />
|
||||
<node x="151390" y="215845" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="18" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="20"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="18" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_05"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_18m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_18" minZ="-12160" maxZ="-11660">
|
||||
<node x="151375" y="215317" />
|
||||
<node x="152136" y="215312" />
|
||||
<node x="152148" y="215843" />
|
||||
<node x="151390" y="215845" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="151754" y="215609" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="187" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_mb2422m1">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422" minZ="-12140" maxZ="-11740">
|
||||
<node x="154093" y="215667" />
|
||||
<node x="153813" y="215602" />
|
||||
<node x="153627" y="215436" />
|
||||
<node x="153537" y="215291" />
|
||||
<node x="153506" y="215131" />
|
||||
<node x="153555" y="214913" />
|
||||
<node x="153696" y="214713" />
|
||||
<node x="153892" y="214590" />
|
||||
<node x="154087" y="214538" />
|
||||
<node x="154301" y="214602" />
|
||||
<node x="154479" y="214720" />
|
||||
<node x="154601" y="214903" />
|
||||
<node x="154646" y="215119" />
|
||||
<node x="154613" y="215288" />
|
||||
<node x="154550" y="215411" />
|
||||
<node x="154462" y="215527" />
|
||||
<node x="154304" y="215624" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="154078" y="215125" z="-12140" respawnTime="1min" count="1" /> <!-- Fire Region -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt1m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt1" minZ="-12145" maxZ="-11945">
|
||||
<node x="146993" y="218107" />
|
||||
<node x="147193" y="218107" />
|
||||
<node x="147193" y="218307" />
|
||||
<node x="146993" y="218307" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="147148" y="218208" z="-12112" heading="32624" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt2m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt2" minZ="-12147" maxZ="-11947">
|
||||
<node x="149740" y="218107" />
|
||||
<node x="149940" y="218107" />
|
||||
<node x="149940" y="218307" />
|
||||
<node x="149740" y="218307" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="149818" y="218208" z="-12096" heading="32496" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt3m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt3" minZ="-12141" maxZ="-11941">
|
||||
<node x="152440" y="218104" />
|
||||
<node x="152640" y="218104" />
|
||||
<node x="152640" y="218304" />
|
||||
<node x="152440" y="218304" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="152538" y="218208" z="-12096" heading="32552" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt4m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt4" minZ="-12146" maxZ="-11946">
|
||||
<node x="147916" y="219968" />
|
||||
<node x="148116" y="219968" />
|
||||
<node x="148116" y="220168" />
|
||||
<node x="147916" y="220168" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="148022" y="220069" z="-12112" heading="-32568" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt5m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt5" minZ="-12144" maxZ="-11944">
|
||||
<node x="150613" y="219960" />
|
||||
<node x="150813" y="219960" />
|
||||
<node x="150813" y="220160" />
|
||||
<node x="150613" y="220160" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="150699" y="220064" z="-12112" heading="-32696" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt6m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt6" minZ="-12143" maxZ="-11943">
|
||||
<node x="152084" y="215474" />
|
||||
<node x="152284" y="215474" />
|
||||
<node x="152284" y="215674" />
|
||||
<node x="152084" y="215674" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="152214" y="215586" z="-12112" heading="32568" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
@ -0,0 +1,215 @@
|
||||
/*
|
||||
* 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 ai.areas.Parnassus.EntrancePortalToCrystalCaverns;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.OnEventTrigger;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
import instances.CrystalCaverns.CrystalCavernsCoralGarden;
|
||||
import instances.CrystalCaverns.CrystalCavernsEmeraldSquare;
|
||||
import instances.CrystalCaverns.CrystalCavernsSteamCorridor;
|
||||
|
||||
/**
|
||||
* Entrance Portal to Crystal Caverns AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class EntrancePortalToCrystalCaverns extends AbstractNpcAI
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
// Misc
|
||||
private static final int EMERALD_SQUARE_TEMPLATE_ID = 163;
|
||||
private static final int STEAM_CORRIDOR_TEMPLATE_ID = 164;
|
||||
private static final int CORAL_GARDEN_TEMPLATE_ID = 165;
|
||||
private static final int PRISON_ENTRACE_TRIGGER_1 = 24230010;
|
||||
private static final int PRISON_ENTRACE_TRIGGER_2 = 24230012;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_1 = 24230014;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_2 = 24230016;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_3 = 24230018;
|
||||
|
||||
private EntrancePortalToCrystalCaverns()
|
||||
{
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addFirstTalkId(CAVERNS_ENTRACE);
|
||||
addSpawnId(CAVERNS_ENTRACE);
|
||||
addSeeCreatureId(CAVERNS_ENTRACE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
Quest instanceScript = null;
|
||||
|
||||
switch (getCurrentInstanceTemplateId())
|
||||
{
|
||||
case EMERALD_SQUARE_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsEmeraldSquare.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
case STEAM_CORRIDOR_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsSteamCorridor.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
case CORAL_GARDEN_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsCoralGarden.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (instanceScript != null)
|
||||
{
|
||||
instanceScript.notifyEvent(event, npc, player);
|
||||
}
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
return "EntrancePortal_" + getCurrentInstanceTemplateId() + ".html";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
getTimers().addRepeatingTimer("LOOP_TIMER", 10000, npc, null);
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("LOOP_TIMER"))
|
||||
{
|
||||
final int currentTemplateId = getCurrentInstanceTemplateId();
|
||||
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, PlayerInstance.class, 500, p ->
|
||||
{
|
||||
updateTriggersForPlayer(player, currentTemplateId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSeeCreature(Npc npc, Creature creature, boolean isSummon)
|
||||
{
|
||||
if (creature.isPlayer())
|
||||
{
|
||||
creature.getActingPlayer().sendPacket(new OnEventTrigger(PRISON_ENTRACE_TRIGGER_1, true));
|
||||
creature.getActingPlayer().sendPacket(new OnEventTrigger(PRISON_ENTRACE_TRIGGER_2, true));
|
||||
updateTriggersForPlayer(creature.getActingPlayer(), getCurrentInstanceTemplateId());
|
||||
}
|
||||
return super.onSeeCreature(npc, creature, isSummon);
|
||||
}
|
||||
|
||||
public void updateTriggersForPlayer(PlayerInstance player, int currentTemplateId)
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_1, false));
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_2, false));
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_3, false));
|
||||
|
||||
switch (currentTemplateId)
|
||||
{
|
||||
case EMERALD_SQUARE_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_1, true));
|
||||
break;
|
||||
}
|
||||
case STEAM_CORRIDOR_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_2, true));
|
||||
break;
|
||||
}
|
||||
case CORAL_GARDEN_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_3, true));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getCurrentInstanceTemplateId()
|
||||
{
|
||||
final int day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
|
||||
final int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
|
||||
int templateId = -1;
|
||||
|
||||
switch (day)
|
||||
{
|
||||
case Calendar.MONDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.TUESDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? CORAL_GARDEN_TEMPLATE_ID : EMERALD_SQUARE_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.WEDNESDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? STEAM_CORRIDOR_TEMPLATE_ID : CORAL_GARDEN_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.THURSDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.FRIDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? CORAL_GARDEN_TEMPLATE_ID : EMERALD_SQUARE_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.SATURDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? STEAM_CORRIDOR_TEMPLATE_ID : CORAL_GARDEN_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.SUNDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return templateId;
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new EntrancePortalToCrystalCaverns();
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Emerald Square</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Steam Corridor</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Coral Garden</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,253 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.WalkingManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.Spawn;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Coral Garden instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsCoralGarden extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int MICHAELA_NORMAL = 25799;
|
||||
private static final int MICHAELA_WISE = 26116;
|
||||
private static final int MICHAELA_WEALTHY = 26115;
|
||||
private static final int MICHAELA_ARMED = 26114;
|
||||
private static final int GOLEM_1 = 19013; // Crystalline Golem
|
||||
private static final int GOLEM_2 = 19014; // Crystalline Golem
|
||||
// Location
|
||||
private static final Location BOSS_LOC = new Location(144307, 220032, -11824);
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 165;
|
||||
private static final int BOSS_DOOR_ID = 24240026;
|
||||
private static final int PLAYER_MAX_DISTANCE = 250;
|
||||
|
||||
public CrystalCavernsCoralGarden()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addFirstTalkId(GOLEM_1, GOLEM_2);
|
||||
addKillId(MICHAELA_NORMAL, MICHAELA_WISE, MICHAELA_WEALTHY, MICHAELA_ARMED);
|
||||
addAttackId(MICHAELA_NORMAL, MICHAELA_WISE, MICHAELA_WEALTHY, MICHAELA_ARMED);
|
||||
addRouteFinishedId(GOLEM_1, GOLEM_2);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "SUCCESS_TIMER":
|
||||
{
|
||||
showOnScreenMsg(instance, NpcStringId.GOLEM_LOCATION_SUCCESSFUL_ENTRY_ACCESSED, ExShowScreenMessage.MIDDLE_CENTER, 5000);
|
||||
break;
|
||||
}
|
||||
case "LOOP_TIMER":
|
||||
{
|
||||
player = npcVars.getObject("PLAYER_OBJECT", PlayerInstance.class);
|
||||
|
||||
if ((player != null) && (npc.calculateDistance3D(player) > PLAYER_MAX_DISTANCE) && npcVars.getBoolean("NPC_FOLLOWING", true))
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
addMoveToDesire(npc, new Location(npc.getX() + getRandom(-100, 100), npc.getY() + getRandom(-150, 150), npc.getZ()), 23);
|
||||
npc.setRunning();
|
||||
npcVars.set("NPC_FOLLOWING", false);
|
||||
getTimers().cancelTimer("LOOP_TIMER", npc, null);
|
||||
getTimers().addTimer("FAIL_TIMER", 5000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "FAIL_TIMER":
|
||||
{
|
||||
final Spawn spawn = npc.getSpawn();
|
||||
|
||||
if (!npcVars.getBoolean("NPC_FOLLOWING", true))
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
npc.setWalking();
|
||||
npc.teleToLocation(npc.getSpawn().getX(), npc.getSpawn().getY(), npc.getSpawn().getZ());
|
||||
npc.setScriptValue(0);
|
||||
npc.setNameString(null);
|
||||
npc.setTitleString(null);
|
||||
npc.setTitle(null);
|
||||
npc.broadcastInfo();
|
||||
}
|
||||
npcVars.set("CAN_CALL_MONSTERS", ((spawn.getX() - ((npc.getX() * spawn.getX()) - npc.getX())) + (spawn.getY() - (npc.getY() * spawn.getY()) - npc.getY())) > (200 * 200));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.getVariables().set("PLAYER_OBJECT", player);
|
||||
npc.setNameString(NpcStringId.TRAITOR_CRYSTALLINE_GOLEM);
|
||||
npc.setTitleString(NpcStringId.GIVEN_TO_S1);
|
||||
npc.setTitle(player.getName());
|
||||
npc.broadcastInfo();
|
||||
WalkingManager.getInstance().startMoving(npc, npc.getId() == GOLEM_1 ? "gd_golem_1" : "gd_golem_2");
|
||||
getTimers().addRepeatingTimer("LOOP_TIMER", 500, npc, null);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRouteFinished(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (instance != null)
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
showOnScreenMsg(instance, NpcStringId.GOLEM_ENTERED_THE_REQUIRED_ZONE, ExShowScreenMessage.MIDDLE_CENTER, 5000);
|
||||
npc.deleteMe();
|
||||
|
||||
if (instance.getAliveNpcs(GOLEM_1, GOLEM_2).isEmpty())
|
||||
{
|
||||
instance.openCloseDoor(BOSS_DOOR_ID, true);
|
||||
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = MICHAELA_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = MICHAELA_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = MICHAELA_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = MICHAELA_ARMED;
|
||||
}
|
||||
|
||||
final Npc boss = addSpawn(bossId, BOSS_LOC, false, 0, false, instance.getId());
|
||||
getTimers().addTimer("SUCCESS_TIMER", 5000, boss, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MICHAELA_NORMAL:
|
||||
case MICHAELA_WISE:
|
||||
case MICHAELA_WEALTHY:
|
||||
case MICHAELA_ARMED:
|
||||
{
|
||||
instance.finishInstance();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MICHAELA_NORMAL:
|
||||
case MICHAELA_WISE:
|
||||
case MICHAELA_WEALTHY:
|
||||
case MICHAELA_ARMED:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
instance.openCloseDoor(BOSS_DOOR_ID, false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsCoralGarden();
|
||||
}
|
||||
}
|
@ -0,0 +1,424 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Emerald Square instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsEmeraldSquare extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int VERIDAN_NORMAL = 25796;
|
||||
private static final int VERIDAN_WISE = 26107;
|
||||
private static final int VERIDAN_WEALTHY = 26106;
|
||||
private static final int VERIDAN_ARMED = 26105;
|
||||
private static final int WATER_CANNON = 19008;
|
||||
private static final int WATER_CANNON_SKILL = 19009;
|
||||
private static final int STRONGHOLD_PROTECTOR = 23012;
|
||||
private static final int SQUARE_INTRUDER = 23010;
|
||||
private static final int SQUARE_ATTACKER = 23011;
|
||||
// Skills
|
||||
private static final SkillHolder DESTROY_SKILL = new SkillHolder(12003, 1);
|
||||
private static final SkillHolder WATER_CANNON_SKILL_ATTACK = new SkillHolder(14179, 1);
|
||||
// Locations
|
||||
private static final Location[] BOSS_SPAWNS =
|
||||
{
|
||||
new Location(152745, 145957, -12584, 16446),
|
||||
new Location(152816, 145968, -12633, 16446),
|
||||
};
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 163;
|
||||
private static final int RAID_DOOR_1 = 24220005;
|
||||
private static final int RAID_DOOR_2 = 24220006;
|
||||
|
||||
public CrystalCavernsEmeraldSquare()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addSpawnId(WATER_CANNON);
|
||||
addKillId(WATER_CANNON, VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED);
|
||||
addAttackId(WATER_CANNON, VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED);
|
||||
addSpellFinishedId(WATER_CANNON_SKILL);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
setCreatureSeeId(this::onCreatureSee, WATER_CANNON);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "HP_REGEN_TIMER":
|
||||
{
|
||||
int value = ((baseId == 5) || (baseId == 6)) ? 5 : baseId;
|
||||
npc.getStat().addFixedValue(Stats.REGENERATE_HP_RATE, Double.valueOf(value * 1000));
|
||||
break;
|
||||
}
|
||||
case "SUPPORT_SPAWN_TIMER":
|
||||
{
|
||||
int supportVal = npcVars.getInt("SUPPORT_VALUE", 0);
|
||||
|
||||
if (supportVal > 3)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((supportVal == 0) || (supportVal == 1) || (supportVal == 2))
|
||||
{
|
||||
final String spawnName = npcParams.getString("SupportMaker" + (supportVal + 1), null);
|
||||
if (spawnName != null)
|
||||
{
|
||||
instance.spawnGroup(spawnName);
|
||||
}
|
||||
npcVars.increaseInt("SUPPORT_VALUE", 1);
|
||||
}
|
||||
|
||||
if (!npcVars.getBoolean("PREVIOUS_BASE_DESTROYED", false))
|
||||
{
|
||||
getTimers().addTimer("SUPPORT_SPAWN_TIMER", 60000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "CANNON_LOOP_ATTACK":
|
||||
{
|
||||
if (npc.getCurrentHpPercent() > 30)
|
||||
{
|
||||
if (npcVars.getBoolean("IS_DESTROY_ACTIVATED", false) || (getRandom(10) < 2))
|
||||
{
|
||||
final Npc cannonSkill = addSpawn(WATER_CANNON_SKILL, npc, true, 0, false, instance.getId());
|
||||
addSkillCastDesire(cannonSkill, cannonSkill, WATER_CANNON_SKILL_ATTACK, 23);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SUICIDE_TIMER":
|
||||
{
|
||||
npc.doDie(null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VERIDAN_WISE:
|
||||
case VERIDAN_WEALTHY:
|
||||
case VERIDAN_ARMED:
|
||||
{
|
||||
if (!npcVars.getBoolean("CLOSED_DOORS", false))
|
||||
{
|
||||
npcVars.set("CLOSED_DOORS", true);
|
||||
instance.openCloseDoor(RAID_DOOR_2, false);
|
||||
}
|
||||
}
|
||||
case WATER_CANNON:
|
||||
{
|
||||
if ((skill != null) && (skill.getId() == DESTROY_SKILL.getSkillId()) && !npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npcVars.set("IS_DESTROY_ACTIVATED", true);
|
||||
npc.setDisplayEffect(2);
|
||||
getTimers().addTimer("SUICIDE_TIMER", 60000, npc, null);
|
||||
}
|
||||
|
||||
if (npc.getCurrentHpPercent() < 30)
|
||||
{
|
||||
if (!npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npc.setDisplayEffect(3);
|
||||
|
||||
}
|
||||
}
|
||||
else if (!npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npc.setDisplayEffect(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VERIDAN_NORMAL:
|
||||
case VERIDAN_WISE:
|
||||
case VERIDAN_WEALTHY:
|
||||
case VERIDAN_ARMED:
|
||||
{
|
||||
if (instance.getAliveNpcs(VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED).isEmpty())
|
||||
{
|
||||
instance.finishInstance();
|
||||
}
|
||||
else
|
||||
{
|
||||
instance.setReenterTime();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WATER_CANNON:
|
||||
{
|
||||
npc.setDisplayEffect(4);
|
||||
showOnScreenMsg(instance, NpcStringId.SUCCESSFUL_DESTRUCTION_OF_STRONGHOLD_S1, ExShowScreenMessage.MIDDLE_CENTER, 4000, String.valueOf(npc.getParameters().getInt("base_id", -1)));
|
||||
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, MonsterInstance.class, 400, monster ->
|
||||
{
|
||||
if ((monster.getId() == STRONGHOLD_PROTECTOR) || (monster.getId() == SQUARE_INTRUDER) || (monster.getId() == SQUARE_ATTACKER))
|
||||
{
|
||||
monster.doDie(null);
|
||||
}
|
||||
});
|
||||
|
||||
instance.getAliveNpcs(WATER_CANNON).forEach(cannon ->
|
||||
{
|
||||
final int cannonBaseId = cannon.getParameters().getInt("base_id", -1);
|
||||
|
||||
switch (baseId)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
if (cannonBaseId == 2)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (cannonBaseId == 3)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
if (cannonBaseId == 4)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
if ((cannonBaseId == 5) || (cannonBaseId == 6))
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
case 6:
|
||||
{
|
||||
if (cannonBaseId == 7)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
if ((cannonBaseId == 8) || (cannonBaseId == 9))
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if ((baseId == 8) || (baseId == 9))
|
||||
{
|
||||
instance.getParameters().increaseInt("MAIN_TARGETS_KILLED", 0, 1);
|
||||
|
||||
if (instance.getParameters().getInt("MAIN_TARGETS_KILLED", 0) == 2)
|
||||
{
|
||||
showOnScreenMsg(instance, NpcStringId.SUCCESSFUL_DESTRUCTION_OF_STRONGHOLD_ENTRY_ACCESSED, ExShowScreenMessage.MIDDLE_CENTER, 4000);
|
||||
instance.openCloseDoor(RAID_DOOR_1, true);
|
||||
instance.openCloseDoor(RAID_DOOR_2, true);
|
||||
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = VERIDAN_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = VERIDAN_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = VERIDAN_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = VERIDAN_ARMED;
|
||||
}
|
||||
|
||||
for (Location loc : BOSS_SPAWNS)
|
||||
{
|
||||
addSpawn(bossId, loc, false, 0, false, instance.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpellFinished(Npc npc, PlayerInstance player, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance) && (npc.getId() == WATER_CANNON_SKILL) && (skill.getId() == WATER_CANNON_SKILL_ATTACK.getSkillId()))
|
||||
{
|
||||
npc.deleteMe();
|
||||
}
|
||||
return super.onSpellFinished(npc, player, skill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case WATER_CANNON:
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
if (baseId != 1)
|
||||
{
|
||||
npc.setTargetable(false);
|
||||
}
|
||||
|
||||
getTimers().addTimer("HP_REGEN_TIMER", 10000, npc, null);
|
||||
|
||||
if (baseId > 0)
|
||||
{
|
||||
getTimers().addTimer("SUPPORT_SPAWN_TIMER", (baseId * 60) * 1000, npc, null);
|
||||
}
|
||||
npc.initSeenCreatures();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
public void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final Creature creature = event.getSeen();
|
||||
final Npc npc = (Npc) event.getSeer();
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
|
||||
if ((world != null) && creature.isPlayer() && npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.setDisplayEffect(1);
|
||||
getTimers().addRepeatingTimer("CANNON_LOOP_ATTACK", 1000, npc, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsEmeraldSquare();
|
||||
}
|
||||
}
|
@ -0,0 +1,408 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.enums.ChatType;
|
||||
import org.l2jmobius.gameserver.instancemanager.ZoneManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.WorldObject;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.zone.ZoneType;
|
||||
import org.l2jmobius.gameserver.model.zone.type.TeleportZone;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Steam Corridor instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsSteamCorridor extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int KECHI_NORMAL = 25797;
|
||||
private static final int KECHI_WISE = 26113;
|
||||
private static final int KECHI_WEALTHY = 26112;
|
||||
private static final int KECHI_ARMED = 26111;
|
||||
private static final int VICIOUS_DUELER = 23014;
|
||||
private static final int VICIOUS_WARRIOR = 23016;
|
||||
private static final int VICIOUS_SWORDSMAN = 23015;
|
||||
private static final int SPIRIT_PROTECTOR = 23013;
|
||||
private static final int FIRE_REGION = 19161;
|
||||
private static final int PLAYER_DETECTOR = 19075;
|
||||
private static final int TRAP_1 = 19011;
|
||||
private static final int TRAP_2 = 19012;
|
||||
// Skills
|
||||
private static final SkillHolder FIRE_SKILL_1 = new SkillHolder(14373, 1);
|
||||
private static final SkillHolder FIRE_SKILL_2 = new SkillHolder(14373, 2);
|
||||
private static final SkillHolder FIRE_SKILL_3 = new SkillHolder(14197, 1);
|
||||
private static final SkillHolder TRAP_SKILL_1 = new SkillHolder(14180, 1);
|
||||
private static final SkillHolder TRAP_SKILL_2 = new SkillHolder(14181, 1);
|
||||
private static final SkillHolder TRAP_SKILL_3 = new SkillHolder(14372, 1);
|
||||
// Location
|
||||
private static final Location BOSS_LOC = new Location(154078, 215125, -12140);
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 164;
|
||||
|
||||
public CrystalCavernsSteamCorridor()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addAttackId(TRAP_1, TRAP_2);
|
||||
addKillId(VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN, KECHI_NORMAL, KECHI_WISE, KECHI_WEALTHY, KECHI_ARMED);
|
||||
addSpawnId(SPIRIT_PROTECTOR, VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN, FIRE_REGION, PLAYER_DETECTOR);
|
||||
addEventReceivedId(SPIRIT_PROTECTOR, VICIOUS_DUELER, VICIOUS_WARRIOR, VICIOUS_SWORDSMAN);
|
||||
addInstanceCreatedId(TEMPLATE_ID);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
setCreatureSeeId(this::onCreatureSee, PLAYER_DETECTOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "FIRE_REGION_TIMER_1":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_1, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_2", 10000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "FIRE_REGION_TIMER_2":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_2, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_3", 10000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "FIRE_REGION_TIMER_3":
|
||||
{
|
||||
addSkillCastDesire(npc, npc, FIRE_SKILL_3, 23);
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_3", 1000, npc, null);
|
||||
break;
|
||||
}
|
||||
case "TRAP_REACT_TIMER":
|
||||
{
|
||||
final int timer = npcVars.increaseInt("TIMER_VAL", -1);
|
||||
if (timer > 0)
|
||||
{
|
||||
npc.broadcastSay(ChatType.NPC_GENERAL, " " + timer);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (npc.getId() == TRAP_1)
|
||||
{
|
||||
addSkillCastDesire(npc, npc, (getRandom(10) < 8 ? TRAP_SKILL_1 : TRAP_SKILL_3), 23);
|
||||
}
|
||||
else if (npc.getId() == TRAP_2)
|
||||
{
|
||||
addSkillCastDesire(npc, npc, (getRandom(10) < 8 ? TRAP_SKILL_2 : TRAP_SKILL_3), 23);
|
||||
}
|
||||
}
|
||||
getTimers().addTimer("TRAP_REACT_TIMER", 1000, npc, null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceCreated(Instance instance, PlayerInstance player)
|
||||
{
|
||||
instance.setStatus(1);
|
||||
for (int i = 0; i < 6; i++)
|
||||
{
|
||||
final ZoneType zone = ZoneManager.getInstance().getZoneByName("24_24_fire_telezone_0" + i, TeleportZone.class);
|
||||
if (zone != null)
|
||||
{
|
||||
zone.setEnabled(false, instance.getId());
|
||||
}
|
||||
}
|
||||
super.onInstanceCreated(instance, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case SPIRIT_PROTECTOR:
|
||||
case VICIOUS_DUELER:
|
||||
case VICIOUS_WARRIOR:
|
||||
case VICIOUS_SWORDSMAN:
|
||||
{
|
||||
npc.setTargetable(false);
|
||||
npc.disableCoreAI(true);
|
||||
npc.setInvisible(true);
|
||||
break;
|
||||
}
|
||||
case FIRE_REGION:
|
||||
{
|
||||
final int timeLimit = npcParams.getInt("Limit_Time", 0);
|
||||
if (timeLimit > 0)
|
||||
{
|
||||
getTimers().addTimer("FIRE_REGION_TIMER_1", ((timeLimit * 30) * 100), npc, null);
|
||||
}
|
||||
npc.setTargetable(false);
|
||||
npc.setIsInvul(true);
|
||||
npc.setRandomAnimation(false);
|
||||
npc.setRandomWalking(false);
|
||||
npc.disableCoreAI(true);
|
||||
break;
|
||||
}
|
||||
case PLAYER_DETECTOR:
|
||||
{
|
||||
npc.initSeenCreatures();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onEventReceived(String eventName, Npc sender, Npc receiver, WorldObject reference)
|
||||
{
|
||||
final Instance instance = receiver.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = receiver.getParameters();
|
||||
|
||||
if (eventName.equals(String.valueOf(24220005 + npcParams.getInt("Terri_ID", 0))))
|
||||
{
|
||||
receiver.setTargetable(true);
|
||||
receiver.disableCoreAI(false);
|
||||
receiver.setInvisible(false);
|
||||
}
|
||||
}
|
||||
return super.onEventReceived(eventName, sender, receiver, reference);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case TRAP_1:
|
||||
case TRAP_2:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
getTimers().addTimer("TRAP_REACT_TIMER", 1000, npc, null);
|
||||
npc.setScriptValue(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int killTarget = instance.getParameters().getInt("KILL_TARGET", 5);
|
||||
int currentKillCount = instance.getParameters().getInt("KILL_COUNT", 0);
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VICIOUS_DUELER:
|
||||
case VICIOUS_WARRIOR:
|
||||
case VICIOUS_SWORDSMAN:
|
||||
{
|
||||
if (npcParams.getInt("last_checker", 0) == 1)
|
||||
{
|
||||
currentKillCount = instance.getParameters().increaseInt("KILL_COUNT", 0, 1);
|
||||
|
||||
if (currentKillCount >= killTarget)
|
||||
{
|
||||
final ZoneType zone = ZoneManager.getInstance().getZoneByName(npc.getParameters().getString("AreaTeleName"), TeleportZone.class);
|
||||
if (zone != null)
|
||||
{
|
||||
zone.setEnabled(true, instance.getId());
|
||||
showOnScreenMsg(instance, NpcStringId.THE_PORTAL_TO_THE_NEXT_ROOM_IS_NOW_OPEN, ExShowScreenMessage.MIDDLE_CENTER, 4000);
|
||||
instance.spawnGroup("innadril23_mb2422_pt" + instance.getStatus() + "m1");
|
||||
instance.getParameters().set("KILL_COUNT", 0);
|
||||
|
||||
switch (instance.getStatus())
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 12);
|
||||
instance.setStatus(2);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 3);
|
||||
instance.setStatus(3);
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 18);
|
||||
instance.setStatus(4);
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 5);
|
||||
instance.setStatus(5);
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
instance.getParameters().set("KILL_TARGET", 20);
|
||||
instance.setStatus(6);
|
||||
break;
|
||||
}
|
||||
case 6:
|
||||
{
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = KECHI_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = KECHI_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = KECHI_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = KECHI_ARMED;
|
||||
}
|
||||
|
||||
addSpawn(bossId, BOSS_LOC, false, 0, false, instance.getId());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER.warning("Cannot find teleport zone for Crystal Cavern: Steam Corridor instance!!!");
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case KECHI_NORMAL:
|
||||
case KECHI_WISE:
|
||||
case KECHI_WEALTHY:
|
||||
case KECHI_ARMED:
|
||||
{
|
||||
instance.finishInstance();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
private void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final Creature creature = event.getSeen();
|
||||
final Npc npc = (Npc) event.getSeer();
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
|
||||
if (isInInstance(instance) && creature.isPlayer())
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case PLAYER_DETECTOR:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.broadcastEvent(String.valueOf(24220005 + npcParams.getInt("Terri_ID", 0)), 2000, null);
|
||||
|
||||
for (int i = 0; i < getRandom(5); i++)
|
||||
{
|
||||
final Npc trap = addSpawn(((npcParams.getInt("MobType", 0) == 0) ? TRAP_1 : TRAP_2), npc, true, 0, false, instance.getId());
|
||||
trap.getVariables().set("TIMER_VAL", 4);
|
||||
}
|
||||
npc.deleteMe();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsSteamCorridor();
|
||||
}
|
||||
}
|
3
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/instances/CrystalCaverns/condNoParty.html
vendored
Normal file
3
L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/instances/CrystalCaverns/condNoParty.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Crystal Caverns Admission Portal:<br>
|
||||
You must be in a party to enter.
|
||||
</body></html>
|
@ -0,0 +1,3 @@
|
||||
<html><body>Crystal Caverns Admission Portal:<br>
|
||||
The leader of the party should try to enter.
|
||||
</body></html>
|
@ -366,7 +366,7 @@
|
||||
<height normal="13" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="19013" level="96" type="Npc" name="Crystalline Golem">
|
||||
<npc id="19013" level="96" type="FriendlyNpc" name="Crystalline Golem" usingServerSideTitle="true">
|
||||
<!-- AUTO GENERATED NPC TODO: FIX IT -->
|
||||
<parameters>
|
||||
<skill name="Link_Skill_01" id="14283" level="1" />
|
||||
@ -403,7 +403,7 @@
|
||||
<height normal="47" />
|
||||
</collision>
|
||||
</npc>
|
||||
<npc id="19014" level="96" type="Npc" name="Crystalline Golem">
|
||||
<npc id="19014" level="96" type="FriendlyNpc" name="Crystalline Golem" usingServerSideTitle="true">
|
||||
<!-- AUTO GENERATED NPC TODO: FIX IT -->
|
||||
<parameters>
|
||||
<skill name="Link_Skill_01" id="14283" level="1" />
|
||||
|
@ -154,6 +154,72 @@
|
||||
<node X="108616" Y="-41676" />
|
||||
<node X="108816" Y="-40776" />
|
||||
<node X="107856" Y="-40652" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_01" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="147444" />
|
||||
<stat name="oustY" val="218208" />
|
||||
<stat name="oustZ" val="-12117" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="147204" Y="218138" />
|
||||
<node X="147200" Y="218279" />
|
||||
<node X="147138" Y="218278" />
|
||||
<node X="147133" Y="218135" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_02" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="150143" />
|
||||
<stat name="oustY" val="218205" />
|
||||
<stat name="oustZ" val="-12121" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="149886" Y="218138" />
|
||||
<node X="149884" Y="218278" />
|
||||
<node X="149822" Y="218274" />
|
||||
<node X="149833" Y="218135" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_03" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="145610" />
|
||||
<stat name="oustY" val="220065" />
|
||||
<stat name="oustZ" val="-12106" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="152585" Y="218139" />
|
||||
<node X="152579" Y="218276" />
|
||||
<node X="152514" Y="218272" />
|
||||
<node X="152521" Y="218134" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_04" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="148309" />
|
||||
<stat name="oustY" val="220064" />
|
||||
<stat name="oustZ" val="-12118" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="148064" Y="219993" />
|
||||
<node X="148061" Y="220133" />
|
||||
<node X="147999" Y="220129" />
|
||||
<node X="148007" Y="219994" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_05" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="149761" />
|
||||
<stat name="oustY" val="215582" />
|
||||
<stat name="oustZ" val="-12104" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="150747" Y="219991" />
|
||||
<node X="150748" Y="220132" />
|
||||
<node X="150688" Y="220134" />
|
||||
<node X="150697" Y="219994" />
|
||||
</zone>
|
||||
<zone name="24_24_fire_telezone_06" type="TeleportZone" shape="NPoly" minZ="-12150" maxZ="-12050"> <!-- 24_24 -->
|
||||
<stat name="oustX" val="153400" />
|
||||
<stat name="oustY" val="215138" />
|
||||
<stat name="oustZ" val="-12102" />
|
||||
<stat name="instanceId" val="164" />
|
||||
<stat name="targetClass" val="PlayerInstance" />
|
||||
<node X="152267" Y="215518" />
|
||||
<node X="152258" Y="215654" />
|
||||
<node X="152173" Y="215653" />
|
||||
<node X="152180" Y="215514" />
|
||||
</zone>
|
||||
<zone name="26_20_orbis_enter" type="TeleportZone" shape="NPoly" minZ="-458" maxZ="-158">
|
||||
<stat name="oustX" val="213983" />
|
||||
|
@ -2476,6 +2476,79 @@
|
||||
<point X="182894" Y="17577" Z="-10304" delay="2" run="true" />
|
||||
<point X="182426" Y="18210" Z="-10304" delay="3" run="true" />
|
||||
</route>
|
||||
<route name="gd_golem_1" repeat="false" repeatStyle="back">
|
||||
<point X="139821" Y="217257" Z="-11768" delay="0" run="true" />
|
||||
<point X="139925" Y="217250" Z="-11768" delay="0" run="true" />
|
||||
<point X="140050" Y="217251" Z="-11768" delay="0" run="true" />
|
||||
<point X="140137" Y="217244" Z="-11768" delay="0" run="true" />
|
||||
<point X="140156" Y="217190" Z="-11768" delay="0" run="true" />
|
||||
<point X="140170" Y="217104" Z="-11768" delay="0" run="true" />
|
||||
<point X="140198" Y="217003" Z="-11768" delay="0" run="true" />
|
||||
<point X="140224" Y="216897" Z="-11768" delay="0" run="true" />
|
||||
<point X="140287" Y="216756" Z="-11768" delay="0" run="true" />
|
||||
<point X="140352" Y="216600" Z="-11768" delay="0" run="true" />
|
||||
<point X="140468" Y="216459" Z="-11768" delay="0" run="true" />
|
||||
<point X="140594" Y="216334" Z="-11768" delay="0" run="true" />
|
||||
<point X="140703" Y="216212" Z="-11768" delay="0" run="true" />
|
||||
<point X="140805" Y="216144" Z="-11768" delay="0" run="true" />
|
||||
<point X="140916" Y="216065" Z="-11768" delay="0" run="true" />
|
||||
<point X="141076" Y="216000" Z="-11768" delay="0" run="true" />
|
||||
<point X="141206" Y="215970" Z="-11768" delay="0" run="true" />
|
||||
<point X="141343" Y="215974" Z="-11768" delay="0" run="true" />
|
||||
<point X="141502" Y="216016" Z="-11768" delay="0" run="true" />
|
||||
<point X="141654" Y="216106" Z="-11768" delay="0" run="true" />
|
||||
<point X="141805" Y="216240" Z="-11768" delay="0" run="true" />
|
||||
<point X="141942" Y="216354" Z="-11768" delay="0" run="true" />
|
||||
<point X="142038" Y="216472" Z="-11768" delay="0" run="true" />
|
||||
<point X="142151" Y="216643" Z="-11768" delay="0" run="true" />
|
||||
<point X="142240" Y="216782" Z="-11768" delay="0" run="true" />
|
||||
<point X="142284" Y="216894" Z="-11768" delay="0" run="true" />
|
||||
<point X="142326" Y="217024" Z="-11768" delay="0" run="true" />
|
||||
<point X="142345" Y="217100" Z="-11768" delay="0" run="true" />
|
||||
<point X="142364" Y="217166" Z="-11768" delay="0" run="true" />
|
||||
<point X="142397" Y="217238" Z="-11768" delay="0" run="true" />
|
||||
<point X="142481" Y="217250" Z="-11768" delay="0" run="true" />
|
||||
<point X="142608" Y="217249" Z="-11768" delay="0" run="true" />
|
||||
<point X="142664" Y="217269" Z="-11768" delay="0" run="true" />
|
||||
<point X="142939" Y="217270" Z="-11776" delay="10000" run="true" />
|
||||
</route>
|
||||
<route name="gd_golem_2" repeat="false" repeatStyle="back">
|
||||
<point X="142642" Y="217278" Z="-11768" delay="0" run="true" />
|
||||
<point X="142536" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="142457" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="142367" Y="217287" Z="-11768" delay="0" run="true" />
|
||||
<point X="142344" Y="217364" Z="-11768" delay="0" run="true" />
|
||||
<point X="142319" Y="217442" Z="-11768" delay="0" run="true" />
|
||||
<point X="142305" Y="217527" Z="-11768" delay="0" run="true" />
|
||||
<point X="142279" Y="217614" Z="-11768" delay="0" run="true" />
|
||||
<point X="142246" Y="217704" Z="-11768" delay="0" run="true" />
|
||||
<point X="142186" Y="217815" Z="-11768" delay="0" run="true" />
|
||||
<point X="142114" Y="217924" Z="-11768" delay="0" run="true" />
|
||||
<point X="142039" Y="218047" Z="-11768" delay="0" run="true" />
|
||||
<point X="141950" Y="218157" Z="-11768" delay="0" run="true" />
|
||||
<point X="141821" Y="218287" Z="-11768" delay="0" run="true" />
|
||||
<point X="141645" Y="218418" Z="-11768" delay="0" run="true" />
|
||||
<point X="141459" Y="218510" Z="-11768" delay="0" run="true" />
|
||||
<point X="141262" Y="218532" Z="-11768" delay="0" run="true" />
|
||||
<point X="141135" Y="218517" Z="-11768" delay="0" run="true" />
|
||||
<point X="140977" Y="218469" Z="-11768" delay="0" run="true" />
|
||||
<point X="140861" Y="218401" Z="-11768" delay="0" run="true" />
|
||||
<point X="140762" Y="218327" Z="-11768" delay="0" run="true" />
|
||||
<point X="140655" Y="218230" Z="-11768" delay="0" run="true" />
|
||||
<point X="140542" Y="218106" Z="-11768" delay="0" run="true" />
|
||||
<point X="140447" Y="218012" Z="-11768" delay="0" run="true" />
|
||||
<point X="140369" Y="217903" Z="-11768" delay="0" run="true" />
|
||||
<point X="140305" Y="217796" Z="-11768" delay="0" run="true" />
|
||||
<point X="140257" Y="217701" Z="-11768" delay="0" run="true" />
|
||||
<point X="140222" Y="217593" Z="-11768" delay="0" run="true" />
|
||||
<point X="140204" Y="217492" Z="-11768" delay="0" run="true" />
|
||||
<point X="140179" Y="217411" Z="-11768" delay="0" run="true" />
|
||||
<point X="140157" Y="217323" Z="-11768" delay="0" run="true" />
|
||||
<point X="140100" Y="217281" Z="-11768" delay="0" run="true" />
|
||||
<point X="139972" Y="217277" Z="-11768" delay="0" run="true" />
|
||||
<point X="139843" Y="217279" Z="-11768" delay="0" run="true" />
|
||||
<point X="139502" Y="217276" Z="-11776" delay="10000" run="true" />
|
||||
</route>
|
||||
<route name="FPC_Giran_Evi" repeat="true" repeatStyle="cycle">
|
||||
<target id="80000" spawnX="83485" spawnY="147998" spawnZ="-3407" />
|
||||
<point X="83485" Y="147998" Z="-3407" delay="10" run="true" /> <!-- Gatekeeper -->
|
||||
|
238
L2J_Mobius_6.0_Fafurion/dist/game/data/instances/CrystalCavernsCoralGarden.xml
vendored
Normal file
238
L2J_Mobius_6.0_Fafurion/dist/game/data/instances/CrystalCavernsCoralGarden.xml
vendored
Normal file
@ -0,0 +1,238 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Crystal Caverns - Coral Garden -->
|
||||
<instance id="165" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="60" empty="3" />
|
||||
<removeBuffs type="ALL" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="142003" y="214496" z="-11600" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="149364" y="173631" z="-920" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Party" showMessageAndHtml="true">
|
||||
<param name="html" value="condNoParty.html" />
|
||||
</condition>
|
||||
<condition type="PartyLeader">
|
||||
<param name="html" value="condNoPartyLeader.html" />
|
||||
</condition>
|
||||
<condition type="GroupMin">
|
||||
<param name="limit" value="2" />
|
||||
</condition>
|
||||
<condition type="GroupMax">
|
||||
<param name="limit" value="7" />
|
||||
</condition>
|
||||
<condition type="Level">
|
||||
<param name="min" value="97" />
|
||||
</condition>
|
||||
<condition type="Distance" />
|
||||
<condition type="Reenter">
|
||||
<param name="instanceId" value="165" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<reenter apply="ON_FINISH">
|
||||
<reset day="MONDAY" hour="6" minute="30" />
|
||||
<reset day="TUESDAY" hour="6" minute="30" />
|
||||
<reset day="WEDNESDAY" hour="6" minute="30" />
|
||||
<reset day="THURSDAY" hour="6" minute="30" />
|
||||
<reset day="FRIDAY" hour="6" minute="30" />
|
||||
<reset day="SATURDAY" hour="6" minute="30" />
|
||||
<reset day="SUNDAY" hour="6" minute="30" />
|
||||
</reenter>
|
||||
<doorlist>
|
||||
<door id="24240021">
|
||||
<openStatus default="close" />
|
||||
</door>
|
||||
<door id="24240024">
|
||||
<openStatus default="open" />
|
||||
</door>
|
||||
<door id="24240025">
|
||||
<openStatus default="open" />
|
||||
</door>
|
||||
<door id="24240026">
|
||||
<openStatus default="close" />
|
||||
</door>
|
||||
</doorlist>
|
||||
<spawnlist>
|
||||
<group name="innadril24_2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_01" minZ="-11812" maxZ="-11612">
|
||||
<node x="140772" y="214027" />
|
||||
<node x="141701" y="214024" />
|
||||
<node x="141722" y="214971" />
|
||||
<node x="140776" y="214973" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="5" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_02" minZ="-11817" maxZ="-11617">
|
||||
<node x="141288" y="215403" />
|
||||
<node x="141740" y="215413" />
|
||||
<node x="141887" y="215959" />
|
||||
<node x="142400" y="216437" />
|
||||
<node x="141647" y="216436" />
|
||||
<node x="141288" y="216181" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="4" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_03m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_03" minZ="-11819" maxZ="-11619">
|
||||
<node x="140792" y="215411" />
|
||||
<node x="141224" y="215411" />
|
||||
<node x="141241" y="216166" />
|
||||
<node x="140860" y="216435" />
|
||||
<node x="140148" y="216438" />
|
||||
<node x="140635" y="215920" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="4" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_04m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_04" minZ="-11816" maxZ="-11616">
|
||||
<node x="140113" y="216495" />
|
||||
<node x="140842" y="216485" />
|
||||
<node x="140659" y="216910" />
|
||||
<node x="140646" y="217244" />
|
||||
<node x="139829" y="217222" />
|
||||
<node x="139829" y="217222" />
|
||||
<node x="139852" y="216817" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_05m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_05" minZ="-11813" maxZ="-11613">
|
||||
<node x="141670" y="216494" />
|
||||
<node x="142425" y="216494" />
|
||||
<node x="142638" y="216831" />
|
||||
<node x="142692" y="217230" />
|
||||
<node x="141859" y="217241" />
|
||||
<node x="141840" y="216891" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_06m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_06" minZ="-11817" maxZ="-11617">
|
||||
<node x="141856" y="217297" />
|
||||
<node x="142687" y="217287" />
|
||||
<node x="142550" y="217912" />
|
||||
<node x="142020" y="218441" />
|
||||
<node x="141567" y="218171" />
|
||||
<node x="141810" y="217710" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_07m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_07" minZ="-11820" maxZ="-11620">
|
||||
<node x="139832" y="217298" />
|
||||
<node x="140644" y="217281" />
|
||||
<node x="140695" y="217709" />
|
||||
<node x="140919" y="218175" />
|
||||
<node x="140469" y="218436" />
|
||||
<node x="139940" y="217889" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_08m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_08" minZ="-11812" maxZ="-11612">
|
||||
<node x="140506" y="218463" />
|
||||
<node x="140950" y="218188" />
|
||||
<node x="141244" y="218401" />
|
||||
<node x="140675" y="218807" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_09m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_09" minZ="-11829" maxZ="-11629">
|
||||
<node x="141540" y="218183" />
|
||||
<node x="142012" y="218480" />
|
||||
<node x="141815" y="218808" />
|
||||
<node x="141271" y="218405" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_10m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_10" minZ="-11815" maxZ="-11615">
|
||||
<node x="141261" y="218427" />
|
||||
<node x="141798" y="218823" />
|
||||
<node x="141732" y="219192" />
|
||||
<node x="140779" y="219201" />
|
||||
<node x="140713" y="218815" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" respawnTime="2min" count="3" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" respawnTime="2min" count="3" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" respawnTime="5min" count="1" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_11m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_11" minZ="-11814" maxZ="-11614">
|
||||
<node x="140749" y="219542" />
|
||||
<node x="141733" y="219539" />
|
||||
<node x="141721" y="220520" />
|
||||
<node x="140746" y="220531" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" count="2" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" count="2" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" count="2" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_2422_12m1">
|
||||
<territories>
|
||||
<territory name="innadril24_2422_12" minZ="-11815" maxZ="-11615">
|
||||
<node x="142059" y="219549" />
|
||||
<node x="143029" y="219542" />
|
||||
<node x="143030" y="220520" />
|
||||
<node x="142059" y="220531" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="23017" count="2" /> <!-- Punisher of Sins -->
|
||||
<npc id="23018" count="2" /> <!-- Judge of Sins -->
|
||||
<npc id="23019" count="3" /> <!-- Arbitrator of Sins -->
|
||||
</group>
|
||||
<group name="innadril24_e2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril24_e2422_01" minZ="-11817" maxZ="-11617">
|
||||
<node x="139388" y="217164" />
|
||||
<node x="139588" y="217164" />
|
||||
<node x="139588" y="217364" />
|
||||
<node x="139388" y="217364" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19013" x="139488" y="217264" z="-11817" count="1" /> <!-- Crystalline Golem -->
|
||||
</group>
|
||||
<group name="innadril24_e2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril24_e2422_02" minZ="-11817" maxZ="-11617">
|
||||
<node x="142908" y="217164" />
|
||||
<node x="143108" y="217164" />
|
||||
<node x="143108" y="217364" />
|
||||
<node x="142908" y="217364" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19014" x="143008" y="217264" z="-11817" heading="32768" count="1" /> <!-- Crystalline Golem -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
2511
L2J_Mobius_6.0_Fafurion/dist/game/data/instances/CrystalCavernsEmeraldSquare.xml
vendored
Normal file
2511
L2J_Mobius_6.0_Fafurion/dist/game/data/instances/CrystalCavernsEmeraldSquare.xml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
694
L2J_Mobius_6.0_Fafurion/dist/game/data/instances/CrystalCavernsSteamCorridor.xml
vendored
Normal file
694
L2J_Mobius_6.0_Fafurion/dist/game/data/instances/CrystalCavernsSteamCorridor.xml
vendored
Normal file
@ -0,0 +1,694 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!-- Crystal Caverns - Steam Corridor -->
|
||||
<instance id="164" maxWorlds="80" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/instance.xsd">
|
||||
<time duration="60" empty="3" />
|
||||
<removeBuffs type="ALL" />
|
||||
<locations>
|
||||
<enter type="FIXED">
|
||||
<location x="144324" y="218207" z="-12000" />
|
||||
</enter>
|
||||
<exit type="FIXED">
|
||||
<location x="149364" y="173631" z="-920" />
|
||||
</exit>
|
||||
</locations>
|
||||
<conditions>
|
||||
<condition type="Party" showMessageAndHtml="true">
|
||||
<param name="html" value="condNoParty.html" />
|
||||
</condition>
|
||||
<condition type="PartyLeader">
|
||||
<param name="html" value="condNoPartyLeader.html" />
|
||||
</condition>
|
||||
<condition type="GroupMin">
|
||||
<param name="limit" value="2" />
|
||||
</condition>
|
||||
<condition type="GroupMax">
|
||||
<param name="limit" value="7" />
|
||||
</condition>
|
||||
<condition type="Level">
|
||||
<param name="min" value="97" />
|
||||
</condition>
|
||||
<condition type="Distance" />
|
||||
<condition type="Reenter">
|
||||
<param name="instanceId" value="164" />
|
||||
</condition>
|
||||
</conditions>
|
||||
<reenter apply="ON_FINISH">
|
||||
<reset day="MONDAY" hour="6" minute="30" />
|
||||
<reset day="TUESDAY" hour="6" minute="30" />
|
||||
<reset day="WEDNESDAY" hour="6" minute="30" />
|
||||
<reset day="THURSDAY" hour="6" minute="30" />
|
||||
<reset day="FRIDAY" hour="6" minute="30" />
|
||||
<reset day="SATURDAY" hour="6" minute="30" />
|
||||
<reset day="SUNDAY" hour="6" minute="30" />
|
||||
</reenter>
|
||||
<spawnlist>
|
||||
<group name="innadril23_2422_01m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_01" minZ="-12178" maxZ="-11678">
|
||||
<node x="144778" y="217940" />
|
||||
<node x="145497" y="217937" />
|
||||
<node x="145510" y="218475" />
|
||||
<node x="144781" y="218469" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="1" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="5"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="1" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="145129" y="218189" z="-12136" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="30" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_02m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_02" minZ="-12160" maxZ="-11660">
|
||||
<node x="145563" y="217941" />
|
||||
<node x="146353" y="217943" />
|
||||
<node x="146357" y="218483" />
|
||||
<node x="145572" y="218481" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="4"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="4"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="2" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="146016" y="218235" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="34" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_03m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_03" minZ="-12167" maxZ="-11667">
|
||||
<node x="146422" y="217935" />
|
||||
<node x="147125" y="217942" />
|
||||
<node x="147128" y="218482" />
|
||||
<node x="146431" y="218475" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="3" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="5"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="3" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_01"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_03m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_03" minZ="-12167" maxZ="-11667">
|
||||
<node x="146422" y="217935" />
|
||||
<node x="147125" y="217942" />
|
||||
<node x="147128" y="218482" />
|
||||
<node x="146431" y="218475" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="146875" y="218229" z="-12167" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="37" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_04m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_04" minZ="-12160" maxZ="-11660">
|
||||
<node x="147465" y="217937" />
|
||||
<node x="148256" y="217938" />
|
||||
<node x="148259" y="218478" />
|
||||
<node x="147475" y="218477" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="4" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="6"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="4" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="147918" y="218230" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="60" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_05m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_05" minZ="-12166" maxZ="-11666">
|
||||
<node x="148258" y="217940" />
|
||||
<node x="149048" y="217942" />
|
||||
<node x="149051" y="218482" />
|
||||
<node x="148267" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="5" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="10"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="5" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="148710" y="218233" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="64" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_06m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_06" minZ="-12166" maxZ="-11666">
|
||||
<node x="149027" y="217940" />
|
||||
<node x="149818" y="217942" />
|
||||
<node x="149821" y="218482" />
|
||||
<node x="149037" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="6" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="12"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="6" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_02"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_06m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_06" minZ="-12166" maxZ="-11666">
|
||||
<node x="149027" y="217940" />
|
||||
<node x="149818" y="217942" />
|
||||
<node x="149821" y="218482" />
|
||||
<node x="149037" y="218480" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="149480" y="218233" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="67" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_07m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_07" minZ="-12170" maxZ="-11670">
|
||||
<node x="150145" y="217941" />
|
||||
<node x="150856" y="217941" />
|
||||
<node x="150859" y="218481" />
|
||||
<node x="150155" y="218481" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23013" count="5"> <!-- Spirit Protector -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="5"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="7" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150598" y="218234" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="90" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_08m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_08" minZ="-12170" maxZ="-11670">
|
||||
<node x="150935" y="217936" />
|
||||
<node x="151726" y="217942" />
|
||||
<node x="151729" y="218482" />
|
||||
<node x="150945" y="218476" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="8" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="15"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="8" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="151388" y="218229" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="94" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_09m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_09" minZ="-12170" maxZ="-11670">
|
||||
<node x="151791" y="217952" />
|
||||
<node x="152499" y="217939" />
|
||||
<node x="152502" y="218479" />
|
||||
<node x="151801" y="218492" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="9" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="3"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="9" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_03"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_09m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_09" minZ="-12170" maxZ="-11670">
|
||||
<node x="151791" y="217952" />
|
||||
<node x="152499" y="217939" />
|
||||
<node x="152502" y="218479" />
|
||||
<node x="151801" y="218492" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="152244" y="218245" z="-12170" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="97" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_10m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_10" minZ="-12166" maxZ="-11666">
|
||||
<node x="145650" y="219795" />
|
||||
<node x="146356" y="219796" />
|
||||
<node x="146358" y="220337" />
|
||||
<node x="145652" y="220331" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="10" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="10"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="10" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="145984" y="220051" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="120" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_11m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_11" minZ="-12166" maxZ="-11666">
|
||||
<node x="146468" y="219793" />
|
||||
<node x="147174" y="219794" />
|
||||
<node x="147176" y="220335" />
|
||||
<node x="146470" y="220329" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="11" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="11" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="146802" y="220049" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="124" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_12m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_12" minZ="-12166" maxZ="-11666">
|
||||
<node x="147298" y="219800" />
|
||||
<node x="148004" y="219801" />
|
||||
<node x="148006" y="220342" />
|
||||
<node x="147300" y="220336" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="12" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="12" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_04"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="3"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="12" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_04"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_12m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_12" minZ="-12166" maxZ="-11666">
|
||||
<node x="147298" y="219800" />
|
||||
<node x="148004" y="219801" />
|
||||
<node x="148006" y="220342" />
|
||||
<node x="147300" y="220336" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="147632" y="220056" z="-12166" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="127" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_13m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_13" minZ="-12165" maxZ="-11665">
|
||||
<node x="148361" y="219796" />
|
||||
<node x="149067" y="219797" />
|
||||
<node x="149069" y="220338" />
|
||||
<node x="148363" y="220332" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="15"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="15"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="13" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="148695" y="220052" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="150" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_14m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_14" minZ="-12165" maxZ="-11665">
|
||||
<node x="149095" y="219796" />
|
||||
<node x="149801" y="219797" />
|
||||
<node x="149803" y="220338" />
|
||||
<node x="149097" y="220332" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23014" count="17"> <!-- Vicious Dueler -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="17"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="14" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="149429" y="220052" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="154" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_15m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_15" minZ="-12165" maxZ="-11665">
|
||||
<node x="149865" y="219798" />
|
||||
<node x="150571" y="219799" />
|
||||
<node x="150573" y="220340" />
|
||||
<node x="149867" y="220334" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="15" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="5"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="15" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_05"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_15m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_15" minZ="-12165" maxZ="-11665">
|
||||
<node x="149865" y="219798" />
|
||||
<node x="150571" y="219799" />
|
||||
<node x="150573" y="220340" />
|
||||
<node x="149867" y="220334" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="150199" y="220054" z="-12165" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="157" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_16m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_16" minZ="-12160" maxZ="-11660">
|
||||
<node x="149819" y="215314" />
|
||||
<node x="150580" y="215309" />
|
||||
<node x="150592" y="215840" />
|
||||
<node x="149834" y="215842" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="16" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="20"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="16" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150198" y="215606" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="180" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_17m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_17" minZ="-12160" maxZ="-11660">
|
||||
<node x="150589" y="215313" />
|
||||
<node x="151350" y="215308" />
|
||||
<node x="151362" y="215839" />
|
||||
<node x="150604" y="215841" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="17" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23016" count="5"> <!-- Vicious Warrior -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="17" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="19161" x="150968" y="215605" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="184" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_18m1">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_18" minZ="-12160" maxZ="-11660">
|
||||
<node x="151375" y="215317" />
|
||||
<node x="152136" y="215312" />
|
||||
<node x="152148" y="215843" />
|
||||
<node x="151390" y="215845" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19075" count="1"> <!-- Jewel Transparent 1 -->
|
||||
<parameters>
|
||||
<param name="MobType" value="1" />
|
||||
<param name="Terri_ID" value="18" />
|
||||
</parameters>
|
||||
</npc>
|
||||
<npc id="23015" count="20"> <!-- Vicious Swordsman -->
|
||||
<parameters>
|
||||
<param name="Terri_ID" value="18" />
|
||||
<param name="last_checker" value="1" />
|
||||
<param name="AreaTeleName" value="24_24_fire_telezone_05"/>
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_2422_18m2">
|
||||
<territories>
|
||||
<territory name="innadril23_2422_18" minZ="-12160" maxZ="-11660">
|
||||
<node x="151375" y="215317" />
|
||||
<node x="152136" y="215312" />
|
||||
<node x="152148" y="215843" />
|
||||
<node x="151390" y="215845" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="151754" y="215609" z="-12160" count="1"> <!-- Fire Region -->
|
||||
<parameters>
|
||||
<param name="Limit_Time" value="187" />
|
||||
</parameters>
|
||||
</npc>
|
||||
</group>
|
||||
<group name="innadril23_mb2422m1">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422" minZ="-12140" maxZ="-11740">
|
||||
<node x="154093" y="215667" />
|
||||
<node x="153813" y="215602" />
|
||||
<node x="153627" y="215436" />
|
||||
<node x="153537" y="215291" />
|
||||
<node x="153506" y="215131" />
|
||||
<node x="153555" y="214913" />
|
||||
<node x="153696" y="214713" />
|
||||
<node x="153892" y="214590" />
|
||||
<node x="154087" y="214538" />
|
||||
<node x="154301" y="214602" />
|
||||
<node x="154479" y="214720" />
|
||||
<node x="154601" y="214903" />
|
||||
<node x="154646" y="215119" />
|
||||
<node x="154613" y="215288" />
|
||||
<node x="154550" y="215411" />
|
||||
<node x="154462" y="215527" />
|
||||
<node x="154304" y="215624" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19161" x="154078" y="215125" z="-12140" respawnTime="1min" count="1" /> <!-- Fire Region -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt1m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt1" minZ="-12145" maxZ="-11945">
|
||||
<node x="146993" y="218107" />
|
||||
<node x="147193" y="218107" />
|
||||
<node x="147193" y="218307" />
|
||||
<node x="146993" y="218307" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="147148" y="218208" z="-12112" heading="32624" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt2m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt2" minZ="-12147" maxZ="-11947">
|
||||
<node x="149740" y="218107" />
|
||||
<node x="149940" y="218107" />
|
||||
<node x="149940" y="218307" />
|
||||
<node x="149740" y="218307" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="149818" y="218208" z="-12096" heading="32496" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt3m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt3" minZ="-12141" maxZ="-11941">
|
||||
<node x="152440" y="218104" />
|
||||
<node x="152640" y="218104" />
|
||||
<node x="152640" y="218304" />
|
||||
<node x="152440" y="218304" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="152538" y="218208" z="-12096" heading="32552" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt4m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt4" minZ="-12146" maxZ="-11946">
|
||||
<node x="147916" y="219968" />
|
||||
<node x="148116" y="219968" />
|
||||
<node x="148116" y="220168" />
|
||||
<node x="147916" y="220168" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="148022" y="220069" z="-12112" heading="-32568" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt5m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt5" minZ="-12144" maxZ="-11944">
|
||||
<node x="150613" y="219960" />
|
||||
<node x="150813" y="219960" />
|
||||
<node x="150813" y="220160" />
|
||||
<node x="150613" y="220160" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="150699" y="220064" z="-12112" heading="-32696" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
<group name="innadril23_mb2422_pt6m1" spawnByDefault="false">
|
||||
<territories>
|
||||
<territory name="innadril23_mb2422_pt6" minZ="-12143" maxZ="-11943">
|
||||
<node x="152084" y="215474" />
|
||||
<node x="152284" y="215474" />
|
||||
<node x="152284" y="215674" />
|
||||
<node x="152084" y="215674" />
|
||||
</territory>
|
||||
</territories>
|
||||
<npc id="19077" x="152214" y="215586" z="-12112" heading="32568" respawnTime="1min" count="1" /> <!-- Jewel Transparent 2 -->
|
||||
</group>
|
||||
</spawnlist>
|
||||
</instance>
|
@ -0,0 +1,215 @@
|
||||
/*
|
||||
* 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 ai.areas.Parnassus.EntrancePortalToCrystalCaverns;
|
||||
|
||||
import java.util.Calendar;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.quest.Quest;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.OnEventTrigger;
|
||||
|
||||
import ai.AbstractNpcAI;
|
||||
import instances.CrystalCaverns.CrystalCavernsCoralGarden;
|
||||
import instances.CrystalCaverns.CrystalCavernsEmeraldSquare;
|
||||
import instances.CrystalCaverns.CrystalCavernsSteamCorridor;
|
||||
|
||||
/**
|
||||
* Entrance Portal to Crystal Caverns AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class EntrancePortalToCrystalCaverns extends AbstractNpcAI
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
// Misc
|
||||
private static final int EMERALD_SQUARE_TEMPLATE_ID = 163;
|
||||
private static final int STEAM_CORRIDOR_TEMPLATE_ID = 164;
|
||||
private static final int CORAL_GARDEN_TEMPLATE_ID = 165;
|
||||
private static final int PRISON_ENTRACE_TRIGGER_1 = 24230010;
|
||||
private static final int PRISON_ENTRACE_TRIGGER_2 = 24230012;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_1 = 24230014;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_2 = 24230016;
|
||||
private static final int CAVERNS_ENTRACE_TRIGGER_3 = 24230018;
|
||||
|
||||
private EntrancePortalToCrystalCaverns()
|
||||
{
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addFirstTalkId(CAVERNS_ENTRACE);
|
||||
addSpawnId(CAVERNS_ENTRACE);
|
||||
addSeeCreatureId(CAVERNS_ENTRACE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
Quest instanceScript = null;
|
||||
|
||||
switch (getCurrentInstanceTemplateId())
|
||||
{
|
||||
case EMERALD_SQUARE_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsEmeraldSquare.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
case STEAM_CORRIDOR_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsSteamCorridor.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
case CORAL_GARDEN_TEMPLATE_ID:
|
||||
{
|
||||
instanceScript = QuestManager.getInstance().getQuest(CrystalCavernsCoralGarden.class.getSimpleName());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (instanceScript != null)
|
||||
{
|
||||
instanceScript.notifyEvent(event, npc, player);
|
||||
}
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
return "EntrancePortal_" + getCurrentInstanceTemplateId() + ".html";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
getTimers().addRepeatingTimer("LOOP_TIMER", 10000, npc, null);
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("LOOP_TIMER"))
|
||||
{
|
||||
final int currentTemplateId = getCurrentInstanceTemplateId();
|
||||
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, PlayerInstance.class, 500, p ->
|
||||
{
|
||||
updateTriggersForPlayer(player, currentTemplateId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSeeCreature(Npc npc, Creature creature, boolean isSummon)
|
||||
{
|
||||
if (creature.isPlayer())
|
||||
{
|
||||
creature.getActingPlayer().sendPacket(new OnEventTrigger(PRISON_ENTRACE_TRIGGER_1, true));
|
||||
creature.getActingPlayer().sendPacket(new OnEventTrigger(PRISON_ENTRACE_TRIGGER_2, true));
|
||||
updateTriggersForPlayer(creature.getActingPlayer(), getCurrentInstanceTemplateId());
|
||||
}
|
||||
return super.onSeeCreature(npc, creature, isSummon);
|
||||
}
|
||||
|
||||
public void updateTriggersForPlayer(PlayerInstance player, int currentTemplateId)
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_1, false));
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_2, false));
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_3, false));
|
||||
|
||||
switch (currentTemplateId)
|
||||
{
|
||||
case EMERALD_SQUARE_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_1, true));
|
||||
break;
|
||||
}
|
||||
case STEAM_CORRIDOR_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_2, true));
|
||||
break;
|
||||
}
|
||||
case CORAL_GARDEN_TEMPLATE_ID:
|
||||
{
|
||||
player.sendPacket(new OnEventTrigger(CAVERNS_ENTRACE_TRIGGER_3, true));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getCurrentInstanceTemplateId()
|
||||
{
|
||||
final int day = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
|
||||
final int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
|
||||
int templateId = -1;
|
||||
|
||||
switch (day)
|
||||
{
|
||||
case Calendar.MONDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.TUESDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? CORAL_GARDEN_TEMPLATE_ID : EMERALD_SQUARE_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.WEDNESDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? STEAM_CORRIDOR_TEMPLATE_ID : CORAL_GARDEN_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.THURSDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.FRIDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? CORAL_GARDEN_TEMPLATE_ID : EMERALD_SQUARE_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.SATURDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? STEAM_CORRIDOR_TEMPLATE_ID : CORAL_GARDEN_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
case Calendar.SUNDAY:
|
||||
{
|
||||
templateId = (hour < 18) ? EMERALD_SQUARE_TEMPLATE_ID : STEAM_CORRIDOR_TEMPLATE_ID;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return templateId;
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new EntrancePortalToCrystalCaverns();
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Emerald Square</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Steam Corridor</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,4 @@
|
||||
<html><body>Entrance Portal to Crystal Caverns:<br>
|
||||
At this time, you can go into the <font color="LEVEL">Coral Garden</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest EntrancePortalToCrystalCaverns enterInstance">Enter</Button>
|
||||
</body></html>
|
@ -0,0 +1,253 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.instancemanager.WalkingManager;
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.Spawn;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Coral Garden instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsCoralGarden extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int MICHAELA_NORMAL = 25799;
|
||||
private static final int MICHAELA_WISE = 26116;
|
||||
private static final int MICHAELA_WEALTHY = 26115;
|
||||
private static final int MICHAELA_ARMED = 26114;
|
||||
private static final int GOLEM_1 = 19013; // Crystalline Golem
|
||||
private static final int GOLEM_2 = 19014; // Crystalline Golem
|
||||
// Location
|
||||
private static final Location BOSS_LOC = new Location(144307, 220032, -11824);
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 165;
|
||||
private static final int BOSS_DOOR_ID = 24240026;
|
||||
private static final int PLAYER_MAX_DISTANCE = 250;
|
||||
|
||||
public CrystalCavernsCoralGarden()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addFirstTalkId(GOLEM_1, GOLEM_2);
|
||||
addKillId(MICHAELA_NORMAL, MICHAELA_WISE, MICHAELA_WEALTHY, MICHAELA_ARMED);
|
||||
addAttackId(MICHAELA_NORMAL, MICHAELA_WISE, MICHAELA_WEALTHY, MICHAELA_ARMED);
|
||||
addRouteFinishedId(GOLEM_1, GOLEM_2);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "SUCCESS_TIMER":
|
||||
{
|
||||
showOnScreenMsg(instance, NpcStringId.GOLEM_LOCATION_SUCCESSFUL_ENTRY_ACCESSED, ExShowScreenMessage.MIDDLE_CENTER, 5000);
|
||||
break;
|
||||
}
|
||||
case "LOOP_TIMER":
|
||||
{
|
||||
player = npcVars.getObject("PLAYER_OBJECT", PlayerInstance.class);
|
||||
|
||||
if ((player != null) && (npc.calculateDistance3D(player) > PLAYER_MAX_DISTANCE) && npcVars.getBoolean("NPC_FOLLOWING", true))
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
addMoveToDesire(npc, new Location(npc.getX() + getRandom(-100, 100), npc.getY() + getRandom(-150, 150), npc.getZ()), 23);
|
||||
npc.setRunning();
|
||||
npcVars.set("NPC_FOLLOWING", false);
|
||||
getTimers().cancelTimer("LOOP_TIMER", npc, null);
|
||||
getTimers().addTimer("FAIL_TIMER", 5000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "FAIL_TIMER":
|
||||
{
|
||||
final Spawn spawn = npc.getSpawn();
|
||||
|
||||
if (!npcVars.getBoolean("NPC_FOLLOWING", true))
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
npc.setWalking();
|
||||
npc.teleToLocation(npc.getSpawn().getX(), npc.getSpawn().getY(), npc.getSpawn().getZ());
|
||||
npc.setScriptValue(0);
|
||||
npc.setNameString(null);
|
||||
npc.setTitleString(null);
|
||||
npc.setTitle(null);
|
||||
npc.broadcastInfo();
|
||||
}
|
||||
npcVars.set("CAN_CALL_MONSTERS", ((spawn.getX() - ((npc.getX() * spawn.getX()) - npc.getX())) + (spawn.getY() - (npc.getY() * spawn.getY()) - npc.getY())) > (200 * 200));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.getVariables().set("PLAYER_OBJECT", player);
|
||||
npc.setNameString(NpcStringId.TRAITOR_CRYSTALLINE_GOLEM);
|
||||
npc.setTitleString(NpcStringId.GIVEN_TO_S1);
|
||||
npc.setTitle(player.getName());
|
||||
npc.broadcastInfo();
|
||||
WalkingManager.getInstance().startMoving(npc, npc.getId() == GOLEM_1 ? "gd_golem_1" : "gd_golem_2");
|
||||
getTimers().addRepeatingTimer("LOOP_TIMER", 500, npc, null);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRouteFinished(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (instance != null)
|
||||
{
|
||||
WalkingManager.getInstance().cancelMoving(npc);
|
||||
showOnScreenMsg(instance, NpcStringId.GOLEM_ENTERED_THE_REQUIRED_ZONE, ExShowScreenMessage.MIDDLE_CENTER, 5000);
|
||||
npc.deleteMe();
|
||||
|
||||
if (instance.getAliveNpcs(GOLEM_1, GOLEM_2).isEmpty())
|
||||
{
|
||||
instance.openCloseDoor(BOSS_DOOR_ID, true);
|
||||
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = MICHAELA_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = MICHAELA_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = MICHAELA_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = MICHAELA_ARMED;
|
||||
}
|
||||
|
||||
final Npc boss = addSpawn(bossId, BOSS_LOC, false, 0, false, instance.getId());
|
||||
getTimers().addTimer("SUCCESS_TIMER", 5000, boss, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MICHAELA_NORMAL:
|
||||
case MICHAELA_WISE:
|
||||
case MICHAELA_WEALTHY:
|
||||
case MICHAELA_ARMED:
|
||||
{
|
||||
instance.finishInstance();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case MICHAELA_NORMAL:
|
||||
case MICHAELA_WISE:
|
||||
case MICHAELA_WEALTHY:
|
||||
case MICHAELA_ARMED:
|
||||
{
|
||||
if (npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
instance.openCloseDoor(BOSS_DOOR_ID, false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsCoralGarden();
|
||||
}
|
||||
}
|
@ -0,0 +1,424 @@
|
||||
/*
|
||||
* 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.CrystalCaverns;
|
||||
|
||||
import org.l2jmobius.gameserver.model.Location;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.World;
|
||||
import org.l2jmobius.gameserver.model.actor.Creature;
|
||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.MonsterInstance;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.events.impl.creature.OnCreatureSee;
|
||||
import org.l2jmobius.gameserver.model.holders.SkillHolder;
|
||||
import org.l2jmobius.gameserver.model.instancezone.Instance;
|
||||
import org.l2jmobius.gameserver.model.skills.Skill;
|
||||
import org.l2jmobius.gameserver.model.stats.Stats;
|
||||
import org.l2jmobius.gameserver.network.NpcStringId;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExSendUIEvent;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.ExShowScreenMessage;
|
||||
|
||||
import instances.AbstractInstance;
|
||||
|
||||
/**
|
||||
* Crystal Caverns - Emerald Square instance zone.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class CrystalCavernsEmeraldSquare extends AbstractInstance
|
||||
{
|
||||
// NPCs
|
||||
private static final int CAVERNS_ENTRACE = 33522;
|
||||
private static final int VERIDAN_NORMAL = 25796;
|
||||
private static final int VERIDAN_WISE = 26107;
|
||||
private static final int VERIDAN_WEALTHY = 26106;
|
||||
private static final int VERIDAN_ARMED = 26105;
|
||||
private static final int WATER_CANNON = 19008;
|
||||
private static final int WATER_CANNON_SKILL = 19009;
|
||||
private static final int STRONGHOLD_PROTECTOR = 23012;
|
||||
private static final int SQUARE_INTRUDER = 23010;
|
||||
private static final int SQUARE_ATTACKER = 23011;
|
||||
// Skills
|
||||
private static final SkillHolder DESTROY_SKILL = new SkillHolder(12003, 1);
|
||||
private static final SkillHolder WATER_CANNON_SKILL_ATTACK = new SkillHolder(14179, 1);
|
||||
// Locations
|
||||
private static final Location[] BOSS_SPAWNS =
|
||||
{
|
||||
new Location(152745, 145957, -12584, 16446),
|
||||
new Location(152816, 145968, -12633, 16446),
|
||||
};
|
||||
// Misc
|
||||
private static final int TEMPLATE_ID = 163;
|
||||
private static final int RAID_DOOR_1 = 24220005;
|
||||
private static final int RAID_DOOR_2 = 24220006;
|
||||
|
||||
public CrystalCavernsEmeraldSquare()
|
||||
{
|
||||
super(TEMPLATE_ID);
|
||||
addStartNpc(CAVERNS_ENTRACE);
|
||||
addTalkId(CAVERNS_ENTRACE);
|
||||
addSpawnId(WATER_CANNON);
|
||||
addKillId(WATER_CANNON, VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED);
|
||||
addAttackId(WATER_CANNON, VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED);
|
||||
addSpellFinishedId(WATER_CANNON_SKILL);
|
||||
addInstanceEnterId(TEMPLATE_ID);
|
||||
addInstanceLeaveId(TEMPLATE_ID);
|
||||
setCreatureSeeId(this::onCreatureSee, WATER_CANNON);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, Npc npc, PlayerInstance player)
|
||||
{
|
||||
if (event.equals("enterInstance"))
|
||||
{
|
||||
enterInstance(player, npc, TEMPLATE_ID);
|
||||
}
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTimerEvent(String event, StatsSet params, Npc npc, PlayerInstance player)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case "HP_REGEN_TIMER":
|
||||
{
|
||||
int value = ((baseId == 5) || (baseId == 6)) ? 5 : baseId;
|
||||
npc.getStat().addFixedValue(Stats.REGENERATE_HP_RATE, Double.valueOf(value * 1000));
|
||||
break;
|
||||
}
|
||||
case "SUPPORT_SPAWN_TIMER":
|
||||
{
|
||||
int supportVal = npcVars.getInt("SUPPORT_VALUE", 0);
|
||||
|
||||
if (supportVal > 3)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((supportVal == 0) || (supportVal == 1) || (supportVal == 2))
|
||||
{
|
||||
final String spawnName = npcParams.getString("SupportMaker" + (supportVal + 1), null);
|
||||
if (spawnName != null)
|
||||
{
|
||||
instance.spawnGroup(spawnName);
|
||||
}
|
||||
npcVars.increaseInt("SUPPORT_VALUE", 1);
|
||||
}
|
||||
|
||||
if (!npcVars.getBoolean("PREVIOUS_BASE_DESTROYED", false))
|
||||
{
|
||||
getTimers().addTimer("SUPPORT_SPAWN_TIMER", 60000, npc, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "CANNON_LOOP_ATTACK":
|
||||
{
|
||||
if (npc.getCurrentHpPercent() > 30)
|
||||
{
|
||||
if (npcVars.getBoolean("IS_DESTROY_ACTIVATED", false) || (getRandom(10) < 2))
|
||||
{
|
||||
final Npc cannonSkill = addSpawn(WATER_CANNON_SKILL, npc, true, 0, false, instance.getId());
|
||||
addSkillCastDesire(cannonSkill, cannonSkill, WATER_CANNON_SKILL_ATTACK, 23);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "SUICIDE_TIMER":
|
||||
{
|
||||
npc.doDie(null);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAttack(Npc npc, PlayerInstance attacker, int damage, boolean isSummon, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcVars = npc.getVariables();
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VERIDAN_WISE:
|
||||
case VERIDAN_WEALTHY:
|
||||
case VERIDAN_ARMED:
|
||||
{
|
||||
if (!npcVars.getBoolean("CLOSED_DOORS", false))
|
||||
{
|
||||
npcVars.set("CLOSED_DOORS", true);
|
||||
instance.openCloseDoor(RAID_DOOR_2, false);
|
||||
}
|
||||
}
|
||||
case WATER_CANNON:
|
||||
{
|
||||
if ((skill != null) && (skill.getId() == DESTROY_SKILL.getSkillId()) && !npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npcVars.set("IS_DESTROY_ACTIVATED", true);
|
||||
npc.setDisplayEffect(2);
|
||||
getTimers().addTimer("SUICIDE_TIMER", 60000, npc, null);
|
||||
}
|
||||
|
||||
if (npc.getCurrentHpPercent() < 30)
|
||||
{
|
||||
if (!npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npc.setDisplayEffect(3);
|
||||
|
||||
}
|
||||
}
|
||||
else if (!npcVars.getBoolean("IS_DESTROY_ACTIVATED", false))
|
||||
{
|
||||
npc.setDisplayEffect(1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
switch (npc.getId())
|
||||
{
|
||||
case VERIDAN_NORMAL:
|
||||
case VERIDAN_WISE:
|
||||
case VERIDAN_WEALTHY:
|
||||
case VERIDAN_ARMED:
|
||||
{
|
||||
if (instance.getAliveNpcs(VERIDAN_NORMAL, VERIDAN_WISE, VERIDAN_WEALTHY, VERIDAN_ARMED).isEmpty())
|
||||
{
|
||||
instance.finishInstance();
|
||||
}
|
||||
else
|
||||
{
|
||||
instance.setReenterTime();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case WATER_CANNON:
|
||||
{
|
||||
npc.setDisplayEffect(4);
|
||||
showOnScreenMsg(instance, NpcStringId.SUCCESSFUL_DESTRUCTION_OF_STRONGHOLD_S1, ExShowScreenMessage.MIDDLE_CENTER, 4000, String.valueOf(npc.getParameters().getInt("base_id", -1)));
|
||||
|
||||
World.getInstance().forEachVisibleObjectInRange(npc, MonsterInstance.class, 400, monster ->
|
||||
{
|
||||
if ((monster.getId() == STRONGHOLD_PROTECTOR) || (monster.getId() == SQUARE_INTRUDER) || (monster.getId() == SQUARE_ATTACKER))
|
||||
{
|
||||
monster.doDie(null);
|
||||
}
|
||||
});
|
||||
|
||||
instance.getAliveNpcs(WATER_CANNON).forEach(cannon ->
|
||||
{
|
||||
final int cannonBaseId = cannon.getParameters().getInt("base_id", -1);
|
||||
|
||||
switch (baseId)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
if (cannonBaseId == 2)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
if (cannonBaseId == 3)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
if (cannonBaseId == 4)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
if ((cannonBaseId == 5) || (cannonBaseId == 6))
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5:
|
||||
case 6:
|
||||
{
|
||||
if (cannonBaseId == 7)
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
{
|
||||
if ((cannonBaseId == 8) || (cannonBaseId == 9))
|
||||
{
|
||||
cannon.getVariables().set("PREVIOUS_BASE_DESTROYED", true);
|
||||
cannon.setTargetable(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if ((baseId == 8) || (baseId == 9))
|
||||
{
|
||||
instance.getParameters().increaseInt("MAIN_TARGETS_KILLED", 0, 1);
|
||||
|
||||
if (instance.getParameters().getInt("MAIN_TARGETS_KILLED", 0) == 2)
|
||||
{
|
||||
showOnScreenMsg(instance, NpcStringId.SUCCESSFUL_DESTRUCTION_OF_STRONGHOLD_ENTRY_ACCESSED, ExShowScreenMessage.MIDDLE_CENTER, 4000);
|
||||
instance.openCloseDoor(RAID_DOOR_1, true);
|
||||
instance.openCloseDoor(RAID_DOOR_2, true);
|
||||
|
||||
final int random = getRandom(100);
|
||||
int bossId = -1;
|
||||
|
||||
if (random < 55)
|
||||
{
|
||||
bossId = VERIDAN_NORMAL;
|
||||
}
|
||||
else if (random < 80)
|
||||
{
|
||||
bossId = VERIDAN_WISE;
|
||||
}
|
||||
else if (random < 95)
|
||||
{
|
||||
bossId = VERIDAN_WEALTHY;
|
||||
}
|
||||
else
|
||||
{
|
||||
bossId = VERIDAN_ARMED;
|
||||
}
|
||||
|
||||
for (Location loc : BOSS_SPAWNS)
|
||||
{
|
||||
addSpawn(bossId, loc, false, 0, false, instance.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onKill(npc, killer, isSummon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpellFinished(Npc npc, PlayerInstance player, Skill skill)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance) && (npc.getId() == WATER_CANNON_SKILL) && (skill.getId() == WATER_CANNON_SKILL_ATTACK.getSkillId()))
|
||||
{
|
||||
npc.deleteMe();
|
||||
}
|
||||
return super.onSpellFinished(npc, player, skill);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onSpawn(Npc npc)
|
||||
{
|
||||
final Instance instance = npc.getInstanceWorld();
|
||||
if (isInInstance(instance))
|
||||
{
|
||||
switch (npc.getId())
|
||||
{
|
||||
case WATER_CANNON:
|
||||
{
|
||||
final StatsSet npcParams = npc.getParameters();
|
||||
final int baseId = npcParams.getInt("base_id", -1);
|
||||
|
||||
if (baseId != 1)
|
||||
{
|
||||
npc.setTargetable(false);
|
||||
}
|
||||
|
||||
getTimers().addTimer("HP_REGEN_TIMER", 10000, npc, null);
|
||||
|
||||
if (baseId > 0)
|
||||
{
|
||||
getTimers().addTimer("SUPPORT_SPAWN_TIMER", (baseId * 60) * 1000, npc, null);
|
||||
}
|
||||
npc.initSeenCreatures();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return super.onSpawn(npc);
|
||||
}
|
||||
|
||||
public void onCreatureSee(OnCreatureSee event)
|
||||
{
|
||||
final Creature creature = event.getSeen();
|
||||
final Npc npc = (Npc) event.getSeer();
|
||||
final Instance world = npc.getInstanceWorld();
|
||||
|
||||
if ((world != null) && creature.isPlayer() && npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
npc.setDisplayEffect(1);
|
||||
getTimers().addRepeatingTimer("CANNON_LOOP_ATTACK", 1000, npc, null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceEnter(PlayerInstance player, Instance instance)
|
||||
{
|
||||
final int startTime = (int) (instance.getElapsedTime() / 1000);
|
||||
final int endTime = (int) (instance.getRemainingTime() / 1000);
|
||||
player.sendPacket(new ExSendUIEvent(player, false, true, startTime, endTime, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInstanceLeave(PlayerInstance player, Instance instance)
|
||||
{
|
||||
player.sendPacket(new ExSendUIEvent(player, true, true, 0, 0, NpcStringId.ELAPSED_TIME));
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new CrystalCavernsEmeraldSquare();
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user