Missing Pirate questlines + Find & MoveLife update + Party-Map patch
Implemented missing scripts for Aerial Strike, Hypnotize and Time Leap skill questlines. Fixed an deadlock issue within player's inventory and status. Fixed skill spam detection disconnecting players when legitimatelly spamming Flash Jump or Heal. Fixed party members map location not being properly updated after changing maps. Rehauled MoveLife handler. Improved packet read of attack and skill elements, properly reflecting incoming actions to other player on the map. Reviewed an issue with equipments MaxHP/MaxMP getting unsynced with player's MaxHP/MaxMP, resulting in differences within server-client view of a player's pool. Fixed mobs not being spawned by dojo bosses after enough spawn actions were instanced. Implemented proper Mob.wz linked mob data support. Fixed /find not identifying a player's channel properly. Fixed Echo of Hero not affecting other player in the map. Fixed commands warp and goto not taking player off events/expeditions properly. Fixed storage expansion not being registered on DB when buying the cash item. Fixed party leadership being reassigned after changing channels. Implemented suggested level range limit between party members on the EXP share system. Players whose level range from the attacker exceeds the estipulated threshold will not receive any EXP from the action. Happy Thanksgiving Day everyone!!!
This commit is contained in:
109
scripts/event/4jaerial.js
Normal file
109
scripts/event/4jaerial.js
Normal file
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server
|
||||
Copyleft (L) 2016 - 2018 RonanLana
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation version 3 as published by
|
||||
the Free Software Foundation. You may not use, modify or distribute
|
||||
this program under any other version of the GNU Affero General Public
|
||||
License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
/**
|
||||
* @Author Ronan
|
||||
* Event - Jonathan's Test Quest
|
||||
**/
|
||||
|
||||
var entryMap = 912020000;
|
||||
var exitMap = 120000102;
|
||||
|
||||
var minMapId = 912020000;
|
||||
var maxMapId = 912020000;
|
||||
|
||||
var eventTime = 2; //2 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
}
|
||||
|
||||
function init() {
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("4jaerial_" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
eim.setProperty("boss", "0");
|
||||
eim.setProperty("canLeave", "0");
|
||||
|
||||
eim.getInstanceMap(entryMap).resetPQ(level);
|
||||
eim.getInstanceMap(entryMap).shuffleReactors();
|
||||
|
||||
respawnStages(eim);
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
return eim;
|
||||
}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
function respawnStages(eim) {}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
var map = eim.getMapInstance(entryMap);
|
||||
player.changeMap(map, map.getPortal(0));
|
||||
}
|
||||
|
||||
function playerUnregistered(eim, player) {}
|
||||
|
||||
function playerExit(eim, player) {
|
||||
eim.unregisterPlayer(player);
|
||||
eim.dispose();
|
||||
em.setProperty("noEntry","false");
|
||||
}
|
||||
|
||||
function playerLeft(eim, player) {}
|
||||
|
||||
function scheduledTimeout(eim) {
|
||||
var player = eim.getPlayers().get(0);
|
||||
playerExit(eim, player);
|
||||
player.changeMap(exitMap);
|
||||
}
|
||||
|
||||
function playerDisconnected(eim, player) {
|
||||
playerExit(eim, player);
|
||||
}
|
||||
|
||||
function changedMap(eim, chr, mapid) {
|
||||
if(mapid < minMapId || mapid > maxMapId) playerExit(eim, chr);
|
||||
}
|
||||
|
||||
function clearPQ(eim) {
|
||||
eim.stopEventTimer();
|
||||
eim.setEventCleared();
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {}
|
||||
|
||||
function leftParty(eim, player) {}
|
||||
|
||||
function disbandParty(eim) {}
|
||||
|
||||
function monsterValue(eim, mobId) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose() {}
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Bamboo Warrior Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
Ronan (based on xQuasar's King Clang spawner)
|
||||
Ronan - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
function init() {
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Centipede Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
Ronan (based on xQuasar's King Clang spawner)
|
||||
Ronan - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
function init() {
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Deo Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
function init() {
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Dyle Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
importPackage(Packages.server.life);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Eliza1 Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Faust1 Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Faust2 Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Chimera/Kimera Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
King Clang Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
King Sage Cat Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Leviathan Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Mano Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Nine Tailed Fox (Old Fox) Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Seruf Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Snack Bar Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
Ronan (based on xQuasar's King Clang spawner)
|
||||
Ronan - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
function init() {
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Stumpy Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Tae Roon Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Timer1 Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
**/
|
||||
|
||||
importPackage(Packages.client);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Timer2 Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Timer3 Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
|
||||
**/
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
-- Odin JavaScript --------------------------------------------------------------------------------
|
||||
Zeno Spawner
|
||||
-- Edited by --------------------------------------------------------------------------------------
|
||||
ThreeStep (based on xQuasar's King Clang spawner)
|
||||
ThreeStep - based on xQuasar's King Clang spawner
|
||||
**/
|
||||
function init() {
|
||||
scheduleNew();
|
||||
|
||||
@@ -29,8 +29,8 @@
|
||||
1.5 - Fix for infinity looping [Information]
|
||||
1.4 - Ship/boat is now showed
|
||||
- Removed temp message[Information]
|
||||
- Credit to Snow/superraz777 for old source
|
||||
- Credit to Titan/Kool for the ship/boat packet
|
||||
- Credits to Snow, superraz777 for old source
|
||||
- Credits to Titan, Kool for the ship/boat packet
|
||||
1.3 - Removing some function since is not needed [Information]
|
||||
- Remove register player menthod [Information]
|
||||
1.2 - It should be 2 ships not 1 [Information]
|
||||
|
||||
209
scripts/event/DelliBattle.js
Normal file
209
scripts/event/DelliBattle.js
Normal file
@@ -0,0 +1,209 @@
|
||||
/*
|
||||
This file is part of the HeavenMS MapleStory Server
|
||||
Copyleft (L) 2016 - 2018 RonanLana
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as
|
||||
published by the Free Software Foundation version 3 as published by
|
||||
the Free Software Foundation. You may not use, modify or distribute
|
||||
this program under any other version of the GNU Affero General Public
|
||||
License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @author: Ronan
|
||||
* @event: Delli Battle
|
||||
*/
|
||||
|
||||
var isPq = true;
|
||||
var minPlayers = 1, maxPlayers = 2;
|
||||
var minLevel = 120, maxLevel = 255;
|
||||
var entryMap = 925010300;
|
||||
var exitMap = 925010200;
|
||||
var recruitMap = 925010200;
|
||||
|
||||
var minMapId = 925010300;
|
||||
var maxMapId = 925010300;
|
||||
|
||||
var eventTime = 6; // 6 minutes
|
||||
|
||||
var lobbyRange = [0, 0];
|
||||
|
||||
function init() {
|
||||
setEventRequirements();
|
||||
}
|
||||
|
||||
function setLobbyRange() {
|
||||
return lobbyRange;
|
||||
}
|
||||
|
||||
function setEventRequirements() {
|
||||
var reqStr = "";
|
||||
|
||||
reqStr += "\r\n Number of players: ";
|
||||
if(maxPlayers - minPlayers >= 1) reqStr += minPlayers + " ~ " + maxPlayers;
|
||||
else reqStr += minPlayers;
|
||||
|
||||
reqStr += "\r\n Level range: ";
|
||||
if(maxLevel - minLevel >= 1) reqStr += minLevel + " ~ " + maxLevel;
|
||||
else reqStr += minLevel;
|
||||
|
||||
reqStr += "\r\n Time limit: ";
|
||||
reqStr += eventTime + " minutes";
|
||||
|
||||
em.setProperty("party", reqStr);
|
||||
}
|
||||
|
||||
function getEligibleParty(party) { //selects, from the given party, the team that is allowed to attempt this event
|
||||
var eligible = [];
|
||||
var hasLeader = false;
|
||||
|
||||
if(party.size() > 0) {
|
||||
var partyList = party.toArray();
|
||||
|
||||
for(var i = 0; i < party.size(); i++) {
|
||||
var ch = partyList[i];
|
||||
|
||||
if(ch.getMapId() == recruitMap && ch.getLevel() >= minLevel && ch.getLevel() <= maxLevel) {
|
||||
if(ch.isLeader()) hasLeader = true;
|
||||
eligible.push(ch);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!(hasLeader && eligible.length >= minPlayers && eligible.length <= maxPlayers)) eligible = [];
|
||||
return eligible;
|
||||
}
|
||||
|
||||
function setup(level, lobbyid) {
|
||||
var eim = em.newInstance("Delli" + lobbyid);
|
||||
eim.setProperty("level", level);
|
||||
|
||||
respawnStages(eim);
|
||||
eim.startEventTimer(eventTime * 60000);
|
||||
|
||||
eim.getMapInstance(entryMap).toggleDrops();
|
||||
return eim;
|
||||
}
|
||||
|
||||
function afterSetup(eim) {}
|
||||
|
||||
function respawnStages(eim) {
|
||||
eim.getMapInstance(entryMap).instanceMapRespawn();
|
||||
eim.schedule("respawnStages", 15 * 1000);
|
||||
}
|
||||
|
||||
function playerEntry(eim, player) {
|
||||
var map = eim.getMapInstance(entryMap);
|
||||
player.changeMap(map, map.getPortal(0));
|
||||
}
|
||||
|
||||
function scheduledTimeout(eim) {
|
||||
eim.getMapInstance(entryMap).killAllMonstersNotFriendly();
|
||||
eim.showClearEffect();
|
||||
clearPQ(eim);
|
||||
}
|
||||
|
||||
function playerUnregistered(eim, player) {}
|
||||
|
||||
function playerExit(eim, player) {
|
||||
eim.unregisterPlayer(player);
|
||||
player.changeMap(exitMap, 0);
|
||||
}
|
||||
|
||||
function playerLeft(eim, player) {
|
||||
if(!eim.isEventCleared()) {
|
||||
playerExit(eim, player);
|
||||
}
|
||||
}
|
||||
|
||||
function changedMap(eim, player, mapid) {
|
||||
if (mapid < minMapId || mapid > maxMapId) {
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
eim.unregisterPlayer(player);
|
||||
}
|
||||
}
|
||||
|
||||
function changedLeader(eim, leader) {
|
||||
var mapid = leader.getMapId();
|
||||
if (!eim.isEventCleared() && (mapid < minMapId || mapid > maxMapId)) {
|
||||
end(eim);
|
||||
}
|
||||
}
|
||||
|
||||
function playerDead(eim, player) {}
|
||||
|
||||
function playerRevive(eim, player) { // player presses ok on the death pop up.
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
eim.unregisterPlayer(player);
|
||||
}
|
||||
|
||||
function playerDisconnected(eim, player) {
|
||||
if (eim.isEventTeamLackingNow(true, minPlayers, player)) {
|
||||
eim.unregisterPlayer(player);
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
eim.unregisterPlayer(player);
|
||||
}
|
||||
|
||||
function leftParty(eim, player) {
|
||||
if (eim.isEventTeamLackingNow(false, minPlayers, player)) {
|
||||
end(eim);
|
||||
}
|
||||
else
|
||||
playerLeft(eim, player);
|
||||
}
|
||||
|
||||
function disbandParty(eim) {
|
||||
if (!eim.isEventCleared()) {
|
||||
end(eim);
|
||||
}
|
||||
}
|
||||
|
||||
function monsterValue(eim, mobId) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
function friendlyKilled(mob, eim) {
|
||||
if (mob.getId() == 9300162) {
|
||||
end(eim);
|
||||
}
|
||||
}
|
||||
|
||||
function end(eim) {
|
||||
var party = eim.getPlayers();
|
||||
for (var i = 0; i < party.size(); i++) {
|
||||
playerExit(eim, party.get(i));
|
||||
}
|
||||
eim.dispose();
|
||||
}
|
||||
|
||||
function clearPQ(eim) {
|
||||
eim.stopEventTimer();
|
||||
eim.setEventCleared();
|
||||
}
|
||||
|
||||
function monsterKilled(mob, eim) {}
|
||||
|
||||
function allMonstersDead(eim) {}
|
||||
|
||||
function cancelSchedule() {}
|
||||
|
||||
function dispose(eim) {}
|
||||
Reference in New Issue
Block a user