Support for inverted doors.

This commit is contained in:
MobiusDev
2017-02-25 13:35:30 +00:00
parent d6de2740bd
commit 5ecaf41431
8 changed files with 72 additions and 14 deletions

View File

@@ -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" />

View File

@@ -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>

View File

@@ -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()));
} }

View File

@@ -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;
}
} }

View File

@@ -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" />

View File

@@ -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>

View File

@@ -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()));
} }

View File

@@ -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;
}
} }