Script clean-up Patch

Fixed bugs in some scripts, minor game patches.
This commit is contained in:
ronancpl
2016-08-01 11:17:31 -03:00
parent 63d0e87d4d
commit ab6074a40c
10 changed files with 255 additions and 49 deletions
+154
View File
@@ -0,0 +1,154 @@
var minPlayers = 1;
function init() {
em.setProperty("state", "0");
em.setProperty("leader", "true");
}
function setup(level, leaderid) {
em.setProperty("state", "1");
em.setProperty("leader", "true");
var eim = em.newInstance("Pirate" + leaderid);
em.setProperty("stage2", "0");
em.setProperty("stage2a", "0");
em.setProperty("stage3a", "0");
em.setProperty("stage4", "0");
em.setProperty("stage5", "0");
eim.setInstanceMap(925100000).resetPQ(level);
eim.setInstanceMap(925100100).resetPQ(level);
var map = eim.setInstanceMap(925100200);
map.resetPQ(level);
for (var i = 0; i < 5; i++) {
var mob = em.getMonster(9300124);
var mob2 = em.getMonster(9300125);
var mob3 = em.getMonster(9300124);
var mob4 = em.getMonster(9300125);
eim.registerMonster(mob);
eim.registerMonster(mob2);
eim.registerMonster(mob3);
eim.registerMonster(mob4);
mob.changeLevel(level);
mob2.changeLevel(level);
mob3.changeLevel(level);
mob4.changeLevel(level);
map.spawnMonsterOnGroundBelow(mob, new java.awt.Point(430, 75));
map.spawnMonsterOnGroundBelow(mob2, new java.awt.Point(1600, 75));
map.spawnMonsterOnGroundBelow(mob3, new java.awt.Point(430, 238));
map.spawnMonsterOnGroundBelow(mob4, new java.awt.Point(1600, 238));
}
map = eim.setInstanceMap(925100201);
map.resetPQ(level);
for (var i = 0; i < 10; i++) {
var mob = em.getMonster(9300112);
var mob2 = em.getMonster(9300113);
eim.registerMonster(mob);
eim.registerMonster(mob2);
mob.changeLevel(level);
mob2.changeLevel(level);
map.spawnMonsterOnGroundBelow(mob, new java.awt.Point(0, 238));
map.spawnMonsterOnGroundBelow(mob2, new java.awt.Point(1700, 238));
}
eim.setInstanceMap(925100202).resetPQ(level);
map = eim.setInstanceMap(925100300);
map.resetPQ(level);
for (var i = 0; i < 5; i++) {
var mob = em.getMonster(9300124);
var mob2 = em.getMonster(9300125);
var mob3 = em.getMonster(9300124);
var mob4 = em.getMonster(9300125);
eim.registerMonster(mob);
eim.registerMonster(mob2);
eim.registerMonster(mob3);
eim.registerMonster(mob4);
mob.changeLevel(level);
mob2.changeLevel(level);
mob3.changeLevel(level);
mob4.changeLevel(level);
map.spawnMonsterOnGroundBelow(mob, new java.awt.Point(430, 75));
map.spawnMonsterOnGroundBelow(mob2, new java.awt.Point(1600, 75));
map.spawnMonsterOnGroundBelow(mob3, new java.awt.Point(430, 238));
map.spawnMonsterOnGroundBelow(mob4, new java.awt.Point(1600, 238));
}
map = eim.setInstanceMap(925100301);
map.resetPQ(level);
for (var i = 0; i < 10; i++) {
var mob = em.getMonster(9300112);
var mob2 = em.getMonster(9300113);
eim.registerMonster(mob);
eim.registerMonster(mob2);
mob.changeLevel(level);
mob2.changeLevel(level);
map.spawnMonsterOnGroundBelow(mob, new java.awt.Point(0, 238));
map.spawnMonsterOnGroundBelow(mob2, new java.awt.Point(1700, 238));
}
eim.setInstanceMap(925100302).resetPQ(level);
eim.setInstanceMap(925100400).resetPQ(level);
eim.setInstanceMap(925100500).resetPQ(level);
eim.startEventTimer(1200000); //20 mins
return eim;
}
function playerEntry(eim, player) {
var map = eim.getMapInstance(0);
player.changeMap(map, map.getPortal(0));
player.tryPartyQuest(1204);
}
function playerRevive(eim, player) {
}
function scheduledTimeout(eim) {
end(eim);
}
function changedMap(eim, player, mapid) {
if (mapid < 925100000 || mapid > 925100500) {
eim.unregisterPlayer(player);
if (eim.disposeIfPlayerBelow(0, 0)) {
em.setProperty("state", "0");
em.setProperty("leader", "true");
}
}
}
function playerDisconnected(eim, player) {
return 0;
}
function monsterValue(eim, mobId) {
return 1;
}
function playerExit(eim, player) {
eim.unregisterPlayer(player);
if (eim.disposeIfPlayerBelow(0, 0)) {
em.setProperty("state", "0");
em.setProperty("leader", "true");
}
}
function end(eim) {
eim.disposeIfPlayerBelow(100, 925100700);
em.setProperty("state", "0");
em.setProperty("leader", "true");
}
function clearPQ(eim) {
end(eim);
}
function allMonstersDead(eim) {
}
function leftParty (eim, player) {
// If only 2 players are left, uncompletable:
end(eim);
}
function disbandParty (eim) {
end(eim);
}
function playerDead(eim, player) {}
function cancelSchedule() {}
+6 -4
View File
@@ -61,10 +61,12 @@ function action(mode, type, selection) {
next = false; next = false;
else { else {
for (var i = 0; i < party.size() && next; i++) { for (var i = 0; i < party.size() && next; i++) {
if ((party.get(i).getLevel() >= minLevel) && (party.get(i).getLevel() <= maxLevel)) if ((party.get(i).getLevel() >= minLevel) && (party.get(i).getLevel() <= maxLevel)) {
levelValid += 1; levelValid += 1;
if (party.get(i).getMapid() == mapId)
inMap += 1; if (party.get(i).getMapId() == mapId)
inMap += 1;
}
} }
if (levelValid < minPlayers || inMap < minPlayers) if (levelValid < minPlayers || inMap < minPlayers)
next = false; next = false;
@@ -77,7 +79,7 @@ function action(mode, type, selection) {
} }
else { else {
em.startInstance(cm.getParty(),cm.getPlayer().getMap()); em.startInstance(cm.getParty(),cm.getPlayer().getMap());
party = cm.getPlayer().getEventInstance().getPlayers(); party = cm.getParty().getMembers();
} }
cm.dispose(); cm.dispose();
} }
+2 -2
View File
@@ -88,7 +88,7 @@ function action(mode, type, selection) {
}else if (selection == 4) { //ring refine }else if (selection == 4) { //ring refine
var selStr = "Rings, huh? These are my specialty, go check it yourself!#b"; var selStr = "Rings, huh? These are my specialty, go check it yourself!#b";
items = [1112407, 1112408, 1112401, 1112405, 1112413, 1112414, 1112402]; items = [1112407, 1112408, 1112401, 1112413, 1112414, 1112405, 1112402];
for (var i = 0; i < items.length; i++) for (var i = 0; i < items.length; i++)
selStr += "\r\n#L" + i + "##t" + items[i] + "##b"; selStr += "\r\n#L" + i + "##t" + items[i] + "##b";
@@ -121,7 +121,7 @@ function action(mode, type, selection) {
var matQtySet = [[2, 5, 10], [7777, 7777]]; var matQtySet = [[2, 5, 10], [7777, 7777]];
var costSet = [15000, 7777]; var costSet = [15000, 7777];
}else if (selectedType == 4) { //ring refine }else if (selectedType == 4) { //ring refine
var matSet = [[4003001, 4001344, 4006000], [4003001, 4001344, 4006000], [4021004, 4011008], [4011008, 4001006], [1112405, 2022039], [1112413, 4000176], [4011007, 4021009]]; var matSet = [[4003001, 4001344, 4006000], [4003001, 4001344, 4006000], [4021004, 4011008], [4011008, 4001006], [1112413, 2022039], [1112414, 4000176], [4011007, 4021009]];
var matQtySet = [[2, 2, 2], [2, 2, 2], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1]]; var matQtySet = [[2, 2, 2], [2, 2, 2], [1, 1], [1, 1], [1, 1], [1, 1], [1, 1]];
var costSet = [10000, 10000, 10000, 20000, 15000, 15000, 10000]; var costSet = [10000, 10000, 10000, 20000, 15000, 15000, 10000];
}else if (selectedType == 5) { //necklace refine }else if (selectedType == 5) { //necklace refine
+2 -1
View File
@@ -12789,7 +12789,8 @@ INSERT INTO `drop_data_global` (`id`, `continent`, `dropType`, `itemid`, `minimu
(1, 0, 0, 4031865, 1, 1, 0, 150000, 'NX Card 100 PTS'), (1, 0, 0, 4031865, 1, 1, 0, 150000, 'NX Card 100 PTS'),
(2, 0, 0, 4031866, 1, 1, 0, 90000, 'NX Card 250 PTS'), (2, 0, 0, 4031866, 1, 1, 0, 90000, 'NX Card 250 PTS'),
(3, 0, 0, 4001126, 1, 2, 0, 10000, 'Maple Leaves'), (3, 0, 0, 4001126, 1, 2, 0, 10000, 'Maple Leaves'),
(4, 0, 0, 2049100, 1, 1, 0, 2000, 'Chaos Scroll 60%'); (4, 0, 0, 2049100, 1, 1, 0, 2000, 'Chaos Scroll 60%'),
(5, 0, 0, 4001006, 1, 1, 0, 12000, 'Flaming Feather');
CREATE TABLE IF NOT EXISTS `dueyitems` ( CREATE TABLE IF NOT EXISTS `dueyitems` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT, `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+3 -1
View File
@@ -3,7 +3,9 @@
INSERT IGNORE INTO temp_data (`dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES INSERT IGNORE INTO temp_data (`dropperid`, `itemid`, `minimum_quantity`, `maximum_quantity`, `questid`, `chance`) VALUES
#-- copy+paste inside here as many drop data as possible from the spider (drop generator) files -- #-- copy+paste inside here as many drop data as possible from the spider (drop generator) files --
(5100004, 2383034, 1, 1, 0, 10000), (5100004, 2383034, 1, 1, 0, 10000),
(2100108, 2381030, 1, 1, 0, 10000),
(3230300, 2382021, 1, 1, 0, 10000),
(3230301, 2382021, 1, 1, 0, 10000),
(100100, 4000019, 1, 1, 0, 200000), (100100, 4000019, 1, 1, 0, 200000),
(100100, 2000000, 1, 1, 0, 40000), (100100, 2000000, 1, 1, 0, 40000),
(100100, 2040002, 1, 1, 0, 750), (100100, 2040002, 1, 1, 0, 750),
+9 -4
View File
@@ -852,16 +852,21 @@ public class MapleClient {
FilePrinter.printError(FilePrinter.ACCOUNT_STUCK, e); FilePrinter.printError(FilePrinter.ACCOUNT_STUCK, e);
} finally { } finally {
getChannelServer().removePlayer(player); getChannelServer().removePlayer(player);
if (!this.serverTransition) {
if (!this.serverTransition) {
worlda.removePlayer(player); worlda.removePlayer(player);
player.saveCooldowns();
player.saveToDB();
if (player != null) {//no idea, occur :( if (player != null) {//no idea, occur :(
player.empty(false); player.empty(false);
} }
player.logOff(); player.logOff();
} }
else {
player.saveCooldowns(); player.saveCooldowns();
player.saveToDB(); player.saveToDB();
}
player = null; player = null;
} }
} }
@@ -67,6 +67,7 @@ public final class ScrollHandler extends AbstractMaplePacketHandler {
MapleInventory useInventory = c.getPlayer().getInventory(MapleInventoryType.USE); MapleInventory useInventory = c.getPlayer().getInventory(MapleInventoryType.USE);
Item scroll = useInventory.getItem(slot); Item scroll = useInventory.getItem(slot);
Item wscroll = null; Item wscroll = null;
if (((Equip) toScroll).getUpgradeSlots() < 1 && !isCleanSlate(scroll.getItemId())) { if (((Equip) toScroll).getUpgradeSlots() < 1 && !isCleanSlate(scroll.getItemId())) {
c.announce(MaplePacketCreator.getInventoryFull()); c.announce(MaplePacketCreator.getInventoryFull());
return; return;
@@ -82,6 +83,7 @@ public final class ScrollHandler extends AbstractMaplePacketHandler {
whiteScroll = false; whiteScroll = false;
} }
} }
if (!isChaosScroll(scroll.getItemId()) && !isCleanSlate(scroll.getItemId())) { if (!isChaosScroll(scroll.getItemId()) && !isCleanSlate(scroll.getItemId())) {
if (!canScroll(scroll.getItemId(), toScroll.getItemId())) { if (!canScroll(scroll.getItemId(), toScroll.getItemId())) {
return; return;
@@ -130,6 +132,14 @@ public final class ScrollHandler extends AbstractMaplePacketHandler {
} }
public boolean canScroll(int scrollid, int itemid) { public boolean canScroll(int scrollid, int itemid) {
return (scrollid / 100) % 100 == (itemid / 10000) % 100; int sid = scrollid / 100;
switch(sid) {
case 20492: //scroll for accessory (pendant, belt, ring)
return canScroll(2041100, itemid) || canScroll(2041200, itemid) || canScroll(2041300, itemid);
default:
return (scrollid / 100) % 100 == (itemid / 10000) % 100;
}
} }
} }
@@ -304,6 +304,11 @@ public class AbstractPlayerInteraction {
return gainItem(id, quantity, randomStats, showMessage, expires, null); return gainItem(id, quantity, randomStats, showMessage, expires, null);
} }
private boolean isAccessory(int id) {
int val = id / 10000;
return(val >= 111 && val <= 113);
}
public Item gainItem(int id, short quantity, boolean randomStats, boolean showMessage, long expires, MaplePet from) { public Item gainItem(int id, short quantity, boolean randomStats, boolean showMessage, long expires, MaplePet from) {
Item item = null; Item item = null;
MaplePet evolved = null; MaplePet evolved = null;
@@ -336,6 +341,11 @@ public class AbstractPlayerInteraction {
if (ii.getInventoryType(id).equals(MapleInventoryType.EQUIP)) { if (ii.getInventoryType(id).equals(MapleInventoryType.EQUIP)) {
item = ii.getEquipById(id); item = ii.getEquipById(id);
if(item != null) {
Equip it = (Equip)item;
if(isAccessory(item.getItemId()) && it.getUpgradeSlots() <= 0) it.setUpgradeSlots(3);
}
if(ServerConstants.USE_ENHANCED_CRAFTING == true && c.getPlayer().getCS() == true) if(ServerConstants.USE_ENHANCED_CRAFTING == true && c.getPlayer().getCS() == true)
item = MapleItemInformationProvider.getInstance().scrollEquipWithId(item, 2049100, true, c.getPlayer().isGM()); item = MapleItemInformationProvider.getInstance().scrollEquipWithId(item, 2049100, true, c.getPlayer().isGM());
} else { } else {
@@ -59,6 +59,9 @@ public class EventInstanceManager {
private long timeStarted = 0; private long timeStarted = 0;
private long eventTime = 0; private long eventTime = 0;
private MapleExpedition expedition = null; private MapleExpedition expedition = null;
private List<Integer> mapIds = new LinkedList<Integer>();
private List<Boolean> isInstanced = new LinkedList<Boolean>();
private boolean disposed = false;
public EventInstanceManager(EventManager em, String name) { public EventInstanceManager(EventManager em, String name) {
this.em = em; this.em = em;
@@ -322,4 +325,13 @@ public class EventInstanceManager {
public boolean isLeader(MapleCharacter chr) { public boolean isLeader(MapleCharacter chr) {
return (chr.getParty().getLeader().getId() == chr.getId()); return (chr.getParty().getLeader().getId() == chr.getId());
} }
public final MapleMap setInstanceMap(final int mapid) { //gets instance map from the channelserv
if (disposed) {
return this.getMapFactory().getMap(mapid);
}
mapIds.add(mapid);
isInstanced.add(false);
return this.getMapFactory().getMap(mapid);
}
} }
+46 -36
View File
@@ -411,7 +411,12 @@ public class MapleItemInformationProvider {
if (pData == null) { if (pData == null) {
return -1; return -1;
} }
pEntry = (double) MapleDataTool.getInt(pData); try {
pEntry = (double) MapleDataTool.getInt(pData);
} catch(Exception e) {
priceCache.put(itemId, 0.0);
return 0;
}
} }
priceCache.put(itemId, pEntry); priceCache.put(itemId, pEntry);
return pEntry; return pEntry;
@@ -522,11 +527,12 @@ public class MapleItemInformationProvider {
public Item scrollEquipWithId(Item equip, int scrollId, boolean usingWhiteScroll, boolean isGM) { public Item scrollEquipWithId(Item equip, int scrollId, boolean usingWhiteScroll, boolean isGM) {
if (equip instanceof Equip) { if (equip instanceof Equip) {
Equip nEquip = (Equip) equip; Equip nEquip = (Equip) equip;
Map<String, Integer> stats = this.getEquipStats(scrollId); Map<String, Integer> stats = this.getEquipStats(scrollId);
Map<String, Integer> eqstats = this.getEquipStats(equip.getItemId()); Map<String, Integer> eqstats = this.getEquipStats(equip.getItemId());
if (((nEquip.getUpgradeSlots() > 0 || isCleanSlate(scrollId))) || isGM) {
System.out.println("GM: " + isGM + "\tWS: " + usingWhiteScroll + "\tITEM: " + scrollId);
System.out.println("GM: " + isGM + "\tWS: " + usingWhiteScroll + "\tITEM: " + scrollId);
if (((nEquip.getUpgradeSlots() > 0 || isCleanSlate(scrollId))) || isGM) {
if(isGM || testYourLuck() <= stats.get("success")) { if(isGM || testYourLuck() <= stats.get("success")) {
short flag = nEquip.getFlag(); short flag = nEquip.getFlag();
switch (scrollId) { switch (scrollId) {
@@ -552,181 +558,183 @@ public class MapleItemInformationProvider {
int inc, i; int inc, i;
if(ServerConstants.SCROLL_CHANCE_RATE > 0) { if(ServerConstants.SCROLL_CHANCE_RATE > 0) {
//int tempStr, tempDex, tempInt, tempLuk, tempWatk, tempWdef, tempMatk, tempMdef, tempAcc, tempAvoid, tempSpeed, tempJump, tempHp, tempMp;
int temp; int temp;
int mdStr = nEquip.getStr(), mdDex = nEquip.getDex(), mdInt = nEquip.getInt(), mdLuk = nEquip.getLuk(), mdWatk = nEquip.getWatk(), mdWdef = nEquip.getWdef(), mdMatk = nEquip.getMatk(), mdMdef = nEquip.getMdef(), mdAcc = nEquip.getAcc(), mdAvoid = nEquip.getAvoid(), mdSpeed = nEquip.getSpeed(), mdJump = nEquip.getJump(), mdHp = nEquip.getHp(), mdMp = nEquip.getMp(); int mdStr = nEquip.getStr(), mdDex = nEquip.getDex(), mdInt = nEquip.getInt(), mdLuk = nEquip.getLuk(), mdWatk = nEquip.getWatk(), mdWdef = nEquip.getWdef(), mdMatk = nEquip.getMatk(), mdMdef = nEquip.getMdef(), mdAcc = nEquip.getAcc(), mdAvoid = nEquip.getAvoid(), mdSpeed = nEquip.getSpeed(), mdJump = nEquip.getJump(), mdHp = nEquip.getHp(), mdMp = nEquip.getMp();
for(i = 0; i < ServerConstants.SCROLL_CHANCE_RATE; i++) { inc = 1;
inc = 1; if (Randomizer.nextInt(2) == 0) {
inc = -1;
}
if(ServerConstants.USE_ENHANCED_CHSCROLL == true) inc = 1;
if (Randomizer.nextInt(2) == 0) { for(i = 0; i < ServerConstants.SCROLL_CHANCE_RATE; i++) {
inc = -1;
}
if (nEquip.getStr() > 0) { if (nEquip.getStr() > 0) {
temp = (nEquip.getStr() + Randomizer.nextInt(6) * inc); temp = (nEquip.getStr() + Randomizer.nextInt(6) * inc);
nEquip.setStr((short) Math.max(mdStr, temp)); nEquip.setStr((short) Math.max(mdStr, temp));
if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { if(ServerConstants.USE_ENHANCED_CHSCROLL == true) {
mdStr = nEquip.getStr(); mdStr = nEquip.getStr();
} }
else { else {
temp = (mdStr + temp) / 2; temp = (mdStr + temp) / 2;
if(temp > 0) mdStr = temp; if(temp > mdStr) mdStr = temp;
} }
} }
if (nEquip.getDex() > 0) { if (nEquip.getDex() > 0) {
temp = (nEquip.getDex() + Randomizer.nextInt(6) * inc); temp = (nEquip.getDex() + Randomizer.nextInt(6) * inc);
nEquip.setDex((short) Math.max(mdDex, temp)); nEquip.setDex((short) Math.max(mdDex, temp));
if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { if(ServerConstants.USE_ENHANCED_CHSCROLL == true) {
mdDex = nEquip.getDex(); mdDex = nEquip.getDex();
} }
else { else {
temp = (mdDex + temp) / 2; temp = (mdDex + temp) / 2;
if(temp > 0) mdDex = temp; if(temp > mdDex) mdDex = temp;
} }
} }
if (nEquip.getInt() > 0) { if (nEquip.getInt() > 0) {
temp = (nEquip.getInt() + Randomizer.nextInt(6) * inc); temp = (nEquip.getInt() + Randomizer.nextInt(6) * inc);
nEquip.setInt((short) Math.max(mdInt, temp)); nEquip.setInt((short) Math.max(mdInt, temp));
if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { if(ServerConstants.USE_ENHANCED_CHSCROLL == true) {
mdInt = nEquip.getInt(); mdInt = nEquip.getInt();
} }
else { else {
temp = (mdInt + temp) / 2; temp = (mdInt + temp) / 2;
if(temp > 0) mdInt = temp; if(temp > mdInt) mdInt = temp;
} }
} }
if (nEquip.getLuk() > 0) { if (nEquip.getLuk() > 0) {
temp = (nEquip.getLuk() + Randomizer.nextInt(6) * inc); temp = (nEquip.getLuk() + Randomizer.nextInt(6) * inc);
nEquip.setLuk((short) Math.max(mdLuk, temp)); nEquip.setLuk((short) Math.max(mdLuk, temp));
if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { if(ServerConstants.USE_ENHANCED_CHSCROLL == true) {
mdLuk = nEquip.getLuk(); mdLuk = nEquip.getLuk();
} }
else { else {
temp = (mdLuk + temp) / 2; temp = (mdLuk + temp) / 2;
if(temp > 0) mdLuk = temp; if(temp > mdLuk) mdLuk = temp;
} }
} }
if (nEquip.getWatk() > 0) { if (nEquip.getWatk() > 0) {
temp = (nEquip.getWatk() + Randomizer.nextInt(6) * inc); temp = (nEquip.getWatk() + Randomizer.nextInt(6) * inc);
nEquip.setWatk((short) Math.max(mdWatk, temp)); nEquip.setWatk((short) Math.max(mdWatk, temp));
if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { if(ServerConstants.USE_ENHANCED_CHSCROLL == true) {
mdWatk = nEquip.getWatk(); mdWatk = nEquip.getWatk();
} }
else { else {
temp = (mdWatk + temp) / 2; temp = (mdWatk + temp) / 2;
if(temp > 0) mdWatk = temp; if(temp > mdWatk) mdWatk = temp;
} }
} }
if (nEquip.getWdef() > 0) { if (nEquip.getWdef() > 0) {
temp = (nEquip.getWdef() + Randomizer.nextInt(6) * inc); temp = (nEquip.getWdef() + Randomizer.nextInt(6) * inc);
nEquip.setWdef((short) Math.max(mdWdef, temp)); nEquip.setWdef((short) Math.max(mdWdef, temp));
if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { if(ServerConstants.USE_ENHANCED_CHSCROLL == true) {
mdWdef = nEquip.getWdef(); mdWdef = nEquip.getWdef();
} }
else { else {
temp = (mdWdef + temp) / 2; temp = (mdWdef + temp) / 2;
if(temp > 0) mdWdef = temp; if(temp > mdWdef) mdWdef = temp;
} }
} }
if (nEquip.getMatk() > 0) { if (nEquip.getMatk() > 0) {
temp = (nEquip.getMatk() + Randomizer.nextInt(6) * inc); temp = (nEquip.getMatk() + Randomizer.nextInt(6) * inc);
nEquip.setMatk((short) Math.max(mdMatk, temp)); nEquip.setMatk((short) Math.max(mdMatk, temp));
if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { if(ServerConstants.USE_ENHANCED_CHSCROLL == true) {
mdMatk = nEquip.getMatk(); mdMatk = nEquip.getMatk();
} }
else { else {
temp = (mdMatk + temp) / 2; temp = (mdMatk + temp) / 2;
if(temp > 0) mdMatk = temp; if(temp > mdMatk) mdMatk = temp;
} }
} }
if (nEquip.getMdef() > 0) { if (nEquip.getMdef() > 0) {
temp = (nEquip.getMdef() + Randomizer.nextInt(6) * inc); temp = (nEquip.getMdef() + Randomizer.nextInt(6) * inc);
nEquip.setMdef((short) Math.max(mdMdef, temp)); nEquip.setMdef((short) Math.max(mdMdef, temp));
if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { if(ServerConstants.USE_ENHANCED_CHSCROLL == true) {
mdMdef = nEquip.getMdef(); mdMdef = nEquip.getMdef();
} }
else { else {
temp = (mdMdef + temp) / 2; temp = (mdMdef + temp) / 2;
if(temp > 0) mdMdef = temp; if(temp > mdMdef) mdMdef = temp;
} }
} }
if (nEquip.getAcc() > 0) { if (nEquip.getAcc() > 0) {
temp = (nEquip.getAcc() + Randomizer.nextInt(6) * inc); temp = (nEquip.getAcc() + Randomizer.nextInt(6) * inc);
nEquip.setAcc((short) Math.max(mdAcc, temp)); nEquip.setAcc((short) Math.max(mdAcc, temp));
if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { if(ServerConstants.USE_ENHANCED_CHSCROLL == true) {
mdAcc = nEquip.getAcc(); mdAcc = nEquip.getAcc();
} }
else { else {
temp = (mdAcc + temp) / 2; temp = (mdAcc + temp) / 2;
if(temp > 0) mdAcc = temp; if(temp > mdAcc) mdAcc = temp;
} }
} }
if (nEquip.getAvoid() > 0) { if (nEquip.getAvoid() > 0) {
temp = (nEquip.getAvoid() + Randomizer.nextInt(6) * inc); temp = (nEquip.getAvoid() + Randomizer.nextInt(6) * inc);
nEquip.setAvoid((short) Math.max(mdAvoid, temp)); nEquip.setAvoid((short) Math.max(mdAvoid, temp));
if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { if(ServerConstants.USE_ENHANCED_CHSCROLL == true) {
mdAvoid = nEquip.getAvoid(); mdAvoid = nEquip.getAvoid();
} }
else { else {
temp = (mdAvoid + temp) / 2; temp = (mdAvoid + temp) / 2;
if(temp > 0) mdAvoid = temp; if(temp > mdAvoid) mdAvoid = temp;
} }
} }
if (nEquip.getSpeed() > 0) { if (nEquip.getSpeed() > 0) {
temp = (nEquip.getSpeed() + Randomizer.nextInt(6) * inc); temp = (nEquip.getSpeed() + Randomizer.nextInt(6) * inc);
nEquip.setSpeed((short) Math.max(mdSpeed, temp)); nEquip.setSpeed((short) Math.max(mdSpeed, temp));
if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { if(ServerConstants.USE_ENHANCED_CHSCROLL == true) {
mdSpeed = nEquip.getSpeed(); mdSpeed = nEquip.getSpeed();
} }
else { else {
temp = (mdSpeed + temp) / 2; temp = (mdSpeed + temp) / 2;
if(temp > 0) mdSpeed = temp; if(temp > mdSpeed) mdSpeed = temp;
} }
} }
if (nEquip.getJump() > 0) { if (nEquip.getJump() > 0) {
temp = (nEquip.getJump() + Randomizer.nextInt(6) * inc); temp = (nEquip.getJump() + Randomizer.nextInt(6) * inc);
nEquip.setJump((short) Math.max(mdJump, temp)); nEquip.setJump((short) Math.max(mdJump, temp));
if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { if(ServerConstants.USE_ENHANCED_CHSCROLL == true) {
mdJump = nEquip.getJump(); mdJump = nEquip.getJump();
} }
else { else {
temp = (mdJump + temp) / 2; temp = (mdJump + temp) / 2;
if(temp > 0) mdJump = temp; if(temp > mdJump) mdJump = temp;
} }
} }
if (nEquip.getHp() > 0) { if (nEquip.getHp() > 0) {
temp = (nEquip.getHp() + Randomizer.nextInt(6) * inc); temp = (nEquip.getHp() + Randomizer.nextInt(6) * inc);
nEquip.setHp((short) Math.max(mdHp, temp)); nEquip.setHp((short) Math.max(mdHp, temp));
if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { if(ServerConstants.USE_ENHANCED_CHSCROLL == true) {
mdHp = nEquip.getHp(); mdHp = nEquip.getHp();
} }
else { else {
temp = (mdHp + temp) / 2; temp = (mdHp + temp) / 2;
if(temp > 0) mdHp = temp; if(temp > mdHp) mdHp = temp;
} }
} }
if (nEquip.getMp() > 0) { if (nEquip.getMp() > 0) {
temp = (nEquip.getMp() + Randomizer.nextInt(6) * inc); temp = (nEquip.getMp() + Randomizer.nextInt(6) * inc);
nEquip.setMp((short) Math.max(mdMp, temp)); nEquip.setMp((short) Math.max(mdMp, temp));
if(ServerConstants.USE_ENHANCED_CHSCROLL == false) { if(ServerConstants.USE_ENHANCED_CHSCROLL == true) {
mdMp = nEquip.getMp(); mdMp = nEquip.getMp();
} }
else { else {
temp = (mdMp + temp) / 2; temp = (mdMp + temp) / 2;
if(temp > 0) mdMp = temp; if(temp > mdMp) mdMp = temp;
} }
} }
} }
@@ -738,6 +746,8 @@ public class MapleItemInformationProvider {
if (Randomizer.nextInt(2) == 0) { if (Randomizer.nextInt(2) == 0) {
inc = -1; inc = -1;
} }
if(ServerConstants.USE_ENHANCED_CHSCROLL == true) inc = 1;
if (nEquip.getStr() > 0) { if (nEquip.getStr() > 0) {
if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setStr((short) Math.max(nEquip.getStr(), (nEquip.getStr() + Randomizer.nextInt(6) * inc))); if(ServerConstants.USE_ENHANCED_CHSCROLL == true) nEquip.setStr((short) Math.max(nEquip.getStr(), (nEquip.getStr() + Randomizer.nextInt(6) * inc)));
else nEquip.setStr((short) Math.max(0, (nEquip.getStr() + Randomizer.nextInt(6) * inc))); else nEquip.setStr((short) Math.max(0, (nEquip.getStr() + Randomizer.nextInt(6) * inc)));