Ninja Ambush & Donators on GM Map glitch
Normalized the Ninja Ambush skill, now applying a more sane DOT amount. Added "mobhp" and "resetskill" commands. Fixed a glitch with donators on the GM map, being able to interact with those NPCs as if they were GM's. Added scripts for the Dyle questline.
This commit is contained in:
@@ -853,4 +853,10 @@ Incrementado quiz de 3rd job, agora utilizando um pool de 40 perguntas com escol
|
||||
05 - 10 Março 2018,
|
||||
Corrigido diseases não sendo removidas corretamente no cliente quando tentando trocar de canal/entrar Cash Shop, permitindo-as ficar no jogador infinitamente.
|
||||
Corrigido Holy Symbol atuando de forma inesperada no cenário com somente um jogador.
|
||||
Corrigido Summon Sack lv. 9 lançando mob com id inexistente.
|
||||
Corrigido Summon Sack lv. 9 lançando mob com id inexistente.
|
||||
Corrigido NPC de guild tirando mesos do jogador sem efetuar a ação alguma caso o número máximo de jogadores tenha sido alcançado.
|
||||
|
||||
11 - 12 Março 2018,
|
||||
Localhost melhorado: retirado caps de Matk, Mdef, Wdef, Acc e Avoid.
|
||||
Balanceado Ninja Ambush, agora dando uma quantidade de dano justificável.
|
||||
Implementado questline do Dyle.
|
||||
@@ -40,12 +40,18 @@ var facenew = Array();
|
||||
var colors = Array();
|
||||
|
||||
function start() {
|
||||
if(cm.getPlayer().gmLevel() < 2) {
|
||||
cm.sendOk("Hey wassup?");
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
cm.sendSimple("Hey there, I can change your look. What would you like to change?\r\n#L0#Skin#l\r\n#L1#Hair#l\r\n#L5#Female Hair#l\r\n#L2#Hair Color#l\r\n#L3#Eye#l\r\n#L6#Female Eyes#l\r\n#L4#Eye Color#l\r\n#L7#Set GM job#l");
|
||||
}
|
||||
|
||||
function action(mode, type, selection) {
|
||||
status++;
|
||||
if (mode != 1 || cm.getPlayer().gmLevel() < 1){
|
||||
if (mode != 1 || cm.getPlayer().gmLevel() < 2){
|
||||
cm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -26,11 +26,12 @@
|
||||
* @Purpose: Levels people up.
|
||||
*/
|
||||
function start() {
|
||||
cm.sendYesNo("Do you want to level up?");
|
||||
if(cm.getPlayer().gmLevel() > 1) cm.sendYesNo("Do you want to level up?");
|
||||
else cm.sendOk("Hey wassup?");
|
||||
}
|
||||
|
||||
function action(i, am, pro) {
|
||||
if (i > 0 && cm.getPlayer().gmLevel() > 0)
|
||||
if (i > 0 && cm.getPlayer().gmLevel() > 1)
|
||||
cm.getPlayer().levelUp(true);
|
||||
cm.dispose();
|
||||
}
|
||||
@@ -175,6 +175,7 @@ function writeSolaxiaCommandsLv2() { //JrGM
|
||||
addCommand("setstat", "");
|
||||
addCommand("maxstat", "");
|
||||
addCommand("maxskill", "");
|
||||
addCommand("resetskill", "");
|
||||
addCommand("mesos", "");
|
||||
addCommand("search", "");
|
||||
addCommand("jail", "");
|
||||
@@ -216,6 +217,7 @@ function writeSolaxiaCommandsLv0() { //Common
|
||||
addCommand("joinevent", "");
|
||||
addCommand("leaveevent", "");
|
||||
addCommand("bosshp", "");
|
||||
addCommand("mobhp", "");
|
||||
addCommand("ranks", "");
|
||||
}
|
||||
|
||||
|
||||
59
scripts/quest/2214.js
Normal file
59
scripts/quest/2214.js
Normal file
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
This file is part of the HeavenMS (MapleSolaxiaV2) MapleStory Server
|
||||
Copyleft (L) 2017 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
|
||||
NPC Name: Knocked Trash Can
|
||||
Map(s): Hut in the Swamp
|
||||
Description: Quest - The Run-down Huts in the Swamp
|
||||
Quest ID: 2214
|
||||
*/
|
||||
|
||||
var status = -1;
|
||||
|
||||
function end(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
qm.dispose();
|
||||
} else {
|
||||
if(mode == 0 && type > 0) {
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if (status == 0) {
|
||||
if(!qm.canHold(4031894, 1)) {
|
||||
qm.sendNext("(Eh, I can't hold the #t4031894# right now, I need an ETC slot available.)");
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
qm.sendNext("(Ah, there is a crumbled note here... Hm, it contains details about some scheme that is about to happen, that must be what #r#p1052002##k was talking about.)");
|
||||
qm.gainItem(4031894, 1);
|
||||
qm.gainExp(20000 * qm.getPlayer().getExpRate());
|
||||
qm.forceCompleteQuest();
|
||||
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
65
scripts/quest/2215.js
Normal file
65
scripts/quest/2215.js
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
This file is part of the HeavenMS (MapleSolaxiaV2) MapleStory Server
|
||||
Copyleft (L) 2017 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
|
||||
NPC Name: Find the Crumpled Piece of Paper Again
|
||||
Map(s): Hut in the Swamp
|
||||
Description: Quest - The Run-down Huts in the Swamp
|
||||
Quest ID: 2215
|
||||
*/
|
||||
|
||||
var status = -1;
|
||||
|
||||
function end(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
qm.dispose();
|
||||
} else {
|
||||
if(mode == 0 && type > 0) {
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if (status == 0) {
|
||||
if(qm.getMeso() < 2000) {
|
||||
qm.sendNext("(Oh, I don't have the combined fee amount yet.)");
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if(!qm.canHold(4031894, 1)) {
|
||||
qm.sendNext("(Eh, I can't hold the #t4031894# right now, I need an ETC slot available.)");
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
qm.sendNext("(Alright, now I will deposit the fee there and get the paper... That's it, yea, that's done.)");
|
||||
qm.gainItem(4031894, 1);
|
||||
qm.gainMeso(-2000);
|
||||
qm.forceCompleteQuest();
|
||||
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
scripts/quest/2216.js
Normal file
45
scripts/quest/2216.js
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
This file is part of the HeavenMS (MapleSolaxiaV2) MapleStory Server
|
||||
Copyleft (L) 2017 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/>.
|
||||
*/
|
||||
|
||||
var status = -1;
|
||||
|
||||
function start(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
qm.dispose();
|
||||
} else {
|
||||
if(mode == 0 && type > 0) {
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if (status == 0) {
|
||||
qm.sendNext("I've just gathered an interesting information, #rDyle looks just like regular Ligators#k, but bigger.");
|
||||
qm.gainExp(7000 * qm.getPlayer().getExpRate());
|
||||
qm.forceCompleteQuest();
|
||||
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
scripts/quest/2217.js
Normal file
45
scripts/quest/2217.js
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
This file is part of the HeavenMS (MapleSolaxiaV2) MapleStory Server
|
||||
Copyleft (L) 2017 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/>.
|
||||
*/
|
||||
|
||||
var status = -1;
|
||||
|
||||
function start(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
qm.dispose();
|
||||
} else {
|
||||
if(mode == 0 && type > 0) {
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if (status == 0) {
|
||||
qm.sendNext("Hey, did you notice already, it looks like some awful stench is emanating from the sewers... Ewww");
|
||||
qm.gainExp(7000 * qm.getPlayer().getExpRate());
|
||||
qm.forceCompleteQuest();
|
||||
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
scripts/quest/2218.js
Normal file
45
scripts/quest/2218.js
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
This file is part of the HeavenMS (MapleSolaxiaV2) MapleStory Server
|
||||
Copyleft (L) 2017 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/>.
|
||||
*/
|
||||
|
||||
var status = -1;
|
||||
|
||||
function start(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
qm.dispose();
|
||||
} else {
|
||||
if(mode == 0 && type > 0) {
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if (status == 0) {
|
||||
qm.sendNext("Hey did you see how strange #rLakelis#k has been acting these days? We should see what's going on aabout her, her actions have been so weird lately...");
|
||||
qm.gainExp(7000 * qm.getPlayer().getExpRate());
|
||||
qm.forceCompleteQuest();
|
||||
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
45
scripts/quest/2219.js
Normal file
45
scripts/quest/2219.js
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
This file is part of the HeavenMS (MapleSolaxiaV2) MapleStory Server
|
||||
Copyleft (L) 2017 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/>.
|
||||
*/
|
||||
|
||||
var status = -1;
|
||||
|
||||
function start(mode, type, selection) {
|
||||
if (mode == -1) {
|
||||
qm.dispose();
|
||||
} else {
|
||||
if(mode == 0 && type > 0) {
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mode == 1)
|
||||
status++;
|
||||
else
|
||||
status--;
|
||||
|
||||
if (status == 0) {
|
||||
qm.sendNext("Did you know, they say someone from the sewers has been trying to #rdevelop a magic powder that let's one to grow#k, isn't that nice?");
|
||||
qm.gainExp(7000 * qm.getPlayer().getExpRate());
|
||||
qm.forceCompleteQuest();
|
||||
|
||||
qm.dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -255,7 +255,8 @@ INSERT INTO `shopitems` ( `shopid`, `itemid`, `price`, `position`) VALUES
|
||||
(1337, 2043712, 1, 81),
|
||||
(1337, 2340000, 1, 82),
|
||||
(1337, 2040807, 1, 83),
|
||||
(1337, 2210032, 1, 84);
|
||||
(1337, 2210032, 1, 84),
|
||||
(1337, 2050004, 1, 85);
|
||||
|
||||
# Thanks to DietStory dev team
|
||||
INSERT INTO `shopitems` ( `shopid`, `itemid`, `price`, `pitch`, `position`) VALUES
|
||||
|
||||
@@ -5547,6 +5547,7 @@ public class MapleCharacter extends AbstractAnimatedMapleMapObject {
|
||||
ps.close();
|
||||
ret.cashshop = new CashShop(ret.accountid, ret.id, ret.getJobType());
|
||||
ret.autoban = new AutobanManager(ret);
|
||||
ret.marriageRing = null; //for now
|
||||
ps = con.prepareStatement("SELECT name, level FROM characters WHERE accountid = ? AND id != ? ORDER BY level DESC limit 1");
|
||||
ps.setInt(1, ret.accountid);
|
||||
ps.setInt(2, charid);
|
||||
|
||||
@@ -651,6 +651,15 @@ public class Commands {
|
||||
}
|
||||
break;
|
||||
|
||||
case "mobhp":
|
||||
for(MapleMonster monster : player.getMap().getMonsters()) {
|
||||
if(monster != null && monster.getHp() > 0) {
|
||||
player.yellowMessage(monster.getName() + " (" + monster.getId() + ") has " + monster.getHp() + " / " + monster.getMaxHp() + " HP.");
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case "ranks":
|
||||
PreparedStatement ps = null;
|
||||
ResultSet rs = null;
|
||||
@@ -1329,6 +1338,30 @@ public class Commands {
|
||||
player.yellowMessage("Skills maxed out.");
|
||||
break;
|
||||
|
||||
case "resetskill":
|
||||
for (MapleData skill_ : MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath") + "/" + "String.wz")).getData("Skill.img").getChildren()) {
|
||||
try {
|
||||
skill = SkillFactory.getSkill(Integer.parseInt(skill_.getName()));
|
||||
player.changeSkillLevel(skill, (byte) 0, skill.getMaxLevel(), -1);
|
||||
} catch (NumberFormatException nfe) {
|
||||
nfe.printStackTrace();
|
||||
break;
|
||||
} catch (NullPointerException npe) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if(player.getJob().isA(MapleJob.ARAN1) || player.getJob().isA(MapleJob.LEGEND)) {
|
||||
skill = SkillFactory.getSkill(5001005);
|
||||
player.changeSkillLevel(skill, (byte) -1, -1, -1);
|
||||
} else {
|
||||
skill = SkillFactory.getSkill(21001001);
|
||||
player.changeSkillLevel(skill, (byte) -1, -1, -1);
|
||||
}
|
||||
|
||||
player.yellowMessage("Skills reseted.");
|
||||
break;
|
||||
|
||||
case "mesos":
|
||||
if (sub.length >= 2) {
|
||||
player.gainMeso(Integer.parseInt(sub[1]), true);
|
||||
@@ -2394,8 +2427,8 @@ public class Commands {
|
||||
case "cake":
|
||||
MapleMonster monster = MapleLifeFactory.getMonster(9400606);
|
||||
if(sub.length > 1) {
|
||||
int newHp = Integer.parseInt(sub[1]);
|
||||
if(newHp < 0) newHp = Integer.MAX_VALUE;
|
||||
double mobHp = Double.parseDouble(sub[1]);
|
||||
int newHp = (mobHp <= 0) ? Integer.MAX_VALUE : ((mobHp > Integer.MAX_VALUE) ? Integer.MAX_VALUE : (int) mobHp);
|
||||
|
||||
monster.getStats().setHp(newHp);
|
||||
monster.setStartingHp(newHp);
|
||||
|
||||
@@ -899,7 +899,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
} else if (status.getSkill().getId() == 4121004 || status.getSkill().getId() == 4221004) { // Ninja Ambush
|
||||
final Skill skill = SkillFactory.getSkill(status.getSkill().getId());
|
||||
final byte level = from.getSkillLevel(skill);
|
||||
final int damage = (int) ((from.getStr() + from.getLuk()) * (1.5 + (level * 0.05)) * skill.getEffect(level).getDamage());
|
||||
final int damage = (int) ((from.getStr() + from.getLuk()) * ((3.7 * skill.getEffect(level).getDamage()) / 100));
|
||||
|
||||
status.setValue(MonsterStatus.NINJA_AMBUSH, Integer.valueOf(damage));
|
||||
animationTime = broadcastStatusEffect(status);
|
||||
@@ -1164,7 +1164,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
|
||||
}
|
||||
if (damage > 0) {
|
||||
damage(chr, damage, true);
|
||||
if (type == 1 || type == 2) {
|
||||
if (type == 1) { // ninja ambush (type 2) is already displaying DOT
|
||||
map.broadcastMessage(MaplePacketCreator.damageMonster(getObjectId(), damage), getPosition());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user