Skip to content

Commit

Permalink
Neo City + Revamped EllinPQ + New Release
Browse files Browse the repository at this point in the history
Fixed Neo City area, now playable.
Overhauled the EllinPQ mechanics, such as the "CLEAR" effect when passing maps, and some bug fixes along the way.
Refactored a lot of out-of-place classes and properly renamed a few others through the project.
Updated readme and licenses through the source, preparing the stage for the new release.
  • Loading branch information
ronancpl committed Nov 29, 2017
1 parent 4692481 commit 85a81b9
Show file tree
Hide file tree
Showing 163 changed files with 15,584 additions and 13,420 deletions.
16 changes: 8 additions & 8 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@
/tools/MapleMesoFetcher/dist/
/tools/MapleMesoFetcher/nbproject/private/

/tools/MapleMobBookIndexer/build/
/tools/MapleMobBookIndexer/dist/
/tools/MapleMobBookIndexer/nbproject/private/

/tools/MapleMobBookUpdate/build/
/tools/MapleMobBookUpdate/dist/
/tools/MapleMobBookUpdate/nbproject/private/

/tools/MapleQuestItemFetcher/build/
/tools/MapleQuestItemFetcher/dist/
/tools/MapleQuestItemFetcher/nbproject/private/
Expand All @@ -38,11 +46,3 @@
/tools/MapleSkillMakerReagentIndexer/build/
/tools/MapleSkillMakerReagentIndexer/dist/
/tools/MapleSkillMakerReagentIndexer/nbproject/private/

/tools/MobBookIndexer/build/
/tools/MobBookIndexer/dist/
/tools/MobBookIndexer/nbproject/private/

/tools/MobBookUpdate/build/
/tools/MobBookUpdate/dist/
/tools/MobBookUpdate/nbproject/private/
916 changes: 619 additions & 297 deletions LICENSE

Large diffs are not rendered by default.

80 changes: 52 additions & 28 deletions README.md

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="MapleSolaxia" default="default" basedir=".">
<description>Builds, tests, and runs the project MapleSolaxia.</description>
<project name="HeavenMS" default="default" basedir=".">
<description>Builds, tests, and runs the project HeavenMS.</description>
<import file="nbproject/build-impl.xml"/>
<!--
Expand Down Expand Up @@ -58,7 +58,7 @@
An example of overriding the target for project execution could look like this:
<target name="run" depends="MapleSolaxia-impl.jar">
<target name="run" depends="HeavenMS-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
Expand Down
2 changes: 1 addition & 1 deletion configuration.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
HOST=127.0.0.1
URL=jdbc:mysql://localhost:3306/maplesolaxia
URL=jdbc:mysql://localhost:3306/heavenms
DB_USER=root
DB_PASS=
JAVA8=FALSE
Expand Down
Binary file removed dist/MapleSolaxia.jar
Binary file not shown.
11 changes: 8 additions & 3 deletions docs/feature_list.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
========== MapleSolaxiaV2 ==========
========== HeavenMS (MapleSolaxiaV2) ==========
Credits:
Ronan - Developer
Vcoc - Freelance Developer
Expand Down Expand Up @@ -63,6 +63,7 @@ Monsters, Maps & Reactors:
* Boats, elevator and other travelling mechanics fully working.
* PQs, Taxis and other event-driven situations warps players at random spawnpoints, GMS-like.
* Some reactors (PQ bonus boxes) now sprays items on the map, instead of dropping everything at once.
* Updated Crimsonwood, World Tour and Neo City, enabling quest completion and game progression in these areas.

PQ potentials:
* Lobby system - Multiple PQ instances on same channel.
Expand All @@ -87,6 +88,8 @@ Server potentials:
* Delete Character (requires ENABLE_PIC activated).
* Autosaver (periodically saves on DB current state of every player in-game).
* Both fixed and randomized versions of HP/MP growth rate available, regarding player job (enable one at ServerConstants). Placeholder for HP/MP washing feature.
* Accounts can be created automatically when trying to login on an inexistent account -- credits to shavit.
* Usage of Bcrypt (up-to-date) as the main password hashing algorithm, replacing old SHA's -- credits to shavit.

