PIN system + player ranking fix + rebalanced equip EXP calculations
Added the PIN feature. Fixed ranking now calculating ranks now world-based instead of overall. Rebalanced equip exp gain and made cosmetic equipments no more leveling up (cosmetics leveling up are useless).
This commit is contained in:
@@ -3454,7 +3454,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
if (this.guildid > 0) {
|
||||
getGuild().broadcast(MaplePacketCreator.levelUpMessage(2, level, name), this.getId());
|
||||
}
|
||||
if (ServerConstants.PERFECT_PITCH && level >= 30) {
|
||||
if (ServerConstants.USE_PERFECT_PITCH && level >= 30) {
|
||||
//milestones?
|
||||
if (MapleInventoryManipulator.checkSpace(client, 4310000, (short) 1, "")) {
|
||||
MapleInventoryManipulator.addById(client, 4310000, (short) 1);
|
||||
@@ -6183,6 +6183,20 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void showAllEquipFeatures() {
|
||||
MapleItemInformationProvider mii = MapleItemInformationProvider.getInstance();
|
||||
|
||||
for (Item item : getInventory(MapleInventoryType.EQUIPPED).list()) {
|
||||
Equip nEquip = (Equip) item;
|
||||
String itemName = mii.getName(nEquip.getItemId());
|
||||
if (itemName == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
nEquip.showEquipFeatures(client);
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String, MapleEvents> getEvents() {
|
||||
return events;
|
||||
|
||||
@@ -310,14 +310,12 @@ public class Commands {
|
||||
public static boolean executePlayerCommand(MapleClient c, String[] sub, char heading) {
|
||||
MapleCharacter player = c.getPlayer();
|
||||
if (heading == '!' && player.gmLevel() == 0) {
|
||||
player.yellowMessage("You may not use !" + sub[0] + ", please try /" + sub[0]);
|
||||
player.yellowMessage("You may not use !" + sub[0] + ", please try @" + sub[0] + ". For a full list of commands, try @help.");
|
||||
return false;
|
||||
}
|
||||
switch (sub[0]) {
|
||||
case "help":
|
||||
case "commands":
|
||||
|
||||
|
||||
case "playercommands":
|
||||
player.message("============================================================");
|
||||
player.message("MapleSolaxiaV2 Player Commands");
|
||||
@@ -337,6 +335,7 @@ public class Commands {
|
||||
player.message("@whodrops <item name>: Displays monsters that drop an item given an item name.");
|
||||
player.message("@uptime: Shows how long Solaxia has been online.");
|
||||
player.message("@bosshp: Displays the remaining HP of the bosses on your map.");
|
||||
player.message("@equiplv: Displays relations of level and experience of every item you have equipped.");
|
||||
if(ServerConstants.USE_DEBUG) {
|
||||
player.message("@debugpos: Displays the coordinates on the map the player is currently located.");
|
||||
player.message("@debugmap: Displays info about the current map the player is located.");
|
||||
@@ -478,6 +477,11 @@ public class Commands {
|
||||
c.removeClickedNPC();
|
||||
player.message("You've been disposed.");
|
||||
break;
|
||||
|
||||
case "equiplv":
|
||||
player.showAllEquipFeatures();
|
||||
break;
|
||||
|
||||
case "rates":
|
||||
//c.resetVoteTime();
|
||||
player.yellowMessage("BOSSDROP RATE");
|
||||
|
||||
@@ -60,10 +60,6 @@ public class Equip extends Item {
|
||||
private StatUpgrade(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
private int getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
private byte upgradeSlots;
|
||||
@@ -475,13 +471,14 @@ public class Equip extends Item {
|
||||
}
|
||||
|
||||
private double normalizedMasteryExp(int reqLevel) {
|
||||
return Math.max((2622.71 * Math.exp(reqLevel * 0.0533649)) - 6000.0, 15);
|
||||
return Math.max((2622.71 * Math.exp(reqLevel * 0.0733649)) - 6000.0, 15);
|
||||
}
|
||||
|
||||
public void gainItemExp(MapleClient c, int gain) { // Ronan's Equip Exp gain method
|
||||
if(itemLevel >= 30) return;
|
||||
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
|
||||
if(!ii.isUpgradeable(this.getItemId()) || itemLevel >= 30) return;
|
||||
|
||||
int reqLevel = MapleItemInformationProvider.getInstance().getEquipStats(this.getItemId()).get("reqLevel");
|
||||
int reqLevel = ii.getEquipStats(this.getItemId()).get("reqLevel");
|
||||
|
||||
float masteryModifier = (float)ExpTable.getExpNeededForLevel(1) / (float)normalizedMasteryExp(reqLevel);
|
||||
float elementModifier = (isElemental) ? 0.85f : 0.6f;
|
||||
@@ -491,7 +488,7 @@ public class Equip extends Item {
|
||||
itemExp += baseExpGain;
|
||||
int expNeeded = ExpTable.getEquipExpNeededForLevel(itemLevel);
|
||||
|
||||
//System.out.println("'" + MapleItemInformationProvider.getInstance().getName(this.getItemId()) + "' -> EXP Gain: " + gain + " Mastery: " + masteryModifier + "Base gain: " + baseExpGain + " exp: " + itemExp + " / " + expNeeded);
|
||||
if(ServerConstants.USE_DEBUG_SHOW_INFO_EQPEXP) System.out.println("'" + ii.getName(this.getItemId()) + "' -> EXP Gain: " + gain + " Mastery: " + masteryModifier + " Base gain: " + baseExpGain + " exp: " + itemExp + " / " + expNeeded);
|
||||
|
||||
if (itemExp >= expNeeded) {
|
||||
while(itemExp >= expNeeded) {
|
||||
@@ -507,9 +504,32 @@ public class Equip extends Item {
|
||||
}
|
||||
} else {
|
||||
c.getPlayer().forceUpdateItem(this);
|
||||
//if(ServerConstants.USE_DEBUG) c.getPlayer().dropMessage("'" + MapleItemInformationProvider.getInstance().getName(this.getItemId()) + "': " + itemExp + " / " + expNeeded);
|
||||
//if(ServerConstants.USE_DEBUG) c.getPlayer().dropMessage("'" + ii.getName(this.getItemId()) + "': " + itemExp + " / " + expNeeded);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean reachedMaxLevel(String eqpName) {
|
||||
if(isElemental) {
|
||||
if(eqpName.contains("Timeless")) {
|
||||
if(itemLevel < 6) return false;
|
||||
} else {
|
||||
if(itemLevel < 4) return false;
|
||||
}
|
||||
}
|
||||
|
||||
if(itemLevel < ServerConstants.USE_EQUIPMNT_LVLUP) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public void showEquipFeatures(MapleClient c) {
|
||||
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
|
||||
if(!ii.isUpgradeable(this.getItemId())) return;
|
||||
|
||||
String eqpName = ii.getName(getItemId());
|
||||
String eqpInfo = reachedMaxLevel(eqpName) ? " - MAX LEVEL" : (" EXP: " + itemExp + " / " + ExpTable.getEquipExpNeededForLevel(itemLevel));
|
||||
|
||||
c.getPlayer().dropMessage(5, "'" + eqpName + "' -> Level: " + itemLevel + eqpInfo);
|
||||
}
|
||||
|
||||
public void setItemExp(int exp) {
|
||||
this.itemExp = exp;
|
||||
|
||||
Reference in New Issue
Block a user