Skip to content
Snippets Groups Projects
Commit 7d9e4722 authored by Zoey76's avatar Zoey76
Browse files

BETA: Datapack fixes:

	* [8615] Improvements, thanks jurchiks for noticing it/fix contribution.
	* Treykan Transformation fixes, based on thecast/nonom contribution.
	* Darkamane Peacer Transformation fixes.
	* Dissonance(5437) skill fixes.
	* Cursed Body(967) skill pre-implemented, proper effects will come in next updates.
parent 63c8abde
No related branches found
No related tags found
No related merge requests found
<html><head><body>Welcome to the <font color="LEVEL">Dueling Area</font>.<br>Fighting and killing does not lead to chaos here. Death does not cause forfeiture of experience points or items. You may fight, kill and die as you please.<br> The area outside the fence is a <font color="LEVEL">Peaceful Zone</font> where violence is not tolerated.<br>
<html><body>
Welcome to the <font color="LEVEL">Dueling Area</font>.<br>
Fighting and killing does not lead to chaos here. Death does not cause forfeiture of experience points or items. You may fight, kill and die as you please.<br>
The area outside the fence is a <font color="LEVEL">Peaceful Zone</font> where violence is not tolerated.<br>
*Warning: If a chaotic character whose PK count is 6 or higher dies in a dueling arena, he/she has a chance of dropping an item.
</body></html>
\ No newline at end of file
<html><head><body>Tomb of the Crystalline Golem:<br>Faint wavy writings grow clearer and bolder as you read:<br>...Long ago, Balor was gravely injured by the Water Dragon. Since then, he has feared the <font color="LEVEL">Water Dragon's Claw</font>... The claw has been passed down to the Dragon's children in the Chromatic Highlands...</body></html>
\ No newline at end of file
<html><body>
Tomb of the Crystalline Golem:<br>
Faint wavy writings grow clearer and bolder as you read:<br>
...Long ago, Balor was gravely injured by the Water Dragon. Since then, he has feared the <font color="LEVEL">Water Dragon's Claw</font>... The claw has been passed down to the Dragon's children in the Chromatic Highlands...
</body></html>
\ No newline at end of file
......@@ -28,37 +28,38 @@ import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
public class L2StaticObjectInstanceAction implements IActionHandler
{
@Override
public boolean action(L2PcInstance activeChar, L2Object target, boolean interact)
public boolean action(final L2PcInstance activeChar, final L2Object target, final boolean interact)
{
if (((L2StaticObjectInstance) target).getType() < 0)
final L2StaticObjectInstance staticObject = (L2StaticObjectInstance) target;
if (staticObject.getType() < 0)
{
_log.info("L2StaticObjectInstance: StaticObject with invalid type! StaticObjectId: " + ((L2StaticObjectInstance) target).getStaticObjectId());
_log.info("L2StaticObjectInstance: StaticObject with invalid type! StaticObjectId: " + staticObject.getStaticObjectId());
}
// Check if the L2PcInstance already target the L2NpcInstance
if (activeChar.getTarget() != target)
if (activeChar.getTarget() != staticObject)
{
// Set the target of the L2PcInstance activeChar
activeChar.setTarget(target);
activeChar.sendPacket(new MyTargetSelected(target.getObjectId(), 0));
activeChar.setTarget(staticObject);
activeChar.sendPacket(new MyTargetSelected(staticObject.getObjectId(), 0));
}
else if (interact)
{
activeChar.sendPacket(new MyTargetSelected(target.getObjectId(), 0));
activeChar.sendPacket(new MyTargetSelected(staticObject.getObjectId(), 0));
// Calculate the distance between the L2PcInstance and the L2NpcInstance
if (!activeChar.isInsideRadius(target, L2Npc.INTERACTION_DISTANCE, false, false))
if (!activeChar.isInsideRadius(staticObject, L2Npc.INTERACTION_DISTANCE, false, false))
{
// Notify the L2PcInstance AI with AI_INTENTION_INTERACT
activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, target);
activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, staticObject);
}
else
{
if ((((L2StaticObjectInstance) target).getType() == 2) && (((L2StaticObjectInstance) target).getStaticObjectId() == 24230101))
if (staticObject.getType() == 2)
{
String filename = "data/html/signboards/tomb_of_crystalgolem.htm";
String content = HtmCache.getInstance().getHtm(activeChar.getHtmlPrefix(), filename);
NpcHtmlMessage html = new NpcHtmlMessage(target.getObjectId());
final String filename = (staticObject.getStaticObjectId() == 24230101) ? "data/html/signboards/pvp_signboard.htm" : "data/html/signboards/tomb_of_crystalgolem.htm";
final String content = HtmCache.getInstance().getHtm(activeChar.getHtmlPrefix(), filename);
final NpcHtmlMessage html = new NpcHtmlMessage(staticObject.getObjectId());
if (content == null)
{
......@@ -71,26 +72,9 @@ public class L2StaticObjectInstanceAction implements IActionHandler
activeChar.sendPacket(html);
}
else if ((((L2StaticObjectInstance) target).getType() == 2) && (((L2StaticObjectInstance) target).getStaticObjectId() != 24230101))
else if (staticObject.getType() == 0)
{
String filename = "data/html/signboards/pvp_signboard.htm";
String content = HtmCache.getInstance().getHtm(activeChar.getHtmlPrefix(), filename);
NpcHtmlMessage html = new NpcHtmlMessage(target.getObjectId());
if (content == null)
{
html.setHtml("<html><body>Signboard is missing:<br>" + filename + "</body></html>");
}
else
{
html.setHtml(content);
}
activeChar.sendPacket(html);
}
else if (((L2StaticObjectInstance) target).getType() == 0)
{
activeChar.sendPacket(((L2StaticObjectInstance) target).getMap());
activeChar.sendPacket(staticObject.getMap());
}
}
}
......
......@@ -4,10 +4,14 @@ import com.l2jserver.gameserver.datatables.SkillTable;
import com.l2jserver.gameserver.instancemanager.TransformationManager;
import com.l2jserver.gameserver.model.L2Transformation;
public class LightPurpleManedHorse extends L2Transformation
public class DarkmanePacer extends L2Transformation
{
private static final int[] SKILLS = {5491,839};
public LightPurpleManedHorse()
private static final int[] SKILLS =
{
5437, 839
};
public DarkmanePacer()
{
// id, colRadius, colHeight
super(106, 31, 32.5);
......@@ -16,16 +20,18 @@ public class LightPurpleManedHorse extends L2Transformation
@Override
public void onTransform()
{
if (getPlayer().getTransformationId() != 106 || getPlayer().isCursedWeaponEquipped())
if ((getPlayer().getTransformationId() != 106) || getPlayer().isCursedWeaponEquipped())
{
return;
}
transformedSkills();
}
public void transformedSkills()
{
// Decrease Bow/Crossbow Attack Speed
getPlayer().addSkill(SkillTable.getInstance().getInfo(5491, 1), false);
// Dissonance
getPlayer().addSkill(SkillTable.getInstance().getInfo(5437, 2), false);
// Dismount
getPlayer().addSkill(SkillTable.getInstance().getInfo(839, 1), false);
......@@ -40,8 +46,8 @@ public class LightPurpleManedHorse extends L2Transformation
public void removeSkills()
{
// Decrease Bow/Crossbow Attack Speed
getPlayer().removeSkill(SkillTable.getInstance().getInfo(5491, 1), false);
// Dissonance
getPlayer().removeSkill(SkillTable.getInstance().getInfo(5437, 2), false);
// Dismount
getPlayer().removeSkill(SkillTable.getInstance().getInfo(839, 1), false);
......@@ -50,6 +56,6 @@ public class LightPurpleManedHorse extends L2Transformation
public static void main(String[] args)
{
TransformationManager.getInstance().registerTransformation(new LightPurpleManedHorse());
TransformationManager.getInstance().registerTransformation(new DarkmanePacer());
}
}
......@@ -6,7 +6,10 @@ import com.l2jserver.gameserver.model.L2Transformation;
public class Treykan extends L2Transformation
{
private static final int[] SKILLS = new int[]{619};
private static final int[] SKILLS = new int[]
{
619, 967, 968, 969, 5437
};
public Treykan()
{
......@@ -17,8 +20,10 @@ public class Treykan extends L2Transformation
@Override
public void onTransform()
{
if (getPlayer().getTransformationId() != 126 || getPlayer().isCursedWeaponEquipped())
if ((getPlayer().getTransformationId() != 126) || getPlayer().isCursedWeaponEquipped())
{
return;
}
transformedSkills();
}
......@@ -27,6 +32,14 @@ public class Treykan extends L2Transformation
{
// Transform Dispel
getPlayer().addSkill(SkillTable.getInstance().getInfo(619, 1), false);
// Cursed Body
getPlayer().addSkill(SkillTable.getInstance().getInfo(967, 1), false);
// Treykan Claw
getPlayer().addSkill(SkillTable.getInstance().getInfo(968, 1), false);
// Treykan Dash
getPlayer().addSkill(SkillTable.getInstance().getInfo(969, 1), false);
// Dissonance
getPlayer().addSkill(SkillTable.getInstance().getInfo(5437, 1), false);
getPlayer().setTransformAllowedSkills(SKILLS);
}
......@@ -41,6 +54,14 @@ public class Treykan extends L2Transformation
{
// Transform Dispel
getPlayer().removeSkill(SkillTable.getInstance().getInfo(619, 1), false);
// Cursed Body
getPlayer().removeSkill(SkillTable.getInstance().getInfo(967, 1), false);
// Treykan Claw
getPlayer().removeSkill(SkillTable.getInstance().getInfo(968, 1), false);
// Treykan Dash
getPlayer().removeSkill(SkillTable.getInstance().getInfo(969, 1), false);
// Dissonance
getPlayer().removeSkill(SkillTable.getInstance().getInfo(5437, 1), false);
getPlayer().setTransformAllowedSkills(EMPTY_ARRAY);
}
......
......@@ -1257,9 +1257,10 @@
<skill id="967" levels="1" name="Cursed Body">
<!-- Cursed body. Recovery is not possible. -->
<set name="magicLvl" val="85" />
<set name="skillType" val="NOTDONE" />
<set name="operateType" val="OP_PASSIVE" />
<set name="target" val="TARGET_NONE" />
<set name="skillType" val="BUFF" />
<set name="target" val="TARGET_SELF" />
<!-- TODO: Implement and use proper effects. -->
</skill>
<skill id="968" levels="1" name="Treykan Claw">
<!-- Confirmed CT2.5 -->
......
......@@ -403,14 +403,20 @@
<set name="operateType" val="OP_PASSIVE" />
</skill>
<skill id="5437" levels="2" name="Dissonance">
<set name="target" val="TARGET_SELF" />
<set name="skillType" val="BUFF" />
<!-- Confirmed CT2.5 -->
<table name="#def"> 0.6 1 </table>
<table name="#avoid"> 50 0 </table>
<set name="operateType" val="OP_PASSIVE" />
<set name="skillType" val="BUFF" />
<set name="target" val="TARGET_SELF" />
<for>
<mul order="0x30" stat="pAtk" val="0.95" />
<mul order="0x30" stat="mAtk" val="0.95" />
<sub order="0x40" stat="accCombat" val="50" />
<add order="0x40" stat="runSpd" val="5" />
<mul order="0x30" stat="pDef" val="#def" />
<mul order="0x30" stat="mDef" val="#def" />
<sub order="0x40" stat="rEvas" val="#avoid" />
</for>
</skill>
<skill id="5438" levels="9" name="NPC party 30 Clan Heal">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment