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:
@@ -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.");
|
||||
|
||||
Reference in New Issue
Block a user