Sync with L2JServer Jan 24th 2015.
This commit is contained in:
parent
d349bd3924
commit
1c6301c46d
15
trunk/dist/game/config/Character.properties
vendored
15
trunk/dist/game/config/Character.properties
vendored
@ -206,10 +206,6 @@ AltGameSkillLearn = False
|
||||
# Default: False
|
||||
AltSubClassWithoutQuests = False
|
||||
|
||||
# Allow player to add/change subclass at all village master
|
||||
# Default: False
|
||||
AltSubclassEverywhere = False
|
||||
|
||||
# Allow player to learn transformations without quest.
|
||||
# Default: False
|
||||
AltTransformationWithoutQuest = False
|
||||
@ -285,8 +281,8 @@ MaxExpBonus = 3.5
|
||||
MaxSpBonus = 3.5
|
||||
|
||||
# Maximum character running speed.
|
||||
# Default: 250
|
||||
MaxRunSpeed = 250
|
||||
# Default: 300
|
||||
MaxRunSpeed = 300
|
||||
|
||||
# Maximum character Physical Critical Rate. (10 = 1%)
|
||||
# Default: 500
|
||||
@ -315,6 +311,7 @@ MinAbnormalStateSuccessRate = 10
|
||||
MaxAbnormalStateSuccessRate = 90
|
||||
|
||||
# Maximum number of allowed subclasses for every player.
|
||||
# Do not use more than 3!
|
||||
# Default: 3
|
||||
MaxSubclass = 3
|
||||
|
||||
@ -322,6 +319,10 @@ MaxSubclass = 3
|
||||
# Default: 40
|
||||
BaseSubclassLevel = 40
|
||||
|
||||
# Starting level for dualclasses after reawaking.
|
||||
# Default: 85
|
||||
BaseDualclassLevel = 85
|
||||
|
||||
# Maximum subclass level.
|
||||
# Default: 80
|
||||
MaxSubclassLevel = 80
|
||||
@ -363,7 +364,7 @@ FreightPrice = 1000
|
||||
|
||||
# Npc talk blockage. When a player talks to a NPC, he must wait some secs
|
||||
# before being able to walk again. In seconds
|
||||
# Default: 3
|
||||
# Default: 0
|
||||
# Set to 0 to disable it
|
||||
NpcTalkBlockingTime = 0
|
||||
|
||||
|
13
trunk/dist/game/config/General.properties
vendored
13
trunk/dist/game/config/General.properties
vendored
@ -20,7 +20,7 @@ ServerListBrackets = False
|
||||
|
||||
# Displays server type next to the server name on character selection.
|
||||
# Notes:
|
||||
# Accepted Values: Normal, Relax, Test, NoLabel, Restricted, Event, Free
|
||||
# Accepted Values: Normal, Relax, Test, Broad, Restricted, Event, Free, World, New, Classic
|
||||
# Default: Normal
|
||||
ServerListType = Normal
|
||||
|
||||
@ -405,12 +405,8 @@ GridNeighborTurnOffTime = 90
|
||||
|
||||
# Allow characters to receive damage from falling.
|
||||
# CoordSynchronize = 2 is recommended.
|
||||
# True - enabled.
|
||||
# False - disabled.
|
||||
# Auto - True if geodata enabled and False if disabled.
|
||||
# Default: Auto
|
||||
EnableFallingDamage = Auto
|
||||
|
||||
# Default: True
|
||||
EnableFallingDamage = True
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Features
|
||||
@ -896,9 +892,6 @@ PacketHandlerDebug = False
|
||||
# Default: False
|
||||
Developer = False
|
||||
|
||||
# Default: False
|
||||
AcceptGeoeditorConn = False
|
||||
|
||||
# Don't load Handlers
|
||||
# Default: False
|
||||
AltDevNoHandlers = False
|
||||
|
21
trunk/dist/game/config/GeoData.properties
vendored
21
trunk/dist/game/config/GeoData.properties
vendored
@ -2,28 +2,17 @@
|
||||
# GeoData
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# GeoData options:
|
||||
# 0 = GeoData and PathFinding OFF (default)
|
||||
# 1 = GeoData is used to check Line Of Sight (LOS) targeting and
|
||||
# L2Playable movement. You need to download files for data/geodata folder.
|
||||
# Monsters can pass walls but not aggro (no line of sight) through them.
|
||||
# 2 = Full GeoData enabled. Includes PathFinding (requires also /data/pathnode
|
||||
# files if CellPathFinding not enabled) and all character moves go through
|
||||
# geodata checks (if a mob passes a wall, pathfinding didn't find a route
|
||||
# but we allow attack and returning home).
|
||||
# Recommended server memory minimum 2 GB, rather 3 GB.
|
||||
# Pathfinding options:
|
||||
# 0 = Disabled
|
||||
# 1 = Enabled using path node files
|
||||
# 2 = Enabled using geodata cells at runtime
|
||||
# Default: 0
|
||||
GeoData = 0
|
||||
PathFinding = 0
|
||||
|
||||
# Pathnode directory
|
||||
# Default: data/pathnode
|
||||
PathnodeDirectory = data/pathnode
|
||||
|
||||
# Cell-level pathfinding, produces more accurate routes but is (maybe 10x) heavier to calculate. Recommended for small servers at least.
|
||||
# If False, pathnode files are used. Uses a max number of nodes in calculation which can be adjusted in the algorithm if it needs to be faster.
|
||||
# Default: False
|
||||
CellPathFinding = False
|
||||
|
||||
# Pathfinding array buffers configuration
|
||||
PathFindBuffers = 100x6;128x6;192x6;256x4;320x4;384x4;500x2
|
||||
|
||||
|
160
trunk/dist/game/data/doors.xml
vendored
160
trunk/dist/game/data/doors.xml
vendored
@ -599,8 +599,8 @@
|
||||
<door id="18150302" name="cratae_1815_102" open_method="0" height="150" baseHpMax="3258432" hp_showable="false" basePDef="100000" pos="-53361;-82960;-8352" node1="-53375,-83029" node2="-53348,-83029" node3="-53349,-82888" node4="-53373,-82888" nodeZ="-8352" default_status="close" targetable="false" />
|
||||
<door id="18150303" name="cratae_1815_103" open_method="0" height="150" baseHpMax="3258432" hp_showable="false" basePDef="100000" pos="-53852;-82369;-8352" node1="-53911,-82378" node2="-53792,-82378" node3="-53792,-82360" node4="-53911,-82361" nodeZ="-8352" default_status="close" targetable="false" />
|
||||
<door id="18200001" name="fortress_1820_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="-54247;89585;-2870" node1="-54366,89535" node2="-54140,89542" node3="-54140,89638" node4="-54367,89640" nodeZ="-2870" default_status="close" />
|
||||
<door id="18200002" name="fortress_1820_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-53311;90621;-2849" node1="-53226,90612" node2="-53311,90615" node3="-53311,90628" node4="-53226,90627" nodeZ="-2849" default_status="close" />
|
||||
<door id="18200003" name="fortress_1820_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-53155;90621;-2849" node1="-53240,90612" node2="-53145,90612" node3="-53144,90630" node4="-53241,90626" nodeZ="-2849" default_status="close" />
|
||||
<door id="18200002" name="fortress_1820_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-53311;91822;-2849" node1="-53226,91813" node2="-53311,91816" node3="-53311,91829" node4="-53226,91828" nodeZ="-2849" default_status="close" />
|
||||
<door id="18200003" name="fortress_1820_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-53155;91822;-2849" node1="-53240,91813" node2="-53145,91813" node3="-53144,91831" node4="-53241,91827" nodeZ="-2849" default_status="close" />
|
||||
<door id="18200004" name="fortress_1820_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-51513;90260;-2851" node1="-51520,90253" node2="-51505,90253" node3="-51505,90348" node4="-51521,90348" nodeZ="-2851" default_status="close" />
|
||||
<door id="18200005" name="fortress_1820_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-51512;90416;-2851" node1="-51520,90327" node2="-51519,90427" node3="-51503,90426" node4="-51503,90327" nodeZ="-2851" default_status="close" />
|
||||
<door id="18200006" name="fortress_1820_006" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="-55123;91777;-2819" node1="-55119,91767" node2="-55115,91865" node3="-55131,91864" node4="-55130,91766" nodeZ="-2819" default_status="close" />
|
||||
@ -608,13 +608,13 @@
|
||||
<door id="18200008" name="fortress_1820_008" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="-51147;91961;-2811" node1="-51220,92018" node2="-51144,91946" node3="-51131,91961" node4="-51208,92034" nodeZ="-2811" default_status="close" />
|
||||
<door id="18200009" name="fortress_1820_009" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="-51257;92071;-2811" node1="-51272,92074" node2="-51258,92088" node3="-51186,92013" node4="-51198,91997" nodeZ="-2811" default_status="close" />
|
||||
<door id="18200010" name="fortress_1820_010" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="-52256;92985;-2869" node1="-52375,92935" node2="-52149,92942" node3="-52149,93038" node4="-52376,93040" nodeZ="-2869" default_status="close" />
|
||||
<door id="18200011" name="fortress_1820_011" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-53311;91822;-2849" node1="-53226,91813" node2="-53311,91816" node3="-53311,91829" node4="-53226,91828" nodeZ="-2849" default_status="close" />
|
||||
<door id="18200012" name="fortress_1820_012" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-53155;91822;-2849" node1="-53240,91813" node2="-53145,91813" node3="-53144,91831" node4="-53241,91827" nodeZ="-2849" default_status="close" />
|
||||
<door id="18200011" name="fortress_1820_011" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-53311;90621;-2849" node1="-53226,90612" node2="-53311,90615" node3="-53311,90628" node4="-53226,90627" nodeZ="-2849" default_status="close" />
|
||||
<door id="18200012" name="fortress_1820_012" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-53155;90621;-2849" node1="-53240,90612" node2="-53145,90612" node3="-53144,90630" node4="-53241,90626" nodeZ="-2849" default_status="close" />
|
||||
<door id="18220001" name="fortress_1822_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="-50796;155912;-2102" node1="-50799,155822" node2="-50749,155982" node3="-50793,155996" node4="-50843,155835" nodeZ="-2102" default_status="close" />
|
||||
<door id="18220002" name="fortress_1822_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-52208;156244;-2081" node1="-52176,156322" node2="-52202,156239" node3="-52219,156244" node4="-52194,156327" nodeZ="-2081" default_status="close" />
|
||||
<door id="18220003" name="fortress_1822_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-52163;156393;-2081" node1="-52178,156311" node2="-52149,156391" node3="-52174,156400" node4="-52196,156316" nodeZ="-2081" default_status="close" />
|
||||
<door id="18220004" name="fortress_1822_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-53358;156592;-2081" node1="-53328,156670" node2="-53353,156587" node3="-53366,156592" node4="-53342,156673" nodeZ="-2081" default_status="close" />
|
||||
<door id="18220005" name="fortress_1822_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-53312;156742;-2081" node1="-53329,156661" node2="-53302,156741" node3="-53317,156746" node4="-53344,156665" nodeZ="-2081" default_status="close" />
|
||||
<door id="18220002" name="fortress_1822_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-53358;156592;-2081" node1="-53328,156670" node2="-53353,156587" node3="-53366,156592" node4="-53342,156673" nodeZ="-2081" default_status="close" />
|
||||
<door id="18220003" name="fortress_1822_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-53312;156742;-2081" node1="-53329,156661" node2="-53302,156741" node3="-53317,156746" node4="-53344,156665" nodeZ="-2081" default_status="close" />
|
||||
<door id="18220004" name="fortress_1822_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-52208;156244;-2081" node1="-52176,156322" node2="-52202,156239" node3="-52219,156244" node4="-52194,156327" nodeZ="-2081" default_status="close" />
|
||||
<door id="18220005" name="fortress_1822_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-52163;156393;-2081" node1="-52178,156311" node2="-52149,156391" node3="-52174,156400" node4="-52196,156316" nodeZ="-2081" default_status="close" />
|
||||
<door id="18220006" name="fortress_1822_006" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="-52816;157873;-2053" node1="-52782,157952" node2="-52810,157868" node3="-52826,157873" node4="-52803,157957" nodeZ="-2053" default_status="close" />
|
||||
<door id="18220007" name="fortress_1822_007" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="-52771;158023;-2053" node1="-52785,157941" node2="-52762,158022" node3="-52778,158027" node4="-52806,157946" nodeZ="-2053" default_status="close" />
|
||||
<door id="18220008" name="fortress_1822_008" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="-54737;157111;-2102" node1="-54729,157015" node2="-54798,157036" node3="-54743,157206" node4="-54675,157185" nodeZ="-2102" default_status="close" />
|
||||
@ -685,10 +685,10 @@
|
||||
<door id="19240003" name="fortress_1924_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-23550;218784;-3263" node1="-23546,218774" node2="-23542,218872" node3="-23558,218871" node4="-23557,218773" nodeZ="-3263" default_status="close" />
|
||||
<door id="19240004" name="fortress_1924_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-23550;218940;-3263" node1="-23557,218852" node2="-23555,218949" node3="-23542,218951" node4="-23542,218853" nodeZ="-3263" default_status="close" />
|
||||
<door id="19240005" name="fortress_1924_005" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="-25125;219880;-3291" node1="-25135,219960" node2="-25135,219801" node3="-25115,219801" node4="-25115,219960" nodeZ="-3292" default_status="close" />
|
||||
<door id="19240006" name="fortress_1924_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-23306;219723;-3264" node1="-23314,219802" node2="-23314,219723" node3="-23298,219723" node4="-23298,219801" nodeZ="-3264" default_status="close" />
|
||||
<door id="19240007" name="fortress_1924_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-23305;219879;-3264" node1="-23313,219801" node2="-23311,219879" node3="-23297,219879" node4="-23297,219800" nodeZ="-3264" default_status="close" />
|
||||
<door id="19240008" name="fortress_1924_008" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-22105;219723;-3264" node1="-22113,219801" node2="-22114,219723" node3="-22097,219723" node4="-22097,219801" nodeZ="-3264" default_status="close" />
|
||||
<door id="19240009" name="fortress_1924_009" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-22104;219879;-3264" node1="-22113,219800" node2="-22113,219879" node3="-22096,219879" node4="-22097,219800" nodeZ="-3264" default_status="close" />
|
||||
<door id="19240006" name="fortress_1924_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-22105;219723;-3264" node1="-22113,219801" node2="-22114,219723" node3="-22097,219723" node4="-22097,219801" nodeZ="-3264" default_status="close" />
|
||||
<door id="19240007" name="fortress_1924_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-22104;219879;-3264" node1="-22113,219800" node2="-22113,219879" node3="-22096,219879" node4="-22097,219800" nodeZ="-3264" default_status="close" />
|
||||
<door id="19240008" name="fortress_1924_008" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-23306;219723;-3264" node1="-23314,219802" node2="-23314,219723" node3="-23298,219723" node4="-23298,219801" nodeZ="-3264" default_status="close" />
|
||||
<door id="19240009" name="fortress_1924_009" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="-23305;219879;-3264" node1="-23313,219801" node2="-23311,219879" node3="-23297,219879" node4="-23297,219800" nodeZ="-3264" default_status="close" />
|
||||
<door id="19240010" name="fortress_1924_010" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="-20240;219888;-3288" node1="-20249,219967" node2="-20250,219809" node3="-20231,219809" node4="-20229,219967" nodeZ="-3289" default_status="close" />
|
||||
<door id="19240011" name="fortress_1924_011" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="-23211;221583;-3227" node1="-23220,221661" node2="-23220,221583" node3="-23201,221583" node4="-23202,221661" nodeZ="-3227" default_status="close" />
|
||||
<door id="19240012" name="fortress_1924_012" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="-23210;221738;-3227" node1="-23219,221660" node2="-23219,221738" node3="-23202,221738" node4="-23201,221659" nodeZ="-3227" default_status="close" />
|
||||
@ -733,12 +733,12 @@
|
||||
<door id="20160008" name="rune_castle_wall_002" is_wall="true" open_method="0" height="480" baseHpMax="1357680" basePDef="837" baseMDef="674" pos="17256;-46748;-878" node1="17307,-47005" node2="17520,-46817" node3="17170,-46507" node4="16982,-46707" nodeZ="-1120" />
|
||||
<door id="20160009" name="rune_castle_wall_003" is_wall="true" open_method="0" height="768" baseHpMax="1357680" basePDef="837" baseMDef="674" pos="13840;-51703;-764" node1="13672,-52034" node2="14215,-51821" node3="13982,-51354" node4="13526,-51526" nodeZ="-1142" />
|
||||
<door id="20200001" name="fortress_2020_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="12503;93513;-3475" node1="12384,93463" node2="12610,93470" node3="12610,93566" node4="12383,93568" nodeZ="-3475" default_status="close" />
|
||||
<door id="20200002" name="fortress_2020_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="11459;94386;-3454" node1="11544,94377" node2="11459,94380" node3="11459,94393" node4="11544,94392" nodeZ="-3454" default_status="close" />
|
||||
<door id="20200003" name="fortress_2020_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="11615;94386;-3454" node1="11530,94377" node2="11625,94377" node3="11626,94395" node4="11529,94391" nodeZ="-3454" default_status="close" />
|
||||
<door id="20200002" name="fortress_2020_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="11459;95587;-3454" node1="11544,95578" node2="11459,95581" node3="11459,95594" node4="11544,95593" nodeZ="-3454" default_status="close" />
|
||||
<door id="20200003" name="fortress_2020_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="11615;95587;-3454" node1="11530,95578" node2="11625,95578" node3="11626,95596" node4="11529,95592" nodeZ="-3454" default_status="close" />
|
||||
<door id="20200004" name="fortress_2020_004" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="10128;94935;-3426" node1="10132,94925" node2="10136,95023" node3="10120,95022" node4="10121,94924" nodeZ="-3426" default_status="close" />
|
||||
<door id="20200005" name="fortress_2020_005" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="10128;95093;-3426" node1="10121,95005" node2="10123,95102" node3="10136,95104" node4="10136,95006" nodeZ="-3426" default_status="close" />
|
||||
<door id="20200006" name="fortress_2020_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="11459;95587;-3454" node1="11544,95578" node2="11459,95581" node3="11459,95594" node4="11544,95593" nodeZ="-3454" default_status="close" />
|
||||
<door id="20200007" name="fortress_2020_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="11615;95587;-3454" node1="11530,95578" node2="11625,95578" node3="11626,95596" node4="11529,95592" nodeZ="-3454" default_status="close" />
|
||||
<door id="20200006" name="fortress_2020_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="11459;94386;-3454" node1="11544,94377" node2="11459,94380" node3="11459,94393" node4="11544,94392" nodeZ="-3454" default_status="close" />
|
||||
<door id="20200007" name="fortress_2020_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="11615;94386;-3454" node1="11530,94377" node2="11625,94377" node3="11626,94395" node4="11529,94391" nodeZ="-3454" default_status="close" />
|
||||
<door id="20200008" name="fortress_2020_008" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="10493;96565;-3475" node1="10374,96515" node2="10600,96522" node3="10600,96618" node4="10373,96620" nodeZ="-3475" default_status="close" />
|
||||
<door id="20210001" name="kuruma002" open_method="8" level="3" close_time="300" height="338" baseHpMax="150000" hp_showable="false" basePDef="476" baseMDef="383" pos="17624;112427;-6456" node1="17506,112406" node2="17741,112402" node3="17741,112452" node4="17506,112449" nodeZ="-6625" group="kuruma_parent" />
|
||||
<door id="20210002" name="kuruma001" open_method="8" level="3" close_time="300" height="338" baseHpMax="150000" hp_showable="false" basePDef="476" baseMDef="383" pos="17820;112427;-6456" node1="17705,112402" node2="17938,112406" node3="17938,112448" node4="17705,112452" nodeZ="-6627" group="kuruma_parent" />
|
||||
@ -763,10 +763,10 @@
|
||||
<door id="20220019" name="fortress_2022_003" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="6380;148168;-2889" node1="6388,148246" node2="6388,148168" node3="6372,148168" node4="6373,148247" nodeZ="-2889" default_status="close" />
|
||||
<door id="20220020" name="fortress_2022_004" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="6380;148325;-2889" node1="6387,148246" node2="6390,148325" node3="6373,148325" node4="6373,148246" nodeZ="-2889" default_status="close" />
|
||||
<door id="20220021" name="fortress_2022_005" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="4015;148732;-2938" node1="4029,148654" node2="4028,148811" node3="4002,148810" node4="4001,148654" nodeZ="-2938" default_status="close" />
|
||||
<door id="20220022" name="fortress_2022_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="5012;149673;-2917" node1="5018,149752" node2="5019,149673" node3="5005,149673" node4="5005,149752" nodeZ="-2917" default_status="close" />
|
||||
<door id="20220023" name="fortress_2022_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="5011;149830;-2917" node1="5017,149752" node2="5017,149830" node3="5005,149830" node4="5005,149752" nodeZ="-2917" default_status="close" />
|
||||
<door id="20220024" name="fortress_2022_008" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="6213;149673;-2917" node1="6221,149752" node2="6221,149673" node3="6207,149673" node4="6207,149752" nodeZ="-2917" default_status="close" />
|
||||
<door id="20220025" name="fortress_2022_009" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="6213;149830;-2917" node1="6220,149751" node2="6221,149830" node3="6206,149830" node4="6207,149752" nodeZ="-2917" default_status="close" />
|
||||
<door id="20220022" name="fortress_2022_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="6213;149673;-2917" node1="6221,149752" node2="6221,149673" node3="6207,149673" node4="6207,149752" nodeZ="-2917" default_status="close" />
|
||||
<door id="20220023" name="fortress_2022_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="6213;149830;-2917" node1="6220,149751" node2="6221,149830" node3="6206,149830" node4="6207,149752" nodeZ="-2917" default_status="close" />
|
||||
<door id="20220024" name="fortress_2022_008" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="5012;149673;-2917" node1="5018,149752" node2="5019,149673" node3="5005,149673" node4="5005,149752" nodeZ="-2917" default_status="close" />
|
||||
<door id="20220025" name="fortress_2022_009" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="5011;149830;-2917" node1="5017,149752" node2="5017,149830" node3="5005,149830" node4="5005,149752" nodeZ="-2917" default_status="close" />
|
||||
<door id="20220026" name="fortress_2022_010" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="7439;150734;-2938" node1="7454,150656" node2="7454,150813" node3="7424,150813" node4="7422,150656" nodeZ="-2938" default_status="close" />
|
||||
<door id="20220027" name="fortress_2022_011" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="5136;151876;-2879" node1="5215,151868" node2="5137,151868" node3="5136,151885" node4="5216,151884" nodeZ="-2879" default_status="close" />
|
||||
<door id="20220028" name="fortress_2022_012" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="5292;151876;-2879" node1="5214,151884" node2="5213,151868" node3="5292,151869" node4="5292,151884" nodeZ="-2879" default_status="close" />
|
||||
@ -853,12 +853,12 @@
|
||||
<door id="21210001" name="partisan001" open_method="0" height="450" baseHpMax="316500" hp_showable="false" basePDef="644" baseMDef="518" pos="43643;108908;-1970" node1="43643,108840" node2="43650,108840" node3="43651,108915" node4="43643,108915" nodeZ="-2015" clanhall_id="21" />
|
||||
<door id="21210002" name="partisan002" open_method="0" height="450" baseHpMax="316500" hp_showable="false" basePDef="644" baseMDef="518" pos="43643;108783;-1970" node1="43643,108778" node2="43651,108778" node3="43651,108853" node4="43643,108853" nodeZ="-2015" clanhall_id="21" />
|
||||
<door id="21220001" name="fortress_2122_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="58984;138134;-1803" node1="58888,138108" node2="59060,138073" node3="59081,138158" node4="58907,138198" nodeZ="-1803" default_status="close" />
|
||||
<door id="21220002" name="fortress_2122_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="60086;138860;-1782" node1="60171,138851" node2="60086,138854" node3="60086,138867" node4="60171,138866" nodeZ="-1782" default_status="close" />
|
||||
<door id="21220003" name="fortress_2122_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="60239;138830;-1782" node1="60154,138821" node2="60249,138821" node3="60250,138839" node4="60153,138835" nodeZ="-1782" default_status="close" />
|
||||
<door id="21220002" name="fortress_2122_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="60320;140038;-1782" node1="60398,140008" node2="60315,140025" node3="60320,140051" node4="60405,140035" nodeZ="-1782" default_status="close" />
|
||||
<door id="21220003" name="fortress_2122_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="60473;140008;-1782" node1="60390,140010" node2="60472,139997" node3="60478,140020" node4="60395,140037" nodeZ="-1782" default_status="close" />
|
||||
<door id="21220004" name="fortress_2122_004" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="61654;138595;-1754" node1="61732,138566" node2="61649,138582" node3="61654,138607" node4="61737,138591" nodeZ="-1754" default_status="close" />
|
||||
<door id="21220005" name="fortress_2122_005" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="61808;138565;-1754" node1="61724,138568" node2="61808,138550" node3="61814,138578" node4="61730,138593" nodeZ="-1754" default_status="close" />
|
||||
<door id="21220006" name="fortress_2122_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="60320;140038;-1782" node1="60398,140008" node2="60315,140025" node3="60320,140051" node4="60405,140035" nodeZ="-1782" default_status="close" />
|
||||
<door id="21220007" name="fortress_2122_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="60473;140008;-1782" node1="60390,140010" node2="60472,139997" node3="60478,140020" node4="60395,140037" nodeZ="-1782" default_status="close" />
|
||||
<door id="21220006" name="fortress_2122_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="60086;138860;-1782" node1="60171,138851" node2="60086,138854" node3="60086,138867" node4="60171,138866" nodeZ="-1782" default_status="close" />
|
||||
<door id="21220007" name="fortress_2122_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="60239;138830;-1782" node1="60154,138821" node2="60249,138821" node3="60250,138839" node4="60153,138835" nodeZ="-1782" default_status="close" />
|
||||
<door id="21220008" name="fortress_2122_008" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="61543;140748;-1803" node1="61448,140715" node2="61617,140680" node3="61643,140779" node4="61469,140813" nodeZ="-1803" default_status="close" />
|
||||
<door id="21240001" name="Devil_001" open_method="2" close_time="120" open_time="120" random_time="30" height="245" baseHpMax="150000" hp_showable="false" basePDef="100000" baseMDef="10000" pos="42000;208377;-3666" node1="41864,208294" node2="41868,208287" node3="42006,208377" node4="42002,208383" nodeZ="-3785" default_status="close" />
|
||||
<door id="21240002" name="Devil_002" open_method="2" close_time="120" open_time="120" random_time="30" height="245" baseHpMax="150000" hp_showable="false" basePDef="100000" baseMDef="10000" pos="43745;212594;-3623" node1="43741,212433" node2="43749,212433" node3="43749,212600" node4="43741,212600" nodeZ="-3742" default_status="close" />
|
||||
@ -896,22 +896,22 @@
|
||||
<door id="22130023" name="schutt_castle_agit_004_002" open_method="1" height="450" baseHpMax="316500" hp_showable="false" basePDef="644" baseMDef="518" pos="88621;-143156;-1352" node1="88632,-143203" node2="88626,-143153" node3="88615,-143154" node4="88621,-143204" nodeZ="-1362" clanhall_id="61" />
|
||||
<door id="22130024" name="schutt_castle_agit_004_001" open_method="1" height="450" baseHpMax="316500" hp_showable="false" basePDef="644" baseMDef="518" pos="88632;-143245;-1352" node1="88620,-143198" node2="88627,-143248" node3="88637,-143247" node4="88632,-143197" nodeZ="-1366" clanhall_id="61" />
|
||||
<door id="22150001" name="fortress_2215_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="72490;-96493;-1478" node1="72376,-96499" node2="72567,-96583" node3="72608,-96485" node4="72415,-96407" nodeZ="-1478" default_status="close" />
|
||||
<door id="22150002" name="fortress_2215_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="71865;-95291;-1456" node1="71940,-95330" node2="71861,-95298" node3="71866,-95283" node4="71946,-95317" nodeZ="-1456" default_status="close" />
|
||||
<door id="22150003" name="fortress_2215_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="72010;-95351;-1456" node1="71929,-95327" node2="72011,-95360" node3="72017,-95345" node4="71934,-95313" nodeZ="-1456" default_status="close" />
|
||||
<door id="22150002" name="fortress_2215_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="72325;-94181;-1456" node1="72399,-94221" node2="72320,-94187" node3="72325,-94174" node4="72405,-94206" nodeZ="-1456" default_status="close" />
|
||||
<door id="22150003" name="fortress_2215_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="72469;-94241;-1456" node1="72388,-94216" node2="72469,-94249" node3="72475,-94236" node4="72393,-94202" nodeZ="-1456" default_status="close" />
|
||||
<door id="22150004" name="fortress_2215_004" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="70847;-94272;-1428" node1="70854,-94279" node2="70888,-94199" node3="70870,-94190" node4="70838,-94272" nodeZ="-1428" default_status="close" />
|
||||
<door id="22150005" name="fortress_2215_005" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="70907;-94127;-1428" node1="70866,-94200" node2="70900,-94120" node3="70917,-94128" node4="70885,-94208" nodeZ="-1428" default_status="close" />
|
||||
<door id="22150006" name="fortress_2215_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="72325;-94181;-1456" node1="72399,-94221" node2="72320,-94187" node3="72325,-94174" node4="72405,-94206" nodeZ="-1456" default_status="close" />
|
||||
<door id="22150007" name="fortress_2215_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="72469;-94241;-1456" node1="72388,-94216" node2="72469,-94249" node3="72475,-94236" node4="72393,-94202" nodeZ="-1456" default_status="close" />
|
||||
<door id="22150006" name="fortress_2215_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="71865;-95291;-1456" node1="71940,-95330" node2="71861,-95298" node3="71866,-95283" node4="71946,-95317" nodeZ="-1456" default_status="close" />
|
||||
<door id="22150007" name="fortress_2215_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="72010;-95351;-1456" node1="71929,-95327" node2="72011,-95360" node3="72017,-95345" node4="71934,-95313" nodeZ="-1456" default_status="close" />
|
||||
<door id="22150008" name="fortress_2215_008" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="71794;-92905;-1477" node1="71680,-92911" node2="71871,-92995" node3="71912,-92897" node4="71719,-92819" nodeZ="-1477" default_status="close" />
|
||||
<door id="22160001" name="fortress_2216_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="68833;-63635;-2834" node1="68719,-63641" node2="68910,-63725" node3="68951,-63627" node4="68758,-63549" nodeZ="-2834" default_status="close" />
|
||||
<door id="22160002" name="fortress_2216_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="68643;-62606;-2814" node1="68648,-62614" node2="68683,-62531" node3="68667,-62525" node4="68634,-62606" nodeZ="-2814" default_status="close" />
|
||||
<door id="22160003" name="fortress_2216_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="68703;-62461;-2814" node1="68663,-62535" node2="68696,-62454" node3="68712,-62461" node4="68679,-62542" nodeZ="-2814" default_status="close" />
|
||||
<door id="22160004" name="fortress_2216_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="69531;-61953;-2814" node1="69607,-61994" node2="69529,-61960" node3="69534,-61945" node4="69613,-61978" nodeZ="-2814" default_status="close" />
|
||||
<door id="22160005" name="fortress_2216_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="69676;-62013;-2814" node1="69595,-61990" node2="69674,-62024" node3="69680,-62004" node4="69602,-61973" nodeZ="-2814" default_status="close" />
|
||||
<door id="22160004" name="fortress_2216_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="69991;-60843;-2814" node1="70066,-60882" node2="69986,-60850" node3="69993,-60835" node4="70071,-60867" nodeZ="-2814" default_status="close" />
|
||||
<door id="22160005" name="fortress_2216_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="70135;-60903;-2814" node1="70054,-60878" node2="70132,-60911" node3="70139,-60894" node4="70060,-60864" nodeZ="-2814" default_status="close" />
|
||||
<door id="22160006" name="fortress_2216_006" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="67849;-61153;-2776" node1="67924,-61192" node2="67847,-61161" node3="67852,-61146" node4="67929,-61179" nodeZ="-2776" default_status="close" />
|
||||
<door id="22160007" name="fortress_2216_007" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="67994;-61213;-2776" node1="67913,-61188" node2="67992,-61220" node3="67996,-61207" node4="67919,-61175" nodeZ="-2776" default_status="close" />
|
||||
<door id="22160008" name="fortress_2216_008" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="69991;-60843;-2814" node1="70066,-60882" node2="69986,-60850" node3="69993,-60835" node4="70071,-60867" nodeZ="-2814" default_status="close" />
|
||||
<door id="22160009" name="fortress_2216_009" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="70135;-60903;-2814" node1="70054,-60878" node2="70132,-60911" node3="70139,-60894" node4="70060,-60864" nodeZ="-2814" default_status="close" />
|
||||
<door id="22160008" name="fortress_2216_008" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="69531;-61953;-2814" node1="69607,-61994" node2="69529,-61960" node3="69534,-61945" node4="69613,-61978" nodeZ="-2814" default_status="close" />
|
||||
<door id="22160009" name="fortress_2216_009" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="69676;-62013;-2814" node1="69595,-61990" node2="69674,-62024" node3="69680,-62004" node4="69602,-61973" nodeZ="-2814" default_status="close" />
|
||||
<door id="22160010" name="fortress_2216_010" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="71439;-61682;-2786" node1="71515,-61722" node2="71436,-61689" node3="71441,-61676" node4="71520,-61708" nodeZ="-2786" default_status="close" />
|
||||
<door id="22160011" name="fortress_2216_011" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="71583;-61742;-2786" node1="71502,-61717" node2="71581,-61749" node3="71586,-61733" node4="71509,-61704" nodeZ="-2786" default_status="close" />
|
||||
<door id="22160012" name="fortress_2216_012" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="70697;-59119;-2834" node1="70583,-59125" node2="70774,-59209" node3="70815,-59111" node4="70622,-59033" nodeZ="-2834" default_status="close" />
|
||||
@ -920,10 +920,10 @@
|
||||
<door id="22170003" name="Bandit_003" open_method="0" height="450" baseHpMax="316500" hp_showable="false" basePDef="644" baseMDef="518" pos="80818;-15357;-1762" node1="80815,-15445" node2="80821,-15445" node3="80821,-15349" node4="80816,-15349" nodeZ="-1829" clanhall_id="35" />
|
||||
<door id="22170004" name="Bandit_004" open_method="0" height="450" baseHpMax="316500" hp_showable="false" basePDef="644" baseMDef="518" pos="80818;-15518;-1762" node1="80815,-15525" node2="80820,-15525" node3="80820,-15431" node4="80815,-15431" nodeZ="-1829" clanhall_id="35" />
|
||||
<door id="22180001" name="fortress_2218_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="74198;2788;-3093" node1="74150,2727" node2="74271,2826" node3="74253,2849" node4="74131,2749" nodeZ="-3093" default_status="close" />
|
||||
<door id="22180002" name="fortress_2218_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="73180;3761;-3073" node1="73245,3805" node2="73184,3757" node3="73177,3766" node4="73236,3816" nodeZ="-3073" default_status="close" />
|
||||
<door id="22180003" name="fortress_2218_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="73301;3860;-3073" node1="73245,3805" node2="73306,3854" node3="73296,3865" node4="73236,3816" nodeZ="-3073" default_status="close" />
|
||||
<door id="22180004" name="fortress_2218_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="72419;4690;-3073" node1="72485,4734" node2="72423,4685" node3="72415,4696" node4="72475,4745" nodeZ="-3073" default_status="close" />
|
||||
<door id="22180005" name="fortress_2218_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="72539;4789;-3073" node1="72484,4734" node2="72544,4783" node3="72534,4795" node4="72474,4745" nodeZ="-3073" default_status="close" />
|
||||
<door id="22180002" name="fortress_2218_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="72419;4690;-3073" node1="72485,4734" node2="72423,4685" node3="72415,4696" node4="72475,4745" nodeZ="-3073" default_status="close" />
|
||||
<door id="22180003" name="fortress_2218_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="72539;4789;-3073" node1="72484,4734" node2="72544,4783" node3="72534,4795" node4="72474,4745" nodeZ="-3073" default_status="close" />
|
||||
<door id="22180004" name="fortress_2218_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="73180;3761;-3073" node1="73245,3805" node2="73184,3757" node3="73177,3766" node4="73236,3816" nodeZ="-3073" default_status="close" />
|
||||
<door id="22180005" name="fortress_2218_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="73301;3860;-3073" node1="73245,3805" node2="73306,3854" node3="73296,3865" node4="73236,3816" nodeZ="-3073" default_status="close" />
|
||||
<door id="22180006" name="fortress_2218_006" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="74141;4890;-3044" node1="74207,4933" node2="74146,4885" node3="74137,4895" node4="74197,4946" nodeZ="-3044" default_status="close" />
|
||||
<door id="22180007" name="fortress_2218_007" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="74262;4989;-3044" node1="74207,4933" node2="74267,4981" node3="74257,4996" node4="74197,4946" nodeZ="-3044" default_status="close" />
|
||||
<door id="22180008" name="fortress_2218_008" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="71595;5960;-3093" node1="71547,5899" node2="71668,5998" node3="71650,6021" node4="71528,5921" nodeZ="-3093" default_status="close" />
|
||||
@ -939,10 +939,10 @@
|
||||
<door id="22200001" name="fortress_2220_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="78090;89321;-2934" node1="78027,89377" node2="78104,89241" node3="78152,89266" node4="78078,89405" nodeZ="-2934" default_status="close" />
|
||||
<door id="22200002" name="fortress_2220_002" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="80522;89326;-2877" node1="80599,89352" node2="80528,89314" node3="80517,89337" node4="80587,89372" nodeZ="-2877" default_status="close" />
|
||||
<door id="22200003" name="fortress_2220_003" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="80660;89400;-2877" node1="80584,89372" node2="80655,89413" node3="80668,89387" node4="80595,89351" nodeZ="-2877" default_status="close" />
|
||||
<door id="22200004" name="fortress_2220_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="78672;90834;-2912" node1="78703,90762" node2="78666,90832" node3="78677,90837" node4="78714,90768" nodeZ="-2912" default_status="close" />
|
||||
<door id="22200005" name="fortress_2220_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="78745;90696;-2912" node1="78703,90763" node2="78738,90693" node3="78752,90700" node4="78713,90768" nodeZ="-2912" default_status="close" />
|
||||
<door id="22200006" name="fortress_2220_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="79731;91400;-2912" node1="79759,91326" node2="79723,91397" node3="79739,91404" node4="79777,91334" nodeZ="-2912" default_status="close" />
|
||||
<door id="22200007" name="fortress_2220_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="79804;91263;-2912" node1="79758,91328" node2="79794,91259" node3="79814,91267" node4="79777,91336" nodeZ="-2912" default_status="close" />
|
||||
<door id="22200004" name="fortress_2220_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="79731;91400;-2912" node1="79759,91326" node2="79723,91397" node3="79739,91404" node4="79777,91334" nodeZ="-2912" default_status="close" />
|
||||
<door id="22200005" name="fortress_2220_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="79804;91263;-2912" node1="79758,91328" node2="79794,91259" node3="79814,91267" node4="79777,91336" nodeZ="-2912" default_status="close" />
|
||||
<door id="22200006" name="fortress_2220_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="78672;90834;-2912" node1="78703,90762" node2="78666,90832" node3="78677,90837" node4="78714,90768" nodeZ="-2912" default_status="close" />
|
||||
<door id="22200007" name="fortress_2220_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="78745;90696;-2912" node1="78703,90763" node2="78738,90693" node3="78752,90700" node4="78713,90768" nodeZ="-2912" default_status="close" />
|
||||
<door id="22200008" name="fortress_2220_008" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="77814;92082;-2887" node1="77839,92005" node2="77801,92078" node3="77826,92089" node4="77864,92018" nodeZ="-2887" default_status="close" />
|
||||
<door id="22200009" name="fortress_2220_009" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="77888;91945;-2887" node1="77837,92009" node2="77875,91939" node3="77899,91950" node4="77863,92021" nodeZ="-2887" default_status="close" />
|
||||
<door id="22200010" name="fortress_2220_010" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="79034;92956;-2916" node1="79040,92946" node2="79109,92984" node3="79098,93005" node4="79029,92967" nodeZ="-2916" default_status="close" />
|
||||
@ -961,10 +961,10 @@
|
||||
<door id="22230001" name="fortress_2223_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="73057;184177;-2630" node1="73011,184084" node2="73166,184188" node3="73109,184271" node4="72951,184169" nodeZ="-2630" default_status="close" />
|
||||
<door id="22230002" name="fortress_2223_002" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="71908;185170;-2581" node1="71945,185091" node2="71896,185169" node3="71916,185181" node4="71964,185106" nodeZ="-2581" default_status="close" />
|
||||
<door id="22230003" name="fortress_2223_003" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="71994;185040;-2581" node1="72005,185044" node2="71957,185114" node3="71938,185099" node4="71988,185032" nodeZ="-2581" default_status="close" />
|
||||
<door id="22230004" name="fortress_2223_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="73382;185442;-2609" node1="73460,185476" node2="73389,185427" node3="73371,185452" node4="73442,185501" nodeZ="-2609" default_status="close" />
|
||||
<door id="22230005" name="fortress_2223_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="73511;185529;-2609" node1="73453,185472" node2="73521,185519" node3="73505,185542" node4="73433,185497" nodeZ="-2609" default_status="close" />
|
||||
<door id="22230006" name="fortress_2223_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="72714;186441;-2609" node1="72788,186476" node2="72721,186432" node3="72708,186449" node4="72776,186496" nodeZ="-2609" default_status="close" />
|
||||
<door id="22230007" name="fortress_2223_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="72844;186528;-2609" node1="72784,186474" node2="72851,186521" node3="72839,186537" node4="72771,186493" nodeZ="-2609" default_status="close" />
|
||||
<door id="22230004" name="fortress_2223_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="72714;186441;-2609" node1="72788,186476" node2="72721,186432" node3="72708,186449" node4="72776,186496" nodeZ="-2609" default_status="close" />
|
||||
<door id="22230005" name="fortress_2223_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="72844;186528;-2609" node1="72784,186474" node2="72851,186521" node3="72839,186537" node4="72771,186493" nodeZ="-2609" default_status="close" />
|
||||
<door id="22230006" name="fortress_2223_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="73382;185442;-2609" node1="73460,185476" node2="73389,185427" node3="73371,185452" node4="73442,185501" nodeZ="-2609" default_status="close" />
|
||||
<door id="22230007" name="fortress_2223_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="73511;185529;-2609" node1="73453,185472" node2="73521,185519" node3="73505,185542" node4="73433,185497" nodeZ="-2609" default_status="close" />
|
||||
<door id="22230008" name="fortress_2223_008" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="73037;187834;-2630" node1="72997,187750" node2="73130,187839" node3="73080,187923" node4="72945,187829" nodeZ="-2630" default_status="close" />
|
||||
<door id="22250001" name="Eva_001" open_method="10" level="2" close_time="20" open_time="300" random_time="120" height="512" baseHpMax="150000" hp_showable="false" basePDef="476" baseMDef="383" pos="86225;247062;-8584" node1="86087,246961" node2="86364,247159" node3="86362,247162" node4="86085,246964" nodeZ="-8845" default_status="close" />
|
||||
<door id="22250002" name="Eva_002" open_method="10" level="2" close_time="20" open_time="300" random_time="120" height="512" baseHpMax="150000" hp_showable="false" basePDef="476" baseMDef="383" pos="88490;253870;-8584" node1="88546,253708" node2="88440,254031" node3="88436,254030" node4="88539,253707" nodeZ="-8845" default_status="close" />
|
||||
@ -996,10 +996,10 @@
|
||||
<door id="22250028" name="Eva_028" open_method="8" level="2" close_time="120" height="512" baseHpMax="150000" hp_showable="false" basePDef="476" baseMDef="383" pos="82012;248506;-10734" node1="81713,248521" node2="82312,248520" node3="82312,248490" node4="81713,248491" nodeZ="-10888" />
|
||||
<door id="22250029" name="Eva_029" open_method="8" level="2" close_time="120" height="512" baseHpMax="187500" hp_showable="false" basePDef="476" baseMDef="383" pos="82560;254715;-10880" node1="82260,254730" node2="82860,254730" node3="82860,254700" node4="82260,254700" nodeZ="-10880" default_status="close" targetable="false" />
|
||||
<door id="23130001" name="fortress_2313_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="107495;-140524;-3009" node1="107513,-140616" node2="107565,-140465" node3="107477,-140436" node4="107428,-140591" nodeZ="-3009" default_status="close" />
|
||||
<door id="23130002" name="fortress_2313_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="108887;-141124;-2984" node1="108918,-141051" node2="108894,-141126" node3="108879,-141122" node4="108901,-141046" nodeZ="-2984" default_status="close" />
|
||||
<door id="23130003" name="fortress_2313_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="108932;-140974;-2984" node1="108917,-141054" node2="108941,-140977" node3="108922,-140971" node4="108900,-141049" nodeZ="-2984" default_status="close" />
|
||||
<door id="23130004" name="fortress_2313_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="110037;-141473;-2984" node1="110069,-141399" node2="110045,-141477" node3="110028,-141471" node4="110052,-141394" nodeZ="-2984" default_status="close" />
|
||||
<door id="23130005" name="fortress_2313_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="110082;-141323;-2984" node1="110069,-141402" node2="110093,-141326" node3="110073,-141319" node4="110051,-141398" nodeZ="-2984" default_status="close" />
|
||||
<door id="23130002" name="fortress_2313_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="110037;-141473;-2984" node1="110069,-141399" node2="110045,-141477" node3="110028,-141471" node4="110052,-141394" nodeZ="-2984" default_status="close" />
|
||||
<door id="23130003" name="fortress_2313_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="110082;-141323;-2984" node1="110069,-141402" node2="110093,-141326" node3="110073,-141319" node4="110051,-141398" nodeZ="-2984" default_status="close" />
|
||||
<door id="23130004" name="fortress_2313_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="108887;-141124;-2984" node1="108918,-141051" node2="108894,-141126" node3="108879,-141122" node4="108901,-141046" nodeZ="-2984" default_status="close" />
|
||||
<door id="23130005" name="fortress_2313_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="108932;-140974;-2984" node1="108917,-141054" node2="108941,-140977" node3="108922,-140971" node4="108900,-141049" nodeZ="-2984" default_status="close" />
|
||||
<door id="23130006" name="fortress_2313_006" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="111423;-141714;-3009" node1="111441,-141806" node2="111493,-141655" node3="111405,-141626" node4="111356,-141781" nodeZ="-3009" default_status="close" />
|
||||
<door id="23130007" name="fortress_2313_007" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="110210;-140000;-2959" node1="110242,-139926" node2="110218,-140004" node3="110201,-139998" node4="110225,-139921" nodeZ="-2959" default_status="close" />
|
||||
<door id="23130008" name="fortress_2313_008" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="110255;-139850;-2959" node1="110242,-139929" node2="110266,-139853" node3="110246,-139846" node4="110224,-139925" nodeZ="-2959" default_status="close" />
|
||||
@ -1013,20 +1013,20 @@
|
||||
<door id="23160001" name="fortress_2316_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="99133;-56362;-693" node1="99089,-56267" node2="99088,-56467" node3="99172,-56468" node4="99179,-56268" nodeZ="-693" default_status="close" />
|
||||
<door id="23160002" name="fortress_2316_002" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="100608;-56727;-645" node1="100697,-56736" node2="100608,-56736" node3="100608,-56717" node4="100697,-56718" nodeZ="-645" default_status="close" />
|
||||
<door id="23160003" name="fortress_2316_003" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="100764;-56727;-645" node1="100763,-56719" node2="100677,-56718" node3="100678,-56736" node4="100764,-56736" nodeZ="-645" default_status="close" />
|
||||
<door id="23160004" name="fortress_2316_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="100116;-55396;-673" node1="100127,-55308" node2="100123,-55402" node3="100109,-55402" node4="100108,-55308" nodeZ="-673" default_status="close" />
|
||||
<door id="23160005" name="fortress_2316_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="100116;-55240;-673" node1="100127,-55328" node2="100126,-55234" node3="100107,-55234" node4="100108,-55328" nodeZ="-673" default_status="close" />
|
||||
<door id="23160006" name="fortress_2316_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="101317;-55397;-673" node1="101327,-55308" node2="101323,-55399" node3="101312,-55399" node4="101307,-55308" nodeZ="-673" default_status="close" />
|
||||
<door id="23160007" name="fortress_2316_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="101317;-55241;-673" node1="101328,-55328" node2="101328,-55236" node3="101306,-55236" node4="101307,-55328" nodeZ="-673" default_status="close" />
|
||||
<door id="23160004" name="fortress_2316_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="101317;-55397;-673" node1="101327,-55308" node2="101323,-55399" node3="101312,-55399" node4="101307,-55308" nodeZ="-673" default_status="close" />
|
||||
<door id="23160005" name="fortress_2316_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="101317;-55241;-673" node1="101328,-55328" node2="101328,-55236" node3="101306,-55236" node4="101307,-55328" nodeZ="-673" default_status="close" />
|
||||
<door id="23160006" name="fortress_2316_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="100116;-55396;-673" node1="100127,-55308" node2="100123,-55402" node3="100109,-55402" node4="100108,-55308" nodeZ="-673" default_status="close" />
|
||||
<door id="23160007" name="fortress_2316_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="100116;-55240;-673" node1="100127,-55328" node2="100126,-55234" node3="100107,-55234" node4="100108,-55328" nodeZ="-673" default_status="close" />
|
||||
<door id="23160008" name="fortress_2316_008" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="102190;-54352;-695" node1="102146,-54257" node2="102145,-54457" node3="102229,-54458" node4="102236,-54258" nodeZ="-695" default_status="close" />
|
||||
<door id="23170001" name="fortress_2317_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="112349;-16973;-1045" node1="112233,-17023" node2="112460,-17016" node3="112460,-16920" node4="112233,-16918" nodeZ="-1045" default_status="close" />
|
||||
<door id="23170002" name="fortress_2317_002" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="109793;-15889;-995" node1="109884,-15900" node2="109788,-15900" node3="109786,-15878" node4="109884,-15876" nodeZ="-995" default_status="close" />
|
||||
<door id="23170003" name="fortress_2317_003" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="109949;-15889;-995" node1="109852,-15900" node2="109958,-15900" node3="109958,-15875" node4="109852,-15876" nodeZ="-995" default_status="close" />
|
||||
<door id="23170004" name="fortress_2317_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="111290;-15750;-1023" node1="111375,-15759" node2="111290,-15756" node3="111290,-15743" node4="111375,-15744" nodeZ="-1023" default_status="close" />
|
||||
<door id="23170005" name="fortress_2317_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="111446;-15750;-1023" node1="111361,-15759" node2="111456,-15759" node3="111457,-15741" node4="111360,-15745" nodeZ="-1023" default_status="close" />
|
||||
<door id="23170004" name="fortress_2317_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="111290;-14549;-1023" node1="111375,-14558" node2="111290,-14555" node3="111290,-14542" node4="111375,-14543" nodeZ="-1023" default_status="close" />
|
||||
<door id="23170005" name="fortress_2317_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="111446;-14549;-1023" node1="111361,-14558" node2="111456,-14558" node3="111457,-14540" node4="111360,-14544" nodeZ="-1023" default_status="close" />
|
||||
<door id="23170006" name="fortress_2317_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="109582;-14431;-1024" node1="109586,-14441" node2="109590,-14343" node3="109574,-14344" node4="109575,-14442" nodeZ="-1024" default_status="close" />
|
||||
<door id="23170007" name="fortress_2317_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="109582;-14275;-1024" node1="109575,-14363" node2="109577,-14266" node3="109590,-14264" node4="109590,-14362" nodeZ="-1024" default_status="close" />
|
||||
<door id="23170008" name="fortress_2317_008" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="111290;-14549;-1023" node1="111375,-14558" node2="111290,-14555" node3="111290,-14542" node4="111375,-14543" nodeZ="-1023" default_status="close" />
|
||||
<door id="23170009" name="fortress_2317_009" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="111446;-14549;-1023" node1="111361,-14558" node2="111456,-14558" node3="111457,-14540" node4="111360,-14544" nodeZ="-1023" default_status="close" />
|
||||
<door id="23170008" name="fortress_2317_008" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="111290;-15750;-1023" node1="111375,-15759" node2="111290,-15756" node3="111290,-15743" node4="111375,-15744" nodeZ="-1023" default_status="close" />
|
||||
<door id="23170009" name="fortress_2317_009" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="111446;-15750;-1023" node1="111361,-15759" node2="111456,-15759" node3="111457,-15741" node4="111360,-15745" nodeZ="-1023" default_status="close" />
|
||||
<door id="23170010" name="fortress_2317_010" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="113491;-14829;-987" node1="113484,-14841" node2="113483,-14736" node3="113499,-14734" node4="113499,-14841" nodeZ="-987" default_status="close" />
|
||||
<door id="23170011" name="fortress_2317_011" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="113492;-14673;-987" node1="113484,-14760" node2="113485,-14659" node3="113501,-14659" node4="113502,-14760" nodeZ="-987" default_status="close" />
|
||||
<door id="23170012" name="fortress_2317_012" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="110348;-13548;-1047" node1="110232,-13598" node2="110459,-13591" node3="110459,-13495" node4="110232,-13493" nodeZ="-1047" default_status="close" />
|
||||
@ -1037,14 +1037,14 @@
|
||||
<door id="23180005" name="hubris_11F_002" open_method="2" close_time="120" open_time="120" random_time="120" height="355" baseHpMax="150000" hp_showable="false" basePDef="476" baseMDef="383" pos="113263;15764;7145" node1="113219,15703" node2="113325,15808" node3="113307,15826" node4="113201,15720" nodeZ="6968" default_status="close" master_open_event="act_open" master_close_event="act_close" />
|
||||
<door id="23180006" name="hubris_11F_001" open_method="2" close_time="120" open_time="120" random_time="120" height="355" baseHpMax="150000" hp_showable="false" basePDef="476" baseMDef="383" pos="113367;15868;7145" node1="113323,15806" node2="113429,15912" node3="113411,15930" node4="113305,15824" nodeZ="6968" default_status="close" child_id_event="23180005" />
|
||||
<door id="23200001" name="fortress_2320_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="124213;93493;-2191" node1="124094,93443" node2="124320,93450" node3="124320,93546" node4="124093,93548" nodeZ="-2191" default_status="close" />
|
||||
<door id="23200002" name="fortress_2320_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="125168;94533;-2168" node1="125253,94524" node2="125168,94527" node3="125168,94540" node4="125253,94539" nodeZ="-2168" default_status="close" />
|
||||
<door id="23200003" name="fortress_2320_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="125324;94533;-2168" node1="125239,94524" node2="125334,94524" node3="125335,94542" node4="125238,94538" nodeZ="-2168" default_status="close" />
|
||||
<door id="23200002" name="fortress_2320_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="125168;95734;-2168" node1="125253,95725" node2="125168,95728" node3="125168,95741" node4="125253,95740" nodeZ="-2168" default_status="close" />
|
||||
<door id="23200003" name="fortress_2320_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="125324;95734;-2168" node1="125239,95725" node2="125334,95725" node3="125335,95743" node4="125238,95739" nodeZ="-2168" default_status="close" />
|
||||
<door id="23200004" name="fortress_2320_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="126966;94172;-2170" node1="126959,94165" node2="126958,94260" node3="126974,94260" node4="126974,94165" nodeZ="-2170" default_status="close" />
|
||||
<door id="23200005" name="fortress_2320_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="126966;94328;-2170" node1="126958,94239" node2="126959,94339" node3="126975,94338" node4="126975,94239" nodeZ="-2170" default_status="close" />
|
||||
<door id="23200006" name="fortress_2320_006" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="123356;95689;-2138" node1="123360,95679" node2="123364,95777" node3="123348,95776" node4="123349,95678" nodeZ="-2138" default_status="close" />
|
||||
<door id="23200007" name="fortress_2320_007" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="123356;95845;-2138" node1="123349,95757" node2="123351,95854" node3="123364,95856" node4="123364,95758" nodeZ="-2138" default_status="close" />
|
||||
<door id="23200008" name="fortress_2320_008" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="125168;95734;-2168" node1="125253,95725" node2="125168,95728" node3="125168,95741" node4="125253,95740" nodeZ="-2168" default_status="close" />
|
||||
<door id="23200009" name="fortress_2320_009" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="125324;95734;-2168" node1="125239,95725" node2="125334,95725" node3="125335,95743" node4="125238,95739" nodeZ="-2168" default_status="close" />
|
||||
<door id="23200008" name="fortress_2320_008" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="125168;94533;-2168" node1="125253,94524" node2="125168,94527" node3="125168,94540" node4="125253,94539" nodeZ="-2168" default_status="close" />
|
||||
<door id="23200009" name="fortress_2320_009" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="125324;94533;-2168" node1="125239,94524" node2="125334,94524" node3="125335,94542" node4="125238,94538" nodeZ="-2168" default_status="close" />
|
||||
<door id="23200010" name="fortress_2320_010" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="127221;95983;-2130" node1="127292,95925" node2="127280,95909" node3="127206,95986" node4="127220,96000" nodeZ="-2130" default_status="close" />
|
||||
<door id="23200011" name="fortress_2320_011" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="127331;95873;-2130" node1="127258,95930" node2="127334,95858" node3="127347,95873" node4="127270,95946" nodeZ="-2130" default_status="close" />
|
||||
<door id="23200012" name="fortress_2320_012" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="126193;96897;-2190" node1="126074,96847" node2="126300,96854" node3="126300,96950" node4="126073,96952" nodeZ="-2190" default_status="close" />
|
||||
@ -1053,12 +1053,12 @@
|
||||
<door id="23210003" name="fortress_2321_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="126760;121883;-2613" node1="126752,121794" node2="126753,121894" node3="126769,121893" node4="126769,121794" nodeZ="-2613" default_status="close" />
|
||||
<door id="23210004" name="fortress_2321_004" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="124224;122888;-2583" node1="124309,122879" node2="124224,122882" node3="124224,122895" node4="124309,122894" nodeZ="-2583" default_status="close" />
|
||||
<door id="23210005" name="fortress_2321_005" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="124381;122888;-2583" node1="124296,122879" node2="124391,122879" node3="124392,122897" node4="124295,122893" nodeZ="-2583" default_status="close" />
|
||||
<door id="23210006" name="fortress_2321_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="126001;122743;-2613" node1="126086,122734" node2="126001,122737" node3="126001,122750" node4="126086,122749" nodeZ="-2613" default_status="close" />
|
||||
<door id="23210007" name="fortress_2321_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="126157;122743;-2613" node1="126072,122734" node2="126167,122734" node3="126168,122752" node4="126071,122748" nodeZ="-2613" default_status="close" />
|
||||
<door id="23210006" name="fortress_2321_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="126001;123944;-2613" node1="126086,123935" node2="126001,123938" node3="126001,123951" node4="126086,123950" nodeZ="-2613" default_status="close" />
|
||||
<door id="23210007" name="fortress_2321_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="126157;123944;-2613" node1="126072,123935" node2="126167,123935" node3="126168,123953" node4="126071,123949" nodeZ="-2613" default_status="close" />
|
||||
<door id="23210008" name="fortress_2321_008" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="127569;123334;-2571" node1="127577,123422" node2="127561,123422" node3="127562,123327" node4="127577,123327" nodeZ="-2571" default_status="close" />
|
||||
<door id="23210009" name="fortress_2321_009" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="127569;123491;-2571" node1="127561,123402" node2="127562,123502" node3="127578,123501" node4="127578,123402" nodeZ="-2571" default_status="close" />
|
||||
<door id="23210010" name="fortress_2321_010" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="126001;123944;-2613" node1="126086,123935" node2="126001,123938" node3="126001,123951" node4="126086,123950" nodeZ="-2613" default_status="close" />
|
||||
<door id="23210011" name="fortress_2321_011" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="126157;123944;-2613" node1="126072,123935" node2="126167,123935" node3="126168,123953" node4="126071,123949" nodeZ="-2613" default_status="close" />
|
||||
<door id="23210010" name="fortress_2321_010" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="126001;122743;-2613" node1="126086,122734" node2="126001,122737" node3="126001,122750" node4="126086,122749" nodeZ="-2613" default_status="close" />
|
||||
<door id="23210011" name="fortress_2321_011" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="126157;122743;-2613" node1="126072,122734" node2="126167,122734" node3="126168,122752" node4="126071,122748" nodeZ="-2613" default_status="close" />
|
||||
<door id="23210012" name="fortress_2321_012" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="126066;125563;-2634" node1="125947,125513" node2="126173,125520" node3="126173,125616" node4="125946,125618" nodeZ="-2634" default_status="close" />
|
||||
<door id="23220001" name="giran_castle_outter_001" open_method="0" height="320" baseHpMax="633000" basePDef="644" baseMDef="518" pos="112857;144729;-2540" node1="112851,144720" node2="112850,144867" node3="112863,144867" node4="112863,144720" nodeZ="-2864" />
|
||||
<door id="23220002" name="giran_castle_outter_002" open_method="0" height="320" baseHpMax="633000" basePDef="644" baseMDef="518" pos="112857;144990;-2540" node1="112851,144997" node2="112851,144852" node3="112863,144852" node4="112863,144997" nodeZ="-2864" />
|
||||
@ -1070,12 +1070,12 @@
|
||||
<door id="23220008" name="giran_castle_station" open_method="0" height="250" baseHpMax="316500" basePDef="644" baseMDef="518" pos="117720;144242;-1877" node1="117715,144236" node2="117865,144236" node3="117865,144248" node4="117715,144248" nodeZ="-2129" />
|
||||
<door id="23220009" name="giran_castle_small_002" open_method="0" height="128" baseHpMax="316500" basePDef="644" baseMDef="518" pos="118811;145270;-2356" node1="118916,145270" node2="118916,145270" node3="118805,145270" node4="118805,145270" nodeZ="-2475" />
|
||||
<door id="23240001" name="fortress_2324_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="116614;203940;-3382" node1="116565,204003" node2="116637,203865" node3="116663,203876" node4="116587,204016" nodeZ="-3382" default_status="close" />
|
||||
<door id="23240002" name="fortress_2324_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="117846;204705;-3361" node1="117851,204708" node2="117889,204639" node3="117876,204632" node4="117841,204702" nodeZ="-3361" default_status="close" />
|
||||
<door id="23240003" name="fortress_2324_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="117919;204567;-3361" node1="117925,204570" node2="117889,204639" node3="117875,204632" node4="117913,204564" nodeZ="-3361" default_status="close" />
|
||||
<door id="23240002" name="fortress_2324_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="118905;205271;-3361" node1="118912,205275" node2="118950,205205" node3="118934,205198" node4="118899,205268" nodeZ="-3361" default_status="close" />
|
||||
<door id="23240003" name="fortress_2324_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="118978;205134;-3361" node1="118985,205137" node2="118949,205207" node3="118934,205200" node4="118971,205131" nodeZ="-3361" default_status="close" />
|
||||
<door id="23240004" name="fortress_2324_004" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="119429;203983;-3333" node1="119458,203909" node2="119422,203978" node3="119437,203987" node4="119475,203918" nodeZ="-3333" default_status="close" />
|
||||
<door id="23240005" name="fortress_2324_005" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="119503;203845;-3333" node1="119459,203910" node2="119495,203841" node3="119513,203849" node4="119476,203919" nodeZ="-3333" default_status="close" />
|
||||
<door id="23240006" name="fortress_2324_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="118905;205271;-3361" node1="118912,205275" node2="118950,205205" node3="118934,205198" node4="118899,205268" nodeZ="-3361" default_status="close" />
|
||||
<door id="23240007" name="fortress_2324_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="118978;205134;-3361" node1="118985,205137" node2="118949,205207" node3="118934,205200" node4="118971,205131" nodeZ="-3361" default_status="close" />
|
||||
<door id="23240006" name="fortress_2324_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="117846;204705;-3361" node1="117851,204708" node2="117889,204639" node3="117876,204632" node4="117841,204702" nodeZ="-3361" default_status="close" />
|
||||
<door id="23240007" name="fortress_2324_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="117919;204567;-3361" node1="117925,204570" node2="117889,204639" node3="117875,204632" node4="117913,204564" nodeZ="-3361" default_status="close" />
|
||||
<door id="23240008" name="fortress_2324_008" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="120247;205878;-3382" node1="120195,205938" node2="120272,205801" node3="120297,205815" node4="120225,205954" nodeZ="-3382" default_status="close" />
|
||||
<door id="23250001" name="innadrile_castle_outter_002" open_method="0" height="320" baseHpMax="633000" basePDef="644" baseMDef="518" pos="116392;245462;-766" node1="116399,245469" node2="116254,245468" node3="116254,245456" node4="116399,245456" nodeZ="-1090" />
|
||||
<door id="23250002" name="innadrile_castle_outter_001" open_method="0" height="320" baseHpMax="633000" basePDef="644" baseMDef="518" pos="116130;245462;-766" node1="116123,245456" node2="116268,245456" node3="116268,245468" node4="116123,245468" nodeZ="-1090" />
|
||||
@ -1097,10 +1097,10 @@
|
||||
<door id="24150001" name="fortress_2415_001" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="158497;-72103;-2865" node1="158554,-72041" node2="158506,-72115" node3="158484,-72100" node4="158531,-72026" nodeZ="-2865" default_status="close" />
|
||||
<door id="24150002" name="fortress_2415_002" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="158584;-71973;-2865" node1="158549,-72051" node2="158599,-71978" node3="158571,-71960" node4="158525,-72035" nodeZ="-2865" default_status="close" />
|
||||
<door id="24150003" name="fortress_2415_003" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="157297;-69092;-2916" node1="157280,-69193" node2="157389,-69038" node3="157307,-68988" node4="157204,-69143" nodeZ="-2916" default_status="close" />
|
||||
<door id="24150004" name="fortress_2415_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="158606;-70039;-2892" node1="158661,-69976" node2="158614,-70047" node3="158596,-70035" node4="158643,-69965" nodeZ="-2892" default_status="close" />
|
||||
<door id="24150005" name="fortress_2415_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="158693;-69909;-2892" node1="158657,-69984" node2="158705,-69913" node3="158685,-69900" node4="158639,-69971" nodeZ="-2892" default_status="close" />
|
||||
<door id="24150006" name="fortress_2415_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="159605;-70706;-2892" node1="159661,-70645" node2="159613,-70714" node3="159593,-70702" node4="159637,-70628" nodeZ="-2892" default_status="close" />
|
||||
<door id="24150007" name="fortress_2415_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="159692;-70577;-2892" node1="159658,-70654" node2="159705,-70583" node3="159684,-70568" node4="159633,-70638" nodeZ="-2892" default_status="close" />
|
||||
<door id="24150004" name="fortress_2415_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="159605;-70706;-2892" node1="159661,-70645" node2="159613,-70714" node3="159593,-70702" node4="159637,-70628" nodeZ="-2892" default_status="close" />
|
||||
<door id="24150005" name="fortress_2415_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="159692;-70577;-2892" node1="159658,-70654" node2="159705,-70583" node3="159684,-70568" node4="159633,-70638" nodeZ="-2892" default_status="close" />
|
||||
<door id="24150006" name="fortress_2415_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="158606;-70039;-2892" node1="158661,-69976" node2="158614,-70047" node3="158596,-70035" node4="158643,-69965" nodeZ="-2892" default_status="close" />
|
||||
<door id="24150007" name="fortress_2415_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="158693;-69909;-2892" node1="158657,-69984" node2="158705,-69913" node3="158685,-69900" node4="158639,-69971" nodeZ="-2892" default_status="close" />
|
||||
<door id="24150008" name="fortress_2415_008" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="161354;-71813;-2916" node1="161350,-71923" node2="161461,-71768" node3="161356,-71701" node4="161250,-71858" nodeZ="-2916" default_status="close" />
|
||||
<door id="24150009" name="fortress_2415_009" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="160742;-70553;-2899" node1="160804,-70612" node2="160731,-70561" node3="160745,-70539" node4="160819,-70591" nodeZ="-2899" default_status="close" />
|
||||
<door id="24150010" name="fortress_2415_010" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="160872;-70639;-2899" node1="160808,-70584" node2="160880,-70629" node3="160867,-70650" node4="160795,-70605" nodeZ="-2899" default_status="close" />
|
||||
@ -1167,10 +1167,10 @@
|
||||
<door id="24190003" name="aden_colosseum_002_001" open_method="0" height="256" baseHpMax="550000" hp_showable="false" basePDef="644" baseMDef="518" pos="150950;46721;-3288" node1="150939,46641" node2="150961,46640" node3="150961,46797" node4="150941,46797" nodeZ="-3435" default_status="open" />
|
||||
<door id="24190004" name="aden_colosseum_002_002" open_method="0" height="256" baseHpMax="550000" hp_showable="false" basePDef="644" baseMDef="518" pos="151910;46721;-3288" node1="151903,46644" node2="151917,46644" node3="151918,46798" node4="151904,46798" nodeZ="-3435" default_status="open" />
|
||||
<door id="24190005" name="fortress_2419_001" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="153327;56710;-3303" node1="153288,56636" node2="153389,56759" node3="153363,56780" node4="153262,56657" nodeZ="-3303" default_status="close" />
|
||||
<door id="24190006" name="fortress_2419_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="154384;55624;-3282" node1="154442,55680" node2="154390,55620" node3="154378,55629" node4="154427,55691" nodeZ="-3282" default_status="close" />
|
||||
<door id="24190007" name="fortress_2419_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="154483;55744;-3282" node1="154441,55678" node2="154491,55739" node3="154476,55749" node4="154426,55689" nodeZ="-3282" default_status="close" />
|
||||
<door id="24190008" name="fortress_2419_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="155313;54862;-3282" node1="155369,54919" node2="155318,54858" node3="155308,54866" node4="155357,54928" nodeZ="-3282" default_status="close" />
|
||||
<door id="24190009" name="fortress_2419_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="155412;54983;-3282" node1="155369,54918" node2="155418,54979" node3="155406,54987" node4="155356,54928" nodeZ="-3282" default_status="close" />
|
||||
<door id="24190006" name="fortress_2419_002" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="155313;54862;-3282" node1="155369,54919" node2="155318,54858" node3="155308,54866" node4="155357,54928" nodeZ="-3282" default_status="close" />
|
||||
<door id="24190007" name="fortress_2419_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="155412;54983;-3282" node1="155369,54918" node2="155418,54979" node3="155406,54987" node4="155356,54928" nodeZ="-3282" default_status="close" />
|
||||
<door id="24190008" name="fortress_2419_004" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="154384;55624;-3282" node1="154442,55680" node2="154390,55620" node3="154378,55629" node4="154427,55691" nodeZ="-3282" default_status="close" />
|
||||
<door id="24190009" name="fortress_2419_005" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="154483;55744;-3282" node1="154441,55678" node2="154491,55739" node3="154476,55749" node4="154426,55689" nodeZ="-3282" default_status="close" />
|
||||
<door id="24190010" name="fortress_2419_006" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="156500;54106;-3303" node1="156462,54033" node2="156562,54156" node3="156536,54178" node4="156436,54053" nodeZ="-3304" default_status="close" />
|
||||
<door id="24190011" name="fortress_2419_007" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="156034;56156;-3253" node1="156093,56211" node2="156041,56151" node3="156029,56162" node4="156078,56222" nodeZ="-3253" default_status="close" />
|
||||
<door id="24190012" name="fortress_2419_008" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="156134;56277;-3253" node1="156093,56211" node2="156140,56271" node3="156127,56282" node4="156078,56221" nodeZ="-3253" default_status="close" />
|
||||
@ -1296,10 +1296,10 @@
|
||||
<door id="25190003" name="fortress_2519_003" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="190612;38279;-3443" node1="190604,38190" node2="190605,38290" node3="190621,38289" node4="190621,38190" nodeZ="-3443" default_status="close" />
|
||||
<door id="25190004" name="fortress_2519_004" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="188076;39284;-3409" node1="188161,39275" node2="188076,39278" node3="188076,39291" node4="188161,39290" nodeZ="-3409" default_status="close" />
|
||||
<door id="25190005" name="fortress_2519_005" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="188233;39284;-3409" node1="188148,39275" node2="188243,39275" node3="188244,39293" node4="188147,39289" nodeZ="-3409" default_status="close" />
|
||||
<door id="25190006" name="fortress_2519_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="189853;39139;-3438" node1="189938,39130" node2="189853,39133" node3="189853,39146" node4="189938,39145" nodeZ="-3438" default_status="close" />
|
||||
<door id="25190007" name="fortress_2519_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="190009;39139;-3438" node1="189924,39130" node2="190019,39130" node3="190020,39148" node4="189923,39144" nodeZ="-3438" default_status="close" />
|
||||
<door id="25190008" name="fortress_2519_008" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="189853;40340;-3438" node1="189938,40331" node2="189853,40334" node3="189853,40347" node4="189938,40346" nodeZ="-3438" default_status="close" />
|
||||
<door id="25190009" name="fortress_2519_009" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="190009;40340;-3438" node1="189924,40331" node2="190019,40331" node3="190020,40349" node4="189923,40345" nodeZ="-3438" default_status="close" />
|
||||
<door id="25190006" name="fortress_2519_006" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="189853;40340;-3438" node1="189938,40331" node2="189853,40334" node3="189853,40347" node4="189938,40346" nodeZ="-3438" default_status="close" />
|
||||
<door id="25190007" name="fortress_2519_007" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="190009;40340;-3438" node1="189924,40331" node2="190019,40331" node3="190020,40349" node4="189923,40345" nodeZ="-3438" default_status="close" />
|
||||
<door id="25190008" name="fortress_2519_008" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="189853;39139;-3438" node1="189938,39130" node2="189853,39133" node3="189853,39146" node4="189938,39145" nodeZ="-3438" default_status="close" />
|
||||
<door id="25190009" name="fortress_2519_009" open_method="0" height="150" baseHpMax="169710" hp_showable="false" basePDef="644" baseMDef="518" pos="190009;39139;-3438" node1="189924,39130" node2="190019,39130" node3="190020,39148" node4="189923,39144" nodeZ="-3438" default_status="close" />
|
||||
<door id="25190010" name="fortress_2519_010" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="191421;39731;-3397" node1="191413,39819" node2="191414,39724" node3="191429,39724" node4="191429,39819" nodeZ="-3397" default_status="close" />
|
||||
<door id="25190011" name="fortress_2519_011" open_method="1" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="191421;39887;-3397" node1="191413,39798" node2="191414,39898" node3="191430,39897" node4="191430,39798" nodeZ="-3397" default_status="close" />
|
||||
<door id="25190012" name="fortress_2519_012" open_method="0" height="150" baseHpMax="169710" basePDef="644" baseMDef="518" pos="189913;41955;-3460" node1="189794,41905" node2="190020,41912" node3="190020,42008" node4="189793,42010" nodeZ="-3411" default_status="close" />
|
||||
|
@ -36,7 +36,7 @@
|
||||
<td><font color="00FF00">%gameTime% (%dayNight%)</font></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Geodata:</td>
|
||||
<td>Pathfinding:</td>
|
||||
<td><font color="00FF00">%geodata%</font></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
11
trunk/dist/game/data/html/teleporter/30146-1.htm
vendored
11
trunk/dist/game/data/html/teleporter/30146-1.htm
vendored
@ -1,11 +0,0 @@
|
||||
<html><body>&$556;<br><br>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 2" msg="811;The Town of Gludio">The Town of Gludio - 9200 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 16000" msg="811;The Village of Gludin">The Village of Gludin - 18000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1014" msg="811;Dwarven Village">Dwarven Village - 23000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1015" msg="811;Talking Island Village">Talking Island Village - 23000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1016" msg="811;Orc Village">Orc Village - 18000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 12053" msg="811;Kamael Village">Kamael Village - 16000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 468" msg="811;Elven Forest">Elven Forest - 710 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 470" msg="811;Elven Fortress">Elven Fortress - 820 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1013" msg="811;Neutral Zone">Neutral Zone - 1700 Adena</Button>
|
||||
</body></html>
|
@ -1,6 +0,0 @@
|
||||
<html><body>&$556;<br><br>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 9000" msg="811;Gludin Arena">Gludin Arena - 1000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 9002" msg="811;Giran Arena">Giran Arena - 1000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 9101" msg="811;The Center of the Neutral Zone">The Center of the Neutral Zone - 1000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 9001" msg="811;Coliseum">Coliseum - 1000 Adena</Button>
|
||||
</body></html>
|
@ -1,6 +0,0 @@
|
||||
<html><body>&$556;<br><br>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 9900" msg="811;Gludin Arena">Gludin Arena - 1 Olympiad Token</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 9902" msg="811;Giran Arena">Giran Arena - 1 Olympiad Token</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 10001" msg="811;The Center of the Neutral Zone">The Center of the Neutral Zone - 1 Olympiad Token</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 9901" msg="811;Coliseum">Coliseum - 1 Olympiad Token</Button>
|
||||
</body></html>
|
14
trunk/dist/game/data/html/teleporter/32163-1.htm
vendored
14
trunk/dist/game/data/html/teleporter/32163-1.htm
vendored
@ -1,14 +0,0 @@
|
||||
<html><body>&$556;<br><br>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1139" msg="811;The Town of Gludio">The Town of Gludio - 12000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 16000" msg="811;The Village of Gludin">The Village of Gludin - 18000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1122" msg="811;Town of Aden">Town of Aden - 26000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1123" msg="811;Talking Island Village">Talking Island Village - 20000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1124" msg="811;Dark Elf Village">Dark Elf Village - 13000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1125" msg="811;Elven Village">Elven Village - 16000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1126" msg="811;Dwarven Village">Dwarven Village - 32000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1127" msg="811;Orc Village">Orc Village - 17000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1128" msg="811;Stronghold I">Stronghold I - 2600 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1129" msg="811;Stronghold II">Stronghold II - 2200 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1130" msg="811;Stronghold III">Stronghold III - 3200 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1131" msg="811;Isle of Souls Harbor">Isle of Souls Harbor - 4300 Adena</Button>
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>&$556;<br><br>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 9000" msg="811;Gludin Arena">Gludin Arena - 1000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 9002" msg="811;Giran Arena">Giran Arena - 1000 Adena</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 9001" msg="811;Coliseum">Coliseum - 1000 Adena</Button>
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>&$556;<br><br>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 9900" msg="811;Gludin Arena">Gludin Arena - 1 Olympiad Token</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 9902" msg="811;Giran Arena">Giran Arena - 1 Olympiad Token</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 9901" msg="811;Coliseum">Coliseum - 1 Olympiad Token</Button>
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Gatekeeper Ragara:<br>
|
||||
The Stronghold teleport for beginners may only be used by <font color="LEVEL">characters lower than level 20</font>.
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>&$556;<br><br>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1132" msg="811;Stronghold I">Stronghold I</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1133" msg="811;Stronghold II">Stronghold II</Button>
|
||||
<Button ALIGN=LEFT ICON="TELEPORT" action="bypass -h npc_%objectId%_goto 1134" msg="811;Stronghold III">Stronghold III</Button>
|
||||
</body></html>
|
@ -1,6 +0,0 @@
|
||||
<html><body>Subclass:<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Subclass 1">Add subclass.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Subclass 2">Change subclass.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Subclass 3">Cancel current subclass and change to a new subclass.</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Quest SubclassCertification">Subclass skill certification.</Button>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Add a subclass:<br>
|
||||
Which of the following would you like to add as a subclass?<br>
|
||||
%list%
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Add a subclass:<br>
|
||||
Congratulations! You've added a new subclass. Open the Character Information window (ALT + T) to confirm.
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Subclass Change:<br>
|
||||
When you change your subclass, <font color="LEVEL">all positive effects currently being applied to your character will disappear, including energy buffs.</font><br><br>
|
||||
Please select your new subclass.<br>
|
||||
%list%
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Change sub class:<br>
|
||||
It is impossible to change sub classes when you have no sub class. First, add a sub class.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Subclass 1">Add subclass.</Button>
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Change Sub Class:<br>
|
||||
It is not possible for me to change your Sub Class, I'm afraid. Why don't you go find a Master of your Sub Class ?<br>
|
||||
All I can do for you is to teach you something new.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Subclass 1">Add Sub Class.</Button>
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Change Subclass:<br>
|
||||
Um, I don't think so. That is your current subclass... Select another subclass.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Subclass 2">Change subclasses.</Button>
|
||||
</body></html>
|
@ -1,8 +0,0 @@
|
||||
<html><body>Add Subclass:<br>
|
||||
You aren't eligible to add a subclass at this time.<br>
|
||||
To add a subclass, you must meet the following conditions:<br>
|
||||
First, you must obtain <font color="LEVEL">Mimir's Elixir</font>. To find out more about this quest, speak with Magister Ladd at the Ivory Tower of Oren.<br>
|
||||
There is one important thing. You must also have completed the "Fate's Whisper" quest from Maestro Reorin, who you can find in a hut east of Oren Castle Town.<br>
|
||||
Secondly, <font color="LEVEL">your current occupation must be the second or third job and all of your sub classes must be at Level 75 or above.</font> For example, if your current subclasses are Temple Knight and Silver Ranger, both Temple Knight and Silver Ranger must have reached 75 if you are to add a third subclass.<br>
|
||||
Thirdly, all characters are limited to <font color="LEVEL">three subclasses</font>. That is, if any character has already three subclasses, he or she cannot add a new one.
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Add Subclass:<br>
|
||||
Elves and Dark Elves may not use each other's subclasses.
|
||||
</body></html>
|
@ -1,8 +0,0 @@
|
||||
<html><body>Add Sub class:<br>
|
||||
Unfortunately, you are not eligible to discuss sub class.<br>
|
||||
In order to add a sub class, you must meet some necessary qualifications.<br>
|
||||
First, <font color="LEVEL">you should complete the "Seeds of Chaos" quest</font>. For more information about this quest, visit Hierarch Kekropus in Kamael Village.<br>
|
||||
You should complete the "Fate's Whisper" quest before embarking on the "Seeds of Chaos" quest, however. You can receive this quest from Maestro Reorin, who lives in a hut east of the Town of Oren.<br>
|
||||
Second, <font color="LEVEL">you should have a profession for your second or third transfer, and each level of sub class should be above 75</font>. If your profession is Berserker and you have Soultaker as sub class, for example, each of two must be above 75 in order to add a second sub class.<br>
|
||||
Third, <font color="LEVEL">if you are an Arbalester, Berserker and Soul Breaker, the road to a third sub class will be open</font>. Experience it for yourself!
|
||||
</body></html>
|
@ -1,11 +0,0 @@
|
||||
<html><body>Addition of a sub-class:<br>
|
||||
Which of the following sub classes would you like to change?<br>
|
||||
Sub-class 1<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Subclass 6 1">%sub1%</Button>
|
||||
Sub-class 2<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Subclass 6 2">%sub2%</Button>
|
||||
Sub-class 3<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Subclass 6 3">%sub3%</Button>
|
||||
<br><br>
|
||||
If you change a sub-class, you'll start at level 40 after the 2nd class transfer.
|
||||
</body></html>
|
@ -1,5 +0,0 @@
|
||||
<html><body>Addition of a sub-class:<br>
|
||||
Please choose a sub class to change to. If the one you are looking for is not here, please seek out the appropriate master for that class.<br>
|
||||
<font color="LEVEL">Warning!</font> All classes and skills for this class will be removed.<br><br>
|
||||
%list%
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Addition of a Sub-Class:<br>
|
||||
Which of the following sub-classes would you like to add as your current first sub-class?<br>
|
||||
%list%
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Addition of a Sub-Class:<br>
|
||||
Which of the following sub-classes would you like to add as your current second sub-class?<br>
|
||||
%list%
|
||||
</body></html>
|
@ -1,4 +0,0 @@
|
||||
<html><body>Addition of a Sub-Class:<br>
|
||||
Which of the following sub-classes would you like to add as your current third sub-class?<br>
|
||||
%list%
|
||||
</body></html>
|
@ -1,6 +0,0 @@
|
||||
<html><body>Addition of a sub-class:<br>
|
||||
Which of the following sub classes would you like to change?<br>
|
||||
%list%
|
||||
<br><br>
|
||||
If you change a sub-class, you'll start at level 40 after the 2nd class transfer.
|
||||
</body></html>
|
@ -1,8 +0,0 @@
|
||||
<html><body>Addition of a sub-class:<br>
|
||||
Which of the following sub classes would you like to change?<br>
|
||||
Sub-class 1<br>
|
||||
Sub-class 2<br>
|
||||
Sub-class 3<br>
|
||||
<br><br>
|
||||
If you change a sub-class, you'll start at level 40 after the 2nd class transfer.
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Change Subclass:<br>
|
||||
You've changed subclasses. Come see me if you wish to change subclasses again.
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Sub Class:<br>
|
||||
Only a Kamael may learn a Kamael skill, including the one beyond racial limits.
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Sub Class:<br>
|
||||
Unfortunately, Kamael cannot learn the skills of other races. You should find another teacher.
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Add Subclass:<br>
|
||||
That isn't possible while summoning a servitor or pet.
|
||||
</body></html>
|
@ -1,3 +0,0 @@
|
||||
<html><body>Sub Class:<br>
|
||||
It is imposible to change or add a sub class while you are in a transformed state.
|
||||
</body></html>
|
22
trunk/dist/game/data/multisell/2027.xml
vendored
Normal file
22
trunk/dist/game/data/multisell/2027.xml
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/multisell.xsd">
|
||||
<npcs>
|
||||
<npc>33491</npc> <!-- Raina -->
|
||||
</npcs>
|
||||
<item>
|
||||
<ingredient id="57" count="3997000"/> <!-- Adena -->
|
||||
<production id="36187" count="1" chance="100"/> <!-- Rising Shirt -->
|
||||
</item>
|
||||
<item>
|
||||
<ingredient id="57" count="11941000"/> <!-- Adena -->
|
||||
<production id="36188" count="1" chance="100"/> <!-- Blaze Shirt -->
|
||||
</item>
|
||||
<item>
|
||||
<ingredient id="57" count="1999000"/> <!-- Adena -->
|
||||
<production id="36189" count="1" chance="100"/> <!-- Rising Belt -->
|
||||
</item>
|
||||
<item>
|
||||
<ingredient id="57" count="5970000"/> <!-- Adena -->
|
||||
<production id="36190" count="1" chance="100"/> <!-- Blaze Belt -->
|
||||
</item>
|
||||
</list>
|
4104
trunk/dist/game/data/multisell/311262509.xml
vendored
4104
trunk/dist/game/data/multisell/311262509.xml
vendored
File diff suppressed because it is too large
Load Diff
8736
trunk/dist/game/data/multisell/779.xml
vendored
Normal file
8736
trunk/dist/game/data/multisell/779.xml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
14
trunk/dist/game/data/multisell/857.xml
vendored
Normal file
14
trunk/dist/game/data/multisell/857.xml
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xsd/multisell.xsd">
|
||||
<npcs>
|
||||
<npc>33491</npc> <!-- Raina -->
|
||||
</npcs>
|
||||
<item>
|
||||
<ingredient id="34741" count="10"/> <!-- XP Bottle -->
|
||||
<production id="34742" count="1" chance="100"/> <!-- Scroll: 500,000,000 XP -->
|
||||
</item>
|
||||
<item>
|
||||
<ingredient id="34741" count="1"/> <!-- XP Bottle -->
|
||||
<production id="34855" count="1" chance="100"/> <!-- Raina's Box -->
|
||||
</item>
|
||||
</list>
|
3
trunk/dist/game/data/scripts.cfg
vendored
3
trunk/dist/game/data/scripts.cfg
vendored
@ -55,6 +55,7 @@ ai/npc/Pantheon/Pantheon.java
|
||||
ai/npc/Proclaimer/Proclaimer.java
|
||||
ai/npc/Rignos/Rignos.java
|
||||
ai/npc/Rafforty/Rafforty.java
|
||||
ai/npc/Raina/Raina.java
|
||||
ai/npc/RemembranceTower/RemembranceTower.java
|
||||
ai/npc/Scarecrow/Scarecrow.java
|
||||
ai/npc/Sirra/Sirra.java
|
||||
@ -234,8 +235,6 @@ custom/events/TvT/TvTManager/TvTManager.java
|
||||
custom/events/Wedding/Wedding.java
|
||||
|
||||
# Vehicles
|
||||
vehicles/BoatTalkingGludin.java
|
||||
vehicles/BoatGiranTalking.java
|
||||
vehicles/BoatInnadrilTour.java
|
||||
vehicles/BoatGludinRune.java
|
||||
vehicles/BoatRunePrimeval.java
|
||||
|
@ -27,15 +27,12 @@ import quests.Q00020_BringUpWithLove.Q00020_BringUpWithLove;
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.ai.CtrlIntention;
|
||||
import com.l2jserver.gameserver.datatables.NpcData;
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
import com.l2jserver.gameserver.idfactory.IdFactory;
|
||||
import com.l2jserver.gameserver.model.L2Object;
|
||||
import com.l2jserver.gameserver.model.actor.L2Attackable;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2TamedBeastInstance;
|
||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
||||
import com.l2jserver.gameserver.model.holders.SkillHolder;
|
||||
import com.l2jserver.gameserver.model.skills.Skill;
|
||||
import com.l2jserver.gameserver.network.serverpackets.NpcInfo;
|
||||
@ -254,8 +251,7 @@ public final class BeastFarm extends AbstractNpcAI
|
||||
// player might have and initialize the Tamed Beast.
|
||||
if (Util.contains(TAMED_BEASTS, nextNpcId))
|
||||
{
|
||||
L2NpcTemplate template = NpcData.getInstance().getTemplate(nextNpcId);
|
||||
L2TamedBeastInstance nextNpc = new L2TamedBeastInstance(IdFactory.getInstance().getNextId(), template, player, food, npc.getX(), npc.getY(), npc.getZ(), true);
|
||||
final L2TamedBeastInstance nextNpc = new L2TamedBeastInstance(nextNpcId, player, food, npc.getX(), npc.getY(), npc.getZ(), true);
|
||||
|
||||
TamedBeast beast = TAMED_BEAST_DATA.get(getRandom(TAMED_BEAST_DATA.size()));
|
||||
String name = beast.getName();
|
||||
|
@ -174,7 +174,7 @@ public final class DragonValley extends AbstractNpcAI
|
||||
final int rnd = getRandom(3, 5);
|
||||
for (int i = 0; i < rnd; i++)
|
||||
{
|
||||
final L2Playable playable = isSummon ? attacker.getSummon() : attacker;
|
||||
final L2Playable playable = isSummon ? attacker.getServitors().values().stream().findFirst().orElse(attacker.getPet()) : attacker;
|
||||
final L2Npc minion = addSpawn(DRAKOS_ASSASSIN, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), true, 0, true);
|
||||
addAttackPlayerDesire(minion, playable);
|
||||
}
|
||||
@ -276,7 +276,7 @@ public final class DragonValley extends AbstractNpcAI
|
||||
if ((npc.getScriptValue() < 2) && (getRandom(100) < chance))
|
||||
{
|
||||
int val = npc.getScriptValue();
|
||||
final L2Playable attacker = isSummon ? player.getSummon() : player;
|
||||
final L2Playable attacker = isSummon ? player.getServitors().values().stream().findFirst().orElse(player.getPet()) : player;
|
||||
final L2Npc ghost1 = addSpawn(EXPLODING_ORC_GHOST, npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
|
||||
ghost1.getVariables().set("playable", attacker);
|
||||
addAttackPlayerDesire(ghost1, attacker);
|
||||
|
@ -63,7 +63,7 @@ public class FairyTrees extends AbstractNpcAI
|
||||
for (int i = 0; i < 20; i++)
|
||||
{
|
||||
final L2Npc guardian = addSpawn(SOUL_GUARDIAN, npc, false, 30000);
|
||||
final L2Playable attacker = isSummon ? killer.getSummon() : killer;
|
||||
final L2Playable attacker = isSummon ? killer.getServitors().values().stream().findFirst().orElse(killer.getPet()) : killer;
|
||||
addAttackPlayerDesire(guardian, attacker);
|
||||
if (getRandomBoolean())
|
||||
{
|
||||
|
@ -22,17 +22,15 @@ import java.util.Map;
|
||||
|
||||
import javolution.util.FastMap;
|
||||
import quests.Q00020_BringUpWithLove.Q00020_BringUpWithLove;
|
||||
import quests.Q00655_AGrandPlanForTamingWildBeasts.Q00655_AGrandPlanForTamingWildBeasts;
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.ai.CtrlIntention;
|
||||
import com.l2jserver.gameserver.datatables.NpcData;
|
||||
import com.l2jserver.gameserver.idfactory.IdFactory;
|
||||
import com.l2jserver.gameserver.model.L2Object;
|
||||
import com.l2jserver.gameserver.model.actor.L2Attackable;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2TamedBeastInstance;
|
||||
import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
|
||||
import com.l2jserver.gameserver.model.skills.Skill;
|
||||
import com.l2jserver.gameserver.network.NpcStringId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.NpcSay;
|
||||
@ -49,10 +47,20 @@ public final class FeedableBeasts extends AbstractNpcAI
|
||||
private static final int SKILL_GOLDEN_SPICE = 2188;
|
||||
private static final int SKILL_CRYSTAL_SPICE = 2189;
|
||||
private static final int FOODSKILLDIFF = GOLDEN_SPICE - SKILL_GOLDEN_SPICE;
|
||||
// Tamed Wild Beasts
|
||||
private static final int TRAINED_BUFFALO1 = 16013;
|
||||
private static final int TRAINED_BUFFALO2 = 16014;
|
||||
private static final int TRAINED_COUGAR1 = 16015;
|
||||
private static final int TRAINED_COUGAR2 = 16016;
|
||||
private static final int TRAINED_KOOKABURRA1 = 16017;
|
||||
private static final int TRAINED_KOOKABURRA2 = 16018;
|
||||
// private static final int TRAINED_TINY_BABY_BUFFALO = 16020; // TODO: Implement.
|
||||
// private static final int TRAINED_TINY_BABY_COUGAR = 16022; // TODO: Implement.
|
||||
// private static final int TRAINED_TINY_BABY_KOOKABURRA = 16024; // TODO: Implement.
|
||||
// @formatter:off
|
||||
private static final int[] TAMED_BEASTS =
|
||||
{
|
||||
16013, 16014, 16015, 16016, 16017, 16018
|
||||
TRAINED_BUFFALO1, TRAINED_BUFFALO2, TRAINED_COUGAR1, TRAINED_COUGAR2, TRAINED_KOOKABURRA1, TRAINED_KOOKABURRA2
|
||||
};
|
||||
// all mobs that can eat...
|
||||
private static final int[] FEEDABLE_BEASTS =
|
||||
@ -63,7 +71,7 @@ public final class FeedableBeasts extends AbstractNpcAI
|
||||
21481, 21482, 21483, 21484, 21485, 21486, 21487, 21488, 21489, 21490,
|
||||
21491, 21492, 21493, 21494, 21495, 21496, 21497, 21498, 21499, 21500,
|
||||
21501, 21502, 21503, 21504, 21505, 21506, 21507, 21824, 21825, 21826,
|
||||
21827, 21828, 21829, 16013, 16014, 16015, 16016, 16017, 16018
|
||||
21827, 21828, 21829, TRAINED_BUFFALO1, TRAINED_BUFFALO2, TRAINED_COUGAR1, TRAINED_COUGAR2, TRAINED_KOOKABURRA1, TRAINED_KOOKABURRA2
|
||||
};
|
||||
// @formatter:on
|
||||
|
||||
@ -186,8 +194,8 @@ public final class FeedableBeasts extends AbstractNpcAI
|
||||
final int[][] Kookabura_1_Gold_2 = {{ 21461, 21463 }};
|
||||
final int[][] Kookabura_1_Crystal_1 = {{ 21464, 21466 }};
|
||||
final int[][] Kookabura_1_Crystal_2 = {{ 21465, 21467 }};
|
||||
final int[][] Kookabura_2_1 = {{ 21468, 21824}, { 16017, 16018 }};
|
||||
final int[][] Kookabura_2_2 = {{ 21469, 21825}, { 16017, 16018 }};
|
||||
final int[][] Kookabura_2_1 = {{ 21468, 21824}, { TRAINED_KOOKABURRA1, TRAINED_KOOKABURRA2 }};
|
||||
final int[][] Kookabura_2_2 = {{ 21469, 21825}, { TRAINED_KOOKABURRA1, TRAINED_KOOKABURRA2 }};
|
||||
|
||||
final int[][] Buffalo_0_Gold = {{ 21471, 21472, 21473, 21474 }};
|
||||
final int[][] Buffalo_0_Crystal = {{ 21475, 21476, 21477, 21478 }};
|
||||
@ -195,17 +203,17 @@ public final class FeedableBeasts extends AbstractNpcAI
|
||||
final int[][] Buffalo_1_Gold_2 = {{ 21481, 21482 }};
|
||||
final int[][] Buffalo_1_Crystal_1 = {{ 21483, 21485 }};
|
||||
final int[][] Buffalo_1_Crystal_2 = {{ 21484, 21486 }};
|
||||
final int[][] Buffalo_2_1 = {{ 21487,21826}, {16013, 16014 }};
|
||||
final int[][] Buffalo_2_2 = {{ 21488,21827}, {16013, 16014 }};
|
||||
final int[][] Buffalo_2_1 = {{ 21487, 21826}, {TRAINED_BUFFALO1, TRAINED_BUFFALO2 }};
|
||||
final int[][] Buffalo_2_2 = {{ 21488, 21827}, {TRAINED_BUFFALO1, TRAINED_BUFFALO2 }};
|
||||
|
||||
final int[][] Cougar_0_Gold = {{ 21490, 21491, 21492, 21493 }};
|
||||
final int[][] Cougar_0_Crystal = {{ 21494,21495, 21496, 21497 }};
|
||||
final int[][] Cougar_0_Crystal = {{ 21494, 21495, 21496, 21497 }};
|
||||
final int[][] Cougar_1_Gold_1 = {{ 21498, 21500 }};
|
||||
final int[][] Cougar_1_Gold_2 = {{ 21499, 21501 }};
|
||||
final int[][] Cougar_1_Crystal_1 = {{ 21502,21504 }};
|
||||
final int[][] Cougar_1_Crystal_2 = {{ 21503,21505 }};
|
||||
final int[][] Cougar_2_1 = {{ 21506, 21828 }, { 16015,16016 }};
|
||||
final int[][] Cougar_2_2 = {{ 21507, 21829 }, { 16015,16016 }};
|
||||
final int[][] Cougar_1_Crystal_1 = {{ 21502, 21504 }};
|
||||
final int[][] Cougar_1_Crystal_2 = {{ 21503, 21505 }};
|
||||
final int[][] Cougar_2_1 = {{ 21506, 21828 }, { TRAINED_COUGAR1, TRAINED_COUGAR2 }};
|
||||
final int[][] Cougar_2_2 = {{ 21507, 21829 }, { TRAINED_COUGAR1, TRAINED_COUGAR2 }};
|
||||
//@formatter:on
|
||||
|
||||
// Alpen Kookabura
|
||||
@ -422,11 +430,13 @@ public final class FeedableBeasts extends AbstractNpcAI
|
||||
}
|
||||
}
|
||||
|
||||
L2NpcTemplate template = NpcData.getInstance().getTemplate(nextNpcId);
|
||||
L2TamedBeastInstance nextNpc = new L2TamedBeastInstance(IdFactory.getInstance().getNextId(), template, player, food - FOODSKILLDIFF, npc.getX(), npc.getY(), npc.getZ());
|
||||
final L2TamedBeastInstance nextNpc = new L2TamedBeastInstance(nextNpcId, player, food - FOODSKILLDIFF, npc.getX(), npc.getY(), npc.getZ());
|
||||
nextNpc.setRunning();
|
||||
Q00020_BringUpWithLove.checkJewelOfInnocence(player);
|
||||
|
||||
// Support for A Grand Plan for Taming Wild Beasts (655) quest.
|
||||
Q00655_AGrandPlanForTamingWildBeasts.reward(player, nextNpc);
|
||||
|
||||
// also, perform a rare random chat
|
||||
if (getRandom(20) == 0)
|
||||
{
|
||||
|
@ -20,7 +20,6 @@ package ai.group_template;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.GeoData;
|
||||
import com.l2jserver.gameserver.ai.CtrlIntention;
|
||||
import com.l2jserver.gameserver.model.Location;
|
||||
@ -67,22 +66,14 @@ public final class FleeMonsters extends AbstractNpcAI
|
||||
npc.disableCoreAI(true);
|
||||
npc.setRunning();
|
||||
|
||||
final L2Summon summon = isSummon ? attacker.getSummon() : null;
|
||||
final L2Summon summon = isSummon ? attacker.getServitors().values().stream().findFirst().orElse(attacker.getPet()) : null;
|
||||
final ILocational attackerLoc = summon == null ? attacker : summon;
|
||||
final double radians = Math.toRadians(Util.calculateAngleFrom(attackerLoc, npc));
|
||||
final int posX = (int) (npc.getX() + (FLEE_DISTANCE * Math.cos(radians)));
|
||||
final int posY = (int) (npc.getY() + (FLEE_DISTANCE * Math.sin(radians)));
|
||||
final int posZ = npc.getZ();
|
||||
|
||||
final Location destination;
|
||||
if (Config.GEODATA > 0)
|
||||
{
|
||||
destination = GeoData.getInstance().moveCheck(npc.getX(), npc.getY(), npc.getZ(), posX, posY, posZ, attacker.getInstanceId());
|
||||
}
|
||||
else
|
||||
{
|
||||
destination = new Location(posX, posY, posZ);
|
||||
}
|
||||
final Location destination = GeoData.getInstance().moveCheck(npc.getX(), npc.getY(), npc.getZ(), posX, posY, posZ, attacker.getInstanceId());
|
||||
npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, destination);
|
||||
return super.onAttack(npc, attacker, damage, isSummon);
|
||||
}
|
||||
|
@ -103,7 +103,7 @@ public final class PolymorphingOnAttack extends AbstractNpcAI
|
||||
}
|
||||
npc.deleteMe();
|
||||
final L2Attackable newNpc = (L2Attackable) addSpawn(tmp.get(0), npc.getX(), npc.getY(), npc.getZ() + 10, npc.getHeading(), false, 0, true);
|
||||
final L2Character originalAttacker = isSummon ? attacker.getSummon() : attacker;
|
||||
final L2Character originalAttacker = isSummon ? attacker.getServitors().values().stream().findFirst().orElse(attacker.getPet()) : attacker;
|
||||
newNpc.setRunning();
|
||||
newNpc.addDamageHate(originalAttacker, 0, 500);
|
||||
newNpc.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, originalAttacker);
|
||||
|
@ -326,7 +326,7 @@ public final class PrimevalIsle extends AbstractNpcAI
|
||||
if ((getRandom(100) <= 80) && npc.isScriptValue(0))
|
||||
{
|
||||
npc.setScriptValue(1);
|
||||
final L2Playable playable = isSummon ? attacker.getSummon() : attacker;
|
||||
final L2Playable playable = isSummon ? attacker.getServitors().values().stream().findFirst().orElse(attacker.getPet()) : attacker;
|
||||
for (L2Character characters : npc.getKnownList().getKnownCharactersInRadius(500))
|
||||
{
|
||||
if ((characters != null) && (characters.isAttackable()) && (getRandomBoolean()))
|
||||
|
@ -20,7 +20,7 @@ package ai.group_template;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.datatables.NpcData;
|
||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.L2Playable;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
@ -95,7 +95,7 @@ public final class RangeGuard extends AbstractNpcAI
|
||||
@Override
|
||||
public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon, Skill skill)
|
||||
{
|
||||
final L2Playable playable = (isSummon) ? attacker.getSummon() : attacker;
|
||||
final L2Playable playable = (isSummon) ? attacker.getServitors().values().stream().findFirst().orElse(attacker.getPet()) : attacker;
|
||||
final int longRangeGuardRate = npc.getTemplate().getParameters().getInt("LongRangeGuardRate");
|
||||
final double distance = Util.calculateDistance(npc, playable, true, false);
|
||||
|
||||
|
@ -27,8 +27,8 @@ import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||
import com.l2jserver.gameserver.ai.CtrlIntention;
|
||||
import com.l2jserver.gameserver.cache.HtmCache;
|
||||
import com.l2jserver.gameserver.datatables.DoorTable;
|
||||
import com.l2jserver.gameserver.datatables.NpcData;
|
||||
import com.l2jserver.gameserver.data.xml.impl.DoorData;
|
||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
||||
import com.l2jserver.gameserver.instancemanager.GrandBossManager;
|
||||
import com.l2jserver.gameserver.instancemanager.ZoneManager;
|
||||
import com.l2jserver.gameserver.model.L2Object;
|
||||
@ -109,7 +109,7 @@ public final class Beleth extends AbstractNpcAI
|
||||
{
|
||||
GrandBossManager.getInstance().setBossStatus(29118, 0);
|
||||
}
|
||||
DoorTable.getInstance().getDoor(20240001).openMe();
|
||||
DoorData.getInstance().getDoor(20240001).openMe();
|
||||
}
|
||||
|
||||
protected static L2Npc spawn(int npcId, Location loc)
|
||||
@ -143,7 +143,7 @@ public final class Beleth extends AbstractNpcAI
|
||||
public void run()
|
||||
{
|
||||
GrandBossManager.getInstance().setBossStatus(29118, 0);
|
||||
DoorTable.getInstance().getDoor(20240001).openMe();
|
||||
DoorData.getInstance().getDoor(20240001).openMe();
|
||||
}
|
||||
}
|
||||
|
||||
@ -221,7 +221,7 @@ public final class Beleth extends AbstractNpcAI
|
||||
ThreadPoolManager.getInstance().scheduleGeneral(new Spawn(6), 2500);
|
||||
break;
|
||||
case 6:
|
||||
L2DoorInstance door = DoorTable.getInstance().getDoor(20240001);
|
||||
L2DoorInstance door = DoorData.getInstance().getDoor(20240001);
|
||||
door.closeMe();
|
||||
ZONE.broadcastPacket(new StaticObject(door, false));
|
||||
ZONE.broadcastPacket(new DoorStatusUpdate(door));
|
||||
@ -368,11 +368,11 @@ public final class Beleth extends AbstractNpcAI
|
||||
case 32:
|
||||
ZONE.broadcastPacket(new SpecialCamera(CAMERA2, 800, 180, 0, 0, 4000, 0, 10, 1, 0, 0));
|
||||
ZONE.broadcastPacket(new SpecialCamera(CAMERA2, 800, 180, 0, 0, 4000, 0, 10, 1, 0, 0));
|
||||
L2DoorInstance door2 = DoorTable.getInstance().getDoor(20240002);
|
||||
L2DoorInstance door2 = DoorData.getInstance().getDoor(20240002);
|
||||
door2.openMe();
|
||||
ZONE.broadcastPacket(new StaticObject(door2, false));
|
||||
ZONE.broadcastPacket(new DoorStatusUpdate(door2));
|
||||
DoorTable.getInstance().getDoor(20240003).openMe();
|
||||
DoorData.getInstance().getDoor(20240003).openMe();
|
||||
ThreadPoolManager.getInstance().scheduleGeneral(new Spawn(33), 4000);
|
||||
break;
|
||||
case 33:
|
||||
|
@ -26,7 +26,7 @@ import javolution.util.FastSet;
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.ai.CtrlIntention;
|
||||
import com.l2jserver.gameserver.datatables.NpcData;
|
||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
||||
import com.l2jserver.gameserver.model.actor.L2Attackable;
|
||||
import com.l2jserver.gameserver.model.actor.L2Character;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
@ -153,7 +153,7 @@ public final class DarkWaterDragon extends AbstractNpcAI
|
||||
{
|
||||
MY_TRACKING_SET.add(npcObjId);
|
||||
// Spawn first 5 shades on first attack on Dark Water Dragon
|
||||
L2Character originalAttacker = isSummon ? attacker.getSummon() : attacker;
|
||||
L2Character originalAttacker = isSummon ? attacker.getServitors().values().stream().findFirst().orElse(attacker.getPet()) : attacker;
|
||||
spawnShade(originalAttacker, SHADE1, npc.getX() + 100, npc.getY() + 100, npc.getZ());
|
||||
spawnShade(originalAttacker, SHADE2, npc.getX() + 100, npc.getY() - 100, npc.getZ());
|
||||
spawnShade(originalAttacker, SHADE1, npc.getX() - 100, npc.getY() + 100, npc.getZ());
|
||||
@ -164,7 +164,7 @@ public final class DarkWaterDragon extends AbstractNpcAI
|
||||
{
|
||||
SECOND_SPAWN.add(npcObjId);
|
||||
// Spawn second 5 shades on half hp of on Dark Water Dragon
|
||||
L2Character originalAttacker = isSummon ? attacker.getSummon() : attacker;
|
||||
L2Character originalAttacker = isSummon ? attacker.getServitors().values().stream().findFirst().orElse(attacker.getPet()) : attacker;
|
||||
spawnShade(originalAttacker, SHADE2, npc.getX() + 100, npc.getY() + 100, npc.getZ());
|
||||
spawnShade(originalAttacker, SHADE1, npc.getX() + 100, npc.getY() - 100, npc.getZ());
|
||||
spawnShade(originalAttacker, SHADE2, npc.getX() - 100, npc.getY() + 100, npc.getZ());
|
||||
|
@ -49,14 +49,14 @@ public final class DivineBeast extends AbstractNpcAI
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
if ((player == null) || !player.hasServitor())
|
||||
if ((player == null) || !player.hasServitors())
|
||||
{
|
||||
cancelQuestTimer(event, npc, player);
|
||||
}
|
||||
else if (player.getTransformationId() != TRANSFORMATION_ID)
|
||||
{
|
||||
cancelQuestTimer(event, npc, player);
|
||||
player.getSummon().unSummon(player);
|
||||
player.getServitors().values().forEach(summon -> summon.unSummon(player));
|
||||
}
|
||||
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
|
@ -245,7 +245,7 @@ public final class Orfen extends AbstractNpcAI
|
||||
{
|
||||
if (npc.getId() == ORFEN)
|
||||
{
|
||||
L2Character originalCaster = isSummon ? caster.getSummon() : caster;
|
||||
L2Character originalCaster = isSummon ? caster.getServitors().values().stream().findFirst().orElse(caster.getPet()) : caster;
|
||||
if ((skill.getEffectPoint() > 0) && (getRandom(5) == 0) && npc.isInsideRadius(originalCaster, 1000, false, false))
|
||||
{
|
||||
NpcSay packet = new NpcSay(npc.getObjectId(), Say2.NPC_ALL, npc.getId(), TEXT[getRandom(4)]);
|
||||
|
@ -282,7 +282,7 @@ public final class QueenAnt extends AbstractNpcAI
|
||||
if (isSummon)
|
||||
{
|
||||
isMage = false;
|
||||
character = player.getSummon();
|
||||
character = player.getServitors().values().stream().findFirst().orElse(player.getPet());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -53,12 +53,12 @@ public final class SinEater extends AbstractNpcAI
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
if (event.equals("TALK") && (player != null) && (player.getSummon() != null))
|
||||
if (event.equals("TALK") && (player != null) && (player.getPet() != null))
|
||||
{
|
||||
if (getRandom(100) < 30)
|
||||
{
|
||||
final int random = getRandom(100);
|
||||
final L2Summon summon = player.getSummon();
|
||||
final L2Summon summon = player.getPet();
|
||||
|
||||
if (random < 20)
|
||||
{
|
||||
|
@ -45,32 +45,22 @@ public final class Acateo extends AbstractNpcAI
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
if (event.equals("give_circlet"))
|
||||
{
|
||||
case "give_circlet":
|
||||
if (hasQuestItems(player, ACADEMY_CIRCLET))
|
||||
{
|
||||
if (hasQuestItems(player, ACADEMY_CIRCLET))
|
||||
{
|
||||
htmltext = "33905-3.html";
|
||||
break;
|
||||
}
|
||||
giveItems(player, ACADEMY_CIRCLET, 1);
|
||||
htmltext = "33905-2.html";
|
||||
break;
|
||||
return "33905-3.html";
|
||||
}
|
||||
giveItems(player, ACADEMY_CIRCLET, 1);
|
||||
return "33905-2.html";
|
||||
}
|
||||
return htmltext;
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onFirstTalk(L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
if (player.isAcademyMember())
|
||||
{
|
||||
return "33905-1.html";
|
||||
}
|
||||
return "33905.html";
|
||||
return player.isAcademyMember() ? "33905-1.html" : "33905.html";
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
|
@ -22,7 +22,7 @@ import java.util.List;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.datatables.SkillTreesData;
|
||||
import com.l2jserver.gameserver.data.xml.impl.SkillTreesData;
|
||||
import com.l2jserver.gameserver.enums.Race;
|
||||
import com.l2jserver.gameserver.model.L2SkillLearn;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
|
@ -31,7 +31,7 @@ import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
* Arena Manager AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public class ArenaManager extends AbstractNpcAI
|
||||
public final class ArenaManager extends AbstractNpcAI
|
||||
{
|
||||
// NPCs
|
||||
private static final int[] ARENA_MANAGER =
|
||||
@ -131,11 +131,11 @@ public class ArenaManager extends AbstractNpcAI
|
||||
break;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return super.onAdvEvent(event, npc, player);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new ArenaManager();
|
||||
}
|
||||
}
|
||||
}
|
@ -23,9 +23,9 @@ import java.util.List;
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.datatables.MultisellData;
|
||||
import com.l2jserver.gameserver.data.xml.impl.MultisellData;
|
||||
import com.l2jserver.gameserver.data.xml.impl.SkillTreesData;
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
import com.l2jserver.gameserver.datatables.SkillTreesData;
|
||||
import com.l2jserver.gameserver.instancemanager.QuestManager;
|
||||
import com.l2jserver.gameserver.model.L2SkillLearn;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
@ -48,7 +48,7 @@ import custom.Validators.SubClassSkills;
|
||||
* Transformation skill learning and transformation scroll sell.
|
||||
* @author Zoey76
|
||||
*/
|
||||
public class AvantGarde extends AbstractNpcAI
|
||||
public final class AvantGarde extends AbstractNpcAI
|
||||
{
|
||||
// NPC
|
||||
private static final int AVANT_GARDE = 32323;
|
||||
|
@ -22,6 +22,7 @@ import quests.Q10338_SeizeYourDestiny.Q10338_SeizeYourDestiny;
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||
import com.l2jserver.gameserver.data.xml.impl.SkillTreesData;
|
||||
import com.l2jserver.gameserver.enums.CategoryType;
|
||||
import com.l2jserver.gameserver.enums.UserInfoType;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
@ -36,6 +37,7 @@ import com.l2jserver.gameserver.model.events.impl.character.player.OnPlayerChang
|
||||
import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
|
||||
import com.l2jserver.gameserver.model.quest.QuestState;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.AcquireSkillList;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExChangeToAwakenedClass;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExShowUsm;
|
||||
import com.l2jserver.gameserver.network.serverpackets.SocialAction;
|
||||
@ -238,45 +240,47 @@ public final class AwakeningMaster extends AbstractNpcAI
|
||||
|
||||
int socialId = 21; // Sigel
|
||||
int itemId = ABELIUS_POWER; // Sigel
|
||||
if (player.isInCategory(CategoryType.TYRR_CANDIDATE))
|
||||
if (player.isInCategory(CategoryType.TYRR_GROUP))
|
||||
{
|
||||
socialId = 22;
|
||||
itemId = SAPYROS_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.OTHELL_CANDIDATE))
|
||||
else if (player.isInCategory(CategoryType.OTHELL_GROUP))
|
||||
{
|
||||
socialId = 23;
|
||||
itemId = ASHAGEN_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.YUL_CANDIDATE))
|
||||
else if (player.isInCategory(CategoryType.YUL_GROUP))
|
||||
{
|
||||
socialId = 24;
|
||||
itemId = CRANIGG_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.FEOH_CANDIDATE))
|
||||
else if (player.isInCategory(CategoryType.FEOH_GROUP))
|
||||
{
|
||||
socialId = 25;
|
||||
itemId = SOLTKREIG_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.ISS_CANDIDATE))
|
||||
else if (player.isInCategory(CategoryType.ISS_GROUP))
|
||||
{
|
||||
socialId = 26;
|
||||
itemId = NAVIAROPE_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.WYNN_CANDIDATE))
|
||||
else if (player.isInCategory(CategoryType.WYNN_GROUP))
|
||||
{
|
||||
socialId = 27;
|
||||
itemId = LEISTER_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.AEORE_CANDIDATE))
|
||||
else if (player.isInCategory(CategoryType.AEORE_GROUP))
|
||||
{
|
||||
socialId = 28;
|
||||
itemId = LAKCIS_POWER;
|
||||
}
|
||||
player.broadcastPacket(new SocialAction(player.getObjectId(), socialId));
|
||||
player.addItem("Awakening", itemId, 1, player, true);
|
||||
giveItems(player, itemId, 1);
|
||||
|
||||
// TODO: Remove skill which does not level up later are removed
|
||||
SkillTreesData.getInstance().cleanSkillUponAwakening(player);
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendSkillList();
|
||||
}
|
||||
|
||||
ThreadPoolManager.getInstance().scheduleGeneral(() ->
|
||||
|
@ -28,8 +28,8 @@ import java.util.StringTokenizer;
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.datatables.ClanTable;
|
||||
import com.l2jserver.gameserver.datatables.TeleportLocationTable;
|
||||
import com.l2jserver.gameserver.data.sql.impl.ClanTable;
|
||||
import com.l2jserver.gameserver.data.sql.impl.TeleportLocationTable;
|
||||
import com.l2jserver.gameserver.enums.CastleSide;
|
||||
import com.l2jserver.gameserver.instancemanager.CastleManorManager;
|
||||
import com.l2jserver.gameserver.instancemanager.FortManager;
|
||||
|
@ -312,4 +312,4 @@ public final class CastleCourtMagician extends AbstractNpcAI
|
||||
{
|
||||
new CastleCourtMagician();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -30,8 +30,8 @@ import org.w3c.dom.Node;
|
||||
|
||||
import com.l2jserver.gameserver.GeoData;
|
||||
import com.l2jserver.gameserver.ThreadPoolManager;
|
||||
import com.l2jserver.gameserver.datatables.NpcData;
|
||||
import com.l2jserver.gameserver.engines.DocumentParser;
|
||||
import com.l2jserver.gameserver.data.xml.IXmlReader;
|
||||
import com.l2jserver.gameserver.data.xml.impl.NpcData;
|
||||
import com.l2jserver.gameserver.model.L2Spawn;
|
||||
import com.l2jserver.gameserver.model.L2Territory;
|
||||
import com.l2jserver.gameserver.model.Location;
|
||||
@ -42,7 +42,7 @@ import com.l2jserver.util.Rnd;
|
||||
* Tar Beetle zone spawn
|
||||
* @author malyelfik
|
||||
*/
|
||||
public class TarBeetleSpawn implements DocumentParser
|
||||
public class TarBeetleSpawn implements IXmlReader
|
||||
{
|
||||
private final List<SpawnZone> zones = new ArrayList<>();
|
||||
private ScheduledFuture<?> spawnTask;
|
||||
|
@ -1,6 +1,6 @@
|
||||
<html><body>Blacksmith of Mammon:<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 778">Craft R-Grade Dual Weapon</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Quest Mammons 31126-01.html">Bestow Special Ability on R-Grade Weapon</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_exc_multisell 779">Bestow Special Ability on R-Grade Weapon</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Quest Mammons 31126-01.html">Change Special Ability of R-Grade Weapon</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_Quest Mammons 31126-01.html">Change Special Ability of R95-Grade Weapon</Button>
|
||||
</body></html>
|
@ -29,6 +29,8 @@ import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.model.Location;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.network.NpcStringId;
|
||||
import com.l2jserver.gameserver.network.clientpackets.Say2;
|
||||
import com.l2jserver.gameserver.util.Broadcast;
|
||||
|
||||
/**
|
||||
@ -116,6 +118,11 @@ public final class Mammons extends AbstractNpcAI
|
||||
final L2Npc priest = addSpawn(MAMMONS[2], PRIEST_LOC[town]);
|
||||
_mammons.addAll(Arrays.asList(blacksmith, merchant, priest));
|
||||
|
||||
if (blacksmith != null)
|
||||
{
|
||||
broadcastNpcSay(blacksmith, Say2.NPC_ALL, NpcStringId.I_HAVE_SOME_EXCELLENT_WEAPONS_TO_SHOW_YOU);
|
||||
}
|
||||
|
||||
if (Config.ANNOUNCE_MAMMON_SPAWN)
|
||||
{
|
||||
Broadcast.toAllOnlinePlayers("Mammon's has been spawned in " + TOWN_NAME[town] + ".", false);
|
||||
|
@ -29,7 +29,7 @@ import org.w3c.dom.Node;
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.engines.DocumentParser;
|
||||
import com.l2jserver.gameserver.data.xml.IXmlReader;
|
||||
import com.l2jserver.gameserver.enums.CategoryType;
|
||||
import com.l2jserver.gameserver.enums.MailType;
|
||||
import com.l2jserver.gameserver.instancemanager.MailManager;
|
||||
@ -62,21 +62,18 @@ import com.l2jserver.gameserver.util.Util;
|
||||
* Mentor Guide.
|
||||
* @author Gnacik, UnAfraid
|
||||
*/
|
||||
public class MentorGuide extends AbstractNpcAI implements DocumentParser
|
||||
public class MentorGuide extends AbstractNpcAI implements IXmlReader
|
||||
{
|
||||
// NPCs
|
||||
private static final int MENTOR_GUIDE = 33587;
|
||||
|
||||
// ITEMs
|
||||
// Items
|
||||
private static final int MENTEE_CERT = 33800;
|
||||
private static final int MENTEE_MARK = 33804;
|
||||
private static final int MENTEE_HEADPHONE = 34759;
|
||||
private static final int DIPLOMA = 33805;
|
||||
|
||||
// Misc
|
||||
private static final int MAX_LEVEL = 85;
|
||||
|
||||
// SKILLs
|
||||
// Skills
|
||||
private final static SkillHolder[] MENTEE_BUFFS =
|
||||
{
|
||||
new SkillHolder(9227, 1), // Mentor's Poem of Horn
|
||||
@ -95,19 +92,21 @@ public class MentorGuide extends AbstractNpcAI implements DocumentParser
|
||||
|
||||
private static final SkillHolder MENTEE_MENTOR_SUMMON = new SkillHolder(9379, 1); // Mentee's Mentor Summon
|
||||
|
||||
// Misc
|
||||
private static final int MAX_LEVEL = 85;
|
||||
private static final String LEVEL_UP_TITLE = "Mentee coin from Mentee leveling";
|
||||
private static final String LEVEL_UP_BODY = "Your mentee %s has reached level %d, so you are receiving some Mentee Coin. After Mentee Coin has successfully been removed and placed into your inventory please be sure to delete this letter. If your mailbox is full when any future letters are sent to you cannot be delivered and you will not receive these items.";
|
||||
|
||||
private static final String MENTEE_ADDED_TITLE = "Congratulations on becoming a mentee.";
|
||||
private static final String MENTEE_ADDED_BODY = "Greetings. This is the Mentor Guide.\n\nYou will experience a world of unlimited adventures with your mentor, Exciting, isn't it?\n\nWhen you graduate from mentee status (upon awakening at level 85), you will receive a Mentee Certificate. If you bring it to me, I will give you a Diploma that you can exchange for R-grade equipment.";
|
||||
|
||||
private static final String MENTEE_GRADUATE_TITLE = "Congratulations on your graduation";
|
||||
private static final String MENTEE_GRADUATE_BODY = "Greetings! This is the Mentor Guide.\nCongratulations! Did you enjoy the time with a mentor? Here is a Mentee Certificate for graduating.\n\nFind me in town, and I'll give you a Diploma if you show me your Mentee Certificatee. You'll also get a small graduation gift!\n\nNow, on to your next Adventure!";
|
||||
static final Map<Integer, Integer> MENTEE_COINS = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void load()
|
||||
{
|
||||
parseDatapackFile("config/MentorCoins.xml");
|
||||
LOGGER.log(Level.INFO, MentorGuide.class.getSimpleName() + ": Loaded: " + MENTEE_COINS.size() + " mentee coins");
|
||||
LOGGER.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + MENTEE_COINS.size() + " mentee coins");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -137,6 +136,8 @@ public class MentorGuide extends AbstractNpcAI implements DocumentParser
|
||||
addFirstTalkId(MENTOR_GUIDE);
|
||||
addStartNpc(MENTOR_GUIDE);
|
||||
addTalkId(MENTOR_GUIDE);
|
||||
|
||||
load();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -420,8 +421,7 @@ public class MentorGuide extends AbstractNpcAI implements DocumentParser
|
||||
|
||||
player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOUR_MENTOR_MENTEE_RELATIONSHIP_WITH_YOUR_MENTOR_S1_HAS_ENDED_AS_YOU_ARE_AN_AWAKENED_CHARACTER_OF_LV_85_OR_ABOVE_YOU_CAN_NO_LONGER_BE_PAIRED_WITH_A_MENTOR).addPcName(player));
|
||||
|
||||
// TODO: Find correct message!
|
||||
sendMail(player, MENTEE_ADDED_TITLE, MENTEE_ADDED_BODY, MENTEE_CERT, 1);
|
||||
sendMail(player, MENTEE_GRADUATE_TITLE, MENTEE_GRADUATE_BODY, MENTEE_CERT, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,12 +1,8 @@
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
Monk of Chaos:<br>
|
||||
The skills that were once given to each race to balance their power have been taken back. Through the will of Chaos, you can learn the skills of other races as long as you have a Chaos Pomander.<br>
|
||||
Chaos Pomander is a crystal of power that can combine anything. If you have one, you have been selected by my master to work for a balanced world.<br>
|
||||
Are you ready for that world? If so, select the Revelation of Chaos, and through it a power appropriate for you.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos LearnRevelationSkills">Receive the Revelation of Chaos.</Button><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos CancelRevelationSkills">Reset the Revelation skill.(100,000,000 Adena)</Button><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos 33880-2.html">"Who are Monks of Chaos?"</Button><br>
|
||||
</body>
|
||||
</html>
|
||||
<html><body>Monk of Chaos:<br>
|
||||
The skills that were once given to each race to balance their power have been taken back. Through the will of Chaos, you can learn the skills of other races as long as you have a Chaos Pomander.<br>
|
||||
Chaos Pomander is a crystal of power that can combine anything. If you have one, you have been selected by my master to work for a balanced world.<br>
|
||||
Are you ready for that world? If so, select the Revelation of Chaos, and through it a power appropriate for you.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos LearnRevelationSkills">Receive the Revelation of Chaos.</Button><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos CancelRevelationSkills">Reset the Revelation skill.(100,000,000 Adena)</Button><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos 33880-2.html">"Who are Monks of Chaos?"</Button><br>
|
||||
</body></html>
|
@ -1,10 +1,6 @@
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
Monk of Chaos:<br>
|
||||
We, the Monks of Chaos, serve the balance.<br>
|
||||
You may think chaos is a destructive force, but nothing could be further from the truth.
|
||||
<font color="LEVEL">Chaos</font> seeks to balance light and darkness by reverting them to the original energies.<br>
|
||||
We who respect his will are the only ones truly free to act on it.
|
||||
</body>
|
||||
</html>
|
||||
<html><body>Monk of Chaos:<br>
|
||||
We, the Monks of Chaos, serve the balance.<br>
|
||||
You may think chaos is a destructive force, but nothing could be further from the truth.
|
||||
<font color="LEVEL">Chaos</font> seeks to balance light and darkness by reverting them to the original energies.<br>
|
||||
We who respect his will are the only ones truly free to act on it.
|
||||
</body></html>
|
@ -1,8 +1,6 @@
|
||||
<html>
|
||||
<head></head>
|
||||
<body>Monk of Chaos:<br>
|
||||
Nothing could be created or destroyed without chaos. It is the beginning and the end of all things.<br>
|
||||
We, the Monks of Chaos, understand this. It is the law of the universe.<br>
|
||||
If you wish, we will reveal our master's will to you.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos 33880-1.html">"So tell me about this Revelation of Chaos."</Button></body>
|
||||
</html>
|
||||
<html><body>Monk of Chaos:<br>
|
||||
Nothing could be created or destroyed without chaos. It is the beginning and the end of all things.<br>
|
||||
We, the Monks of Chaos, understand this. It is the law of the universe.<br>
|
||||
If you wish, we will reveal our master's will to you.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest MonkOfChaos 33880-1.html">"So tell me about this Revelation of Chaos."</Button>
|
||||
</body></html>
|
@ -22,8 +22,8 @@ import java.util.List;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.gameserver.data.xml.impl.SkillTreesData;
|
||||
import com.l2jserver.gameserver.datatables.SkillData;
|
||||
import com.l2jserver.gameserver.datatables.SkillTreesData;
|
||||
import com.l2jserver.gameserver.enums.CategoryType;
|
||||
import com.l2jserver.gameserver.enums.SubclassType;
|
||||
import com.l2jserver.gameserver.model.L2SkillLearn;
|
||||
@ -35,9 +35,10 @@ import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.ExAcquirableSkillListByClass;
|
||||
|
||||
/**
|
||||
* Monk of Chaos AI.
|
||||
* @author Sdw
|
||||
*/
|
||||
public class MonkOfChaos extends AbstractNpcAI
|
||||
public final class MonkOfChaos extends AbstractNpcAI
|
||||
{
|
||||
private static final int MONK_OF_CHAOS = 33880;
|
||||
private static final int MIN_LEVEL = 85;
|
||||
@ -177,4 +178,4 @@ public class MonkOfChaos extends AbstractNpcAI
|
||||
{
|
||||
new MonkOfChaos();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,7 +1,3 @@
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
Monk of Chaos:<br>
|
||||
Heh! The Revelation of Chaos has been canceled. But you can pass it again when you come back to your senses.
|
||||
</body>
|
||||
</html>
|
||||
<html><body>Monk of Chaos:<br>
|
||||
Heh! The Revelation of Chaos has been canceled. But you can pass it again when you come back to your senses.
|
||||
</body></html>
|
@ -1,8 +1,4 @@
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
Monk of Chaos:<br>
|
||||
You do not have enough <font color="level">Adena</font> to cancel the Revelation of Chaos.<br>
|
||||
Come back another time.
|
||||
</body>
|
||||
</html>
|
||||
<html><body>Monk of Chaos:<br>
|
||||
You do not have enough <font color="level">Adena</font> to cancel the Revelation of Chaos.<br>
|
||||
Come back another time.
|
||||
</body></html>
|
@ -1,8 +1,4 @@
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
Monk of Chaos:<br>
|
||||
You cannot cancel the Revelation of Chaos, because you have not passed it.<br>
|
||||
Come back another time.
|
||||
</body>
|
||||
</html>
|
||||
<html><body>Monk of Chaos:<br>
|
||||
You cannot cancel the Revelation of Chaos, because you have not passed it.<br>
|
||||
Come back another time.
|
||||
</body></html>
|
@ -1,9 +1,5 @@
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
Monk of Chaos:<br>
|
||||
You are not strong enough to fulfill the Revelation of Chaos.<br>
|
||||
Come back another time.<br>
|
||||
(Available only to Awaken characters level 85 or above.)
|
||||
</body>
|
||||
</html>
|
||||
<html><body>Monk of Chaos:<br>
|
||||
You are not strong enough to fulfill the Revelation of Chaos.<br>
|
||||
Come back another time.<br>
|
||||
(Available only to Awaken characters level 85 or above.)
|
||||
</body></html>
|
@ -1,9 +1,5 @@
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
Monk of Chaos:<br>
|
||||
The skills that weYou are not strong enough to fulfill the Revelation of Chaos.<br>
|
||||
Come back another time. <br>
|
||||
(Not available on subclasses.)
|
||||
</body>
|
||||
</html>
|
||||
<html><body>Monk of Chaos:<br>
|
||||
The skills that weYou are not strong enough to fulfill the Revelation of Chaos.<br>
|
||||
Come back another time.<br>
|
||||
(Not available on subclasses.)
|
||||
</body></html>
|
@ -28,13 +28,13 @@ import org.w3c.dom.Document;
|
||||
import org.w3c.dom.NamedNodeMap;
|
||||
import org.w3c.dom.Node;
|
||||
|
||||
import com.l2jserver.gameserver.engines.DocumentParser;
|
||||
import com.l2jserver.gameserver.data.xml.IXmlReader;
|
||||
import com.l2jserver.gameserver.model.StatsSet;
|
||||
|
||||
/**
|
||||
* @author UnAfraid
|
||||
*/
|
||||
public class NpcBuffersData implements DocumentParser
|
||||
public class NpcBuffersData implements IXmlReader
|
||||
{
|
||||
private final Map<Integer, NpcBufferData> _npcBuffers = new HashMap<>();
|
||||
|
||||
|
@ -65,7 +65,7 @@ public final class Proclaimer extends AbstractNpcAI
|
||||
String htmltext = null;
|
||||
if (!player.isOnDarkSide())
|
||||
{
|
||||
player.sendPacket(new NpcSay(npc.getObjectId(), Say2.TELL, npc.getId(), NpcStringId.WHEN_THE_WORLD_PLUNGES_INTO_CHAOS_WE_WILL_NEED_YOUR_HELP_WE_HOPE_YOU_JOIN_US_WHEN_THE_TIME_COMES));
|
||||
player.sendPacket(new NpcSay(npc.getObjectId(), Say2.NPC_TELL, npc.getId(), NpcStringId.WHEN_THE_WORLD_PLUNGES_INTO_CHAOS_WE_WILL_NEED_YOUR_HELP_WE_HOPE_YOU_JOIN_US_WHEN_THE_TIME_COMES));
|
||||
|
||||
final L2Clan ownerClan = npc.getCastle().getOwner();
|
||||
if (ownerClan != null)
|
||||
|
9
trunk/dist/game/data/scripts/ai/npc/Raina/33491-01.html
vendored
Normal file
9
trunk/dist/game/data/scripts/ai/npc/Raina/33491-01.html
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
<html><head><body>Subclass/Dual Class Master Raina:<br>
|
||||
So you need to <font color="LEVEL">create/reset a subclass</font>?<br>
|
||||
<font color="af9878">A new class subclass starts at </font><font color="LEVEL">level 40</font><font color="af9878">.<br>
|
||||
</font><Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina addSubclass">"I'll add a new subclass (create new)."</Button><br>
|
||||
(<font color="af9878">Change dual classes and your level will be </font><font color="LEVEL">reset to level 40</font><font color="af9878">.)<br>
|
||||
</font><Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina removeSubclass">"I'll eliminate a subclass and add another one (reset)."</Button><br>
|
||||
<font color="LEVEL">Maintain your level while changing classes</font><font color="af9878">.<br>
|
||||
</font><Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina changeSubclass">"I'll change my subclass (requires Subclass Change Certificate)."</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data/scripts/ai/npc/Raina/33491-02.html
vendored
Normal file
7
trunk/dist/game/data/scripts/ai/npc/Raina/33491-02.html
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br>
|
||||
I heard that Ertheia are curious people. But a gem that absorbs power... I still can't help thinking that it's really dangerous. You could have died. <br>
|
||||
But thanks to your efforts, even Ertheia can use the power of the giants now.<br>
|
||||
But because you're different than the race from the Material Realm, your power will not merge with the giants'. Because they do not mingle, you will not be able to use your power while using the giants' power. Of course, you can use your original power instead of the giants' power anytime you wish.<br>
|
||||
Now! Would you like to use the power of the giants?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina ertheiaDualClass">"Yes, on with a dual class!"</Button>
|
||||
</body></html>
|
7
trunk/dist/game/data/scripts/ai/npc/Raina/33491-03.html
vendored
Normal file
7
trunk/dist/game/data/scripts/ai/npc/Raina/33491-03.html
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br>
|
||||
Hello!<br1>
|
||||
I will be assisting you with <font color="LEVEL">reawakening an Awakened dual class</font>.<br1>
|
||||
To reawaken a dual class, you need to have an Awakened dual class. After reawakening, your level will be reduced to level 85, and all the skills you've learned will be forgotten.<br>
|
||||
(<font color="af9878">Change dual classes and your level will be </font><font color="LEVEL">reset to level 85</font><font color="af9878"></font>).<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina reawekenDualclass">"I'll reawaken."</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data/scripts/ai/npc/Raina/33491-04.html
vendored
Normal file
6
trunk/dist/game/data/scripts/ai/npc/Raina/33491-04.html
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br>
|
||||
So you want to know about <font color="LEVEL">items designated for a dual class</font>?<br1>
|
||||
They're for those who grow their dual class powers beyond imaginable limits.<br1>
|
||||
You can purchase as many as you want, but <font color="LEVEL">you have to be at certain level with your main and dual classes in order to use them</font>.<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 2027">"Let me take a look at the items for dual classes."</Button>
|
||||
</body></html>
|
6
trunk/dist/game/data/scripts/ai/npc/Raina/33491-05.html
vendored
Normal file
6
trunk/dist/game/data/scripts/ai/npc/Raina/33491-05.html
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body> Subclass/Dual Class Master Raina:<br><br>
|
||||
Hello!<br>
|
||||
I'm collecting XP Bottles.<br>
|
||||
I'll give you items if you bring me XP Bottles, how's that?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h npc_%objectId%_multisell 857">"I have XP bottles right here."</Button>
|
||||
</body> </html>
|
10
trunk/dist/game/data/scripts/ai/npc/Raina/33491.html
vendored
Normal file
10
trunk/dist/game/data/scripts/ai/npc/Raina/33491.html
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br>
|
||||
Hello!<br1>
|
||||
You have a question about subclass or dual class?<br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-01.html">"Yeah. How do I create or reset a subclass?"</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-02.html">"I want to add a dual class." (for Ertheia only)</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-03.html">"Can I reawaken my Awakened dual class?"</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-04.html">"So...what are the items for dual classes?" </Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina 33491-05.html">"What's with these XP Bottles?"</Button>
|
||||
<Button ALIGN=LEFT ICON="QUEST" action="bypass -h npc_%objectId%_Quest">Quest</Button>
|
||||
</body></html>
|
866
trunk/dist/game/data/scripts/ai/npc/Raina/Raina.java
vendored
Normal file
866
trunk/dist/game/data/scripts/ai/npc/Raina/Raina.java
vendored
Normal file
@ -0,0 +1,866 @@
|
||||
/*
|
||||
* Copyright (C) 2004-2015 L2J DataPack
|
||||
*
|
||||
* This file is part of L2J DataPack.
|
||||
*
|
||||
* L2J DataPack 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.
|
||||
*
|
||||
* L2J DataPack 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.npc.Raina;
|
||||
|
||||
import static com.l2jserver.gameserver.model.base.ClassLevel.THIRD;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.EnumMap;
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import ai.npc.AbstractNpcAI;
|
||||
|
||||
import com.l2jserver.Config;
|
||||
import com.l2jserver.gameserver.cache.HtmCache;
|
||||
import com.l2jserver.gameserver.data.xml.impl.CategoryData;
|
||||
import com.l2jserver.gameserver.data.xml.impl.ClassListData;
|
||||
import com.l2jserver.gameserver.data.xml.impl.SkillTreesData;
|
||||
import com.l2jserver.gameserver.enums.CategoryType;
|
||||
import com.l2jserver.gameserver.enums.Race;
|
||||
import com.l2jserver.gameserver.model.actor.L2Npc;
|
||||
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
|
||||
import com.l2jserver.gameserver.model.base.ClassId;
|
||||
import com.l2jserver.gameserver.model.base.ClassLevel;
|
||||
import com.l2jserver.gameserver.model.base.PlayerClass;
|
||||
import com.l2jserver.gameserver.model.base.SubClass;
|
||||
import com.l2jserver.gameserver.model.events.EventType;
|
||||
import com.l2jserver.gameserver.model.events.ListenerRegisterType;
|
||||
import com.l2jserver.gameserver.model.events.annotations.Id;
|
||||
import com.l2jserver.gameserver.model.events.annotations.RegisterEvent;
|
||||
import com.l2jserver.gameserver.model.events.annotations.RegisterType;
|
||||
import com.l2jserver.gameserver.model.events.impl.character.npc.OnNpcMenuSelect;
|
||||
import com.l2jserver.gameserver.model.quest.QuestState;
|
||||
import com.l2jserver.gameserver.network.SystemMessageId;
|
||||
import com.l2jserver.gameserver.network.serverpackets.AcquireSkillList;
|
||||
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
|
||||
|
||||
/**
|
||||
* Raina AI.
|
||||
* @author St3eT
|
||||
*/
|
||||
public final class Raina extends AbstractNpcAI
|
||||
{
|
||||
// NPC
|
||||
private static final int RAINA = 33491;
|
||||
// Items
|
||||
private static final int SUBCLASS_CERTIFICATE = 30433;
|
||||
private final static int ABELIUS_POWER = 32264;
|
||||
private final static int SAPYROS_POWER = 32265;
|
||||
private final static int ASHAGEN_POWER = 32266;
|
||||
private final static int CRANIGG_POWER = 32267;
|
||||
private final static int SOLTKREIG_POWER = 32268;
|
||||
private final static int NAVIAROPE_POWER = 32269;
|
||||
private final static int LEISTER_POWER = 32270;
|
||||
private final static int LAKCIS_POWER = 32271;
|
||||
// Misc
|
||||
private static final Set<PlayerClass> mainSubclassSet;
|
||||
private static final Set<PlayerClass> neverSubclassed = EnumSet.of(PlayerClass.Overlord, PlayerClass.Warsmith);
|
||||
private static final Set<PlayerClass> subclasseSet1 = EnumSet.of(PlayerClass.DarkAvenger, PlayerClass.Paladin, PlayerClass.TempleKnight, PlayerClass.ShillienKnight);
|
||||
private static final Set<PlayerClass> subclasseSet2 = EnumSet.of(PlayerClass.TreasureHunter, PlayerClass.AbyssWalker, PlayerClass.Plainswalker);
|
||||
private static final Set<PlayerClass> subclasseSet3 = EnumSet.of(PlayerClass.Hawkeye, PlayerClass.SilverRanger, PlayerClass.PhantomRanger);
|
||||
private static final Set<PlayerClass> subclasseSet4 = EnumSet.of(PlayerClass.Warlock, PlayerClass.ElementalSummoner, PlayerClass.PhantomSummoner);
|
||||
private static final Set<PlayerClass> subclasseSet5 = EnumSet.of(PlayerClass.Sorceror, PlayerClass.Spellsinger, PlayerClass.Spellhowler);
|
||||
private static final EnumMap<PlayerClass, Set<PlayerClass>> subclassSetMap = new EnumMap<>(PlayerClass.class);
|
||||
static
|
||||
{
|
||||
final Set<PlayerClass> subclasses = PlayerClass.getSet(null, THIRD);
|
||||
subclasses.removeAll(neverSubclassed);
|
||||
mainSubclassSet = subclasses;
|
||||
subclassSetMap.put(PlayerClass.DarkAvenger, subclasseSet1);
|
||||
subclassSetMap.put(PlayerClass.Paladin, subclasseSet1);
|
||||
subclassSetMap.put(PlayerClass.TempleKnight, subclasseSet1);
|
||||
subclassSetMap.put(PlayerClass.ShillienKnight, subclasseSet1);
|
||||
subclassSetMap.put(PlayerClass.TreasureHunter, subclasseSet2);
|
||||
subclassSetMap.put(PlayerClass.AbyssWalker, subclasseSet2);
|
||||
subclassSetMap.put(PlayerClass.Plainswalker, subclasseSet2);
|
||||
subclassSetMap.put(PlayerClass.Hawkeye, subclasseSet3);
|
||||
subclassSetMap.put(PlayerClass.SilverRanger, subclasseSet3);
|
||||
subclassSetMap.put(PlayerClass.PhantomRanger, subclasseSet3);
|
||||
subclassSetMap.put(PlayerClass.Warlock, subclasseSet4);
|
||||
subclassSetMap.put(PlayerClass.ElementalSummoner, subclasseSet4);
|
||||
subclassSetMap.put(PlayerClass.PhantomSummoner, subclasseSet4);
|
||||
subclassSetMap.put(PlayerClass.Sorceror, subclasseSet5);
|
||||
subclassSetMap.put(PlayerClass.Spellsinger, subclasseSet5);
|
||||
subclassSetMap.put(PlayerClass.Spellhowler, subclasseSet5);
|
||||
}
|
||||
private static final Map<CategoryType, Integer> classCloak = new HashMap<>();
|
||||
{
|
||||
classCloak.put(CategoryType.SIGEL_GROUP, 30310); // Abelius Cloak
|
||||
classCloak.put(CategoryType.TYRR_GROUP, 30311); // Sapyros Cloak Grade
|
||||
classCloak.put(CategoryType.OTHELL_GROUP, 30312); // Ashagen Cloak Grade
|
||||
classCloak.put(CategoryType.YUL_GROUP, 30313); // Cranigg Cloak Grade
|
||||
classCloak.put(CategoryType.FEOH_GROUP, 30314); // Soltkreig Cloak Grade
|
||||
classCloak.put(CategoryType.ISS_GROUP, 30315); // Naviarope Cloak Grade
|
||||
classCloak.put(CategoryType.WYNN_GROUP, 30316); // Leister Cloak Grade
|
||||
classCloak.put(CategoryType.AEORE_GROUP, 30317); // Laksis Cloak Grade
|
||||
}
|
||||
private static final List<PlayerClass> dualClassList = new ArrayList<>();
|
||||
{
|
||||
dualClassList.addAll(Arrays.asList(PlayerClass.sigelPhoenixKnight, PlayerClass.sigelHellKnight, PlayerClass.sigelEvasTemplar, PlayerClass.sigelShilenTemplar));
|
||||
dualClassList.addAll(Arrays.asList(PlayerClass.tyrrDuelist, PlayerClass.tyrrDreadnought, PlayerClass.tyrrTitan, PlayerClass.tyrrGrandKhavatari, PlayerClass.tyrrDoombringer));
|
||||
dualClassList.addAll(Arrays.asList(PlayerClass.othellAdventurer, PlayerClass.othellWindRider, PlayerClass.othellGhostHunter, PlayerClass.othellFortuneSeeker));
|
||||
dualClassList.addAll(Arrays.asList(PlayerClass.yulSagittarius, PlayerClass.yulMoonlightSentinel, PlayerClass.yulGhostSentinel, PlayerClass.yulTrickster));
|
||||
dualClassList.addAll(Arrays.asList(PlayerClass.feohArchmage, PlayerClass.feohSoultaker, PlayerClass.feohMysticMuse, PlayerClass.feoStormScreamer, PlayerClass.feohSoulHound));
|
||||
dualClassList.addAll(Arrays.asList(PlayerClass.issHierophant, PlayerClass.issSwordMuse, PlayerClass.issSpectralDancer, PlayerClass.issDoomcryer));
|
||||
dualClassList.addAll(Arrays.asList(PlayerClass.wynnArcanaLord, PlayerClass.wynnElementalMaster, PlayerClass.wynnSpectralMaster));
|
||||
dualClassList.addAll(Arrays.asList(PlayerClass.aeoreCardinal, PlayerClass.aeoreEvaSaint, PlayerClass.aeoreShillienSaint));
|
||||
}
|
||||
// @formatter:off
|
||||
private static final int[] REAWAKEN_PRICE =
|
||||
{
|
||||
100_000_000, 90_000_000, 80_000_000, 70_000_000, 60_000_000, 50_000_000, 40_000_000, 30_000_000, 20_000_000, 10_000_000
|
||||
};
|
||||
// @formatter:on
|
||||
|
||||
private Raina()
|
||||
{
|
||||
super(Raina.class.getSimpleName(), "ai/npc");
|
||||
addStartNpc(RAINA);
|
||||
addFirstTalkId(RAINA);
|
||||
addTalkId(RAINA);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
|
||||
{
|
||||
String htmltext = null;
|
||||
switch (event)
|
||||
{
|
||||
case "33491-01.html":
|
||||
case "33491-02.html":
|
||||
case "33491-03.html":
|
||||
case "33491-04.html":
|
||||
case "reawakenCancel.html":
|
||||
{
|
||||
htmltext = event;
|
||||
break;
|
||||
}
|
||||
case "addSubclass":
|
||||
{
|
||||
if (player.isTransformed())
|
||||
{
|
||||
htmltext = "noTransform.html";
|
||||
break;
|
||||
}
|
||||
else if (player.hasSummon())
|
||||
{
|
||||
htmltext = "noSummon.html";
|
||||
break;
|
||||
}
|
||||
else if (player.getRace() == Race.ERTHEIA)
|
||||
{
|
||||
htmltext = "noErtheia.html";
|
||||
break;
|
||||
}
|
||||
else if (!haveDoneQuest(player) && Config.ALT_GAME_SUBCLASS_WITHOUT_QUESTS && !player.isGM())
|
||||
{
|
||||
htmltext = "noQuest.html";
|
||||
break;
|
||||
}
|
||||
else if (!hasAllSubclassLeveled(player) || (player.getTotalSubClasses() >= Config.MAX_SUBCLASS))
|
||||
{
|
||||
htmltext = "addFailed.html";
|
||||
break;
|
||||
}
|
||||
else if (!player.isInventoryUnder90(true) || (player.getWeightPenalty() >= 2))
|
||||
{
|
||||
htmltext = "inventoryLimit.html";
|
||||
break;
|
||||
}
|
||||
|
||||
final Set<PlayerClass> availSubs = getAvailableSubClasses(player);
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "subclassList.html");
|
||||
|
||||
if ((availSubs == null) || availSubs.isEmpty())
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
for (PlayerClass subClass : availSubs)
|
||||
{
|
||||
if (subClass != null)
|
||||
{
|
||||
final int classId = subClass.ordinal();
|
||||
final int npcStringId = 11170000 + classId;
|
||||
sb.append("<fstring p1=\"0\" p2=\"" + classId + "\">" + npcStringId + "</fstring>");
|
||||
}
|
||||
}
|
||||
html.replace("%subclassList%", sb.toString());
|
||||
player.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
case "removeSubclass":
|
||||
{
|
||||
if (player.isTransformed())
|
||||
{
|
||||
htmltext = "noTransform.html";
|
||||
break;
|
||||
}
|
||||
else if (player.hasSummon())
|
||||
{
|
||||
htmltext = "noSummon.html";
|
||||
break;
|
||||
}
|
||||
else if (player.getRace() == Race.ERTHEIA)
|
||||
{
|
||||
htmltext = "noErtheia.html";
|
||||
break;
|
||||
}
|
||||
else if (!player.isInventoryUnder90(true) || (player.getWeightPenalty() >= 2))
|
||||
{
|
||||
htmltext = "inventoryLimit.html";
|
||||
break;
|
||||
}
|
||||
else if (player.getSubClasses().isEmpty())
|
||||
{
|
||||
htmltext = "noSubChange.html";
|
||||
break;
|
||||
}
|
||||
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "subclassRemoveList.html");
|
||||
|
||||
for (SubClass subClass : player.getSubClasses().values())
|
||||
{
|
||||
if (subClass != null)
|
||||
{
|
||||
final int classId = subClass.getClassId();
|
||||
final int npcStringId = 11170000 + classId;
|
||||
sb.append("<fstring p1=\"2\" p2=\"" + subClass.getClassIndex() + "\">" + npcStringId + "</fstring>");
|
||||
}
|
||||
}
|
||||
html.replace("%removeList%", sb.toString());
|
||||
player.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
case "changeSubclass":
|
||||
{
|
||||
if (player.isTransformed())
|
||||
{
|
||||
htmltext = "noTransform.html";
|
||||
break;
|
||||
}
|
||||
else if (player.hasSummon())
|
||||
{
|
||||
htmltext = "noSummon.html";
|
||||
break;
|
||||
}
|
||||
else if (player.getRace() == Race.ERTHEIA)
|
||||
{
|
||||
htmltext = "noErtheia.html";
|
||||
break;
|
||||
}
|
||||
else if (player.getSubClasses().isEmpty())
|
||||
{
|
||||
htmltext = "noSubChange.html";
|
||||
break;
|
||||
}
|
||||
else if (!hasQuestItems(player, SUBCLASS_CERTIFICATE))
|
||||
{
|
||||
htmltext = "noCertificate.html";
|
||||
break;
|
||||
}
|
||||
|
||||
player.sendMessage("Not done yet.");
|
||||
break;
|
||||
}
|
||||
case "ertheiaDualClass":
|
||||
{
|
||||
if ((player.getRace() != Race.ERTHEIA) || (player.getLevel() < 85) || player.hasDualClass())
|
||||
{
|
||||
htmltext = "addDualClassErtheiaFailed.html";
|
||||
break;
|
||||
}
|
||||
htmltext = "addDualClassErtheia.html";
|
||||
break;
|
||||
}
|
||||
case "addDualClass_SIGEL_GROUP":
|
||||
case "addDualClass_TYRR_GROUP":
|
||||
case "addDualClass_OTHELL_GROUP":
|
||||
case "addDualClass_YUL_GROUP":
|
||||
case "addDualClass_FEOH_GROUP":
|
||||
case "addDualClass_ISS_GROUP":
|
||||
case "addDualClass_WYNN_GROUP":
|
||||
case "addDualClass_AEORE_GROUP":
|
||||
{
|
||||
final CategoryType cType = CategoryType.valueOf(event.replace("addDualClass_", ""));
|
||||
|
||||
if (cType == null)
|
||||
{
|
||||
_log.log(Level.WARNING, getClass().getSimpleName() + ": Cannot parse CategoryType, event: " + event);
|
||||
}
|
||||
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "addDualClassErtheiaList.html");
|
||||
|
||||
for (PlayerClass dualClasses : getDualClasses(player, cType))
|
||||
{
|
||||
if (dualClasses != null)
|
||||
{
|
||||
sb.append("<button value=\"" + ClassListData.getInstance().getClass(dualClasses.ordinal()).getClassName() + "\" action=\"bypass -h menu_select?ask=6&reply=" + dualClasses.ordinal() + "\" width=\"200\" height=\"31\" back=\"L2UI_CT1.HtmlWnd_DF_Awake_Down\" fore=\"L2UI_CT1.HtmlWnd_DF_Awake\"><br>");
|
||||
}
|
||||
}
|
||||
html.replace("%dualclassList%", sb.toString());
|
||||
player.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
case "reawekenDualclass":
|
||||
{
|
||||
if (player.isTransformed())
|
||||
{
|
||||
htmltext = "noTransform.html";
|
||||
break;
|
||||
}
|
||||
else if (player.hasSummon())
|
||||
{
|
||||
htmltext = "noSummon.html";
|
||||
break;
|
||||
}
|
||||
else if (!player.hasDualClass() || !player.isDualClassActive() || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal()))
|
||||
{
|
||||
htmltext = "reawakenNoDual.html";
|
||||
break;
|
||||
}
|
||||
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "reawaken.html");
|
||||
final int index = player.getLevel() > 94 ? REAWAKEN_PRICE.length - 1 : player.getLevel() - 85;
|
||||
html.replace("%price%", REAWAKEN_PRICE[index]);
|
||||
player.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
case "reawakenDualclassConfirm":
|
||||
{
|
||||
final int index = player.getLevel() > 94 ? REAWAKEN_PRICE.length - 1 : player.getLevel() - 85;
|
||||
if (player.isTransformed())
|
||||
{
|
||||
htmltext = "noTransform.html";
|
||||
break;
|
||||
}
|
||||
else if (player.hasSummon())
|
||||
{
|
||||
htmltext = "noSummon.html";
|
||||
break;
|
||||
}
|
||||
else if (!player.hasDualClass() || !player.isDualClassActive() || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal()))
|
||||
{
|
||||
htmltext = "reawakenNoDual.html";
|
||||
break;
|
||||
}
|
||||
else if ((player.getAdena() < REAWAKEN_PRICE[index]) || !hasQuestItems(player, getCloakId(player)))
|
||||
{
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "reawakenNoFee.html");
|
||||
html.replace("%price%", REAWAKEN_PRICE[index]);
|
||||
player.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "reawakenList.html");
|
||||
player.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
case "reawaken_SIGEL_GROUP":
|
||||
case "reawaken_TYRR_GROUP":
|
||||
case "reawaken_OTHELL_GROUP":
|
||||
case "reawaken_YUL_GROUP":
|
||||
case "reawaken_FEOH_GROUP":
|
||||
case "reawaken_ISS_GROUP":
|
||||
case "reawaken_WYNN_GROUP":
|
||||
case "reawaken_AEORE_GROUP":
|
||||
{
|
||||
final CategoryType cType = CategoryType.valueOf(event.replace("reawaken_", ""));
|
||||
|
||||
if (cType == null)
|
||||
{
|
||||
_log.log(Level.WARNING, getClass().getSimpleName() + ": Cannot parse CategoryType, event: " + event);
|
||||
}
|
||||
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "reawakenClassList.html");
|
||||
|
||||
for (PlayerClass dualClasses : getDualClasses(player, cType))
|
||||
{
|
||||
if (dualClasses != null)
|
||||
{
|
||||
sb.append("<button value=\"" + ClassListData.getInstance().getClass(dualClasses.ordinal()).getClassName() + "\" action=\"bypass -h menu_select?ask=5&reply=" + dualClasses.ordinal() + "\" width=\"200\" height=\"31\" back=\"L2UI_CT1.HtmlWnd_DF_Awake_Down\" fore=\"L2UI_CT1.HtmlWnd_DF_Awake\"><br>");
|
||||
}
|
||||
}
|
||||
html.replace("%dualclassList%", sb.toString());
|
||||
player.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return htmltext;
|
||||
}
|
||||
|
||||
@RegisterEvent(EventType.ON_NPC_MENU_SELECT)
|
||||
@RegisterType(ListenerRegisterType.NPC)
|
||||
@Id(RAINA)
|
||||
public final void OnNpcMenuSelect(OnNpcMenuSelect event)
|
||||
{
|
||||
final L2PcInstance player = event.getTalker();
|
||||
final L2Npc npc = event.getNpc();
|
||||
final int ask = event.getAsk();
|
||||
|
||||
switch (ask)
|
||||
{
|
||||
case 0: // Add subclass confirm menu
|
||||
{
|
||||
final int classId = event.getReply();
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "addConfirm.html");
|
||||
|
||||
if (!isValidNewSubClass(player, classId))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final int npcStringId = 11170000 + classId;
|
||||
sb.append("<fstring p1=\"1\" p2=\"" + classId + "\">" + npcStringId + "</fstring>");
|
||||
html.replace("%confirmButton%", sb.toString());
|
||||
player.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
case 1: // Add subclass
|
||||
{
|
||||
final int classId = event.getReply();
|
||||
if (!isValidNewSubClass(player, classId))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!player.addSubClass(classId, player.getTotalSubClasses() + 1, false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "addSuccess.html");
|
||||
player.setActiveClass(player.getTotalSubClasses());
|
||||
player.sendPacket(SystemMessageId.THE_NEW_SUBCLASS_HAS_BEEN_ADDED);
|
||||
player.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
case 2: // Remove (change) subclass list
|
||||
{
|
||||
final int subclassIndex = event.getReply();
|
||||
final Set<PlayerClass> availSubs = getAvailableSubClasses(player);
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "removeSubclassList.html");
|
||||
|
||||
if ((availSubs == null) || availSubs.isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (PlayerClass subClass : availSubs)
|
||||
{
|
||||
if (subClass != null)
|
||||
{
|
||||
final int classId = subClass.ordinal();
|
||||
final int npcStringId = 11170000 + classId;
|
||||
sb.append("<fstring p1=\"3\" p2=\"" + classId + "\">" + npcStringId + "</fstring>");
|
||||
}
|
||||
}
|
||||
npc.getVariables().set("SUBCLASS_INDEX_" + player.getObjectId(), subclassIndex);
|
||||
html.replace("%subclassList%", sb.toString());
|
||||
player.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
case 3: // Remove (change) subclass confirm menu
|
||||
{
|
||||
final int classId = event.getReply();
|
||||
final int classIndex = npc.getVariables().getInt("SUBCLASS_INDEX_" + player.getObjectId(), -1);
|
||||
if (classIndex < 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "addConfirm2.html");
|
||||
final int npcStringId = 11170000 + classId;
|
||||
sb.append("<fstring p1=\"4\" p2=\"" + classId + "\">" + npcStringId + "</fstring>");
|
||||
html.replace("%confirmButton%", sb.toString());
|
||||
player.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
case 4: // Remove (change) subclass
|
||||
{
|
||||
final int classId = event.getReply();
|
||||
final int classIndex = npc.getVariables().getInt("SUBCLASS_INDEX_" + player.getObjectId(), -1);
|
||||
if (classIndex < 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (player.modifySubClass(classIndex, classId, false))
|
||||
{
|
||||
player.abortCast();
|
||||
player.stopAllEffectsExceptThoseThatLastThroughDeath();
|
||||
player.stopAllEffectsNotStayOnSubclassChange();
|
||||
player.stopCubics();
|
||||
player.setActiveClass(classIndex);
|
||||
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "addSuccess.html");
|
||||
|
||||
player.sendPacket(html);
|
||||
player.sendPacket(SystemMessageId.THE_NEW_SUBCLASS_HAS_BEEN_ADDED);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 5: // Reawaken (change dual class)
|
||||
{
|
||||
final int classId = event.getReply();
|
||||
if (player.isTransformed() || player.hasSummon() || (!player.hasDualClass() || !player.isDualClassActive() || (player.getClassId().level() != ClassLevel.AWAKEN.ordinal())))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// Validating classId
|
||||
if (!getDualClasses(player, null).contains(PlayerClass.values()[classId]))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
final int index = player.getLevel() > 94 ? REAWAKEN_PRICE.length - 1 : player.getLevel() - 85;
|
||||
if ((player.getAdena() < REAWAKEN_PRICE[index]) || !hasQuestItems(player, getCloakId(player)))
|
||||
{
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "reawakenNoFee.html");
|
||||
html.replace("%price%", REAWAKEN_PRICE[index]);
|
||||
player.sendPacket(html);
|
||||
break;
|
||||
}
|
||||
|
||||
player.reduceAdena((getClass().getSimpleName() + "_Reawaken"), REAWAKEN_PRICE[index], npc, true);
|
||||
takeItems(player, getCloakId(player), 1);
|
||||
|
||||
final int classIndex = player.getClassIndex();
|
||||
if (player.modifySubClass(classIndex, classId, true))
|
||||
{
|
||||
player.abortCast();
|
||||
player.stopAllEffectsExceptThoseThatLastThroughDeath();
|
||||
player.stopAllEffectsNotStayOnSubclassChange();
|
||||
player.stopCubics();
|
||||
player.setActiveClass(classIndex);
|
||||
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "reawakenSuccess.html");
|
||||
player.sendPacket(html);
|
||||
SkillTreesData.getInstance().cleanSkillUponAwakening(player);
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendSkillList();
|
||||
addPowerItem(player);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 6: // Add dual class for ertheia
|
||||
{
|
||||
final int classId = event.getReply();
|
||||
if (player.isTransformed() || player.hasSummon())
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// Validating classId
|
||||
if (!getDualClasses(player, null).contains(PlayerClass.values()[classId]))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (player.addSubClass(classId, player.getTotalSubClasses() + 1, true))
|
||||
{
|
||||
final NpcHtmlMessage html = getNpcHtmlMessage(player, npc, "addSuccess.html");
|
||||
player.setActiveClass(player.getTotalSubClasses());
|
||||
player.sendPacket(SystemMessageId.THE_NEW_SUBCLASS_HAS_BEEN_ADDED);
|
||||
player.sendPacket(html);
|
||||
SkillTreesData.getInstance().cleanSkillUponAwakening(player);
|
||||
player.sendPacket(new AcquireSkillList(player));
|
||||
player.sendSkillList();
|
||||
addPowerItem(player);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addPowerItem(L2PcInstance player)
|
||||
{
|
||||
int itemId = ABELIUS_POWER; // Sigel
|
||||
if (player.isInCategory(CategoryType.TYRR_GROUP))
|
||||
{
|
||||
itemId = SAPYROS_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.OTHELL_GROUP))
|
||||
{
|
||||
itemId = ASHAGEN_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.YUL_GROUP))
|
||||
{
|
||||
itemId = CRANIGG_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.FEOH_GROUP))
|
||||
{
|
||||
itemId = SOLTKREIG_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.ISS_GROUP))
|
||||
{
|
||||
itemId = NAVIAROPE_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.WYNN_GROUP))
|
||||
{
|
||||
itemId = LEISTER_POWER;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.AEORE_GROUP))
|
||||
{
|
||||
itemId = LAKCIS_POWER;
|
||||
}
|
||||
giveItems(player, itemId, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns list of available subclasses Base class and already used subclasses removed
|
||||
* @param player
|
||||
* @return
|
||||
*/
|
||||
private Set<PlayerClass> getAvailableSubClasses(L2PcInstance player)
|
||||
{
|
||||
final int currentBaseId = player.getBaseClass();
|
||||
final ClassId baseCID = ClassId.getClassId(currentBaseId);
|
||||
int baseClassId = (baseCID.level() > 2) ? baseCID.getParent().ordinal() : currentBaseId;
|
||||
|
||||
final Set<PlayerClass> availSubs = getSubclasses(player, baseClassId);
|
||||
|
||||
if ((availSubs != null) && !availSubs.isEmpty())
|
||||
{
|
||||
for (PlayerClass pclass : availSubs)
|
||||
{
|
||||
// scan for already used subclasses
|
||||
final int availClassId = pclass.ordinal();
|
||||
final ClassId cid = ClassId.getClassId(availClassId);
|
||||
|
||||
for (SubClass subList : player.getSubClasses().values())
|
||||
{
|
||||
final ClassId subId = ClassId.getClassId(subList.getClassId());
|
||||
|
||||
if (subId.equalsOrChildOf(cid))
|
||||
{
|
||||
availSubs.remove(cid);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return availSubs;
|
||||
}
|
||||
|
||||
private boolean haveDoneQuest(L2PcInstance player)
|
||||
{
|
||||
final QuestState qs = player.getQuestState("Q10385_RedThreadOfFate"); // TODO: Replace with class name
|
||||
return qs == null ? false : qs.isCompleted();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check new subclass classId for validity. Base class not added into allowed subclasses.
|
||||
* @param player
|
||||
* @param classId
|
||||
* @return
|
||||
*/
|
||||
private boolean isValidNewSubClass(L2PcInstance player, int classId)
|
||||
{
|
||||
final ClassId cid = ClassId.values()[classId];
|
||||
ClassId subClassId;
|
||||
for (SubClass subList : player.getSubClasses().values())
|
||||
{
|
||||
subClassId = ClassId.values()[subList.getClassId()];
|
||||
|
||||
if (subClassId.equalsOrChildOf(cid))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// get player base class
|
||||
final int currentBaseId = player.getBaseClass();
|
||||
final ClassId baseCID = ClassId.getClassId(currentBaseId);
|
||||
|
||||
// we need 2nd occupation ID
|
||||
final int baseClassId = baseCID.level() > 2 ? baseCID.getParent().ordinal() : currentBaseId;
|
||||
final Set<PlayerClass> availSubs = getSubclasses(player, baseClassId);
|
||||
|
||||
if ((availSubs == null) || availSubs.isEmpty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean found = false;
|
||||
for (PlayerClass pclass : availSubs)
|
||||
{
|
||||
if (pclass.ordinal() == classId)
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return found;
|
||||
}
|
||||
|
||||
private boolean hasAllSubclassLeveled(L2PcInstance player)
|
||||
{
|
||||
boolean leveled = true;
|
||||
|
||||
for (SubClass sub : player.getSubClasses().values())
|
||||
{
|
||||
if ((sub != null) && (sub.getLevel() < 75))
|
||||
{
|
||||
leveled = false;
|
||||
}
|
||||
}
|
||||
return leveled;
|
||||
}
|
||||
|
||||
public final List<PlayerClass> getAvailableDualclasses(L2PcInstance player)
|
||||
{
|
||||
final List<PlayerClass> dualClasses = new ArrayList<>();
|
||||
|
||||
for (PlayerClass playerClass : PlayerClass.values())
|
||||
{
|
||||
if (!playerClass.isOfRace(Race.ERTHEIA) && playerClass.isOfLevel(ClassLevel.AWAKEN) && (playerClass.ordinal() != player.getClassId().getId()))
|
||||
{
|
||||
dualClasses.add(playerClass);
|
||||
}
|
||||
}
|
||||
return dualClasses;
|
||||
}
|
||||
|
||||
private List<PlayerClass> getDualClasses(L2PcInstance player, CategoryType cType)
|
||||
{
|
||||
final List<PlayerClass> tempList = new ArrayList<>();
|
||||
final int baseClassId = player.getBaseClass();
|
||||
final int dualClassId = player.getClassId().getId();
|
||||
|
||||
for (PlayerClass temp : dualClassList)
|
||||
{
|
||||
if ((temp.ordinal() != baseClassId) && (temp.ordinal() != dualClassId) && ((cType == null) || CategoryData.getInstance().isInCategory(cType, temp.ordinal())))
|
||||
{
|
||||
tempList.add(temp);
|
||||
}
|
||||
}
|
||||
return tempList;
|
||||
}
|
||||
|
||||
public final Set<PlayerClass> getSubclasses(L2PcInstance player, int classId)
|
||||
{
|
||||
Set<PlayerClass> subclasses = null;
|
||||
final PlayerClass pClass = PlayerClass.values()[classId];
|
||||
|
||||
if ((pClass.getLevel() == ClassLevel.THIRD) || (pClass.getLevel() == ClassLevel.FOURTH))
|
||||
{
|
||||
subclasses = EnumSet.copyOf(mainSubclassSet);
|
||||
|
||||
subclasses.remove(this);
|
||||
|
||||
subclasses.removeAll(PlayerClass.getSet(Race.ERTHEIA, THIRD));
|
||||
|
||||
if (player.getRace() == Race.KAMAEL)
|
||||
{
|
||||
if (player.getAppearance().getSex())
|
||||
{
|
||||
subclasses.remove(PlayerClass.femaleSoulbreaker);
|
||||
}
|
||||
else
|
||||
{
|
||||
subclasses.remove(PlayerClass.maleSoulbreaker);
|
||||
}
|
||||
|
||||
if (!player.getSubClasses().containsKey(2) || (player.getSubClasses().get(2).getLevel() < 75))
|
||||
{
|
||||
subclasses.remove(PlayerClass.inspector);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Only Kamael can take Kamael classes as subclasses.
|
||||
subclasses.removeAll(PlayerClass.getSet(Race.KAMAEL, THIRD));
|
||||
}
|
||||
|
||||
Set<PlayerClass> unavailableClasses = subclassSetMap.get(this);
|
||||
|
||||
if (unavailableClasses != null)
|
||||
{
|
||||
subclasses.removeAll(unavailableClasses);
|
||||
}
|
||||
}
|
||||
return subclasses;
|
||||
}
|
||||
|
||||
private NpcHtmlMessage getNpcHtmlMessage(L2PcInstance player, L2Npc npc, String fileName)
|
||||
{
|
||||
final NpcHtmlMessage html = new NpcHtmlMessage(npc.getObjectId());
|
||||
html.setHtml(HtmCache.getInstance().getHtm(player.getHtmlPrefix(), "data/scripts/ai/npc/Raina/" + fileName));
|
||||
return html;
|
||||
}
|
||||
|
||||
private int getCloakId(L2PcInstance player)
|
||||
{
|
||||
CategoryType catType = null;
|
||||
|
||||
if (player.isInCategory(CategoryType.SIGEL_GROUP))
|
||||
{
|
||||
catType = CategoryType.SIGEL_GROUP;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.TYRR_GROUP))
|
||||
{
|
||||
catType = CategoryType.TYRR_GROUP;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.OTHELL_GROUP))
|
||||
{
|
||||
catType = CategoryType.OTHELL_GROUP;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.YUL_GROUP))
|
||||
{
|
||||
catType = CategoryType.YUL_GROUP;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.FEOH_GROUP))
|
||||
{
|
||||
catType = CategoryType.FEOH_GROUP;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.ISS_GROUP))
|
||||
{
|
||||
catType = CategoryType.ISS_GROUP;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.WYNN_GROUP))
|
||||
{
|
||||
catType = CategoryType.WYNN_GROUP;
|
||||
}
|
||||
else if (player.isInCategory(CategoryType.AEORE_GROUP))
|
||||
{
|
||||
catType = CategoryType.AEORE_GROUP;
|
||||
}
|
||||
return classCloak.get(catType);
|
||||
}
|
||||
|
||||
public static void main(String[] args)
|
||||
{
|
||||
new Raina();
|
||||
}
|
||||
}
|
6
trunk/dist/game/data/scripts/ai/npc/Raina/addConfirm.html
vendored
Normal file
6
trunk/dist/game/data/scripts/ai/npc/Raina/addConfirm.html
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
The choice is no easy one.<br>
|
||||
The new subclass will be a level 40, 2nd-transfer class. <br>
|
||||
Are you sure you want to go ahead with this decision? <br>
|
||||
%confirmButton%
|
||||
</body></html>
|
6
trunk/dist/game/data/scripts/ai/npc/Raina/addConfirm2.html
vendored
Normal file
6
trunk/dist/game/data/scripts/ai/npc/Raina/addConfirm2.html
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
The choice is no easy one.<br>
|
||||
<font="LEVEL">The new subclass will have none of the skill enchants or the skills you learned through codices. Think carefully.</font><br>
|
||||
Are you sure you want to go ahead with this decision? <br>
|
||||
%confirmButton%
|
||||
</body></html>
|
12
trunk/dist/game/data/scripts/ai/npc/Raina/addDualClassErtheia.html
vendored
Normal file
12
trunk/dist/game/data/scripts/ai/npc/Raina/addDualClassErtheia.html
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
So, into which class would you like to Reawaken?<br>
|
||||
Remember that if you proceed, you will go back to <font color="LEVEL">Lv. 85, and all your skills will be reset.</font><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina addDualClass_SIGEL_GROUP">"I will change to the Knight class."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina addDualClass_TYRR_GROUP">"I will change to the Warrior class."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina addDualClass_OTHELL_GROUP">"I will change to the Rogue class."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina addDualClass_YUL_GROUP">"I will change to the Archer class."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina addDualClass_FEOH_GROUP">"I will change to the Wizard class."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina addDualClass_ISS_GROUP">"I will change to the Enchanter class."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina addDualClass_WYNN_GROUP">"I will change to the Summoner class."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina addDualClass_AEORE_GROUP">"I will change to the Healer class."</Button>
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/ai/npc/Raina/addDualClassErtheiaFailed.html
vendored
Normal file
5
trunk/dist/game/data/scripts/ai/npc/Raina/addDualClassErtheiaFailed.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
You do not meet the conditions to add a dual class.<br>
|
||||
Come back when you're ready, or ask for something else.<br>
|
||||
(Only Ertheia characters Lv. 85 or above may add a dual class once.)
|
||||
</body></html>
|
9
trunk/dist/game/data/scripts/ai/npc/Raina/addDualClassErtheiaList.html
vendored
Normal file
9
trunk/dist/game/data/scripts/ai/npc/Raina/addDualClassErtheiaList.html
vendored
Normal file
@ -0,0 +1,9 @@
|
||||
<html><body scroll="no">
|
||||
<table border=0 cellpadding=0 cellspacing=0 width=292 height=358 background="L2UI_CH3.refinewnd_back_Pattern">
|
||||
<tr><td valign="top" align="center"><br><br><br><br>
|
||||
These are the classes available to you.<br1>
|
||||
You must choose which you want to be.<br><br>
|
||||
%dualclassList%
|
||||
</td></tr>
|
||||
</table>
|
||||
</body></html>
|
8
trunk/dist/game/data/scripts/ai/npc/Raina/addFailed.html
vendored
Normal file
8
trunk/dist/game/data/scripts/ai/npc/Raina/addFailed.html
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
Sorry, but you're not qualified to add a subclass.<br1>
|
||||
To add a new subclass, you need the following qualifications:<br>
|
||||
First, <font color="LEVEL">you've completed the 'Red Thread of Fate' quest</font>. If you want to get on that, let me know.<br>
|
||||
Second, <font color="LEVEL">your current class has done the 2nd class transfer, and all your subclass levels are 75 or higher</font>. For example, if your subclasses are Temple Knight and Silver Ranger, they must both be level 75 for you to add a third subclass.<br>
|
||||
Third, you may only have <font color="LEVEL">up to 3 subclasses</font>, I'm afraid.<br>
|
||||
Got it?
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/ai/npc/Raina/addSuccess.html
vendored
Normal file
5
trunk/dist/game/data/scripts/ai/npc/Raina/addSuccess.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
Congratulations!<br>
|
||||
Your new subclass has been added.<br>
|
||||
I look forward to your future endeavors with your new subclass!<br>
|
||||
</body></html>
|
3
trunk/dist/game/data/scripts/ai/npc/Raina/inventoryLimit.html
vendored
Normal file
3
trunk/dist/game/data/scripts/ai/npc/Raina/inventoryLimit.html
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
You need inventory space and free weight to create or renew a subclass. Go free up your weight and inventory to less than 80%, and I'll see what I can do.
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/ai/npc/Raina/noCertificate.html
vendored
Normal file
5
trunk/dist/game/data/scripts/ai/npc/Raina/noCertificate.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
You need a Subclass Change Certificate in order to receive the power of the gods. This was given to heroes long before Shilen's destructive rampages came about, so you can't find new ones anymore.<br>
|
||||
But if you have the certificate, talk to me again as a subclass ready to receive the power of the gods.<br>
|
||||
<font color="af9878">But a dual class isn't ready to receive the power of the gods, so I can't change classes for that.</font>
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Raina/noErtheia.html
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Raina/noErtheia.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
Ertheia cannot add or modify subclasses.<br>
|
||||
Please talk to me when you're ready to add a dual class.
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Raina/noQuest.html
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Raina/noQuest.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
You haven't completed the 'Red Thread of Fate' quest yet.<br>
|
||||
To create a subclass, you have to <font color="LEVEL">complete the 'Red Thread of Fate' quest</font>. If you want to work on the quest, let me know.
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Raina/noSubChange.html
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Raina/noSubChange.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
You don't have a subclass to change.<br>
|
||||
Make a subclass.
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Raina/noSummon.html
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Raina/noSummon.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
You cannot create a new subclass<br>
|
||||
when there is a pet or servitor.
|
||||
</body></html>
|
4
trunk/dist/game/data/scripts/ai/npc/Raina/noTransform.html
vendored
Normal file
4
trunk/dist/game/data/scripts/ai/npc/Raina/noTransform.html
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
I cannot create a new subclass while you're transformed.<br>
|
||||
Change back to your original form, then talk to me again.
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/ai/npc/Raina/onlyErtheia.html
vendored
Normal file
5
trunk/dist/game/data/scripts/ai/npc/Raina/onlyErtheia.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
You do not meet the conditions to add a dual class.<br>
|
||||
Come back when you're ready, or ask for something else.<br>
|
||||
(Only Ertheia characters Lv. 85 or above may add a dual class once.)
|
||||
</body></html>
|
10
trunk/dist/game/data/scripts/ai/npc/Raina/reawaken.html
vendored
Normal file
10
trunk/dist/game/data/scripts/ai/npc/Raina/reawaken.html
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
In order to reawaken your dual class,<br>
|
||||
<font color="LEVEL">you need the cloak you received when you first awakened it,<br>
|
||||
and some %price% Adena</font> to pay the fee.<br>
|
||||
Upon reawakening, zou will lose zour current<br>
|
||||
abilities, but gain new powers is exchange. You will be reducted to <font color="LEVEL">level 85, and all your skills will be reset.</font> You can choose the class you want, but <font color="LEVEL">you cannot receive powers from the same class as your main class</font>.<br>
|
||||
<font color="af9878">(After reawakening, the 3rd skills provided will be based on human classes.)</font><br>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina reawakenDualclassConfirm">"I'll reawaken."</Button>
|
||||
<Button ALIGN=LEFT ICON="NORMAL" action="bypass -h Quest Raina reawakenCancel.html">"I will think about it."</Button>
|
||||
</body></html>
|
5
trunk/dist/game/data/scripts/ai/npc/Raina/reawakenCancel.html
vendored
Normal file
5
trunk/dist/game/data/scripts/ai/npc/Raina/reawakenCancel.html
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
<html><body>Subclass/Dual Class Master Raina:<br><br>
|
||||
I see.<br>
|
||||
Make a carful decision because you will lose the power you have, to get new power.<br>
|
||||
When you make up your mind, come back to me.
|
||||
</body></html>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user