mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-10 10:20:41 -07:00
Removed binary saving system
Fixed some dialogue for Fremennik Trials
This commit is contained in:
parent
f4576ff3d3
commit
955d04c09e
55 changed files with 135 additions and 1710 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -35,4 +35,6 @@ docker
|
|||
.gradle
|
||||
gradle
|
||||
.idea
|
||||
.idea/
|
||||
.idea/
|
||||
Server/worldprops/
|
||||
Management-Server/managementprops/
|
||||
|
|
@ -2,7 +2,7 @@ package core.game.content.ame;
|
|||
|
||||
import core.game.content.activity.ActivityPlugin;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.node.item.Item;
|
||||
import core.game.world.map.Location;
|
||||
import core.game.world.map.zone.ZoneRestriction;
|
||||
|
|
@ -12,7 +12,7 @@ import core.tools.RandomFunction;
|
|||
* Handles an anti-macro event.
|
||||
* @author Emperor
|
||||
*/
|
||||
public abstract class AntiMacroEvent extends ActivityPlugin implements SavingModule {
|
||||
public abstract class AntiMacroEvent extends ActivityPlugin {
|
||||
|
||||
/**
|
||||
* The random locations to teleport to if unresponsive.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import core.game.world.map.zone.impl.WildernessZone;
|
|||
import core.game.node.entity.skill.Skills;
|
||||
import core.game.node.entity.npc.NPC;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.world.GameWorld;
|
||||
import core.game.world.map.zone.ZoneRestriction;
|
||||
import core.tools.RandomFunction;
|
||||
|
|
@ -20,7 +20,7 @@ import java.util.Map;
|
|||
* @author Emperor
|
||||
* @author ceik
|
||||
*/
|
||||
public final class AntiMacroHandler implements SavingModule {
|
||||
public final class AntiMacroHandler {
|
||||
|
||||
/**
|
||||
* The delay between periods in which it attempts to spawn a random event.
|
||||
|
|
@ -76,42 +76,6 @@ public final class AntiMacroHandler implements SavingModule {
|
|||
return hasEvent() && event.isSaveRequired();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
if (hasEvent()) {
|
||||
buffer.put((byte) 1);
|
||||
ByteBufferUtils.putString(event.getName(), buffer);
|
||||
buffer.put((byte) 0);
|
||||
int index = buffer.position();
|
||||
event.save(buffer);
|
||||
buffer.put(index - 1, (byte) (buffer.position() - index));
|
||||
}
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
event = null;
|
||||
while (true) {
|
||||
switch (buffer.get() & 0xFF) {
|
||||
case 0:
|
||||
return;
|
||||
case 1:
|
||||
event = EVENTS.get(ByteBufferUtils.getString(buffer));
|
||||
int length = buffer.get() & 0xFF;
|
||||
ByteBuffer buf = ByteBuffer.allocate(length);
|
||||
for (int i = 0; i < length; i++) {
|
||||
buf.put(buffer.get());
|
||||
}
|
||||
buf.flip();
|
||||
if (event != null) {
|
||||
(event = event.create(player)).parse(buf);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets called every game pulse.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -13,8 +13,6 @@ import java.nio.ByteBuffer
|
|||
|
||||
@Initializable
|
||||
class SandwichLadyEvent : AntiMacroEvent("Sandwich Lady",false,false, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23){
|
||||
override fun parse(buffer: ByteBuffer?) {
|
||||
}
|
||||
|
||||
override fun start(player: Player?, login: Boolean, vararg args: Any?): Boolean {
|
||||
super.init(player)
|
||||
|
|
@ -26,9 +24,6 @@ class SandwichLadyEvent : AntiMacroEvent("Sandwich Lady",false,false, 0,1,2,3,4,
|
|||
return true
|
||||
}
|
||||
|
||||
override fun save(buffer: ByteBuffer?) {
|
||||
}
|
||||
|
||||
override fun configure() {
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,16 +36,6 @@ public final class DrillDemonEvent extends AntiMacroEvent {
|
|||
this.player = player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean start(Player player, boolean login, Object... args) {
|
||||
if (login) {
|
||||
|
|
|
|||
|
|
@ -32,16 +32,6 @@ public final class DrunkDwarfEvent extends AntiMacroEvent {
|
|||
super(NAME, true, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean start(Player player, boolean login, Object... args) {
|
||||
final DrunkenDwarfNPC dwarf = new DrunkenDwarfNPC(956, player.getLocation(), this, player);
|
||||
|
|
|
|||
|
|
@ -76,14 +76,4 @@ public final class EvilChickenRandomEvent extends AntiMacroEvent {
|
|||
PluginManager.definePlugin(new EvilChickenNPC());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -461,31 +461,6 @@ public final class EvilTwinRandomEvent extends AntiMacroEvent {
|
|||
return 3892 + (hash & 0xFF) + (((hash >> 16) & 0xFF) * TwinClothColor.values().length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
int offset = player.getAttribute("ame:evil_twin", 0);
|
||||
buffer.put((byte) (offset & 0xFF));
|
||||
buffer.put((byte) ((offset >> 16) & 0xFF));
|
||||
buffer.put((byte) (player.getLocation().getX() - region.getBaseLocation().getX()));
|
||||
buffer.put((byte) (player.getLocation().getY() - region.getBaseLocation().getY()));
|
||||
buffer.put((byte) tries);
|
||||
Location loc = player.getAttribute("ame:location", ServerConstants.HOME_LOCATION);
|
||||
buffer.putShort((short) loc.getX());
|
||||
buffer.putShort((short) loc.getY());
|
||||
buffer.put((byte) loc.getZ());
|
||||
buffer.put((byte) (success ? 1 : 0));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
player.setAttribute("ame:evil_twin", (buffer.get() & 0xFF) | ((buffer.get() & 0xFF) << 16));
|
||||
offsetX = buffer.get() & 0xFF;
|
||||
offsetY = buffer.get() & 0xFF;
|
||||
tries = buffer.get() & 0xFF;
|
||||
player.setAttribute("ame:location", Location.create(buffer.getShort(), buffer.getShort(), buffer.get()));
|
||||
success = (buffer.get() & 0xFF) == 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AntiMacroEvent create(Player player) {
|
||||
return new EvilTwinRandomEvent(player);
|
||||
|
|
|
|||
|
|
@ -30,14 +30,6 @@ public final class GenieRandomEvent extends AntiMacroEvent {
|
|||
super("Genie", true, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean start(Player player, boolean login, Object... args) {
|
||||
if (player.hasItem(new Item(2528))) {
|
||||
|
|
|
|||
|
|
@ -182,29 +182,4 @@ public final class LostFoundRandomEvent extends AntiMacroEvent {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
Location l = player.getAttribute("l&f_dest", player.getLocation());
|
||||
buffer.putShort((short) l.getX()).putShort((short) l.getY()).put((byte) l.getZ());
|
||||
Item[] runes = player.getAttribute("teleport:items", new Item[0]);
|
||||
buffer.put((byte) runes.length);
|
||||
for (int i = 0; i < runes.length; i++) {
|
||||
buffer.putShort((short) runes[i].getId());
|
||||
buffer.put((byte) runes[i].getAmount());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
player.setAttribute("l&f_dest", Location.create(buffer.getShort(), buffer.getShort(), buffer.get()));
|
||||
Item[] runes = new Item[buffer.get() & 0xFF];
|
||||
for (int i = 0; i < runes.length; i++) {
|
||||
runes[i] = new Item(buffer.getShort() & 0xFFFF, buffer.get() & 0xFF);
|
||||
}
|
||||
if (runes.length > 0) {
|
||||
player.setAttribute("teleport:items", runes);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -34,16 +34,6 @@ public final class CapnHandEvent extends AntiMacroEvent {
|
|||
super(NAME, true, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean start(Player player, boolean login, Object... args) {
|
||||
final CapnHandNPC capn = new CapnHandNPC(2539, player.getLocation(), this, player);
|
||||
|
|
|
|||
|
|
@ -45,34 +45,6 @@ public final class QuizMasterEvent extends AntiMacroEvent {
|
|||
super("quiz master", true, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
SavedData.save(buffer, score, 1);
|
||||
SavedData.save(buffer, startedQuiz, 2);
|
||||
buffer.put((byte) 3);
|
||||
Location l = player.getAttribute("ame:location", ServerConstants.HOME_LOCATION);
|
||||
l.save(buffer);
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
while ((opcode = buffer.get()) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
score = buffer.get();
|
||||
break;
|
||||
case 2:
|
||||
startedQuiz = SavedData.getBoolean(buffer.get());
|
||||
break;
|
||||
case 3:
|
||||
player.setAttribute("ame:location", Location.parse(buffer));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean enter(Entity entity) {
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -34,16 +34,6 @@ public final class RickTurpentineEvent extends AntiMacroEvent {
|
|||
super(NAME, true, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean start(Player player, boolean login, Object... args) {
|
||||
final RickTurpentineNPC npc = new RickTurpentineNPC(2476, player.getLocation(), this, player);
|
||||
|
|
|
|||
|
|
@ -22,16 +22,6 @@ public final class RiverTrollEvent extends AntiMacroEvent {
|
|||
super("river troll", true, false, Skills.FISHING);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean start(Player player, boolean login, Object... args) {
|
||||
final RiverTrollNPC troll = new RiverTrollNPC(getId(player), player.getLocation(), this, player);
|
||||
|
|
|
|||
|
|
@ -22,16 +22,6 @@ public final class ShadeEvent extends AntiMacroEvent {
|
|||
super("shade", true, false, Skills.PRAYER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean start(Player player, boolean login, Object... args) {
|
||||
final ShadeNPC shade = new ShadeNPC(getId(player), player.getLocation(), this, player);
|
||||
|
|
|
|||
|
|
@ -22,16 +22,6 @@ public final class TreeSpiritEvent extends AntiMacroEvent {
|
|||
super("tree spirit", true, false, Skills.WOODCUTTING);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean start(Player player, boolean login, Object... args) {
|
||||
final TreeSpiritRandomNPC spirit = new TreeSpiritRandomNPC(getId(player), player.getLocation(), this, player);
|
||||
|
|
|
|||
|
|
@ -22,16 +22,6 @@ public final class ZombieEvent extends AntiMacroEvent {
|
|||
super("zombie", true, false, Skills.PRAYER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean start(Player player, boolean login, Object... args) {
|
||||
final ZombieAmeNPC zombie = new ZombieAmeNPC(getId(player), player.getLocation(), this, player);
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import core.plugin.Initializable
|
|||
import core.game.content.dialogue.DialoguePlugin
|
||||
|
||||
@Initializable
|
||||
class ChieftanBrundt(player: Player? = Player(PlayerDetails("",""))) : DialoguePlugin(player){
|
||||
class ChieftanBrundt(player: Player? = null) : DialoguePlugin(player){
|
||||
override fun open(vararg args: Any?): Boolean {
|
||||
if(player?.questRepository?.getStage("Fremennik Trials")!! == 0) {
|
||||
npc("Greetings outlander!")
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import core.plugin.Initializable
|
|||
import core.game.content.dialogue.DialoguePlugin
|
||||
|
||||
@Initializable
|
||||
class CouncilWorkerDialogue(player: Player? = Player(PlayerDetails("",""))) : DialoguePlugin(player){
|
||||
class CouncilWorkerDialogue(player: Player? = null) : DialoguePlugin(player){
|
||||
override fun open(vararg args: Any?): Boolean {
|
||||
if(args.size > 1){
|
||||
npc("Ta very much like. That'll hit the spot nicely.. Here,","You can have this. I picked it up as a souvenir on me","last holz")
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@ package core.game.content.quest.fremtrials
|
|||
|
||||
import core.game.node.entity.player.Player
|
||||
import core.game.node.entity.player.link.quest.Quest
|
||||
import core.plugin.InitializablePlugin
|
||||
import core.game.node.entity.skill.Skills
|
||||
import core.plugin.Initializable
|
||||
|
||||
@InitializablePlugin
|
||||
@Initializable
|
||||
class FremennikTrials : Quest("Fremennik Trials",64,63,3,347,0,1,10){
|
||||
|
||||
class SkillRequirement(val skill: Int?, val level: Int?)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import core.game.content.dialogue.DialoguePlugin
|
|||
import core.game.content.dialogue.FacialExpression
|
||||
|
||||
@Initializable
|
||||
class ManniDialogue(player: Player? = Player(PlayerDetails("",""))) : DialoguePlugin(player){
|
||||
class ManniDialogue(player: Player? = null) : DialoguePlugin(player){
|
||||
var curNPC: NPC? = NPC(0,Location(0,0,0))
|
||||
override fun open(vararg args: Any?): Boolean {
|
||||
curNPC = args[0] as? NPC
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import core.plugin.Initializable
|
|||
import core.game.content.dialogue.DialoguePlugin
|
||||
|
||||
@Initializable
|
||||
class OlafTheBard(player: Player? = Player(PlayerDetails("",""))) : DialoguePlugin(player){
|
||||
class OlafTheBard(player: Player? = null) : DialoguePlugin(player){
|
||||
override fun open(vararg args: Any?): Boolean {
|
||||
if(player?.getAttribute("fremtrials:olaf-accepted",false)!!){
|
||||
npc("I can't wait to see your performance.")
|
||||
|
|
|
|||
|
|
@ -1,80 +1,91 @@
|
|||
package core.game.content.quest.members.thefremenniktrials
|
||||
|
||||
import core.game.content.dialogue.DialoguePlugin
|
||||
import core.game.node.entity.player.Player
|
||||
import core.game.node.entity.player.info.PlayerDetails
|
||||
import core.game.node.item.Item
|
||||
import core.plugin.Initializable
|
||||
import core.game.content.dialogue.DialoguePlugin
|
||||
import core.tools.END_DIALOGUE
|
||||
import core.tools.START_DIALOGUE
|
||||
|
||||
@Initializable
|
||||
class PoisonSalesman(player: Player? = Player(PlayerDetails("",""))) : DialoguePlugin(player){
|
||||
class PoisonSalesman(player: Player? = null) : DialoguePlugin(player) {
|
||||
|
||||
override fun open(vararg args: Any?): Boolean {
|
||||
options("Talk about the Murder Mystery Quest","Talk about the Fremennik Trials")
|
||||
stage = 0
|
||||
stage = START_DIALOGUE
|
||||
return true
|
||||
}
|
||||
|
||||
override fun handle(interfaceId: Int, buttonId: Int): Boolean {
|
||||
val fremStage = player?.questRepository?.getStage("Fremennik Trials") ?: 0
|
||||
when(stage){
|
||||
0 -> when(buttonId){
|
||||
1 -> {player("Err... nevermind");stage = 1000}
|
||||
2 -> {player("Hello.");stage = 10}
|
||||
//val murderMysteryStage = player.questRepository.isComplete("Murder Mystery")
|
||||
val fremennikTrialsStage = player.questRepository.getStage("Fremennik Trials")
|
||||
|
||||
when (stage) {
|
||||
START_DIALOGUE -> when (buttonId) {
|
||||
1 -> { player("Err... nevermind"); stage = END_DIALOGUE }
|
||||
2 -> { player("Hello."); stage = 10 }
|
||||
}
|
||||
|
||||
//Fremennik Trials
|
||||
10 -> if(fremStage == 0){ npc("Come see me if you ever need low-alcohol beer!"); stage = 1000}
|
||||
else if(fremStage > 30){npc("Thanks for buying out all that low-alcohol beer!"); stage = 1000}
|
||||
else if(fremStage > 0){npc("Howdy! You seem like someone with discerning taste!","Howsabout you try my brand new range of alcohol?");stage++;}
|
||||
11 -> {player("Didn't you used to sell poison?");stage++}
|
||||
12 -> {npc("That I did indeed! Peter Potter's Patented","Multipurpose poison! A miracle of modern apothecarys!","My exclusive concoction has been test on...");stage++}
|
||||
13 -> {player("Uh, yeah. I've already heard the sales pitch.");stage++}
|
||||
14 -> {npc("Sorry stranger, old habits die hard I guess.");stage++}
|
||||
15 -> {player("So you don't sell poison anymore?");stage++}
|
||||
16 -> {npc("Well I would, but I ran out of stock. Business wasn't","helped with that stuff that happened up at the Sinclair","Mansion much either, I'll be honest.");stage++}
|
||||
17 -> {npc("So, being the man of enterprise that I am I decided to","branch out a little bit!");stage++}
|
||||
18 -> {player("Into alcohol?");stage++}
|
||||
19 -> {npc("Absolutely! The basic premise between alcohol and poison","is pretty much the same, after all! The difference is that","my alcohol has a unique property others do not!");stage++}
|
||||
20 -> {player("And what is that?");stage++}
|
||||
21 -> {sendDialogue("The salesman takes a deep breath.");stage++}
|
||||
22 -> {npc("Ever been too drunk to find your own home? Ever","wished that you could party away all night long, and","still wake up fresh as a daisy the next morning?");stage++}
|
||||
23 -> {npc("Thanks to the miracles of modern magic we have come","up with just the solution you need! Peter Potter's","Patented Party Potions!");stage++}
|
||||
24 -> {npc("It looks just like beer! It tastes just like beer! It smells","just like beer! But... it's not beer!");stage++}
|
||||
25 -> {npc("Our mages have mused for many moments to bring","you this miracle of modern magic! It has all the great","tastes you'd expect, but contains absolutely no alcohol!");stage++}
|
||||
26 -> {npc("That's right! You can drink Peter Potter's Patented","Party Potion as much as you want, and suffer","absolutely no ill effects whatsoever!");stage++}
|
||||
27 -> {npc("The clean fresh taste you know you can trust, from","the people who brought you: Peter Potters Patented","multipurpose poison, Pete Potters peculiar paint packs");stage++}
|
||||
28 -> {npc("and Peter Potters paralyzing panic pins. Available now","from all good stockists! Ask your local bartender now,","and experience the taste revolution of the century!");stage++}
|
||||
29 -> {sendDialogue("He seems to have finished for the time being.");stage++}
|
||||
30 -> {player("So.. when you say 'all good stockists'...");stage++}
|
||||
31 -> {npc("Yes?");stage++}
|
||||
32 -> {player("How many inns actually sell this stuff?");stage++}
|
||||
33 -> {npc("Well.. nobody has actually bought any yet. Everyone I","try and sell it to always asks me what exactly the point","of beer that has absolutely no effect on you is.");stage++}
|
||||
34 -> {player("So what is the point?");stage++}
|
||||
35 -> {npc("Well... Um... Er... Hmmm. You, er, don't get drunk.");stage++}
|
||||
36 -> {player("I see...");stage++}
|
||||
37 -> {npc("Aw man.. you don't want any now do you? I've really","tried to push this product, but I just don't think the","world is ready for beer that doesn't get you drunk.");stage++}
|
||||
38 -> {npc("I'm a man ahead of my time I tell you! It's not that","my products are bad, it's that they're too good for the","market!");stage++}
|
||||
39 -> {player("Actually, I would like some. How much do you want for it?");stage++}
|
||||
40 -> {npc("Y-you would??? Um, okay! I knew I still had the old","salesmans skills going on!");stage++}
|
||||
41 -> {npc("I will sell you a keg of it for only 250 gold pieces! So","What do you say?");stage++}
|
||||
42 -> {options("Yes","No");stage++}
|
||||
10 -> {
|
||||
when (fremennikTrialsStage) {
|
||||
0 -> { npc("Come see me if you ever need low-alcohol beer!"); stage = END_DIALOGUE }
|
||||
}
|
||||
}
|
||||
// if (fremennikTrialsStage == 0)
|
||||
// else if(fremennikTrialsStage > 30) { npc("Thanks for buying out all that low-alcohol beer!"); stage = END_DIALOGUE }
|
||||
// else if(fremennikTrialsStage > 0) { npc("Howdy! You seem like someone with discerning taste!","Howsabout you try my brand new range of alcohol?"); stage++ }
|
||||
|
||||
11 -> { player("Didn't you used to sell poison?"); stage++ }
|
||||
12 -> { npc("That I did indeed! Peter Potter's Patented","Multipurpose poison! A miracle of modern apothecarys!","My exclusive concoction has been test on..."); stage++ }
|
||||
13 -> { player("Uh, yeah. I've already heard the sales pitch."); stage++ }
|
||||
14 -> { npc("Sorry stranger, old habits die hard I guess."); stage++ }
|
||||
15 -> { player("So you don't sell poison anymore?"); stage++ }
|
||||
16 -> { npc("Well I would, but I ran out of stock. Business wasn't","helped with that stuff that happened up at the Sinclair","Mansion much either, I'll be honest."); stage++ }
|
||||
17 -> { npc("So, being the man of enterprise that I am I decided to","branch out a little bit!"); stage++ }
|
||||
18 -> { player("Into alcohol?"); stage++ }
|
||||
19 -> { npc("Absolutely! The basic premise between alcohol and poison","is pretty much the same, after all! The difference is that","my alcohol has a unique property others do not!"); stage++ }
|
||||
20 -> { player("And what is that?"); stage++ }
|
||||
21 -> { sendDialogue("The salesman takes a deep breath."); stage++ }
|
||||
22 -> { npc("Ever been too drunk to find your own home? Ever","wished that you could party away all night long, and","still wake up fresh as a daisy the next morning?"); stage++ }
|
||||
23 -> { npc("Thanks to the miracles of modern magic we have come","up with just the solution you need! Peter Potter's","Patented Party Potions!"); stage++ }
|
||||
24 -> { npc("It looks just like beer! It tastes just like beer! It smells","just like beer! But... it's not beer!"); stage++ }
|
||||
25 -> { npc("Our mages have mused for many moments to bring","you this miracle of modern magic! It has all the great","tastes you'd expect, but contains absolutely no alcohol!"); stage++ }
|
||||
26 -> { npc("That's right! You can drink Peter Potter's Patented","Party Potion as much as you want, and suffer","absolutely no ill effects whatsoever!"); stage++ }
|
||||
27 -> { npc("The clean fresh taste you know you can trust, from","the people who brought you: Peter Potters Patented","multipurpose poison, Pete Potters peculiar paint packs"); stage++ }
|
||||
28 -> { npc("and Peter Potters paralyzing panic pins. Available now","from all good stockists! Ask your local bartender now,","and experience the taste revolution of the century!"); stage++ }
|
||||
29 -> { sendDialogue("He seems to have finished for the time being."); stage++ }
|
||||
30 -> { player("So.. when you say 'all good stockists'..."); stage++ }
|
||||
31 -> { npc("Yes?"); stage++ }
|
||||
32 -> { player("How many inns actually sell this stuff?"); stage++ }
|
||||
33 -> { npc("Well.. nobody has actually bought any yet. Everyone I","try and sell it to always asks me what exactly the point","of beer that has absolutely no effect on you is."); stage++ }
|
||||
34 -> { player("So what is the point?"); stage++ }
|
||||
35 -> { npc("Well... Um... Er... Hmmm. You, er, don't get drunk."); stage++ }
|
||||
36 -> { player("I see..."); stage++ }
|
||||
37 -> { npc("Aw man.. you don't want any now do you? I've really","tried to push this product, but I just don't think the","world is ready for beer that doesn't get you drunk."); stage++ }
|
||||
38 -> { npc("I'm a man ahead of my time I tell you! It's not that","my products are bad, it's that they're too good for the","market!"); stage++ }
|
||||
39 -> { player("Actually, I would like some. How much do you want for it?"); stage++ }
|
||||
40 -> { npc("Y-you would??? Um, okay! I knew I still had the old","salesmans skills going on!"); stage++ }
|
||||
41 -> { npc("I will sell you a keg of it for only 250 gold pieces! So","What do you say?"); stage++ }
|
||||
42 -> { options("Yes","No"); stage++ }
|
||||
43 -> when(buttonId){
|
||||
1 -> {player("Yes please!");stage++}
|
||||
2 -> {player("No, thanks.");stage = 1000}
|
||||
1 -> { player("Yes please!"); stage++ }
|
||||
2 -> { player("No, thanks."); stage = END_DIALOGUE }
|
||||
}
|
||||
//Yes
|
||||
44 -> if(player?.inventory?.containsItem(Item(995,250)) == true){
|
||||
player?.inventory?.remove(Item(995,250))
|
||||
player?.inventory?.add(Item(3712))
|
||||
npc("Here you go.")
|
||||
stage = 1000
|
||||
stage = END_DIALOGUE
|
||||
} else {
|
||||
player("I don't seem to have enough.")
|
||||
stage++
|
||||
}
|
||||
45 -> {npc("Well come back when you do!");stage = 1000}
|
||||
45 -> { npc("Well come back when you do!"); stage = END_DIALOGUE }
|
||||
|
||||
|
||||
1000 -> end()
|
||||
END_DIALOGUE -> end()
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import core.plugin.Initializable
|
|||
import core.game.content.dialogue.DialoguePlugin
|
||||
|
||||
@Initializable
|
||||
class SigliTheHuntsman(player: Player? = Player(PlayerDetails("",""))) : DialoguePlugin(player){
|
||||
class SigliTheHuntsman(player: Player? = null) : DialoguePlugin(player){
|
||||
override fun open(vararg args: Any?): Boolean {
|
||||
if(player?.getAttribute("fremtrials:sigli-vote",false)!!){
|
||||
npc("You have my vote!")
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import core.plugin.Initializable
|
|||
import core.game.content.dialogue.DialoguePlugin
|
||||
|
||||
@Initializable
|
||||
class SwensenTheNavigator(player: Player? = Player(PlayerDetails("",""))) : DialoguePlugin(player){
|
||||
class SwensenTheNavigator(player: Player? = null) : DialoguePlugin(player){
|
||||
override fun open(vararg args: Any?): Boolean {
|
||||
if(player?.getAttribute("fremtrials:maze-complete",false) == true){
|
||||
npc("Outerlander! You have finished my maze!","I am genuinely impressed!")
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package core.game.content.quest.miniquest.barcrawl;
|
|||
|
||||
import core.game.component.Component;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.node.item.Item;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
|
@ -13,7 +13,7 @@ import java.nio.ByteBuffer;
|
|||
* Manages the players barcrawl quest.
|
||||
* @author 'Vexia
|
||||
*/
|
||||
public final class BarcrawlManager implements SavingModule {
|
||||
public final class BarcrawlManager {
|
||||
|
||||
/**
|
||||
* The barcrawl card.
|
||||
|
|
@ -53,20 +53,6 @@ public final class BarcrawlManager implements SavingModule {
|
|||
this.player = player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
if (started) {
|
||||
buffer.put((byte) 1);
|
||||
}
|
||||
for (int i = 0; i < bars.length; i++) {
|
||||
if (bars[i]) {
|
||||
buffer.put((byte) 2);
|
||||
buffer.put((byte) i);
|
||||
}
|
||||
}
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
public void parse(JSONObject data){
|
||||
started = (boolean) data.get("started");
|
||||
JSONArray barsVisisted = (JSONArray) data.get("bars");
|
||||
|
|
@ -75,21 +61,6 @@ public final class BarcrawlManager implements SavingModule {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
while ((opcode = buffer.get() & 0xFF) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
started = true;
|
||||
break;
|
||||
case 2:
|
||||
bars[buffer.get()] = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method used to read the card.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package core.game.content.ttrail;
|
||||
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.tools.RandomFunction;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
|
@ -12,7 +12,7 @@ import java.nio.ByteBuffer;
|
|||
* Handles the treasure trail of a player.
|
||||
* @author Vexia
|
||||
*/
|
||||
public final class TreasureTrailManager implements SavingModule {
|
||||
public final class TreasureTrailManager {
|
||||
|
||||
/**
|
||||
* The ids of the clues.
|
||||
|
|
@ -58,23 +58,6 @@ public final class TreasureTrailManager implements SavingModule {
|
|||
this.player = player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
if (hasTrail()) {
|
||||
buffer.put((byte) 1);
|
||||
buffer.putInt(clueId << 16 | trailLength);
|
||||
buffer.put((byte) 2);
|
||||
buffer.putInt(trailStage);
|
||||
}
|
||||
if (completedClues[0] != 0 || completedClues[1] != 0 || completedClues[2] != 0) {
|
||||
buffer.put((byte) 4);
|
||||
for (int i = 0; i < completedClues.length; i++) {
|
||||
buffer.putInt(completedClues[i]);
|
||||
}
|
||||
}
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
public void parse(JSONObject data){
|
||||
JSONArray cc = (JSONArray) data.get("completedClues");
|
||||
for(int i = 0; i < cc.size(); i++){
|
||||
|
|
@ -89,35 +72,6 @@ public final class TreasureTrailManager implements SavingModule {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
while ((opcode = buffer.get() & 0xFFFF) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
int hash = buffer.getInt();
|
||||
clueId = hash >> 16 & 0xFFFF;
|
||||
trailLength = hash & 0xFFFF;
|
||||
ClueScrollPlugin p = ClueScrollPlugin.getClueScrolls().get(clueId);
|
||||
if (p != null) {
|
||||
level = p.getLevel();
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
trailStage = buffer.getInt();
|
||||
break;
|
||||
case 3:
|
||||
buffer.getInt();// old
|
||||
break;
|
||||
case 4:
|
||||
for (int i = 0; i < completedClues.length; i++) {
|
||||
completedClues[i] = buffer.getInt();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts a treasure trail.
|
||||
* @param clue the clue.
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ import core.game.container.ContainerEvent
|
|||
import core.game.container.ContainerListener
|
||||
import core.game.container.access.InterfaceContainer
|
||||
import core.game.node.entity.player.Player
|
||||
import core.game.node.entity.player.info.login.SavingModule
|
||||
import core.game.node.entity.player.link.audio.Audio
|
||||
import core.game.node.item.Item
|
||||
import core.game.system.monitor.PlayerMonitor
|
||||
|
|
@ -41,7 +40,7 @@ import core.tools.Components
|
|||
* @author Angle
|
||||
*/
|
||||
|
||||
class PlayerGrandExchange(private val player: Player) : SavingModule {
|
||||
class PlayerGrandExchange(private val player: Player) {
|
||||
|
||||
var history = arrayOfNulls<GrandExchangeOffer>(5)
|
||||
|
||||
|
|
@ -227,11 +226,6 @@ class PlayerGrandExchange(private val player: Player) : SavingModule {
|
|||
openedIndex = -1
|
||||
}
|
||||
|
||||
|
||||
override fun save(buffer: ByteBuffer?) {
|
||||
TODO("Not yet implemented. NOT Ever implemented. Saving a bytebuffer is dumb")
|
||||
}
|
||||
|
||||
fun parse(geData: JSONObject) {
|
||||
val offersRaw = geData["offers"]
|
||||
|
||||
|
|
@ -266,26 +260,6 @@ class PlayerGrandExchange(private val player: Player) : SavingModule {
|
|||
}
|
||||
}
|
||||
|
||||
override fun parse(buffer: ByteBuffer) {
|
||||
var index = -1
|
||||
while (buffer.get().also { index = it.toInt() }.toInt() != -1) {
|
||||
val key = buffer.long
|
||||
OfferManager.setIndex(key, index)
|
||||
}
|
||||
for (i in history.indices) {
|
||||
val s = buffer.get().toInt()
|
||||
if (s == -1) {
|
||||
continue
|
||||
}
|
||||
var o = GrandExchangeOffer()
|
||||
o.itemID = buffer.short.toInt()
|
||||
o.sell = true
|
||||
o.totalCoinExchange = buffer.int
|
||||
o.completedAmount = buffer.int
|
||||
history[i] = o
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the grand exchange.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package core.game.interaction.item.brawling_gloves;
|
|||
|
||||
import core.cache.def.impl.ItemDefinition;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.node.item.Item;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
|
@ -13,7 +13,7 @@ import java.util.Objects;
|
|||
* Manages brawling gloves for a player
|
||||
* @author ceik
|
||||
*/
|
||||
public class BrawlingGlovesManager implements SavingModule {
|
||||
public class BrawlingGlovesManager {
|
||||
|
||||
final Player player;
|
||||
public HashMap<Integer, Integer> GloveCharges = new HashMap<Integer,Integer>();
|
||||
|
|
@ -28,27 +28,6 @@ public class BrawlingGlovesManager implements SavingModule {
|
|||
|
||||
public BrawlingGlovesManager(Player player){this.player = player;}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
if(!GloveCharges.isEmpty()){
|
||||
GloveCharges.forEach((key,value) -> {
|
||||
buffer.putInt(BrawlingGloves.forId(key).getIndicator());
|
||||
buffer.putInt(value);
|
||||
});
|
||||
}
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
int charges;
|
||||
while ((opcode = buffer.get() & 0xFF) != 0){
|
||||
charges = buffer.getInt();
|
||||
registerGlove(BrawlingGloves.forIndicator((byte)opcode).getId(),charges);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean updateCharges(int glove, int charges){
|
||||
if(GloveCharges.get(glove) != null){
|
||||
if(GloveCharges.get(glove) - charges <= 0) {
|
||||
|
|
|
|||
|
|
@ -1,22 +0,0 @@
|
|||
package core.game.node.entity.player.info.login;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
/**
|
||||
* Represents a saving module.
|
||||
* @author Emperor
|
||||
*/
|
||||
public interface SavingModule {
|
||||
|
||||
/**
|
||||
* Writes data on the byte buffer.
|
||||
* @param buffer The byte buffer.
|
||||
*/
|
||||
void save(ByteBuffer buffer);
|
||||
|
||||
/**
|
||||
* Parses data from the byte buffer.
|
||||
* @param buffer The byte buffer.
|
||||
*/
|
||||
void parse(ByteBuffer buffer);
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
package core.game.node.entity.player.link;
|
||||
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
|
|
@ -10,7 +10,7 @@ import java.nio.ByteBuffer;
|
|||
* Represents a managing class of activity related information.
|
||||
* @author 'Vexia
|
||||
*/
|
||||
public final class ActivityData implements SavingModule {
|
||||
public final class ActivityData {
|
||||
|
||||
/**
|
||||
* Represents the pest points gained from pest control.
|
||||
|
|
@ -126,52 +126,6 @@ public final class ActivityData implements SavingModule {
|
|||
*/
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
if (pestPoints > 0) {
|
||||
SavedData.save(buffer, pestPoints, 1);
|
||||
}
|
||||
if (warriorGuildTokens > 0) {
|
||||
SavedData.save(buffer, warriorGuildTokens, 2);
|
||||
}
|
||||
if (bountyHunterRate > 0) {
|
||||
SavedData.save(buffer, bountyHunterRate, 3);
|
||||
}
|
||||
if (bountyRogueRate > 0) {
|
||||
SavedData.save(buffer, bountyRogueRate, 4);
|
||||
}
|
||||
if (barrowKills > 0) {
|
||||
SavedData.save(buffer, (short) barrowKills, 5);
|
||||
}
|
||||
SavedData.save(buffer, barrowBrothers, 6);
|
||||
if (barrowTunnelIndex > 0) {
|
||||
SavedData.save(buffer, (byte) barrowTunnelIndex, 7);
|
||||
}
|
||||
SavedData.save(buffer, kolodionStage, 9);
|
||||
buffer.put((byte) 10);
|
||||
for (int i = 0; i < godCasts.length; i++) {
|
||||
buffer.putInt(godCasts[i]);
|
||||
}
|
||||
SavedData.save(buffer, kolodionBoss, 11);
|
||||
SavedData.save(buffer, elnockSupplies, 12);
|
||||
SavedData.save(buffer, getLastBorkBattle(), 13);
|
||||
SavedData.save(buffer, startedMta, 14);
|
||||
SavedData.save(buffer, lostCannon, 15);
|
||||
buffer.put((byte) 16);
|
||||
buffer.put((byte) pizazzPoints.length);
|
||||
for (int i = 0; i < pizazzPoints.length; i++) {
|
||||
buffer.putInt(pizazzPoints[i]);
|
||||
}
|
||||
SavedData.save(buffer, bonesToPeaches, 17);
|
||||
SavedData.save(buffer, solvedMazes, 18);
|
||||
SavedData.save(buffer, fogRating, 19);
|
||||
SavedData.save(buffer, borkKills, 20);
|
||||
SavedData.save(buffer, hardcoreDeath, 21);
|
||||
SavedData.save(buffer, topGrabbed, 22);
|
||||
buffer.put((byte) 0);
|
||||
|
||||
}
|
||||
|
||||
public void parse(JSONObject data){
|
||||
pestPoints = Integer.parseInt( data.get("pestPoints").toString());
|
||||
warriorGuildTokens = Integer.parseInt( data.get("warriorGuildTokens").toString());
|
||||
|
|
@ -205,88 +159,6 @@ public final class ActivityData implements SavingModule {
|
|||
topGrabbed = (boolean) data.get("topGrabbed");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
while ((opcode = buffer.get()) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
pestPoints = buffer.getInt();
|
||||
break;
|
||||
case 2:
|
||||
warriorGuildTokens = buffer.getInt();
|
||||
break;
|
||||
case 3:
|
||||
bountyHunterRate = buffer.getInt();
|
||||
break;
|
||||
case 4:
|
||||
bountyRogueRate = buffer.getInt();
|
||||
break;
|
||||
case 5:
|
||||
barrowKills = buffer.getShort() & 0xFFFF;
|
||||
break;
|
||||
case 6:
|
||||
for (int i = 0; i < barrowBrothers.length; i++) {
|
||||
barrowBrothers[i] = SavedData.getBoolean(buffer.get());
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
barrowTunnelIndex = buffer.get() & 0xFF;
|
||||
break;
|
||||
case 8:
|
||||
buffer.get(); // Barrow config index.
|
||||
break;
|
||||
case 9:
|
||||
kolodionStage = buffer.getInt();
|
||||
break;
|
||||
case 10:
|
||||
for (int i = 0; i < godCasts.length; i++) {
|
||||
godCasts[i] = buffer.getInt();
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
kolodionBoss = buffer.getInt();
|
||||
break;
|
||||
case 12:
|
||||
elnockSupplies = SavedData.getBoolean(buffer);
|
||||
break;
|
||||
case 13:
|
||||
setLastBorkBattle(buffer.getLong());
|
||||
break;
|
||||
case 14:
|
||||
startedMta = SavedData.getBoolean(buffer);
|
||||
break;
|
||||
case 15:
|
||||
lostCannon = SavedData.getBoolean(buffer);
|
||||
break;
|
||||
case 16:
|
||||
int size = buffer.get();
|
||||
for (int i = 0; i < size; i++) {
|
||||
pizazzPoints[i] = buffer.getInt();
|
||||
}
|
||||
break;
|
||||
case 17:
|
||||
bonesToPeaches = SavedData.getBoolean(buffer);
|
||||
break;
|
||||
case 18:
|
||||
solvedMazes = buffer.getInt();
|
||||
break;
|
||||
case 19:
|
||||
fogRating = buffer.getInt();
|
||||
break;
|
||||
case 20:
|
||||
borkKills = buffer.get();
|
||||
break;
|
||||
case 21:
|
||||
hardcoreDeath = SavedData.getBoolean(buffer);
|
||||
break;
|
||||
case 22:
|
||||
topGrabbed = SavedData.getBoolean(buffer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the elnockSupplies.
|
||||
* @return The elnockSupplies.
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import core.cache.misc.buffer.ByteBufferUtils;
|
|||
import core.game.component.CloseEvent;
|
||||
import core.game.component.Component;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.world.GameWorld;
|
||||
import core.net.packet.PacketRepository;
|
||||
import core.net.packet.context.ChildPositionContext;
|
||||
|
|
@ -26,7 +26,7 @@ import java.util.concurrent.TimeUnit;
|
|||
* @author Vexia
|
||||
* @author Emperor
|
||||
*/
|
||||
public class BankPinManager implements SavingModule {
|
||||
public class BankPinManager {
|
||||
|
||||
/**
|
||||
* THe setting messages to display on default.
|
||||
|
|
@ -113,24 +113,6 @@ public class BankPinManager implements SavingModule {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
if (hasPin()) {
|
||||
ByteBufferUtils.putString(pin, buffer.put((byte) 1));
|
||||
}
|
||||
buffer.put((byte) 2).put((byte) (longRecovery ? 1 : 0));
|
||||
if (status.ordinal() != 0) {
|
||||
buffer.put((byte) 3).put(((byte) status.ordinal()));
|
||||
}
|
||||
if (pendingDelay != -1 && pendingDelay > System.currentTimeMillis()) {
|
||||
buffer.put((byte) 4).putLong(pendingDelay);
|
||||
}
|
||||
if (tryDelay > System.currentTimeMillis()) {
|
||||
buffer.put((byte) 5).putLong(tryDelay);
|
||||
}
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
public void parse(JSONObject data){
|
||||
if(data.containsKey("pin")) {
|
||||
pin = data.get("pin").toString();
|
||||
|
|
@ -148,30 +130,6 @@ public class BankPinManager implements SavingModule {
|
|||
longRecovery = (boolean) data.get("longRecovery");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
while ((opcode = buffer.get()) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
pin = ByteBufferUtils.getString(buffer);
|
||||
break;
|
||||
case 2:
|
||||
longRecovery = buffer.get() == 1;
|
||||
break;
|
||||
case 3:
|
||||
status = PinStatus.values()[buffer.get()];
|
||||
break;
|
||||
case 4:
|
||||
pendingDelay = buffer.getLong();
|
||||
break;
|
||||
case 5:
|
||||
tryDelay = buffer.getLong();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the settings.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package core.game.node.entity.player.link;
|
||||
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.system.task.Pulse;
|
||||
import core.game.world.GameWorld;
|
||||
import core.net.packet.PacketRepository;
|
||||
|
|
@ -15,7 +15,7 @@ import java.nio.ByteBuffer;
|
|||
* @author Emperor
|
||||
*/
|
||||
@Deprecated
|
||||
public final class ConfigurationManager implements SavingModule {
|
||||
public final class ConfigurationManager {
|
||||
|
||||
/**
|
||||
* The amount of configurations.
|
||||
|
|
@ -45,26 +45,6 @@ public final class ConfigurationManager implements SavingModule {
|
|||
this.player = player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
for (int index = 0; index < savedConfigurations.length; index++) {
|
||||
int value = savedConfigurations[index];
|
||||
if (value != 0) {
|
||||
buffer.putShort((short) index);
|
||||
buffer.putInt(value);
|
||||
}
|
||||
}
|
||||
buffer.putShort((short) -1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int index = 0;
|
||||
while ((index = buffer.getShort()) != -1) {
|
||||
savedConfigurations[index] = buffer.getInt();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the configurations.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package core.game.node.entity.player.link;
|
||||
|
||||
import core.game.content.global.GodBook;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
|
|
@ -11,7 +11,7 @@ import java.nio.ByteBuffer;
|
|||
* Represents the quest data to save.
|
||||
* @author 'Vexia
|
||||
*/
|
||||
public final class GlobalData implements SavingModule {
|
||||
public final class GlobalData {
|
||||
|
||||
/**
|
||||
* Represents the tutorial stage.
|
||||
|
|
@ -309,99 +309,6 @@ public final class GlobalData implements SavingModule {
|
|||
*/
|
||||
private boolean macroDisabled = false;
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
SavedData.save(buffer, tutorialStage, 1);
|
||||
SavedData.save(buffer, homeTeleportDelay, 2);
|
||||
SavedData.save(buffer, lumbridgeRope, 3);
|
||||
SavedData.save(buffer, apprentice, 4);
|
||||
SavedData.save(buffer, assistTime, 6);
|
||||
SavedData.save(buffer, assistExperience, 7);
|
||||
SavedData.save(buffer, strongHoldRewards, 8);
|
||||
SavedData.save(buffer, chatPing, 9);
|
||||
SavedData.save(buffer, tutorClaim, 10);
|
||||
SavedData.save(buffer, luthasTask, 11);
|
||||
SavedData.save(buffer, (byte) karamjaBananas, 12);
|
||||
SavedData.save(buffer, silkSteal, 13);
|
||||
SavedData.save(buffer, (byte) zafAmount, 14);
|
||||
SavedData.save(buffer, zafTime, 15);
|
||||
SavedData.save(buffer, fritzGlass, 16);
|
||||
SavedData.save(buffer, wydinEmployee, 17);
|
||||
SavedData.save(buffer, draynorRecording, 18);
|
||||
SavedData.save(buffer, geTutorial, 19);
|
||||
SavedData.save(buffer, essenceTeleporter, 20);
|
||||
if (recoilDamage != 40) {
|
||||
SavedData.save(buffer, (byte) recoilDamage, 21);
|
||||
}
|
||||
SavedData.save(buffer, doubleExpDelay, 22);
|
||||
SavedData.save(buffer, joinedMonastery, 23);
|
||||
SavedData.save(buffer, readPlaques, 25);
|
||||
SavedData.save(buffer, forgingUses, 26);
|
||||
SavedData.save(buffer, getEctoCharges(), 27);
|
||||
// SavedData.save(buffer, xpLock, 28);
|
||||
SavedData.save(buffer, braceletClayUses, 29);
|
||||
SavedData.save(buffer, dropDelay, 30);
|
||||
buffer.put((byte) 31);
|
||||
buffer.put((byte) abyssData.length);
|
||||
for (int i = 0; i < abyssData.length; i++) {
|
||||
buffer.put((byte) (abyssData[i] ? 1 : 0));
|
||||
}
|
||||
buffer.put((byte) 32);
|
||||
for (int i = 0; i < rcDecays.length; i++) {
|
||||
buffer.put((byte) rcDecays[i]);
|
||||
}
|
||||
SavedData.save(buffer, disableDeathScreen, 33);
|
||||
SavedData.save(buffer, playerTestStage, 34);
|
||||
SavedData.save(buffer, charmingDelay, 35);
|
||||
buffer.put((byte) 36);
|
||||
buffer.put(((byte) travelLogs.length));
|
||||
for (int i = 0; i < travelLogs.length; i++) {
|
||||
buffer.put((byte) (travelLogs[i] ? 1 : 0));
|
||||
}
|
||||
buffer.put((byte) 37);
|
||||
buffer.put((byte) godBooks.length);
|
||||
for (int i = 0; i < godBooks.length; i++) {
|
||||
buffer.put(((byte) (godBooks[i] ? 1 : 0)));
|
||||
}
|
||||
if (godBook != -1) {
|
||||
buffer.put((byte) 38).putInt(godBook);
|
||||
}
|
||||
SavedData.save(buffer, disableNews, 39);
|
||||
if (!godPages.equals(new boolean[4])) {
|
||||
buffer.put((byte) 40);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
buffer.put((byte) (godPages[i] ? 1 : 0));
|
||||
}
|
||||
}
|
||||
SavedData.save(buffer, overChargeDelay, 41);
|
||||
SavedData.save(buffer, bossCounters, 42);
|
||||
SavedData.save(buffer, barrowsLoots, 43);
|
||||
SavedData.save(buffer, lootSharePoints, 44);
|
||||
SavedData.save(buffer, lootShareDelay, 45);
|
||||
SavedData.save(buffer, doubleExp, 46);
|
||||
SavedData.save(buffer, avasDevice, 47);
|
||||
SavedData.save(buffer, globalTeleporterDelay, 48);
|
||||
SavedData.save(buffer, starSpriteDelay, 49);
|
||||
SavedData.save(buffer, runReplenishDelay, 50);
|
||||
SavedData.save(buffer, runReplenishCharges, 51);
|
||||
SavedData.save(buffer, lowAlchemyCharges, 52);
|
||||
SavedData.save(buffer, lowAlchemyDelay, 53);
|
||||
SavedData.save(buffer, enableBoneCrusher, 54);
|
||||
SavedData.save(buffer, enableCoinMachine, 55);
|
||||
SavedData.save(buffer, magicSkillCapeDelay, 56);
|
||||
SavedData.save(buffer, hunterCapeDelay, 57);
|
||||
SavedData.save(buffer, hunterCapeCharges, 58);
|
||||
SavedData.save(buffer, enableCharmCollector, 59);
|
||||
SavedData.save(buffer, minigameTeleportDelay, 60);
|
||||
SavedData.save(buffer, getSavedX(), 61);
|
||||
SavedData.save(buffer, getSavedY(), 62);
|
||||
SavedData.save(buffer, getSavedH(), 63);
|
||||
SavedData.save(buffer, getTaskAmount(), 64);
|
||||
SavedData.save(buffer, getTaskPoints(), 65);
|
||||
SavedData.save(buffer, macroDisabled,66);
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
public void parse(JSONObject data){
|
||||
tutorialStage = Integer.parseInt( data.get("tutorialStage").toString());
|
||||
homeTeleportDelay = Long.parseLong(data.get("homeTeleportDelay").toString());
|
||||
|
|
@ -486,242 +393,6 @@ public final class GlobalData implements SavingModule {
|
|||
taskPoints = Integer.parseInt( data.get("taskPoints").toString());
|
||||
macroDisabled = (boolean) data.get("macroDisabled");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
int size;
|
||||
while ((opcode = buffer.get()) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
tutorialStage = buffer.getInt();
|
||||
break;
|
||||
case 2:
|
||||
homeTeleportDelay = buffer.getLong();
|
||||
break;
|
||||
case 3:
|
||||
lumbridgeRope = SavedData.getBoolean(buffer.get());
|
||||
break;
|
||||
case 4:
|
||||
apprentice = SavedData.getBoolean(buffer.get());
|
||||
break;
|
||||
case 5:
|
||||
buffer.getLong(); // Used to be skull time.
|
||||
break;
|
||||
case 6:
|
||||
assistTime = buffer.getLong();
|
||||
break;
|
||||
case 7:
|
||||
for (int i = 0; i < assistExperience.length; i++) {
|
||||
assistExperience[i] = buffer.getDouble();
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
for (byte i = 0; i < strongHoldRewards.length; i++) {
|
||||
strongHoldRewards[i] = SavedData.getBoolean(buffer.get());
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
chatPing = buffer.getLong();
|
||||
break;
|
||||
case 10:
|
||||
tutorClaim = buffer.getLong();
|
||||
break;
|
||||
case 11:
|
||||
luthasTask = SavedData.getBoolean(buffer.get());
|
||||
break;
|
||||
case 12:
|
||||
karamjaBananas = buffer.get();
|
||||
break;
|
||||
case 13:
|
||||
silkSteal = buffer.getLong();
|
||||
break;
|
||||
case 14:
|
||||
zafAmount = buffer.get();
|
||||
;
|
||||
break;
|
||||
case 15:
|
||||
zafTime = buffer.getLong();
|
||||
break;
|
||||
case 16:
|
||||
fritzGlass = SavedData.getBoolean(buffer.get());
|
||||
break;
|
||||
case 17:
|
||||
wydinEmployee = SavedData.getBoolean(buffer.get());
|
||||
break;
|
||||
case 18:
|
||||
draynorRecording = SavedData.getBoolean(buffer.get());
|
||||
break;
|
||||
case 19:
|
||||
geTutorial = SavedData.getBoolean(buffer.get());
|
||||
break;
|
||||
case 20:
|
||||
essenceTeleporter = buffer.getInt();
|
||||
break;
|
||||
case 21:
|
||||
recoilDamage = buffer.get();
|
||||
break;
|
||||
case 22:
|
||||
doubleExpDelay = buffer.getLong();
|
||||
break;
|
||||
case 23:
|
||||
SavedData.getBoolean(buffer.get());
|
||||
break;
|
||||
case 24:// tyler fuckup.
|
||||
for (int i = 0; i < 7; i++) {
|
||||
buffer.get();
|
||||
}
|
||||
break;
|
||||
case 25:
|
||||
for (int i = 0; i < readPlaques.length; i++) {
|
||||
readPlaques[i] = buffer.get() == 1;
|
||||
}
|
||||
break;
|
||||
case 26:
|
||||
forgingUses = buffer.getInt();
|
||||
break;
|
||||
case 27:
|
||||
setEctoCharges(buffer.getInt());
|
||||
break;
|
||||
case 28:
|
||||
// xpLock = SavedData.getBoolean(buffer);
|
||||
SavedData.getBoolean(buffer);
|
||||
break;
|
||||
case 29:
|
||||
braceletClayUses = buffer.getInt();
|
||||
break;
|
||||
case 30:
|
||||
dropDelay = buffer.getLong();
|
||||
break;
|
||||
case 31:
|
||||
size = buffer.get();
|
||||
for (int i = 0; i < size; i++) {
|
||||
abyssData[i] = buffer.get() == 1;
|
||||
}
|
||||
break;
|
||||
case 32:
|
||||
for (int i = 0; i < rcDecays.length; i++) {
|
||||
rcDecays[i] = buffer.get();
|
||||
}
|
||||
break;
|
||||
case 33:
|
||||
disableDeathScreen = SavedData.getBoolean(buffer);
|
||||
break;
|
||||
case 34:
|
||||
playerTestStage = buffer.getInt();
|
||||
break;
|
||||
case 35:
|
||||
charmingDelay = buffer.getLong();
|
||||
break;
|
||||
case 36:
|
||||
byte size1 = buffer.get();
|
||||
for (int i = 0; i < size1; i++) {
|
||||
travelLogs[i] = buffer.get() == 1;
|
||||
}
|
||||
break;
|
||||
case 37:
|
||||
size = buffer.get();
|
||||
for (int i = 0; i < size; i++) {
|
||||
godBooks[i] = buffer.get() == 1;
|
||||
}
|
||||
break;
|
||||
case 38:
|
||||
godBook = buffer.getInt();
|
||||
break;
|
||||
case 39:
|
||||
disableNews = SavedData.getBoolean(buffer);
|
||||
break;
|
||||
case 40:
|
||||
for (int i = 0; i < 4; i++) {
|
||||
godPages[i] = buffer.get() == 1;
|
||||
}
|
||||
break;
|
||||
case 41:
|
||||
overChargeDelay = buffer.getLong();
|
||||
break;
|
||||
case 42:
|
||||
for (int i = 0; i < bossCounters.length; i++) {
|
||||
bossCounters[i] = buffer.getInt();
|
||||
if (bossCounters[i] < 0) {
|
||||
bossCounters[i] = 127 + (bossCounters[i] * -1);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 43:
|
||||
barrowsLoots = buffer.getInt();
|
||||
break;
|
||||
case 44:
|
||||
lootSharePoints = buffer.getInt();
|
||||
break;
|
||||
case 45:
|
||||
lootShareDelay = buffer.getLong();
|
||||
break;
|
||||
case 46:
|
||||
doubleExp = buffer.getLong();
|
||||
break;
|
||||
case 47:
|
||||
avasDevice = SavedData.getBoolean(buffer);
|
||||
break;
|
||||
case 48:
|
||||
globalTeleporterDelay = buffer.getLong();
|
||||
break;
|
||||
case 49:
|
||||
starSpriteDelay = buffer.getLong();
|
||||
break;
|
||||
case 50:
|
||||
runReplenishDelay = buffer.getLong();
|
||||
break;
|
||||
case 51:
|
||||
runReplenishCharges = buffer.getInt();
|
||||
break;
|
||||
case 52:
|
||||
lowAlchemyCharges = buffer.getInt();
|
||||
break;
|
||||
case 53:
|
||||
lowAlchemyDelay = buffer.getLong();
|
||||
break;
|
||||
case 54:
|
||||
enableBoneCrusher = SavedData.getBoolean(buffer);
|
||||
break;
|
||||
case 55:
|
||||
enableCoinMachine = SavedData.getBoolean(buffer);
|
||||
break;
|
||||
case 56:
|
||||
magicSkillCapeDelay = buffer.getLong();
|
||||
break;
|
||||
case 57:
|
||||
hunterCapeDelay = buffer.getLong();
|
||||
break;
|
||||
case 58:
|
||||
hunterCapeCharges = buffer.getInt();
|
||||
break;
|
||||
case 59:
|
||||
enableCharmCollector = SavedData.getBoolean(buffer);
|
||||
break;
|
||||
case 60:
|
||||
minigameTeleportDelay = buffer.getLong();
|
||||
break;
|
||||
case 61:
|
||||
setSavedX(buffer.getInt());
|
||||
break;
|
||||
case 62:
|
||||
setSavedY(buffer.getInt());
|
||||
break;
|
||||
case 63:
|
||||
setSavedH(buffer.getInt());
|
||||
break;
|
||||
case 64:
|
||||
setTaskAmount(buffer.getInt());
|
||||
break;
|
||||
case 65:
|
||||
setTaskPoints(buffer.getInt());
|
||||
break;
|
||||
case 66:
|
||||
macroDisabled = SavedData.getBoolean(buffer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setSavedLocation(int x, int y, int z) {
|
||||
setSavedX(x);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package core.game.node.entity.player.link;
|
||||
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
|
|
@ -10,7 +10,7 @@ import java.nio.ByteBuffer;
|
|||
* @author Vexia
|
||||
*
|
||||
*/
|
||||
public class IronmanManager implements SavingModule {
|
||||
public class IronmanManager {
|
||||
|
||||
/**
|
||||
* The player instance.
|
||||
|
|
@ -30,29 +30,6 @@ public class IronmanManager implements SavingModule {
|
|||
this.player = player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
if (mode != IronmanMode.NONE) {
|
||||
buffer.put((byte) 1);
|
||||
buffer.put((byte) mode.ordinal());
|
||||
}
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
while ((opcode = buffer.get()) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
mode = IronmanMode.values()[buffer.get()];
|
||||
break;
|
||||
case 2: //Indicates permanent.
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the restriction.
|
||||
* @return {@code True} if so.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package core.game.node.entity.player.link;
|
||||
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.node.item.Item;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
|
@ -12,7 +12,7 @@ import java.util.Arrays;
|
|||
* Represents the quest data to save.
|
||||
* @author 'Vexia
|
||||
*/
|
||||
public final class QuestData implements SavingModule {
|
||||
public final class QuestData {
|
||||
|
||||
/**
|
||||
* Represents the cooks assist attribute array.
|
||||
|
|
@ -68,21 +68,6 @@ public final class QuestData implements SavingModule {
|
|||
populateDesertTreasureNode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
SavedData.save(buffer, draynorLever, 1);
|
||||
SavedData.save(buffer, dragonSlayer, 2);
|
||||
SavedData.save(buffer, (byte) dragonSlayerPlanks, 3);
|
||||
SavedData.save(buffer, demonSlayer, 4);
|
||||
SavedData.save(buffer, cooksAssistant, 5);
|
||||
SavedData.save(buffer, gardenerAttack, 6);
|
||||
SavedData.save(buffer, talkedDrezel, 7);
|
||||
saveDesertTreasureNode(buffer);
|
||||
SavedData.save(buffer, witchsExperimentStage, 9);
|
||||
SavedData.save(buffer, witchsExperimentKilled, 10);
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
public void parse(JSONObject data){
|
||||
JSONArray dl = (JSONArray) data.get("draynorLever");
|
||||
for(int i = 0; i < dl.size(); i++){
|
||||
|
|
@ -112,55 +97,6 @@ public final class QuestData implements SavingModule {
|
|||
witchsExperimentStage = Integer.parseInt( data.get("witchsExperimentStage").toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
while ((opcode = buffer.get()) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
for (int i = 0; i < draynorLever.length; i++) {
|
||||
draynorLever[i] = SavedData.getBoolean(buffer.get());
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (int i = 0; i < dragonSlayer.length; i++) {
|
||||
dragonSlayer[i] = SavedData.getBoolean(buffer.get());
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
dragonSlayerPlanks = buffer.get();
|
||||
break;
|
||||
case 4:
|
||||
for (int i = 0; i < demonSlayer.length; i++) {
|
||||
demonSlayer[i] = SavedData.getBoolean(buffer.get());
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
for (int i = 0; i < cooksAssistant.length; i++) {
|
||||
cooksAssistant[i] = SavedData.getBoolean(buffer.get());
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
gardenerAttack = SavedData.getBoolean(buffer.get());
|
||||
break;
|
||||
case 7:
|
||||
talkedDrezel = SavedData.getBoolean(buffer.get());
|
||||
break;
|
||||
case 8:
|
||||
for (int i = 0; i < desertTreasure.length; i++) {
|
||||
desertTreasure[i] = new Item(buffer.getShort(), buffer.get());
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
witchsExperimentStage = buffer.getInt();
|
||||
break;
|
||||
case 10:
|
||||
witchsExperimentKilled = SavedData.getBoolean(buffer.get());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the desert treasure node.
|
||||
* @param buffer The buffer.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package core.game.node.entity.player.link;
|
||||
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.node.entity.player.link.spawn.SpawnData;
|
||||
import core.game.system.SystemLogger;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@ import java.nio.ByteBuffer;
|
|||
* such as questing data, npc talking data, etc.
|
||||
* @author 'Vexia
|
||||
*/
|
||||
public class SavedData implements SavingModule {
|
||||
public class SavedData {
|
||||
|
||||
/**
|
||||
* Represents the global data to save.
|
||||
|
|
@ -47,67 +47,6 @@ public class SavedData implements SavingModule {
|
|||
this.player = player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
buffer.put((byte) 1);
|
||||
activityData.save(buffer);
|
||||
buffer.put((byte) 2);
|
||||
questData.save(buffer);
|
||||
buffer.put((byte) 3);
|
||||
globalData.save(buffer);
|
||||
buffer.put((byte) 5);
|
||||
spawnData.save(buffer);
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
while ((opcode = buffer.get()) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
activityData.parse(buffer);
|
||||
break;
|
||||
case 2:
|
||||
questData.parse(buffer);
|
||||
break;
|
||||
case 3:
|
||||
globalData.parse(buffer);
|
||||
break;
|
||||
case 4:
|
||||
int opcode1;
|
||||
while ((opcode1 = buffer.get()) != 0) {
|
||||
switch (opcode1) {
|
||||
case 1:
|
||||
buffer.getInt();
|
||||
break;
|
||||
case 2:
|
||||
buffer.getInt();
|
||||
break;
|
||||
case 3:
|
||||
buffer.getInt();
|
||||
break;
|
||||
case 4:
|
||||
buffer.getInt();
|
||||
break;
|
||||
case 5:
|
||||
buffer.getInt();
|
||||
break;
|
||||
case 6:
|
||||
buffer.getInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
spawnData.parse(buffer);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method used to save an activity var that isn't valued at default.
|
||||
* @param buffer the buffer.
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package core.game.node.entity.player.link;
|
|||
import core.game.component.Component;
|
||||
import core.game.node.entity.skill.magic.MagicSpell;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.HashMap;
|
||||
|
|
@ -13,7 +13,7 @@ import java.util.Map;
|
|||
* Represents a managing class of a players spell book.
|
||||
* @author Vexia
|
||||
*/
|
||||
public final class SpellBookManager implements SavingModule {
|
||||
public final class SpellBookManager {
|
||||
|
||||
/**
|
||||
* Represents the current interface if of the spellbook.
|
||||
|
|
@ -29,18 +29,6 @@ public final class SpellBookManager implements SavingModule {
|
|||
*/
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
buffer.putInt(spellBook);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
if (buffer.hasRemaining()) {
|
||||
setSpellBook(SpellBook.forInterface(buffer.getInt()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the spell book.
|
||||
* @param book
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package core.game.node.entity.player.link;
|
|||
|
||||
import core.game.component.Component;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -12,7 +12,7 @@ import java.util.List;
|
|||
* Handles the warning messages of a player.
|
||||
* @author Vexia
|
||||
*/
|
||||
public final class WarningMessages implements SavingModule {
|
||||
public final class WarningMessages {
|
||||
|
||||
/**
|
||||
* Represents the config id.
|
||||
|
|
@ -24,16 +24,6 @@ public final class WarningMessages implements SavingModule {
|
|||
*/
|
||||
private final List<WarningMessage> messages = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Method used to open the warning messages.
|
||||
* @param player the player.
|
||||
|
|
@ -79,7 +69,7 @@ public final class WarningMessages implements SavingModule {
|
|||
* Represents a warning message.
|
||||
* @author 'Vexia
|
||||
*/
|
||||
public final class WarningMessage implements SavingModule {
|
||||
public final class WarningMessage {
|
||||
|
||||
/**
|
||||
* Represents the button index.
|
||||
|
|
@ -94,16 +84,6 @@ public final class WarningMessages implements SavingModule {
|
|||
this.index = index;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Method used to toggle this warning message.
|
||||
* @param player the player.
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import core.game.container.impl.EquipmentContainer;
|
|||
import core.game.node.entity.combat.equipment.WeaponInterface;
|
||||
import core.game.node.entity.impl.Animator.Priority;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.node.item.Item;
|
||||
import core.game.system.config.ItemConfigParser;
|
||||
import core.game.world.update.flag.context.Animation;
|
||||
|
|
@ -21,7 +21,7 @@ import java.nio.ByteBuffer;
|
|||
* @author Emperor
|
||||
* @author Vexia
|
||||
*/
|
||||
public final class Appearance implements SavingModule {
|
||||
public final class Appearance {
|
||||
|
||||
/**
|
||||
* Represents the player instance.
|
||||
|
|
@ -76,14 +76,6 @@ public final class Appearance implements SavingModule {
|
|||
this.player = player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
buffer.put(gender.toByte());
|
||||
for (int i = 0; i < appearanceCache.length; i++) {
|
||||
appearanceCache[i].save(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
public void parse(JSONObject appearance){
|
||||
gender = gender.asByte(Byte.parseByte(appearance.get("gender").toString()));
|
||||
JSONArray appCache = (JSONArray) appearance.get("appearance_cache");
|
||||
|
|
@ -92,14 +84,6 @@ public final class Appearance implements SavingModule {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
gender = gender.asByte(buffer.get());
|
||||
for (int i = 0; i < appearanceCache.length; i++) {
|
||||
appearanceCache[i].parse(buffer);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Transforms the player into an NPC.
|
||||
* @param id The NPC id.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package core.game.node.entity.player.link.appearance;
|
||||
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
|
@ -9,7 +9,7 @@ import java.nio.ByteBuffer;
|
|||
* Represents a body part of a player encapsulating the type and color.
|
||||
* @author 'Vexia
|
||||
*/
|
||||
public final class BodyPart implements SavingModule {
|
||||
public final class BodyPart {
|
||||
|
||||
/**
|
||||
* Represents the look value of the part.
|
||||
|
|
@ -48,23 +48,11 @@ public final class BodyPart implements SavingModule {
|
|||
this(look, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
buffer.putInt(look);
|
||||
buffer.putInt(color);
|
||||
}
|
||||
|
||||
public void parse(JSONObject part){
|
||||
changeLook(Integer.parseInt( part.get("look").toString()));
|
||||
changeColor(Integer.parseInt( part.get("color").toString()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
changeLook(buffer.getInt());
|
||||
changeColor(buffer.getInt());
|
||||
}
|
||||
|
||||
/**
|
||||
* Method used to change the look value.
|
||||
* @param look the look value.
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package core.game.node.entity.player.link.diary;
|
|||
import core.cache.def.impl.NPCDefinition;
|
||||
import core.game.component.Component;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
|
|
@ -14,7 +14,7 @@ import java.util.ArrayList;
|
|||
* Represents an achievement diary.
|
||||
* @author Vexia
|
||||
*/
|
||||
public class AchievementDiary implements SavingModule {
|
||||
public class AchievementDiary {
|
||||
|
||||
/**
|
||||
* The component id of the diary.
|
||||
|
|
@ -132,26 +132,6 @@ public class AchievementDiary implements SavingModule {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
buffer.put((byte) 1);
|
||||
for (int i = 0; i < 3; i++) {
|
||||
buffer.put((byte) (levelStarted[i] ? 1 : 0));
|
||||
}
|
||||
buffer.put((byte) 2).put((byte) taskCompleted.length);
|
||||
for (int i = 0; i < taskCompleted.length; i++) {
|
||||
buffer.put((byte) type.getAchievements(i).length);
|
||||
for (int x = 0; x < type.getAchievements(i).length; x++) {
|
||||
buffer.put((byte) (taskCompleted[i][x] ? 1 : 0));
|
||||
}
|
||||
}
|
||||
buffer.put((byte) 3).put((byte) levelRewarded.length);
|
||||
for (int i = 0; i < levelRewarded.length; i++) {
|
||||
buffer.put((byte) (levelRewarded[i] ? 1 : 0));
|
||||
}
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
public void parse(JSONObject data){
|
||||
JSONArray startedArray = (JSONArray) data.get("startedLevels");
|
||||
for(int i = 0; i < startedArray.size(); i++){
|
||||
|
|
@ -173,35 +153,6 @@ public class AchievementDiary implements SavingModule {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode, size;
|
||||
while ((opcode = buffer.get()) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
for (int i = 0; i < 3; i++) {
|
||||
levelStarted[i] = buffer.get() == 1;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
size = buffer.get() & 0xFF;
|
||||
for (int i = 0; i < size; i++) {
|
||||
int size_ = buffer.get() & 0xFF;
|
||||
for (int x = 0; x < size_; x++) {
|
||||
taskCompleted[i][x] = buffer.get() == 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
size = buffer.get() & 0xFF;
|
||||
for (int i = 0; i < size; i++) {
|
||||
levelRewarded[i] = buffer.get() == 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws the status of the diary.
|
||||
* @param player the player.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import org.json.simple.JSONArray;
|
|||
import org.json.simple.JSONObject;
|
||||
import core.game.node.entity.skill.smithing.smelting.Bar;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.node.item.Item;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
|
@ -16,7 +16,7 @@ import java.nio.ByteBuffer;
|
|||
* Manages the achievement diary of a player.
|
||||
* @author Vexia
|
||||
*/
|
||||
public class AchievementDiaryManager implements SavingModule {
|
||||
public class AchievementDiaryManager {
|
||||
|
||||
/**
|
||||
* The achievement diarys.
|
||||
|
|
@ -43,15 +43,6 @@ public class AchievementDiaryManager implements SavingModule {
|
|||
this.player = player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
buffer.put((byte) 1).put(((byte) diarys.length));
|
||||
for (AchievementDiary diary : diarys) {
|
||||
diary.save(buffer);
|
||||
}
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
public void parse(JSONArray data){
|
||||
for(int i = 0; i < data.size(); i++){
|
||||
JSONObject diary = (JSONObject) data.get(i);
|
||||
|
|
@ -65,21 +56,6 @@ public class AchievementDiaryManager implements SavingModule {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
while ((opcode = buffer.get()) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
int length = buffer.get() & 0xFF;
|
||||
for (int i = 0; i < length; i++) {
|
||||
diarys[i].parse(buffer);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the achievement diary tab.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package core.game.node.entity.player.link.emote;
|
||||
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -12,7 +12,7 @@ import java.util.List;
|
|||
* @author Vexia
|
||||
*
|
||||
*/
|
||||
public class EmoteManager implements SavingModule {
|
||||
public class EmoteManager {
|
||||
|
||||
/**
|
||||
* The list of unlocked emotes.
|
||||
|
|
@ -35,26 +35,6 @@ public class EmoteManager implements SavingModule {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
buffer.put((byte) emotes.size());
|
||||
for (int i = 0; i < emotes.size(); i++) {
|
||||
buffer.put((byte) emotes.get(i).ordinal());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int size = buffer.get();
|
||||
Emotes emote = null;
|
||||
for (int i = 0; i < size; i++) {
|
||||
emote = Emotes.values()[buffer.get()];
|
||||
if (!emotes.contains(emote)) {
|
||||
emotes.add(emote);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Refreshes the emote tab.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import core.game.node.entity.npc.AbstractNPC;
|
|||
import core.game.node.entity.npc.NPC;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.Rights;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.node.entity.player.link.HintIconManager;
|
||||
import core.game.node.entity.player.link.prayer.PrayerType;
|
||||
import core.game.node.item.GroundItem;
|
||||
|
|
@ -19,7 +19,7 @@ import java.util.Map;
|
|||
* Manages the players grave stone.
|
||||
* @author Vexia
|
||||
*/
|
||||
public class GraveManager implements SavingModule {
|
||||
public class GraveManager {
|
||||
|
||||
/**
|
||||
* The current grave stones in the world.
|
||||
|
|
@ -49,18 +49,6 @@ public class GraveManager implements SavingModule {
|
|||
this.player = player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
buffer.putInt(type.ordinal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
if (buffer.hasRemaining()) {
|
||||
type = GraveType.values()[buffer.getInt()];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a grave.
|
||||
* @param ticks the ticks.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package core.game.node.entity.player.link.music;
|
||||
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.node.entity.player.link.emote.Emotes;
|
||||
import core.game.world.GameWorld;
|
||||
import core.net.packet.PacketRepository;
|
||||
|
|
@ -19,7 +19,7 @@ import java.util.Random;
|
|||
* Handles a music playing for a player.
|
||||
* @author Emperor
|
||||
*/
|
||||
public final class MusicPlayer implements SavingModule {
|
||||
public final class MusicPlayer {
|
||||
|
||||
/**
|
||||
* The tutorial island music.
|
||||
|
|
@ -70,37 +70,6 @@ public final class MusicPlayer implements SavingModule {
|
|||
this.unlocked = new HashMap<>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
if (!unlocked.isEmpty()) {
|
||||
buffer.put((byte) 1);
|
||||
buffer.putShort((short) unlocked.size());
|
||||
for (MusicEntry entry : unlocked.values()) {
|
||||
buffer.putShort((short) entry.getId());
|
||||
}
|
||||
}
|
||||
buffer.put((byte) 0); // EOF
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
while ((opcode = buffer.get()) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
int size = buffer.getShort() & 0xFFFF;
|
||||
for (int i = 0; i < size; i++) {
|
||||
int musicId = buffer.getShort() & 0xFFFF;
|
||||
MusicEntry entry = MusicEntry.forId(musicId);
|
||||
if (entry != null) {
|
||||
unlocked.put(entry.getIndex(), entry);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the music player.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package core.game.node.entity.player.link.quest;
|
||||
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.system.SystemLogger;
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
|
|
@ -16,7 +16,7 @@ import java.util.Map.Entry;
|
|||
*
|
||||
* @author Vexia
|
||||
*/
|
||||
public final class QuestRepository implements SavingModule {
|
||||
public final class QuestRepository {
|
||||
|
||||
/**
|
||||
* The static mapping of instanced quests.
|
||||
|
|
@ -50,23 +50,6 @@ public final class QuestRepository implements SavingModule {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
if (points != 0) {
|
||||
buffer.put((byte) 1).putInt(points);
|
||||
}
|
||||
for (Entry<Integer, Integer> entry : quests.entrySet()) {
|
||||
buffer.put((byte) 4).putInt(entry.getKey()).put((byte) ((int) entry.getValue()));
|
||||
}
|
||||
Map<Integer, Integer> backup = player.getAttribute("quest-backup", null);
|
||||
if (backup != null) {
|
||||
for (Entry<Integer, Integer> entry : backup.entrySet()) {
|
||||
buffer.put((byte) 4).putInt(entry.getKey()).put((byte) ((int) entry.getValue()));
|
||||
}
|
||||
}
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
public void parse(JSONObject questData){
|
||||
points = Integer.parseInt( questData.get("points").toString());
|
||||
JSONArray questArray = (JSONArray) questData.get("questStages");
|
||||
|
|
@ -77,46 +60,6 @@ public final class QuestRepository implements SavingModule {
|
|||
syncPoints();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
int stage = 0;
|
||||
int index = 0;
|
||||
while ((opcode = buffer.get() & 0xFF) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
points = buffer.getInt();
|
||||
break;
|
||||
case 3:
|
||||
index = buffer.getInt();
|
||||
stage = buffer.getInt();
|
||||
buffer.getInt();//state
|
||||
if (forIndex(index) == null) {
|
||||
//SystemLogger.error("[Quest Repository] parsed quest index -> " + index + " no quest found!");
|
||||
break;
|
||||
}
|
||||
quests.put(index, stage);
|
||||
break;
|
||||
case 4://new parsing.
|
||||
index = buffer.getInt();
|
||||
stage = buffer.get();
|
||||
if (forIndex(index) == null) {
|
||||
Map<Integer, Integer> backup = player.getAttribute("quest-backup", new HashMap<Integer, Integer>());
|
||||
backup.put(index, stage);
|
||||
player.setAttribute("quest-backup", backup);
|
||||
// SystemLogger.error("[Quest Repository] parsed quest index -> " + index + " no quest found! Stored in quest data backup for reparse.");
|
||||
break;
|
||||
}
|
||||
if (!quests.containsKey(index)) {//YOU FORGOT YOUR ! DAMMIT
|
||||
break;
|
||||
}
|
||||
quests.put(index, stage);
|
||||
break;
|
||||
}
|
||||
}
|
||||
syncPoints();
|
||||
}
|
||||
|
||||
/**
|
||||
* Synchronizes the quest tab.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package core.game.node.entity.player.link.spawn;
|
|||
import core.game.component.Component;
|
||||
import core.game.node.entity.skill.Skills;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.node.entity.player.link.SavedData;
|
||||
import core.game.node.entity.player.link.SpellBookManager;
|
||||
import core.game.world.GameWorld;
|
||||
|
|
@ -20,7 +20,7 @@ import java.text.DecimalFormat;
|
|||
* @author Vexia
|
||||
*
|
||||
*/
|
||||
public class SpawnData implements SavingModule {
|
||||
public class SpawnData {
|
||||
|
||||
/**
|
||||
* The kill streak messages.
|
||||
|
|
@ -68,51 +68,6 @@ public class SpawnData implements SavingModule {
|
|||
*/
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
SavedData.save(buffer, tutorialStage, 1);
|
||||
SavedData.save(buffer, pkPoints, 2);
|
||||
SavedData.save(buffer, kills, 3);
|
||||
SavedData.save(buffer, deaths, 4);
|
||||
SavedData.save(buffer, killStreak, 5);
|
||||
SavedData.save(buffer, title.ordinal(), 6);
|
||||
SavedData.save(buffer, purchased, 7);
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
while ((opcode = buffer.get()) != 0) {
|
||||
switch(opcode) {
|
||||
case 1:
|
||||
tutorialStage = buffer.getInt();
|
||||
break;
|
||||
case 2:
|
||||
pkPoints = buffer.getInt();
|
||||
break;
|
||||
case 3:
|
||||
kills = buffer.getInt();
|
||||
break;
|
||||
case 4:
|
||||
deaths = buffer.getInt();
|
||||
break;
|
||||
case 5:
|
||||
killStreak = buffer.getInt();
|
||||
break;
|
||||
case 6:
|
||||
title = PKTitle.values()[buffer.getInt()];
|
||||
break;
|
||||
case 7:
|
||||
for (int i = 0; i < PKPackage.values().length; i++) {
|
||||
purchased = PKPackage.values()[i].ordinal();
|
||||
System.out.println("SpawnData: " + PKPackage.values()[i].ordinal());
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws the stats tab.
|
||||
* @param player the player.
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import org.json.simple.JSONObject;
|
|||
import core.game.content.dialogue.FacialExpression;
|
||||
import core.game.node.entity.skill.Skills;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.node.entity.player.link.audio.Audio;
|
||||
import core.game.node.object.GameObject;
|
||||
import core.game.system.task.Pulse;
|
||||
|
|
@ -29,7 +29,7 @@ import java.nio.ByteBuffer;
|
|||
* @author Emperor
|
||||
*
|
||||
*/
|
||||
public final class HouseManager implements SavingModule {
|
||||
public final class HouseManager {
|
||||
|
||||
/**
|
||||
* The current region.
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import org.json.simple.JSONObject;
|
|||
import core.game.node.entity.skill.Skills;
|
||||
import core.game.node.entity.npc.NPC;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.node.entity.player.link.diary.DiaryType;
|
||||
import core.tools.RandomFunction;
|
||||
|
||||
|
|
@ -21,7 +21,7 @@ import java.util.List;
|
|||
* @author Vexia
|
||||
*
|
||||
*/
|
||||
public final class SlayerManager implements SavingModule {
|
||||
public final class SlayerManager {
|
||||
|
||||
/**
|
||||
* The player instance.
|
||||
|
|
@ -107,105 +107,6 @@ public final class SlayerManager implements SavingModule {
|
|||
canEarnPoints = (boolean) slayerData.get("canEarnPoints");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
while ((opcode = buffer.get() & 0xFF) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
master = Master.forId(buffer.getInt());
|
||||
break;
|
||||
case 2:
|
||||
int taskId = buffer.getInt();
|
||||
if (taskId > Tasks.values().length -1) {
|
||||
SystemLogger.logErr("Invalid task i for " + player.getUsername() + " taskId = " + taskId);
|
||||
break;
|
||||
}
|
||||
task = Tasks.values()[taskId];
|
||||
break;
|
||||
case 3:
|
||||
amount = buffer.getInt();
|
||||
break;
|
||||
case 4:
|
||||
slayerPoints = buffer.getInt();
|
||||
break;
|
||||
case 5:
|
||||
taskCount = buffer.getInt();
|
||||
break;
|
||||
case 6:
|
||||
int size = buffer.get();
|
||||
for (int i = 0; i < size; i++) {
|
||||
learned[i] = buffer.get() == 1;
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
size = buffer.get();
|
||||
for (int i = 0; i < size; i++) {
|
||||
removed.add(Tasks.values()[buffer.getInt()]);
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
taskTotal = buffer.getInt();
|
||||
break;
|
||||
case 9:
|
||||
int pointsEarnable = buffer.getInt();
|
||||
if(pointsEarnable == 1){
|
||||
canEarnPoints = true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
SystemLogger.logErr("Error parsing Slayer Manager opcode = " + opcode);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
if (master != null) {
|
||||
buffer.put((byte) 1);
|
||||
buffer.putInt(master.getNpc());
|
||||
}
|
||||
if (task != null) {
|
||||
buffer.put((byte) 2);
|
||||
buffer.putInt(task.ordinal());
|
||||
}
|
||||
if (task != null) {
|
||||
buffer.put((byte) 3);
|
||||
buffer.putInt(getAmount());
|
||||
}
|
||||
if (slayerPoints != 0) {
|
||||
buffer.put((byte) 4).putInt(slayerPoints);
|
||||
}
|
||||
if (taskCount != 0) {
|
||||
buffer.put((byte) 5).putInt(taskCount);
|
||||
}
|
||||
for (int i = 0; i < learned.length; i++) {
|
||||
if (learned[i] != false) {
|
||||
buffer.put((byte) 6).put((byte) learned.length);
|
||||
for (int k = 0; k < learned.length; k++) {
|
||||
buffer.put((byte) (learned[k] ? 1 : 0));
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!removed.isEmpty()) {
|
||||
buffer.put((byte) 7).put((byte) removed.size());
|
||||
for (Tasks task : removed) {
|
||||
buffer.putInt(task.ordinal());
|
||||
}
|
||||
}
|
||||
if (taskTotal != 0){
|
||||
buffer.put((byte) 8);
|
||||
buffer.putInt(taskTotal);
|
||||
}
|
||||
if(canEarnPoints){
|
||||
buffer.put((byte) 9);
|
||||
buffer.putInt(1);
|
||||
}
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when a hunted creature dies.
|
||||
* @param player The player.
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import core.game.node.entity.skill.summoning.pet.PetDetails;
|
|||
import core.game.node.entity.skill.summoning.pet.Pets;
|
||||
import core.game.node.entity.combat.BattleState;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
import core.game.node.item.Item;
|
||||
import core.game.world.map.Location;
|
||||
import core.game.world.map.zone.ZoneRestriction;
|
||||
|
|
@ -30,7 +30,7 @@ import java.util.Map.Entry;
|
|||
* Handles a player's familiar.
|
||||
* @author Emperor
|
||||
*/
|
||||
public final class FamiliarManager implements SavingModule {
|
||||
public final class FamiliarManager {
|
||||
|
||||
/**
|
||||
* The familiars mapping.
|
||||
|
|
@ -75,36 +75,6 @@ public final class FamiliarManager implements SavingModule {
|
|||
this.player = player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
for (Entry<Integer, PetDetails> entry : petDetails.entrySet()) {
|
||||
buffer.put((byte) 3);
|
||||
buffer.putInt(entry.getKey());
|
||||
entry.getValue().save(buffer);
|
||||
}
|
||||
if (hasPet()) {
|
||||
buffer.put((byte) 4);
|
||||
buffer.putInt(((Pet) familiar).getPet().getBabyItemId());
|
||||
} else if (hasFamiliar()) {
|
||||
buffer.put((byte) 1);
|
||||
buffer.putShort((short) familiar.getOriginalId());
|
||||
buffer.putShort((short) familiar.ticks);
|
||||
buffer.put((byte) familiar.specialPoints);
|
||||
if (familiar.isBurdenBeast() && !((BurdenBeast) familiar).getContainer().isEmpty()) {
|
||||
((BurdenBeast) familiar).getContainer().save(buffer.put((byte) 2));
|
||||
}
|
||||
buffer.put((byte) 5).putInt(familiar.getSkills().getLifepoints());
|
||||
}
|
||||
if (insuredPets.size() > 0) {
|
||||
buffer.put((byte) 6);
|
||||
buffer.put((byte) insuredPets.size());
|
||||
for (Pets pet : insuredPets) {
|
||||
buffer.putInt(pet.getBabyItemId());
|
||||
}
|
||||
}
|
||||
buffer.put((byte) 0);
|
||||
}
|
||||
|
||||
public final void parse(JSONObject familiarData){
|
||||
JSONArray petDetails = (JSONArray) familiarData.get("petDetails");
|
||||
for(int i = 0 ; i < petDetails.size(); i++){
|
||||
|
|
@ -139,62 +109,6 @@ public final class FamiliarManager implements SavingModule {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
PetDetails details;
|
||||
while ((opcode = buffer.get() & 0xFF) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
int npcId = buffer.getShort() & 0xFFFF;
|
||||
familiar = FAMILIARS.get(npcId).construct(player, npcId);
|
||||
familiar.ticks = buffer.getShort() & 0xFFFF;
|
||||
familiar.specialPoints = buffer.get() & 0xFF;
|
||||
break;
|
||||
case 2:
|
||||
if (familiar == null || !familiar.isBurdenBeast()) {
|
||||
SystemLogger.logErr("Error parsing BoB container!");
|
||||
new Container(30).parse(buffer);
|
||||
continue;
|
||||
}
|
||||
((BurdenBeast) familiar).getContainer().parse(buffer);
|
||||
break;
|
||||
case 3:
|
||||
int baseItem = buffer.getInt();
|
||||
details = new PetDetails(0);
|
||||
details.parse(buffer);
|
||||
petDetails.put(baseItem, details);
|
||||
break;
|
||||
case 4:
|
||||
int itemId = buffer.getInt();
|
||||
details = petDetails.get(itemId);
|
||||
Pets pets = Pets.forId(itemId);
|
||||
if (details == null) {
|
||||
details = new PetDetails(pets.getGrowthRate() == 0.0 ? 100.0 : 0.0);
|
||||
petDetails.put(itemId, details);
|
||||
}
|
||||
familiar = new Pet(player, details, itemId, pets.getNpcId(details.getStage()));
|
||||
break;
|
||||
case 5:
|
||||
int hp = buffer.getInt();
|
||||
if (familiar != null) {
|
||||
familiar.setAttribute("hp", hp);
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
int size = buffer.get();
|
||||
Pets pet;
|
||||
for (int i = 0; i < size; i++) {
|
||||
pet = Pets.forId(buffer.getInt());
|
||||
if (pet != null) {
|
||||
insuredPets.add(pet);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the player logs in.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package core.game.node.entity.skill.summoning.pet;
|
||||
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
|
|
@ -8,7 +8,7 @@ import java.nio.ByteBuffer;
|
|||
* A class containing pet details for a certain pet.
|
||||
* @author Emperor
|
||||
*/
|
||||
public final class PetDetails implements SavingModule {
|
||||
public final class PetDetails {
|
||||
|
||||
/**
|
||||
* The hunger rate.
|
||||
|
|
@ -33,20 +33,6 @@ public final class PetDetails implements SavingModule {
|
|||
this.growth = growth;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
buffer.putDouble(hunger);
|
||||
buffer.putDouble(growth);
|
||||
buffer.put((byte) stage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
hunger = buffer.getDouble();
|
||||
growth = buffer.getDouble();
|
||||
stage = buffer.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Increases the hunger value by the given amount.
|
||||
* @param amount The amount.
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
package core.game.node.entity.state;
|
||||
|
||||
import core.game.node.entity.Entity;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.HashMap;
|
||||
|
|
@ -11,7 +11,7 @@ import java.util.Map;
|
|||
* Handles an entity's status (eg. poisoned, stunned, frozen, skulled, ...)
|
||||
* @author Emperor
|
||||
*/
|
||||
public final class StateManager implements SavingModule {
|
||||
public final class StateManager {
|
||||
|
||||
/**
|
||||
* The entity.
|
||||
|
|
@ -31,35 +31,6 @@ public final class StateManager implements SavingModule {
|
|||
this.entity = entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
for (EntityState state : states.keySet()) {
|
||||
StatePulse pulse = states.get(state);
|
||||
if (pulse == null) {
|
||||
System.out.println("Pulse for state " + state + " is null!");
|
||||
continue;
|
||||
}
|
||||
if (pulse.isSaveRequired()) {
|
||||
buffer.put((byte) state.ordinal());
|
||||
pulse.save(buffer);
|
||||
}
|
||||
}
|
||||
buffer.put((byte) -1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int ordinal = 0;
|
||||
while ((ordinal = buffer.get()) != -1) {
|
||||
EntityState state = EntityState.values()[ordinal];
|
||||
StatePulse pulse = state.getPulse().parse(entity, buffer);
|
||||
if (pulse == null) {
|
||||
System.out.println("Pulse for state " + state + " is null!");
|
||||
}
|
||||
states.put(state, pulse);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the pulses.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package core.game.system.monitor;
|
|||
|
||||
import core.cache.misc.buffer.ByteBufferUtils;
|
||||
import core.game.node.entity.player.Player;
|
||||
import core.game.node.entity.player.info.login.SavingModule;
|
||||
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
|
||||
|
|
@ -10,7 +10,7 @@ import java.nio.ByteBuffer;
|
|||
* Handles the player monitoring.
|
||||
* @author Emperor
|
||||
*/
|
||||
public final class PlayerMonitor implements SavingModule {
|
||||
public final class PlayerMonitor {
|
||||
|
||||
/**
|
||||
* The public chat log.
|
||||
|
|
@ -96,44 +96,6 @@ public final class PlayerMonitor implements SavingModule {
|
|||
logs[DUEL_LOG] = new MessageLog(200);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(ByteBuffer buffer) {
|
||||
if (duplicationLog != null && duplicationLog.getFlag() != 0) {
|
||||
buffer.put((byte) 1).put((byte) duplicationLog.getFlag());
|
||||
}
|
||||
if (macroFlag != 0) {
|
||||
buffer.put((byte) 2).put((byte) macroFlag);
|
||||
}
|
||||
if (duplicationLog != null && duplicationLog.isLoggingFlagged()) {
|
||||
buffer.put((byte) 4).putLong(duplicationLog.getLastIncreaseFlag());
|
||||
}
|
||||
buffer.put((byte) 0); // EOF
|
||||
}
|
||||
|
||||
@Override
|
||||
public void parse(ByteBuffer buffer) {
|
||||
int opcode;
|
||||
while ((opcode = buffer.get() & 0xFF) != 0) {
|
||||
switch (opcode) {
|
||||
case 1:
|
||||
getDuplicationLog().flag(buffer.get() & 0xFF);
|
||||
break;
|
||||
case 2:
|
||||
macroFlag = buffer.get() & 0xFF;
|
||||
break;
|
||||
case 3:
|
||||
int size = buffer.get() & 0xFF;
|
||||
for (int i = 0; i < size; i++) {
|
||||
ByteBufferUtils.getString(buffer);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
getDuplicationLog().setLastIncreaseFlag(buffer.getLong());
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears the logs.
|
||||
*/
|
||||
|
|
|
|||
4
Server/src/main/java/Server/core/tools/DialogueConst.kt
Normal file
4
Server/src/main/java/Server/core/tools/DialogueConst.kt
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
package core.tools
|
||||
|
||||
const val START_DIALOGUE = 0
|
||||
const val END_DIALOGUE = 1000000
|
||||
Loading…
Add table
Add a link
Reference in a new issue