Maplers' Well-known Battlegrounds
Fulfilled merge of Drago's AriantPQ PR #438 into the source! Adjusted MCPQ map limits predicted within battlefield's map info node. Added max number-of-players option when creating a AriantPQ lobby. Added party creation check when trying to create one inside the AriantPQ rooms. Adjusted several AriantPQ mechanics, in order to either improve the existent features or make those that was still unavailable work seamlessly (score update, ariant batlle points).
This commit is contained in:
@@ -1009,25 +1009,38 @@ public class AbstractPlayerInteraction {
|
||||
return (Pyramid) getPlayer().getPartyQuest();
|
||||
}
|
||||
|
||||
public void createExpedition(MapleExpeditionType type) {
|
||||
MapleExpedition exped = new MapleExpedition(getPlayer(), type);
|
||||
getPlayer().getClient().getChannelServer().getExpeditions().add(exped);
|
||||
public boolean createExpedition(MapleExpeditionType type) {
|
||||
return createExpedition(type, false, 0, 0);
|
||||
}
|
||||
|
||||
public boolean createExpedition(MapleExpeditionType type, boolean silent, int minPlayers, int maxPlayers) {
|
||||
MapleExpedition exped = new MapleExpedition(getPlayer(), type, silent, minPlayers, maxPlayers);
|
||||
return getPlayer().getClient().getChannelServer().addExpedition(exped);
|
||||
}
|
||||
|
||||
public void endExpedition(MapleExpedition exped) {
|
||||
exped.dispose(true);
|
||||
getPlayer().getClient().getChannelServer().getExpeditions().remove(exped);
|
||||
getPlayer().getClient().getChannelServer().removeExpedition(exped);
|
||||
}
|
||||
|
||||
public MapleExpedition getExpedition(MapleExpeditionType type) {
|
||||
for (MapleExpedition exped : getPlayer().getClient().getChannelServer().getExpeditions()) {
|
||||
if (exped.getType().equals(type)) {
|
||||
return exped;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return getPlayer().getClient().getChannelServer().getExpedition(type);
|
||||
}
|
||||
|
||||
public String getExpeditionMemberNames(MapleExpeditionType type) {
|
||||
String members = "";
|
||||
MapleExpedition exped = getExpedition(type);
|
||||
for (String memberName : exped.getMembers().values()) {
|
||||
members += "" + memberName + ", ";
|
||||
}
|
||||
return members;
|
||||
}
|
||||
|
||||
public boolean isLeaderExpedition(MapleExpeditionType type) {
|
||||
MapleExpedition exped = getExpedition(type);
|
||||
return exped.isLeader(getPlayer());
|
||||
}
|
||||
|
||||
public long getJailTimeLeft() {
|
||||
return getPlayer().getJailExpirationTimeLeft();
|
||||
}
|
||||
|
||||
@@ -1065,7 +1065,7 @@ public class EventInstanceManager {
|
||||
|
||||
sL.lock();
|
||||
try {
|
||||
em.getChannelServer().getExpeditions().remove(expedition);
|
||||
em.getChannelServer().removeExpedition(expedition);
|
||||
} finally {
|
||||
sL.unlock();
|
||||
}
|
||||
|
||||
@@ -67,6 +67,9 @@ import server.MapleSkillbookInformationProvider.SkillBookEntry;
|
||||
import server.TimerManager;
|
||||
import server.maps.MapleMapObject;
|
||||
import server.maps.MapleMapObjectType;
|
||||
import server.expeditions.MapleExpedition;
|
||||
import server.expeditions.MapleExpeditionType;
|
||||
import server.partyquest.AriantColiseum;
|
||||
import server.partyquest.MonsterCarnival;
|
||||
import tools.packets.Wedding;
|
||||
|
||||
@@ -1000,6 +1003,56 @@ public class NPCConversationManager extends AbstractPlayerInteraction {
|
||||
}
|
||||
}
|
||||
|
||||
private synchronized boolean setupAriantBattle(MapleExpedition exped, int mapid) {
|
||||
MapleMap arenaMap = this.getMap().getChannelServer().getMapFactory().getMap(mapid + 1);
|
||||
if (!arenaMap.getAllPlayers().isEmpty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
new AriantColiseum(arenaMap, exped);
|
||||
return true;
|
||||
}
|
||||
|
||||
public String startAriantBattle(MapleExpeditionType expedType, int mapid) {
|
||||
if (!GameConstants.isAriantColiseumLobby(mapid)) {
|
||||
return "You cannot start an Ariant tournament from outside the Battle Arena Entrance.";
|
||||
}
|
||||
|
||||
MapleExpedition exped = this.getMap().getChannelServer().getExpedition(expedType);
|
||||
if (exped == null) {
|
||||
return "Please register on an expedition before attempting to start an Ariant tournament.";
|
||||
}
|
||||
|
||||
List<MapleCharacter> players = exped.getActiveMembers();
|
||||
|
||||
int playersSize = players.size();
|
||||
if (!(playersSize >= exped.getMinSize() && playersSize <= exped.getMaxSize())) {
|
||||
return "Make sure there are between #r" + exped.getMinSize() + " ~ " + exped.getMaxSize() + " players#k in this room to start the battle.";
|
||||
}
|
||||
|
||||
MapleMap leaderMap = this.getMap();
|
||||
for (MapleCharacter mc : players) {
|
||||
if (mc.getMap() != leaderMap) {
|
||||
return "All competing players should be on this area to start the battle.";
|
||||
}
|
||||
|
||||
if (mc.getParty() != null) {
|
||||
return "All competing players must not be on a party to start the battle.";
|
||||
}
|
||||
|
||||
int level = mc.getLevel();
|
||||
if (!(level >= expedType.getMinLevel() && level <= expedType.getMaxLevel())) {
|
||||
return "There are competing players outside of the acceptable level range in this room. All players must be on #blevel between 20~30#k to start the battle.";
|
||||
}
|
||||
}
|
||||
|
||||
if (setupAriantBattle(exped, mapid)) {
|
||||
return "";
|
||||
} else {
|
||||
return "Other players are already competing on the Ariant tournament in this room. Please wait a while until the arena becomes available again.";
|
||||
}
|
||||
}
|
||||
|
||||
public void sendMarriageWishlist(boolean groom) {
|
||||
MapleCharacter player = this.getPlayer();
|
||||
MapleMarriage marriage = player.getMarriageInstance();
|
||||
|
||||
@@ -317,7 +317,7 @@ public class ReactorActionManager extends AbstractPlayerInteraction {
|
||||
public void dispelAllMonsters(int num, int team) { //dispels all mobs, cpq
|
||||
final MCSkill skil = MapleCarnivalFactory.getInstance().getGuardian(num);
|
||||
if (skil != null) {
|
||||
for (MapleMonster mons : getMap().getMonsters()) {
|
||||
for (MapleMonster mons : getMap().getAllMonsters()) {
|
||||
if(mons.getTeam() == team) {
|
||||
mons.dispelSkill(skil.getSkill());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user