Code Monkey home page Code Monkey logo

cosmic's People

Contributors

asafgb avatar canigetapr avatar cpurules avatar doggikong avatar favouris avatar foxyyokai avatar jaydenseah avatar kolakcc avatar leevccc avatar lynxstar avatar matthewhinds avatar medicop avatar noamyoyo avatar nulliphite avatar ormizj avatar p0nk avatar peamy avatar periwinks avatar ronancpl avatar rubend96 avatar silwhoon avatar steven1152 avatar truongdatnhan avatar ubaware avatar ultimatemors avatar v3921358 avatar vcoc avatar vince538 avatar wejrox avatar yuzumika avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cosmic's Issues

commit397 Map.wz corrupt

Hey, WinRAR is saying the following when I unzip it. Do you mind uploading a new version?

commit397_wz-20210321T173600Z-001.zip: Checksum error in commit397_wz\Map.wz. The file is corrupt
commit397_wz-20210321T173600Z-001.zip: The archive is corrupt

Some NPC/Quest/... scripts are in UTF-8 encoding

Some scripts have characters in them causing them to not be processed by the engine.

cunfricht@charlie-dev:~/Projects/Cosmic$ find . -path "./scripts/*/*.js" -exec file {} \; >encoding.txt
cunfricht@charlie-dev:~/Projects/Cosmic$ cat encoding.txt | grep UTF-8
./scripts/quest/20408.js: UTF-8 Unicode text
./scripts/quest/21738.js: UTF-8 Unicode text
./scripts/npc/1092019.js: UTF-8 Unicode text, with very long lines
./scripts/npc/2012031.js: UTF-8 Unicode text
./scripts/npc/2042000.js: UTF-8 Unicode text, with very long lines
./scripts/npc/2012028.js: UTF-8 Unicode text
./scripts/npc/2012033.js: UTF-8 Unicode text
./scripts/npc/2012032.js: UTF-8 Unicode text
./scripts/npc/1090000.js: UTF-8 Unicode text, with very long lines
./scripts/npc/2012030.js: UTF-8 Unicode text
./scripts/npc/2012027.js: UTF-8 Unicode text
./scripts/npc/2012029.js: UTF-8 Unicode text

Mini Dungeons don't work in parties

Script error in: MD_pig, MD_mushroom, MD_golem
I suppose other Mini dungeons also cause these errors too
you are able to enter them when you aren't in a party but I think that's actually supposed to not be possible

image

pet equ err ‭-2147467261‬

id:1822000
name:Pet Label Ring

win10 21h2 An error is reported when the mouse is moved to the item
err:-2147467261‬

win10 ltsc2019 no problem

[Need Help]damage cap

I have created an account and a hero, after maxing the stats, the maximum damage dealed by character is 199999, I'm wondering is there any way to unlimited damage cap?

Docker compose maplestory service doesn't wait for db health before starting

executing docker-compose up for the first time failed for me since maplestory started before the database had initialised everything. It was fine the second run, presumably since the db had set up all the tables and made itself available for connection.

Unfortunately compose doesn't have the inbuilt ability to wait until a service has passed its health checks before starting another service; instead depends_on only waits until the container starts.

Potential solutions could be to use a wait-for instead to await db connectivity?

Some Magatia quests are not coded

Asethia in #bug-report:

A lot of the Magatia quests seem to be not functioning or bugged in some way, not entirely sure why? Fairly confident that it isn't v83 related, went through and saw tons of people talking about doing them around this time, so probably related to heavenms? Unfortunate too, given they're one of the main questlines available in the 70s.

For instance;

"The secret, Quiet passage" doesn't seem completable

You're supposed to go through to this locked door, press up, then enter a password, but it simply doesn't respond. https://youtu.be/Io5MFrh7NVg?t=400 (link to the quest with time stamp)

Similarly; a lot of the clickables in "Magatia: Home of the missing alchemist" don't respond, or don't respond for the quests they're needed to, making them impossible to complete without commands.

https://youtu.be/Io5MFrh7NVg?t=423

You also can't collect this item; Magic device, from Closed lab homun, so commands are required again to complete it.

https://youtu.be/Io5MFrh7NVg?t=161

Exception during RankingLoginTask run

RankingLoginTask causes exception when run: "Unsupported conversion from TIMESTAMP to java.lang.Long". Most likely a side effect from upgrading MySQL versions.
The same issue was fixed for "tempban" and "birthday" values in "account" table.

Feature request: support a local directory

Instead of the user modifying script/wz/config.yaml, having a separate local directory ($HOME/.local/share/cosmic?) that the server will load on top of it's own directory would be rather nice.

As an example in the local directory a user can have a config.yaml with only the changed values:

WORLDS: 2
ENABLE_PIC: false
USE_MTS: true

As well for scripts/wz folder the source likewise loads the local folder on top of it's own original folder, so the user only needs to have the scripts / wz xmls that they want to change or add.

Constants for class skills are missing some entries

I've found that a few classes are missing entries for skills in their java constants file (constants.skills.*). Two examples are Aran and Bowmaster.

