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:
ronancpl
2019-02-17 16:08:53 -03:00
parent 4beea39615
commit 46fec675f1
127 changed files with 1760 additions and 608 deletions

View File

@@ -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) {

View File

@@ -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 {

View File

@@ -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;
}
}

View File

@@ -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);

View File

@@ -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");
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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();
}
}

View File

@@ -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.");
}
}

View File

@@ -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);

View File

@@ -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();
}
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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.");