Reformat and clean up "server" package

This commit is contained in:
P0nk
2021-09-09 23:27:38 +02:00
parent d389665bd7
commit e8ef3a492c
80 changed files with 2104 additions and 2087 deletions
@@ -35,36 +35,35 @@ import java.util.Map.Entry;
import java.util.concurrent.ScheduledFuture;
/**
*
* @author Ronan
*/
public class AriantColiseum {
private Expedition exped;
private MapleMap map;
private Map<Character, Integer> score;
private Map<Character, Integer> rewardTier;
private final Map<Character, Integer> score;
private final Map<Character, Integer> rewardTier;
private boolean scoreDirty = false;
private ScheduledFuture<?> ariantUpdate;
private ScheduledFuture<?> ariantFinish;
private ScheduledFuture<?> ariantScoreboard;
private int lostShards = 0;
private boolean eventClear = false;
public AriantColiseum(MapleMap eventMap, Expedition expedition) {
exped = expedition;
exped.finishRegistration();
map = eventMap;
map.resetFully();
int pqTimer = 10 * 60 * 1000;
int pqTimerBoard = (9 * 60 * 1000) + 50 * 1000;
List<Character> players = exped.getActiveMembers();
score = new HashMap<>();
rewardTier = new HashMap<>();
@@ -74,73 +73,73 @@ public class AriantColiseum {
mc.updateAriantScore();
rewardTier.put(mc, 0);
}
for (Character mc : players) {
mc.sendPacket(PacketCreator.updateAriantPQRanking(score));
}
setAriantScoreBoard(TimerManager.getInstance().schedule(() -> showArenaResults(), pqTimerBoard));
setArenaFinish(TimerManager.getInstance().schedule(() -> enterKingsRoom(), pqTimer));
setArenaUpdate(TimerManager.getInstance().register(() -> broadcastAriantScoreUpdate(), 500, 500));
}
private void setArenaUpdate(ScheduledFuture<?> ariantUpdate) {
this.ariantUpdate = ariantUpdate;
}
private void setArenaFinish(ScheduledFuture<?> arenaFinish) {
this.ariantFinish = arenaFinish;
}
private void setAriantScoreBoard(ScheduledFuture<?> ariantScore) {
this.ariantScoreboard = ariantScore;
}
private void cancelArenaUpdate() {
if (ariantUpdate != null) {
ariantUpdate.cancel(true);
ariantUpdate = null;
}
}
private void cancelArenaFinish() {
if (ariantFinish != null) {
ariantFinish.cancel(true);
ariantFinish = null;
}
}
private void cancelAriantScoreBoard() {
if (ariantScoreboard != null) {
ariantScoreboard.cancel(true);
ariantScoreboard = null;
}
}
private void cancelAriantSchedules() {
cancelArenaUpdate();
cancelArenaFinish();
cancelAriantScoreBoard();
}
public int getAriantScore(Character chr) {
Integer chrScore = score.get(chr);
return chrScore != null ? chrScore : 0;
}
public void clearAriantScore(Character chr) {
score.remove(chr);
}
public void updateAriantScore(Character chr, int points) {
if (map != null) {
score.put(chr, points);
scoreDirty = true;
}
}
private void broadcastAriantScoreUpdate() {
if (scoreDirty) {
for (Character chr : score.keySet()) {
@@ -149,26 +148,26 @@ public class AriantColiseum {
scoreDirty = false;
}
}
public int getAriantRewardTier(Character chr) {
Integer reward = rewardTier.get(chr);
return reward != null ? reward : 0;
}
public void clearAriantRewardTier(Character chr) {
rewardTier.remove(chr);
}
public void addLostShards(int quantity) {
lostShards += quantity;
}
public void leaveArena(Character chr) {
if (!(eventClear && GameConstants.isAriantColiseumArena(chr.getMapId()))) {
leaveArenaInternal(chr);
}
}
private synchronized void leaveArenaInternal(Character chr) {
if (exped != null) {
if (exped.removeMember(chr)) {
@@ -177,53 +176,53 @@ public class AriantColiseum {
dispose();
}
chr.setAriantColiseum(null);
int shards = chr.countItem(4031868);
chr.getAbstractPlayerInteraction().removeAll(4031868);
chr.updateAriantScore(shards);
}
}
}
public void playerDisconnected(Character chr) {
leaveArenaInternal(chr);
}
private void showArenaResults() {
eventClear = true;
if (map != null) {
map.broadcastMessage(PacketCreator.showAriantScoreBoard());
map.killAllMonsters();
distributeAriantPoints();
}
}
private static boolean isUnfairMatch(Integer winnerScore, Integer secondScore, Integer lostShardsScore, List<Integer> runnerupsScore) {
if (winnerScore <= 0) {
return false;
}
double runnerupsScoreCount = 0;
for (Integer i : runnerupsScore) {
runnerupsScoreCount += i;
}
runnerupsScoreCount += lostShardsScore;
secondScore += lostShardsScore;
double matchRes = runnerupsScoreCount / winnerScore;
double runnerupRes = ((double) secondScore) / winnerScore;
return matchRes < 0.81770726891980117713114871015349 && (runnerupsScoreCount < 7 || runnerupRes < 0.5929);
}
public void distributeAriantPoints() {
int firstTop = -1, secondTop = -1;
Character winner = null;
List<Integer> runnerups = new ArrayList<>();
for (Entry<Character, Integer> e : score.entrySet()) {
Integer s = e.getValue();
if (s > firstTop) {
@@ -233,17 +232,17 @@ public class AriantColiseum {
} else if (s > secondTop) {
secondTop = s;
}
runnerups.add(s);
rewardTier.put(e.getKey(), (int) Math.floor(s / 10));
}
runnerups.remove(firstTop);
if (isUnfairMatch(firstTop, secondTop, map.getDroppedItemsCountById(4031868) + lostShards, runnerups)) {
rewardTier.put(winner, 1);
}
}
private ExpeditionType getExpeditionType() {
ExpeditionType type;
if (map.getId() == 980010101) {
@@ -253,28 +252,28 @@ public class AriantColiseum {
} else {
type = ExpeditionType.ARIANT2;
}
return type;
}
private void enterKingsRoom() {
exped.removeChannelExpedition(map.getChannelServer());
cancelAriantSchedules();
for (Character chr : map.getAllPlayers()) {
chr.changeMap(980010010, 0);
}
}
private synchronized void dispose() {
if (exped != null) {
exped.dispose(false);
for (Character chr : exped.getActiveMembers()) {
chr.setAriantColiseum(null);
chr.changeMap(980010000, 0);
}
map.getWorldServer().registerTimedMapObject(() -> {
score.clear();
exped = null;
@@ -1,9 +1,8 @@
package server.partyquest;
import java.awt.Point;
import java.awt.*;
/**
*
* @author David
*/
public class GuardianSpawnPoint {
@@ -93,13 +93,13 @@ public class MonsterCarnival {
}
return;
}
// thanks Atoot, Vcoc for noting double CPQ functional being sent to players in CPQ start
timer = TimerManager.getInstance().schedule(() -> timeUp(), map.getTimeDefault() * 1000); // thanks Atoot for noticing an irregular "event extended" issue here
effectTimer = TimerManager.getInstance().schedule(() -> complete(), map.getTimeDefault() * 1000 - 10 * 1000);
respawnTask = TimerManager.getInstance().register(() -> respawn(), YamlConfig.config.server.RESPAWN_INTERVAL);
cs.initMonsterCarnival(cpq1, room);
} catch (Exception e) {
e.printStackTrace();
@@ -109,7 +109,7 @@ public class MonsterCarnival {
private void respawn() {
map.respawn();
}
public void playerDisconnected(int charid) {
int team = -1;
for (PartyCharacter mpc : leader1.getParty().getMembers()) {
@@ -155,7 +155,7 @@ public class MonsterCarnival {
public boolean canSummonR() {
return summonsR < map.getMaxMobs();
}
public void summonR() {
summonsR++;
}
@@ -163,11 +163,11 @@ public class MonsterCarnival {
public boolean canSummonB() {
return summonsB < map.getMaxMobs();
}
public void summonB() {
summonsB++;
}
public boolean canGuardianR() {
int teamReactors = 0;
for (Reactor react : map.getAllReactors()) {
@@ -175,10 +175,10 @@ public class MonsterCarnival {
teamReactors += 1;
}
}
return teamReactors < map.getMaxReactors();
}
public boolean canGuardianB() {
int teamReactors = 0;
for (Reactor react : map.getAllReactors()) {
@@ -186,7 +186,7 @@ public class MonsterCarnival {
teamReactors += 1;
}
}
return teamReactors < map.getMaxReactors();
}
@@ -238,7 +238,7 @@ public class MonsterCarnival {
leader2.getParty().setEnemy(null);
map.dispose();
map = null;
cs.finishMonsterCarnival(cpq1, room);
}
@@ -345,9 +345,9 @@ public class MonsterCarnival {
chrMap.dropMessage(5, LanguageConstants.getMessage(chrMap, LanguageConstants.CPQExtendTime));
}
startTime = System.currentTimeMillis() + 3 * 60 * 1000;
map.broadcastMessage(PacketCreator.getClock(3 * 60));
timer = TimerManager.getInstance().schedule(() -> timeUp(), map.getTimeExpand() * 1000);
effectTimer = TimerManager.getInstance().schedule(() -> complete(), map.getTimeExpand() * 1000 - 10 * 1000); // thanks Vcoc for noticing a time set issue here
}
@@ -355,10 +355,10 @@ public class MonsterCarnival {
public void complete() {
int cp1 = this.redTotalCP;
int cp2 = this.blueTotalCP;
this.redTimeupCP = cp1;
this.blueTimeupCP = cp2;
if (cp1 == cp2) {
return;
}
@@ -368,7 +368,7 @@ public class MonsterCarnival {
if (chnl != chnl1) {
throw new RuntimeException("Os lideres estao em canais diferentes.");
}
map.killAllMonsters();
for (PartyCharacter mpc : leader1.getParty().getMembers()) {
Character mc = mpc.getPlayer();
@@ -509,11 +509,11 @@ public class MonsterCarnival {
this.blueCP = CP;
}
}
public int getRoom() {
return this.room;
}
public MapleMap getEventMap() {
return this.map;
}
@@ -13,8 +13,8 @@ import java.util.List;
public class MonsterCarnivalParty {
private List<Character> members = new LinkedList<>();
private Character leader;
private byte team;
private final Character leader;
private final byte team;
private short availableCP = 0, totalCP = 0;
private int summons = 8;
private boolean winner = false;
@@ -77,10 +77,11 @@ public class MonsterCarnivalParty {
}
public void warpOut() {
if (winner == true)
if (winner == true) {
warpOut(980000003 + (leader.getMonsterCarnival().getRoom() * 100));
else
} else {
warpOut(980000004 + (leader.getMonsterCarnival().getRoom() * 100));
}
}
public boolean allInMap(MapleMap map) {
+42 -40
View File
@@ -32,7 +32,6 @@ import java.util.ArrayList;
import java.util.List;
/**
*
* @author kevintjuh93
*/
public class PartyQuest {
@@ -49,8 +48,9 @@ public class PartyQuest {
for (PartyCharacter pchr : party.getMembers()) {
if (pchr.getChannel() == channel && pchr.getMapId() == mapid) {
Character chr = Server.getInstance().getWorld(world).getChannel(channel).getPlayerStorage().getCharacterById(pchr.getId());
if (chr != null)
if (chr != null) {
this.participants.add(chr);
}
}
}
}
@@ -67,46 +67,48 @@ public class PartyQuest {
synchronized (participants) {
participants.remove(chr);
chr.setPartyQuest(null);
if (participants.isEmpty()) super.finalize();
if (participants.isEmpty()) {
super.finalize();
}
//System.gc();
}
}
public static int getExp(String PQ, int level) {
if (PQ.equals("HenesysPQ")){
return 1250 * level / 5;
} else if(PQ.equals("KerningPQFinal")){
return 500 * level / 5;
} else if(PQ.equals("KerningPQ4th")){
return 400 * level / 5;
} else if(PQ.equals("KerningPQ3rd")){
return 300 * level / 5;
} else if(PQ.equals("KerningPQ2nd")){
return 200 * level / 5;
} else if(PQ.equals("KerningPQ1st")){
return 100 * level / 5;
} else if(PQ.equals("LudiMazePQ")){
return 2000 * level / 5;
} else if(PQ.equals("LudiPQ1st")) {
return 100 * level / 5;
} else if(PQ.equals("LudiPQ2nd")) {
return 250 * level / 5;
} else if(PQ.equals("LudiPQ3rd")) {
return 350 * level / 5;
} else if(PQ.equals("LudiPQ4th")) {
return 350 * level / 5;
} else if(PQ.equals("LudiPQ5th")) {
return 400 * level / 5;
} else if(PQ.equals("LudiPQ6th")) {
return 450 * level / 5;
} else if(PQ.equals("LudiPQ7th")) {
return 500 * level / 5;
} else if(PQ.equals("LudiPQ8th")) {
return 650 * level / 5;
} else if(PQ.equals("LudiPQLast")) {
return 800 * level / 5;
}
FilePrinter.printError(FilePrinter.NPC, "Unhandled PartyQuest: " + PQ);
return 0;
}
public static int getExp(String PQ, int level) {
if (PQ.equals("HenesysPQ")) {
return 1250 * level / 5;
} else if (PQ.equals("KerningPQFinal")) {
return 500 * level / 5;
} else if (PQ.equals("KerningPQ4th")) {
return 400 * level / 5;
} else if (PQ.equals("KerningPQ3rd")) {
return 300 * level / 5;
} else if (PQ.equals("KerningPQ2nd")) {
return 200 * level / 5;
} else if (PQ.equals("KerningPQ1st")) {
return 100 * level / 5;
} else if (PQ.equals("LudiMazePQ")) {
return 2000 * level / 5;
} else if (PQ.equals("LudiPQ1st")) {
return 100 * level / 5;
} else if (PQ.equals("LudiPQ2nd")) {
return 250 * level / 5;
} else if (PQ.equals("LudiPQ3rd")) {
return 350 * level / 5;
} else if (PQ.equals("LudiPQ4th")) {
return 350 * level / 5;
} else if (PQ.equals("LudiPQ5th")) {
return 400 * level / 5;
} else if (PQ.equals("LudiPQ6th")) {
return 450 * level / 5;
} else if (PQ.equals("LudiPQ7th")) {
return 500 * level / 5;
} else if (PQ.equals("LudiPQ8th")) {
return 650 * level / 5;
} else if (PQ.equals("LudiPQLast")) {
return 800 * level / 5;
}
FilePrinter.printError(FilePrinter.NPC, "Unhandled PartyQuest: " + PQ);
return 0;
}
}
+52 -23
View File
@@ -31,7 +31,6 @@ import tools.PacketCreator;
import java.util.concurrent.ScheduledFuture;
/**
*
* @author kevintjuh93
*/
public class Pyramid extends PartyQuest {
@@ -82,7 +81,9 @@ public class Pyramid extends PartyQuest {
count = 0;
gaugeSchedule = TimerManager.getInstance().register(() -> {
gauge -= decrease;
if (gauge <= 0) warp(926010001);
if (gauge <= 0) {
warp(926010001);
}
}, 1000);
}
@@ -90,23 +91,31 @@ public class Pyramid extends PartyQuest {
public void kill() {
kill++;
if (gauge < 100) count++;
if (gauge < 100) {
count++;
}
gauge++;
broadcastInfo("hit", kill);
if (gauge >= 100) gauge = 100;
if (gauge >= 100) {
gauge = 100;
}
checkBuffs();
}
public void cool() {
cool++;
int plus = coolAdd;
if ((gauge + coolAdd) > 100) plus -= ((gauge + coolAdd) - 100);
if ((gauge + coolAdd) > 100) {
plus -= ((gauge + coolAdd) - 100);
}
gauge += plus;
count += plus;
if (gauge >= 100) gauge = 100;
if (gauge >= 100) {
gauge = 100;
}
broadcastInfo("cool", cool);
checkBuffs();
}
public void miss() {
@@ -118,10 +127,11 @@ public class Pyramid extends PartyQuest {
public int timer() {
int value;
if (stage > 0)
if (stage > 0) {
value = 180;
else
} else {
value = 120;
}
timer = TimerManager.getInstance().schedule(() -> {
stage++;
@@ -146,7 +156,9 @@ public class Pyramid extends PartyQuest {
gaugeSchedule = null;
timer.cancel(false);
timer = null;
} else stage = 0;
} else {
stage = 0;
}
}
public void broadcastInfo(String info, int amount) {
@@ -157,7 +169,9 @@ public class Pyramid extends PartyQuest {
}
public boolean useSkill() {
if (skill < 1) return false;
if (skill < 1) {
return false;
}
skill--;
broadcastInfo("skill", skill);
@@ -169,8 +183,9 @@ public class Pyramid extends PartyQuest {
if (buffcount == 0 && total >= 250) {
buffcount++;
ItemInformationProvider ii = ItemInformationProvider.getInstance();
for (Character chr : getParticipants())
for (Character chr : getParticipants()) {
ii.getItemEffect(2022585).applyTo(chr);
}
} else if (buffcount == 1 && total >= 500) {
buffcount++;
@@ -212,20 +227,34 @@ public class Pyramid extends PartyQuest {
if (exp == 0) {
int totalkills = (kill + cool);
if (stage == 5) {
if (totalkills >= 3000) rank = 0;
else if (totalkills >= 2000) rank = 1;
else if (totalkills >= 1500) rank = 2;
else if(totalkills >= 500) rank = 3;
else rank = 4;
if (totalkills >= 3000) {
rank = 0;
} else if (totalkills >= 2000) {
rank = 1;
} else if (totalkills >= 1500) {
rank = 2;
} else if (totalkills >= 500) {
rank = 3;
} else {
rank = 4;
}
} else {
if (totalkills >= 2000) rank = 3;
else rank = 4;
if (totalkills >= 2000) {
rank = 3;
} else {
rank = 4;
}
}
if (rank == 0) exp = (60500 + (5500 * mode.getMode()));
else if(rank == 1) exp = (55000 + (5000 * mode.getMode()));
else if (rank == 2) exp = (46750 + (4250 * mode.getMode()));
else if (rank == 3) exp = (22000 + (2000 * mode.getMode()));
if (rank == 0) {
exp = (60500 + (5500 * mode.getMode()));
} else if (rank == 1) {
exp = (55000 + (5000 * mode.getMode()));
} else if (rank == 2) {
exp = (46750 + (4250 * mode.getMode()));
} else if (rank == 3) {
exp = (22000 + (2000 * mode.getMode()));
}
exp += ((kill * 2) + (cool * 10));
}