If you cross check the skills listed against those available on BBB hiddenstreet, you can which are missing.

They'd be useful to add in so that they could be referenced directly instead of the skill id, which would improve script readability in my opinion. Of course, it's better to have a complete list in case people wish to reference them in future, so that's another reason.

KIN/NimaKIN cleanup

It's unknown to me if KIN and NimaKIN have ever been documented in actual MapleStory (be it GMS, KMS, or otherwise).

I think KIN's current script should be changed to a !gmsalon command or the like and restoring her as changing people's job to GMs (900/910) as it appears is her function from her speech bubble. A note for current functionality is it would be ideal if hair/eye color didn't default to black but was taken from the player's existing.

As for NimaKIN, I think there should probably be a check before the dialog to see if the player can level up (if level under 200/120), assuming the dialogue is not original.

Change rebirth support to allow a custom npc id to be used

Currently rebirths can be turned on but they'll only we usable if you can find Wolf Spirit Ryko (9010021). We couldn't find that npc anywhere that was listed in the xml files, so I modified the rebirth system to allow a specific NPC id to be passed in.

This feature seems pretty useful, so I think it should be added.

Since npcs that already have their conversations present in the wz don't automatically use the *.js file present and any npc should be usable, the id of the rebirth npc being set should be added to the list of npcs that will always use the override, if rebirths are enabled.

Mob skill cooldown is broken

Horntail spams skills constantly. Gatekeeper attacks upon entering the map even though no character is nearby.
Likely introduced during mob skill refactoring in last merged PR.

thank u

Thank you for your continued contribution.

Wrong Southperry in command goto

Currently !goto southperry sends the player to map 60000, which is an older Southperry. The correct Southperry is map 2000000.

Tools are broken

Have only checked MapleMobBookUpdate so far, which is unable to make a database connection.

Custom NPC scripts don't override the default

If you create a custom NPC script, it isn't executed if the NPC already has a D0 entry in the wz xml.

For example, Cody has the following XML:

  <imgdir name="9200000">
    <string name="name" value="Cody"/>
    <string name="func" value="Wizet Wizard"/>
    <string name="n0" value="Hey, care to help me out??"/>
    <string name="n1" value="I&apos;m telling you, I really AM from WIZET!"/>
    <string name="d0" value="What&apos;s going on? I&apos;m Cody, the head programmer of MapleStory~"/>
    <string name="d1" value="Thanks to your help, the party went bananas! Boy it was fun. anyway, hope you liked the stuff that I gave you. I&apos;ll see you around~"/>
  </imgdir>

I created a new npc file (scripts/npc/9200000.js) and gave it custom content, but it's never executed. It seems most if not all of the npcs that are already in the WZ xml files have been skipped over if they already have text. It makes sense, but it's difficult if you want to have an npc become a custom npc.

I think the scripts should take precedence if they exist, instead of being a fallback. I think scipting.npc.NPCConversationManager may be the place to do it, but I haven't dug far enough to say for sure.

A side use-case for this is fixing incorrect wording that was on some of the NPCs in v83.

Thoughts?

P.s. I came across this issue when trying to debug why Cody wasn't registering as an npc when debug mode is enabled and I clicked him. Seems like there are multiple pathways to having a conversation with an npc, maybe something to refactor.

Leech levels are off

Level 50 chr is leeching from a level 90 mob with lv 105 chr as mvp.
As described by Shahar in the general channel on Discord on September 4th.

Mushroom Kingdom map issue

The NPCs for the first Mushroom Kingdom map (106020000 - Mushroom Forest Field) are in the wrong spots.

Cosmic:
image

Expected:
image

These are all supposed to be further to the left (with the exception of the Head Security Officer, who should be close to the portal but is in fact all the way to the left of the map). You can see that the graphics for Mushking are slightly broken because he is supposed to be seated in his throne to the left (foothold 40)

It appears to be an issue in the WZ files for this map. The server XML/WZ files have different footholds assigned than in a clean Map.wz, which line up with where the characters are (mis)placed

I am happy to fix this, I think that just pulling a copy of this map from the clean v83 WZ and updating will suffice - but not sure what the process is for changes to the WZ/XML files is :-)

Docker compose mounted directories creates rebuild issues

Changes to the src can't be rebuilt once it's been deployed, since the user doesn't have permissions on the docker-db-data directory which is sent to the docker build context. This causes docker-compose up --build to complain of a docker socket issue when it's actually masking the permissions error (evident by running docker build . in the project root).

I've fixed this locally by adding the folder to the .dockerignore since it shouldn't be sent to the image anyway.

rate coupons stop working on death

Rate coupons seem to be working as a buff, and expire when u die like all buffs, but the times in which they buff are when the character is saved, eg; changing channels / relogging / going into/outof cash shop
So to get the buff again after death you'll have to cc, instead of it being automatically applied after death

Exception with portal in map 261000010 (Zenumist Society)

Attempting to enter the portal to map 261000011 (Zenumist - Hidden Room : Zenumist - Hidden Room) results in a exception, forcing a !reloadmap command.

