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" />
<openStatus openMethod="BY_ITEM" default="close" />
</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">
<node x="-111444" y="87371" />
<node x="-111444" y="86980" />
@ -2124,7 +2124,7 @@
<status targetable="false" showHp="false" isStealth="true" />
<openStatus default="close" />
</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">
<node x="-113194" y="87322" />
<node x="-113193" y="87037" />
@ -2136,7 +2136,7 @@
<status showHp="false" />
<openStatus default="close" />
</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">
<node x="-115085" y="87321" />
<node x="-115084" y="87036" />
@ -2148,7 +2148,7 @@
<status showHp="false" />
<openStatus default="close" />
</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">
<node x="-116982" y="87319" />
<node x="-116981" y="87034" />
@ -17139,7 +17139,7 @@
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="16200201" name="nornil_cave_S.nornil_mover">
<door id="16200201" name="nornil_cave_S.nornil_mover" isInverted="true">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="-12616">
<node x="-118879" y="87320" />

View File

@ -68,6 +68,7 @@
<xs:attribute type="xs:positiveInteger" name="level" />
<xs:attribute type="xs:string" name="name" />
<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:positiveInteger" name="childId" />
</xs:complexType>

View File

@ -53,6 +53,7 @@ public final class L2DoorInstance extends L2Character
{
private boolean _open = false;
private boolean _isAttackableDoor = false;
private boolean _isInverted = false;
private int _meshindex = 1;
private Future<?> _autoCloseTask;
@ -64,6 +65,7 @@ public final class L2DoorInstance extends L2Character
setLethalable(false);
_open = template.isOpenByDefault();
_isAttackableDoor = template.isAttackable();
_isInverted = template.isInverted();
super.setTargetable(template.isTargetable());
if (isOpenableByTime())
@ -227,6 +229,11 @@ public final class L2DoorInstance extends L2Character
return _isAttackableDoor;
}
public boolean isInverted()
{
return _isInverted;
}
public boolean getIsShowHp()
{
return getTemplate().isShowHp();
@ -367,7 +374,14 @@ public final class L2DoorInstance extends L2Character
OnEventTrigger oe = null;
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)
@ -583,7 +597,14 @@ public final class L2DoorInstance extends L2Character
{
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()));
}

View File

@ -55,6 +55,7 @@ public class L2DoorTemplate extends L2CharTemplate implements IIdentifiable
private final boolean _checkCollision;
private final boolean _isAttackableDoor;
private final boolean _stealth;
private final boolean _isInverted;
public L2DoorTemplate(StatsSet set)
{
@ -105,6 +106,7 @@ public class L2DoorTemplate extends L2CharTemplate implements IIdentifiable
}
_isAttackableDoor = set.getBoolean("attackable", false);
_stealth = set.getBoolean("stealth", false);
_isInverted = set.getBoolean("isInverted", false);
}
/**
@ -241,4 +243,9 @@ public class L2DoorTemplate extends L2CharTemplate implements IIdentifiable
{
return _stealth;
}
public boolean isInverted()
{
return _isInverted;
}
}

View File

@ -2100,7 +2100,7 @@
<status showHp="false" />
<openStatus openMethod="BY_ITEM" default="close" />
</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">
<node x="-111444" y="87371" />
<node x="-111444" y="86980" />
@ -2124,7 +2124,7 @@
<status targetable="false" showHp="false" isStealth="true" />
<openStatus default="close" />
</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">
<node x="-113194" y="87322" />
<node x="-113193" y="87037" />
@ -2136,7 +2136,7 @@
<status showHp="false" />
<openStatus default="close" />
</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">
<node x="-115085" y="87321" />
<node x="-115084" y="87036" />
@ -2148,7 +2148,7 @@
<status showHp="false" />
<openStatus default="close" />
</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">
<node x="-116982" y="87319" />
<node x="-116981" y="87034" />
@ -17139,7 +17139,7 @@
<status showHp="false" />
<openStatus default="close" />
</door>
<door id="16200201" name="nornil_cave_S.nornil_mover">
<door id="16200201" name="nornil_cave_S.nornil_mover" isInverted="true">
<!-- AUTO GENERATED DOOR -->
<nodes nodeZ="-12616">
<node x="-118879" y="87320" />

View File

@ -68,6 +68,7 @@
<xs:attribute type="xs:positiveInteger" name="level" />
<xs:attribute type="xs:string" name="name" />
<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:positiveInteger" name="childId" />
</xs:complexType>

View File

@ -53,6 +53,7 @@ public final class L2DoorInstance extends L2Character
{
private boolean _open = false;
private boolean _isAttackableDoor = false;
private boolean _isInverted = false;
private int _meshindex = 1;
private Future<?> _autoCloseTask;
@ -64,6 +65,7 @@ public final class L2DoorInstance extends L2Character
setLethalable(false);
_open = template.isOpenByDefault();
_isAttackableDoor = template.isAttackable();
_isInverted = template.isInverted();
super.setTargetable(template.isTargetable());
if (isOpenableByTime())
@ -227,6 +229,11 @@ public final class L2DoorInstance extends L2Character
return _isAttackableDoor;
}
public boolean isInverted()
{
return _isInverted;
}
public boolean getIsShowHp()
{
return getTemplate().isShowHp();
@ -367,7 +374,14 @@ public final class L2DoorInstance extends L2Character
OnEventTrigger oe = null;
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)
@ -583,7 +597,14 @@ public final class L2DoorInstance extends L2Character
{
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()));
}

View File

@ -55,6 +55,7 @@ public class L2DoorTemplate extends L2CharTemplate implements IIdentifiable
private final boolean _checkCollision;
private final boolean _isAttackableDoor;
private final boolean _stealth;
private final boolean _isInverted;
public L2DoorTemplate(StatsSet set)
{
@ -105,6 +106,7 @@ public class L2DoorTemplate extends L2CharTemplate implements IIdentifiable
}
_isAttackableDoor = set.getBoolean("attackable", false);
_stealth = set.getBoolean("stealth", false);
_isInverted = set.getBoolean("isInverted", false);
}
/**
@ -241,4 +243,9 @@ public class L2DoorTemplate extends L2CharTemplate implements IIdentifiable
{
return _stealth;
}
public boolean isInverted()
{
return _isInverted;
}
}