Admin/GM commands:
* Server commands layered by GM levels.
Expand All @@ -99,9 +102,11 @@ External tools:
* MapleIdRetriever - Two behaviors: generates a SQL table with relation (id, name) of the handbook given as input. Given a file with names, outputs a file with ids.
* MapleMapInfoRetriever - Basic tool for detecting missing info nodes on the map field structures (maps failing to have an info node on the WZ is an critical issue).
* MapleMesoFetcher - Creates meso drop data for mobs with more than 4 items (thus overworld mobs), calculations based on mob level and whether it's a boss or not.
* MapleMobBookIndexer - Generates a SQL table with all relations of cardid and mobid present in the mob book.
* MapleMobBookUpdate - Generates a wz.xml that is a copy of the original MonsterBook.wz.xml, except it updates the drop data info in the book with those currently on DB.
* MapleQuestItemFetcher - Searches the SQL tables and project files and reports in all relevant data regarding missing/erroneous quest items.
* MobBookIndexer - Generates a SQL table with all relations of cardid and mobid present in the mob book.
* MobBookUpdate - Generates a wz.xml that is a copy of the original MonsterBook.wz.xml, except it updates the drop data info in the book with those currently on DB.
* MapleSkillMakerFetcher - Updates the DB Maker-related tables with the current info present on the WZs.
* MapleSkillMakerReagentIndexer - Generates a new maker table describing all stat-improvements from the Maker reagents (those empowering crystals and jewels).

Project:
* Organized project code.
Expand Down
9 changes: 8 additions & 1 deletion docs/mychanges_ptbr.txt
Original file line number Diff line number Diff line change
Expand Up @@ -692,4 +692,11 @@ Adicionado scripts para Power B. Fore npc.
Implementado Maker skill (m�todos de packets pelo menos j� existiam).
Corrigido bug em MapleSkillMakerFetcher, atualizado DB com as tabelas normalizadas.
Nova ferramenta: MapleSkillMakerReagentIndexer. Agrupa no banco de dados informa��o pertinente aos reagentes do Maker, para serem usados pelo server.
Quests nivelando/utilizando o Maker funcionam corretamente agora.
Quests nivelando/utilizando o Maker funcionam corretamente agora.

