The duel/dice scammer headicons are a good idea, but in crowded areas I would assume wouldn't be useful at all, a better way to go about that would probably just be a flagged string in the trade/duel interfaces in red text or something to let people know
Once I get this working, it will show above their head head PLUS showing the warning icon (icon 14) next to their name in the relevant menus.
KT/JAVA - NBX 637 - HERE!
KT - Drop table 4: Flexible, Powerful - HERE!
KT - Command: Simplify writing commands - HERE
KT - NbUtil: Make your kotlin easier - HERE
KT - Hopping Islands: From Java to Kotlin - P1 - P2 - P3 - P4 - P5
I have separated the main drop table in to multiple smaller tables. This list is going to be an explanation as to why I did this. Also ofc numbers are subject to change.
Most of the main tables will be enabled by default, and will be toggle-able by players. Food potions and ammo will be mandatory, this is to prevent abuse of the toggle system. Plus everyone uses these things all the time.
The main tables will share a base 99% chance to be picked from all active main tables.
The other 1% will be shared among all enabled unlockable tables
If none are unlocked or toggled on, will give a +50% flat drop rate bonus to the drop that lands on this chance.
Toggling a table on or off will cost.
Players will also have X amount of points to apply to tables to increase their drop rates in those tables.
You can re-allocate your points, but it will cost.
Re-allocating your points will be all at once, you won't be able to take 1 point out and put it somewhere else at your discretion.
Toggling a table off that has points allocated to it will let you re-allocate the points that were in the table.
You can get extra points from achievements or other pvp-related activities.
Special drop tables will be unlockable by other means (achievements mostly), but will toggled off by default. Some will, of course, be harder to unlock than others.
Why I split up the drop tables the way I did
Give the players some control over the RNG, allowing them to have a higher chance to get the item(s) they currently want.
Segment the market, making some items more rare than others.
Self-balancing item saturation. If there's high demand for an item, players can swap their drop tables around to fit that table in and all other item table drops will have less of a supply, slowly creating more demand for those items.
Giving the players another goal to work towards!
Here are the overview of how the drop tables are split up. T = toggleable, U = untoggleable
Main/T - Melee Armor (bronze armor up to Dragon armor excl. full helm, platebody and boots)
Main/T - Melee Weapons (bronze weapons all the way up to Dragon weapons and whip, gmaul etc.)
Main/T - Ranged armor (leather up to Black d-hide)
Main/T - Ranged weapons (knives darts thrownaxes javelins xbows bronze to rune\dragon, standard bows oak to darkbow)
Main/T - Mage Armor (basic wizard\frem robes up to infinity, offhand books from god books to magic book)
Main/T - Mage Weapons (All staves up to Ancient staff, Other staves (battlestaff, mysic staff) are getting more mage bonuses to them to make them useful)
Main/T - Accessories (Base rings, necklaces and capes)
Main/U - Ammos (All runes, arrows up to adamant, All metal and gem up to adamant\diamond)
Main/U - Basic foods and potions (1HP to 20HP foods, 2-3 doses of regulars, 1-2 doses of supers, 1-2 doses of brews), can be noted. List of food here: https://pastebin.com/Lf2ZHpdA
Main/U - Basic potions (1-3 doses of regulars, 1-2 doses of supers, 1-2 doses of brews), can be noted
Locked - Godwars gear (bandos, arma, godsword shards and hilts, sara sword and zammy spear, staff of light, includes the prayer robes, god leather, god rune, arma\bandos book)
Locked - Rings of Power ((i) rings, Ring of Devotion, Ferocious ring 1-5)
Locked - Dungeoneering gear (All T1 through T10 dungeoneering gear, Eye of the Warrior/Mage/Ranger, Blood Necklace, Gravites, Chaotics evil-eye and farseer, Spirit cape, Arcane X necklaces, Ring of Vigor)
Locked - Poisons (poison, poison+, poison++, karambwan poison). Poisons will apply poison to 12 ammo, up from 5.
Locked - Tormented Demon gear (Dragon platebody, full helm, dclaws, dboots bc ive always thought they should be torm drop instead of gwd drop, visage cause idk where else to put it)
Locked - Void gear (Void with 5% chance on top\bottom drop to be elite, Korasi's sword)
Locked - Ancient Warrior gear (Zuriel, Morrigans, Statius, Vesta)
Locked - Better food and potions (larger amount of 1 to 20HP foods, 21+ HP foods, 1-doses of extremes and overloads), can be noted (extremes and overloads will be note-able). List of food here: https://pastebin.com/Lf2ZHpdA
Locked - Barbarian Assault gear (Fighter Torso, Fighter Hat, Healer Hat, Runner Hat, Ranger Hat, Runner boots, Penance gloves, Penance skirt, Granite Armour)
Locked - Ammos+ (Larger amounts of runes, Larger amounts of basic ammos, Poisoned versions of all ammo that can be poisoned, Fire arrows, Rune-Dragon arrows darts and knives, enchanted bolts)
Spoiler for bgaunts:
btw theres a chair model in the game? item 14483?
Other smol-boi updates:
Changed the item class to a data class rather than attribute-based class. Performs approx 100x faster over 2B iterations of reassigning item id and item amount (~7.4ms for data class, ~750-800ms for attribute class). https://i.imgur.com/oK2n4oO.png thats literally what i replaced my previous class with and it works the same.
Charges (one of the few things I can see a use for with attributes) aren't going to be happening because of the above reason.
Break on death and consume an item and\or currency to fix the broken item seems like a much more reasonable solution.
Break on death is much more predictable when your gear will break and it won't break mid combat.
Break on death also makes more sense than charges in a pvp-centric server.
Fixed saving item slot on my item def editor, so now barrows gauntlets are wieldable uwu
Fixed bug where run energy and prayer orb wouldn't visually drain (it would drain server sided) or toggle off when out of run\prayer
Fixed bug where health orb appeared to be half of your actual health
Fixed bug where XP counter was counting up too fast
Fixed bug where clicking the current tab on your tab bar (inventory, quest tab, etc) wouldn't close the tab leaving an empty space where the tab was.
Figured out how config for bank pin works, too lazy to make it work atm lol (if anyone wants the varbits: https://i.imgur.com/h78MEjm.png )
Fixed a few skill related bugs
Every time a skill timer would tick to 0 it would tick once for two ticks
Boosting up to X would actually boost to a max of 1 over X
Skill decay would decay to a minimum of -1
Moral of the story, check your math comparators.
KT/JAVA - NBX 637 - HERE!
KT - Drop table 4: Flexible, Powerful - HERE!
KT - Command: Simplify writing commands - HERE
KT - NbUtil: Make your kotlin easier - HERE
KT - Hopping Islands: From Java to Kotlin - P1 - P2 - P3 - P4 - P5
not much has been done lately because black ops 4 came out lmao but i have been doing small stuff in my free time at school, mostly playing around with and optimizing my itemdef editor while fixing item reqs and stats
fixed stats and requirements (when applicable) for the following gear
basic robe sets - druid robes, priest gown, wizard robes, monk robes, zammy robes, canifis robes (the purple cyan grey gold etc), fremennik robes (the green one lol), gnomish robes (the weird pastel and creamy ones), boots pointy hats and gloves
quest steel gauntlets (the cooking\chaos\goldsmith gauntlets)
FoG equipment
Sacred Clay equipment
Third age equipment
Granite equipment and slayer helms
added string and number util classes for making dealing with strings easier. have only converted a very small amount of things just as example for future me who will forget about this.
will release in the general programming section if i ever decide to clean it up
function to check when to use a or an
functions to check when a string is numeric (can be converted in to a number), when a string is alphanumeric (only contains numbers and letters), and when a string is alphabetic (is "nbness" or only contains letters lmao)
pseudo-wrap function (sends a new message with the remaining message contents to player when the character count of the message + the players username exceeds 88 for the first message, message len > 88 for remaining message contents).
This allows for sending bigger messages to the player without crashing anyone and not going too far off the chatbox (this is a lazy way to check, i should be reading the sprite size for the characters and status image(s) and measuring how far they can get to the edge of the chatbox before newlining)
the drop rates might look high for some tables, but they are the way they are because they also have "garbage" items in them such as God Rune in the godwars table, T1 and Gravite in dungeoneering table, rockshell spined skeletal and yakhide in fremennik etc.
account genesis drop point amount and table point limits are subject to change, though I don't believe i will change either of those too much before i decide to go live (if ever)
moved around some item ids
added a few more item tables
all default unlocked tables are fully finished server side
most locked tables are organized and grouped in 1 bracket by item id and are awaiting droprate assignment
Spoiler for example table:
ranged armours
ammo
KT/JAVA - NBX 637 - HERE!
KT - Drop table 4: Flexible, Powerful - HERE!
KT - Command: Simplify writing commands - HERE
KT - NbUtil: Make your kotlin easier - HERE
KT - Hopping Islands: From Java to Kotlin - P1 - P2 - P3 - P4 - P5
Why hardcode drops, just store in a binary/sql/json file and load into a DropTable object and store it.
right now theres no real want or need to do that, as I have more important things to focus on like server features and performance as well as code readability (ty dementhium). i want to give a unique pvp experience, not another copy paste "perfect combat and switching" server. if i ever decide to host this and put a dev or 2 on, ill be storing it in a binary. and as for editing the tables, i have a gui editor in the works for editing those. but for now i have to figure out exactly how i want the drop tables to work, then i can store them in a way that makes sense.
the way i have it set up now in the code makes it really easy to make large drop tables with just a few numbers for say, a large range of items. rather than having
however for serializing here's what i have in mind for my current setup
Code:
tableName.dt
- isToggleable
- bracketAmount
- Bracket1
-- bracketChance
-- bracketName
-- announceOnPick
-- itemPairAmount
--- if item pair is array, ID1 = 0, write len of array, write each short in the array to the file
--- if item pair is single id, ID1 = 1, write single short
--- if item pair is range of id, ID1 = 2, write 2 shorts (start and stop) and 1 short (step)
--- once itemPair is written, write 0 for single amount, 1 for range of amounts. write 1 int for single, 2 int (start stop) for range
though to the end user, the player, it wont make a difference unless i decide to ever want to add a drop table while the server is still up though i can see how this could be useful for table hotfix without service interruption.
the boolean flags can of course be stored multiple in a byte rather than a byte per boolean, but file size optimization probably isnt needed (though i do get a hard on for that kind of stuff for some reason)
UPDATE
in other news:
Fixed spec leech bug where using a special attack on the same tick as a special leech would drain 100% of your special attack.
The aforementioned bug fix created a new bug where the special attack bar doesn't update until it hits 100%. Dont know why dont know how.
Changed combat formula, minimum level is now 4 and maximum level is now 138 with some changes.
Summoning is no longer a trainable skill so it is not included in the formula
Dungeoneering and Slayer will be trainable skills (coming to an NBX update thread near you ), so they ARE included in the formula
I have finished most drop tables but have added some
Team Capes including cape I, cape X and cape Zero
Trimmed (rune t, black t, robe g, etc)
Heraldic (black h1 helm, addy h5 kite, etc)
Castle wars (deco armour and capes)
Hybrid (trickster, vanguard, battlemage)
I added a couple more foods from pre-oc, Fury Shark and Tiger Shark. Includes noted versions.
Added Akrisae's robes and mace with correct stats. Includes noted versions.
Changed the colours of Holy Book, Book of Law and Book of War. Holy Book is now blue like in OSRS, Book of Law is now Grey, Book of War is now more brown.
Added imbue tablet, use it on a ring to imbue it.
Added noted versions of the following items. This is for trading convenience, now you don't have to trade items 28 at a time you can do them all at once!
Cape of Legends
God Books
God Capes
Avas devices
Culineromancer gloves
Fire cape
some new custom-y (not pink minigun level, just recolor and slight remodel level) items are coming such as gilded weapons, upgraded proselyte armour, new trim colours, new god cape and book, barrows boots
edgeville progress soon
Spoiler for pics:
akrisae, noted capes, new food
noted god books
noted culi gloves
???
KT/JAVA - NBX 637 - HERE!
KT - Drop table 4: Flexible, Powerful - HERE!
KT - Command: Simplify writing commands - HERE
KT - NbUtil: Make your kotlin easier - HERE
KT - Hopping Islands: From Java to Kotlin - P1 - P2 - P3 - P4 - P5
It's been a while. Had medical issues and lots of school stuff to do, but I have until the end of the month as free time so I decided to post the updates I've made since... October 26. Wow, it's been over a month.
A little foreword: I really hate rushing and ragging. I do see it as a legit way of pking as in there's no bug abuse, but I think it's a really sad way of pking. Raggers and rushers make the game miserable for more people than it brings joy. And raggers\rushers are pretty much always extremely toxic. Having said that, I won't be removing ragging or rushing. Instead, I will be putting measures in place to minimize the effect of them whether thats through items, spell effects or whatever. There will also be perks and item effects put in place to somewhat enable them to do that, though not without great risk.
Well, here it goes!
UPDATES
Updated DropTables, basically anything that can be found in my DropTable DSL lib: HERE
DropTables are even easier to create, easier to edit and change, and perform better for NBX use case (having per-player customized weights on the drop table)
DropTables and all sub components are now serializable @Nomac
Increased code readability and slightly increased performance with my misc utils: HERE
Fixed spec bar not updating bug. Spec bar now updates every 1% spec regardless of "remainder" spec.
No edgeville progress (my RSCEdit sub ran out and I gotta pay medical bills uwu sad day)
Player serialization upgrade WIP
Working towards making saved data non-sequential so that changes to the layout of the data will not affect the actual loading.
Making certain chunks of data identifiable by some sort of header id (say header id 0 is Inventory, header id 1 is skills, etc)
Delegating the reading of data to their respectable classes rather than doing it all in Player.deserialize. ex: Skills.deserialize(player)
Each chunk type (eg Skills, Inventory, Bank, etc) will have a separate version so that old data can be read and transformed in to new data chunk by chunk.
NOT by extending Serialize, that can make a really big mess in terms of data. I tried that out but save sizes went from 3kb to 200kb. Chill.
Slayer and Dungeoneering rough draft (dont wanna release any deets until I'm completely done with it, sorry boys I have some ideas that I think are worth keeping to myself)
4 different perk system rough drafts.
COD-style, you can have 2-3 perks active in each perk category
Skill tree like where you can have them all active but takes much more time to unlock them.
You can have a total of 2-3 perks active, each have different effects in Safe and Dangerous PVP.
You can have a total of X perk slots used, perks can use between 1 and X perk slots depending on their power.
Fundamental balance changes
You cannot teleport out of combat within 10 seconds of being the initiating party in combat. You cannot teleport out of combat with commands or spellbooks, only teletabs.
There is a 15 second PJ timer if you have been in combat for more than 6 seconds.
Ancient spells (rush, burst, blitz, barrage)
The idea with Ancient spells is to make single target more attractive than the respective multi-target variant, as well as attempt decrease the immediate utility of the spells that provide them while giving better utility in extended fights.
Smoke
Poison damage changed from (2, 2, 4, 4) to (2, 1, 4, 3).
Poison damage no longer decreases or increases.
Poison damage now ticks once immediately when initially applied.
If a stronger poison is already applied, it converts that poison to indefinite length rather than override with the lower damage smoke poison. Also immediately applies 1 tick of that level poison. It's not a bug, It's a feature (now)!
Shadow
Attack level reduction changed from (10, 10, 15, 15)% base to (4, 3, 6, 4)% current.
Attack level reduction now stacks.
This promotes casting the spell a few extra times throughout the fight to get better benefits later on.
Blood spells
Heal changed from [25% damage dealt] to [(15, 10, 20, 15)% + [(1.5, 1, 3, 1.5)% of damage done]% of damage done]%
Now does 10% current health damage on a successful hit (included in heal calculations)
Ice spell freeze lengths changed from (5, 10, 15, 20) seconds to (4, 2, 8, 6) seconds, duration of not being freezable after changed from 5 seconds to (8, 9, 6, 7) seconds.
Freeze duration changed from (5, 10, 15, 20) seconds to (4, 2, 8, 6) seconds.
Duration of not being freezable after being unfrozen changed from 5 seconds to 3 seconds.
Modern spells
Each damaging spell now has an element assigned to it. Elements are Air, Water, Earth, Fire
Strike, Bolt, Blast, Wave and Surge spells all belong to their respective element
Blind/Snare/Entangle are all classified as Earth
Teleblock is classified as Air
Slayer Dart, Iban's Blast are both classified as Fire
Bind/Snare/Entangle
Root duration reduced from (5, 10, 15) seconds to (5, 7.5, 10) seconds.
Damage dealt changed from (0, 3, 5) to (5, 10, 15).
4 second cooldown before you can be rooted after root ends.
Stat reduction changed from (5, 10)% of base stat to (3, 6)% of current stat.
Stat reduction now stacks.
Teleblock (not protecting magic,
Teleblock duration changed from (20, 5) minutes to (2 minutes, 30 seconds).
Teleblocking an already teleblocked player will increase the current teleblock length by (12/4) seconds up to 2 minutes extra time. Cooldown on being teleblocked is 15 seconds after teleblock ends. This is a total time, not at a time, so someone can only be teleblocked for a max of 4 minutes.
The 10 damage is a supplement to the nerf to make it feel a bit less bad because youre actually doing damage with it.
Slayer dart
Now deals 15% bonus damage while on a slayer task.
Damage bonus increased by flat (5, 7.5, 10, 12.5, 15, 20)% while wearing a slayer helmet (regular, e, charged, full, full e, full charged)
KT/JAVA - NBX 637 - HERE!
KT - Drop table 4: Flexible, Powerful - HERE!
KT - Command: Simplify writing commands - HERE
KT - NbUtil: Make your kotlin easier - HERE
KT - Hopping Islands: From Java to Kotlin - P1 - P2 - P3 - P4 - P5