image

java.lang.IndexOutOfBoundsException: readerIndex(20) + length(4) exceeds writerIndex(20): UnpooledHeapByteBuf(ridx: 20, widx: 20, cap: 20/20)
        at io.netty.buffer.AbstractByteBuf.checkReadableBytes0(AbstractByteBuf.java:1442)
        at io.netty.buffer.AbstractByteBuf.readIntLE(AbstractByteBuf.java:817)
        at net.packet.ByteBufInPacket.readInt(ByteBufInPacket.java:33)
        at net.server.channel.handlers.ChangeMapHandler.handlePacket(ChangeMapHandler.java:91)
        at client.Client.channelRead(Client.java:208)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
        at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
        at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327)
        at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299)
        at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
        at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:833)

Rebirthing and becoming the same class prevents 3rd job advancement due to sp gains

When a player rebirths, the game remembers how many points have been used on which skills. This causes them to be present on the next playthrough if the player chooses the same job path.

By itself this is not an issue, but the server requires that the player use all their sp before their 3rd job advancement, which is not possible in this scenario since their skills are already maxed out. This leads to a deadlock in progression.

A possible fix is to warn the player that SP will be lost when they job advance instead of requesting they use it. Of course, this isn't in line with the authentic experience since you had to use them instead.

gmserver setting

gm server is not implemented
image
its only mentioned in serverconfig and config.yaml, there isn't any use of the setting

in my understanding gmserver is supposed to allow only gm accounts to log in(user accounts wouldn't be able to login), this can be done with a check whether the account has a character with gm lvl >1
This setting is useful for server owners to check that the server is ok after a restart / update before allowing the users to log in
It will also be good idea to add a command @gmserver off, (permission only for characters with gm lvl 4/5+) to re-enable users to log in, I'm unsure about how to implement the gmserver setting but I think if it was implemented I could write the code for the command

Script 1063017 broken due to typo

ERROR npc.NPCScriptManager - Error performing NPC script action for npc: 1063017
javax.script.ScriptException: org.graalvm.polyglot.PolyglotException: TypeError: Access to host class server.life.MapleLifeFactoroy is not allowed or does not exist.

"MapleLifeFactoroy" should be "LifeFactory"

Area bosses are not killable

Snow Witch, Security Camera, Deet and Roi, Scholar Ghost and Shade should be killable and stop using the warp attack when the reactor on the map has been triggered.

Mount in config.yaml to maplestory service

Currently the config is built with the jar, but mounting it in would make it easier to redeploy and test changes, since it shouldn't need a full rebuild to be applied.

Code formatting is inconsistent

This one may be controversial, but I think the code style should be standardised and applied to the repo. Currently there's a mix of tabs and spaces everywhere, some different brace placement etc.

Since intellij community has become pretty standard next to vscode, I think it would be worth having a standard code style committed to the repo for both editors, then it can be applied automatically on save for js and java files.

Currently I've gotten around the tabs issue by changing the tab display to 8 characters in my IDE, which makes it look a bit better, but it's inconsistent.

Thoughts?

party exp distribution

When in a party and killing a mob, one of the party members (the one who dealt the most damage) gets the maximum exp and the others get the minimum exp (regardless of their damage), for example, 6 characters are in a party and two attack a zakum arm, lets say it gives 100 exp, one of them dealt 51% of the damage and another 49% the rest didn't participate but are within the level interval to leech, the one who dealt 51% will get 20+80/6 exp and his friends 80/6 exp each, instead it should be, the one who hit 51% gets 51%*20 +80/6, his friend 49%*20 +80/6 and the other 4 80/6

example takes into account the default values:
EXP_SPLIT_MVP_MOD: 0.2
EXP_SPLIT_COMMON_MOD: 0.8
PARTY_BONUS_EXP_RATE: 1.0

The relevant file to look at is Monster.java

Error when i try to run sv with IntelliJ idea

i got this error please help

java.lang.NoSuchFieldException: modifiers
at java.base/java.lang.Class.getDeclaredField(Class.java:2549)
at tools.AutoJCE.removeCryptographyRestrictions(AutoJCE.java:32)
at net.server.Server.main(Server.java:974)
Failed to remove cryptography restrictions

Rebirth doesn't clear old job quests which prevents players from being the same job again

Second job quests for explorers use custom quest IDs for tracking the progress (letter, marbles, proof of hero). When rebirthing, these quests are still marked as completed for the player, which prevents them from getting past the letter phase.

The custom quest IDs are not shorts either, although they need to be in order to send the packet to the client.
In order to set up the rebirth to reset completed class-specific quests, the custom quests will need to have their id changed to be < 32767 in order to be a short, and the rebirth system will need to be extended to forfeit those quests. Currently, no method exists on the maple character to do so.

  • Change custom explorer second job quest ids to be shorts instead of ints
  • Add a method to lazily delete/forfeit quests to the maple character
  • Figure out the list of quests that need to be forfeited for each class and create a reference to them
  • Extend MapleCharacter::rebirth to also forfeit any job-specific quests

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.