Fixed dice rolling.

This commit is contained in:
MobiusDev
2018-09-10 04:04:19 +00:00
parent 3efc7c11df
commit 776162c7ec
25 changed files with 199 additions and 19 deletions

View File

@@ -17,7 +17,9 @@
package handlers.itemhandlers;
import com.l2jmobius.commons.util.Rnd;
import com.l2jmobius.gameserver.geoengine.GeoEngine;
import com.l2jmobius.gameserver.handler.IItemHandler;
import com.l2jmobius.gameserver.model.Location;
import com.l2jmobius.gameserver.model.actor.L2Playable;
import com.l2jmobius.gameserver.model.actor.instance.L2PcInstance;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
@@ -26,6 +28,7 @@ import com.l2jmobius.gameserver.network.SystemMessageId;
import com.l2jmobius.gameserver.network.serverpackets.Dice;
import com.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import com.l2jmobius.gameserver.util.Broadcast;
import com.l2jmobius.gameserver.util.Util;
public class RollingDice implements IItemHandler
{
@@ -54,7 +57,18 @@ public class RollingDice implements IItemHandler
return false;
}
Broadcast.toSelfAndKnownPlayers(activeChar, new Dice(activeChar.getObjectId(), itemId, number, activeChar.getX() - 30, activeChar.getY() - 30, activeChar.getZ()));
// Mobius: Retail dice position land calculation.
final double angle = Util.convertHeadingToDegree(activeChar.getHeading());
final double radian = Math.toRadians(angle);
final double course = Math.toRadians(180);
final int x1 = (int) (Math.cos(Math.PI + radian + course) * 40);
final int y1 = (int) (Math.sin(Math.PI + radian + course) * 40);
final int x = activeChar.getX() + x1;
final int y = activeChar.getY() + y1;
final int z = activeChar.getZ();
final Location destination = GeoEngine.getInstance().canMoveToTargetLoc(activeChar.getX(), activeChar.getY(), activeChar.getZ(), x, y, z, activeChar.getInstanceWorld());
Broadcast.toSelfAndKnownPlayers(activeChar, new Dice(activeChar.getObjectId(), itemId, number, destination.getX(), destination.getY(), destination.getZ()));
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_HAS_ROLLED_A_S2);
sm.addString(activeChar.getName());

View File

@@ -505,8 +505,11 @@
<set name="default_action" val="DICE" />
<set name="immediate_effect" val="true" />
<set name="material" val="STEEL" />
<set name="price" val="500" />
<set name="reuse_delay" val="5000" />
<set name="is_dropable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="is_destroyable" val="false" />
<set name="handler" val="RollingDice" />
</item>
<item id="4233" name="Knuckle Duster" type="Weapon">
<!-- When enchanted, P. Atk. of a dualsword increases more significantly than that of one-handed or fist weapon. Can bestow 1 regular Soul Crystal and 1 Special Soul Crystal. -->

View File

@@ -282,6 +282,7 @@
<set name="immediate_effect" val="true" />
<set name="material" val="STEEL" />
<set name="price" val="500" />
<set name="reuse_delay" val="5000" />
<set name="is_dropable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="handler" val="RollingDice" />
@@ -293,6 +294,7 @@
<set name="immediate_effect" val="true" />
<set name="material" val="STEEL" />
<set name="price" val="500" />
<set name="reuse_delay" val="5000" />
<set name="is_dropable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="handler" val="RollingDice" />
@@ -304,6 +306,7 @@
<set name="immediate_effect" val="true" />
<set name="material" val="STEEL" />
<set name="price" val="500" />
<set name="reuse_delay" val="5000" />
<set name="is_dropable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="handler" val="RollingDice" />
@@ -315,6 +318,7 @@
<set name="immediate_effect" val="true" />
<set name="material" val="STEEL" />
<set name="price" val="500" />
<set name="reuse_delay" val="5000" />
<set name="is_dropable" val="false" />
<set name="commissionItemType" val="OTHER_ITEM" />
<set name="handler" val="RollingDice" />