Added Puppets on Aggro + Guild/Alliance packet info patch + Pet flags
Added pet flags recognition, such as the "pet speed same as owner" mechanic. Fixed repeatable quest "Remnants of HT..." not rewarding Dragon Stones. Refactored character object's check slots method, now using the same algorithm from the API class. Fixed a vunerability from before reviving/respawning players to towns, on where players would get their HP restored in area map before sending them back to safety. Fixed some NPC gates in Mushking Empire, allowing players to access bosses free of quest requirements. Improved dialog of NPCs for "permission to attempt Zakum expeds". Implemented (or rather improved) item scripts, now using NPC conversation methods as it was intended originally. Rehauled mob-skill "summon mobs" limit, now using the placeholders found in the wz to determine limit of concurrent underlings spawned, and "limit" now refers to total of underlings spawned from a mob. Revised IoSession closing mechanics in several login classes. Implemented automated loggedin account shutdown if another player has gained a pass from the DB to login. Improved the server-side check for teleport rocks. Fixed removeAfter from mobs being procced after they were disposed. Reviewed EIM start references on several scripts, minding the latest EIM setup implementations. Fixed equipments that were reused Scissors of Karma not not being able to sell on pshops/merchants. Fixed a bug where entering alliances would lead a player to see information from other guilds of past alliances until an update takes place. Padronized a few skillbook names. Reviewed player puppets not gaining priority properly on the recent aggro system. Improved "item sold" message of merchants, now displaying also quantity left of an item on store. Fixed a bug with itemid limits of weapons on server.
This commit is contained in:
@@ -41,6 +41,14 @@ function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("3rdJob_bowman_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("boss", "0");
|
||||
|
||||
return eim;
|
||||
}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
eim.getInstanceMap(maxMapId).resetPQ(1);
|
||||
|
||||
@@ -97,8 +105,6 @@ function dispose() {}
|
||||
|
||||
// ---------- FILLER FUNCTIONS ----------
|
||||
|
||||
function setup(eim, leaderid) {}
|
||||
|
||||
function disbandParty(eim, player) {}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
@@ -41,6 +41,14 @@ function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("3rdJob_magician_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("boss", "0");
|
||||
|
||||
return eim;
|
||||
}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
eim.getInstanceMap(maxMapId).resetPQ(1);
|
||||
|
||||
@@ -97,8 +105,6 @@ function dispose() {}
|
||||
|
||||
// ---------- FILLER FUNCTIONS ----------
|
||||
|
||||
function setup(eim, leaderid) {}
|
||||
|
||||
function disbandParty(eim, player) {}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
@@ -43,15 +43,38 @@ function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function checkHogHealth(eim) {
|
||||
var watchHog = eim.getInstanceMap(923010000).getMonsterById(9300102);
|
||||
if (watchHog != null) {
|
||||
var hp = watchHog.getHp();
|
||||
var oldHp = eim.getIntProperty("whog_hp");
|
||||
|
||||
if (oldHp - hp > 1000) { // or 800, if using mobHP / eventTime
|
||||
eim.dropMessage(6, "Please protect the pig from the aliens!"); // thanks Vcoc
|
||||
}
|
||||
eim.setIntProperty("whog_hp", hp);
|
||||
}
|
||||
}
|
||||
|
||||
function respawnStages(eim) {
|
||||
var i;
|
||||
for (i = 0; i < eventMaps.length; i++) {
|
||||
eim.getInstanceMap(eventMaps[i]).instanceMapRespawn();
|
||||
}
|
||||
|
||||
checkHogHealth(eim);
|
||||
|
||||
eim.schedule("respawnStages", 10 * 1000);
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("3rdJob_mount_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("boss", "0");
|
||||
eim.setProperty("whog_hp", "0");
|
||||
|
||||
return eim;
|
||||
}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
var mapObj = eim.getInstanceMap(entryMap);
|
||||
|
||||
@@ -127,8 +150,6 @@ function dispose() {}
|
||||
|
||||
// ---------- FILLER FUNCTIONS ----------
|
||||
|
||||
function setup(eim, leaderid) {}
|
||||
|
||||
function disbandParty(eim, player) {}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
@@ -51,6 +51,14 @@ function playerEntry(eim, player) {
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("3rdJob_pirate_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("boss", "0");
|
||||
|
||||
return eim;
|
||||
}
|
||||
|
||||
function playerUnregistered(eim, player) {}
|
||||
|
||||
function playerExit(eim, player) {
|
||||
@@ -97,8 +105,6 @@ function dispose() {}
|
||||
|
||||
// ---------- FILLER FUNCTIONS ----------
|
||||
|
||||
function setup(eim, leaderid) {}
|
||||
|
||||
function disbandParty(eim, player) {}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
@@ -41,6 +41,14 @@ function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("3rdJob_thief_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("boss", "0");
|
||||
|
||||
return eim;
|
||||
}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
eim.getInstanceMap(maxMapId).resetPQ(1);
|
||||
|
||||
@@ -97,8 +105,6 @@ function dispose() {}
|
||||
|
||||
// ---------- FILLER FUNCTIONS ----------
|
||||
|
||||
function setup(eim, leaderid) {}
|
||||
|
||||
function disbandParty(eim, player) {}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
@@ -41,6 +41,14 @@ function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("3rdJob_warrior_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("boss", "0");
|
||||
|
||||
return eim;
|
||||
}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
eim.getInstanceMap(maxMapId).resetPQ(1);
|
||||
|
||||
@@ -97,8 +105,6 @@ function dispose() {}
|
||||
|
||||
// ---------- FILLER FUNCTIONS ----------
|
||||
|
||||
function setup(eim, leaderid) {}
|
||||
|
||||
function disbandParty(eim, player) {}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
@@ -20,27 +20,22 @@
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
var exitMap;
|
||||
var instanceId;
|
||||
var minPlayers = 3;
|
||||
|
||||
function init() {
|
||||
instanceId = 1;
|
||||
}
|
||||
function init() {}
|
||||
|
||||
function monsterValue(eim, mobId) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function setup() {
|
||||
function setup(level, lobbyid) {
|
||||
exitMap = em.getChannelServer().getMapFactory().getMap(105090800); // <exit>
|
||||
var instanceName = "4jberserk" + instanceId;
|
||||
|
||||
var eim = em.newInstance(instanceName);
|
||||
|
||||
var eim = em.newInstance("4jberserk_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
|
||||
var mf = eim.getMapFactory();
|
||||
|
||||
instanceId++;
|
||||
|
||||
|
||||
var map = mf.getMap(910500200);
|
||||
map.addMapTimer(3*60);
|
||||
em.schedule("timeOut", 20 * 60000);
|
||||
|
||||
@@ -27,23 +27,21 @@
|
||||
*/
|
||||
|
||||
var exitMap;
|
||||
var instanceId;
|
||||
var minPlayers = 3;
|
||||
|
||||
function init() {
|
||||
instanceId = 1;
|
||||
}
|
||||
function init() {}
|
||||
|
||||
function monsterValue(eim, mobId) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function setup() {
|
||||
function setup(level, lobbyid) {
|
||||
exitMap = em.getChannelServer().getMapFactory().getMap(105090700); // <exit>
|
||||
var instanceName = "4jrush" + instanceId;
|
||||
var eim = em.newInstance(instanceName);
|
||||
|
||||
var eim = em.newInstance("4jrush_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
|
||||
var mf = eim.getMapFactory();
|
||||
instanceId++;
|
||||
var map = mf.getMap(910500100);
|
||||
map.addMapTimer(20*60);
|
||||
em.schedule("timeOut", 20 * 60000);
|
||||
|
||||
@@ -41,6 +41,14 @@ function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("Aran_2ndmount_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("boss", "0");
|
||||
|
||||
return eim;
|
||||
}
|
||||
|
||||
function respawnStages(eim) {}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
@@ -114,8 +122,6 @@ function dispose() {}
|
||||
|
||||
// ---------- FILLER FUNCTIONS ----------
|
||||
|
||||
function setup(eim, leaderid) {}
|
||||
|
||||
function disbandParty(eim, player) {}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
@@ -41,6 +41,14 @@ function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("Aran_3rdmount_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("boss", "0");
|
||||
|
||||
return eim;
|
||||
}
|
||||
|
||||
function respawnStages(eim) {}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
@@ -119,8 +127,6 @@ function dispose() {}
|
||||
|
||||
// ---------- FILLER FUNCTIONS ----------
|
||||
|
||||
function setup(eim, leaderid) {}
|
||||
|
||||
function disbandParty(eim, player) {}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
@@ -41,6 +41,14 @@ function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("BalrogQuest_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("boss", "0");
|
||||
|
||||
return eim;
|
||||
}
|
||||
|
||||
function respawnStages(eim) {}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
@@ -104,8 +112,6 @@ function dispose() {}
|
||||
|
||||
// ---------- FILLER FUNCTIONS ----------
|
||||
|
||||
function setup(eim, leaderid) {}
|
||||
|
||||
function disbandParty(eim, player) {}
|
||||
|
||||
function changedLeader(eim, leader) {}
|
||||
|
||||
@@ -32,6 +32,14 @@ function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("DollHouse_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("boss", "0");
|
||||
|
||||
return eim;
|
||||
}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
eim.getInstanceMap(entryMap).shuffleReactors();
|
||||
eim.setExclusiveItems([4031094]);
|
||||
@@ -81,8 +89,6 @@ function dispose() {}
|
||||
|
||||
// ---------- FILLER FUNCTIONS ----------
|
||||
|
||||
function setup(eim, leaderid) {}
|
||||
|
||||
function monsterValue(eim, mobid) {return 0;}
|
||||
|
||||
function disbandParty(eim, player) {}
|
||||
|
||||
@@ -16,8 +16,8 @@ function init() {
|
||||
rideTime = em.getTransportationTime(rideTime);
|
||||
}
|
||||
|
||||
function setup() {
|
||||
var eim = em.newInstance("Hak_" + + em.getProperty("player"));
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("Hak_" + lobbyid);
|
||||
return eim;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,8 +16,8 @@ function init() {
|
||||
rideTime = em.getTransportationTime(rideTime);
|
||||
}
|
||||
|
||||
function setup() {
|
||||
var eim = em.newInstance("KerningTrain_" + em.getProperty("player"));
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("KerningTrain_" + lobbyid);
|
||||
return eim;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,8 +34,11 @@ function init() {
|
||||
otherMap = em.getChannelServer().getMapFactory().getMap(103040420);
|
||||
}
|
||||
|
||||
function setup() {
|
||||
var eim = em.newInstance("RockSpirit_" + em.getProperty("player"));
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("RockSpirit_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("boss", "0");
|
||||
|
||||
respawn(eim);
|
||||
eim.startEventTimer(timer);
|
||||
return eim;
|
||||
|
||||
@@ -34,8 +34,11 @@ function init() {
|
||||
otherMap = em.getChannelServer().getMapFactory().getMap(103040450);
|
||||
}
|
||||
|
||||
function setup() {
|
||||
var eim = em.newInstance("RockSpiritVIP_" + em.getProperty("player"));
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("RockSpiritVIP_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("boss", "0");
|
||||
|
||||
respawn(eim);
|
||||
eim.startEventTimer(timer);
|
||||
return eim;
|
||||
|
||||
@@ -33,8 +33,9 @@ function getEligibleParty(party) { //selects, from the given party, the tea
|
||||
return eligible;
|
||||
}
|
||||
|
||||
function setup() {
|
||||
var eim = em.newInstance("s4aWorld");
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("s4aWorld_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
|
||||
eim.getInstanceMap(910500000).resetPQ(1);
|
||||
respawnStages(eim);
|
||||
|
||||
@@ -3,12 +3,12 @@ importPackage(Packages.tools);
|
||||
|
||||
var mapId = 200090000;
|
||||
|
||||
function start(pi) {
|
||||
var map = pi.getClient().getChannelServer().getMapFactory().getMap(mapId);
|
||||
function start(ms) {
|
||||
var map = ms.getClient().getChannelServer().getMapFactory().getMap(mapId);
|
||||
|
||||
if(map.getDocked()) {
|
||||
pi.getClient().announce(MaplePacketCreator.musicChange("Bgm04/ArabPirate"));
|
||||
pi.getClient().announce(MaplePacketCreator.crogBoatPacket(true));
|
||||
ms.getClient().announce(MaplePacketCreator.musicChange("Bgm04/ArabPirate"));
|
||||
ms.getClient().announce(MaplePacketCreator.crogBoatPacket(true));
|
||||
}
|
||||
|
||||
return(true);
|
||||
|
||||
@@ -3,12 +3,12 @@ importPackage(Packages.tools);
|
||||
|
||||
var mapId = 200090010;
|
||||
|
||||
function start(pi) {
|
||||
var map = pi.getClient().getChannelServer().getMapFactory().getMap(mapId);
|
||||
function start(ms) {
|
||||
var map = ms.getClient().getChannelServer().getMapFactory().getMap(mapId);
|
||||
|
||||
if(map.getDocked()) {
|
||||
pi.getClient().announce(MaplePacketCreator.musicChange("Bgm04/ArabPirate"));
|
||||
pi.getClient().announce(MaplePacketCreator.crogBoatPacket(true));
|
||||
ms.getClient().announce(MaplePacketCreator.musicChange("Bgm04/ArabPirate"));
|
||||
ms.getClient().announce(MaplePacketCreator.crogBoatPacket(true));
|
||||
}
|
||||
|
||||
return(true);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
function start(pi) {
|
||||
var map = pi.getClient().getChannelServer().getMapFactory().getMap(922000000);
|
||||
function start(ms) {
|
||||
var map = ms.getClient().getChannelServer().getMapFactory().getMap(922000000);
|
||||
map.clearDrops();
|
||||
map.resetReactors();
|
||||
map.shuffleReactors();
|
||||
|
||||
@@ -25,10 +25,11 @@ function action(mode, type, selection) {
|
||||
}
|
||||
if (status == 1) {
|
||||
if (selection == 0) {
|
||||
var train = cm.getEventManager("KerningTrain");
|
||||
train.newInstance("KerningTrain");
|
||||
train.setProperty("player", cm.getPlayer().getName());
|
||||
train.startInstance(cm.getPlayer());
|
||||
var em = cm.getEventManager("KerningTrain");
|
||||
if (!em.startInstance(cm.getPlayer())) {
|
||||
cm.sendOk("The passenger wagon is already full. Try again a bit later.");
|
||||
}
|
||||
|
||||
cm.dispose();
|
||||
return;
|
||||
} else if (selection == 1) {
|
||||
|
||||
@@ -47,10 +47,10 @@ function action(mode, type, selection) {
|
||||
if (status == 0) {
|
||||
if (selection == 0) {
|
||||
if (cm.isQuestStarted(2286) || cm.isQuestStarted(2287) || cm.isQuestStarted(2288)) {
|
||||
var rock = cm.getEventManager("RockSpirit");
|
||||
rock.newInstance("RockSpirit");
|
||||
rock.setProperty("player", cm.getPlayer().getName());
|
||||
rock.startInstance(cm.getPlayer());
|
||||
var em = cm.getEventManager("RockSpirit");
|
||||
if (!em.startInstance(cm.getPlayer())) {
|
||||
cm.sendOk("Uh... It looks like the rooms ahead are a bit crowded right now. Please wait around here for a bit, ok?");
|
||||
}
|
||||
cm.dispose();
|
||||
return;
|
||||
} else {
|
||||
|
||||
@@ -59,13 +59,12 @@ function start() {
|
||||
if (em == null)
|
||||
cm.sendOk("Sorry, but 3rd job advancement (" + js + ") is closed.");
|
||||
else {
|
||||
if (em.getProperty("noEntry") == "false") {
|
||||
var eim = em.newInstance("3rdjob_" + js);
|
||||
eim.registerPlayer(cm.getPlayer());
|
||||
}
|
||||
else {
|
||||
if (!em.startInstance(cm.getPlayer())) {
|
||||
cm.sendOk("Someone else is already challenging the clone. Please wait until the area is cleared.");
|
||||
}
|
||||
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -174,7 +174,7 @@ function action(mode, type, selection) {
|
||||
if (selection > 0) {
|
||||
var banned = expedMembers.get(selection - 1);
|
||||
expedition.ban(banned);
|
||||
cm.sendOk("You have banned " + banned.getName() + " from the expedition.");
|
||||
cm.sendOk("You have banned " + banned.getValue() + " from the expedition.");
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendSimple(list);
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
var status;
|
||||
|
||||
function start(){
|
||||
status = -1;
|
||||
status = -1;
|
||||
action(1, 0, 0);
|
||||
}
|
||||
|
||||
@@ -26,6 +26,11 @@ function action(mode, type, selection){
|
||||
|
||||
|
||||
if(cm.getMapId() == 106021402) {
|
||||
if (!(cm.isQuestCompleted(2331))) {
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if(status == 0){
|
||||
cm.sendSimple("#L0#Enter to fight #bKing Pepe#k and #bYeti Brothers#k.#l\r\n#L1#Enter to fight #bPrime Minister#k.#l");
|
||||
}
|
||||
@@ -48,6 +53,12 @@ function action(mode, type, selection){
|
||||
}
|
||||
}
|
||||
} else {
|
||||
var questProgress = cm.getQuestProgress(2330, 3300005) + cm.getQuestProgress(2330, 3300006) + cm.getQuestProgress(2330, 3300007); //3 Yetis
|
||||
if (!(cm.isQuestStarted(2330) && questProgress < 3)) { // thanks Vcoc for finding an exploit with boss entry through NPC
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if(status == 0){
|
||||
cm.sendSimple("#L1#Enter to fight #bKing Pepe#k and #bYeti Brothers#k.#l");
|
||||
}
|
||||
|
||||
@@ -140,11 +140,11 @@ function action(mode, type, selection){
|
||||
}
|
||||
} else {
|
||||
if (cm.getPlayer().getLevel() >= 50){
|
||||
cm.sendNext("Ok, go.");
|
||||
cm.sendOk("The Chief's Residence Council grants you #bconcession#k to make part of the #rcounteroffensive team against Zakum#k. Good luck on your journey ahead.");
|
||||
if(!(cm.isQuestStarted(100200) || cm.isQuestCompleted(100200))) cm.startQuest(100200);
|
||||
if(Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201);
|
||||
}else
|
||||
cm.sendNext("You're weak.");
|
||||
cm.sendOk("You're way too weak to make part of the #rcounteroffensive team against Zakum#k. Reach at least #blevel 50#k, then talk to me.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,11 +112,11 @@ function action(mode, type, selection){
|
||||
}
|
||||
} else {
|
||||
if (cm.getPlayer().getLevel() >= 50){
|
||||
cm.sendNext("Ok, go.");
|
||||
cm.sendOk("The Chief's Residence Council grants you #bconcession#k to make part of the #rcounteroffensive team against Zakum#k. Good luck on your journey ahead.");
|
||||
if(!(cm.isQuestStarted(100200) || cm.isQuestCompleted(100200))) cm.startQuest(100200);
|
||||
if(Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201);
|
||||
}else
|
||||
cm.sendNext("You're weak.");
|
||||
cm.sendOk("You're way too weak to make part of the #rcounteroffensive team against Zakum#k. Reach at least #blevel 50#k, then talk to me.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,11 +113,11 @@ function action(mode, type, selection){
|
||||
}
|
||||
} else {
|
||||
if (cm.getPlayer().getLevel() >= 50){
|
||||
cm.sendNext("Ok, go.");
|
||||
cm.sendOk("The Chief's Residence Council grants you #bconcession#k to make part of the #rcounteroffensive team against Zakum#k. Good luck on your journey ahead.");
|
||||
if(!(cm.isQuestStarted(100200) || cm.isQuestCompleted(100200))) cm.startQuest(100200);
|
||||
if(Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201);
|
||||
}else
|
||||
cm.sendNext("You're weak.");
|
||||
cm.sendOk("You're way too weak to make part of the #rcounteroffensive team against Zakum#k. Reach at least #blevel 50#k, then talk to me.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,11 +112,11 @@ function action(mode, type, selection){
|
||||
}
|
||||
} else {
|
||||
if (cm.getPlayer().getLevel() >= 50){
|
||||
cm.sendNext("Ok, go.");
|
||||
cm.sendOk("The Chief's Residence Council grants you #bconcession#k to make part of the #rcounteroffensive team against Zakum#k. Good luck on your journey ahead.");
|
||||
if(!(cm.isQuestStarted(100200) || cm.isQuestCompleted(100200))) cm.startQuest(100200);
|
||||
if(Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201);
|
||||
}else
|
||||
cm.sendNext("You're weak.");
|
||||
cm.sendOk("You're way too weak to make part of the #rcounteroffensive team against Zakum#k. Reach at least #blevel 50#k, then talk to me.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -111,11 +111,11 @@ function action(mode, type, selection){
|
||||
}
|
||||
} else {
|
||||
if (cm.getPlayer().getLevel() >= 50){
|
||||
cm.sendNext("Ok, go.");
|
||||
cm.sendOk("The Chief's Residence Council grants you #bconcession#k to make part of the #rcounteroffensive team against Zakum#k. Good luck on your journey ahead.");
|
||||
if(!(cm.isQuestStarted(100200) || cm.isQuestCompleted(100200))) cm.startQuest(100200);
|
||||
if(Packages.constants.ServerConstants.USE_ENABLE_SOLO_EXPEDITIONS && !cm.isQuestCompleted(100201)) cm.completeQuest(100201);
|
||||
}else
|
||||
cm.sendNext("You're weak.");
|
||||
cm.sendOk("You're way too weak to make part of the #rcounteroffensive team against Zakum#k. Reach at least #blevel 50#k, then talk to me.");
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -176,7 +176,7 @@ function action(mode, type, selection) {
|
||||
if (selection > 0) {
|
||||
var banned = expedMembers.get(selection - 1);
|
||||
expedition.ban(banned);
|
||||
cm.sendOk("You have banned " + banned.getName() + " from the expedition.");
|
||||
cm.sendOk("You have banned " + banned.getValue() + " from the expedition."); // getValue, thanks MedicOP for finding this issue
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendSimple(list);
|
||||
|
||||
@@ -78,13 +78,13 @@ function action(mode, type, selection) {
|
||||
if (getEimForString(em,passwd) != null)
|
||||
cm.sendOk("You may not use that password.");
|
||||
else { // start Zakum Battle
|
||||
var eim = em.newInstance("Zakum" + passwd);
|
||||
if(!em.startInstance(eim,cm.getPlayer().getName())) {
|
||||
cm.sendOk("A party in your name is already registered in this instance.");
|
||||
cm.dispose();
|
||||
return;
|
||||
//var em = cm.getEventManager("Zakum" + passwd);
|
||||
if (!em.startInstance(cm.getPlayer())) {
|
||||
cm.sendOk("A party is already registered in this instance.");
|
||||
}
|
||||
eim.registerPlayer(cm.getPlayer());
|
||||
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (state == 1) { // Member
|
||||
|
||||
@@ -56,8 +56,11 @@ function action(mode, type, selection) {
|
||||
if (status == 1)
|
||||
cm.sendYesNo("Are you ready to enter the dollhouse map?");
|
||||
else if (status == 2) {
|
||||
var eim = em.newInstance("DollHouse");
|
||||
eim.registerPlayer(cm.getPlayer());
|
||||
var em = cm.getEventManager("DollHouse");
|
||||
if (!em.startInstance(cm.getPlayer())) {
|
||||
cm.sendOk("Hmm... The DollHouse is being challenged already, it seems. Try again later.");
|
||||
}
|
||||
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,11 +36,7 @@ function start() {
|
||||
if (em == null)
|
||||
cm.sendOk("Sorry, but 3rd job advancement (mount) is closed.");
|
||||
else {
|
||||
if (em.getProperty("noEntry") == "false") {
|
||||
var eim = em.newInstance("3rdjob_mount");
|
||||
eim.registerPlayer(cm.getPlayer());
|
||||
}
|
||||
else {
|
||||
if (!em.startInstance(cm.getPlayer())) {
|
||||
cm.sendOk("There is currently someone in this map, come back later.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -168,7 +168,7 @@ function action(mode, type, selection) {
|
||||
if (selection > 0) {
|
||||
var banned = expedMembers.get(selection - 1);
|
||||
expedition.ban(banned);
|
||||
cm.sendOk("You have banned " + banned.getName() + " from the expedition.");
|
||||
cm.sendOk("You have banned " + banned.getValue() + " from the expedition.");
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendSimple(list);
|
||||
|
||||
@@ -85,10 +85,14 @@ function action(mode, type, selection) {
|
||||
cm.warp(250000100, 0);
|
||||
cm.dispose();
|
||||
} else {
|
||||
var em = cm.getEventManager("Hak");
|
||||
if (!em.startInstance(cm.getPlayer())) {
|
||||
cm.sendOk("Uh... We are currently taking requests from too many maplers right now... Please try again in a bit.");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
cm.gainMeso(-cost[slct]);
|
||||
hak.newInstance("Hak");
|
||||
hak.setProperty("player", cm.getPlayer().getName());
|
||||
hak.startInstance(cm.getPlayer());
|
||||
cm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ function action(mode, type, selection) {
|
||||
if (selection > 0) {
|
||||
var banned = expedMembers.get(selection - 1);
|
||||
expedition.ban(banned);
|
||||
cm.sendOk("You have banned " + banned.getName() + " from the expedition.");
|
||||
cm.sendOk("You have banned " + banned.getValue() + " from the expedition.");
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendSimple(list);
|
||||
|
||||
@@ -175,7 +175,7 @@ function action(mode, type, selection) {
|
||||
if (selection > 0) {
|
||||
var banned = expedMembers.get(selection - 1);
|
||||
expedition.ban(banned);
|
||||
cm.sendOk("You have banned " + banned.getName() + " from the expedition.");
|
||||
cm.sendOk("You have banned " + banned.getValue() + " from the expedition.");
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendSimple(list);
|
||||
|
||||
@@ -158,7 +158,7 @@ function action(mode, type, selection) {
|
||||
if (selection > 0) {
|
||||
var banned = expedMembers.get(selection - 1);
|
||||
expedition.ban(banned);
|
||||
cm.sendOk("You have banned " + banned.getName() + " from the expedition.");
|
||||
cm.sendOk("You have banned " + banned.getValue() + " from the expedition.");
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendSimple(list);
|
||||
|
||||
@@ -175,7 +175,7 @@ function action(mode, type, selection) {
|
||||
if (selection > 0) {
|
||||
var banned = expedMembers.get(selection - 1);
|
||||
expedition.ban(banned);
|
||||
cm.sendOk("You have banned " + banned.getName() + " from the expedition.");
|
||||
cm.sendOk("You have banned " + banned.getValue() + " from the expedition.");
|
||||
cm.dispose();
|
||||
} else {
|
||||
cm.sendSimple(list);
|
||||
|
||||
@@ -48,6 +48,7 @@ function writeFeatureTab_PQs() {
|
||||
addFeature("Mu Lung Dojo.");
|
||||
addFeature("Capt. Latanica with party fighting the boss.");
|
||||
addFeature("Filled up missing obligatory event script methods.");
|
||||
addFeature("Secured uniquety of active lobby-name instances.");
|
||||
}
|
||||
|
||||
function writeFeatureTab_Skills() {
|
||||
@@ -126,7 +127,9 @@ function writeFeatureTab_MonstersMapsReactors() {
|
||||
addFeature("Mobs now can drop more than one of the same equip.");
|
||||
addFeature("Mobs only drop items collectable by the player/party.");
|
||||
addFeature("Mobs shouldn't fall from foothold too often now.");
|
||||
addFeature("Puppets holds targeted mobs nearby on new aggro feat.");
|
||||
addFeature("Properly applying MP cost on non-skill mob moves.");
|
||||
addFeature("Limited underling mob spawns.");
|
||||
addFeature("Implemented mob banish by touch & skill move.");
|
||||
addFeature("Redesigned HT mechanics: assemble & dmg taken.");
|
||||
addFeature("Implemented Zombify disease status.");
|
||||
@@ -253,10 +256,12 @@ function writeFeatureTab_Project() {
|
||||
addFeature("Improved login phase, using cache over DB queries.");
|
||||
addFeature("Protected many flaws with login management system.");
|
||||
addFeature("Developed a robust anti-exploit login coordinator.");
|
||||
addFeature("Revised uniqueness aspect of logged in accounts.");
|
||||
addFeature("Usage of HikariCP to improve DB connection calls.");
|
||||
addFeature("Usage of Java Threadpool to improve runnable calls.");
|
||||
addFeature("Developed many survey tools for content profiling.");
|
||||
addFeature("Removed dangling item name throughout game files.");
|
||||
addFeature("Remodeled item scripts, properly using NPC dialogs.");
|
||||
addFeature("ThreadTracker: runtime tool for deadlock detection.");
|
||||
addFeature("Channel, World and Server-wide timer management.");
|
||||
addFeature("Thoroughly reviewed encapsulation for player stats.");
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
function enter(pi) {
|
||||
var em = pi.getEventManager("KerningTrain");
|
||||
if (!em.startInstance(pi.getPlayer())) {
|
||||
pi.message("The passenger wagon is already full. Try again a bit later.");
|
||||
return false;
|
||||
}
|
||||
|
||||
pi.playPortalSound();
|
||||
var train = pi.getEventManager("KerningTrain");
|
||||
train.newInstance("KerningTrain");
|
||||
train.setProperty("player", pi.getPlayer().getName());
|
||||
train.startInstance(pi.getPlayer());
|
||||
return true;
|
||||
}
|
||||
@@ -6,14 +6,13 @@ function enter(pi) {
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
if (em.getProperty("noEntry") == "false") {
|
||||
var eim = em.newInstance("Aran_2ndmount");
|
||||
eim.registerPlayer(pi.getPlayer());
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
var em = pi.getEventManager("Aran_2ndmount");
|
||||
if (!em.startInstance(pi.getPlayer())) {
|
||||
pi.message("There is currently someone in this map, come back later.");
|
||||
return false;
|
||||
} else {
|
||||
pi.playPortalSound();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -28,6 +28,8 @@ function enter(pi) {
|
||||
pi.playPortalSound();
|
||||
pi.warp(900000000, 0);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
} else {
|
||||
pi.message("Private property. This place can only be entered when running an errand from Camila.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,9 @@ function enter(pi) {
|
||||
case 100000201:
|
||||
pi.warp(100000204, 2); //or 100000205
|
||||
break;
|
||||
case 101000003: // portal warp fix thanks to Vcoc
|
||||
pi.warp(101000004, 2); //or 101000005
|
||||
break;
|
||||
default:
|
||||
pi.warp(pi.getMapId() + 1, 1); //or + 2
|
||||
break;
|
||||
|
||||
@@ -22,13 +22,13 @@ function start(mode, type, selection) {
|
||||
} else if (status == 3) {
|
||||
qm.sendAcceptDecline("Please, Aran. Please stop me from becoming enraged. Only you can control me. It's getting out of my hands now. Please do whatever it takes to #rstop me from going berserk#k!");
|
||||
} else if (status == 4) {
|
||||
qm.startQuest();
|
||||
|
||||
var mb = qm.getEventManager("MahaBattle");
|
||||
mb.newInstance("MahaBattle");
|
||||
mb.setProperty("player", qm.getPlayer().getName());
|
||||
mb.startInstance(qm.getPlayer());
|
||||
|
||||
var em = qm.getEventManager("MahaBattle");
|
||||
if (!em.startInstance(qm.getPlayer())) {
|
||||
qm.sendOk("There is currently someone in this map, come back later.");
|
||||
} else {
|
||||
qm.startQuest();
|
||||
}
|
||||
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,17 +48,14 @@ function start(mode, type, selection) {
|
||||
return;
|
||||
}
|
||||
else {
|
||||
if (em.getProperty("noEntry") == "false") {
|
||||
var eim = em.newInstance("Aran_3rdmount");
|
||||
eim.registerPlayer(qm.getPlayer());
|
||||
|
||||
qm.forceStartQuest();
|
||||
qm.dispose();
|
||||
}
|
||||
else {
|
||||
var em = qm.getEventManager("Aran_3rdmount");
|
||||
if (!em.startInstance(qm.getPlayer())) {
|
||||
qm.sendOk("There is currently someone in this map, come back later.");
|
||||
qm.dispose();
|
||||
} else {
|
||||
qm.forceStartQuest();
|
||||
}
|
||||
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,17 +42,14 @@ function start(mode, type, selection) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (em.getProperty("noEntry") == "false") {
|
||||
var eim = em.newInstance("BalrogQuest");
|
||||
eim.registerPlayer(qm.getPlayer());
|
||||
eim.startEvent();
|
||||
|
||||
qm.dispose();
|
||||
}
|
||||
else {
|
||||
var em = qm.getEventManager("BalrogQuest");
|
||||
if (!em.startInstance(qm.getPlayer())) {
|
||||
qm.sendOk("There is currently someone in this map, come back later.");
|
||||
qm.dispose();
|
||||
} else {
|
||||
qm.forceStartQuest();
|
||||
}
|
||||
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,13 +43,14 @@ function end(mode, type, selection) {
|
||||
|
||||
qm.sendNext("You got the #b#i4032521##k with you, great. Let me show you the way.");
|
||||
} else if (status == 1) {
|
||||
var em = qm.getEventManager("RockSpiritVIP");
|
||||
if (!em.startInstance(qm.getPlayer())) {
|
||||
qm.sendOk("Uh... It looks like the rooms ahead are a bit crowded right now. Please wait around here for a bit, ok?");
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
qm.gainItem(4032521, -10);
|
||||
|
||||
var rock = qm.getEventManager("RockSpiritVIP");
|
||||
rock.newInstance("RockSpiritVIP");
|
||||
rock.setProperty("player", qm.getPlayer().getName());
|
||||
rock.startInstance(qm.getPlayer());
|
||||
|
||||
qm.forceCompleteQuest();
|
||||
qm.dispose();
|
||||
}
|
||||
|
||||
@@ -41,9 +41,22 @@ function start(mode, type, selection) {
|
||||
return;
|
||||
}
|
||||
|
||||
qm.sendNext("You have brought a #b#t4001094##k, thank you for the effort!");
|
||||
if (qm.haveItem(2041200, 1)) {
|
||||
qm.sendOk("(The #b#t2041200##k in my bag has grown brighter since reaching this place... Noticing again, the young dragon over there seems to be glaring bitterly towards it.)");
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
qm.sendNext("You have brought a #b#t4001094##k, thank you for retrieving one more of my kin to the nest! Please have this...\r\n\r\n....... (bleuuhnuhgh) (blahrgngnhhng) ...\r\n\r\nehh, #b#t2041200##k as a token of my kin's gratitude. And do a favor for us, please, get that thing out of here...");
|
||||
} else if (status == 1) {
|
||||
if (!qm.canHold(2041200, 1)) {
|
||||
qm.sendOk("Please make a room on your USE inventory to receive the reward.");
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
qm.gainItem(4001094, -1);
|
||||
qm.gainItem(2041200, 1); // quest not rewarding properly found thanks to MedicOP & Thora
|
||||
qm.gainExp(42000);
|
||||
|
||||
qm.forceCompleteQuest();
|
||||
|
||||
Reference in New Issue
Block a user