tomm0017 / rsmod Goto Github PK
View Code? Open in Web Editor NEWNew repository: https://github.com/rsmod/rsmod
Home Page: https://github.com/rsmod/rsmod
License: Apache License 2.0
New repository: https://github.com/rsmod/rsmod
Home Page: https://github.com/rsmod/rsmod
License: Apache License 2.0
Since the support was added, we can now fix this todo
Need support for ItemOnItem actions for things such as combining items/skills(firemaking, herblore)
Add support for item swapping in ItemContainers
There should be a method to stun the player as in freeze them to a location and set a flag on the player that can be checked to see if they are stunned before doing an action. Useful for thieving, and weapon special attacks amongst other things.
Levels will continue to level up past level 99 until ~190m xp. The highest level I was able to see is level 125/99 then as I approached 200m xp it went to level 99/99
Move the values in NpcCombatDef to NpcDef to keep everything in one place and make it easier when we pack these values into the cache and decode them on startup
if u have placeholder for any item in ur bank and u deposit ur items , the item should go to their place.
when u have placeholder for any item in the bank , and u deposit the item it takes new place
1.make place holder for any item
2.deposit that item by bank deposit box
3.go check ur bank
Add the ability to reduce stats for attackable NPCs. This is needed for implementing special attacks like the Dragon Warhammer.
A list of options based on where the players are and actions players can do on each other.
https://i.imgur.com/wdcpmll.png this would include "attack" in the wilderness.
Currently just a "walk here" option.
https://i.imgur.com/pWFTfFE.png
Some objects only have objects when a specific varbit is set - can we add support for this somehow? The example I'll give is the Mysterious Ruins for Runecrafting. When varbit 607 is set to 1, the 'enter' option on the Mysterious Ruins for the Air Altar is shown, however this throws an exception when starting the server as 'enter' is not a valid option for the object.
package gg.rsmod.plugins.content.objs.runecraftruins
import com.google.common.collect.ImmutableSet
data class RunecraftRuinsType(val id : Int, val talisman : Int, val tiara : Int, val varbit : Int, val destination: Tile)
val ruins = ImmutableSet.of(
RunecraftRuinsType(id = Objs.MYSTERIOUS_RUINS, talisman = Items.AIR_TALISMAN, tiara = Items.AIR_TIARA, varbit = 607, destination = Tile(2841, 4830))
)!!
ruins.forEach { ruin ->
on_item_equip(ruin.tiara) {
player.setVarbit(ruin.varbit, 1)
}
on_item_unequip(ruin.tiara) {
player.setVarbit(ruin.varbit, 0)
}
on_obj_option(obj = ruin.id, option = "enter") {
if (player.getVarbit(ruin.varbit) == 1) {
player.teleport(ruin.destination)
}
}
}
when u follow or trade other player , your player must follow or trade the player u have clicked on
if u talk to npc first and then tried to follow or trade or report other player , your player will talk with npc
1.talk to npc first
2.try to follow or trade or report other player
3.
If you roll a higher hit than an NPC (and presumably player, though not tested) has, it grants xp for the damage that was rolled, and not the damage that was hit.
Example:
an NPC has 8 hp left and you roll a 10, you get xp for the 10 damage even though you only hit an 8
When a player sends a chat message, the message goes to the people in the general area.
When a player with privilege id 0 sends a chat message their client, as well as ones in the area, will crash. My only guess is the icon id for the privilege being -1 in game.yml
Error in client is as follows:
Error: class242:278 client:1420 client:2913 client:2523 class52:381 class52:613 Thread:844 | java.lang.NullPointerException | 79,60,67,778,3084,3499,-110,-64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
when player's hp reaches 0, they can spam any action to avoid death but stay at 0 HP.
https://youtu.be/egqw8beN9is see video for demo
Non-combat NPCs such as Bankers, Shop keepers shouldn't be able to be attacked with magic.
If you cast a magic spell to any NPC, it hits them and they won't respawn.
Serve back archives to clients independently from the Netty thread, either through its own thread pool or an independent app.
Serves back archives to clients on Netty thread, which can cause delay on other Netty operations
There should be a function that you can use to see if a player has a specified item on their person (equipped, in inventory, or in looting bag) or in their bank and should return the number of that item. This would be used for items that a player should only have 1 or a certain amount of. Such as clue scrolls, quest items, etc.
Add support for bank tabs
Implement a music system which plays tracks based on which region the player is standing in. I'll write all the data.
Don't remove non-rune items when casting spells
Where it has xp in this method, change it to (xp * xpRate)
Lunar teleports should play a gfx when being cast
Lunar teleports do not play a gfx
Javadoc/KDoc is used to document methods, classes, members etc. rather than as casual comments explaining some code.
https://kotlinlang.org/docs/reference/kotlin-doc.html#kdoc-syntax
https://github.com/Tomm0017/rsmod/blob/master/Dockerfile#L11
The distributor of the zenika/kotlin:1.3-jdk8
image also provides Alpine images which will reduce the size down by roughly 500mb:
Though a better solution would be to make use of multi-stage building using either one of those images presented above for just building a fat JAR:
# Start with the Alpine image for building (You can also use the larger one as this image will be discarded eventually)
FROM zenika/kotlin:1.3-eap-jdk8-alpine AS builder
# Imagine Gradle commands here building our fat JAR
# Restart using probably the smallest JRE image available
FROM openjdk:8-jre-alpine
# Copy over the fat JAR
COPY --from=builder /my_fat_jar.jar /app/
This fat JAR would include everything RS MOD needs. The JAR can then be copied over to an OpenJDK based JRE image as this image is even smaller than the Kotlin Alpine one.
Npcs should become invisible on death if they respawn
Npcs are de-spawned from the world and a new npc is constructed after death delay
When you do ::max it should just say your max hit and accuracy and be able to continue combat.
After doing ::max (at least with level 1 stats) it spams in chat "Your magic level is not high enough for this spell" and even clicking to change combat styles, it still gives the same message. Also, there may be a logic issue with the ::max command as I'm not sure how a character with all level 1 stats can hit a 21.
Make wiki entry regarding TimerMap and TimerKeys
Create regional music system and implement the packet
Noticed you put the companion object at the top. It should be at the bottom:
https://kotlinlang.org/docs/reference/coding-conventions.html#class-layout
Add support for npc collision flags as npcs shouldn't be able to walk on top of one another
Just an example when player attacks an NPC
https://i.gyazo.com/f6fdde1a972b9efbbf4d71946adbc372.mp4
Services are perfect candidates for injection targets
Depends on implementation of
Redo SimplePathFindingStrategy. Current one is awful and doesn't even support diagonal movement.
According to kotlin logging utlity docs this is the preffered way of getting a logger: https://github.com/MicroUtils/kotlin-logging/wiki#obtaining-a-logger
Fix issue where using a magic spell on a target will not make you face them.
Add a way for plugins to define object spawns.
Implement dependency injection through Guice
ShopItem has a sellPrice property but it's not actually used.
when you kill any npc it should die and respawn normally without any problems
when you kill the npc with range , the npc will not die and u cant attack it again
1.wear ranged weapon with arrows
2.kill any npc
3.
here is the error when u kill npc with range
https://pastebin.com/AJNvadmM
if player dies to an npc and u back to fight the same npc , both will fight
if the player dies to an npc and that player back to fight the same npc , the npc will not fight just the player
1.fight npc
2.die to that npc
3.fight the same npc again
Add a drop system for npcs
Add support for plugins that are executed when players enter certain areas
Item placeholder logic in ItemContainer should be handled via the bank plugin instead of ItemContainer itself
Remove placeholder item ids from Items.kt
constants
Implement player death
Don't forget to call World.instanceAllocator.death
Add support for mocking in tests
Make wiki entry regarding AttributeMap and AttributeKeys
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.