Support for inverted doors.
This commit is contained in:
10
L2J_Mobius_Helios/dist/game/data/DoorData.xml
vendored
10
L2J_Mobius_Helios/dist/game/data/DoorData.xml
vendored
@@ -2100,7 +2100,7 @@
|
|||||||
<status showHp="false" />
|
<status showHp="false" />
|
||||||
<openStatus openMethod="BY_ITEM" default="close" />
|
<openStatus openMethod="BY_ITEM" default="close" />
|
||||||
</door>
|
</door>
|
||||||
<door id="16200012" level="1" name="nornildg_l" emmiterId="16200112">
|
<door id="16200012" level="1" name="nornildg_l" emmiterId="16200112" isInverted="true">
|
||||||
<nodes nodeZ="-13008">
|
<nodes nodeZ="-13008">
|
||||||
<node x="-111444" y="87371" />
|
<node x="-111444" y="87371" />
|
||||||
<node x="-111444" y="86980" />
|
<node x="-111444" y="86980" />
|
||||||
@@ -2124,7 +2124,7 @@
|
|||||||
<status targetable="false" showHp="false" isStealth="true" />
|
<status targetable="false" showHp="false" isStealth="true" />
|
||||||
<openStatus default="close" />
|
<openStatus default="close" />
|
||||||
</door>
|
</door>
|
||||||
<door id="16200014" level="1" name="past_door" emmiterId="16200114">
|
<door id="16200014" level="1" name="past_door" emmiterId="16200114" isInverted="true">
|
||||||
<nodes nodeZ="-12904">
|
<nodes nodeZ="-12904">
|
||||||
<node x="-113194" y="87322" />
|
<node x="-113194" y="87322" />
|
||||||
<node x="-113193" y="87037" />
|
<node x="-113193" y="87037" />
|
||||||
@@ -2136,7 +2136,7 @@
|
|||||||
<status showHp="false" />
|
<status showHp="false" />
|
||||||
<openStatus default="close" />
|
<openStatus default="close" />
|
||||||
</door>
|
</door>
|
||||||
<door id="16200015" level="1" name="present_door" emmiterId="16200115">
|
<door id="16200015" level="1" name="present_door" emmiterId="16200115" isInverted="true">
|
||||||
<nodes nodeZ="-12816">
|
<nodes nodeZ="-12816">
|
||||||
<node x="-115085" y="87321" />
|
<node x="-115085" y="87321" />
|
||||||
<node x="-115084" y="87036" />
|
<node x="-115084" y="87036" />
|
||||||
@@ -2148,7 +2148,7 @@
|
|||||||
<status showHp="false" />
|
<status showHp="false" />
|
||||||
<openStatus default="close" />
|
<openStatus default="close" />
|
||||||
</door>
|
</door>
|
||||||
<door id="16200016" level="1" name="future_door" emmiterId="16200116">
|
<door id="16200016" level="1" name="future_door" emmiterId="16200116" isInverted="true">
|
||||||
<nodes nodeZ="-12711">
|
<nodes nodeZ="-12711">
|
||||||
<node x="-116982" y="87319" />
|
<node x="-116982" y="87319" />
|
||||||
<node x="-116981" y="87034" />
|
<node x="-116981" y="87034" />
|
||||||
@@ -17139,7 +17139,7 @@
|
|||||||
<status showHp="false" />
|
<status showHp="false" />
|
||||||
<openStatus default="close" />
|
<openStatus default="close" />
|
||||||
</door>
|
</door>
|
||||||
<door id="16200201" name="nornil_cave_S.nornil_mover">
|
<door id="16200201" name="nornil_cave_S.nornil_mover" isInverted="true">
|
||||||
<!-- AUTO GENERATED DOOR -->
|
<!-- AUTO GENERATED DOOR -->
|
||||||
<nodes nodeZ="-12616">
|
<nodes nodeZ="-12616">
|
||||||
<node x="-118879" y="87320" />
|
<node x="-118879" y="87320" />
|
||||||
|
@@ -68,6 +68,7 @@
|
|||||||
<xs:attribute type="xs:positiveInteger" name="level" />
|
<xs:attribute type="xs:positiveInteger" name="level" />
|
||||||
<xs:attribute type="xs:string" name="name" />
|
<xs:attribute type="xs:string" name="name" />
|
||||||
<xs:attribute type="xs:positiveInteger" name="emmiterId" />
|
<xs:attribute type="xs:positiveInteger" name="emmiterId" />
|
||||||
|
<xs:attribute type="xs:boolean" name="isInverted" />
|
||||||
<xs:attribute type="xs:string" name="group" />
|
<xs:attribute type="xs:string" name="group" />
|
||||||
<xs:attribute type="xs:positiveInteger" name="childId" />
|
<xs:attribute type="xs:positiveInteger" name="childId" />
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
@@ -53,6 +53,7 @@ public final class L2DoorInstance extends L2Character
|
|||||||
{
|
{
|
||||||
private boolean _open = false;
|
private boolean _open = false;
|
||||||
private boolean _isAttackableDoor = false;
|
private boolean _isAttackableDoor = false;
|
||||||
|
private boolean _isInverted = false;
|
||||||
private int _meshindex = 1;
|
private int _meshindex = 1;
|
||||||
private Future<?> _autoCloseTask;
|
private Future<?> _autoCloseTask;
|
||||||
|
|
||||||
@@ -64,6 +65,7 @@ public final class L2DoorInstance extends L2Character
|
|||||||
setLethalable(false);
|
setLethalable(false);
|
||||||
_open = template.isOpenByDefault();
|
_open = template.isOpenByDefault();
|
||||||
_isAttackableDoor = template.isAttackable();
|
_isAttackableDoor = template.isAttackable();
|
||||||
|
_isInverted = template.isInverted();
|
||||||
super.setTargetable(template.isTargetable());
|
super.setTargetable(template.isTargetable());
|
||||||
|
|
||||||
if (isOpenableByTime())
|
if (isOpenableByTime())
|
||||||
@@ -227,6 +229,11 @@ public final class L2DoorInstance extends L2Character
|
|||||||
return _isAttackableDoor;
|
return _isAttackableDoor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isInverted()
|
||||||
|
{
|
||||||
|
return _isInverted;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean getIsShowHp()
|
public boolean getIsShowHp()
|
||||||
{
|
{
|
||||||
return getTemplate().isShowHp();
|
return getTemplate().isShowHp();
|
||||||
@@ -367,7 +374,14 @@ public final class L2DoorInstance extends L2Character
|
|||||||
OnEventTrigger oe = null;
|
OnEventTrigger oe = null;
|
||||||
if (getEmitter() > 0)
|
if (getEmitter() > 0)
|
||||||
{
|
{
|
||||||
oe = new OnEventTrigger(getEmitter(), isOpen());
|
if (isInverted())
|
||||||
|
{
|
||||||
|
oe = new OnEventTrigger(getEmitter(), !isOpen());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
oe = new OnEventTrigger(getEmitter(), isOpen());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (L2PcInstance player : knownPlayers)
|
for (L2PcInstance player : knownPlayers)
|
||||||
@@ -583,7 +597,14 @@ public final class L2DoorInstance extends L2Character
|
|||||||
{
|
{
|
||||||
if (getEmitter() > 0)
|
if (getEmitter() > 0)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(new OnEventTrigger(getEmitter(), isOpen()));
|
if (isInverted())
|
||||||
|
{
|
||||||
|
activeChar.sendPacket(new OnEventTrigger(getEmitter(), !isOpen()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
activeChar.sendPacket(new OnEventTrigger(getEmitter(), isOpen()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
activeChar.sendPacket(new StaticObject(this, activeChar.isGM()));
|
activeChar.sendPacket(new StaticObject(this, activeChar.isGM()));
|
||||||
}
|
}
|
||||||
|
@@ -55,6 +55,7 @@ public class L2DoorTemplate extends L2CharTemplate implements IIdentifiable
|
|||||||
private final boolean _checkCollision;
|
private final boolean _checkCollision;
|
||||||
private final boolean _isAttackableDoor;
|
private final boolean _isAttackableDoor;
|
||||||
private final boolean _stealth;
|
private final boolean _stealth;
|
||||||
|
private final boolean _isInverted;
|
||||||
|
|
||||||
public L2DoorTemplate(StatsSet set)
|
public L2DoorTemplate(StatsSet set)
|
||||||
{
|
{
|
||||||
@@ -105,6 +106,7 @@ public class L2DoorTemplate extends L2CharTemplate implements IIdentifiable
|
|||||||
}
|
}
|
||||||
_isAttackableDoor = set.getBoolean("attackable", false);
|
_isAttackableDoor = set.getBoolean("attackable", false);
|
||||||
_stealth = set.getBoolean("stealth", false);
|
_stealth = set.getBoolean("stealth", false);
|
||||||
|
_isInverted = set.getBoolean("isInverted", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -241,4 +243,9 @@ public class L2DoorTemplate extends L2CharTemplate implements IIdentifiable
|
|||||||
{
|
{
|
||||||
return _stealth;
|
return _stealth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isInverted()
|
||||||
|
{
|
||||||
|
return _isInverted;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -2100,7 +2100,7 @@
|
|||||||
<status showHp="false" />
|
<status showHp="false" />
|
||||||
<openStatus openMethod="BY_ITEM" default="close" />
|
<openStatus openMethod="BY_ITEM" default="close" />
|
||||||
</door>
|
</door>
|
||||||
<door id="16200012" level="1" name="nornildg_l" emmiterId="16200112">
|
<door id="16200012" level="1" name="nornildg_l" emmiterId="16200112" isInverted="true">
|
||||||
<nodes nodeZ="-13008">
|
<nodes nodeZ="-13008">
|
||||||
<node x="-111444" y="87371" />
|
<node x="-111444" y="87371" />
|
||||||
<node x="-111444" y="86980" />
|
<node x="-111444" y="86980" />
|
||||||
@@ -2124,7 +2124,7 @@
|
|||||||
<status targetable="false" showHp="false" isStealth="true" />
|
<status targetable="false" showHp="false" isStealth="true" />
|
||||||
<openStatus default="close" />
|
<openStatus default="close" />
|
||||||
</door>
|
</door>
|
||||||
<door id="16200014" level="1" name="past_door" emmiterId="16200114">
|
<door id="16200014" level="1" name="past_door" emmiterId="16200114" isInverted="true">
|
||||||
<nodes nodeZ="-12904">
|
<nodes nodeZ="-12904">
|
||||||
<node x="-113194" y="87322" />
|
<node x="-113194" y="87322" />
|
||||||
<node x="-113193" y="87037" />
|
<node x="-113193" y="87037" />
|
||||||
@@ -2136,7 +2136,7 @@
|
|||||||
<status showHp="false" />
|
<status showHp="false" />
|
||||||
<openStatus default="close" />
|
<openStatus default="close" />
|
||||||
</door>
|
</door>
|
||||||
<door id="16200015" level="1" name="present_door" emmiterId="16200115">
|
<door id="16200015" level="1" name="present_door" emmiterId="16200115" isInverted="true">
|
||||||
<nodes nodeZ="-12816">
|
<nodes nodeZ="-12816">
|
||||||
<node x="-115085" y="87321" />
|
<node x="-115085" y="87321" />
|
||||||
<node x="-115084" y="87036" />
|
<node x="-115084" y="87036" />
|
||||||
@@ -2148,7 +2148,7 @@
|
|||||||
<status showHp="false" />
|
<status showHp="false" />
|
||||||
<openStatus default="close" />
|
<openStatus default="close" />
|
||||||
</door>
|
</door>
|
||||||
<door id="16200016" level="1" name="future_door" emmiterId="16200116">
|
<door id="16200016" level="1" name="future_door" emmiterId="16200116" isInverted="true">
|
||||||
<nodes nodeZ="-12711">
|
<nodes nodeZ="-12711">
|
||||||
<node x="-116982" y="87319" />
|
<node x="-116982" y="87319" />
|
||||||
<node x="-116981" y="87034" />
|
<node x="-116981" y="87034" />
|
||||||
@@ -17139,7 +17139,7 @@
|
|||||||
<status showHp="false" />
|
<status showHp="false" />
|
||||||
<openStatus default="close" />
|
<openStatus default="close" />
|
||||||
</door>
|
</door>
|
||||||
<door id="16200201" name="nornil_cave_S.nornil_mover">
|
<door id="16200201" name="nornil_cave_S.nornil_mover" isInverted="true">
|
||||||
<!-- AUTO GENERATED DOOR -->
|
<!-- AUTO GENERATED DOOR -->
|
||||||
<nodes nodeZ="-12616">
|
<nodes nodeZ="-12616">
|
||||||
<node x="-118879" y="87320" />
|
<node x="-118879" y="87320" />
|
||||||
|
@@ -68,6 +68,7 @@
|
|||||||
<xs:attribute type="xs:positiveInteger" name="level" />
|
<xs:attribute type="xs:positiveInteger" name="level" />
|
||||||
<xs:attribute type="xs:string" name="name" />
|
<xs:attribute type="xs:string" name="name" />
|
||||||
<xs:attribute type="xs:positiveInteger" name="emmiterId" />
|
<xs:attribute type="xs:positiveInteger" name="emmiterId" />
|
||||||
|
<xs:attribute type="xs:boolean" name="isInverted" />
|
||||||
<xs:attribute type="xs:string" name="group" />
|
<xs:attribute type="xs:string" name="group" />
|
||||||
<xs:attribute type="xs:positiveInteger" name="childId" />
|
<xs:attribute type="xs:positiveInteger" name="childId" />
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
|
@@ -53,6 +53,7 @@ public final class L2DoorInstance extends L2Character
|
|||||||
{
|
{
|
||||||
private boolean _open = false;
|
private boolean _open = false;
|
||||||
private boolean _isAttackableDoor = false;
|
private boolean _isAttackableDoor = false;
|
||||||
|
private boolean _isInverted = false;
|
||||||
private int _meshindex = 1;
|
private int _meshindex = 1;
|
||||||
private Future<?> _autoCloseTask;
|
private Future<?> _autoCloseTask;
|
||||||
|
|
||||||
@@ -64,6 +65,7 @@ public final class L2DoorInstance extends L2Character
|
|||||||
setLethalable(false);
|
setLethalable(false);
|
||||||
_open = template.isOpenByDefault();
|
_open = template.isOpenByDefault();
|
||||||
_isAttackableDoor = template.isAttackable();
|
_isAttackableDoor = template.isAttackable();
|
||||||
|
_isInverted = template.isInverted();
|
||||||
super.setTargetable(template.isTargetable());
|
super.setTargetable(template.isTargetable());
|
||||||
|
|
||||||
if (isOpenableByTime())
|
if (isOpenableByTime())
|
||||||
@@ -227,6 +229,11 @@ public final class L2DoorInstance extends L2Character
|
|||||||
return _isAttackableDoor;
|
return _isAttackableDoor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isInverted()
|
||||||
|
{
|
||||||
|
return _isInverted;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean getIsShowHp()
|
public boolean getIsShowHp()
|
||||||
{
|
{
|
||||||
return getTemplate().isShowHp();
|
return getTemplate().isShowHp();
|
||||||
@@ -367,7 +374,14 @@ public final class L2DoorInstance extends L2Character
|
|||||||
OnEventTrigger oe = null;
|
OnEventTrigger oe = null;
|
||||||
if (getEmitter() > 0)
|
if (getEmitter() > 0)
|
||||||
{
|
{
|
||||||
oe = new OnEventTrigger(getEmitter(), isOpen());
|
if (isInverted())
|
||||||
|
{
|
||||||
|
oe = new OnEventTrigger(getEmitter(), !isOpen());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
oe = new OnEventTrigger(getEmitter(), isOpen());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (L2PcInstance player : knownPlayers)
|
for (L2PcInstance player : knownPlayers)
|
||||||
@@ -583,7 +597,14 @@ public final class L2DoorInstance extends L2Character
|
|||||||
{
|
{
|
||||||
if (getEmitter() > 0)
|
if (getEmitter() > 0)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(new OnEventTrigger(getEmitter(), isOpen()));
|
if (isInverted())
|
||||||
|
{
|
||||||
|
activeChar.sendPacket(new OnEventTrigger(getEmitter(), !isOpen()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
activeChar.sendPacket(new OnEventTrigger(getEmitter(), isOpen()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
activeChar.sendPacket(new StaticObject(this, activeChar.isGM()));
|
activeChar.sendPacket(new StaticObject(this, activeChar.isGM()));
|
||||||
}
|
}
|
||||||
|
@@ -55,6 +55,7 @@ public class L2DoorTemplate extends L2CharTemplate implements IIdentifiable
|
|||||||
private final boolean _checkCollision;
|
private final boolean _checkCollision;
|
||||||
private final boolean _isAttackableDoor;
|
private final boolean _isAttackableDoor;
|
||||||
private final boolean _stealth;
|
private final boolean _stealth;
|
||||||
|
private final boolean _isInverted;
|
||||||
|
|
||||||
public L2DoorTemplate(StatsSet set)
|
public L2DoorTemplate(StatsSet set)
|
||||||
{
|
{
|
||||||
@@ -105,6 +106,7 @@ public class L2DoorTemplate extends L2CharTemplate implements IIdentifiable
|
|||||||
}
|
}
|
||||||
_isAttackableDoor = set.getBoolean("attackable", false);
|
_isAttackableDoor = set.getBoolean("attackable", false);
|
||||||
_stealth = set.getBoolean("stealth", false);
|
_stealth = set.getBoolean("stealth", false);
|
||||||
|
_isInverted = set.getBoolean("isInverted", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -241,4 +243,9 @@ public class L2DoorTemplate extends L2CharTemplate implements IIdentifiable
|
|||||||
{
|
{
|
||||||
return _stealth;
|
return _stealth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isInverted()
|
||||||
|
{
|
||||||
|
return _isInverted;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user