Even more normalize credit comments
This commit is contained in:
@@ -103,7 +103,7 @@ public class GotoCommand extends Command {
|
||||
HashMap<String, Integer> gotomaps;
|
||||
if (player.isGM()) {
|
||||
gotomaps = new HashMap<>(GameConstants.GOTO_AREAS); // distinct map registry for GM/users suggested thanks to Vcoc
|
||||
gotomaps.putAll(GameConstants.GOTO_TOWNS); // thanks Halcyon for pointing out duplicates on listed entries functionality
|
||||
gotomaps.putAll(GameConstants.GOTO_TOWNS); // thanks Halcyon (UltimateMors) for pointing out duplicates on listed entries functionality
|
||||
} else {
|
||||
gotomaps = new HashMap<>(GameConstants.GOTO_TOWNS);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server, commands OdinMS-based
|
||||
Copyleft (L) 2016 - 2018 RonanLana
|
||||
Copyleft (L) 2016 - 2019 RonanLana
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
|
||||
@@ -247,7 +247,7 @@ public class MakerProcessor {
|
||||
reagentids.remove(i);
|
||||
}
|
||||
|
||||
// only quantity 1 of each gem will be accepted by the Maker skill
|
||||
// the Maker skill will only quantity 1 of each gem
|
||||
for(Integer i : reagentids.keySet()) {
|
||||
reagentids.put(i, (short) 1);
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ public class GameConstants {
|
||||
return(EXP_RATE_GAIN[slot]);
|
||||
}
|
||||
|
||||
// used by the "goto" command for players
|
||||
// "goto" command for players
|
||||
public static final HashMap<String, Integer> GOTO_TOWNS = new HashMap<String, Integer>() {{
|
||||
put("southperry", 60000);
|
||||
put("amherst", 1000000);
|
||||
@@ -90,7 +90,7 @@ public class GameConstants {
|
||||
put("mushking", 106020000);
|
||||
}};
|
||||
|
||||
// used by the "goto" command for only-GMs
|
||||
// "goto" command for only-GMs
|
||||
public static final HashMap<String, Integer> GOTO_AREAS = new HashMap<String, Integer>() {{
|
||||
put("gmmap", 180000000);
|
||||
put("excavation", 990000000);
|
||||
|
||||
@@ -4,7 +4,7 @@ import client.MapleCharacter;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Drago - Dragohe4rt
|
||||
* @author Drago (Dragohe4rt)
|
||||
*/
|
||||
public class LanguageConstants {
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ package constants;
|
||||
* @author GabrielSin <gabrielsin@playellin.net>
|
||||
* @date 16/09/2018
|
||||
*
|
||||
* Adaptations to use Pair and Set, in order to suit a one-packet marshall,
|
||||
* by Ronan
|
||||
* Adaptations to use Pair and Set, in order to suit a one-packet marshall.
|
||||
* Adapted by Ronan
|
||||
*/
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
@@ -71,7 +71,7 @@ public class ServerConstants {
|
||||
public static final boolean USE_MTS = false;
|
||||
public static final boolean USE_CPQ = true; //Renders the CPQ available or not.
|
||||
public static final boolean USE_AUTOHIDE_GM = false; //When enabled, GMs are automatically hidden when joining. Thanks to Steven Deblois (steven1152).
|
||||
public static final boolean USE_BUYBACK_SYSTEM = true; //Enables the HeavenMS-builtin buyback system, to be used by dead players when clicking the MTS button.
|
||||
public static final boolean USE_BUYBACK_SYSTEM = true; //Enables the HeavenMS-builtin buyback system, dead players can use it by clicking the MTS button.
|
||||
public static final boolean USE_FIXED_RATIO_HPMP_UPDATE = true; //Enables the HeavenMS-builtin HPMP update based on the current pool to max pool ratio.
|
||||
public static final boolean USE_FAMILY_SYSTEM = false;
|
||||
public static final boolean USE_DUEY = true;
|
||||
@@ -93,7 +93,7 @@ public class ServerConstants {
|
||||
public static final boolean USE_ENFORCE_MOB_LEVEL_RANGE = true; //Players N levels below the killed mob will gain no experience from defeating it.
|
||||
public static final boolean USE_ENFORCE_JOB_LEVEL_RANGE = false;//Caps the player level on the minimum required to advance their current jobs.
|
||||
public static final boolean USE_ENFORCE_JOB_SP_RANGE = false; //Caps the player SP level on the total obtainable by their current jobs. After changing jobs, missing SP will be retrieved.
|
||||
public static final boolean USE_ENFORCE_ITEM_SUGGESTION = false;//Forces the Owl of Minerva and the Cash Shop to always display the defined item array instead of those featured by the players.
|
||||
public static final boolean USE_ENFORCE_ITEM_SUGGESTION = false;//Forces the Owl of Minerva and the Cash Shop to always display the defined item array instead of those featured from players.
|
||||
public static final boolean USE_ENFORCE_UNMERCHABLE_CASH = false;//Forces players to not sell CASH items via merchants.
|
||||
public static final boolean USE_ENFORCE_UNMERCHABLE_PET = false; //Forces players to not sell pets via merchants. (since non-named pets gets dirty name and other possible DB-related issues)
|
||||
public static final boolean USE_ENFORCE_MERCHANT_SAVE = true; //Forces automatic DB save on merchant owners, at every item movement on shop.
|
||||
@@ -130,7 +130,7 @@ public class ServerConstants {
|
||||
|
||||
//Maker Configuration
|
||||
public static final boolean USE_MAKER_PERMISSIVE_ATKUP = true; //Allows players to use attack-based strengthening gems on non-weapon items.
|
||||
public static final boolean USE_MAKER_FEE_HEURISTICS = true; //Apply compiled values for stimulants and reagents into the Maker fee calculations (max error revolves around 50k mesos). Set false to use basic constant values instead (results are never higher than requested by the client-side).
|
||||
public static final boolean USE_MAKER_FEE_HEURISTICS = true; //Apply compiled values for stimulants and reagents into the Maker fee calculations (max error revolves around 50k mesos). Set false to use basic constant values instead (results are never higher than the client-side requests).
|
||||
|
||||
//Custom Configuration
|
||||
public static final boolean USE_ENABLE_CUSTOM_NPC_SCRIPT = true;//Enables usage of custom HeavenMS NPC scripts (Agent E, Coco, etc). Will not disable Abdula (it's actually useful for the gameplay), quests or NPC shops.
|
||||
@@ -138,7 +138,7 @@ public class ServerConstants {
|
||||
|
||||
//Commands Configuration
|
||||
public static final boolean BLOCK_GENERATE_CASH_ITEM = false; //Prevents creation of cash items with the item/drop command.
|
||||
public static final boolean USE_WHOLE_SERVER_RANKING = false; //Enables a ranking pool made from every character registered on the server for the "ranks" command, instead of separated by worlds.
|
||||
public static final boolean USE_WHOLE_SERVER_RANKING = false; //Enables a ranking pool made from every character registered on the server for the "ranks" command, instead of split by worlds.
|
||||
|
||||
//Server Rates And Experience
|
||||
public static final int EXP_RATE = 10; //NOTE: World-specific rates within "world.ini" OVERRIDES the default rates from here.
|
||||
@@ -180,7 +180,7 @@ public class ServerConstants {
|
||||
//Map Monitor Configuration
|
||||
public static final int ITEM_EXPIRE_CHECK = 10 * 1000; //Interval between item expiring tasks on maps, which checks and makes disappear expired items.
|
||||
public static final int ITEM_LIMIT_ON_MAP = 200; //Max number of items allowed on a map.
|
||||
public static final int MAP_VISITED_SIZE = 5; //Max length for last mapids visited by a player. This is used to recover and update drops on these maps accordingly with player actions.
|
||||
public static final int MAP_VISITED_SIZE = 5; //Max length for last mapids a player visits. This is used to recover and update drops on these maps accordingly with player actions.
|
||||
public static final int MAP_DAMAGE_OVERTIME_INTERVAL = 5000;//Interval in milliseconds between map environment damage (e.g. El Nath and Aqua Road surrondings).
|
||||
|
||||
//Channel Mob Disease Monitor Configuration
|
||||
@@ -218,7 +218,7 @@ public class ServerConstants {
|
||||
public static final boolean USE_PERFECT_PITCH = true; //For lvl 30 or above, each lvlup grants player 1 perfect pitch.
|
||||
|
||||
//Quest Configuration
|
||||
public static final boolean USE_QUEST_RATE = false; //Exp/Meso gained by quests uses fixed server exp/meso rate times quest rate as multiplier, instead of player rates.
|
||||
public static final boolean USE_QUEST_RATE = false; //Exp/Meso gain by quests uses fixed server exp/meso rate times quest rate as multiplier, instead of player rates.
|
||||
|
||||
//Quest Points Configuration
|
||||
public static final int QUEST_POINT_REPEATABLE_INTERVAL = 24;//Minimum interval between repeatable quest completions for quest points to be awarded.
|
||||
@@ -259,7 +259,7 @@ public class ServerConstants {
|
||||
|
||||
//Pet Auto-Pot Configuration
|
||||
public static final boolean USE_COMPULSORY_AUTOPOT = true; //Pets will consume as many potions as needed to fulfill the AUTOHP/MP ratio threshold.
|
||||
public static final boolean USE_EQUIPS_ON_AUTOPOT = true; //Player MaxHP and MaxMP check values on autopot handler will be updated by the HP/MP bonuses on equipped items.
|
||||
public static final boolean USE_EQUIPS_ON_AUTOPOT = true; //Player MaxHP and MaxMP check values on autopot handler will change according to HP/MP bonuses on equipped items.
|
||||
public static final double PET_AUTOHP_RATIO = 0.99; //Will automatically consume potions until given ratio of the MaxHP/MaxMP is reached.
|
||||
public static final double PET_AUTOMP_RATIO = 0.99;
|
||||
|
||||
@@ -269,7 +269,7 @@ public class ServerConstants {
|
||||
|
||||
//Pet Hunger Configuration
|
||||
public static final boolean PETS_NEVER_HUNGRY = false; //If true, pets and mounts will never grow hungry.
|
||||
public static final boolean GM_PETS_NEVER_HUNGRY = true; //If true, pets and mounts owned by GMs will never grow hungry.
|
||||
public static final boolean GM_PETS_NEVER_HUNGRY = true; //If true, pets and mounts own by GMs will never grow hungry.
|
||||
|
||||
//Event Configuration
|
||||
public static final int EVENT_MAX_GUILD_QUEUE = 10; //Max number of guilds in queue for GPQ.
|
||||
|
||||
@@ -102,7 +102,7 @@ public final class AdminCommandHandler extends AbstractMaplePacketHandler {
|
||||
c.announce(MaplePacketCreator.getGMEffect(6, (byte) 1));
|
||||
}
|
||||
break;
|
||||
case 0x10: // /h, information by vana (and tele mode f1) ... hide ofcourse
|
||||
case 0x10: // /h, information added by vana <and tele mode f1> ... hide ofcourse
|
||||
c.getPlayer().Hide(slea.readByte() == 1);
|
||||
break;
|
||||
case 0x11: // Entering a map
|
||||
|
||||
@@ -76,7 +76,7 @@ public final class BBSOperationHandler extends AbstractMaplePacketHandler {
|
||||
int start = slea.readInt();
|
||||
listBBSThreads(c, start * 10);
|
||||
break;
|
||||
case 3: // list thread + reply, followed by id (int)
|
||||
case 3: // list thread + reply, following by id (int)
|
||||
localthreadid = slea.readInt();
|
||||
displayThread(c, localthreadid);
|
||||
break;
|
||||
|
||||
@@ -86,7 +86,7 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler {
|
||||
if (!chr.isAlive()) {
|
||||
MapleMap map = chr.getMap();
|
||||
if (wheel && chr.haveItemWithId(5510000, false)) {
|
||||
// thanks lucasziron for showing revivePlayer() also being triggered by Wheel
|
||||
// thanks lucasziron (lziron) for showing revivePlayer() triggering by Wheel
|
||||
|
||||
MapleInventoryManipulator.removeById(c, MapleInventoryType.CASH, 5510000, 1, true, false);
|
||||
chr.announce(MaplePacketCreator.showWheelsLeft(chr.getItemQuantity(5510000, false)));
|
||||
|
||||
@@ -36,7 +36,7 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
*/
|
||||
public final class QuestActionHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
// isNpcNearby credits to GabrielSin
|
||||
// isNpcNearby thanks to GabrielSin
|
||||
private static boolean isNpcNearby(SeekableLittleEndianAccessor slea, MapleCharacter player, MapleQuest quest, int npcId) {
|
||||
Point playerP = null;
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ public final class LoginPasswordHandler implements MaplePacketHandler {
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
String remoteHost = getRemoteIp(c.getSession());
|
||||
if (!remoteHost.contentEquals("null")) {
|
||||
if (ServerConstants.USE_IP_VALIDATION) { // thanks Alex (CanIGetaPR) for suggesting IP validation as a server flag
|
||||
if (ServerConstants.USE_IP_VALIDATION) { // thanks Alex (Alex-0000) for suggesting IP validation as a server flag
|
||||
if (remoteHost.startsWith("127.")) {
|
||||
if (!ServerConstants.LOCALSERVER) { // thanks Mills for noting HOST can also have a field named "localhost"
|
||||
c.announce(MaplePacketCreator.getLoginFailed(13)); // cannot login as localhost if it's not a local server
|
||||
|
||||
@@ -452,7 +452,7 @@ public class World {
|
||||
return getAllCharactersView();
|
||||
}
|
||||
|
||||
public List<MapleCharacter> getAllCharactersView() { // sorted by accountid, charid
|
||||
public List<MapleCharacter> getAllCharactersView() { // sorting by accountid, charid
|
||||
List<MapleCharacter> chrList = new LinkedList<>();
|
||||
Map<Integer, SortedMap<Integer, MapleCharacter>> accChars;
|
||||
|
||||
|
||||
@@ -2044,7 +2044,7 @@ public class MapleItemInformationProvider {
|
||||
ps.setInt(1, itemId);
|
||||
ResultSet rs = ps.executeQuery();
|
||||
|
||||
if(rs.next()) { // cost is 13.6363~ % of the original value trimmed by 1000.
|
||||
if(rs.next()) { // cost is 13.6363~ % of the original value, trim by 1000.
|
||||
float val = (float) (rs.getInt("req_meso") * 0.13636363636364);
|
||||
fee = (int) (val / 1000);
|
||||
fee *= 1000;
|
||||
|
||||
@@ -141,7 +141,7 @@ public class MapleSkillbookInformationProvider {
|
||||
if(token.contains("/imgdir")) {
|
||||
status -= 1;
|
||||
}
|
||||
else if(token.contains("imgdir") && !token.endsWith("/>")) { // '\>' XML node description not being accounted, issue found thanks to Robin Schulz, CanIGetaPR
|
||||
else if(token.contains("imgdir") && !token.endsWith("/>")) { // '\>' XML node description not being accounted, issue found thanks to Robin Schulz, Alex-0000 (CanIGetaPR)
|
||||
status += 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1093,7 +1093,7 @@ public class MapleStatEffect {
|
||||
applyto.removeAllCooldownsExcept(Buccaneer.TIME_LEAP, true);
|
||||
} else if (cp != 0 && applyto.getMonsterCarnival() != null) {
|
||||
applyto.gainCP(cp);
|
||||
} else if (nuffSkill != 0 && applyto.getParty() != null && applyto.getMap().isCPQMap()) { // by Drago-Dragohe4rt
|
||||
} else if (nuffSkill != 0 && applyto.getParty() != null && applyto.getMap().isCPQMap()) { // added by Drago (Dragohe4rt)
|
||||
final MCSkill skill = MapleCarnivalFactory.getInstance().getSkill(nuffSkill);
|
||||
if (skill != null) {
|
||||
final MapleDisease dis = skill.getDisease();
|
||||
@@ -1122,7 +1122,7 @@ public class MapleStatEffect {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (cureDebuffs.size() > 0) { // by Drago-Dragohe4rt
|
||||
} else if (cureDebuffs.size() > 0) { // added by Drago (Dragohe4rt)
|
||||
for (final MapleDisease debuff : cureDebuffs) {
|
||||
if (applyfrom.getParty() != null) {
|
||||
for (MaplePartyCharacter chrs : applyfrom.getParty().getPartyMembers()) {
|
||||
|
||||
@@ -4,7 +4,7 @@ package server.gachapon;
|
||||
*
|
||||
* @author Ronan - parsed MapleSEA loots
|
||||
*
|
||||
* MapleSEA-like loots thanks to AyumiLove, src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
* MapleSEA-like loots thanks to AyumiLove - src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
*/
|
||||
|
||||
public class ElNath extends GachaponItems {
|
||||
|
||||
@@ -5,7 +5,7 @@ package server.gachapon;
|
||||
* @author Alan (SharpAceX) - gachapon source classes stub & pirate equipment
|
||||
* @author Ronan - parsed MapleSEA loots
|
||||
*
|
||||
* MapleSEA-like loots thanks to AyumiLove, src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
* MapleSEA-like loots thanks to AyumiLove - src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
*/
|
||||
|
||||
public class Ellinia extends GachaponItems {
|
||||
|
||||
@@ -3,7 +3,7 @@ package server.gachapon;
|
||||
/**
|
||||
*
|
||||
* @author Alan (SharpAceX)
|
||||
* @author Ronan - added ores, reworked global loots
|
||||
* @author Ronan - added ores and reworked global loots
|
||||
*/
|
||||
|
||||
public class Global extends GachaponItems {
|
||||
|
||||
@@ -5,7 +5,7 @@ package server.gachapon;
|
||||
* @author Alan (SharpAceX) - gachapon source classes stub
|
||||
* @author Ronan - parsed MapleSEA loots
|
||||
*
|
||||
* MapleSEA-like loots thanks to AyumiLove, src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
* MapleSEA-like loots thanks to AyumiLove - src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
*/
|
||||
|
||||
public class Henesys extends GachaponItems {
|
||||
|
||||
@@ -5,7 +5,7 @@ package server.gachapon;
|
||||
* @author Alan (SharpAceX) - gachapon source classes stub & pirate equipment
|
||||
* @author Ronan - parsed MapleSEA loots
|
||||
*
|
||||
* MapleSEA-like loots thanks to AyumiLove, src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
* MapleSEA-like loots thanks to AyumiLove - src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
*/
|
||||
|
||||
public class KerningCity extends GachaponItems {
|
||||
|
||||
@@ -4,7 +4,7 @@ package server.gachapon;
|
||||
*
|
||||
* @author Ronan - parsed MapleSEA loots
|
||||
*
|
||||
* MapleSEA-like loots thanks to AyumiLove, src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
* MapleSEA-like loots thanks to AyumiLove - src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
*/
|
||||
|
||||
public class Ludibrium extends GachaponItems {
|
||||
|
||||
@@ -5,7 +5,7 @@ package server.gachapon;
|
||||
* @author Alan (SharpAceX) - gachapon source classes stub
|
||||
* @author Ronan - parsed MapleSEA loots
|
||||
*
|
||||
* MapleSEA-like loots thanks to AyumiLove, src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
* MapleSEA-like loots thanks to AyumiLove - src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
*/
|
||||
|
||||
public class MushroomShrine extends GachaponItems {
|
||||
|
||||
@@ -5,7 +5,7 @@ package server.gachapon;
|
||||
* @author Alan (SharpAceX) - gachapon source classes stub & pirate items
|
||||
* @author Ronan - parsed MapleSEA loots
|
||||
*
|
||||
* MapleSEA-like loots thanks to AyumiLove, src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
* MapleSEA-like loots thanks to AyumiLove - src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
*/
|
||||
|
||||
public class NautilusHarbor extends GachaponItems {
|
||||
|
||||
@@ -5,7 +5,7 @@ package server.gachapon;
|
||||
* @author Alan (SharpAceX) - gachapon source classes stub & pirate equipment
|
||||
* @author Ronan - parsed MapleSEA loots, thanks Vcoc for noticing somewhat unbalanced loots in NLC
|
||||
*
|
||||
* MapleSEA-like loots thanks to AyumiLove, src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
* MapleSEA-like loots thanks to AyumiLove - src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
*/
|
||||
|
||||
public class NewLeafCity extends GachaponItems {
|
||||
|
||||
@@ -5,7 +5,7 @@ package server.gachapon;
|
||||
* @author Alan (SharpAceX) - gachapon source classes stub & pirate equipment
|
||||
* @author Ronan - parsed MapleSEA loots
|
||||
*
|
||||
* MapleSEA-like loots thanks to AyumiLove, src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
* MapleSEA-like loots thanks to AyumiLove - src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
*/
|
||||
|
||||
public class Perion extends GachaponItems {
|
||||
|
||||
@@ -5,7 +5,7 @@ package server.gachapon;
|
||||
* @author Alan (SharpAceX) - gachapon source classes stub & pirate equipment
|
||||
* @author Ronan - parsed MapleSEA loots
|
||||
*
|
||||
* MapleSEA-like loots thanks to AyumiLove, src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
* MapleSEA-like loots thanks to AyumiLove - src: https://ayumilovemaple.wordpress.com/maplestory-gachapon-guide/
|
||||
*/
|
||||
|
||||
public class Sleepywood extends GachaponItems {
|
||||
|
||||
@@ -493,7 +493,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
avgExpReward += exp;
|
||||
}
|
||||
|
||||
// thanks Simon for finding an issue with solo party player gaining yellow EXP when soloing mobs
|
||||
// thanks Simon (HarborMS) for finding an issue with solo party player gaining yellow EXP when soloing mobs
|
||||
avgExpReward /= totalEntries;
|
||||
|
||||
float varExpReward = 0.0f;
|
||||
@@ -623,7 +623,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
|
||||
double sdevRatio = calcExperienceStandDevThreshold(entryExpRatio, totalEntries);
|
||||
|
||||
// GMS-like player and party split calculations found thanks to Russt, KaidaTan, Dusk, AyumiLove. Src: https://ayumilovemaple.wordpress.com/maplestory_calculator_formula/
|
||||
// GMS-like player and party split calculations found thanks to Russt, KaidaTan, Dusk, AyumiLove - src: https://ayumilovemaple.wordpress.com/maplestory_calculator_formula/
|
||||
Set<MapleCharacter> underleveled = new HashSet<>();
|
||||
for (Entry<MapleCharacter, Long> chrParticipation : soloExpDist.entrySet()) {
|
||||
float exp = chrParticipation.getValue() * expPerDmg;
|
||||
@@ -2072,7 +2072,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
|
||||
/*
|
||||
For some reason, some mobs loses aggro on controllers if other players also attacks them.
|
||||
Maybe it was intended by Nexon to interchange controllers at every attack...
|
||||
Maybe Nexon intended to interchange controllers at every attack...
|
||||
|
||||
else if (chrController != null) {
|
||||
chrController.announce(MaplePacketCreator.stopControllingMonster(this.getObjectId()));
|
||||
|
||||
@@ -38,7 +38,7 @@ import tools.MaplePacketCreator;
|
||||
*
|
||||
* @author RonanLana
|
||||
*
|
||||
* Note: the podium uses getGroundBelow that in its turn uses inputted posY decremented by 7.
|
||||
* Note: the podium uses getGroundBelow that in its turn uses inputted posY minus 7.
|
||||
* Podium system will implement increase-by-7 to negate that behaviour.
|
||||
*/
|
||||
public class MaplePlayerNPCPodium {
|
||||
|
||||
@@ -1038,7 +1038,7 @@ public class MapleMap {
|
||||
return count;
|
||||
}
|
||||
|
||||
public void pickItemDrop(byte[] pickupPacket, MapleMapItem mdrop) { // mdrop must be already locked and not-pickedup checked by now
|
||||
public void pickItemDrop(byte[] pickupPacket, MapleMapItem mdrop) { // mdrop must be already locked and not-pickedup checked at this point
|
||||
broadcastMessage(pickupPacket, mdrop.getPosition());
|
||||
|
||||
droppedItemCount.decrementAndGet();
|
||||
@@ -3191,7 +3191,7 @@ public class MapleMap {
|
||||
}
|
||||
|
||||
public void removeMonsterSpawn(int mobId, int x, int y) {
|
||||
// assumption: spawn points are identified by tuple (lifeid, x, y)
|
||||
// assumption: spawn points identifies by tuple (lifeid, x, y)
|
||||
|
||||
Point checkpos = calcPointBelow(new Point(x, y));
|
||||
checkpos.y -= 1;
|
||||
@@ -3214,7 +3214,7 @@ public class MapleMap {
|
||||
}
|
||||
|
||||
public void removeAllMonsterSpawn(int mobId, int x, int y) {
|
||||
// assumption: spawn points are identified by tuple (lifeid, x, y)
|
||||
// assumption: spawn points identifies by tuple (lifeid, x, y)
|
||||
|
||||
Point checkpos = calcPointBelow(new Point(x, y));
|
||||
checkpos.y -= 1;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server
|
||||
Copyleft (L) 2016 - 2018 RonanLana
|
||||
Copyleft (L) 2016 - 2019 RonanLana
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
|
||||
@@ -416,7 +416,7 @@ public class BCrypt {
|
||||
}
|
||||
|
||||
/**
|
||||
* Look up the 3 bits base64-encoded by the specified character,
|
||||
* Look up the 3 bits base64-encoded with the specified character,
|
||||
* range-checking againt conversion table
|
||||
* @param x the base64-encoded value
|
||||
* @return the decoded value of x
|
||||
@@ -434,7 +434,7 @@ public class BCrypt {
|
||||
* the standard MIME-base64 encoding.
|
||||
* @param s the string to decode
|
||||
* @param maxolen the maximum number of bytes to decode
|
||||
* @return an array containing the decoded bytes
|
||||
* @return an array containing the bytes decoded
|
||||
* @throws IllegalArgumentException if maxolen is invalid
|
||||
*/
|
||||
private static byte[] decode_base64(String s, int maxolen)
|
||||
@@ -652,7 +652,7 @@ public class BCrypt {
|
||||
*
|
||||
* It is crucial that we don't do the same to the expanded key used in the main
|
||||
* Eksblowfish loop. By doing it to only one of these two, we deviate from a
|
||||
* state that could be directly specified by a password to the buggy algorithm
|
||||
* state that could be directly specified on a password to the buggy algorithm
|
||||
* (and to the fully correct one as well, but that's a side-effect).
|
||||
*/
|
||||
P[0] ^= sign;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server
|
||||
Copyleft (L) 2016 - 2018 RonanLana
|
||||
Copyleft (L) 2016 - 2019 RonanLana
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
|
||||
@@ -405,7 +405,7 @@ public class MaplePacketCreator {
|
||||
mplew.writeShort(pet.getCloseness());
|
||||
mplew.write(pet.getFullness());
|
||||
addExpirationTime(mplew, item.getExpiration());
|
||||
mplew.writeInt(pet.getPetFlag()); /* pet flags found by -- lrenex & Spoon */
|
||||
mplew.writeInt(pet.getPetFlag()); /* pet flags noticed by lrenex & Spoon */
|
||||
|
||||
mplew.write(new byte[]{(byte) 0x50, (byte) 0x46}); //wonder what this is
|
||||
mplew.writeInt(0);
|
||||
@@ -569,8 +569,8 @@ public class MaplePacketCreator {
|
||||
* Sends a hello packet.
|
||||
*
|
||||
* @param mapleVersion The maple client version.
|
||||
* @param sendIv the IV used by the server for sending
|
||||
* @param recvIv the IV used by the server for receiving
|
||||
* @param sendIv the IV in use by the server for sending
|
||||
* @param recvIv the IV in use by the server for receiving
|
||||
* @return
|
||||
*/
|
||||
public static byte[] getHello(short mapleVersion, byte[] sendIv, byte[] recvIv) {
|
||||
@@ -3345,7 +3345,7 @@ public class MaplePacketCreator {
|
||||
}
|
||||
|
||||
/**
|
||||
* Possible values for <code>operation</code>:<br> 2: Trade cancelled by the
|
||||
* Possible values for <code>operation</code>:<br> 2: Trade cancelled, by the
|
||||
* other character<br> 7: Trade successful<br> 8: Trade unsuccessful<br>
|
||||
* 9: Cannot carry more one-of-a-kind items<br> 12: Cannot trade on different maps<br>
|
||||
* 13: Cannot trade, game files damaged<br>
|
||||
@@ -7114,7 +7114,7 @@ public class MaplePacketCreator {
|
||||
* now.<br> 2: You cannot go to that place.<br> 3: Unable to approach due to
|
||||
* the force of the ground.<br> 4: You cannot teleport to or on this
|
||||
* map.<br> 5: Unable to approach due to the force of the ground.<br> 6:
|
||||
* This map can only be entered by party members.<br> 7: The Cash Shop is
|
||||
* Only party members can enter this map.<br> 7: The Cash Shop is
|
||||
* currently not available. Stay tuned...<br>
|
||||
*
|
||||
* @param type The type
|
||||
@@ -7595,7 +7595,7 @@ public class MaplePacketCreator {
|
||||
* E0 = event or free test time ended
|
||||
* E6 = item cannot be purchased with MaplePoints
|
||||
* E7 = lol sorry for the inconvenience, eh?
|
||||
* E8 = cannot be purchased by anyone under 7
|
||||
* E8 = cannot purchase by anyone under 7
|
||||
*/
|
||||
public static byte[] showCashShopMessage(byte message) {
|
||||
final MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter(4);
|
||||
|
||||
@@ -67,7 +67,7 @@ public class Pair<E, F> {
|
||||
/**
|
||||
* Turns the pair into a string.
|
||||
*
|
||||
* @return Each value of the pair as a string joined by a colon.
|
||||
* @return Each value of the pair as a string joined with a colon.
|
||||
*/
|
||||
@Override
|
||||
public String toString() {
|
||||
|
||||
@@ -19,7 +19,7 @@ import tools.data.output.MaplePacketLittleEndianWriter;
|
||||
*
|
||||
* @author Eric
|
||||
*
|
||||
* Edited wishlists by -- Drago (Dragohe4rt)
|
||||
* Wishlists edited by Drago (Dragohe4rt)
|
||||
*/
|
||||
public class Wedding extends MaplePacketCreator {
|
||||
private static final short MARRIAGE_REQUEST = 0x48;
|
||||
|
||||
Reference in New Issue
Block a user