25 - 26 Novembro 2017,
Implementado regi�o de Neo City. Progress�o do jogo e sistema de quests fluem normalmente agora.
Corrigido um bug onde mobs de PQ n�o atribuem experi�ncia aos jogadores por serem "baixo n�vel".
Corrigido um bug de deadlock com respawn de reatores.
Reatores que consomem drops agora checam por poss�veis drops ao se registrar no mapa (seja por respawn ou primeiro spawn).
Aprimorado mec�nicas da EllinPQ.
2 changes: 1 addition & 1 deletion launch.bat
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
@echo off
@title MapleSolaxia
@title HeavenMS
set CLASSPATH=.;dist\*
java -Xmx2048m -Dwzpath=wz\ net.server.Server
pause
10 changes: 5 additions & 5 deletions nbproject/build-impl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ is divided into following sections:
- cleanup
-->
<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="MapleSolaxia-impl">
<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="HeavenMS-impl">
<fail message="Please build using Ant 1.8.0 or higher.">
<condition>
<not>
Expand Down Expand Up @@ -460,7 +460,7 @@ is divided into following sections:
</condition>
<union id="test.set"/>
<taskdef classname="org.testng.TestNGAntTask" classpath="${run.test.classpath}" name="testng"/>
<testng classfilesetref="test.set" failureProperty="tests.failed" jvm="${platform.java}" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="MapleSolaxia" testname="TestNG tests" workingDir="${work.dir}">
<testng classfilesetref="test.set" failureProperty="tests.failed" jvm="${platform.java}" listeners="org.testng.reporters.VerboseReporter" methods="${testng.methods.arg}" mode="${testng.mode}" outputdir="${build.test.results.dir}" suitename="HeavenMS" testname="TestNG tests" workingDir="${work.dir}">
<xmlfileset dir="${build.test.classes.dir}" includes="@{testincludes}"/>
<propertyset>
<propertyref prefix="test-sys-prop."/>
Expand Down Expand Up @@ -608,7 +608,7 @@ is divided into following sections:
<condition else="-testclass @{testClass}" property="test.class.or.method" value="-methods @{testClass}.@{testMethod}">
<isset property="test.method"/>
</condition>
<condition else="-suitename MapleSolaxia -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
<condition else="-suitename HeavenMS -testname @{testClass} ${test.class.or.method}" property="testng.cmd.args" value="@{testClass}">
<matches pattern=".*\.xml" string="@{testClass}"/>
</condition>
<delete dir="${build.test.results.dir}" quiet="true"/>
Expand Down Expand Up @@ -905,7 +905,7 @@ is divided into following sections:
<delete file="${built-jar.properties}" quiet="true"/>
</target>
<target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
<echo level="warn" message="Cycle detected: MapleSolaxia was already built"/>
<echo level="warn" message="Cycle detected: HeavenMS was already built"/>
</target>
<target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
<mkdir dir="${build.dir}"/>
Expand Down Expand Up @@ -1389,7 +1389,7 @@ is divided into following sections:
<delete file="${built-clean.properties}" quiet="true"/>
</target>
<target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
<echo level="warn" message="Cycle detected: MapleSolaxia was already built"/>
<echo level="warn" message="Cycle detected: HeavenMS was already built"/>
</target>
<target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
<mkdir dir="${build.dir}"/>
Expand Down
8 changes: 4 additions & 4 deletions nbproject/genfiles.properties
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
build.xml.data.CRC32=b88ac406
build.xml.script.CRC32=52a9651a
build.xml.data.CRC32=92113194
build.xml.script.CRC32=ff13faf5
build.xml.stylesheet.CRC32=[email protected]
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=b88ac406
nbproject/build-impl.xml.script.CRC32=7fc24afd
nbproject/build-impl.xml.data.CRC32=92113194
nbproject/build-impl.xml.script.CRC32=cef58264
nbproject/build-impl.xml.stylesheet.CRC32=[email protected]
2 changes: 1 addition & 1 deletion nbproject/licenseheader.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<#if licenseFirst??>
${licenseFirst}
</#if>
${licensePrefix} This file is part of the MapleSolaxiaV2 Maple Story Server
${licensePrefix}This file is part of the HeavenMS (MapleSolaxiaV2) Maple Story Server
${licensePrefix?replace(" +$", "", "r")}
${licensePrefix}Copyright (C) ${date?date?string("yyyy")} ${project.organization!user}
${licensePrefix?replace(" +$", "", "r")}
Expand Down
4 changes: 2 additions & 2 deletions nbproject/private/private.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="2"/>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/constants/ServerConstants.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/server/MakerItemFactory.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/client/MapleClient.java</file>
<file>file:/C:/Nexon/MapleSolaxia/MapleSolaxiaV2/src/net/server/handlers/login/LoginPasswordHandler.java</file>
</group>
</open-files>
</project-private>
6 changes: 3 additions & 3 deletions nbproject/project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ annotation.processing.enabled.in.editor=false
annotation.processing.processors.list=
annotation.processing.run.all.processors=true
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
application.title=MapleSolaxiaV2
application.title=HeavenMS
application.vendor=Ronan
auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml
build.classes.dir=${build.dir}/classes
Expand All @@ -24,7 +24,7 @@ debug.test.classpath=\
${run.test.classpath}
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/MapleSolaxia.jar
dist.jar=${dist.dir}/HeavenMS.jar
dist.javadoc.dir=${dist.dir}/javadoc
endorsed.classpath=
excludes=
Expand Down Expand Up @@ -76,7 +76,7 @@ jnlp.signed=false
jnlp.signing=
jnlp.signing.alias=
jnlp.signing.keystore=
main.class=
main.class=net.server.Server
# Optional override of default Codebase manifest attribute, use to prevent RIAs from being repurposed
manifest.custom.codebase=
# Optional override of default Permissions manifest attribute (supported values: sandbox, all-permissions)
Expand Down
2 changes: 1 addition & 1 deletion nbproject/project.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>MapleSolaxia</name>
<name>HeavenMS</name>
<explicit-platform explicit-source-supported="true"/>
<source-roots>
<root id="src.dir"/>
Expand Down
5 changes: 3 additions & 2 deletions scripts/NPC Base.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
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
Expand Down Expand Up @@ -51,7 +52,7 @@ function action(mode, type, selection) {
function generateSelectionMenu(array) { // nice tool for generating a string for the sendSimple functionality
var menu = "";
for (var i = 0; i < array.length; i++) {
menu += "#L" + i + "#" + array[i] + "l\r\n";
menu += "#L" + i + "#" + array[i] + "#l\r\n";
}
return menu;
}
3 changes: 2 additions & 1 deletion scripts/QUEST Base.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/*
This file is part of the MapleSolaxiaV2 Maple Story Server
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
Expand Down
24 changes: 21 additions & 3 deletions scripts/event/EllinPQ.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ function setup(level, lobbyid) {
var eim = em.newInstance("Ellin" + lobbyid);
eim.setProperty("level", level);

eim.setProperty("statusStg4", 0);

eim.getInstanceMap(930000000).resetPQ(level);
eim.getInstanceMap(930000100).resetPQ(level);
eim.getInstanceMap(930000200).resetPQ(level);
Expand Down Expand Up @@ -179,11 +181,27 @@ function end(eim) {
function clearPQ(eim) {
eim.stopEventTimer();
eim.setEventCleared();

eim.warpEventTeam(930000800);
}

function monsterKilled(mob, eim) {}
function isPoisonGolem(mob) {
var mobid = mob.getId();
return (mobid == 9300182);
}

function monsterKilled(mob, eim, hasKiller) {
var map = mob.getMap();

if(isPoisonGolem(mob)) {
eim.showClearEffect(map.getId());
eim.clearPQ();
} else if(map.countMonsters() == 0) {
var stage = ((map.getId() % 1000) / 100);

if(stage == 1 || (stage == 4 && !hasKiller)) {
eim.showClearEffect(map.getId());
}
}
}

function allMonstersDead(eim) {}

Expand Down
98 changes: 98 additions & 0 deletions scripts/event/GuardianNex.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
var minPlayers = 1;
var timeLimit = 15; //15 minutes
var eventTimer = 1000 * 60 * timeLimit;
var exitMap = 240070000;
var eventMap = 240070010;

function init(){}

function setup(difficulty, lobbyId){
var eim = em.newInstance("Nex_" + lobbyId);
eim.setIntProperty("nex", lobbyId);

eim.getInstanceMap(eventMap + 10 * lobbyId).resetFully();
eim.getInstanceMap(eventMap + 10 * lobbyId).allowSummonState(false);
respawn(eim);
eim.startEventTimer(eventTimer);
return eim;
}

function afterSetup(eim){}

function respawn(eim){}

function playerEntry(eim, player){
var cave = eim.getMapInstance(eventMap + 10 * eim.getIntProperty("nex"));
player.changeMap(cave);
}

function scheduledTimeout(eim){
var party = eim.getPlayers();

for(var i = 0; i < party.size(); i++)
playerExit(eim, party.get(i));

eim.dispose();
}

function playerRevive(eim, player){
player.setHp(50);
player.setStance(0);
eim.unregisterPlayer(player);
player.changeMap(exitMap);
return false;
}

function playerDead(eim, player){}

function playerDisconnected(eim, player){
var party = eim.getPlayers();

for(var i = 0; i < party.size(); i++){
if(party.get(i).equals(player))
removePlayer(eim, player);
else
playerExit(eim, party.get(i));
}
eim.dispose();
}

function monsterValue(eim, mobId){
return -1;
}

function leftParty(eim, player){}

function disbandParty(eim){}

function playerUnregistered(eim, player){}

function playerExit(eim, player){
eim.unregisterPlayer(player);
player.changeMap(exitMap);
}

function changedMap(eim, player, mapId){
if(mapId != (eventMap + 10 * eim.getIntProperty("nex"))){
removePlayer(eim, player);
eim.stopEventTimer();
eim.setEventCleared();
eim.dispose();
}
}

function removePlayer(eim, player){
eim.unregisterPlayer(player);
player.getMap().removePlayer(player);
player.setMap(exitMap);
}

function cancelSchedule(){}

function dispose(){}

function clearPQ(eim){}

function monsterKilled(mob, eim){}

function allMonstersDead(eim){}
Loading

0 comments on commit 85a81b9

Please sign in to comment.