From 29b6738852594385f5c496a5792c1e65c3ae75c2 Mon Sep 17 00:00:00 2001 From: Ziggeh Date: Sat, 5 Apr 2014 23:59:42 +0200 Subject: [PATCH 01/79] Jedi - Fixed Force Throw and Spark --- scripts/commands/combat/fs_force_spark.py | 11 +++++++++++ src/services/combat/CombatCommands.java | 4 +++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 scripts/commands/combat/fs_force_spark.py diff --git a/scripts/commands/combat/fs_force_spark.py b/scripts/commands/combat/fs_force_spark.py new file mode 100644 index 00000000..b3a17b88 --- /dev/null +++ b/scripts/commands/combat/fs_force_spark.py @@ -0,0 +1,11 @@ +import sys + +def setup(core, actor, target, command): + + command.setBuffNameTarget('') + + return + +def run(core, actor, target, commandString): + return + \ No newline at end of file diff --git a/src/services/combat/CombatCommands.java b/src/services/combat/CombatCommands.java index 7a66c472..17aab1eb 100644 --- a/src/services/combat/CombatCommands.java +++ b/src/services/combat/CombatCommands.java @@ -197,7 +197,9 @@ public class CombatCommands { core.commandService.registerCommand("forcerun"); // Force Run core.commandService.registerCommand("fs_buff_invis_1"); // Force Cloak core.commandService.registerCombatCommand("fs_force_throw_1"); - core.commandService.registerCommand("forceThrow"); + core.commandService.registerCombatCommand("forceThrow"); + core.commandService.registerCombatCommand("fs_set_heroic_taunt_1"); // Guardian Strike + core.commandService.registerCombatCommand("fs_force_spark"); // Commando From bc8172a008b4dd7a51cc105be4d670a39c0dd902 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Mon, 7 Apr 2014 01:56:46 +0200 Subject: [PATCH 02/79] Fix at suspicion of concurrency problem in surveyingservice --- src/services/SurveyService.java | 89 +++++++++++++++++---------------- 1 file changed, 46 insertions(+), 43 deletions(-) diff --git a/src/services/SurveyService.java b/src/services/SurveyService.java index 1f14fe8d..333db3f7 100644 --- a/src/services/SurveyService.java +++ b/src/services/SurveyService.java @@ -86,48 +86,47 @@ public class SurveyService implements INetworkDispatch { } public void ServiceProcessing(){ - // All tools sampling - SurveyTool removeTool=null; - for (SurveyTool surveyTool : activeSurveyTools){ - if (surveyTool.getCurrentlySurveying()){ - // Check if survey process has finished - if (System.currentTimeMillis()>surveyTool.getLastSurveyTime()+3000){ - removeTool = surveyTool; - surveyTool.setCurrentlySurveying(false); - surveyTool.sendConstructSurveyMapMessage(); + synchronized(activeSurveyTools){ + // All tools sampling + SurveyTool removeTool=null; + for (SurveyTool surveyTool : activeSurveyTools){ + if (surveyTool.getCurrentlySurveying()){ + // Check if survey process has finished + if (System.currentTimeMillis()>surveyTool.getLastSurveyTime()+3000){ + removeTool = surveyTool; + surveyTool.setCurrentlySurveying(false); + surveyTool.sendConstructSurveyMapMessage(); + } + } + if (surveyTool.getCurrentlySampling()){ + // Check if sampling process has finished + if ((System.currentTimeMillis()>surveyTool.getLastSampleTime()+3000) && !surveyTool.getCurrentlyCoolingDown()){ + surveyTool.setCurrentlyCoolingDown(true); + // Update inventory + handleSamplingStages(surveyTool); + + } + // Check if sampling recovery is over + long sampleRecoveryTime = surveyTool.getRecoveryTime(); + if (System.currentTimeMillis()>surveyTool.getLastSampleTime()+sampleRecoveryTime && ! surveyTool.isExceptionalState()){ + // kick off another sampling attempt + surveyTool.setCurrentlyCoolingDown(false); + continueSampling(surveyTool); + } + if (surveyTool.getUser().getPosture()!=1){ + surveyTool.setExceptionalState(false); + surveyTool.setCurrentlySampling(false); + removeTool = surveyTool; + if (surveyTool.getUser().getPosture()==0) + surveyTool.getUser().sendSystemMessage("You stand up", (byte) 0); + + surveyTool.getUser().sendSystemMessage("@survey:sample_cancel", (byte) 0); + } } } - if (surveyTool.getCurrentlySampling()){ - // Check if sampling process has finished - if ((System.currentTimeMillis()>surveyTool.getLastSampleTime()+3000) && !surveyTool.getCurrentlyCoolingDown()){ - surveyTool.setCurrentlyCoolingDown(true); - // Update inventory - handleSamplingStages(surveyTool); - - } - // Check if sampling recovery is over - long sampleRecoveryTime = surveyTool.getRecoveryTime(); - if (System.currentTimeMillis()>surveyTool.getLastSampleTime()+sampleRecoveryTime && ! surveyTool.isExceptionalState()){ - // kick off another sampling attempt - surveyTool.setCurrentlyCoolingDown(false); - continueSampling(surveyTool); - } - if (surveyTool.getUser().getPosture()!=1){ - surveyTool.setExceptionalState(false); - surveyTool.setCurrentlySampling(false); - removeTool = surveyTool; - if (surveyTool.getUser().getPosture()==0) - surveyTool.getUser().sendSystemMessage("You stand up", (byte) 0); - - surveyTool.getUser().sendSystemMessage("@survey:sample_cancel", (byte) 0); - } - } - } - if (removeTool!=null) - activeSurveyTools.remove(removeTool); // remove after notification - - - + if (removeTool!=null) + activeSurveyTools.remove(removeTool); // remove after notification + } } public void handleSamplingStages(SurveyTool surveyTool){ @@ -567,8 +566,10 @@ public class SurveyService implements INetworkDispatch { } public void addActiveSurveyTool(SurveyTool tool){ - if (! activeSurveyTools.contains(tool)) - activeSurveyTools.add(tool); + synchronized(activeSurveyTools){ + if (! activeSurveyTools.contains(tool)) + activeSurveyTools.add(tool); + } } public Vector getActiveSurveyTools(){ @@ -576,7 +577,9 @@ public class SurveyService implements INetworkDispatch { } public void removeActiveSurveyTool(SurveyTool surveyTool){ - activeSurveyTools.remove(surveyTool); + synchronized(activeSurveyTools){ + activeSurveyTools.remove(surveyTool); + } } public boolean toolIsInList(SurveyTool surveyTool){ From 01fedd5cdbaa4567b25b2e95d41848af1c0bfff4 Mon Sep 17 00:00:00 2001 From: Bronco69 Date: Mon, 7 Apr 2014 03:18:46 +0200 Subject: [PATCH 03/79] fixes in Jedi expertise multi expertise commands fixed --- .../expertise_fs_general_force_shockwave_1.py | 23 ++++++++----------- .../expertise_fs_path_dark_lightning_1.py | 18 ++++++++++++++- .../expertise_fs_path_force_choke_1.py | 18 ++++++++++++++- .../expertise_fs_path_force_drain_1.py | 15 +++++++++++- .../expertise_fs_path_maelstrom_1.py | 15 +++++++++++- .../expertise_fs_path_saber_reflect_1.py | 4 ++-- 6 files changed, 74 insertions(+), 19 deletions(-) diff --git a/scripts/expertise/expertise_fs_general_force_shockwave_1.py b/scripts/expertise/expertise_fs_general_force_shockwave_1.py index bd222493..a17dbe47 100644 --- a/scripts/expertise/expertise_fs_general_force_shockwave_1.py +++ b/scripts/expertise/expertise_fs_general_force_shockwave_1.py @@ -2,24 +2,21 @@ import sys def addAbilities(core, actor, player): if actor.getLevel() >= 26: - actor.addAbility("fs_ae_dm_cc_1") + actor.addAbility("fs_dm_cc_crit_1") if actor.getLevel() >= 34: - actor.addAbility("fs_ae_dm_cc_2") + actor.addAbility("fs_dm_cc_crit_2") if actor.getLevel() >= 48: - actor.addAbility("fs_ae_dm_cc_3") + actor.addAbility("fs_dm_cc_crit_3") if actor.getLevel() >= 62: - actor.addAbility("fs_ae_dm_cc_4") + actor.addAbility("fs_dm_cc_crit_4") if actor.getLevel() >= 76: - actor.addAbility("fs_ae_dm_cc_5") - if actor.getLevel() >= 90: - actor.addAbility("fs_ae_dm_cc_6") + actor.addAbility("fs_dm_cc_crit_5") return def removeAbilities(core, actor, player): - actor.removeAbility("fs_ae_dm_cc_1") - actor.removeAbility("fs_ae_dm_cc_2") - actor.removeAbility("fs_ae_dm_cc_3") - actor.removeAbility("fs_ae_dm_cc_4") - actor.removeAbility("fs_ae_dm_cc_5") - actor.removeAbility("fs_ae_dm_cc_6") + actor.removeAbility("fs_dm_cc_crit_1") + actor.removeAbility("fs_dm_cc_crit_2") + actor.removeAbility("fs_dm_cc_crit_3") + actor.removeAbility("fs_dm_cc_crit_4") + actor.removeAbility("fs_dm_cc_crit_5") return diff --git a/scripts/expertise/expertise_fs_path_dark_lightning_1.py b/scripts/expertise/expertise_fs_path_dark_lightning_1.py index 0e8503fd..bd222493 100644 --- a/scripts/expertise/expertise_fs_path_dark_lightning_1.py +++ b/scripts/expertise/expertise_fs_path_dark_lightning_1.py @@ -1,9 +1,25 @@ import sys def addAbilities(core, actor, player): - actor.addAbility("fs_ae_dm_cc_1") + if actor.getLevel() >= 26: + actor.addAbility("fs_ae_dm_cc_1") + if actor.getLevel() >= 34: + actor.addAbility("fs_ae_dm_cc_2") + if actor.getLevel() >= 48: + actor.addAbility("fs_ae_dm_cc_3") + if actor.getLevel() >= 62: + actor.addAbility("fs_ae_dm_cc_4") + if actor.getLevel() >= 76: + actor.addAbility("fs_ae_dm_cc_5") + if actor.getLevel() >= 90: + actor.addAbility("fs_ae_dm_cc_6") return def removeAbilities(core, actor, player): actor.removeAbility("fs_ae_dm_cc_1") + actor.removeAbility("fs_ae_dm_cc_2") + actor.removeAbility("fs_ae_dm_cc_3") + actor.removeAbility("fs_ae_dm_cc_4") + actor.removeAbility("fs_ae_dm_cc_5") + actor.removeAbility("fs_ae_dm_cc_6") return diff --git a/scripts/expertise/expertise_fs_path_force_choke_1.py b/scripts/expertise/expertise_fs_path_force_choke_1.py index 7ceb9e53..ad9a5d82 100644 --- a/scripts/expertise/expertise_fs_path_force_choke_1.py +++ b/scripts/expertise/expertise_fs_path_force_choke_1.py @@ -1,9 +1,25 @@ import sys def addAbilities(core, actor, player): - actor.addAbility("fs_dm_cc_1") + if actor.getLevel() >= 26: + actor.addAbility("fs_dm_cc_1") + if actor.getLevel() >= 34: + actor.addAbility("fs_dm_cc_2") + if actor.getLevel() >= 48: + actor.addAbility("fs_dm_cc_3") + if actor.getLevel() >= 62: + actor.addAbility("fs_dm_cc_4") + if actor.getLevel() >= 76: + actor.addAbility("fs_dm_cc_5") + if actor.getLevel() >= 90: + actor.addAbility("fs_dm_cc_6") return def removeAbilities(core, actor, player): actor.removeAbility("fs_dm_cc_1") + actor.removeAbility("fs_dm_cc_2") + actor.removeAbility("fs_dm_cc_3") + actor.removeAbility("fs_dm_cc_4") + actor.removeAbility("fs_dm_cc_5") + actor.removeAbility("fs_dm_cc_6") return diff --git a/scripts/expertise/expertise_fs_path_force_drain_1.py b/scripts/expertise/expertise_fs_path_force_drain_1.py index 1ec21f58..6d310e3a 100644 --- a/scripts/expertise/expertise_fs_path_force_drain_1.py +++ b/scripts/expertise/expertise_fs_path_force_drain_1.py @@ -1,9 +1,22 @@ import sys def addAbilities(core, actor, player): - actor.addAbility("fs_drain_1") + if actor.getLevel() >= 26: + actor.addAbility("fs_drain_1") + if actor.getLevel() >= 34: + actor.addAbility("fs_drain_2") + if actor.getLevel() >= 48: + actor.addAbility("fs_drain_3") + if actor.getLevel() >= 62: + actor.addAbility("fs_drain_4") + if actor.getLevel() >= 76: + actor.addAbility("fs_drain_5") return def removeAbilities(core, actor, player): actor.removeAbility("fs_drain_1") + actor.removeAbility("fs_drain_2") + actor.removeAbility("fs_drain_3") + actor.removeAbility("fs_drain_4") + actor.removeAbility("fs_drain_5") return diff --git a/scripts/expertise/expertise_fs_path_maelstrom_1.py b/scripts/expertise/expertise_fs_path_maelstrom_1.py index 3fbdb051..84a05ef5 100644 --- a/scripts/expertise/expertise_fs_path_maelstrom_1.py +++ b/scripts/expertise/expertise_fs_path_maelstrom_1.py @@ -1,9 +1,22 @@ import sys def addAbilities(core, actor, player): - actor.addAbility("fs_maelstrom_1") + if actor.getLevel() >= 26: + actor.addAbility("fs_maelstrom_1") + if actor.getLevel() >= 34: + actor.addAbility("fs_maelstrom_2") + if actor.getLevel() >= 48: + actor.addAbility("fs_maelstrom_3") + if actor.getLevel() >= 62: + actor.addAbility("fs_maelstrom_4") + if actor.getLevel() >= 76: + actor.addAbility("fs_maelstrom_5") return def removeAbilities(core, actor, player): actor.removeAbility("fs_maelstrom_1") + actor.removeAbility("fs_maelstrom_2") + actor.removeAbility("fs_maelstrom_3") + actor.removeAbility("fs_maelstrom_4") + actor.removeAbility("fs_maelstrom_5") return diff --git a/scripts/expertise/expertise_fs_path_saber_reflect_1.py b/scripts/expertise/expertise_fs_path_saber_reflect_1.py index ff019b2d..8a78f62b 100644 --- a/scripts/expertise/expertise_fs_path_saber_reflect_1.py +++ b/scripts/expertise/expertise_fs_path_saber_reflect_1.py @@ -1,9 +1,9 @@ import sys def addAbilities(core, actor, player): - actor.addAbility("fs_saber_reflect_buff") + actor.addAbility("fs_saber_reflect") return def removeAbilities(core, actor, player): - actor.removeAbility("fs_saber_reflect_buff") + actor.removeAbility("fs_saber_reflect") return From 5516a557623d4a042629a917458bdd2ad1ea6265 Mon Sep 17 00:00:00 2001 From: Bronco69 Date: Mon, 7 Apr 2014 04:25:56 +0200 Subject: [PATCH 04/79] fix in Medic expertise realized that the health buff is linked to the stamina box in expertise http://i.imgur.com/hW0L0zp.jpg ive chosen CL48 for mark 2 because you get initially mark 1 at CL48 too. --- .../expertise/expertise_me_enhancement_specialist_1.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/scripts/expertise/expertise_me_enhancement_specialist_1.py b/scripts/expertise/expertise_me_enhancement_specialist_1.py index 4c9429e5..ebf28d79 100644 --- a/scripts/expertise/expertise_me_enhancement_specialist_1.py +++ b/scripts/expertise/expertise_me_enhancement_specialist_1.py @@ -7,10 +7,18 @@ def addAbilities(core, actor, player): actor.addAbility("me_enhance_action_2") if actor.getLevel() >= 62: actor.addAbility("me_enhance_action_3") + + if actor.getLevel() >= 48: + actor.addAbility("me_buff_health_2") + if actor.getLevel() >= 76: + actor.addAbility("me_buff_health_3") return def removeAbilities(core, actor, player): actor.removeAbility("me_enhance_action_1") actor.removeAbility("me_enhance_action_2") actor.removeAbility("me_enhance_action_3") + + actor.removeAbility("me_buff_health_2") + actor.removeAbility("me_buff_health_3") return From 0bf30444fcd50c7ab791214509874e5c6259f5b8 Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 04:02:52 +0100 Subject: [PATCH 05/79] Fixed null errors --- src/services/command/CommandService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 7e395b55..9e8ce4ed 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -485,9 +485,9 @@ public class CommandService implements INetworkDispatch { } - @Deprecated public BaseSWGCommand registerCommand(String name) { return null; } - @Deprecated public CombatCommand registerCombatCommand(String name) { return null; } - @Deprecated public BaseSWGCommand registerGmCommand(String name) { return null; } - @Deprecated public void registerAlias(String name, String target) { } + public BaseSWGCommand registerCommand(String name) { return getCommandByName(name); } + public CombatCommand registerCombatCommand(String name) { return getCommandByName(name); } + public BaseSWGCommand registerGmCommand(String name) { return getCommandByName(name); } + public void registerAlias(String name, String target) { } } From 8398a2dc56c1279c79dac2425bf859e66a1c51a1 Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 04:15:53 +0100 Subject: [PATCH 06/79] Cooldowns only added if they are more than a 1 sec It's probably not worth it otherwise. --- src/services/command/CommandService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 9e8ce4ed..9884af7a 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -308,7 +308,9 @@ public class CommandService implements INetworkDispatch { } public void processCommand(CreatureObject actor, SWGObject target, BaseSWGCommand command, int actionCounter, String commandArgs) { - actor.addCooldown(command.getCooldownGroup(), command.getCooldown()); + if (command.getCooldown() > (float) 1) { + actor.addCooldown(command.getCooldownGroup(), command.getCooldown()); + } if (command instanceof CombatCommand) { processCombatCommand(actor, target, (CombatCommand) command, actionCounter, commandArgs); From 131841520bf4f1497f4fabcf1d9386a142ced354 Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 04:21:32 +0100 Subject: [PATCH 07/79] Fixed a few things --- src/services/command/CommandService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 9884af7a..f12ddf31 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -285,8 +285,8 @@ public class CommandService implements INetworkDispatch { if (visitor.getObject(i, 0) != null) { String commandName = ((String) visitor.getObject(i, 0)).toLowerCase(); - if (commandName.equalsIgnoreCase(name) { - boolean combatCommand = ((String) (visitor.getObject(i, 7)).length() > 0); + if (commandName.equalsIgnoreCase(name)) { + boolean combatCommand = (((String) (visitor.getObject(i, 7)).length() > 0); if (combatCommand) { CombatCommand command = new CombatCommand(commandName); From 9dded0943277f0c67f552026ebd00508f7a7fd9e Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 04:27:42 +0100 Subject: [PATCH 08/79] Fixed a few more things --- src/services/command/CommandService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index f12ddf31..04ebf1b0 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -248,7 +248,7 @@ public class CommandService implements INetworkDispatch { String name = ((String) visitor.getObject(i, 0)).toLowerCase(); if (CRC.StringtoCRC(name) == CRC) { - boolean combatCommand = ((String) (visitor.getObject(i, 7)).length() > 0); + boolean combatCommand = (((String) visitor.getObject(i, 7)).length() > 0); if (combatCommand) { CombatCommand command = new CombatCommand(name.toLowerCase()); @@ -286,7 +286,7 @@ public class CommandService implements INetworkDispatch { String commandName = ((String) visitor.getObject(i, 0)).toLowerCase(); if (commandName.equalsIgnoreCase(name)) { - boolean combatCommand = (((String) (visitor.getObject(i, 7)).length() > 0); + boolean combatCommand = (((String) visitor.getObject(i, 7)).length() > 0); if (combatCommand) { CombatCommand command = new CombatCommand(commandName); From b7eef0cf357cec9f9b1113137ea83711fb66a409 Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 04:32:03 +0100 Subject: [PATCH 09/79] Fixed duplicate maxRangeToTargets --- src/services/command/BaseSWGCommand.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/services/command/BaseSWGCommand.java b/src/services/command/BaseSWGCommand.java index 07e55e19..69d1a9cf 100644 --- a/src/services/command/BaseSWGCommand.java +++ b/src/services/command/BaseSWGCommand.java @@ -33,7 +33,6 @@ public class BaseSWGCommand implements Cloneable { private String commandName; private String clientEffectSelf; private String clientEffectTarget; - private int maxRangeToTarget; private int commandCRC; private boolean isGmCommand = false; private String characterAbility; @@ -177,14 +176,6 @@ public class BaseSWGCommand implements Cloneable { this.clientEffectTarget = clientEffectTarget; } - public int getMaxRangeToTarget() { - return maxRangeToTarget; - } - - public void setMaxRangeToTarget(int maxRangeToTarget) { - this.maxRangeToTarget = maxRangeToTarget; - } - public int getCommandCRC() { return commandCRC; } From 4aa3b7058ab86177afed7a2aa42c54c2dfa09f79 Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 04:38:03 +0100 Subject: [PATCH 10/79] Fixed byte adding error in command reading --- src/services/command/BaseSWGCommand.java | 28 ++++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/services/command/BaseSWGCommand.java b/src/services/command/BaseSWGCommand.java index 69d1a9cf..292e8be6 100644 --- a/src/services/command/BaseSWGCommand.java +++ b/src/services/command/BaseSWGCommand.java @@ -85,20 +85,20 @@ public class BaseSWGCommand implements Cloneable { executeTime = (Float) visitor2.getObject(i, 87); cooldown = (Float) visitor2.getObject(i, 88); - if (!((Boolean) visitor2.getObject(8))) invalidPostures.add(0B); - if (!((Boolean) visitor2.getObject(9))) invalidPostures.add(3B); - if (!((Boolean) visitor2.getObject(16))) invalidPostures.add(2B); - if (!((Boolean) visitor2.getObject(19))) invalidPostures.add(5B); - if (!((Boolean) visitor2.getObject(21))) invalidPostures.add(6B); - if (!((Boolean) visitor2.getObject(22))) invalidPostures.add(7B); - if (!((Boolean) visitor2.getObject(23))) invalidPostures.add(8B); - if (!((Boolean) visitor2.getObject(24))) invalidPostures.add(9B); - if (!((Boolean) visitor2.getObject(25))) invalidPostures.add(10B); - if (!((Boolean) visitor2.getObject(26))) invalidPostures.add(11B); - if (!((Boolean) visitor2.getObject(27))) invalidPostures.add(12B); - if (!((Boolean) visitor2.getObject(28))) invalidPostures.add(13B); - if (!((Boolean) visitor2.getObject(29))) invalidPostures.add(14B); - if (!((Boolean) visitor2.getObject(30))) invalidPostures.add(4B); + if (!((Boolean) visitor2.getObject(8))) invalidPostures.add((byte) 0); + if (!((Boolean) visitor2.getObject(9))) invalidPostures.add((byte) 3); + if (!((Boolean) visitor2.getObject(16))) invalidPostures.add((byte) 2); + if (!((Boolean) visitor2.getObject(19))) invalidPostures.add((byte) 5); + if (!((Boolean) visitor2.getObject(21))) invalidPostures.add((byte) 6); + if (!((Boolean) visitor2.getObject(22))) invalidPostures.add((byte) 7); + if (!((Boolean) visitor2.getObject(23))) invalidPostures.add((byte) 8); + if (!((Boolean) visitor2.getObject(24))) invalidPostures.add((byte) 9); + if (!((Boolean) visitor2.getObject(25))) invalidPostures.add((byte) 10); + if (!((Boolean) visitor2.getObject(26))) invalidPostures.add((byte) 11); + if (!((Boolean) visitor2.getObject(27))) invalidPostures.add((byte) 12); + if (!((Boolean) visitor2.getObject(28))) invalidPostures.add((byte) 13); + if (!((Boolean) visitor2.getObject(29))) invalidPostures.add((byte) 14); + if (!((Boolean) visitor2.getObject(30))) invalidPostures.add((byte) 4); if (!((Boolean) visitor2.getObject(32))) invalidStates.add(1L); if (!((Boolean) visitor2.getObject(33))) invalidStates.add(2L); From 8cbf80b2ce9d9fc234a2192f6709ff910adc2bae Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 04:45:59 +0100 Subject: [PATCH 11/79] Fixed a few more errors --- src/services/command/BaseSWGCommand.java | 120 +++++++++++------------ 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/src/services/command/BaseSWGCommand.java b/src/services/command/BaseSWGCommand.java index 292e8be6..4c0766fe 100644 --- a/src/services/command/BaseSWGCommand.java +++ b/src/services/command/BaseSWGCommand.java @@ -51,9 +51,9 @@ public class BaseSWGCommand implements Cloneable { private float cooldown; private float executeTime; private float warmupTime; - //private long[] invalidLocomotions; // Not tracked anywhere - private byte[] invalidPostures; - private long[] invalidStates; + //private Long[] invalidLocomotions; // Not tracked anywhere + private Byte[] invalidPostures; + private Long[] invalidStates; public BaseSWGCommand(String commandName) { setCommandName(commandName); @@ -85,63 +85,63 @@ public class BaseSWGCommand implements Cloneable { executeTime = (Float) visitor2.getObject(i, 87); cooldown = (Float) visitor2.getObject(i, 88); - if (!((Boolean) visitor2.getObject(8))) invalidPostures.add((byte) 0); - if (!((Boolean) visitor2.getObject(9))) invalidPostures.add((byte) 3); - if (!((Boolean) visitor2.getObject(16))) invalidPostures.add((byte) 2); - if (!((Boolean) visitor2.getObject(19))) invalidPostures.add((byte) 5); - if (!((Boolean) visitor2.getObject(21))) invalidPostures.add((byte) 6); - if (!((Boolean) visitor2.getObject(22))) invalidPostures.add((byte) 7); - if (!((Boolean) visitor2.getObject(23))) invalidPostures.add((byte) 8); - if (!((Boolean) visitor2.getObject(24))) invalidPostures.add((byte) 9); - if (!((Boolean) visitor2.getObject(25))) invalidPostures.add((byte) 10); - if (!((Boolean) visitor2.getObject(26))) invalidPostures.add((byte) 11); - if (!((Boolean) visitor2.getObject(27))) invalidPostures.add((byte) 12); - if (!((Boolean) visitor2.getObject(28))) invalidPostures.add((byte) 13); - if (!((Boolean) visitor2.getObject(29))) invalidPostures.add((byte) 14); - if (!((Boolean) visitor2.getObject(30))) invalidPostures.add((byte) 4); + if (!((Boolean) visitor2.getObject(i, 8))) invalidPostures.add((byte) 0); + if (!((Boolean) visitor2.getObject(i, 9))) invalidPostures.add((byte) 3); + if (!((Boolean) visitor2.getObject(i, 16))) invalidPostures.add((byte) 2); + if (!((Boolean) visitor2.getObject(i, 19))) invalidPostures.add((byte) 5); + if (!((Boolean) visitor2.getObject(i, 21))) invalidPostures.add((byte) 6); + if (!((Boolean) visitor2.getObject(i, 22))) invalidPostures.add((byte) 7); + if (!((Boolean) visitor2.getObject(i, 23))) invalidPostures.add((byte) 8); + if (!((Boolean) visitor2.getObject(i, 24))) invalidPostures.add((byte) 9); + if (!((Boolean) visitor2.getObject(i, 25))) invalidPostures.add((byte) 10); + if (!((Boolean) visitor2.getObject(i, 26))) invalidPostures.add((byte) 11); + if (!((Boolean) visitor2.getObject(i, 27))) invalidPostures.add((byte) 12); + if (!((Boolean) visitor2.getObject(i, 28))) invalidPostures.add((byte) 13); + if (!((Boolean) visitor2.getObject(i, 29))) invalidPostures.add((byte) 14); + if (!((Boolean) visitor2.getObject(i, 30))) invalidPostures.add((byte) 4); - if (!((Boolean) visitor2.getObject(32))) invalidStates.add(1L); - if (!((Boolean) visitor2.getObject(33))) invalidStates.add(2L); - if (!((Boolean) visitor2.getObject(34))) invalidStates.add(4L); - if (!((Boolean) visitor2.getObject(35))) invalidStates.add(8L); - if (!((Boolean) visitor2.getObject(36))) invalidStates.add(16L); - if (!((Boolean) visitor2.getObject(37))) invalidStates.add(32L); - if (!((Boolean) visitor2.getObject(38))) invalidStates.add(64L); - if (!((Boolean) visitor2.getObject(39))) invalidStates.add(128L); - if (!((Boolean) visitor2.getObject(40))) invalidStates.add(256L); - if (!((Boolean) visitor2.getObject(41))) invalidStates.add(512L); - if (!((Boolean) visitor2.getObject(42))) invalidStates.add(1024L); - if (!((Boolean) visitor2.getObject(43))) invalidStates.add(2048L); - if (!((Boolean) visitor2.getObject(44))) invalidStates.add(4096L); - if (!((Boolean) visitor2.getObject(45))) invalidStates.add(8192L); - if (!((Boolean) visitor2.getObject(46))) invalidStates.add(16384L); - if (!((Boolean) visitor2.getObject(47))) invalidStates.add(32768L); - if (!((Boolean) visitor2.getObject(48))) invalidStates.add(65536L); - if (!((Boolean) visitor2.getObject(49))) invalidStates.add(131072L); - if (!((Boolean) visitor2.getObject(50))) invalidStates.add(262144L); - if (!((Boolean) visitor2.getObject(51))) invalidStates.add(524288L); - if (!((Boolean) visitor2.getObject(52))) invalidStates.add(1048576L); - if (!((Boolean) visitor2.getObject(53))) invalidStates.add(2097152L); - if (!((Boolean) visitor2.getObject(54))) invalidStates.add(4194304L); - if (!((Boolean) visitor2.getObject(55))) invalidStates.add(8388608L); - if (!((Boolean) visitor2.getObject(56))) invalidStates.add(16777216L); - if (!((Boolean) visitor2.getObject(57))) invalidStates.add(33554432L); - if (!((Boolean) visitor2.getObject(58))) invalidStates.add(67108864L); - if (!((Boolean) visitor2.getObject(59))) invalidStates.add(134217728L); - if (!((Boolean) visitor2.getObject(60))) invalidStates.add(268435456L); - if (!((Boolean) visitor2.getObject(61))) invalidStates.add(536870912L); - if (!((Boolean) visitor2.getObject(62))) invalidStates.add(1073741824L); - if (!((Boolean) visitor2.getObject(63))) invalidStates.add(2147483648L); - if (!((Boolean) visitor2.getObject(64))) invalidStates.add(4294967296L); - if (!((Boolean) visitor2.getObject(65))) invalidStates.add(8589934592L); - if (!((Boolean) visitor2.getObject(66))) invalidStates.add(17179869184L); - if (!((Boolean) visitor2.getObject(67))) invalidStates.add(34359738368L); - if (!((Boolean) visitor2.getObject(68))) invalidStates.add(68719476736L); - if (!((Boolean) visitor2.getObject(69))) invalidStates.add(137438953472L); - if (!((Boolean) visitor2.getObject(70))) invalidStates.add(274877906944L); + if (!((Boolean) visitor2.getObject(i, 32))) invalidStates.add(1L); + if (!((Boolean) visitor2.getObject(i, 33))) invalidStates.add(2L); + if (!((Boolean) visitor2.getObject(i, 34))) invalidStates.add(4L); + if (!((Boolean) visitor2.getObject(i, 35))) invalidStates.add(8L); + if (!((Boolean) visitor2.getObject(i, 36))) invalidStates.add(16L); + if (!((Boolean) visitor2.getObject(i, 37))) invalidStates.add(32L); + if (!((Boolean) visitor2.getObject(i, 38))) invalidStates.add(64L); + if (!((Boolean) visitor2.getObject(i, 39))) invalidStates.add(128L); + if (!((Boolean) visitor2.getObject(i, 40))) invalidStates.add(256L); + if (!((Boolean) visitor2.getObject(i, 41))) invalidStates.add(512L); + if (!((Boolean) visitor2.getObject(i, 42))) invalidStates.add(1024L); + if (!((Boolean) visitor2.getObject(i, 43))) invalidStates.add(2048L); + if (!((Boolean) visitor2.getObject(i, 44))) invalidStates.add(4096L); + if (!((Boolean) visitor2.getObject(i, 45))) invalidStates.add(8192L); + if (!((Boolean) visitor2.getObject(i, 46))) invalidStates.add(16384L); + if (!((Boolean) visitor2.getObject(i, 47))) invalidStates.add(32768L); + if (!((Boolean) visitor2.getObject(i, 48))) invalidStates.add(65536L); + if (!((Boolean) visitor2.getObject(i, 49))) invalidStates.add(131072L); + if (!((Boolean) visitor2.getObject(i, 50))) invalidStates.add(262144L); + if (!((Boolean) visitor2.getObject(i, 51))) invalidStates.add(524288L); + if (!((Boolean) visitor2.getObject(i, 52))) invalidStates.add(1048576L); + if (!((Boolean) visitor2.getObject(i, 53))) invalidStates.add(2097152L); + if (!((Boolean) visitor2.getObject(i, 54))) invalidStates.add(4194304L); + if (!((Boolean) visitor2.getObject(i, 55))) invalidStates.add(8388608L); + if (!((Boolean) visitor2.getObject(i, 56))) invalidStates.add(16777216L); + if (!((Boolean) visitor2.getObject(i, 57))) invalidStates.add(33554432L); + if (!((Boolean) visitor2.getObject(i, 58))) invalidStates.add(67108864L); + if (!((Boolean) visitor2.getObject(i, 59))) invalidStates.add(134217728L); + if (!((Boolean) visitor2.getObject(i, 60))) invalidStates.add(268435456L); + if (!((Boolean) visitor2.getObject(i, 61))) invalidStates.add(536870912L); + if (!((Boolean) visitor2.getObject(i, 62))) invalidStates.add(1073741824L); + if (!((Boolean) visitor2.getObject(i, 63))) invalidStates.add(2147483648L); + if (!((Boolean) visitor2.getObject(i, 64))) invalidStates.add(4294967296L); + if (!((Boolean) visitor2.getObject(i, 65))) invalidStates.add(8589934592L); + if (!((Boolean) visitor2.getObject(i, 66))) invalidStates.add(17179869184L); + if (!((Boolean) visitor2.getObject(i, 67))) invalidStates.add(34359738368L); + if (!((Boolean) visitor2.getObject(i, 68))) invalidStates.add(68719476736L); + if (!((Boolean) visitor2.getObject(i, 69))) invalidStates.add(137438953472L); + if (!((Boolean) visitor2.getObject(i, 70))) invalidStates.add(274877906944L); - this.invalidPostures = (byte[]) invalidPostures.toArray(); - this.invalidStates = (long[]) invalidStates.toArray(); + this.invalidPostures = (Byte[]) invalidPostures.toArray(); + this.invalidStates = (Long[]) invalidStates.toArray(); break; } @@ -204,11 +204,11 @@ public class BaseSWGCommand implements Cloneable { this.characterAbility = characterAbility; } - public byte[] getInvalidPostures() { + public Byte[] getInvalidPostures() { return invalidPostures; } - public long[] getInvalidStates() { + public Long[] getInvalidStates() { return invalidStates; } From 78b6b52740324b06890ea6289b80eeebcbc684ba Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 04:53:38 +0100 Subject: [PATCH 12/79] Fixed cast exception (maxRangeToTarget is a float) --- src/services/command/BaseSWGCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/command/BaseSWGCommand.java b/src/services/command/BaseSWGCommand.java index 4c0766fe..bb799265 100644 --- a/src/services/command/BaseSWGCommand.java +++ b/src/services/command/BaseSWGCommand.java @@ -74,7 +74,7 @@ public class BaseSWGCommand implements Cloneable { callOnTarget = (Boolean) visitor2.getObject(i, 76); commandGroup = (Integer) visitor2.getObject(i, 77); disabled = (Boolean) visitor2.getObject(i, 78); - maxRangeToTarget = (Integer) visitor2.getObject(i, 79); + maxRangeToTarget = (int) ((Float) visitor2.getObject(i, 79)); godLevel = (Integer) visitor2.getObject(i, 80); displayGroup = (Integer) visitor2.getObject(i, 81); combatCommand = (Boolean) visitor2.getObject(i, 82); From e3cf93fbb19c1c8f457d15246e59e093ea63700f Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 05:02:39 +0100 Subject: [PATCH 13/79] Fixed float error properly --- src/services/command/BaseSWGCommand.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/services/command/BaseSWGCommand.java b/src/services/command/BaseSWGCommand.java index bb799265..b44dd319 100644 --- a/src/services/command/BaseSWGCommand.java +++ b/src/services/command/BaseSWGCommand.java @@ -41,7 +41,7 @@ public class BaseSWGCommand implements Cloneable { private boolean callOnTarget = false; private int commandGroup; private boolean disabled = true; - private int maxRangeToTarget; + private float maxRangeToTarget; private int godLevel; private int displayGroup; private boolean combatCommand = false; @@ -74,7 +74,7 @@ public class BaseSWGCommand implements Cloneable { callOnTarget = (Boolean) visitor2.getObject(i, 76); commandGroup = (Integer) visitor2.getObject(i, 77); disabled = (Boolean) visitor2.getObject(i, 78); - maxRangeToTarget = (int) ((Float) visitor2.getObject(i, 79)); + maxRangeToTarget = (Float) visitor2.getObject(i, 79); godLevel = (Integer) visitor2.getObject(i, 80); displayGroup = (Integer) visitor2.getObject(i, 81); combatCommand = (Boolean) visitor2.getObject(i, 82); @@ -252,11 +252,11 @@ public class BaseSWGCommand implements Cloneable { this.disabled = disabled; } - public int getMaxRangeToTarget() { + public float getMaxRangeToTarget() { return maxRangeToTarget; } - public void setMaxRangeToTarget(int maxRangeToTarget) { + public void setMaxRangeToTarget(float maxRangeToTarget) { this.maxRangeToTarget = maxRangeToTarget; } From 78d0f90ee7faa6d1ff02450dab0b2f838248f13b Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 05:12:43 +0100 Subject: [PATCH 14/79] Fixed invalid postures/states problem --- src/services/command/BaseSWGCommand.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/services/command/BaseSWGCommand.java b/src/services/command/BaseSWGCommand.java index b44dd319..6eee3c22 100644 --- a/src/services/command/BaseSWGCommand.java +++ b/src/services/command/BaseSWGCommand.java @@ -140,8 +140,8 @@ public class BaseSWGCommand implements Cloneable { if (!((Boolean) visitor2.getObject(i, 69))) invalidStates.add(137438953472L); if (!((Boolean) visitor2.getObject(i, 70))) invalidStates.add(274877906944L); - this.invalidPostures = (Byte[]) invalidPostures.toArray(); - this.invalidStates = (Long[]) invalidStates.toArray(); + this.invalidPostures = invalidPostures.toArray(new Byte[] { }); + this.invalidStates = invalidStates.toArray(new Long[] { }); break; } From 3ff8d7b9407961f614808a1788724a9f2db0af02 Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 05:22:44 +0100 Subject: [PATCH 15/79] Fixed issue with returning combat commands --- src/services/command/CommandService.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 04ebf1b0..1d5675e9 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -487,8 +487,17 @@ public class CommandService implements INetworkDispatch { } + public CombatCommand registerCombatCommand(String name) { + BaseSWGCommand command = getCommandByName(name); + + if (command instanceof CombatCommand) { + return (CombatCommand) command; + } + + return null; + } + public BaseSWGCommand registerCommand(String name) { return getCommandByName(name); } - public CombatCommand registerCombatCommand(String name) { return getCommandByName(name); } public BaseSWGCommand registerGmCommand(String name) { return getCommandByName(name); } public void registerAlias(String name, String target) { } From 144e483769a8772c99a8047c49e668b42af51307 Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 05:54:20 +0100 Subject: [PATCH 16/79] Few command improvements --- src/services/command/CommandService.java | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 1d5675e9..3fe05618 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -248,9 +248,10 @@ public class CommandService implements INetworkDispatch { String name = ((String) visitor.getObject(i, 0)).toLowerCase(); if (CRC.StringtoCRC(name) == CRC) { - boolean combatCommand = (((String) visitor.getObject(i, 7)).length() > 0); + boolean hasCharacterAbility = (((String) visitor.getObject(i, 7)).length() > 0); + boolean isCombatCommand = (Boolean) visitor.getObject(i, 82); - if (combatCommand) { + if (hasCharacterAbility || isCombatCommand) { CombatCommand command = new CombatCommand(name.toLowerCase()); commandLookup.add(command); return command; @@ -272,6 +273,8 @@ public class CommandService implements INetworkDispatch { public BaseSWGCommand getCommandByName(String name) { Vector commands = new Vector(commandLookup); + name = name.toLowerCase(); + for (BaseSWGCommand command : commands) { if (command.getCommandName().equalsIgnoreCase(name)) { return command; @@ -286,9 +289,10 @@ public class CommandService implements INetworkDispatch { String commandName = ((String) visitor.getObject(i, 0)).toLowerCase(); if (commandName.equalsIgnoreCase(name)) { - boolean combatCommand = (((String) visitor.getObject(i, 7)).length() > 0); + boolean hasCharacterAbility = (((String) visitor.getObject(i, 7)).length() > 0); + boolean isCombatCommand = (Boolean) visitor.getObject(i, 82); - if (combatCommand) { + if (hasCharacterAbility || isCombatCommand) { CombatCommand command = new CombatCommand(commandName); commandLookup.add(command); return command; @@ -490,8 +494,18 @@ public class CommandService implements INetworkDispatch { public CombatCommand registerCombatCommand(String name) { BaseSWGCommand command = getCommandByName(name); + if (command == null) { + return null; + } + if (command instanceof CombatCommand) { return (CombatCommand) command; + } else { + System.out.println("Warning: Forced to make non-combat command " + name + " a combat command."); + commandLookup.remove(command); + CombatCommand combatCommand = new CombatCommand(name.toLowerCase()); + commandLookup.add(combatCommand); + return combatCommand; } return null; From 4de112037629e944390fa0e0ff14d1948ea1399a Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 06:06:39 +0100 Subject: [PATCH 17/79] Fixed unreachable code --- src/services/command/CommandService.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 3fe05618..ebf769d1 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -507,8 +507,6 @@ public class CommandService implements INetworkDispatch { commandLookup.add(combatCommand); return combatCommand; } - - return null; } public BaseSWGCommand registerCommand(String name) { return getCommandByName(name); } From 51f89dced761bb178e5a2f761ea98baa9ce8d7d0 Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 06:41:32 +0100 Subject: [PATCH 18/79] More command service improvements --- src/services/command/CommandService.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index ebf769d1..729a9f8f 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -88,10 +88,6 @@ public class CommandService implements INetworkDispatch { return false; } - if (target != null && actor.getPosition().getDistance(target.getPosition) > command.getMaxRangeToTarget()) { - return false; - } - WeaponObject weapon = (WeaponObject) core.objectService.getObject(actor.getWeaponId()); if (weapon != null && weapon.getWeaponType() == command.getInvalidWeapon()) { @@ -182,6 +178,10 @@ public class CommandService implements INetworkDispatch { break; } + if (target != null && actor.getPosition().getDistance(target.getPosition) > command.getMaxRangeToTarget()) { + return false; + } + if (command.shouldCallOnTarget()) { if (target == null || !(target instanceof CreatureObject)) { return false; @@ -468,7 +468,7 @@ public class CommandService implements INetworkDispatch { SWGObject target = core.objectService.getObject(commandEnqueue.getTargetID()); - if (!callCommand(actor, command, target, commandEnqueue.getActionCounter(), commandEnqueue.getCommandArguments())) { + if (!callCommand(actor, target, command, commandEnqueue.getActionCounter(), commandEnqueue.getCommandArguments())) { // Call failScriptHook } } From 9b87eb0f597bb311a3150d474feffba5dbdae927 Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 07:19:31 +0100 Subject: [PATCH 19/79] Commands check LOS & distance if correct type --- src/services/command/CommandService.java | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 729a9f8f..f3364e5b 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -118,6 +118,14 @@ public class CommandService implements INetworkDispatch { return false; } + if (target != null && actor.getPosition().getDistance(target.getPosition) > command.getMaxRangeToTarget()) { + return false; + } + + if (!core.simulationService.checkLineOfSight(actor, target)) { + return false; + } + break; case 2: // Self Only if (target == null) { @@ -138,6 +146,10 @@ public class CommandService implements INetworkDispatch { target = actor; } + if (!core.simulationService.checkLineOfSight(actor, target)) { + return false; + } + break; default: break; @@ -159,6 +171,11 @@ public class CommandService implements INetworkDispatch { return false; } + // Without this we could be buffing ally NPCs and such + if (object.getSlottedObject("ghost") == null) { + return; + } + break; case 1: // Enemy Only if (target == null || !(target instanceof TangibleObject)) { @@ -178,10 +195,6 @@ public class CommandService implements INetworkDispatch { break; } - if (target != null && actor.getPosition().getDistance(target.getPosition) > command.getMaxRangeToTarget()) { - return false; - } - if (command.shouldCallOnTarget()) { if (target == null || !(target instanceof CreatureObject)) { return false; From 3bff39bd2e218d80437119a873e63c2163f56f05 Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 09:29:19 +0100 Subject: [PATCH 20/79] Added alias "afk" for "toggleawayfromkeyboard" --- scripts/commands/afk.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 scripts/commands/afk.py diff --git a/scripts/commands/afk.py b/scripts/commands/afk.py new file mode 100644 index 00000000..68670816 --- /dev/null +++ b/scripts/commands/afk.py @@ -0,0 +1,13 @@ +from resources.datatables import PlayerFlags +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + command = core.commandService.getCommandByName("toggleawayfromkeyboard") + + if command: + core.commandService.processCommand(actor, target, command, 0, commandString) + + return From e9f4f39fd0ed8a41fa203d99e7f2adb07359c890 Mon Sep 17 00:00:00 2001 From: Ziggeh Date: Mon, 7 Apr 2014 10:33:12 +0200 Subject: [PATCH 21/79] Commands - Fixed minor variable naming error --- src/services/command/CommandService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index f3364e5b..268b34b2 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -244,11 +244,11 @@ public class CommandService implements INetworkDispatch { core.scriptService.callScript("scripts/commands/", command.getCommandName(), "run", core, actor, target, commandArgs); } - public BaseSWGCommand getCommandByCRC(int CRC) { + public BaseSWGCommand getCommandByCRC(int commandCRC) { Vector commands = new Vector(commandLookup); for (BaseSWGCommand command : commands) { - if (command.getCommandCRC() == CRC) { + if (command.getCommandCRC() == commandCRC) { return command; } } @@ -260,7 +260,7 @@ public class CommandService implements INetworkDispatch { if (visitor.getObject(i, 0) != null) { String name = ((String) visitor.getObject(i, 0)).toLowerCase(); - if (CRC.StringtoCRC(name) == CRC) { + if (CRC.StringtoCRC(name) == commandCRC) { boolean hasCharacterAbility = (((String) visitor.getObject(i, 7)).length() > 0); boolean isCombatCommand = (Boolean) visitor.getObject(i, 82); From 7fae180c9d155e5b512e47cd04c4e369f9eecc5c Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 09:46:12 +0100 Subject: [PATCH 22/79] Add OutOfBand constructor for simpler conv scripts --- src/resources/common/OutOfBand.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/resources/common/OutOfBand.java b/src/resources/common/OutOfBand.java index 63505020..fd86c2dc 100644 --- a/src/resources/common/OutOfBand.java +++ b/src/resources/common/OutOfBand.java @@ -31,6 +31,14 @@ public class OutOfBand { private short count; private Vector prosePackages = new Vector(); + public OutOfBand(ProsePackage prosePackage) { + addProsePackage(prosePackage); + } + + public OutOfBand() { + + } + public void addProsePackage(ProsePackage prosePackage) { prosePackages.add(prosePackage); setCount((short) (getCount() + 1)); @@ -114,6 +122,4 @@ public class OutOfBand { this.prosePackages = prosePackages; } - - } From c99e7c4bff72c6ff149efe7e75446028e7010345 Mon Sep 17 00:00:00 2001 From: Ziggeh Date: Mon, 7 Apr 2014 10:48:33 +0200 Subject: [PATCH 23/79] Revert "Jedi - Fixed Force Throw and Spark" This reverts commit e05a5b4bf548015996b79ea6f52adb55d9cb3bdd. --- scripts/commands/combat/fs_force_spark.py | 11 ----------- src/services/combat/CombatCommands.java | 4 +--- 2 files changed, 1 insertion(+), 14 deletions(-) delete mode 100644 scripts/commands/combat/fs_force_spark.py diff --git a/scripts/commands/combat/fs_force_spark.py b/scripts/commands/combat/fs_force_spark.py deleted file mode 100644 index b3a17b88..00000000 --- a/scripts/commands/combat/fs_force_spark.py +++ /dev/null @@ -1,11 +0,0 @@ -import sys - -def setup(core, actor, target, command): - - command.setBuffNameTarget('') - - return - -def run(core, actor, target, commandString): - return - \ No newline at end of file diff --git a/src/services/combat/CombatCommands.java b/src/services/combat/CombatCommands.java index 17aab1eb..7a66c472 100644 --- a/src/services/combat/CombatCommands.java +++ b/src/services/combat/CombatCommands.java @@ -197,9 +197,7 @@ public class CombatCommands { core.commandService.registerCommand("forcerun"); // Force Run core.commandService.registerCommand("fs_buff_invis_1"); // Force Cloak core.commandService.registerCombatCommand("fs_force_throw_1"); - core.commandService.registerCombatCommand("forceThrow"); - core.commandService.registerCombatCommand("fs_set_heroic_taunt_1"); // Guardian Strike - core.commandService.registerCombatCommand("fs_force_spark"); + core.commandService.registerCommand("forceThrow"); // Commando From 4b11146f782a782a9dd5b43ae05e4124765e15de Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 10:08:41 +0100 Subject: [PATCH 24/79] Added example conversation script Made a simpler script that uses less code, so it's easier to grasp. In most cases there will only be one ProsePackage. Copy-paste friendly. --- scripts/conversation/demo.py | 60 ++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 scripts/conversation/demo.py diff --git a/scripts/conversation/demo.py b/scripts/conversation/demo.py new file mode 100644 index 00000000..31bb59f2 --- /dev/null +++ b/scripts/conversation/demo.py @@ -0,0 +1,60 @@ +from resources.common import ConversationOption +from resources.common import OutOfBand +from resources.common import ProsePackage +from java.util import Vector +import sys + +def startConversation(core, actor, npc): + convSvc = core.conversationService + + convSvc.sendConversationMessage(actor, npc, OutOfBand(ProsePackage('conversation/respecseller', 's_31'))) + + options = Vector() + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller', 's_32')), 0)) + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller', 's_33')), 1)) + convSvc.sendConversationOptions(actor, npc, options, handleFirstScreen) + + return + +def handleFirstScreen(core, actor, npc, selection): + convSvc = core.conversationService + + # TODO: check for prices + + if selection == 0: # respec + convSvc.sendConversationMessage(actor, npc, OutOfBand(ProsePackage('conversation/respecseller', 's_58'))) + + options = Vector() + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller', 's_60')), 0)) + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller', 's_64')), 1)) + convSvc.sendConversationOptions(actor, npc, options, handleRespecScreen) + + if selection == 1: # expertise reset + convSvc.sendConversationMessage(actor, npc, OutOfBand(ProsePackage('conversation/respecseller', 's_35'))) + + options = Vector() + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller', 's_71')), 0)) + options.add(ConversationOption(OutOfBand(ProsePackage('conversation/respecseller', 's_72')), 1)) + convSvc.sendConversationOptions(actor, npc, options, handleResetScreen) + + return + +def handleRespecScreen(core, actor, npc, selection): + if selection == 0: + core.skillService.sendRespecWindow(actor) + + core.conversationService.handleEndConversation(actor, npc) + + return + +def handleResetScreen(core, actor, npc, selection): + if selection == 0: + core.skillService.resetExpertise(actor) + + core.conversationService.handleEndConversation(actor, npc) + + return + +def endConversation(core, actor, npc): + core.conversationService.sendStopConversation(actor, npc, 'conversation/respecseller', 's_38') + return From b03a2d7051fe341b567045c2e08456c31ce74c7a Mon Sep 17 00:00:00 2001 From: Ziggeh Date: Mon, 7 Apr 2014 11:29:19 +0200 Subject: [PATCH 25/79] Commands - Fixed getters and setter for targetType --- src/services/command/BaseSWGCommand.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/services/command/BaseSWGCommand.java b/src/services/command/BaseSWGCommand.java index 6eee3c22..9ac776a1 100644 --- a/src/services/command/BaseSWGCommand.java +++ b/src/services/command/BaseSWGCommand.java @@ -220,12 +220,12 @@ public class BaseSWGCommand implements Cloneable { this.target = target; } - public void getTargetType() { + public int getTargetType() { return targetType; } - public void setTargetType() { - return targetType; + public void setTargetType(int targetType) { + this.targetType = targetType; } public boolean shouldCallOnTarget() { From 9a141802b9e4a5539fe9a6c5bfb555299c6e34f9 Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 10:37:11 +0100 Subject: [PATCH 26/79] Script syntax error --- scripts/conversation/demo.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/conversation/demo.py b/scripts/conversation/demo.py index 31bb59f2..802329db 100644 --- a/scripts/conversation/demo.py +++ b/scripts/conversation/demo.py @@ -17,10 +17,10 @@ def startConversation(core, actor, npc): return def handleFirstScreen(core, actor, npc, selection): - convSvc = core.conversationService - - # TODO: check for prices - + convSvc = core.conversationService + + # TODO: check for prices + if selection == 0: # respec convSvc.sendConversationMessage(actor, npc, OutOfBand(ProsePackage('conversation/respecseller', 's_58'))) From f7bcd6416d05b9ca8461cb74ed0363810c3b3aef Mon Sep 17 00:00:00 2001 From: Levarrishawk Date: Mon, 7 Apr 2014 05:50:25 -0400 Subject: [PATCH 27/79] More unnecessary distractive Content Development --- scripts/static_spawns/kaas.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/scripts/static_spawns/kaas.py b/scripts/static_spawns/kaas.py index 41460025..7bcd17d9 100644 --- a/scripts/static_spawns/kaas.py +++ b/scripts/static_spawns/kaas.py @@ -21,11 +21,24 @@ def addPlanetSpawns(core, planet): stcSvc.spawnObject('object/building/content/aurilia/shared_aurilia_pyramid_hut.iff', 'kaas', long(0), float(-5163.9), float(79.0), float(-2351.6), float(0.71), float(0.71)) stcSvc.spawnObject('object/building/content/aurilia/shared_aurilia_pyramid_hut.iff', 'kaas', long(0), float(-5072.1), float(79.0), float(-2369.6), float(-0.71), float(0.71)) stcSvc.spawnObject('object/building/content/aurilia/shared_aurilia_pyramid_hut.iff', 'kaas', long(0), float(-5072.1), float(79.0), float(-2351.6), float(-0.71), float(0.71)) + stcSvc.spawnObject('object/building/military/shared_outpost_cloning_facility_s02.iff', long(0), 'kaas', long(0), float(-5072.1), float(80.0), float(-2279.5), float(0.71), float(0), float(-0.71), float(0)) + + #Terminals + stcSvc.spawnObject('object/tangible/terminal/shared_terminal_bank.iff', 'kaas', long(0), float(-5080.8), float(80.0), float(-2275.7), float(-0.71), float(0.71)) + stcSvc.spawnObject('object/tangible/terminal/shared_terminal_mission.iff', 'kaas', long(0), float(-5108.7), float(80.0), float(-2289.2), float(0), float(0)) + stcSvc.spawnObject('object/tangible/terminal/shared_terminal_mission.iff', 'kaas', long(0), float(-5127.3), float(80.0), float(-2289.2), float(0), float(0)) + #Decor stcSvc.spawnObject('object/static/vehicle/shared_static_lambda_shuttle.iff', 'kaas', long(0), float(-5078.1), float(80.0), float(-2256.0), float(-0.70), float(0.70)) stcSvc.spawnObject('object/building/content/aurilia/shared_aurilia_crystal_centerpiece.iff', 'kaas', long(0), float(-5121.5), float(80.0), float(-2360.5), float(0), float(0)) stcSvc.spawnObject('object/static/structure/tatooine/shared_antenna_tatt_style_1.iff', 'kaas', long(0), float(-5146.7), float(80.0), float(-2301.7), float(0), float(0)) + stcSvc.spawnObject('object/static/installation/shared_mockup_power_generator_fusion_style_1.iff', 'kaas', long(0), float(-5146.7), float(80.0), float(-2301.7), float(0.71), float(0.71)) + stcSvc.spawnObject('object/static/installation/shared_mockup_power_generator_photo_bio_style_1.iff', 'kaas', long(0), float(-5146.9), float(80.0), float(-2294.5), float(0), float(0)) + stcSvc.spawnObject('object/static/vehicle/shared_static_tie_bomber.iff', 'kaas', long(0), float(-5158.5), float(80.5), float(-2232.4), float(0.70), float(0.70)) + stcSvc.spawnObject('object/static/vehicle/shared_static_tie_fighter.iff', 'kaas', long(0), float(-5158.5), float(85.0), float(-2257.4), float(0.70), float(0.70)) + + #Streetlamps stcSvc.spawnObject('object/static/structure/general/shared_streetlamp_large_blue_style_01_on.iff', 'kaas', long(0), float(-5109.9), float(80.0), float(-2289.9), float(0), float(0)) stcSvc.spawnObject('object/static/structure/general/shared_streetlamp_large_blue_style_01_on.iff', 'kaas', long(0), float(-5125.9), float(80.0), float(-2289.9), float(0), float(0)) From 9a8975dcbcb29f47958a9a19a614ecd5d24d497d Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 14:47:56 +0100 Subject: [PATCH 28/79] Made cooldowns more efficient Isn't really necessary for them to have their own thread each. There's an old trick from a time before thread pools were possible: System.currentTimeMillis(). --- .../objects/creature/CreatureObject.java | 47 ++++++++++++------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index 2043b928..74b2d7f3 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -21,6 +21,8 @@ ******************************************************************************/ package resources.objects.creature; +import java.lang.System; + import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; @@ -182,7 +184,7 @@ public class CreatureObject extends TangibleObject implements IPersistent { @NotPersistent private TangibleObject conversingNpc; @NotPersistent - private ConcurrentHashMap cooldowns = new ConcurrentHashMap(); + private ConcurrentHashMap cooldowns = new ConcurrentHashMap(); public CreatureObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { super(objectID, planet, Template, position, orientation); @@ -1733,24 +1735,21 @@ public class CreatureObject extends TangibleObject implements IPersistent { cooldowns.remove(cooldownGroup); } - long duration = ((long) (cooldownTime * 1000F)); + long duration = System.currentTimeMillis() + ((long) (cooldownTime * 1000F)); - Cooldown cooldown = new Cooldown(duration); - - cooldown.setRemovalTask(Executors.newScheduledThreadPool(1).schedule(new Runnable() { - - @Override - public void run() { - removeCooldown(cooldownGroup); - } - - }, duration, TimeUnit.MILLISECONDS)); - - cooldowns.put(cooldownGroup, cooldown); + cooldowns.put(cooldownGroup, duration); } public boolean hasCooldown(String cooldownGroup) { - return cooldowns.containsKey(cooldownGroup); + if (cooldowns.containsKey(cooldownGroup)) { + if (System.currentTimeMillis() < cooldowns.get(cooldownGroup)) { + return true; + } else { + removeCooldown(cooldownGroup); + } + } + + return false; } public boolean removeCooldown(String cooldownGroup) { @@ -1763,7 +1762,23 @@ public class CreatureObject extends TangibleObject implements IPersistent { } public Cooldown getCooldown(String cooldownGroup) { - return cooldowns.get(cooldownGroup); + return new Cooldown(getRemainingCooldown(cooldownGroup)); } + public long getRemainingCooldown(String cooldownGroup) { + if (cooldowns.containsKey(cooldownGroup)) { + if (System.currentTimeMillis() < cooldowns.get(cooldownGroup)) { + return (long) (cooldowns.get(cooldownGroup) - System.currentTimeMillis()); + } else { + removeCooldown(cooldownGroup); + } + } + + return 0L; + } + + //public float getCooldown(String cooldownGroup) { + //return ((float) getCooldown(cooldownGroup) / (float) 1000); + //} + } From fa90012d5c86282ac020744607f7dd066eadd735 Mon Sep 17 00:00:00 2001 From: Seefo Date: Mon, 7 Apr 2014 10:32:25 -0400 Subject: [PATCH 29/79] Fixed some errors in the Command Service --- src/services/command/CommandService.java | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 268b34b2..55af0017 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -80,7 +80,7 @@ public class CommandService implements INetworkDispatch { return false; } - if (command.getGodLevel() > 0 && !client.isGM()) { + if (command.getGodLevel() > 0 && !actor.getClient().isGM()) { return false; } @@ -118,7 +118,7 @@ public class CommandService implements INetworkDispatch { return false; } - if (target != null && actor.getPosition().getDistance(target.getPosition) > command.getMaxRangeToTarget()) { + if (target != null && actor.getPosition().getDistance(target.getPosition()) > command.getMaxRangeToTarget()) { return false; } @@ -167,13 +167,13 @@ public class CommandService implements INetworkDispatch { TangibleObject object = (TangibleObject) target; - if (object.isAttackableBy(actor) || actor.getFactionStatus() < object.getFactionStatus() || (!object.getFaction().equals("") && !object.getFaction().equals(actor.getFaction()))) { + if (object.isAttackableBy(actor) || actor.getFactionStatus() < ((CreatureObject) object).getFactionStatus() || (!object.getFaction().equals("") && !object.getFaction().equals(actor.getFaction()))) { return false; } // Without this we could be buffing ally NPCs and such if (object.getSlottedObject("ghost") == null) { - return; + return false; } break; @@ -182,9 +182,9 @@ public class CommandService implements INetworkDispatch { return false; } - TangibleObject object = (TangibleObject) target; + TangibleObject targetObject = (TangibleObject) target; - if (!object.isAttackableBy(actor)) { + if (!targetObject.isAttackableBy(actor)) { return false; } @@ -203,14 +203,16 @@ public class CommandService implements INetworkDispatch { actor = (CreatureObject) target; } - long warmupTime = (command.getWarmupTime() * 1000F); + long warmupTime = (long) (command.getWarmupTime() * 1000F); + final CreatureObject actorObject = actor; + final SWGObject targetObject = target; if (warmupTime != 0) { scheduler.schedule(new Runnable() { @Override public void run() { - processCommand(actor, target, command, actionCounter, commandArgs); + processCommand(actorObject, targetObject, command, actionCounter, commandArgs); } }, warmupTime, TimeUnit.MILLISECONDS); @@ -333,7 +335,7 @@ public class CommandService implements INetworkDispatch { processCombatCommand(actor, target, (CombatCommand) command, actionCounter, commandArgs); } else { if (FileUtilities.doesFileExist("scripts/commands/" + command.getCommandName() + ".py")) { - core.scriptService.callScript("scripts/commands/", command.getCommandName(), "run", core, actor, target, commandEnqueue.getCommandArguments()); + core.scriptService.callScript("scripts/commands/", command.getCommandName(), "run", core, actor, target, commandArgs); } } } From 7d4291b16e3331780d39dd7d416d2bf9ba5435a5 Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 16:31:23 +0100 Subject: [PATCH 30/79] All command tables now get read --- src/services/command/BaseSWGCommand.java | 178 ++++++++++++----------- 1 file changed, 94 insertions(+), 84 deletions(-) diff --git a/src/services/command/BaseSWGCommand.java b/src/services/command/BaseSWGCommand.java index 9ac776a1..7ded241d 100644 --- a/src/services/command/BaseSWGCommand.java +++ b/src/services/command/BaseSWGCommand.java @@ -35,7 +35,7 @@ public class BaseSWGCommand implements Cloneable { private String clientEffectTarget; private int commandCRC; private boolean isGmCommand = false; - private String characterAbility; + private String characterAbility = null; private int target; private int targetType; private boolean callOnTarget = false; @@ -60,92 +60,102 @@ public class BaseSWGCommand implements Cloneable { setCommandCRC(CRC.StringtoCRC(commandName)); try { - List invalidStates = new ArrayList(); - List invalidPostures = new ArrayList(); + String[] tableArray = new String[] { + "client_command_table", "client_command_table_ground", "client_command_table_space", + "command_table", "command_table_ground", "command_table_space", "command_table_atmospheric_flight" }; - DatatableVisitor visitor2 = ClientFileManager.loadFile("datatables/command/command_table.iff", DatatableVisitor.class); - - for (int i = 0; i < visitor2.getRowCount(); i++) { - if (visitor2.getObject(i, 0) != null) { - if (((String) visitor2.getObject(i, 0)).equalsIgnoreCase(commandName)) { - characterAbility = (String) visitor2.getObject(i, 7); - target = (Integer) visitor2.getObject(i, 72); - targetType = (Integer) visitor2.getObject(i, 73); - callOnTarget = (Boolean) visitor2.getObject(i, 76); - commandGroup = (Integer) visitor2.getObject(i, 77); - disabled = (Boolean) visitor2.getObject(i, 78); - maxRangeToTarget = (Float) visitor2.getObject(i, 79); - godLevel = (Integer) visitor2.getObject(i, 80); - displayGroup = (Integer) visitor2.getObject(i, 81); - combatCommand = (Boolean) visitor2.getObject(i, 82); - validWeapon = (Integer) visitor2.getObject(i, 83); - invalidWeapon = (Integer) visitor2.getObject(i, 84); - cooldownGroup = (String) visitor2.getObject(i, 85); - warmupTime = (Float) visitor2.getObject(i, 86); - executeTime = (Float) visitor2.getObject(i, 87); - cooldown = (Float) visitor2.getObject(i, 88); - - if (!((Boolean) visitor2.getObject(i, 8))) invalidPostures.add((byte) 0); - if (!((Boolean) visitor2.getObject(i, 9))) invalidPostures.add((byte) 3); - if (!((Boolean) visitor2.getObject(i, 16))) invalidPostures.add((byte) 2); - if (!((Boolean) visitor2.getObject(i, 19))) invalidPostures.add((byte) 5); - if (!((Boolean) visitor2.getObject(i, 21))) invalidPostures.add((byte) 6); - if (!((Boolean) visitor2.getObject(i, 22))) invalidPostures.add((byte) 7); - if (!((Boolean) visitor2.getObject(i, 23))) invalidPostures.add((byte) 8); - if (!((Boolean) visitor2.getObject(i, 24))) invalidPostures.add((byte) 9); - if (!((Boolean) visitor2.getObject(i, 25))) invalidPostures.add((byte) 10); - if (!((Boolean) visitor2.getObject(i, 26))) invalidPostures.add((byte) 11); - if (!((Boolean) visitor2.getObject(i, 27))) invalidPostures.add((byte) 12); - if (!((Boolean) visitor2.getObject(i, 28))) invalidPostures.add((byte) 13); - if (!((Boolean) visitor2.getObject(i, 29))) invalidPostures.add((byte) 14); - if (!((Boolean) visitor2.getObject(i, 30))) invalidPostures.add((byte) 4); - - if (!((Boolean) visitor2.getObject(i, 32))) invalidStates.add(1L); - if (!((Boolean) visitor2.getObject(i, 33))) invalidStates.add(2L); - if (!((Boolean) visitor2.getObject(i, 34))) invalidStates.add(4L); - if (!((Boolean) visitor2.getObject(i, 35))) invalidStates.add(8L); - if (!((Boolean) visitor2.getObject(i, 36))) invalidStates.add(16L); - if (!((Boolean) visitor2.getObject(i, 37))) invalidStates.add(32L); - if (!((Boolean) visitor2.getObject(i, 38))) invalidStates.add(64L); - if (!((Boolean) visitor2.getObject(i, 39))) invalidStates.add(128L); - if (!((Boolean) visitor2.getObject(i, 40))) invalidStates.add(256L); - if (!((Boolean) visitor2.getObject(i, 41))) invalidStates.add(512L); - if (!((Boolean) visitor2.getObject(i, 42))) invalidStates.add(1024L); - if (!((Boolean) visitor2.getObject(i, 43))) invalidStates.add(2048L); - if (!((Boolean) visitor2.getObject(i, 44))) invalidStates.add(4096L); - if (!((Boolean) visitor2.getObject(i, 45))) invalidStates.add(8192L); - if (!((Boolean) visitor2.getObject(i, 46))) invalidStates.add(16384L); - if (!((Boolean) visitor2.getObject(i, 47))) invalidStates.add(32768L); - if (!((Boolean) visitor2.getObject(i, 48))) invalidStates.add(65536L); - if (!((Boolean) visitor2.getObject(i, 49))) invalidStates.add(131072L); - if (!((Boolean) visitor2.getObject(i, 50))) invalidStates.add(262144L); - if (!((Boolean) visitor2.getObject(i, 51))) invalidStates.add(524288L); - if (!((Boolean) visitor2.getObject(i, 52))) invalidStates.add(1048576L); - if (!((Boolean) visitor2.getObject(i, 53))) invalidStates.add(2097152L); - if (!((Boolean) visitor2.getObject(i, 54))) invalidStates.add(4194304L); - if (!((Boolean) visitor2.getObject(i, 55))) invalidStates.add(8388608L); - if (!((Boolean) visitor2.getObject(i, 56))) invalidStates.add(16777216L); - if (!((Boolean) visitor2.getObject(i, 57))) invalidStates.add(33554432L); - if (!((Boolean) visitor2.getObject(i, 58))) invalidStates.add(67108864L); - if (!((Boolean) visitor2.getObject(i, 59))) invalidStates.add(134217728L); - if (!((Boolean) visitor2.getObject(i, 60))) invalidStates.add(268435456L); - if (!((Boolean) visitor2.getObject(i, 61))) invalidStates.add(536870912L); - if (!((Boolean) visitor2.getObject(i, 62))) invalidStates.add(1073741824L); - if (!((Boolean) visitor2.getObject(i, 63))) invalidStates.add(2147483648L); - if (!((Boolean) visitor2.getObject(i, 64))) invalidStates.add(4294967296L); - if (!((Boolean) visitor2.getObject(i, 65))) invalidStates.add(8589934592L); - if (!((Boolean) visitor2.getObject(i, 66))) invalidStates.add(17179869184L); - if (!((Boolean) visitor2.getObject(i, 67))) invalidStates.add(34359738368L); - if (!((Boolean) visitor2.getObject(i, 68))) invalidStates.add(68719476736L); - if (!((Boolean) visitor2.getObject(i, 69))) invalidStates.add(137438953472L); - if (!((Boolean) visitor2.getObject(i, 70))) invalidStates.add(274877906944L); - - this.invalidPostures = invalidPostures.toArray(new Byte[] { }); - this.invalidStates = invalidStates.toArray(new Long[] { }); - - break; + for (int n = 0; n < tableArray.length; n++) { + List invalidStates = new ArrayList(); + List invalidPostures = new ArrayList(); + + DatatableVisitor visitor2 = ClientFileManager.loadFile("datatables/command/" + tableArray[n] + ".iff", DatatableVisitor.class); + + for (int i = 0; i < visitor2.getRowCount(); i++) { + if (visitor2.getObject(i, 0) != null) { + if (((String) visitor2.getObject(i, 0)).equalsIgnoreCase(commandName)) { + characterAbility = (String) visitor2.getObject(i, 7); + target = (Integer) visitor2.getObject(i, 72); + targetType = (Integer) visitor2.getObject(i, 73); + callOnTarget = (Boolean) visitor2.getObject(i, 76); + commandGroup = (Integer) visitor2.getObject(i, 77); + disabled = (Boolean) visitor2.getObject(i, 78); + maxRangeToTarget = (Float) visitor2.getObject(i, 79); + godLevel = (Integer) visitor2.getObject(i, 80); + displayGroup = (Integer) visitor2.getObject(i, 81); + combatCommand = (Boolean) visitor2.getObject(i, 82); + validWeapon = (Integer) visitor2.getObject(i, 83); + invalidWeapon = (Integer) visitor2.getObject(i, 84); + cooldownGroup = (String) visitor2.getObject(i, 85); + warmupTime = (Float) visitor2.getObject(i, 86); + executeTime = (Float) visitor2.getObject(i, 87); + cooldown = (Float) visitor2.getObject(i, 88); + + if (!((Boolean) visitor2.getObject(i, 8))) invalidPostures.add((byte) 0); + if (!((Boolean) visitor2.getObject(i, 9))) invalidPostures.add((byte) 3); + if (!((Boolean) visitor2.getObject(i, 16))) invalidPostures.add((byte) 2); + if (!((Boolean) visitor2.getObject(i, 19))) invalidPostures.add((byte) 5); + if (!((Boolean) visitor2.getObject(i, 21))) invalidPostures.add((byte) 6); + if (!((Boolean) visitor2.getObject(i, 22))) invalidPostures.add((byte) 7); + if (!((Boolean) visitor2.getObject(i, 23))) invalidPostures.add((byte) 8); + if (!((Boolean) visitor2.getObject(i, 24))) invalidPostures.add((byte) 9); + if (!((Boolean) visitor2.getObject(i, 25))) invalidPostures.add((byte) 10); + if (!((Boolean) visitor2.getObject(i, 26))) invalidPostures.add((byte) 11); + if (!((Boolean) visitor2.getObject(i, 27))) invalidPostures.add((byte) 12); + if (!((Boolean) visitor2.getObject(i, 28))) invalidPostures.add((byte) 13); + if (!((Boolean) visitor2.getObject(i, 29))) invalidPostures.add((byte) 14); + if (!((Boolean) visitor2.getObject(i, 30))) invalidPostures.add((byte) 4); + + if (!((Boolean) visitor2.getObject(i, 32))) invalidStates.add(1L); + if (!((Boolean) visitor2.getObject(i, 33))) invalidStates.add(2L); + if (!((Boolean) visitor2.getObject(i, 34))) invalidStates.add(4L); + if (!((Boolean) visitor2.getObject(i, 35))) invalidStates.add(8L); + if (!((Boolean) visitor2.getObject(i, 36))) invalidStates.add(16L); + if (!((Boolean) visitor2.getObject(i, 37))) invalidStates.add(32L); + if (!((Boolean) visitor2.getObject(i, 38))) invalidStates.add(64L); + if (!((Boolean) visitor2.getObject(i, 39))) invalidStates.add(128L); + if (!((Boolean) visitor2.getObject(i, 40))) invalidStates.add(256L); + if (!((Boolean) visitor2.getObject(i, 41))) invalidStates.add(512L); + if (!((Boolean) visitor2.getObject(i, 42))) invalidStates.add(1024L); + if (!((Boolean) visitor2.getObject(i, 43))) invalidStates.add(2048L); + if (!((Boolean) visitor2.getObject(i, 44))) invalidStates.add(4096L); + if (!((Boolean) visitor2.getObject(i, 45))) invalidStates.add(8192L); + if (!((Boolean) visitor2.getObject(i, 46))) invalidStates.add(16384L); + if (!((Boolean) visitor2.getObject(i, 47))) invalidStates.add(32768L); + if (!((Boolean) visitor2.getObject(i, 48))) invalidStates.add(65536L); + if (!((Boolean) visitor2.getObject(i, 49))) invalidStates.add(131072L); + if (!((Boolean) visitor2.getObject(i, 50))) invalidStates.add(262144L); + if (!((Boolean) visitor2.getObject(i, 51))) invalidStates.add(524288L); + if (!((Boolean) visitor2.getObject(i, 52))) invalidStates.add(1048576L); + if (!((Boolean) visitor2.getObject(i, 53))) invalidStates.add(2097152L); + if (!((Boolean) visitor2.getObject(i, 54))) invalidStates.add(4194304L); + if (!((Boolean) visitor2.getObject(i, 55))) invalidStates.add(8388608L); + if (!((Boolean) visitor2.getObject(i, 56))) invalidStates.add(16777216L); + if (!((Boolean) visitor2.getObject(i, 57))) invalidStates.add(33554432L); + if (!((Boolean) visitor2.getObject(i, 58))) invalidStates.add(67108864L); + if (!((Boolean) visitor2.getObject(i, 59))) invalidStates.add(134217728L); + if (!((Boolean) visitor2.getObject(i, 60))) invalidStates.add(268435456L); + if (!((Boolean) visitor2.getObject(i, 61))) invalidStates.add(536870912L); + if (!((Boolean) visitor2.getObject(i, 62))) invalidStates.add(1073741824L); + if (!((Boolean) visitor2.getObject(i, 63))) invalidStates.add(2147483648L); + if (!((Boolean) visitor2.getObject(i, 64))) invalidStates.add(4294967296L); + if (!((Boolean) visitor2.getObject(i, 65))) invalidStates.add(8589934592L); + if (!((Boolean) visitor2.getObject(i, 66))) invalidStates.add(17179869184L); + if (!((Boolean) visitor2.getObject(i, 67))) invalidStates.add(34359738368L); + if (!((Boolean) visitor2.getObject(i, 68))) invalidStates.add(68719476736L); + if (!((Boolean) visitor2.getObject(i, 69))) invalidStates.add(137438953472L); + if (!((Boolean) visitor2.getObject(i, 70))) invalidStates.add(274877906944L); + + this.invalidPostures = invalidPostures.toArray(new Byte[] { }); + this.invalidStates = invalidStates.toArray(new Long[] { }); + + break; + } } } + + if (characterAbility != null) { + break; + } } } catch (InstantiationException | IllegalAccessException e) { e.printStackTrace(); From f70811f6b723f14f16c015691ed4f76b8d83803d Mon Sep 17 00:00:00 2001 From: Treeku Date: Mon, 7 Apr 2014 16:42:19 +0100 Subject: [PATCH 31/79] CommandSvc reads all command tables (in priority) --- src/services/command/CommandService.java | 76 ++++++++++++++---------- 1 file changed, 44 insertions(+), 32 deletions(-) diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 55af0017..c6b5fab0 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -256,24 +256,30 @@ public class CommandService implements INetworkDispatch { } try { - DatatableVisitor visitor = ClientFileManager.loadFile("datatables/command/command_table.iff", DatatableVisitor.class); + String[] tableArray = new String[] { + "client_command_table", "command_table", "client_command_table_ground", "command_table_ground", + "client_command_table_space", "command_table_space", "command_table_atmospheric_flight" }; - for (int i = 0; i < visitor.getRowCount(); i++) { - if (visitor.getObject(i, 0) != null) { - String name = ((String) visitor.getObject(i, 0)).toLowerCase(); - - if (CRC.StringtoCRC(name) == commandCRC) { - boolean hasCharacterAbility = (((String) visitor.getObject(i, 7)).length() > 0); - boolean isCombatCommand = (Boolean) visitor.getObject(i, 82); + for (int n = 0; n < tableArray.length; n++) { + DatatableVisitor visitor = ClientFileManager.loadFile("datatables/command/" + tableArray[n] + ".iff", DatatableVisitor.class); + + for (int i = 0; i < visitor.getRowCount(); i++) { + if (visitor.getObject(i, 0) != null) { + String name = ((String) visitor.getObject(i, 0)).toLowerCase(); - if (hasCharacterAbility || isCombatCommand) { - CombatCommand command = new CombatCommand(name.toLowerCase()); - commandLookup.add(command); - return command; - } else { - BaseSWGCommand command = new BaseSWGCommand(name.toLowerCase()); - commandLookup.add(command); - return command; + if (CRC.StringtoCRC(name) == commandCRC) { + boolean hasCharacterAbility = (((String) visitor.getObject(i, 7)).length() > 0); + boolean isCombatCommand = (Boolean) visitor.getObject(i, 82); + + if (hasCharacterAbility || isCombatCommand) { + CombatCommand command = new CombatCommand(name.toLowerCase()); + commandLookup.add(command); + return command; + } else { + BaseSWGCommand command = new BaseSWGCommand(name.toLowerCase()); + commandLookup.add(command); + return command; + } } } } @@ -297,24 +303,30 @@ public class CommandService implements INetworkDispatch { } try { - DatatableVisitor visitor = ClientFileManager.loadFile("datatables/command/command_table.iff", DatatableVisitor.class); + String[] tableArray = new String[] { + "client_command_table", "command_table", "client_command_table_ground", "command_table_ground", + "client_command_table_space", "command_table_space", "command_table_atmospheric_flight" }; - for (int i = 0; i < visitor.getRowCount(); i++) { - if (visitor.getObject(i, 0) != null) { - String commandName = ((String) visitor.getObject(i, 0)).toLowerCase(); - - if (commandName.equalsIgnoreCase(name)) { - boolean hasCharacterAbility = (((String) visitor.getObject(i, 7)).length() > 0); - boolean isCombatCommand = (Boolean) visitor.getObject(i, 82); + for (int n = 0; n < tableArray.length; n++) { + DatatableVisitor visitor = ClientFileManager.loadFile("datatables/command/" + tableArray[n] + ".iff", DatatableVisitor.class); + + for (int i = 0; i < visitor.getRowCount(); i++) { + if (visitor.getObject(i, 0) != null) { + String commandName = ((String) visitor.getObject(i, 0)).toLowerCase(); - if (hasCharacterAbility || isCombatCommand) { - CombatCommand command = new CombatCommand(commandName); - commandLookup.add(command); - return command; - } else { - BaseSWGCommand command = new BaseSWGCommand(commandName); - commandLookup.add(command); - return command; + if (commandName.equalsIgnoreCase(name)) { + boolean hasCharacterAbility = (((String) visitor.getObject(i, 7)).length() > 0); + boolean isCombatCommand = (Boolean) visitor.getObject(i, 82); + + if (hasCharacterAbility || isCombatCommand) { + CombatCommand command = new CombatCommand(commandName); + commandLookup.add(command); + return command; + } else { + BaseSWGCommand command = new BaseSWGCommand(commandName); + commandLookup.add(command); + return command; + } } } } From 06fe72e647ba9d73ecf1720b17a4639bd712adc2 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Mon, 7 Apr 2014 23:49:51 +0200 Subject: [PATCH 32/79] Implementation of LootService First steps --- scripts/object/mobile/tusken_raider.py | 13 ++ src/resources/objects/loot/LootDrop.java | 21 +++ .../objects/tangible/TangibleObject.java | 19 ++- src/services/DevService.java | 3 + src/services/LootService.java | 161 ++++++++++++++++++ 5 files changed, 215 insertions(+), 2 deletions(-) create mode 100644 src/resources/objects/loot/LootDrop.java create mode 100644 src/services/LootService.java diff --git a/scripts/object/mobile/tusken_raider.py b/scripts/object/mobile/tusken_raider.py index ccad8904..37e94fa4 100644 --- a/scripts/object/mobile/tusken_raider.py +++ b/scripts/object/mobile/tusken_raider.py @@ -1,4 +1,17 @@ import sys def setup(core, object): + + lootSpecification = [ + [ + ['Junk',90], + ['Rifles',70], + ['ParentProbability',60] + ], + [ + ['Colorcrystal',100], + ['ParentProbability',50] + ] + ] + object.setLootSpecification(lootSpecification) return \ No newline at end of file diff --git a/src/resources/objects/loot/LootDrop.java b/src/resources/objects/loot/LootDrop.java new file mode 100644 index 00000000..211fdca3 --- /dev/null +++ b/src/resources/objects/loot/LootDrop.java @@ -0,0 +1,21 @@ +package resources.objects.loot; + +import java.util.ArrayList; +import java.util.List; + +public class LootDrop { + + private List elements = new ArrayList(); + + public LootDrop(){ + + } + + public void addElement(String element){ + elements.add(element); + } + + public List getElements(){ + return elements; + } +} diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index dce95545..6639ac5f 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -23,12 +23,17 @@ package resources.objects.tangible; import java.io.ByteArrayOutputStream; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.SortedSet; +import java.util.TreeMap; +import java.util.TreeSet; import java.util.Vector; import javax.xml.bind.DatatypeConverter; @@ -54,7 +59,7 @@ import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Persistent(version=1) +@Persistent(version=2) public class TangibleObject extends SWGObject { // TODO: Thread safety @@ -77,6 +82,8 @@ public class TangibleObject extends SWGObject { private int respawnTime = 0; private Point3D spawnCoordinates = new Point3D(0, 0, 0); + private TreeSet> lootSpecification = new TreeSet>(); + @NotPersistent private TangibleObject killer = null; @@ -444,6 +451,15 @@ public class TangibleObject extends SWGObject { } } + public TreeSet> getLootSpecification() { + return lootSpecification; + } + + public void setLootSpecification( + TreeSet> lootSpecification) { + this.lootSpecification = lootSpecification; + } + @Override public void sendBaselines(Client destination) { @@ -467,5 +483,4 @@ public class TangibleObject extends SWGObject { } - } diff --git a/src/services/DevService.java b/src/services/DevService.java index 0cde2b83..2ce2c1f6 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -991,6 +991,9 @@ public class DevService implements INetworkDispatch { solarSurveyTool.setCustomName("Solar Survey Device"); inventory.add(solarSurveyTool); + + core.staticService.spawnObject("object/mobile/shared_tusken_raider.iff", "tatooine", 0L, 3522F, 4F, -4801F, 0.70F, 0.71F); + break; } } diff --git a/src/services/LootService.java b/src/services/LootService.java new file mode 100644 index 00000000..bfa233aa --- /dev/null +++ b/src/services/LootService.java @@ -0,0 +1,161 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package services; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Random; +import java.util.TreeMap; +import java.util.TreeSet; + +import resources.objects.creature.CreatureObject; +import resources.objects.group.GroupObject; +import resources.objects.loot.LootDrop; +import resources.objects.player.PlayerObject; +import resources.objects.tangible.TangibleObject; +import resources.objects.tool.SurveyTool; +import main.NGECore; +import engine.resources.objects.SWGObject; +import engine.resources.service.INetworkDispatch; +import engine.resources.service.INetworkRemoteEvent; + +/** + * @author Charon + */ + +public class LootService implements INetworkDispatch { + + private NGECore core; + + public LootService(NGECore core) { + this.core = core; + //core.commandService.registerCommand(""); + } + + @Override + public void insertOpcodes(Map swgOpcodes, Map objControllerOpcodes) { + + } + + @Override + public void shutdown() { + + } + + public void handleLootRequest(CreatureObject requester, TangibleObject lootedObject) { + + String lootedObjectType = "Tangible"; + if (lootedObject instanceof CreatureObject) + lootedObjectType = "Creature"; + + // Credit drop is depending on the CL of the looted CreatureObject + // or if explicitely assigned in the .py script + int lootedCredits = 0; + if (lootedObjectType.equals("Creature")){ + CreatureObject lootedCreature = (CreatureObject) lootedObject; + int creatureCL = lootedCreature.getLevel(); + int minimalCredits = 40 * creatureCL; // Predetermined factor of 40 per CL + int spanOfCredits = 15 * creatureCL; // Predetermined factor of 15 per CL + lootedCredits = minimalCredits + new Random().nextInt(spanOfCredits); + } + + if (lootedObjectType.equals("Tangible")){ + // This is for chests etc. + // Check the py script + } + + + List lootDrops = new ArrayList(); + List lootElements = new ArrayList(); + + TreeSet> lootSpec = lootedObject.getLootSpecification(); + Iterator> iterator = lootSpec.iterator(); + + while (iterator.hasNext()){ + TreeMap lootPool = iterator.next(); + int poolProbability = lootPool.lastEntry().getValue(); + int lootPoolRoll = new Random().nextInt(100); + if (lootPoolRoll <= poolProbability){ + lootElements = handleLootPool(lootPool); //this lootPool will drop + } + } + + // Now handle the chosen pools and determine the according items + + for (String element : lootElements){ + lootDrops = handleLootPoolElement(element); + } + + // ********** Phase 1 complete, loot items determined ********** + + // Distribute the loot drops according to group loot rules + + + // For now just spawn items into requester's inventory + for (LootDrop dropElem : lootDrops){ + PlayerObject requesterObj = (PlayerObject) requester.getSlottedObject("ghost"); + SWGObject requesterInventory = requesterObj.getSlottedObject("inventory"); + List elementList = dropElem.getElements(); + for (String template : elementList){ + TangibleObject droppedItem = (TangibleObject) core.objectService.createObject(template, requester.getPlanet()); + requesterInventory.add(droppedItem); + } + } + + + // ToDo: Group loot settings etc. + + // [20:35] <@_Light> your actual loot chance was lootgroupchance*lootchance + long leaderGroupId = requester.getGroupId(); + GroupObject group = (GroupObject) core.objectService.getObject(leaderGroupId); + if(group.getMemberList().size() == 1) { + // looter is alone + } + } + + + private List handleLootPool(TreeMap lootPool){ + List lootElements = new ArrayList(); + for(Map.Entry entry : lootPool.entrySet()) { + String poolElementName = entry.getKey(); + int poolElementProbability = entry.getValue(); + int lootPoolElementRoll = new Random().nextInt(100); + if (lootPoolElementRoll <= poolElementProbability){ + lootElements.add(poolElementName); + } + } + + return lootElements; + } + + private List handleLootPoolElement(String element){ + List lootDropList = new ArrayList(); + // This is just a random element from the python + + return lootDropList; + } +} From ce183ad337a8c59007590c1418a13032687d9a2e Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Mon, 7 Apr 2014 23:59:42 +0200 Subject: [PATCH 33/79] merge conflict resolve --- src/services/command/BaseSWGCommand.java | 365 +++++++++++++++ src/services/command/CommandService.java | 571 +++++++++++++++++++++++ 2 files changed, 936 insertions(+) create mode 100644 src/services/command/BaseSWGCommand.java create mode 100644 src/services/command/CommandService.java diff --git a/src/services/command/BaseSWGCommand.java b/src/services/command/BaseSWGCommand.java new file mode 100644 index 00000000..0448a8ea --- /dev/null +++ b/src/services/command/BaseSWGCommand.java @@ -0,0 +1,365 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package services.command; + +import engine.clientdata.ClientFileManager; +import engine.clientdata.visitors.DatatableVisitor; +import engine.resources.common.CRC; + +import java.util.ArrayList; +import java.util.List; + +public class BaseSWGCommand implements Cloneable { + + private String commandName; + private String clientEffectSelf; + private String clientEffectTarget; + private int commandCRC; + private boolean isGmCommand = false; + private String characterAbility; + private int target; + private int targetType; + private boolean callOnTarget = false; + private int commandGroup; + private boolean disabled = true; + private float maxRangeToTarget; + private int godLevel; + private int displayGroup; + private boolean combatCommand = false; + private int validWeapon; + private int invalidWeapon; + private String cooldownGroup; + private float cooldown; + private float executeTime; + private float warmupTime; + //private Long[] invalidLocomotions; // Not tracked anywhere + private Byte[] invalidPostures; + private Long[] invalidStates; + + public BaseSWGCommand(String commandName) { + setCommandName(commandName); + setCommandCRC(CRC.StringtoCRC(commandName)); + + try { + boolean foundCommand = false; + + String[] tableArray = new String[] { + "client_command_table", "client_command_table_ground", "client_command_table_space", + "command_table", "command_table_ground", "command_table_space" }; + + for (int n = 0; n < tableArray.length; n++) { + List invalidStates = new ArrayList(); + List invalidPostures = new ArrayList(); + + DatatableVisitor visitor2 = ClientFileManager.loadFile("datatables/command/" + tableArray[n] + ".iff", DatatableVisitor.class); + + for (int i = 0; i < visitor2.getRowCount(); i++) { + if (visitor2.getObject(i, 0) != null) { + if (((String) visitor2.getObject(i, 0)).equalsIgnoreCase(commandName)) { + int sub = 0; // Subtract due to command table structures being different + + characterAbility = (String) visitor2.getObject(i, 7); + + if (!((Boolean) visitor2.getObject(i, 8-sub))) invalidPostures.add((byte) 0); + if (!((Boolean) visitor2.getObject(i, 9-sub))) invalidPostures.add((byte) 3); + if (!((Boolean) visitor2.getObject(i, 15-sub))) invalidPostures.add((byte) 2); + if (!((Boolean) visitor2.getObject(i, 18-sub))) invalidPostures.add((byte) 5); + if (!((Boolean) visitor2.getObject(i, 20-sub))) invalidPostures.add((byte) 6); + if (!((Boolean) visitor2.getObject(i, 21-sub))) invalidPostures.add((byte) 7); + if (!((Boolean) visitor2.getObject(i, 22-sub))) invalidPostures.add((byte) 8); + if (!((Boolean) visitor2.getObject(i, 23-sub))) invalidPostures.add((byte) 9); + if (!((Boolean) visitor2.getObject(i, 24-sub))) invalidPostures.add((byte) 10); + if (!((Boolean) visitor2.getObject(i, 25-sub))) invalidPostures.add((byte) 11); + if (!((Boolean) visitor2.getObject(i, 26-sub))) invalidPostures.add((byte) 12); + if (!((Boolean) visitor2.getObject(i, 27-sub))) invalidPostures.add((byte) 13); + if (!((Boolean) visitor2.getObject(i, 28-sub))) invalidPostures.add((byte) 14); + if (!((Boolean) visitor2.getObject(i, 29-sub))) invalidPostures.add((byte) 4); + + if (tableArray[n].startsWith("client_") || tableArray[n].startsWith("command_table_")) { + sub += 1; + } + + if (!((Boolean) visitor2.getObject(i, 32-sub))) invalidStates.add(1L); + if (!((Boolean) visitor2.getObject(i, 33-sub))) invalidStates.add(2L); + if (!((Boolean) visitor2.getObject(i, 34-sub))) invalidStates.add(4L); + if (!((Boolean) visitor2.getObject(i, 35-sub))) invalidStates.add(8L); + if (!((Boolean) visitor2.getObject(i, 36-sub))) invalidStates.add(16L); + if (!((Boolean) visitor2.getObject(i, 37-sub))) invalidStates.add(32L); + if (!((Boolean) visitor2.getObject(i, 38-sub))) invalidStates.add(64L); + if (!((Boolean) visitor2.getObject(i, 39-sub))) invalidStates.add(128L); + if (!((Boolean) visitor2.getObject(i, 40-sub))) invalidStates.add(256L); + if (!((Boolean) visitor2.getObject(i, 41-sub))) invalidStates.add(512L); + if (!((Boolean) visitor2.getObject(i, 42-sub))) invalidStates.add(1024L); + if (!((Boolean) visitor2.getObject(i, 43-sub))) invalidStates.add(2048L); + if (!((Boolean) visitor2.getObject(i, 44-sub))) invalidStates.add(4096L); + if (!((Boolean) visitor2.getObject(i, 45-sub))) invalidStates.add(8192L); + if (!((Boolean) visitor2.getObject(i, 46-sub))) invalidStates.add(16384L); + if (!((Boolean) visitor2.getObject(i, 47-sub))) invalidStates.add(32768L); + if (!((Boolean) visitor2.getObject(i, 48-sub))) invalidStates.add(65536L); + if (!((Boolean) visitor2.getObject(i, 49-sub))) invalidStates.add(131072L); + if (!((Boolean) visitor2.getObject(i, 50-sub))) invalidStates.add(262144L); + if (!((Boolean) visitor2.getObject(i, 51-sub))) invalidStates.add(524288L); + if (!((Boolean) visitor2.getObject(i, 52-sub))) invalidStates.add(1048576L); + if (!((Boolean) visitor2.getObject(i, 53-sub))) invalidStates.add(2097152L); + if (!((Boolean) visitor2.getObject(i, 54-sub))) invalidStates.add(4194304L); + if (!((Boolean) visitor2.getObject(i, 55-sub))) invalidStates.add(8388608L); + if (!((Boolean) visitor2.getObject(i, 56-sub))) invalidStates.add(16777216L); + if (!((Boolean) visitor2.getObject(i, 57-sub))) invalidStates.add(33554432L); + if (!((Boolean) visitor2.getObject(i, 58-sub))) invalidStates.add(67108864L); + if (!((Boolean) visitor2.getObject(i, 59-sub))) invalidStates.add(134217728L); + + if (!tableArray[n].equals("client_command_table_space")) { + if (!((Boolean) visitor2.getObject(i, 60-sub))) invalidStates.add(268435456L); + if (!((Boolean) visitor2.getObject(i, 61-sub))) invalidStates.add(536870912L); + if (!((Boolean) visitor2.getObject(i, 62-sub))) invalidStates.add(1073741824L); + if (!((Boolean) visitor2.getObject(i, 63-sub))) invalidStates.add(2147483648L); + if (!((Boolean) visitor2.getObject(i, 64-sub))) invalidStates.add(4294967296L); + } else { + sub += 5; + } + + if (!tableArray[n].startsWith("client_") && !tableArray[n].startsWith("command_table_")) { + if (!((Boolean) visitor2.getObject(i, 65-sub))) invalidStates.add(8589934592L); + if (!((Boolean) visitor2.getObject(i, 66-sub))) invalidStates.add(17179869184L); + if (!((Boolean) visitor2.getObject(i, 67-sub))) invalidStates.add(34359738368L); + if (!((Boolean) visitor2.getObject(i, 68-sub))) invalidStates.add(68719476736L); + if (!((Boolean) visitor2.getObject(i, 69-sub))) invalidStates.add(137438953472L); + if (!((Boolean) visitor2.getObject(i, 70-sub))) invalidStates.add(274877906944L); + } else { + sub += 6; + } + + target = (Integer) visitor2.getObject(i, 72-sub); + targetType = (Integer) visitor2.getObject(i, 73-sub); + callOnTarget = (Boolean) visitor2.getObject(i, 76-sub); + commandGroup = (Integer) visitor2.getObject(i, 77-sub); + disabled = (Boolean) visitor2.getObject(i, 78-sub); + maxRangeToTarget = (Float) visitor2.getObject(i, 79-sub); + godLevel = (Integer) visitor2.getObject(i, 80-sub); + displayGroup = (Integer) visitor2.getObject(i, 81-sub); + combatCommand = (Boolean) visitor2.getObject(i, 82-sub); + validWeapon = (Integer) visitor2.getObject(i, 83-sub); + invalidWeapon = (Integer) visitor2.getObject(i, 84-sub); + cooldownGroup = (String) visitor2.getObject(i, 85-sub); + warmupTime = (Float) visitor2.getObject(i, 86-sub); + executeTime = (Float) visitor2.getObject(i, 87-sub); + cooldown = (Float) visitor2.getObject(i, 88-sub); + + this.invalidPostures = invalidPostures.toArray(new Byte[] { }); + this.invalidStates = invalidStates.toArray(new Long[] { }); + + foundCommand = true; + break; + } + } + } + + if (foundCommand) { + break; + } + } + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + } + + public String getCommandName() { + return commandName; + } + + public void setCommandName(String commandName) { + this.commandName = commandName; + } + + public String getClientEffectSelf() { + return clientEffectSelf; + } + + public void setClientEffectSelf(String clientEffectSelf) { + this.clientEffectSelf = clientEffectSelf; + } + + public String getClientEffectTarget() { + return clientEffectTarget; + } + + public void setClientEffectTarget(String clientEffectTarget) { + this.clientEffectTarget = clientEffectTarget; + } + + public int getCommandCRC() { + return commandCRC; + } + + public void setCommandCRC(int commandCRC) { + this.commandCRC = commandCRC; + } + + public Object clone() throws CloneNotSupportedException { + return super.clone(); + } + + public boolean isGmCommand() { + return (godLevel > 0); + } + + public void setGmCommand(boolean isGmCommand) { + this.isGmCommand = isGmCommand; + } + + public String getCharacterAbility() { + return characterAbility; + } + + public void setcharacterAbility(String characterAbility) { + this.characterAbility = characterAbility; + } + + public Byte[] getInvalidPostures() { + return invalidPostures; + } + + public Long[] getInvalidStates() { + return invalidStates; + } + + public int getTarget() { + return target; + } + + public void setTarget(int target) { + this.target = target; + } + + public int getTargetType() { + return targetType; + } + + public void setTargetType(int targetType) { + this.targetType = targetType; + } + + public boolean shouldCallOnTarget() { + return callOnTarget; + } + + public void setCallOnTarget(boolean callOnTarget) { + this.callOnTarget = callOnTarget; + } + + public int getCommandGroup() { + return commandGroup; + } + + public void setCommandGroup(int commandGroup) { + this.commandGroup = commandGroup; + } + + public boolean isDisabled() { + return disabled; + } + + public void setDisabled(boolean disabled) { + this.disabled = disabled; + } + + public float getMaxRangeToTarget() { + return maxRangeToTarget; + } + + public void setMaxRangeToTarget(float maxRangeToTarget) { + this.maxRangeToTarget = maxRangeToTarget; + } + + public int getGodLevel() { + return godLevel; + } + + public void setGodLevel(int godLevel) { + this.godLevel = godLevel; + } + + public int getDisplayGroup() { + return displayGroup; + } + + public void setDisplayGroup(int displayGroup) { + this.displayGroup = displayGroup; + } + + public boolean isCombatCommand() { + return combatCommand; + } + + public void setCombatCommand(boolean combatCommand) { + this.combatCommand = combatCommand; + } + + public int getValidWeapon() { + return validWeapon; + } + + public void setValidWeapon(int validWeapon) { + this.validWeapon = validWeapon; + } + + public int getInvalidWeapon() { + return invalidWeapon; + } + + public void setInvalidWeapon(int invalidWeapon) { + this.invalidWeapon = invalidWeapon; + } + + public String getCooldownGroup() { + return cooldownGroup; + } + + public void setCooldownGroup(String cooldownGroup) { + this.cooldownGroup = cooldownGroup; + } + + public float getCooldown() { + return cooldown; + } + + public void setCooldown(float cooldown) { + this.cooldown = cooldown; + } + + public float getExecuteTime() { + return executeTime; + } + + public void setExecuteTime(float executeTime) { + this.executeTime = executeTime; + } + + public float getWarmupTime() { + return warmupTime; + } + + public void setWarmupTime(float warmupTime) { + this.warmupTime = warmupTime; + } + +} diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java new file mode 100644 index 00000000..8e9bcf44 --- /dev/null +++ b/src/services/command/CommandService.java @@ -0,0 +1,571 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package services.command; + +import java.nio.ByteOrder; +import java.util.Map; +import java.util.Vector; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; + +import main.NGECore; + +import org.apache.mina.core.buffer.IoBuffer; +import org.apache.mina.core.session.IoSession; + +import engine.clientdata.ClientFileManager; +import engine.clientdata.visitors.DatatableVisitor; +import engine.clients.Client; +import engine.resources.common.CRC; +import engine.resources.objects.SWGObject; +import engine.resources.scene.Point3D; +import engine.resources.service.INetworkDispatch; +import engine.resources.service.INetworkRemoteEvent; +import resources.common.*; +import resources.datatables.StateStatus; +import protocol.swg.ObjControllerMessage; +import protocol.swg.objectControllerObjects.CommandEnqueue; +import protocol.swg.objectControllerObjects.CommandEnqueueRemove; +import protocol.swg.objectControllerObjects.ShowFlyText; +import protocol.swg.objectControllerObjects.StartTask; +import resources.objects.creature.CreatureObject; +import resources.objects.tangible.TangibleObject; +import resources.objects.weapon.WeaponObject; + +public class CommandService implements INetworkDispatch { + + private Vector commandLookup = new Vector(); + private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + private NGECore core; + + public CommandService(NGECore core) { + this.core = core; + } + + public boolean callCommand(CreatureObject actor, SWGObject target, BaseSWGCommand command, int actionCounter, String commandArgs) { + if (actor == null) { + return false; + } + + if (command == null) { + return false; + } + + if (command.getCharacterAbility().length() > 0 && !actor.hasAbility(command.getCharacterAbility())) { + return false; + } + + if (command.isDisabled()) { + return false; + } + + if (command.getGodLevel() > 0 && !actor.getClient().isGM()) { + return false; + } + + if (actor.hasCooldown(command.getCooldownGroup()) || actor.hasCooldown(command.getCommandName())) { + return false; + } + + WeaponObject weapon = (WeaponObject) core.objectService.getObject(actor.getWeaponId()); + + if (weapon != null && weapon.getWeaponType() == command.getInvalidWeapon()) { + return false; + } + + // The two below statements need testing before use + + for (long state : command.getInvalidStates()) { + if ((actor.getStateBitmask() & state) == state) { + //return false; + } + } + + for (byte posture : command.getInvalidPostures()) { + if (actor.getPosture() == posture) { + //return false; + } + } + + switch (command.getTargetType()) { + case 0: // Target Not Used For This Command or Self + target = actor; + + break; + case 1: // Other Only + if (target == null || target == actor) { + return false; + } + + if (target != null && actor.getPosition().getDistance(target.getPosition()) > command.getMaxRangeToTarget()) { + return false; + } + + if (!core.simulationService.checkLineOfSight(actor, target)) { + return false; + } + + break; + case 2: // Self Only + if (target == null) { + target = actor; + } + + if (target != actor) { + return false; + } + + break; + case 3: // Free Target Mode (rally points, group waypoints) + target = null; + + break; + case 4: // Anyone + if (target == null) { + target = actor; + } + + if (!core.simulationService.checkLineOfSight(actor, target)) { + return false; + } + + break; + default: + break; + } + + switch (command.getTarget()) { + case 0: // Ally Only + if (target == null) { + target = actor; + } + + if (!(target instanceof TangibleObject)) { + return false; + } + + TangibleObject object = (TangibleObject) target; + + if (object.isAttackableBy(actor) || actor.getFactionStatus() < ((CreatureObject) object).getFactionStatus() || (!object.getFaction().equals("") && !object.getFaction().equals(actor.getFaction()))) { + return false; + } + + // Without this we could be buffing ally NPCs and such + if (object.getSlottedObject("ghost") == null) { + return false; + } + + break; + case 1: // Enemy Only + if (target == null || !(target instanceof TangibleObject)) { + return false; + } + + TangibleObject targetObject = (TangibleObject) target; + + if (!targetObject.isAttackableBy(actor)) { + return false; + } + + break; + case 2: // Indifferent + break; + default: + break; + } + + if (command.shouldCallOnTarget()) { + if (target == null || !(target instanceof CreatureObject)) { + return false; + } + + actor = (CreatureObject) target; + } + + long warmupTime = (long) (command.getWarmupTime() * 1000F); + final CreatureObject actorObject = actor; + final SWGObject targetObject = target; + + if (warmupTime != 0) { + scheduler.schedule(new Runnable() { + + @Override + public void run() { + processCommand(actorObject, targetObject, command, actionCounter, commandArgs); + } + + }, warmupTime, TimeUnit.MILLISECONDS); + } else { + processCommand(actor, target, command, actionCounter, commandArgs); + } + + return true; + } + + public void callCommand(SWGObject actor, String commandName, SWGObject target, String commandArgs) { + if (actor == null) + return; + + BaseSWGCommand command = getCommandByName(commandName); + + if (command == null) + return; + + if(command instanceof CombatCommand) { + CombatCommand command2; + try { + command2 = (CombatCommand) command.clone(); + processCombatCommand((CreatureObject) actor, target, command2, 0, ""); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + return; + } + + core.scriptService.callScript("scripts/commands/", command.getCommandName(), "run", core, actor, target, commandArgs); + } + + public BaseSWGCommand getCommandByCRC(int commandCRC) { + Vector commands = new Vector(commandLookup); + + for (BaseSWGCommand command : commands) { + if (command.getCommandCRC() == commandCRC) { + return command; + } + } + + try { + String[] tableArray = new String[] { + "client_command_table", "command_table", "client_command_table_ground", "command_table_ground", + "client_command_table_space", "command_table_space" }; + + for (int n = 0; n < tableArray.length; n++) { + DatatableVisitor visitor = ClientFileManager.loadFile("datatables/command/" + tableArray[n] + ".iff", DatatableVisitor.class); + + for (int i = 0; i < visitor.getRowCount(); i++) { + if (visitor.getObject(i, 0) != null) { + String name = ((String) visitor.getObject(i, 0)).toLowerCase(); + + if (CRC.StringtoCRC(name) == commandCRC) { + int sub = 0; + + boolean hasCharacterAbility = (((String) visitor.getObject(i, 7-sub)).length() > 0); + + if (tableArray[n].startsWith("client_") && tableArray[n].startsWith("command_table_")) { + sub += 7; + } + + if (tableArray[n].equals("client_command_table_space")) { + sub += 5; + } + + boolean isCombatCommand = false; + + if(visitor.getObject(i, 82-sub) instanceof Boolean) + isCombatCommand = (Boolean) visitor.getObject(i, 82-sub); + + if (hasCharacterAbility || isCombatCommand) { + CombatCommand command = new CombatCommand(name.toLowerCase()); + commandLookup.add(command); + return command; + } else { + BaseSWGCommand command = new BaseSWGCommand(name.toLowerCase()); + commandLookup.add(command); + return command; + } + } + } + } + } + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + + return null; + } + + public BaseSWGCommand getCommandByName(String name) { + Vector commands = new Vector(commandLookup); + + name = name.toLowerCase(); + + for (BaseSWGCommand command : commands) { + if (command.getCommandName().equalsIgnoreCase(name)) { + return command; + } + } + + try { + String[] tableArray = new String[] { + "client_command_table", "command_table", "client_command_table_ground", "command_table_ground", + "client_command_table_space", "command_table_space" }; + + for (int n = 0; n < tableArray.length; n++) { + DatatableVisitor visitor = ClientFileManager.loadFile("datatables/command/" + tableArray[n] + ".iff", DatatableVisitor.class); + + for (int i = 0; i < visitor.getRowCount(); i++) { + if (visitor.getObject(i, 0) != null) { + String commandName = ((String) visitor.getObject(i, 0)).toLowerCase(); + + if (commandName.equalsIgnoreCase(name)) { + int sub = 0; + + boolean hasCharacterAbility = (((String) visitor.getObject(i, 7-sub)).length() > 0); + + if (tableArray[n].startsWith("client_") && tableArray[n].startsWith("command_table_")) { + sub += 7; + } + + if (tableArray[n].equals("client_command_table_space")) { + sub += 5; + } + + boolean isCombatCommand = false; + + if(visitor.getObject(i, 82-sub) instanceof Boolean) + isCombatCommand = (Boolean) visitor.getObject(i, 82-sub); + + if (hasCharacterAbility || isCombatCommand) { + CombatCommand command = new CombatCommand(commandName); + commandLookup.add(command); + return command; + } else { + BaseSWGCommand command = new BaseSWGCommand(commandName); + commandLookup.add(command); + return command; + } + } + } + } + } + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + + return null; + } + + public void processCommand(CreatureObject actor, SWGObject target, BaseSWGCommand command, int actionCounter, String commandArgs) { + if (command.getCooldown() > (float) 1) { + actor.addCooldown(command.getCooldownGroup(), command.getCooldown()); + } + + if (command instanceof CombatCommand) { + processCombatCommand(actor, target, (CombatCommand) command, actionCounter, commandArgs); + } else { + if (FileUtilities.doesFileExist("scripts/commands/" + command.getCommandName() + ".py")) { + core.scriptService.callScript("scripts/commands/", command.getCommandName(), "run", core, actor, target, commandArgs); + } + } + } + + public void processCombatCommand(CreatureObject attacker, SWGObject target, CombatCommand command, int actionCounter, String commandArgs) { + + // Check if the person has access to this ability. + // Abilities (inc expertise ones) are added automatically as they level + // by reading the datatables. + // disabled for now (breaks all combat) + //if (!attacker.hasAbility(command.getCommandName())) { + // return; + //} + + if(FileUtilities.doesFileExist("scripts/commands/combat/" + command.getCommandName() + ".py")) + core.scriptService.callScript("scripts/commands/combat/", command.getCommandName(), "setup", core, attacker, target, command); + + boolean success = true; + + //if((command.getHitType() == 5 || command.getHitType() == 7) && !(target instanceof CreatureObject)) + // success = false; + + if(!(command.getAttackType() == 2) && !(command.getHitType() == 5) && !(command.getHitType() == 0)) { + if(target == null || !(target instanceof TangibleObject) || target == attacker) + success = false; + } else { + if(target == null) + target = attacker; + else if(!(target instanceof TangibleObject)) + return; + } + + if(attacker.getPosture() == 13 || attacker.getPosture() == 14) + success = false; + + if(target instanceof CreatureObject) { + if(!(command.getHitType() == 5)) + if(((CreatureObject) target).getPosture() == 13) + success = false; + if(!(command.getHitType() == 7)) + if(((CreatureObject) target).getPosture() == 14) + success = false; + } + + if(command.getHitType() == 7 && target.getClient() == null) + success = false; + + WeaponObject weapon; + + if(attacker.getWeaponId() == 0) + weapon = (WeaponObject) attacker.getSlottedObject("default_weapon"); // use unarmed/default weapon if no weapon is equipped + else + weapon = (WeaponObject) core.objectService.getObject(attacker.getWeaponId()); + + float maxRange = 0; + + if(command.getMaxRange() == 0) + maxRange = weapon.getMaxRange(); + else + maxRange = command.getMaxRange(); + + Point3D attackerPos = attacker.getWorldPosition(); + Point3D defenderPos = attacker.getWorldPosition(); + + if(attackerPos.getDistance(defenderPos) > maxRange && maxRange != 0) + success = false; + + if(command.getMinRange() > 0) { + if(attackerPos.getDistance(defenderPos) < command.getMinRange()) + success = false; + } + + + if(target != attacker && success && !core.simulationService.checkLineOfSight(attacker, target)) { + + ShowFlyText los = new ShowFlyText(attacker.getObjectID(), attacker.getObjectID(), "combat_effects", "cant_see", (float) 1.5, new RGB(72, 209, 204), 1); + ObjControllerMessage objController = new ObjControllerMessage(0x1B, los); + attacker.getClient().getSession().write(objController.serialize()); + success = false; + + } + + if(!success && attacker.getClient() != null) { + IoSession session = attacker.getClient().getSession(); + CommandEnqueueRemove commandRemove = new CommandEnqueueRemove(attacker.getObjectId(), actionCounter); + session.write(new ObjControllerMessage(0x0B, commandRemove).serialize()); + StartTask startTask = new StartTask(actionCounter, attacker.getObjectID(), command.getCommandCRC(), CRC.StringtoCRC(command.getCooldownGroup()), -1); + session.write(new ObjControllerMessage(0x0B, startTask).serialize()); + } else { + + if(command.getHitType() == 5) { + core.combatService.doHeal(attacker, (CreatureObject) target, weapon, command, actionCounter); + return; + } + + if(command.getHitType() == 7) { + core.combatService.doRevive(attacker, (CreatureObject) target, weapon, command, actionCounter); + return; + } + + if(command.getHitType() == 0 && command.getBuffNameSelf().length() > 0) { + core.combatService.doSelfBuff(attacker, weapon, command, actionCounter); + return; + } + for(int i = 0 ; i < command.getAttack_rolls(); i++) { + core.combatService.doCombat(attacker, (TangibleObject) target, weapon, command, actionCounter); + } + + } + + } + + @Override + public void insertOpcodes(Map swgOpcodes, Map objControllerOpcodes) { + + objControllerOpcodes.put(ObjControllerOpcodes.COMMAND_QUEUE_ENQUEUE, new INetworkRemoteEvent() { + + @Override + public void handlePacket(IoSession session, IoBuffer data) throws Exception { + + data.order(ByteOrder.LITTLE_ENDIAN); + Client client = core.getClient(session); + + if (client == null) { + System.out.println("NULL Client"); + return; + } + + CommandEnqueue commandEnqueue = new CommandEnqueue(); + commandEnqueue.deserialize(data); + + BaseSWGCommand command = getCommandByCRC(commandEnqueue.getCommandCRC()); + + if (command == null) { + //System.out.println("Unknown Command CRC: " + commandEnqueue.getCommandCRC()); + return; + } + + if (client.getParent() == null) { + System.out.println("NULL Object"); + return; + } + + CreatureObject actor = (CreatureObject) client.getParent(); + + SWGObject target = core.objectService.getObject(commandEnqueue.getTargetID()); + + if (!callCommand(actor, target, command, commandEnqueue.getActionCounter(), commandEnqueue.getCommandArguments())) { + // Call failScriptHook + } + } + + }); + + objControllerOpcodes.put(ObjControllerOpcodes.COMMAND_QUEUE_REMOVE, new INetworkRemoteEvent() { + + @Override + public void handlePacket(IoSession session, IoBuffer data) throws Exception { + + } + + }); + + + } + + public void shutdown() { + + } + + public CombatCommand registerCombatCommand(String name) { + BaseSWGCommand command = getCommandByName(name); + + if (command == null) { + return null; + } + + if (command instanceof CombatCommand) { + return (CombatCommand) command; + } else { + System.out.println("Warning: Forced to make non-combat command " + name + " a combat command."); + commandLookup.remove(command); + CombatCommand combatCommand = new CombatCommand(name.toLowerCase()); + commandLookup.add(combatCommand); + return combatCommand; + } + } + + public BaseSWGCommand registerCommand(String name) { return getCommandByName(name); } + public BaseSWGCommand registerGmCommand(String name) { return getCommandByName(name); } + public void registerAlias(String name, String target) { } + +} From 9526eee9d60a943560c6c1e1744ac1df6d8381d0 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Tue, 8 Apr 2014 02:12:36 +0200 Subject: [PATCH 34/79] Object-orientated approach to storing the loot info --- options.cfg | 5 +- scripts/object/mobile/tusken_raider.py | 33 ++++++++----- src/main/NGECore.java | 3 ++ src/resources/objects/loot/LootDrop.java | 21 ++++++++ src/resources/objects/loot/LootGroup.java | 49 +++++++++++++++++++ .../objects/tangible/TangibleObject.java | 23 +++++---- src/services/DevService.java | 6 ++- src/services/LootService.java | 26 +++++++++- 8 files changed, 139 insertions(+), 27 deletions(-) create mode 100644 src/resources/objects/loot/LootGroup.java diff --git a/options.cfg b/options.cfg index 4f6d91ad..cb743c88 100644 --- a/options.cfg +++ b/options.cfg @@ -1,2 +1,3 @@ -LOAD.SNAPSHOT_OBJECTS=1 -LOAD.BUILDOUT_OBJECTS=1 \ No newline at end of file +LOAD.SNAPSHOT_OBJECTS=0 +LOAD.BUILDOUT_OBJECTS=0 +LOAD.RESOURCE.SYSTEM=1 \ No newline at end of file diff --git a/scripts/object/mobile/tusken_raider.py b/scripts/object/mobile/tusken_raider.py index 37e94fa4..8c20d758 100644 --- a/scripts/object/mobile/tusken_raider.py +++ b/scripts/object/mobile/tusken_raider.py @@ -1,17 +1,24 @@ import sys +from java.util import TreeSet +from java.util import TreeMap def setup(core, object): - - lootSpecification = [ - [ - ['Junk',90], - ['Rifles',70], - ['ParentProbability',60] - ], - [ - ['Colorcrystal',100], - ['ParentProbability',50] - ] - ] - object.setLootSpecification(lootSpecification) + + lootSpecification = TreeSet() + #lootSpecification = [[['Junk',90],['Rifles',70],['ParentProbability',60]],[['Colorcrystal',100],['ParentProbability',50]]] + #object.setLootSpecification(lootSpecification) + + lootPoolNames_1 = ['Junk','Rifles'] + lootPoolChances_1 = [90,70] + lootGroupChance_1 = 80 + core.lootService.saveLootData(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + #object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames2 = ['Colorcrystal'] + lootPoolChances2 = [50] + lootGroupChance2 = 60 + #core.lootService.saveLootData(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + #object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + #core.lootService.test3(allLootPoolNames) return \ No newline at end of file diff --git a/src/main/NGECore.java b/src/main/NGECore.java index 0762507f..d465c5f1 100644 --- a/src/main/NGECore.java +++ b/src/main/NGECore.java @@ -59,6 +59,7 @@ import services.EquipmentService; import services.GroupService; import services.InstanceService; import services.LoginService; +import services.LootService; import services.MissionService; import services.PlayerService; import services.ScriptService; @@ -175,6 +176,7 @@ public class NGECore { public ResourceService resourceService; public ConversationService conversationService; + public LootService lootService; // Login Server @@ -286,6 +288,7 @@ public class NGECore { entertainmentService = new EntertainmentService(this); devService = new DevService(this); conversationService = new ConversationService(this); + lootService = new LootService(this); if (config.keyExists("JYTHONCONSOLE.PORT")) { int jythonPort = config.getInt("JYTHONCONSOLE.PORT"); diff --git a/src/resources/objects/loot/LootDrop.java b/src/resources/objects/loot/LootDrop.java index 211fdca3..08e01fbf 100644 --- a/src/resources/objects/loot/LootDrop.java +++ b/src/resources/objects/loot/LootDrop.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package resources.objects.loot; import java.util.ArrayList; diff --git a/src/resources/objects/loot/LootGroup.java b/src/resources/objects/loot/LootGroup.java new file mode 100644 index 00000000..1558a624 --- /dev/null +++ b/src/resources/objects/loot/LootGroup.java @@ -0,0 +1,49 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package resources.objects.loot; + +/** + * @author Charon + */ + +public class LootGroup { + + private String[] lootPoolNames; + private int[] lootPoolChances; + private int lootGroupChance; + + public LootGroup(){ + + } + + public LootGroup(String[] lootPoolName, int[] lootPoolChance, int lootGroupChance){ + this.lootPoolNames = lootPoolNames; + this.lootPoolChances = lootPoolChances; + this.lootGroupChance = lootGroupChance; + } + + public void addLootData(String[] lootPoolNames, int[] lootPoolChances, int lootGroupChance){ + this.lootPoolNames = lootPoolNames; + this.lootPoolChances = lootPoolChances; + this.lootGroupChance = lootGroupChance; + } +} diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index 6639ac5f..69dc7d65 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -46,6 +46,7 @@ import protocol.swg.UpdatePVPStatusMessage; import protocol.swg.objectControllerObjects.ShowFlyText; import resources.common.RGB; import resources.objects.creature.CreatureObject; +import resources.objects.loot.LootGroup; import resources.visitors.IDManagerVisitor; import services.ai.AIActor; @@ -82,8 +83,9 @@ public class TangibleObject extends SWGObject { private int respawnTime = 0; private Point3D spawnCoordinates = new Point3D(0, 0, 0); - private TreeSet> lootSpecification = new TreeSet>(); - + //private TreeSet> lootSpecification = new TreeSet>(); + private List lootGroups = new ArrayList(); + @NotPersistent private TangibleObject killer = null; @@ -451,14 +453,6 @@ public class TangibleObject extends SWGObject { } } - public TreeSet> getLootSpecification() { - return lootSpecification; - } - - public void setLootSpecification( - TreeSet> lootSpecification) { - this.lootSpecification = lootSpecification; - } @Override public void sendBaselines(Client destination) { @@ -483,4 +477,13 @@ public class TangibleObject extends SWGObject { } + + public List getLootGroups() { + return lootGroups; + } + + public void addToLootGroups(String[] lootPoolName, int[] lootPoolChance, int lootGroupChance) { + LootGroup lootGroup = new LootGroup(lootPoolName, lootPoolChance, lootGroupChance); + this.lootGroups.add(lootGroup); + } } diff --git a/src/services/DevService.java b/src/services/DevService.java index 2ce2c1f6..306958f1 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -85,6 +85,7 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 22, "Misc Items"); suiOptions.put((long) 23, "Jedi Items"); suiOptions.put((long) 110, "Survey Devices"); + suiOptions.put((long) 111, "Spawn Tusken"); break; case 3: // [Items] Weapons suiOptions.put((long) 30, "Jedi Weapons"); @@ -992,8 +993,11 @@ public class DevService implements INetworkDispatch { inventory.add(solarSurveyTool); - core.staticService.spawnObject("object/mobile/shared_tusken_raider.iff", "tatooine", 0L, 3522F, 4F, -4801F, 0.70F, 0.71F); + + break; + case 111: + core.staticService.spawnObject("object/mobile/shared_tusken_raider.iff", "tatooine", 0L, 3522F, 4F, -4801F, 0.70F, 0.71F); break; } } diff --git a/src/services/LootService.java b/src/services/LootService.java index bfa233aa..32039cb5 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -126,7 +126,7 @@ public class LootService implements INetworkDispatch { } } - + // ToDo: Group loot settings etc. // [20:35] <@_Light> your actual loot chance was lootgroupchance*lootchance @@ -158,4 +158,28 @@ public class LootService implements INetworkDispatch { return lootDropList; } + + + public void test(TreeSet test1){ + + } + + public void test2(String test2){ + System.out.println(test2); + } + + public void saveLootData(String[] lootPoolName, int[] lootPoolChance, int lootGroupChance){ + for (String ui : lootPoolName){ + System.out.println(ui); + } + for (int ui : lootPoolChance){ + System.out.println(ui); + } + + System.out.println(lootGroupChance); + + } + + + } From d848e89edb64f487bfad0b87ba2c12d96e71096f Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Tue, 8 Apr 2014 04:08:52 +0200 Subject: [PATCH 35/79] Script integration A few example .py scripts Improvements on the lootservice design --- scripts/lootPools/colorcrystals.py | 0 scripts/lootPools/jediholocrons.py | 0 scripts/lootPools/junk.py | 8 ++ scripts/lootPools/kraytpearls.py | 8 ++ scripts/lootPools/rareloot.py | 0 scripts/lootPools/rifles.py | 0 scripts/lootPools/sithholocrons.py | 0 scripts/object/mobile/tusken_raider.py | 8 +- src/resources/objects/loot/LootGroup.java | 12 +++ src/resources/objects/loot/LootPool.java | 33 +++++++ .../objects/loot/LootRollSession.java | 33 +++++++ .../objects/tangible/TangibleObject.java | 18 ++-- src/services/LootService.java | 92 +++++++++---------- 13 files changed, 150 insertions(+), 62 deletions(-) create mode 100644 scripts/lootPools/colorcrystals.py create mode 100644 scripts/lootPools/jediholocrons.py create mode 100644 scripts/lootPools/junk.py create mode 100644 scripts/lootPools/kraytpearls.py create mode 100644 scripts/lootPools/rareloot.py create mode 100644 scripts/lootPools/rifles.py create mode 100644 scripts/lootPools/sithholocrons.py create mode 100644 src/resources/objects/loot/LootPool.java create mode 100644 src/resources/objects/loot/LootRollSession.java diff --git a/scripts/lootPools/colorcrystals.py b/scripts/lootPools/colorcrystals.py new file mode 100644 index 00000000..e69de29b diff --git a/scripts/lootPools/jediholocrons.py b/scripts/lootPools/jediholocrons.py new file mode 100644 index 00000000..e69de29b diff --git a/scripts/lootPools/junk.py b/scripts/lootPools/junk.py new file mode 100644 index 00000000..3a139e37 --- /dev/null +++ b/scripts/lootPools/junk.py @@ -0,0 +1,8 @@ + +def itemTemplates(): + + templates=['1','2','3'] + return templates + +def itemChances(): + return [1,2,3] \ No newline at end of file diff --git a/scripts/lootPools/kraytpearls.py b/scripts/lootPools/kraytpearls.py new file mode 100644 index 00000000..8463ef39 --- /dev/null +++ b/scripts/lootPools/kraytpearls.py @@ -0,0 +1,8 @@ + +def itemTemplates(): + + templates=['1','2','3','Flawless'] + return templates + +def itemChances(): + return [60,20,10,5] \ No newline at end of file diff --git a/scripts/lootPools/rareloot.py b/scripts/lootPools/rareloot.py new file mode 100644 index 00000000..e69de29b diff --git a/scripts/lootPools/rifles.py b/scripts/lootPools/rifles.py new file mode 100644 index 00000000..e69de29b diff --git a/scripts/lootPools/sithholocrons.py b/scripts/lootPools/sithholocrons.py new file mode 100644 index 00000000..e69de29b diff --git a/scripts/object/mobile/tusken_raider.py b/scripts/object/mobile/tusken_raider.py index 8c20d758..3a133a38 100644 --- a/scripts/object/mobile/tusken_raider.py +++ b/scripts/object/mobile/tusken_raider.py @@ -11,14 +11,14 @@ def setup(core, object): lootPoolNames_1 = ['Junk','Rifles'] lootPoolChances_1 = [90,70] lootGroupChance_1 = 80 - core.lootService.saveLootData(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) - #object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + #core.lootService.saveLootData(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) lootPoolNames2 = ['Colorcrystal'] lootPoolChances2 = [50] lootGroupChance2 = 60 #core.lootService.saveLootData(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) - #object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) #core.lootService.test3(allLootPoolNames) - return \ No newline at end of file + return \ No newline at end of file diff --git a/src/resources/objects/loot/LootGroup.java b/src/resources/objects/loot/LootGroup.java index 1558a624..efedc799 100644 --- a/src/resources/objects/loot/LootGroup.java +++ b/src/resources/objects/loot/LootGroup.java @@ -46,4 +46,16 @@ public class LootGroup { this.lootPoolChances = lootPoolChances; this.lootGroupChance = lootGroupChance; } + + public String[] getLootPoolNames() { + return lootPoolNames; + } + + public int[] getLootPoolChances() { + return lootPoolChances; + } + + public int getLootGroupChance() { + return lootGroupChance; + } } diff --git a/src/resources/objects/loot/LootPool.java b/src/resources/objects/loot/LootPool.java new file mode 100644 index 00000000..2e74cf8b --- /dev/null +++ b/src/resources/objects/loot/LootPool.java @@ -0,0 +1,33 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package resources.objects.loot; + +/** + * @author Charon + */ + +public class LootPool { + + public LootPool(){ + + } +} diff --git a/src/resources/objects/loot/LootRollSession.java b/src/resources/objects/loot/LootRollSession.java new file mode 100644 index 00000000..d2416102 --- /dev/null +++ b/src/resources/objects/loot/LootRollSession.java @@ -0,0 +1,33 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package resources.objects.loot; + +/** + * @author Charon + */ + +public class LootRollSession { + + public LootRollSession(){ + + } +} diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index 69dc7d65..be7d869e 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -453,6 +453,15 @@ public class TangibleObject extends SWGObject { } } + public List getLootGroups() { + return lootGroups; + } + + public void addToLootGroups(String[] lootPoolName, int[] lootPoolChance, int lootGroupChance) { + LootGroup lootGroup = new LootGroup(lootPoolName, lootPoolChance, lootGroupChance); + this.lootGroups.add(lootGroup); + } + @Override public void sendBaselines(Client destination) { @@ -477,13 +486,4 @@ public class TangibleObject extends SWGObject { } - - public List getLootGroups() { - return lootGroups; - } - - public void addToLootGroups(String[] lootPoolName, int[] lootPoolChance, int lootGroupChance) { - LootGroup lootGroup = new LootGroup(lootPoolName, lootPoolChance, lootGroupChance); - this.lootGroups.add(lootGroup); - } } diff --git a/src/services/LootService.java b/src/services/LootService.java index 32039cb5..04d44feb 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -35,6 +35,8 @@ import java.util.TreeSet; import resources.objects.creature.CreatureObject; import resources.objects.group.GroupObject; import resources.objects.loot.LootDrop; +import resources.objects.loot.LootGroup; +import resources.objects.loot.LootPool; import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; import resources.objects.tool.SurveyTool; @@ -89,32 +91,27 @@ public class LootService implements INetworkDispatch { } + CreatureObject lootedCreature = (CreatureObject) lootedObject; + List lootDrops = new ArrayList(); List lootElements = new ArrayList(); - TreeSet> lootSpec = lootedObject.getLootSpecification(); - Iterator> iterator = lootSpec.iterator(); + //TreeSet> lootSpec = lootedObject.getLootSpecification(); + List lootGroups = lootedCreature.getLootGroups(); + Iterator iterator = lootGroups.iterator(); while (iterator.hasNext()){ - TreeMap lootPool = iterator.next(); - int poolProbability = lootPool.lastEntry().getValue(); - int lootPoolRoll = new Random().nextInt(100); - if (lootPoolRoll <= poolProbability){ - lootElements = handleLootPool(lootPool); //this lootPool will drop + LootGroup lootGroup = iterator.next(); + int groupChance = lootGroup.getLootGroupChance(); + int lootGroupRoll = new Random().nextInt(100); + if (lootGroupRoll <= groupChance){ + handleLootGroup(lootGroup); //this lootGroup will drop something } } - - // Now handle the chosen pools and determine the according items - - for (String element : lootElements){ - lootDrops = handleLootPoolElement(element); - } - + // ********** Phase 1 complete, loot items determined ********** - // Distribute the loot drops according to group loot rules - - + // Distribute the loot drops according to group loot rules // For now just spawn items into requester's inventory for (LootDrop dropElem : lootDrops){ PlayerObject requesterObj = (PlayerObject) requester.getSlottedObject("ghost"); @@ -125,49 +122,42 @@ public class LootService implements INetworkDispatch { requesterInventory.add(droppedItem); } } - - - // ToDo: Group loot settings etc. - - // [20:35] <@_Light> your actual loot chance was lootgroupchance*lootchance - long leaderGroupId = requester.getGroupId(); - GroupObject group = (GroupObject) core.objectService.getObject(leaderGroupId); - if(group.getMemberList().size() == 1) { - // looter is alone - } + + // ToDo: Group loot settings etc. } - private List handleLootPool(TreeMap lootPool){ + private List handleLootGroup(LootGroup lootGroup){ List lootElements = new ArrayList(); - for(Map.Entry entry : lootPool.entrySet()) { - String poolElementName = entry.getKey(); - int poolElementProbability = entry.getValue(); + int[] lootPoolChances = lootGroup.getLootPoolChances(); + String[] lootPoolNames = lootGroup.getLootPoolNames(); + for(int i=0;i handleLootPoolElement(String element){ + private List handleLootPool(String poolName){ List lootDropList = new ArrayList(); - // This is just a random element from the python + LootDrop lootDrop = new LootDrop(); + // Fetch the loot pool data from the poolName.py script + + String path = "scripts/lootPools/"+poolName; // + ".py"; + //Vector quantityList = (Vector)core.scriptService.fetchStringVector(path,"resourceQuantities"); + +// for (String s : quantityList){ +// System.out.println("OOO: " + s); +// } + + //LootPool lootPool = loadfrompyreturn(); return lootDropList; } - - - public void test(TreeSet test1){ - - } - - public void test2(String test2){ - System.out.println(test2); - } - + public void saveLootData(String[] lootPoolName, int[] lootPoolChance, int lootGroupChance){ for (String ui : lootPoolName){ System.out.println(ui); @@ -178,8 +168,12 @@ public class LootService implements INetworkDispatch { System.out.println(lootGroupChance); - } - - - + } } + +////[20:35] <@_Light> your actual loot chance was lootgroupchance*lootchance +// long leaderGroupId = requester.getGroupId(); +// GroupObject group = (GroupObject) core.objectService.getObject(leaderGroupId); +// if(group.getMemberList().size() == 1) { +// // looter is alone +// } From 70964ef14aa637cabb5b6b0b225bb0f179167867 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Tue, 8 Apr 2014 15:39:48 +0200 Subject: [PATCH 36/79] Lootpool scripts added Data transfer from py script to java --- options.cfg | 2 +- scripts/lootPools/colorcrystals.py | 9 ++ scripts/lootPools/junk.py | 4 +- scripts/lootPools/rareloot.py | 9 ++ scripts/lootPools/rifles.py | 9 ++ scripts/object/mobile/tusken_raider.py | 20 ++-- src/resources/objects/loot/LootDrop.java | 9 ++ src/resources/objects/loot/LootGroup.java | 5 +- .../objects/loot/LootRollSession.java | 45 +++++++- .../objects/tangible/TangibleObject.java | 5 +- src/services/DevService.java | 4 +- src/services/LootService.java | 103 +++++++++--------- src/services/ScriptService.java | 23 ++++ 13 files changed, 175 insertions(+), 72 deletions(-) diff --git a/options.cfg b/options.cfg index cb743c88..9a9489b6 100644 --- a/options.cfg +++ b/options.cfg @@ -1,3 +1,3 @@ LOAD.SNAPSHOT_OBJECTS=0 LOAD.BUILDOUT_OBJECTS=0 -LOAD.RESOURCE.SYSTEM=1 \ No newline at end of file +LOAD.RESOURCE.SYSTEM=0 \ No newline at end of file diff --git a/scripts/lootPools/colorcrystals.py b/scripts/lootPools/colorcrystals.py index e69de29b..f5e4e85a 100644 --- a/scripts/lootPools/colorcrystals.py +++ b/scripts/lootPools/colorcrystals.py @@ -0,0 +1,9 @@ + + +def itemTemplates(): + + templates=['object/tangible/loot/npc_loot/shared_generic_crystal.iff'] + return templates + +def itemChances(): + return [70] \ No newline at end of file diff --git a/scripts/lootPools/junk.py b/scripts/lootPools/junk.py index 3a139e37..65deb632 100644 --- a/scripts/lootPools/junk.py +++ b/scripts/lootPools/junk.py @@ -1,8 +1,8 @@ def itemTemplates(): - templates=['1','2','3'] + templates=['object/tangible/loot/misc/shared_damaged_datapad.iff','object/tangible/loot/npc_loot/shared_red_wiring_generic.iff','object/tangible/loot/npc_loot/shared_worklight_generic.iff'] return templates def itemChances(): - return [1,2,3] \ No newline at end of file + return [70,50,40] \ No newline at end of file diff --git a/scripts/lootPools/rareloot.py b/scripts/lootPools/rareloot.py index e69de29b..19ffe37f 100644 --- a/scripts/lootPools/rareloot.py +++ b/scripts/lootPools/rareloot.py @@ -0,0 +1,9 @@ + + +def itemTemplates(): + + templates=['object/tangible/item/shared_rare_loot_chest_3.iff'] + return templates + +def itemChances(): + return [1] \ No newline at end of file diff --git a/scripts/lootPools/rifles.py b/scripts/lootPools/rifles.py index e69de29b..c3402805 100644 --- a/scripts/lootPools/rifles.py +++ b/scripts/lootPools/rifles.py @@ -0,0 +1,9 @@ + + +def itemTemplates(): + + templates=['object/weapon/ranged/rifle/shared_rifle_cdef.iff'] + return templates + +def itemChances(): + return [70] \ No newline at end of file diff --git a/scripts/object/mobile/tusken_raider.py b/scripts/object/mobile/tusken_raider.py index 3a133a38..d4aa322f 100644 --- a/scripts/object/mobile/tusken_raider.py +++ b/scripts/object/mobile/tusken_raider.py @@ -1,24 +1,20 @@ import sys -from java.util import TreeSet -from java.util import TreeMap def setup(core, object): - lootSpecification = TreeSet() - #lootSpecification = [[['Junk',90],['Rifles',70],['ParentProbability',60]],[['Colorcrystal',100],['ParentProbability',50]]] - #object.setLootSpecification(lootSpecification) - lootPoolNames_1 = ['Junk','Rifles'] lootPoolChances_1 = [90,70] lootGroupChance_1 = 80 - #core.lootService.saveLootData(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) - lootPoolNames2 = ['Colorcrystal'] - lootPoolChances2 = [50] - lootGroupChance2 = 60 - #core.lootService.saveLootData(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + lootPoolNames_2 = ['Colorcrystals'] + lootPoolChances_2 = [50] + lootGroupChance_2 = 60 object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) - #core.lootService.test3(allLootPoolNames) + lootPoolNames_3 = ['Rareloot'] + lootPoolChances_3 = [100] + lootGroupChance_3 = 1 + object.addToLootGroups(lootPoolNames_3,lootPoolChances_3,lootGroupChance_3) + return \ No newline at end of file diff --git a/src/resources/objects/loot/LootDrop.java b/src/resources/objects/loot/LootDrop.java index 08e01fbf..371c1727 100644 --- a/src/resources/objects/loot/LootDrop.java +++ b/src/resources/objects/loot/LootDrop.java @@ -27,6 +27,7 @@ import java.util.List; public class LootDrop { private List elements = new ArrayList(); + private String droppedItemTemplate; public LootDrop(){ @@ -39,4 +40,12 @@ public class LootDrop { public List getElements(){ return elements; } + + public String getDroppedItemTemplate() { + return droppedItemTemplate; + } + + public void setDroppedItemTemplate(String droppedItemTemplate) { + this.droppedItemTemplate = droppedItemTemplate; + } } diff --git a/src/resources/objects/loot/LootGroup.java b/src/resources/objects/loot/LootGroup.java index efedc799..e349eaac 100644 --- a/src/resources/objects/loot/LootGroup.java +++ b/src/resources/objects/loot/LootGroup.java @@ -21,10 +21,13 @@ ******************************************************************************/ package resources.objects.loot; +import com.sleepycat.persist.model.Persistent; + /** * @author Charon */ +@Persistent(version=0) public class LootGroup { private String[] lootPoolNames; @@ -35,7 +38,7 @@ public class LootGroup { } - public LootGroup(String[] lootPoolName, int[] lootPoolChance, int lootGroupChance){ + public LootGroup(String[] lootPoolNames, int[] lootPoolChances, int lootGroupChance){ this.lootPoolNames = lootPoolNames; this.lootPoolChances = lootPoolChances; this.lootGroupChance = lootGroupChance; diff --git a/src/resources/objects/loot/LootRollSession.java b/src/resources/objects/loot/LootRollSession.java index d2416102..5d1937b6 100644 --- a/src/resources/objects/loot/LootRollSession.java +++ b/src/resources/objects/loot/LootRollSession.java @@ -21,13 +21,54 @@ ******************************************************************************/ package resources.objects.loot; +import java.util.ArrayList; +import java.util.List; + +import main.NGECore; +import resources.objects.creature.CreatureObject; +import resources.objects.group.GroupObject; + /** * @author Charon */ public class LootRollSession { - public LootRollSession(){ - + private String SessionID; // leaderName-SystemTime + private GroupObject playerGroup; + private List droppedItemTemplates; + + public LootRollSession(){ + } + + public LootRollSession(CreatureObject requester){ + long requesterGroupId = requester.getGroupId(); + if (requesterGroupId>0){ + this.playerGroup = (GroupObject) NGECore.getInstance().objectService.getObject(requesterGroupId); + this.SessionID = playerGroup.getGroupLeader().getCustomName()+"-"+System.currentTimeMillis(); + } else { + this.SessionID = requester.getCustomName()+"-"+System.currentTimeMillis(); + } + droppedItemTemplates = new ArrayList(); + } + + public List getDroppedItemTemplates() { + return droppedItemTemplates; + } + + public void addDroppedItemTemplate(String droppedItemTemplate) { + this.droppedItemTemplates.add(droppedItemTemplate); + } + + public String getSessionID() { + return SessionID; + } + + public void setSessionID(String sessionID) { + SessionID = sessionID; + } + + public void generateSessionID(String sessionID) { + SessionID = sessionID; } } diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index be7d869e..7ac2c6ea 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -457,8 +457,9 @@ public class TangibleObject extends SWGObject { return lootGroups; } - public void addToLootGroups(String[] lootPoolName, int[] lootPoolChance, int lootGroupChance) { - LootGroup lootGroup = new LootGroup(lootPoolName, lootPoolChance, lootGroupChance); + public void addToLootGroups(String[] lootPoolNames, int[] lootPoolChances, int lootGroupChance) { + System.out.println("lootPoolNames[0] " + lootPoolNames[0]); + LootGroup lootGroup = new LootGroup(lootPoolNames, lootPoolChances, lootGroupChance); this.lootGroups.add(lootGroup); } diff --git a/src/services/DevService.java b/src/services/DevService.java index 306958f1..ca387de1 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -997,7 +997,9 @@ public class DevService implements INetworkDispatch { break; case 111: - core.staticService.spawnObject("object/mobile/shared_tusken_raider.iff", "tatooine", 0L, 3522F, 4F, -4801F, 0.70F, 0.71F); + SWGObject spawned = core.staticService.spawnObject("object/mobile/shared_tusken_raider.iff", "tatooine", 0L, 3522F, 4F, -4801F, 0.70F, 0.71F); + + core.lootService.handleLootRequest(player,(TangibleObject)spawned); break; } } diff --git a/src/services/LootService.java b/src/services/LootService.java index 04d44feb..7ad8fdb8 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -31,12 +31,14 @@ import java.util.Map.Entry; import java.util.Random; import java.util.TreeMap; import java.util.TreeSet; +import java.util.Vector; import resources.objects.creature.CreatureObject; import resources.objects.group.GroupObject; import resources.objects.loot.LootDrop; import resources.objects.loot.LootGroup; import resources.objects.loot.LootPool; +import resources.objects.loot.LootRollSession; import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; import resources.objects.tool.SurveyTool; @@ -70,6 +72,7 @@ public class LootService implements INetworkDispatch { public void handleLootRequest(CreatureObject requester, TangibleObject lootedObject) { + LootRollSession lootRollSession = new LootRollSession(requester); String lootedObjectType = "Tangible"; if (lootedObject instanceof CreatureObject) lootedObjectType = "Creature"; @@ -80,9 +83,12 @@ public class LootService implements INetworkDispatch { if (lootedObjectType.equals("Creature")){ CreatureObject lootedCreature = (CreatureObject) lootedObject; int creatureCL = lootedCreature.getLevel(); + creatureCL = 90; int minimalCredits = 40 * creatureCL; // Predetermined factor of 40 per CL int spanOfCredits = 15 * creatureCL; // Predetermined factor of 15 per CL + System.out.println("spanOfCredits " + spanOfCredits); lootedCredits = minimalCredits + new Random().nextInt(spanOfCredits); + requester.sendSystemMessage("You looted " + lootedCredits + " credits.", (byte)1); } if (lootedObjectType.equals("Tangible")){ @@ -93,11 +99,9 @@ public class LootService implements INetworkDispatch { CreatureObject lootedCreature = (CreatureObject) lootedObject; - List lootDrops = new ArrayList(); - List lootElements = new ArrayList(); - //TreeSet> lootSpec = lootedObject.getLootSpecification(); List lootGroups = lootedCreature.getLootGroups(); + System.out.println("lootGroups size " + lootGroups.size()); Iterator iterator = lootGroups.iterator(); while (iterator.hasNext()){ @@ -105,75 +109,72 @@ public class LootService implements INetworkDispatch { int groupChance = lootGroup.getLootGroupChance(); int lootGroupRoll = new Random().nextInt(100); if (lootGroupRoll <= groupChance){ - handleLootGroup(lootGroup); //this lootGroup will drop something + System.out.println("this lootGroup will drop something"); + handleLootGroup(lootGroup,lootRollSession); //this lootGroup will drop something } } + + for (String s : lootRollSession.getDroppedItemTemplates()){ + System.out.println("lootRollSession template: " + s); + } + // ********** Phase 1 complete, loot items determined ********** + // stored in the lootSession // Distribute the loot drops according to group loot rules // For now just spawn items into requester's inventory - for (LootDrop dropElem : lootDrops){ - PlayerObject requesterObj = (PlayerObject) requester.getSlottedObject("ghost"); - SWGObject requesterInventory = requesterObj.getSlottedObject("inventory"); - List elementList = dropElem.getElements(); - for (String template : elementList){ - TangibleObject droppedItem = (TangibleObject) core.objectService.createObject(template, requester.getPlanet()); - requesterInventory.add(droppedItem); - } - } - - // ToDo: Group loot settings etc. + SWGObject requesterInventory = requester.getSlottedObject("inventory"); + System.out.println("requesterInventory " + requesterInventory); + for (String template : lootRollSession.getDroppedItemTemplates()){ + TangibleObject droppedItem = (TangibleObject) core.objectService.createObject(template, requester.getPlanet()); + System.out.println("droppedItem " + droppedItem); + requesterInventory.add(droppedItem); + } + + // ToDo: Group loot settings etc. actual loot chance was lootgroupchance*lootchance } - private List handleLootGroup(LootGroup lootGroup){ - List lootElements = new ArrayList(); + private void handleLootGroup(LootGroup lootGroup,LootRollSession lootRollSession){ + int[] lootPoolChances = lootGroup.getLootPoolChances(); String[] lootPoolNames = lootGroup.getLootPoolNames(); + if (lootPoolChances==null || lootPoolNames==null){ + System.err.println("Lootpools are null!"); + return; + } + if (lootPoolChances.length==0 || lootPoolNames.length==0){ + System.err.println("No Lootpools in Lootgroup!"); + return; + } for(int i=0;i handleLootPool(String poolName){ - List lootDropList = new ArrayList(); - LootDrop lootDrop = new LootDrop(); - // Fetch the loot pool data from the poolName.py script - - String path = "scripts/lootPools/"+poolName; // + ".py"; - //Vector quantityList = (Vector)core.scriptService.fetchStringVector(path,"resourceQuantities"); - -// for (String s : quantityList){ -// System.out.println("OOO: " + s); -// } - - //LootPool lootPool = loadfrompyreturn(); - - return lootDropList; - } + private void handleLootPool(String poolName,LootRollSession lootRollSession){ - public void saveLootData(String[] lootPoolName, int[] lootPoolChance, int lootGroupChance){ - for (String ui : lootPoolName){ - System.out.println(ui); - } - for (int ui : lootPoolChance){ - System.out.println(ui); + // Fetch the loot pool data from the poolName.py script + String path = "scripts/lootPools/"+poolName.toLowerCase(); + Vector itemTemplates = (Vector)core.scriptService.fetchStringVector(path,"itemTemplates"); + + for (String s : itemTemplates){ + System.out.println("template: " + s); } - System.out.println(lootGroupChance); + Vector itemChances = (Vector)core.scriptService.fetchIntegerVector(path,"itemChances"); + // Now here maybe all items in pool have an equal chance to spawn + // or they have percentages assigned to them as well + + int randomItemFromPool = new Random().nextInt(100); + int itemIndex = (int)Math.floor(randomItemFromPool/100*itemTemplates.size()); // 5 Elements,rnd is 83 -> 0.83*5= + + lootRollSession.addDroppedItemTemplate(itemTemplates.get(itemIndex)); } -} - -////[20:35] <@_Light> your actual loot chance was lootgroupchance*lootchance -// long leaderGroupId = requester.getGroupId(); -// GroupObject group = (GroupObject) core.objectService.getObject(leaderGroupId); -// if(group.getMemberList().size() == 1) { -// // looter is alone -// } +} diff --git a/src/services/ScriptService.java b/src/services/ScriptService.java index 9ea1c999..ba1ea259 100644 --- a/src/services/ScriptService.java +++ b/src/services/ScriptService.java @@ -21,6 +21,9 @@ ******************************************************************************/ package services; +import java.util.Iterator; +import java.util.Vector; + import org.python.core.Py; import org.python.core.PyObject; import org.python.util.PythonInterpreter; @@ -107,4 +110,24 @@ public class ScriptService { return func; } + public Vector fetchStringVector(String path, String method) { + Vector vector = new Vector(); + PyObject result = core.scriptService.callScript(path, "", method); + Iterable comp = (Iterable)result.asIterable(); + for (Iterator temp = comp.iterator(); temp.hasNext();){ + vector.add(temp.next().asString()); + } + return vector; + } + + public Vector fetchIntegerVector(String path, String method) { + Vector vector = new Vector(); + PyObject result = core.scriptService.callScript(path, "", method); + Iterable comp = (Iterable)result.asIterable(); + for (Iterator temp = comp.iterator(); temp.hasNext();){ + vector.add(temp.next().asInt()); + } + return vector; + } + } From c5fdad3092a6d563ad47d85fee0f875cb053dc23 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Tue, 8 Apr 2014 22:36:43 +0200 Subject: [PATCH 37/79] crystal template change --- scripts/lootPools/colorcrystals.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/lootPools/colorcrystals.py b/scripts/lootPools/colorcrystals.py index f5e4e85a..714a540c 100644 --- a/scripts/lootPools/colorcrystals.py +++ b/scripts/lootPools/colorcrystals.py @@ -2,7 +2,7 @@ def itemTemplates(): - templates=['object/tangible/loot/npc_loot/shared_generic_crystal.iff'] + templates=['object/tangible/component/weapon/lightsaber/lightsaber_module_force_crystal.iff'] return templates def itemChances(): From 5dcd7801959d2b37ba858e8a8763a7b6acd75acd Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Tue, 8 Apr 2014 22:37:21 +0200 Subject: [PATCH 38/79] Math change --- src/services/LootService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/services/LootService.java b/src/services/LootService.java index 7ad8fdb8..a7376d69 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -84,9 +84,9 @@ public class LootService implements INetworkDispatch { CreatureObject lootedCreature = (CreatureObject) lootedObject; int creatureCL = lootedCreature.getLevel(); creatureCL = 90; - int minimalCredits = 40 * creatureCL; // Predetermined factor of 40 per CL - int spanOfCredits = 15 * creatureCL; // Predetermined factor of 15 per CL - System.out.println("spanOfCredits " + spanOfCredits); + int maximalCredits = (int)Math.floor(4*creatureCL + creatureCL*creatureCL*4/100); + int minimalCredits = (int)Math.floor(creatureCL*2 + maximalCredits/2); + int spanOfCredits = maximalCredits - minimalCredits; lootedCredits = minimalCredits + new Random().nextInt(spanOfCredits); requester.sendSystemMessage("You looted " + lootedCredits + " credits.", (byte)1); } From 4d264f8c8a23736d2631463c70d66ed4d22159f4 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Wed, 9 Apr 2014 04:57:26 +0200 Subject: [PATCH 39/79] Refined the loot system Added more py scripts for krayt pearls and junk Made system more flexible --- scripts/loot/lootItems/colorcrystal.py | 21 +++ scripts/loot/lootItems/damaged_datapad.py | 20 +++ scripts/loot/lootItems/kraytpearl_cracked.py | 8 + scripts/loot/lootItems/kraytpearl_fair.py | 8 + scripts/loot/lootItems/kraytpearl_flawless.py | 8 + scripts/loot/lootItems/kraytpearl_good.py | 8 + scripts/loot/lootItems/kraytpearl_poor.py | 8 + scripts/loot/lootItems/kraytpearl_premium.py | 8 + scripts/loot/lootItems/kraytpearl_quality.py | 8 + .../loot/lootItems/kraytpearl_scratched.py | 8 + scripts/loot/lootItems/kraytpearl_select.py | 8 + scripts/loot/lootItems/red_wiring.py | 20 +++ scripts/loot/lootItems/shared_rifle_cdef.py | 20 +++ scripts/loot/lootItems/worklight_generic.py | 21 +++ scripts/loot/lootPools/colorcrystals.py | 8 + scripts/{ => loot}/lootPools/jediholocrons.py | 0 scripts/loot/lootPools/junk.py | 8 + scripts/loot/lootPools/kraytpearl_lowq.py | 8 + scripts/loot/lootPools/kraytpearls_range.py | 6 + scripts/{ => loot}/lootPools/rareloot.py | 2 +- scripts/loot/lootPools/rifles.py | 8 + scripts/{ => loot}/lootPools/sithholocrons.py | 0 scripts/lootPools/colorcrystals.py | 9 - scripts/lootPools/junk.py | 8 - scripts/lootPools/kraytpearls.py | 8 - scripts/lootPools/rifles.py | 9 - scripts/object/mobile/krayt_dragon.py | 13 +- scripts/object/mobile/tusken_raider.py | 6 +- .../objects/loot/LootRollSession.java | 20 ++- .../objects/tangible/TangibleObject.java | 2 +- src/services/LootService.java | 155 ++++++++++++++---- src/services/ScriptService.java | 10 ++ 32 files changed, 372 insertions(+), 82 deletions(-) create mode 100644 scripts/loot/lootItems/colorcrystal.py create mode 100644 scripts/loot/lootItems/damaged_datapad.py create mode 100644 scripts/loot/lootItems/kraytpearl_cracked.py create mode 100644 scripts/loot/lootItems/kraytpearl_fair.py create mode 100644 scripts/loot/lootItems/kraytpearl_flawless.py create mode 100644 scripts/loot/lootItems/kraytpearl_good.py create mode 100644 scripts/loot/lootItems/kraytpearl_poor.py create mode 100644 scripts/loot/lootItems/kraytpearl_premium.py create mode 100644 scripts/loot/lootItems/kraytpearl_quality.py create mode 100644 scripts/loot/lootItems/kraytpearl_scratched.py create mode 100644 scripts/loot/lootItems/kraytpearl_select.py create mode 100644 scripts/loot/lootItems/red_wiring.py create mode 100644 scripts/loot/lootItems/shared_rifle_cdef.py create mode 100644 scripts/loot/lootItems/worklight_generic.py create mode 100644 scripts/loot/lootPools/colorcrystals.py rename scripts/{ => loot}/lootPools/jediholocrons.py (100%) create mode 100644 scripts/loot/lootPools/junk.py create mode 100644 scripts/loot/lootPools/kraytpearl_lowq.py create mode 100644 scripts/loot/lootPools/kraytpearls_range.py rename scripts/{ => loot}/lootPools/rareloot.py (85%) create mode 100644 scripts/loot/lootPools/rifles.py rename scripts/{ => loot}/lootPools/sithholocrons.py (100%) delete mode 100644 scripts/lootPools/colorcrystals.py delete mode 100644 scripts/lootPools/junk.py delete mode 100644 scripts/lootPools/kraytpearls.py delete mode 100644 scripts/lootPools/rifles.py diff --git a/scripts/loot/lootItems/colorcrystal.py b/scripts/loot/lootItems/colorcrystal.py new file mode 100644 index 00000000..cce04300 --- /dev/null +++ b/scripts/loot/lootItems/colorcrystal.py @@ -0,0 +1,21 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_force_crystal.iff' + +def customItemName(): + + return '' + +def customItemStackCount(): + + return 1 + +def customizationAttributes(): + + return [] + +def customizationValues(): + + return [] + diff --git a/scripts/loot/lootItems/damaged_datapad.py b/scripts/loot/lootItems/damaged_datapad.py new file mode 100644 index 00000000..7757a473 --- /dev/null +++ b/scripts/loot/lootItems/damaged_datapad.py @@ -0,0 +1,20 @@ + +def itemTemplate(): + + return 'object/tangible/loot/misc/shared_damaged_datapad.iff' + +def customItemName(): + + return '' + +def customItemStackCount(): + + return 1 + +def customizationAttributes(): + + return [] + +def customizationValues(): + + return [] \ No newline at end of file diff --git a/scripts/loot/lootItems/kraytpearl_cracked.py b/scripts/loot/lootItems/kraytpearl_cracked.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_cracked.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_fair.py b/scripts/loot/lootItems/kraytpearl_fair.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_fair.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_flawless.py b/scripts/loot/lootItems/kraytpearl_flawless.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_flawless.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_good.py b/scripts/loot/lootItems/kraytpearl_good.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_good.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_poor.py b/scripts/loot/lootItems/kraytpearl_poor.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_poor.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_premium.py b/scripts/loot/lootItems/kraytpearl_premium.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_premium.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_quality.py b/scripts/loot/lootItems/kraytpearl_quality.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_quality.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_scratched.py b/scripts/loot/lootItems/kraytpearl_scratched.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_scratched.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_select.py b/scripts/loot/lootItems/kraytpearl_select.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_select.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/red_wiring.py b/scripts/loot/lootItems/red_wiring.py new file mode 100644 index 00000000..483dc8f7 --- /dev/null +++ b/scripts/loot/lootItems/red_wiring.py @@ -0,0 +1,20 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_red_wiring_generic.iff' + +def customItemName(): + + return '' + +def customItemStackCount(): + + return 1 + +def customizationAttributes(): + + return [] + +def customizationValues(): + + return [] diff --git a/scripts/loot/lootItems/shared_rifle_cdef.py b/scripts/loot/lootItems/shared_rifle_cdef.py new file mode 100644 index 00000000..0d683b7f --- /dev/null +++ b/scripts/loot/lootItems/shared_rifle_cdef.py @@ -0,0 +1,20 @@ + +def itemTemplate(): + + return 'object/weapon/ranged/rifle/shared_rifle_cdef.iff' + +def customItemName(): + + return '' + +def customItemStackCount(): + + return 1 + +def customizationAttributes(): + + return [] + +def customizationValues(): + + return [] diff --git a/scripts/loot/lootItems/worklight_generic.py b/scripts/loot/lootItems/worklight_generic.py new file mode 100644 index 00000000..86a9231b --- /dev/null +++ b/scripts/loot/lootItems/worklight_generic.py @@ -0,0 +1,21 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_worklight_generic.iff' + +def customItemName(): + + return '' + +def customItemStackCount(): + + return 1 + +def customizationAttributes(): + + return [] + +def customizationValues(): + + return [] + diff --git a/scripts/loot/lootPools/colorcrystals.py b/scripts/loot/lootPools/colorcrystals.py new file mode 100644 index 00000000..d372b968 --- /dev/null +++ b/scripts/loot/lootPools/colorcrystals.py @@ -0,0 +1,8 @@ + +def itemNames(): + + return ['colorCrystal'] + +def itemChances(): + + return [70] \ No newline at end of file diff --git a/scripts/lootPools/jediholocrons.py b/scripts/loot/lootPools/jediholocrons.py similarity index 100% rename from scripts/lootPools/jediholocrons.py rename to scripts/loot/lootPools/jediholocrons.py diff --git a/scripts/loot/lootPools/junk.py b/scripts/loot/lootPools/junk.py new file mode 100644 index 00000000..32ec26c3 --- /dev/null +++ b/scripts/loot/lootPools/junk.py @@ -0,0 +1,8 @@ + +def itemNames(): + + templates=['damaged_datapad','red_wiring','worklight_generic'] + return templates + +def itemChances(): + return [70,50,40] \ No newline at end of file diff --git a/scripts/loot/lootPools/kraytpearl_lowq.py b/scripts/loot/lootPools/kraytpearl_lowq.py new file mode 100644 index 00000000..4fe709c2 --- /dev/null +++ b/scripts/loot/lootPools/kraytpearl_lowq.py @@ -0,0 +1,8 @@ + +def itemNames(): + + return ['kraytpearl_cracked','kraytpearl_scratched','kraytpearl_poor'] + +def itemChances(): + + return [33,33,34] \ No newline at end of file diff --git a/scripts/loot/lootPools/kraytpearls_range.py b/scripts/loot/lootPools/kraytpearls_range.py new file mode 100644 index 00000000..23477840 --- /dev/null +++ b/scripts/loot/lootPools/kraytpearls_range.py @@ -0,0 +1,6 @@ + +def itemTemplates(): + return ['kraytpearl_fair','kraytpearl_good','kraytpearl_quality','kraytpearl_select','kraytpearl_premium','kraytpearl_flawless'] + +def itemChances(): + return [10,20,30,34,5,1] #= 100% \ No newline at end of file diff --git a/scripts/lootPools/rareloot.py b/scripts/loot/lootPools/rareloot.py similarity index 85% rename from scripts/lootPools/rareloot.py rename to scripts/loot/lootPools/rareloot.py index 19ffe37f..4487075d 100644 --- a/scripts/lootPools/rareloot.py +++ b/scripts/loot/lootPools/rareloot.py @@ -1,6 +1,6 @@ -def itemTemplates(): +def itemNames(): templates=['object/tangible/item/shared_rare_loot_chest_3.iff'] return templates diff --git a/scripts/loot/lootPools/rifles.py b/scripts/loot/lootPools/rifles.py new file mode 100644 index 00000000..c24909b7 --- /dev/null +++ b/scripts/loot/lootPools/rifles.py @@ -0,0 +1,8 @@ + +def itemNames(): + + return ['shared_rifle_cdef'] + +def itemChances(): + return [100] + \ No newline at end of file diff --git a/scripts/lootPools/sithholocrons.py b/scripts/loot/lootPools/sithholocrons.py similarity index 100% rename from scripts/lootPools/sithholocrons.py rename to scripts/loot/lootPools/sithholocrons.py diff --git a/scripts/lootPools/colorcrystals.py b/scripts/lootPools/colorcrystals.py deleted file mode 100644 index 714a540c..00000000 --- a/scripts/lootPools/colorcrystals.py +++ /dev/null @@ -1,9 +0,0 @@ - - -def itemTemplates(): - - templates=['object/tangible/component/weapon/lightsaber/lightsaber_module_force_crystal.iff'] - return templates - -def itemChances(): - return [70] \ No newline at end of file diff --git a/scripts/lootPools/junk.py b/scripts/lootPools/junk.py deleted file mode 100644 index 65deb632..00000000 --- a/scripts/lootPools/junk.py +++ /dev/null @@ -1,8 +0,0 @@ - -def itemTemplates(): - - templates=['object/tangible/loot/misc/shared_damaged_datapad.iff','object/tangible/loot/npc_loot/shared_red_wiring_generic.iff','object/tangible/loot/npc_loot/shared_worklight_generic.iff'] - return templates - -def itemChances(): - return [70,50,40] \ No newline at end of file diff --git a/scripts/lootPools/kraytpearls.py b/scripts/lootPools/kraytpearls.py deleted file mode 100644 index 8463ef39..00000000 --- a/scripts/lootPools/kraytpearls.py +++ /dev/null @@ -1,8 +0,0 @@ - -def itemTemplates(): - - templates=['1','2','3','Flawless'] - return templates - -def itemChances(): - return [60,20,10,5] \ No newline at end of file diff --git a/scripts/lootPools/rifles.py b/scripts/lootPools/rifles.py deleted file mode 100644 index c3402805..00000000 --- a/scripts/lootPools/rifles.py +++ /dev/null @@ -1,9 +0,0 @@ - - -def itemTemplates(): - - templates=['object/weapon/ranged/rifle/shared_rifle_cdef.iff'] - return templates - -def itemChances(): - return [70] \ No newline at end of file diff --git a/scripts/object/mobile/krayt_dragon.py b/scripts/object/mobile/krayt_dragon.py index ccad8904..c65d802c 100644 --- a/scripts/object/mobile/krayt_dragon.py +++ b/scripts/object/mobile/krayt_dragon.py @@ -1,4 +1,15 @@ import sys def setup(core, object): - return \ No newline at end of file + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['kraytpearl_loq'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + return \ No newline at end of file diff --git a/scripts/object/mobile/tusken_raider.py b/scripts/object/mobile/tusken_raider.py index d4aa322f..961975a9 100644 --- a/scripts/object/mobile/tusken_raider.py +++ b/scripts/object/mobile/tusken_raider.py @@ -4,12 +4,12 @@ def setup(core, object): lootPoolNames_1 = ['Junk','Rifles'] lootPoolChances_1 = [90,70] - lootGroupChance_1 = 80 + lootGroupChance_1 = 90 object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) lootPoolNames_2 = ['Colorcrystals'] - lootPoolChances_2 = [50] - lootGroupChance_2 = 60 + lootPoolChances_2 = [100] + lootGroupChance_2 = 20 object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) lootPoolNames_3 = ['Rareloot'] diff --git a/src/resources/objects/loot/LootRollSession.java b/src/resources/objects/loot/LootRollSession.java index 5d1937b6..62d12077 100644 --- a/src/resources/objects/loot/LootRollSession.java +++ b/src/resources/objects/loot/LootRollSession.java @@ -24,9 +24,11 @@ package resources.objects.loot; import java.util.ArrayList; import java.util.List; +import engine.resources.scene.Planet; import main.NGECore; import resources.objects.creature.CreatureObject; import resources.objects.group.GroupObject; +import resources.objects.tangible.TangibleObject; /** * @author Charon @@ -36,7 +38,8 @@ public class LootRollSession { private String SessionID; // leaderName-SystemTime private GroupObject playerGroup; - private List droppedItemTemplates; + private List droppedItems; + private Planet sessionPlanet; public LootRollSession(){ } @@ -49,15 +52,16 @@ public class LootRollSession { } else { this.SessionID = requester.getCustomName()+"-"+System.currentTimeMillis(); } - droppedItemTemplates = new ArrayList(); + droppedItems = new ArrayList(); + sessionPlanet = requester.getPlanet(); } - public List getDroppedItemTemplates() { - return droppedItemTemplates; + public List getDroppedItems() { + return droppedItems; } - public void addDroppedItemTemplate(String droppedItemTemplate) { - this.droppedItemTemplates.add(droppedItemTemplate); + public void addDroppedItem(TangibleObject droppedItem) { + this.droppedItems.add(droppedItem); } public String getSessionID() { @@ -71,4 +75,8 @@ public class LootRollSession { public void generateSessionID(String sessionID) { SessionID = sessionID; } + + public Planet getSessionPlanet() { + return sessionPlanet; + } } diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index 7ac2c6ea..ee415959 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -60,7 +60,7 @@ import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Persistent(version=2) +@Persistent(version=3) public class TangibleObject extends SWGObject { // TODO: Thread safety diff --git a/src/services/LootService.java b/src/services/LootService.java index a7376d69..b16a125d 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -21,29 +21,18 @@ ******************************************************************************/ package services; -import java.util.ArrayList; -import java.util.HashMap; import java.util.Iterator; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Random; -import java.util.TreeMap; -import java.util.TreeSet; import java.util.Vector; - import resources.objects.creature.CreatureObject; -import resources.objects.group.GroupObject; -import resources.objects.loot.LootDrop; import resources.objects.loot.LootGroup; -import resources.objects.loot.LootPool; import resources.objects.loot.LootRollSession; -import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; -import resources.objects.tool.SurveyTool; import main.NGECore; import engine.resources.objects.SWGObject; +import engine.resources.scene.Planet; import engine.resources.service.INetworkDispatch; import engine.resources.service.INetworkRemoteEvent; @@ -110,27 +99,23 @@ public class LootService implements INetworkDispatch { int lootGroupRoll = new Random().nextInt(100); if (lootGroupRoll <= groupChance){ System.out.println("this lootGroup will drop something"); - handleLootGroup(lootGroup,lootRollSession); //this lootGroup will drop something + handleLootGroup(lootGroup,lootRollSession); //this lootGroup will drop something e.g. {kraytpearl_range,krayt_tissue_rare} } } - for (String s : lootRollSession.getDroppedItemTemplates()){ - System.out.println("lootRollSession template: " + s); - } - // ********** Phase 1 complete, loot items determined ********** // stored in the lootSession // Distribute the loot drops according to group loot rules // For now just spawn items into requester's inventory SWGObject requesterInventory = requester.getSlottedObject("inventory"); - System.out.println("requesterInventory " + requesterInventory); - for (String template : lootRollSession.getDroppedItemTemplates()){ - TangibleObject droppedItem = (TangibleObject) core.objectService.createObject(template, requester.getPlanet()); - System.out.println("droppedItem " + droppedItem); + + for (TangibleObject droppedItem : lootRollSession.getDroppedItems()){ + requesterInventory.add(droppedItem); } + // ToDo: Group loot settings etc. actual loot chance was lootgroupchance*lootchance } @@ -148,33 +133,131 @@ public class LootService implements INetworkDispatch { System.err.println("No Lootpools in Lootgroup!"); return; } + + int randomItemFromGroup = new Random().nextInt(100); + int remainder = 0; // [10,20,30,34,5,1] + for(int i=0;i itemTemplates = (Vector)core.scriptService.fetchStringVector(path,"itemTemplates"); + String path = "scripts/loot/lootPools/"+poolName.toLowerCase(); + Vector itemNames = (Vector)core.scriptService.fetchStringVector(path,"itemNames"); - for (String s : itemTemplates){ + for (String s : itemNames){ System.out.println("template: " + s); } Vector itemChances = (Vector)core.scriptService.fetchIntegerVector(path,"itemChances"); - - // Now here maybe all items in pool have an equal chance to spawn - // or they have percentages assigned to them as well - + int randomItemFromPool = new Random().nextInt(100); - int itemIndex = (int)Math.floor(randomItemFromPool/100*itemTemplates.size()); // 5 Elements,rnd is 83 -> 0.83*5= + int remainder = 0; // [10,20,30,34,5,1] - lootRollSession.addDroppedItemTemplate(itemTemplates.get(itemIndex)); + for (int i=0;i customizationAttributes = (Vector)core.scriptService.fetchStringVector(path,"customizationAttributes"); + Vector customizationValues = (Vector)core.scriptService.fetchIntegerVector(path,"customizationValues"); + + System.out.println("itemTemplate " + itemTemplate); + + /* + craftingValues = { + {"mindamage",25,35,0}, + {"maxdamage",40,50,0}, + {"attackspeed",1,-1,5}, + {"woundchance",4,8,5}, + {"hitpoints",800,1200,0}, + {"attackhealthcost",0,9,0}, + {"attackactioncost",0,9,0}, + {"attackmindcost",0,9,0}, + {"forcecost",0,9.9,0}, + {"color",31,31,0}, + {"quality",6,6,0}, + }, + */ + + + + + + + + + TangibleObject droppedItem = createDroppedItem(itemTemplate,lootRollSession.getSessionPlanet()); + + handleCustomDropName(droppedItem); + handleStats(droppedItem); + setCustomization(droppedItem); + + lootRollSession.addDroppedItem(droppedItem); + } + + + + private void handleCustomDropName(TangibleObject droppedItem) { + String customName = droppedItem.getCustomName(); + + if (customName!=null) { + if (customName.charAt(0) == '@' || customName.contains("_n:")) { + customName = ""; // Look the name up in some tre table + } + } + droppedItem.setCustomName(customName); + } + + private TangibleObject createDroppedItem(String template,Planet planet){ + TangibleObject droppedItem = (TangibleObject) core.objectService.createObject(template, planet); + System.out.println("droppedItem " + droppedItem); + return droppedItem; + } + + + + private void setCustomization(TangibleObject droppedItem) { + + // Example color crystal + droppedItem.setCustomizationVariable("/private/index_color_1", (byte) new Random().nextInt(7)); // 4 blue + + // More general +// String path = "scripts/loot/lootItems/"+droppedItem.getCustomName().toLowerCase(); +// Vector customizationPaths = (Vector)core.scriptService.fetchStringVector(path,"itemCustomizationPaths"); +// Vector customizationValues = (Vector)core.scriptService.fetchIntegerVector(path,"itemCustomizationValues"); +// for (int i=0;i fetchStringVector(String path, String method) { Vector vector = new Vector(); PyObject result = core.scriptService.callScript(path, "", method); From 118d622c6d0b1a43eaa5b53faaef9347236de5f0 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Wed, 9 Apr 2014 21:16:28 +0200 Subject: [PATCH 40/79] More Junk, Krayt Pearls added The System has been more generalized, but also deals with special cases of Krayt Pearls/Power Crystals. More itemscripts created --- scripts/loot/lootItems/damaged_datapad.py | 20 -- scripts/loot/lootItems/junk/antenna.py | 4 + .../lootItems/junk/armor_repair_device.py | 4 + scripts/loot/lootItems/junk/brain.py | 4 + .../loot/lootItems/junk/chassis_blueprint.py | 4 + scripts/loot/lootItems/junk/comlink.py | 8 + .../loot/lootItems/junk/damaged_datapad.py | 9 + scripts/loot/lootItems/junk/ear_jewel.py | 4 + scripts/loot/lootItems/junk/explosive_dud.py | 4 + scripts/loot/lootItems/junk/eye.py | 4 + scripts/loot/lootItems/junk/gland.py | 8 + scripts/loot/lootItems/junk/heart.py | 4 + .../loot/lootItems/junk/hyperdrive_unit.py | 4 + scripts/loot/lootItems/junk/id_chip.py | 8 + .../loot/lootItems/junk/impulse_detector.py | 4 + scripts/loot/lootItems/junk/laser_trap.py | 4 + scripts/loot/lootItems/junk/launcher_tube.py | 4 + scripts/loot/lootItems/junk/ledger.py | 4 + .../loot/lootItems/junk/magseal_detector.py | 4 + .../loot/lootItems/junk/medical_console.py | 4 + scripts/loot/lootItems/junk/medical_device.py | 4 + scripts/loot/lootItems/junk/motor.py | 4 + .../lootItems/junk/power_output_analyzer.py | 4 + scripts/loot/lootItems/junk/red_wiring.py | 4 + scripts/loot/lootItems/junk/shield_module.py | 4 + .../loot/lootItems/junk/software_module.py | 4 + scripts/loot/lootItems/junk/stomach.py | 4 + scripts/loot/lootItems/junk/survival_gear.py | 4 + .../lootItems/junk/underpowered_survey_pad.py | 4 + .../lootItems/junk/unidentified_serum_vial.py | 4 + scripts/loot/lootItems/junk/used_notebook.py | 4 + .../loot/lootItems/junk/weak_droid_battery.py | 4 + .../lootItems/{ => junk}/worklight_generic.py | 0 scripts/loot/lootItems/kraytpearl_cracked.py | 2 +- scripts/loot/lootItems/kraytpearl_fair.py | 6 +- scripts/loot/lootItems/kraytpearl_flawless.py | 2 +- scripts/loot/lootItems/kraytpearl_good.py | 2 +- scripts/loot/lootItems/kraytpearl_poor.py | 2 +- scripts/loot/lootItems/kraytpearl_premium.py | 2 +- scripts/loot/lootItems/kraytpearl_quality.py | 2 +- .../loot/lootItems/kraytpearl_scratched.py | 2 +- scripts/loot/lootItems/kraytpearl_select.py | 2 +- scripts/loot/lootItems/powercrystal_fair.py | 12 + .../loot/lootItems/powercrystal_flawless.py | 8 + scripts/loot/lootItems/powercrystal_good.py | 8 + scripts/loot/lootItems/powercrystal_poor.py | 8 + .../loot/lootItems/powercrystal_premium.py | 8 + .../loot/lootItems/powercrystal_quality.py | 8 + scripts/loot/lootItems/powercrystal_select.py | 8 + scripts/loot/lootItems/red_wiring.py | 20 -- .../{ => weapons}/shared_rifle_cdef.py | 0 scripts/loot/lootPools/junk.py | 11 +- scripts/object/mobile/krayt_dragon.py | 4 +- scripts/radial/tunable.py | 15 ++ .../objects/loot/LootRollSession.java | 10 + src/services/DevService.java | 6 + src/services/LootService.java | 246 ++++++++++++++---- 57 files changed, 456 insertions(+), 99 deletions(-) delete mode 100644 scripts/loot/lootItems/damaged_datapad.py create mode 100644 scripts/loot/lootItems/junk/antenna.py create mode 100644 scripts/loot/lootItems/junk/armor_repair_device.py create mode 100644 scripts/loot/lootItems/junk/brain.py create mode 100644 scripts/loot/lootItems/junk/chassis_blueprint.py create mode 100644 scripts/loot/lootItems/junk/comlink.py create mode 100644 scripts/loot/lootItems/junk/damaged_datapad.py create mode 100644 scripts/loot/lootItems/junk/ear_jewel.py create mode 100644 scripts/loot/lootItems/junk/explosive_dud.py create mode 100644 scripts/loot/lootItems/junk/eye.py create mode 100644 scripts/loot/lootItems/junk/gland.py create mode 100644 scripts/loot/lootItems/junk/heart.py create mode 100644 scripts/loot/lootItems/junk/hyperdrive_unit.py create mode 100644 scripts/loot/lootItems/junk/id_chip.py create mode 100644 scripts/loot/lootItems/junk/impulse_detector.py create mode 100644 scripts/loot/lootItems/junk/laser_trap.py create mode 100644 scripts/loot/lootItems/junk/launcher_tube.py create mode 100644 scripts/loot/lootItems/junk/ledger.py create mode 100644 scripts/loot/lootItems/junk/magseal_detector.py create mode 100644 scripts/loot/lootItems/junk/medical_console.py create mode 100644 scripts/loot/lootItems/junk/medical_device.py create mode 100644 scripts/loot/lootItems/junk/motor.py create mode 100644 scripts/loot/lootItems/junk/power_output_analyzer.py create mode 100644 scripts/loot/lootItems/junk/red_wiring.py create mode 100644 scripts/loot/lootItems/junk/shield_module.py create mode 100644 scripts/loot/lootItems/junk/software_module.py create mode 100644 scripts/loot/lootItems/junk/stomach.py create mode 100644 scripts/loot/lootItems/junk/survival_gear.py create mode 100644 scripts/loot/lootItems/junk/underpowered_survey_pad.py create mode 100644 scripts/loot/lootItems/junk/unidentified_serum_vial.py create mode 100644 scripts/loot/lootItems/junk/used_notebook.py create mode 100644 scripts/loot/lootItems/junk/weak_droid_battery.py rename scripts/loot/lootItems/{ => junk}/worklight_generic.py (100%) create mode 100644 scripts/loot/lootItems/powercrystal_fair.py create mode 100644 scripts/loot/lootItems/powercrystal_flawless.py create mode 100644 scripts/loot/lootItems/powercrystal_good.py create mode 100644 scripts/loot/lootItems/powercrystal_poor.py create mode 100644 scripts/loot/lootItems/powercrystal_premium.py create mode 100644 scripts/loot/lootItems/powercrystal_quality.py create mode 100644 scripts/loot/lootItems/powercrystal_select.py delete mode 100644 scripts/loot/lootItems/red_wiring.py rename scripts/loot/lootItems/{ => weapons}/shared_rifle_cdef.py (100%) create mode 100644 scripts/radial/tunable.py diff --git a/scripts/loot/lootItems/damaged_datapad.py b/scripts/loot/lootItems/damaged_datapad.py deleted file mode 100644 index 7757a473..00000000 --- a/scripts/loot/lootItems/damaged_datapad.py +++ /dev/null @@ -1,20 +0,0 @@ - -def itemTemplate(): - - return 'object/tangible/loot/misc/shared_damaged_datapad.iff' - -def customItemName(): - - return '' - -def customItemStackCount(): - - return 1 - -def customizationAttributes(): - - return [] - -def customizationValues(): - - return [] \ No newline at end of file diff --git a/scripts/loot/lootItems/junk/antenna.py b/scripts/loot/lootItems/junk/antenna.py new file mode 100644 index 00000000..747de5b7 --- /dev/null +++ b/scripts/loot/lootItems/junk/antenna.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/creature_loot/generic/shared_generic_antennae.iff' diff --git a/scripts/loot/lootItems/junk/armor_repair_device.py b/scripts/loot/lootItems/junk/armor_repair_device.py new file mode 100644 index 00000000..713dc0ce --- /dev/null +++ b/scripts/loot/lootItems/junk/armor_repair_device.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_armor_repair_device_generic.iff' diff --git a/scripts/loot/lootItems/junk/brain.py b/scripts/loot/lootItems/junk/brain.py new file mode 100644 index 00000000..d0e8f837 --- /dev/null +++ b/scripts/loot/lootItems/junk/brain.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/creature_loot/generic/shared_brain_s01.iff' diff --git a/scripts/loot/lootItems/junk/chassis_blueprint.py b/scripts/loot/lootItems/junk/chassis_blueprint.py new file mode 100644 index 00000000..5c2445a8 --- /dev/null +++ b/scripts/loot/lootItems/junk/chassis_blueprint.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/generic_usable/shared_chassis_blueprint_usuable.iff' diff --git a/scripts/loot/lootItems/junk/comlink.py b/scripts/loot/lootItems/junk/comlink.py new file mode 100644 index 00000000..648802c6 --- /dev/null +++ b/scripts/loot/lootItems/junk/comlink.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_comlink_civilian_generic.iff' + +def customItemName(): + + return 'Comlink' \ No newline at end of file diff --git a/scripts/loot/lootItems/junk/damaged_datapad.py b/scripts/loot/lootItems/junk/damaged_datapad.py new file mode 100644 index 00000000..4fc1a9a9 --- /dev/null +++ b/scripts/loot/lootItems/junk/damaged_datapad.py @@ -0,0 +1,9 @@ + +def itemTemplate(): + + return 'object/tangible/loot/misc/shared_damaged_datapad.iff' + +def customItemName(): + + return 'Damaged Datapad' + diff --git a/scripts/loot/lootItems/junk/ear_jewel.py b/scripts/loot/lootItems/junk/ear_jewel.py new file mode 100644 index 00000000..abe14c33 --- /dev/null +++ b/scripts/loot/lootItems/junk/ear_jewel.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return '/object/tangible/loot/npc_loot/shared_jewelry_ear_s02.iff' diff --git a/scripts/loot/lootItems/junk/explosive_dud.py b/scripts/loot/lootItems/junk/explosive_dud.py new file mode 100644 index 00000000..bc7091a7 --- /dev/null +++ b/scripts/loot/lootItems/junk/explosive_dud.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return '/object/tangible/loot/npc_loot/shared_firework_dud_s1.iff' diff --git a/scripts/loot/lootItems/junk/eye.py b/scripts/loot/lootItems/junk/eye.py new file mode 100644 index 00000000..aa7c6cff --- /dev/null +++ b/scripts/loot/lootItems/junk/eye.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/creature_loot/generic/shared_generic_eye.iff' diff --git a/scripts/loot/lootItems/junk/gland.py b/scripts/loot/lootItems/junk/gland.py new file mode 100644 index 00000000..071a60ef --- /dev/null +++ b/scripts/loot/lootItems/junk/gland.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/loot/creature_loot/generic/shared_lungs_gland.iff' + +def customItemName(): + + return 'Gland' \ No newline at end of file diff --git a/scripts/loot/lootItems/junk/heart.py b/scripts/loot/lootItems/junk/heart.py new file mode 100644 index 00000000..3715f029 --- /dev/null +++ b/scripts/loot/lootItems/junk/heart.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/creature_loot/generic/shared_generic_heart.iff' diff --git a/scripts/loot/lootItems/junk/hyperdrive_unit.py b/scripts/loot/lootItems/junk/hyperdrive_unit.py new file mode 100644 index 00000000..25afcd63 --- /dev/null +++ b/scripts/loot/lootItems/junk/hyperdrive_unit.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/miscshared_hyperdrive_part_s01.iff' diff --git a/scripts/loot/lootItems/junk/id_chip.py b/scripts/loot/lootItems/junk/id_chip.py new file mode 100644 index 00000000..e4738035 --- /dev/null +++ b/scripts/loot/lootItems/junk/id_chip.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_id_chip_generic.iff' + +def customItemName(): + + return 'ID Chip' diff --git a/scripts/loot/lootItems/junk/impulse_detector.py b/scripts/loot/lootItems/junk/impulse_detector.py new file mode 100644 index 00000000..17f08a9d --- /dev/null +++ b/scripts/loot/lootItems/junk/impulse_detector.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_impulse_detector_01_generic.iff' diff --git a/scripts/loot/lootItems/junk/laser_trap.py b/scripts/loot/lootItems/junk/laser_trap.py new file mode 100644 index 00000000..4bbcdb48 --- /dev/null +++ b/scripts/loot/lootItems/junk/laser_trap.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_laser_trap_generic.iff' diff --git a/scripts/loot/lootItems/junk/launcher_tube.py b/scripts/loot/lootItems/junk/launcher_tube.py new file mode 100644 index 00000000..5612b566 --- /dev/null +++ b/scripts/loot/lootItems/junk/launcher_tube.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_launcher_tube_generic.iff' diff --git a/scripts/loot/lootItems/junk/ledger.py b/scripts/loot/lootItems/junk/ledger.py new file mode 100644 index 00000000..093e2caf --- /dev/null +++ b/scripts/loot/lootItems/junk/ledger.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_ledger_generic.iff' diff --git a/scripts/loot/lootItems/junk/magseal_detector.py b/scripts/loot/lootItems/junk/magseal_detector.py new file mode 100644 index 00000000..bce0a6c7 --- /dev/null +++ b/scripts/loot/lootItems/junk/magseal_detector.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_magseal_detector_generic.iff' diff --git a/scripts/loot/lootItems/junk/medical_console.py b/scripts/loot/lootItems/junk/medical_console.py new file mode 100644 index 00000000..db82ffa3 --- /dev/null +++ b/scripts/loot/lootItems/junk/medical_console.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_medical_console_generic.iff' diff --git a/scripts/loot/lootItems/junk/medical_device.py b/scripts/loot/lootItems/junk/medical_device.py new file mode 100644 index 00000000..eb55b264 --- /dev/null +++ b/scripts/loot/lootItems/junk/medical_device.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_medical_device_generic.iff' diff --git a/scripts/loot/lootItems/junk/motor.py b/scripts/loot/lootItems/junk/motor.py new file mode 100644 index 00000000..63d2def6 --- /dev/null +++ b/scripts/loot/lootItems/junk/motor.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_small_motor_generic.iff' diff --git a/scripts/loot/lootItems/junk/power_output_analyzer.py b/scripts/loot/lootItems/junk/power_output_analyzer.py new file mode 100644 index 00000000..b44f9808 --- /dev/null +++ b/scripts/loot/lootItems/junk/power_output_analyzer.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_power_output_analyzer_generic.iff' diff --git a/scripts/loot/lootItems/junk/red_wiring.py b/scripts/loot/lootItems/junk/red_wiring.py new file mode 100644 index 00000000..d2f31c46 --- /dev/null +++ b/scripts/loot/lootItems/junk/red_wiring.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_red_wiring_generic.iff' diff --git a/scripts/loot/lootItems/junk/shield_module.py b/scripts/loot/lootItems/junk/shield_module.py new file mode 100644 index 00000000..43335cfa --- /dev/null +++ b/scripts/loot/lootItems/junk/shield_module.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_shield_module_generic.iff' diff --git a/scripts/loot/lootItems/junk/software_module.py b/scripts/loot/lootItems/junk/software_module.py new file mode 100644 index 00000000..8041a85a --- /dev/null +++ b/scripts/loot/lootItems/junk/software_module.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_software_module_generic.iff' diff --git a/scripts/loot/lootItems/junk/stomach.py b/scripts/loot/lootItems/junk/stomach.py new file mode 100644 index 00000000..e3692923 --- /dev/null +++ b/scripts/loot/lootItems/junk/stomach.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/creature_loot/generic/shared_generic_stomach.iff' diff --git a/scripts/loot/lootItems/junk/survival_gear.py b/scripts/loot/lootItems/junk/survival_gear.py new file mode 100644 index 00000000..e8ad23ae --- /dev/null +++ b/scripts/loot/lootItems/junk/survival_gear.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_survival_equipment_generic.iff' diff --git a/scripts/loot/lootItems/junk/underpowered_survey_pad.py b/scripts/loot/lootItems/junk/underpowered_survey_pad.py new file mode 100644 index 00000000..3dca4fa8 --- /dev/null +++ b/scripts/loot/lootItems/junk/underpowered_survey_pad.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_survey_pad_adv_generic.iff' diff --git a/scripts/loot/lootItems/junk/unidentified_serum_vial.py b/scripts/loot/lootItems/junk/unidentified_serum_vial.py new file mode 100644 index 00000000..1f4f8e84 --- /dev/null +++ b/scripts/loot/lootItems/junk/unidentified_serum_vial.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_serum_vial_generic.iff' diff --git a/scripts/loot/lootItems/junk/used_notebook.py b/scripts/loot/lootItems/junk/used_notebook.py new file mode 100644 index 00000000..9a3acb30 --- /dev/null +++ b/scripts/loot/lootItems/junk/used_notebook.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_notebook_generic.iff' diff --git a/scripts/loot/lootItems/junk/weak_droid_battery.py b/scripts/loot/lootItems/junk/weak_droid_battery.py new file mode 100644 index 00000000..5ba36675 --- /dev/null +++ b/scripts/loot/lootItems/junk/weak_droid_battery.py @@ -0,0 +1,4 @@ + +def itemTemplate(): + + return 'object/tangible/loot/generic/shared_battery_useable_generic.iff' diff --git a/scripts/loot/lootItems/worklight_generic.py b/scripts/loot/lootItems/junk/worklight_generic.py similarity index 100% rename from scripts/loot/lootItems/worklight_generic.py rename to scripts/loot/lootItems/junk/worklight_generic.py diff --git a/scripts/loot/lootItems/kraytpearl_cracked.py b/scripts/loot/lootItems/kraytpearl_cracked.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_cracked.py +++ b/scripts/loot/lootItems/kraytpearl_cracked.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/kraytpearl_fair.py b/scripts/loot/lootItems/kraytpearl_fair.py index 33536979..ef8d2dc0 100644 --- a/scripts/loot/lootItems/kraytpearl_fair.py +++ b/scripts/loot/lootItems/kraytpearl_fair.py @@ -1,8 +1,12 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): return '' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_flawless.py b/scripts/loot/lootItems/kraytpearl_flawless.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_flawless.py +++ b/scripts/loot/lootItems/kraytpearl_flawless.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/kraytpearl_good.py b/scripts/loot/lootItems/kraytpearl_good.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_good.py +++ b/scripts/loot/lootItems/kraytpearl_good.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/kraytpearl_poor.py b/scripts/loot/lootItems/kraytpearl_poor.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_poor.py +++ b/scripts/loot/lootItems/kraytpearl_poor.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/kraytpearl_premium.py b/scripts/loot/lootItems/kraytpearl_premium.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_premium.py +++ b/scripts/loot/lootItems/kraytpearl_premium.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/kraytpearl_quality.py b/scripts/loot/lootItems/kraytpearl_quality.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_quality.py +++ b/scripts/loot/lootItems/kraytpearl_quality.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/kraytpearl_scratched.py b/scripts/loot/lootItems/kraytpearl_scratched.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_scratched.py +++ b/scripts/loot/lootItems/kraytpearl_scratched.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/kraytpearl_select.py b/scripts/loot/lootItems/kraytpearl_select.py index 33536979..8e532580 100644 --- a/scripts/loot/lootItems/kraytpearl_select.py +++ b/scripts/loot/lootItems/kraytpearl_select.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' def customItemName(): diff --git a/scripts/loot/lootItems/powercrystal_fair.py b/scripts/loot/lootItems/powercrystal_fair.py new file mode 100644 index 00000000..ef8d2dc0 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_fair.py @@ -0,0 +1,12 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/powercrystal_flawless.py b/scripts/loot/lootItems/powercrystal_flawless.py new file mode 100644 index 00000000..8e532580 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_flawless.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/powercrystal_good.py b/scripts/loot/lootItems/powercrystal_good.py new file mode 100644 index 00000000..8e532580 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_good.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/powercrystal_poor.py b/scripts/loot/lootItems/powercrystal_poor.py new file mode 100644 index 00000000..8e532580 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_poor.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/powercrystal_premium.py b/scripts/loot/lootItems/powercrystal_premium.py new file mode 100644 index 00000000..8e532580 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_premium.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/powercrystal_quality.py b/scripts/loot/lootItems/powercrystal_quality.py new file mode 100644 index 00000000..8e532580 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_quality.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/powercrystal_select.py b/scripts/loot/lootItems/powercrystal_select.py new file mode 100644 index 00000000..8e532580 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_select.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/red_wiring.py b/scripts/loot/lootItems/red_wiring.py deleted file mode 100644 index 483dc8f7..00000000 --- a/scripts/loot/lootItems/red_wiring.py +++ /dev/null @@ -1,20 +0,0 @@ - -def itemTemplate(): - - return 'object/tangible/loot/npc_loot/shared_red_wiring_generic.iff' - -def customItemName(): - - return '' - -def customItemStackCount(): - - return 1 - -def customizationAttributes(): - - return [] - -def customizationValues(): - - return [] diff --git a/scripts/loot/lootItems/shared_rifle_cdef.py b/scripts/loot/lootItems/weapons/shared_rifle_cdef.py similarity index 100% rename from scripts/loot/lootItems/shared_rifle_cdef.py rename to scripts/loot/lootItems/weapons/shared_rifle_cdef.py diff --git a/scripts/loot/lootPools/junk.py b/scripts/loot/lootPools/junk.py index 32ec26c3..ef757825 100644 --- a/scripts/loot/lootPools/junk.py +++ b/scripts/loot/lootPools/junk.py @@ -1,8 +1,15 @@ def itemNames(): - templates=['damaged_datapad','red_wiring','worklight_generic'] + templates=['damaged_datapad','red_wiring','worklight_generic','antenna','brain','eye','gland','heart','stomach','armor_repair_device'] #10 + templates=templates+['brain','chassis_blueprint','comlink','explosive_dud','hyperdrive_unit','id_chip','impulse_detector','laser_trap'] #8 + templates=templates+['launcher_tube','ledger','magseal_detector','medical_console','medical_device','motor','power_output_analyzer','shield_module'] #8 + templates=templates+['software_module','survival_gear','underpowered_survey_pad','unidentified_serum_vial','used_notebook','weak_droid_battery'] #6 return templates def itemChances(): - return [70,50,40] \ No newline at end of file + chances=[3.125,3.125,3.125,3.125,3.125,3.125,3.125,3.125] + chances=chances+[3.125,3.125,3.125,3.125,3.125,3.125,3.125,3.125] + chances=chances+[3.125,3.125,3.125,3.125,3.125,3.125,3.125,3.125] + chances=chances+[3.125,3.125,3.125,3.125,3.125,3.125,3.125,3.125] + return chances #32 \ No newline at end of file diff --git a/scripts/object/mobile/krayt_dragon.py b/scripts/object/mobile/krayt_dragon.py index c65d802c..e023f206 100644 --- a/scripts/object/mobile/krayt_dragon.py +++ b/scripts/object/mobile/krayt_dragon.py @@ -7,9 +7,9 @@ def setup(core, object): lootGroupChance_1 = 65 object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) - lootPoolNames_2 = ['kraytpearl_loq'] + lootPoolNames_2 = ['kraytpearl_lowq'] lootPoolChances_2 = [100] - lootGroupChance_2 = 35 + lootGroupChance_2 = 85 object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) return \ No newline at end of file diff --git a/scripts/radial/tunable.py b/scripts/radial/tunable.py new file mode 100644 index 00000000..f226f86b --- /dev/null +++ b/scripts/radial/tunable.py @@ -0,0 +1,15 @@ +from resources.common import RadialOptions +import sys + +def createRadial(core, owner, target, radials): + radials.clear() + radials.add(RadialOptions(0, 7, 0, 'Examine')) + radials.add(RadialOptions(0, 15, 0, 'Destroy')) + radials.add(RadialOptions(0, 19, 0, 'Tune')) + return + +def handleSelection(core, owner, target, option): + if option == 19 and target: + if owner is not None: + owner.sendSystemMessage('You are not attuned enough with the force yet.',1) + return diff --git a/src/resources/objects/loot/LootRollSession.java b/src/resources/objects/loot/LootRollSession.java index 62d12077..cb7c93e4 100644 --- a/src/resources/objects/loot/LootRollSession.java +++ b/src/resources/objects/loot/LootRollSession.java @@ -40,6 +40,7 @@ public class LootRollSession { private GroupObject playerGroup; private List droppedItems; private Planet sessionPlanet; + private List errorMessages; public LootRollSession(){ } @@ -53,6 +54,7 @@ public class LootRollSession { this.SessionID = requester.getCustomName()+"-"+System.currentTimeMillis(); } droppedItems = new ArrayList(); + errorMessages = new ArrayList(); sessionPlanet = requester.getPlanet(); } @@ -79,4 +81,12 @@ public class LootRollSession { public Planet getSessionPlanet() { return sessionPlanet; } + + public List getErrorMessages() { + return errorMessages; + } + + public void addErrorMessage(String errorMessage) { + this.errorMessages.add(errorMessage); + } } diff --git a/src/services/DevService.java b/src/services/DevService.java index ca387de1..dc5b9a29 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -86,6 +86,7 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 23, "Jedi Items"); suiOptions.put((long) 110, "Survey Devices"); suiOptions.put((long) 111, "Spawn Tusken"); + suiOptions.put((long) 112, "Spawn Krayt"); break; case 3: // [Items] Weapons suiOptions.put((long) 30, "Jedi Weapons"); @@ -1001,6 +1002,11 @@ public class DevService implements INetworkDispatch { core.lootService.handleLootRequest(player,(TangibleObject)spawned); break; + case 112: + SWGObject spawned2 = core.staticService.spawnObject("object/mobile/shared_krayt_dragon.iff", "tatooine", 0L, 3512F, 4F, -4801F, 0.70F, 0.71F); + + core.lootService.handleLootRequest(player,(TangibleObject)spawned2); + break; } } }); diff --git a/src/services/LootService.java b/src/services/LootService.java index b16a125d..d405e95d 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -21,11 +21,23 @@ ******************************************************************************/ package services; +import java.io.File; +import java.io.IOException; +import java.nio.file.DirectoryStream; +import java.nio.file.DirectoryStream.Filter; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.LinkOption; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.attribute.BasicFileAttributeView; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Random; import java.util.Vector; + import resources.objects.creature.CreatureObject; import resources.objects.loot.LootGroup; import resources.objects.loot.LootRollSession; @@ -60,7 +72,13 @@ public class LootService implements INetworkDispatch { } public void handleLootRequest(CreatureObject requester, TangibleObject lootedObject) { - + + if (requester.getCustomName().contains("Kun")){ + requester.setCashCredits(requester.getCashCredits()+1); + requester.sendSystemMessage("You looted 1 lousy credit.", (byte)1); + return; + } + LootRollSession lootRollSession = new LootRollSession(requester); String lootedObjectType = "Tangible"; if (lootedObject instanceof CreatureObject) @@ -109,6 +127,14 @@ public class LootService implements INetworkDispatch { // Distribute the loot drops according to group loot rules // For now just spawn items into requester's inventory + + if (lootRollSession.getErrorMessages().size()>0){ + for (String msg : lootRollSession.getErrorMessages()){ + // ToDo: Show this for each group member later! + requester.sendSystemMessage(msg,(byte) 1); + } + } + SWGObject requesterInventory = requester.getSlottedObject("inventory"); for (TangibleObject droppedItem : lootRollSession.getDroppedItems()){ @@ -172,60 +198,92 @@ public class LootService implements INetworkDispatch { } } + private static class DirectoriesFilter implements Filter { + @Override + public boolean accept(Path entry) throws IOException { + return Files.isDirectory(entry); + } + } + private void handleLootPoolItems(String itemName,LootRollSession lootRollSession){ - String path = "scripts/loot/lootItems/"+itemName.toLowerCase(); - System.out.println("path: " + path); - String itemTemplate = (String)core.scriptService.fetchString(path,"itemTemplate"); - String customName = (String)core.scriptService.fetchString(path,"customItemName"); - int stackCount = (Integer)core.scriptService.fetchInteger(path,"customItemStackCount"); - Vector customizationAttributes = (Vector)core.scriptService.fetchStringVector(path,"customizationAttributes"); - Vector customizationValues = (Vector)core.scriptService.fetchIntegerVector(path,"customizationValues"); + List subfolders = new ArrayList(); // Consider all sub-folders + try (DirectoryStream ds = Files.newDirectoryStream(FileSystems.getDefault().getPath("scripts/loot/lootItems/"), new DirectoriesFilter())) { + for (Path p : ds) { + subfolders.add(p.getFileName().toString()); + } + } catch (IOException e) { + lootRollSession.addErrorMessage("File system check caused an error. Please contact Charon about this issue."); + return; + } + + String itemPath = "scripts/loot/lootItems/"+itemName.toLowerCase()+".py"; + File file = new File(itemPath); + if (!file.isFile()){ + for (String subfolderName : subfolders){ + itemPath = "scripts/loot/lootItems/"+ subfolderName +"/"+itemName.toLowerCase()+".py"; + File subfile = new File(itemPath); + if (subfile.isFile()) + break; + } + } + + File checkfile = new File(itemPath); + if (!checkfile.isFile()){ + String errorMessage = "Loot item '" + itemName + "' not found in file system. Please contact Charon about this issue."; + lootRollSession.addErrorMessage(errorMessage); + return; + } + + itemPath = itemPath.substring(0, itemPath.length()-3); // remove the file type + + String customName = ""; + String itemTemplate = ""; + int stackCount = 1; + Vector customizationAttributes = null; + Vector customizationValues = null; + + if(core.scriptService.getMethod(itemPath,"","itemTemplate")==null){ + String errorMessage = "Loot item '" + itemName + "' has no template function assigned in its script. Please contact Charon about this issue."; + lootRollSession.addErrorMessage(errorMessage); + return; + } + + itemTemplate = (String)core.scriptService.fetchString(itemPath,"itemTemplate"); + + // only consider the following variables, if they are in the python-script file + if(core.scriptService.getMethod(itemPath,"","customItemName")!=null) + customName = (String)core.scriptService.fetchString(itemPath,"customItemName"); + + if(core.scriptService.getMethod(itemPath,"","customItemStackCount")!=null) + stackCount = (Integer)core.scriptService.fetchInteger(itemPath,"customItemStackCount"); + + if(core.scriptService.getMethod(itemPath,"","customizationAttributes")!=null) + customizationAttributes = (Vector)core.scriptService.fetchStringVector(itemPath,"customizationAttributes"); + + if(core.scriptService.getMethod(itemPath,"","customizationValues")!=null) + customizationValues = (Vector)core.scriptService.fetchIntegerVector(itemPath,"customizationValues"); System.out.println("itemTemplate " + itemTemplate); - /* - craftingValues = { - {"mindamage",25,35,0}, - {"maxdamage",40,50,0}, - {"attackspeed",1,-1,5}, - {"woundchance",4,8,5}, - {"hitpoints",800,1200,0}, - {"attackhealthcost",0,9,0}, - {"attackactioncost",0,9,0}, - {"attackmindcost",0,9,0}, - {"forcecost",0,9.9,0}, - {"color",31,31,0}, - {"quality",6,6,0}, - }, - */ - - - - - - - - TangibleObject droppedItem = createDroppedItem(itemTemplate,lootRollSession.getSessionPlanet()); - handleCustomDropName(droppedItem); + droppedItem.setAttachment("LootItemName", itemName); + handleCustomDropName(droppedItem,customName); handleStats(droppedItem); setCustomization(droppedItem); + handleSpecialItems(droppedItem); lootRollSession.addDroppedItem(droppedItem); } - - - private void handleCustomDropName(TangibleObject droppedItem) { - String customName = droppedItem.getCustomName(); - - if (customName!=null) { - if (customName.charAt(0) == '@' || customName.contains("_n:")) { - customName = ""; // Look the name up in some tre table - } - } + private void handleCustomDropName(TangibleObject droppedItem,String customName) { +// String customItemName = droppedItem.getCustomName(); +// if (customName.charAt(0) == '@' || customName.contains("_n:")) { +// if (customName!=null) { +// customName = ""; // Look the name up in some tre table +// } +// } droppedItem.setCustomName(customName); } @@ -234,9 +292,7 @@ public class LootService implements INetworkDispatch { System.out.println("droppedItem " + droppedItem); return droppedItem; } - - - + private void setCustomization(TangibleObject droppedItem) { // Example color crystal @@ -253,11 +309,109 @@ public class LootService implements INetworkDispatch { // } } + private void handleSpecialItems(TangibleObject droppedItem) { + if (droppedItem.getTemplate().contains("shared_lightsaber_module_krayt_dragon_pearl")){ + handleKraytPearl(droppedItem); + } + if (droppedItem.getTemplate().contains("shared_lightsaber_module_force_crystal.iff")){ + handlePowerCrystal(droppedItem); + } + } + private void handleStats(TangibleObject droppedItem) { // ToDo: Min,Max for weapons , Dots on weapons etc. // This must be considered for the python scripts as well // So basically every item needs to have loot-related data in their py scripts as well + + + } + + // ************* Special items ************ + private void handleKraytPearl(TangibleObject droppedItem) { + + String itemName = (String)droppedItem.getAttachment("LootItemName"); + String qualityString = ""; + switch (itemName) { + case "kraytpearl_cracked": + droppedItem.setStfFilename("static_item_n"); + droppedItem.setStfName("item_junk_imitation_pearl_01_02"); + droppedItem.setDetailFilename("static_item_d"); + droppedItem.setDetailName("item_junk_imitation_pearl_01_02"); + return; + case "kraytpearl_scratched": + droppedItem.setStfFilename("static_item_n"); + droppedItem.setStfName("item_junk_imitation_pearl_01_01"); + droppedItem.setDetailFilename("static_item_d"); + droppedItem.setDetailName("item_junk_imitation_pearl_01_01"); + return; + case "kraytpearl_poor": + qualityString="Poor"; + break; + case "kraytpearl_fair": + qualityString="Fair"; + break; + case "kraytpearl_good": + qualityString="Good"; + break; + case "kraytpearl_quality": + qualityString="Quality"; + break; + case "kraytpearl_select": + qualityString="Select"; + break; + case "kraytpearl_premium": + qualityString="Premium"; + break; + case "kraytpearl_flawless": + qualityString="Flawless"; + break; + default: + qualityString="Undetermined"; + break; + } + droppedItem.getAttributes().put("@obj_attr_n:condition", "100/100"); + droppedItem.getAttributes().put("@obj_attr_n:crystal_owner", "\\#D1F56F UNTUNED \\#FFFFFF "); + droppedItem.getAttributes().put("@obj_attr_n:crystal_quality", qualityString); + droppedItem.setAttachment("radial_filename", "tunable"); } - + private void handlePowerCrystal(TangibleObject droppedItem) { + + String itemName = (String)droppedItem.getAttachment("LootItemName"); + String qualityString = ""; + switch (itemName) { + + case "powercrystal_poor": + qualityString="Poor"; + break; + case "powercrystal_fair": + qualityString="Fair"; + break; + case "powercrystal_good": + qualityString="Good"; + break; + case "powercrystal_quality": + qualityString="Quality"; + break; + case "powercrystal_select": + qualityString="Select"; + break; + case "powercrystal_premium": + qualityString="Premium"; + break; + case "powercrystal_flawless": + qualityString="Flawless"; + break; + case "powercrystal_perfect": + qualityString="Perfect"; + break; + default: + qualityString="Undetermined"; + break; + } + droppedItem.getAttributes().put("@obj_attr_n:condition", "100/100"); + droppedItem.getAttributes().put("@obj_attr_n:crystal_owner", "\\#D1F56F UNTUNED \\#FFFFFF "); + droppedItem.getAttributes().put("@obj_attr_n:crystal_quality", qualityString); + droppedItem.setAttachment("radial_filename", "tunable"); + } } From b12e47ad3a7d13b1cc3bcab05ce80a37ed539e9f Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Thu, 10 Apr 2014 00:41:17 +0200 Subject: [PATCH 41/79] merge conflict resolve --- src/main/NGECore.java | 711 ++++++++++++++++++++++++ src/services/DevService.java | 1018 ++++++++++++++++++++++++++++++++++ 2 files changed, 1729 insertions(+) create mode 100644 src/main/NGECore.java create mode 100644 src/services/DevService.java diff --git a/src/main/NGECore.java b/src/main/NGECore.java new file mode 100644 index 00000000..050e213b --- /dev/null +++ b/src/main/NGECore.java @@ -0,0 +1,711 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package main; + +import java.io.IOException; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Vector; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +import org.apache.mina.core.service.IoHandler; +import org.apache.mina.core.session.IoSession; + +import com.sleepycat.je.Transaction; +import com.sleepycat.persist.EntityCursor; + +import protocol.swg.ChatSystemMessage; +import net.engio.mbassy.bus.config.BusConfiguration; +import resources.common.RadialOptions; +import resources.common.ThreadMonitor; +import resources.objects.creature.CreatureObject; +import services.AttributeService; +import services.BuffService; +import services.CharacterService; +import services.ConnectionService; +import services.ConversationService; +import services.DevService; +import services.EntertainmentService; +import services.EquipmentService; +import services.GroupService; +import services.housing.HousingService; +import services.InstanceService; +import services.LoginService; +import services.MissionService; +import services.PlayerService; +import services.ScriptService; +import services.SimulationService; +import services.SkillModService; +import services.SkillService; +import services.StaticService; +import services.SurveyService; +import services.TerrainService; +import services.WeatherService; +import services.ai.AIService; +import services.chat.ChatService; +import services.collections.CollectionService; +import services.combat.CombatService; +import services.command.CombatCommand; +import services.command.CommandService; +import services.gcw.FactionService; +import services.gcw.GCWService; +import services.guild.GuildService; +import services.LoginService; +import services.map.MapService; +import services.object.ObjectService; +import services.object.UpdateService; +import services.resources.ResourceService; +import services.retro.RetroService; +import services.spawn.SpawnService; +import services.sui.SUIService; +import services.trade.TradeService; +import services.travel.TravelService; +import engine.clientdata.ClientFileManager; +import engine.clientdata.visitors.CrcStringTableVisitor; +import engine.clientdata.visitors.DatatableVisitor; +import engine.clientdata.visitors.LevelOfDetailVisitor; +import engine.clientdata.visitors.MeshVisitor; +import engine.clientdata.visitors.PortalVisitor; +import engine.clientdata.visitors.TerrainVisitor; +import engine.clientdata.visitors.WorldSnapshotVisitor; +import engine.clientdata.visitors.WorldSnapshotVisitor.SnapshotChunk; +import engine.clients.Client; +import engine.resources.common.CRC; +import engine.resources.common.PHPBB3Auth; +import engine.resources.config.Config; +import engine.resources.config.DefaultConfig; +import engine.resources.container.Traverser; +import engine.resources.database.DatabaseConnection; +import engine.resources.database.ObjectDatabase; +import engine.resources.objects.SWGObject; +import engine.resources.scene.Point3D; +import engine.resources.scene.Quaternion; +import engine.resources.service.InteractiveJythonAcceptor; +import engine.resources.service.NetworkDispatch; +import engine.servers.InteractiveJythonServer; +import engine.servers.MINAServer; +import engine.servers.PingServer; + +@SuppressWarnings("unused") + +public class NGECore { + + public static boolean didServerCrash = false; + + private static NGECore instance; + + private Config config = null; + + private volatile boolean isShuttingDown = false; + private long galacticTime = System.currentTimeMillis(); + + private ConcurrentHashMap clients = new ConcurrentHashMap(); + + // Database + + private DatabaseConnection databaseConnection = null; + private DatabaseConnection databaseConnection2 = null; + + // Services + public LoginService loginService; + public RetroService retroService; + public ConnectionService connectionService; + public CommandService commandService; + public CharacterService characterService; + public FactionService factionService; + public ObjectService objectService; + public MapService mapService; + public UpdateService updateService; + public TerrainService terrainService; + public SimulationService simulationService; + public ScriptService scriptService; + public ChatService chatService; + public AttributeService attributeService; + public SUIService suiService; + public GuildService guildService; + public GCWService gcwService; + public TradeService tradeService; + public CombatService combatService; + public PlayerService playerService; + public BuffService buffService; + public StaticService staticService; + public GroupService groupService; + public SkillService skillService; + public SkillModService skillModService; + public EquipmentService equipmentService; + public TravelService travelService; + public CollectionService collectionService; + public EntertainmentService entertainmentService; + public WeatherService weatherService; + public SpawnService spawnService; + public AIService aiService; + //public MissionService missionService; + public InstanceService instanceService; + public DevService devService; + + public SurveyService surveyService; + public ResourceService resourceService; + + public ConversationService conversationService; + + public HousingService housingService; + + + // Login Server + public NetworkDispatch loginDispatch; + private MINAServer loginServer; + + // Zone Server + public NetworkDispatch zoneDispatch; + private MINAServer zoneServer; + + // Interactive Jython Console + public InteractiveJythonAcceptor jythonAcceptor; + private InteractiveJythonServer jythonServer; + + private ObjectDatabase creatureODB; + private ObjectDatabase mailODB; + private ObjectDatabase guildODB; + private ObjectDatabase objectIdODB; + private ObjectDatabase duplicateIdODB; + private ObjectDatabase chatRoomODB; + + private BusConfiguration eventBusConfig = BusConfiguration.Default(1, new ThreadPoolExecutor(1, 4, 1, TimeUnit.MINUTES, new LinkedBlockingQueue())); + + private ObjectDatabase buildingODB; + + private ObjectDatabase resourcesODB; + private ObjectDatabase resourceRootsODB; + private ObjectDatabase resourceHistoryODB; + + public static boolean PACKET_DEBUG = false; + + + + + + public NGECore() { + + } + + public void start() { + + instance = this; + final ThreadMonitor deadlockDetector = new ThreadMonitor(); + Thread deadlockMonitor = new Thread(new Runnable() { + @Override + public void run() { + try { + deadlockDetector.findDeadlock(); + Thread.sleep(60000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + }); + deadlockMonitor.start(); + config = new Config(); + config.setFilePath("nge.cfg"); + if (!(config.loadConfigFile())) { + config = DefaultConfig.getConfig(); + } + // Database + databaseConnection = new DatabaseConnection(); + databaseConnection.connect(config.getString("DB.URL"), config.getString("DB.NAME"), config.getString("DB.USER"), config.getString("DB.PASS"), "postgresql"); + + String db2Url = config.getString("DB2.URL"); + if (db2Url == null || db2Url.matches("^\\s*$")) { + databaseConnection2 = null; + } else { + databaseConnection2 = new DatabaseConnection(); + databaseConnection2.connect(config.getString("DB2.URL"), config.getString("DB2.NAME"), config.getString("DB2.USER"), config.getString("DB2.PASS"), "mysql"); + } + + setGalaxyStatus(1); + creatureODB = new ObjectDatabase("creature", true, false, true); + buildingODB = new ObjectDatabase("building", true, false, true); + mailODB = new ObjectDatabase("mails", true, false, true); + guildODB = new ObjectDatabase("guild", true, false, true); + objectIdODB = new ObjectDatabase("oids", true, false, false); + duplicateIdODB = new ObjectDatabase("doids", true, false, true); + chatRoomODB = new ObjectDatabase("chatRooms", true, false, true); + resourcesODB = new ObjectDatabase("resources", true, false, true); + resourceRootsODB = new ObjectDatabase("resourceroots", true, false, true); + resourceHistoryODB = new ObjectDatabase("resourcehistory", true, false, true); + + // Services + loginService = new LoginService(this); + retroService = new RetroService(this); + connectionService = new ConnectionService(this); + characterService = new CharacterService(this); + mapService = new MapService(this); + travelService = new TravelService(this); + + factionService = new FactionService(this); + objectService = new ObjectService(this); + terrainService = new TerrainService(this); + updateService = new UpdateService(this); + scriptService = new ScriptService(this); + commandService = new CommandService(this); + chatService = new ChatService(this); + attributeService = new AttributeService(this); + suiService = new SUIService(this); + combatService = new CombatService(this); + playerService = new PlayerService(this); + buffService = new BuffService(this); + groupService = new GroupService(this); + skillService = new SkillService(this); + skillModService = new SkillModService(this); + equipmentService = new EquipmentService(this); + entertainmentService = new EntertainmentService(this); + devService = new DevService(this); + conversationService = new ConversationService(this); + housingService = new HousingService(this); + + if (config.keyExists("JYTHONCONSOLE.PORT")) { + int jythonPort = config.getInt("JYTHONCONSOLE.PORT"); + if (jythonPort > 0) { + + System.out.println("Starting InteractiveJythonServer on Port " + jythonPort); + jythonAcceptor = new InteractiveJythonAcceptor(); + jythonServer = new InteractiveJythonServer((IoHandler) jythonAcceptor, jythonPort, this); + jythonAcceptor.setServer(jythonServer); + jythonServer.start(); + } + } + spawnService = new SpawnService(this); + aiService = new AIService(this); + //missionService = new MissionService(this); + + if (config.getInt("LOAD.RESOURCE.SYSTEM") == 1) { + surveyService = new SurveyService(this); + resourceService = new ResourceService(this); + } + + // Ping Server + try { + PingServer pingServer = new PingServer(config.getInt("PING.PORT")); + pingServer.bind(); + } catch (IOException e) { + e.printStackTrace(); + } + + // Login Server + loginDispatch = new NetworkDispatch(this, false); + loginDispatch.addService(loginService); + + loginServer = new MINAServer(loginDispatch, config.getInt("LOGIN.PORT")); + loginServer.start(); + + // Zone Server + zoneDispatch = new NetworkDispatch(this, true); + zoneDispatch.addService(retroService); + zoneDispatch.addService(connectionService); + zoneDispatch.addService(characterService); + zoneDispatch.addService(factionService); + zoneDispatch.addService(objectService); + zoneDispatch.addService(commandService); + zoneDispatch.addService(chatService); + zoneDispatch.addService(suiService); + zoneDispatch.addService(mapService); + zoneDispatch.addService(travelService); + zoneDispatch.addService(playerService); + zoneDispatch.addService(buffService); + zoneDispatch.addService(entertainmentService); + //zoneDispatch.addService(missionService); + + zoneServer = new MINAServer(zoneDispatch, config.getInt("ZONE.PORT")); + zoneServer.start(); + staticService = new StaticService(this); + //Start terrainList + // Original Planets + terrainService.addPlanet(1, "tatooine", "terrain/tatooine.trn", true); + terrainService.addPlanet(2, "naboo", "terrain/naboo.trn", true); + terrainService.addPlanet(3, "corellia", "terrain/corellia.trn", true); + terrainService.addPlanet(4, "rori", "terrain/rori.trn", true); + terrainService.addPlanet(5, "lok", "terrain/lok.trn", true); + terrainService.addPlanet(6, "dantooine", "terrain/dantooine.trn", true); + terrainService.addPlanet(7, "talus", "terrain/talus.trn", true); + terrainService.addPlanet(8, "yavin4", "terrain/yavin4.trn", true); + terrainService.addPlanet(9, "endor", "terrain/endor.trn", true); + terrainService.addPlanet(10, "dathomir", "terrain/dathomir.trn", true); + terrainService.addPlanet(11, "mustafar", "terrain/mustafar.trn", true); + terrainService.addPlanet(12, "kashyyyk_main", "terrain/kashyyyk_main.trn", true); + //Dungeon Terrains + // TODO: Fix BufferUnderFlow Errors on loaded of dungeon instances. + /*terrainService.addPlanet(13, "kashyyyk_dead_forest", "terrain/kashyyyk_dead_forest.trn", true); + terrainService.addPlanet(14, "kashyyyk_hunting", "terrain/kashyyyk_hunting.trn", true); + terrainService.addPlanet(15, "kashyyyk_north_dungeons", "terrain/kashyyyk_north_dungeons.trn", true); + terrainService.addPlanet(16, "kashyyyk_rryatt_trail", "terrain/kashyyyk_rryatt_trail.trn", true); + terrainService.addPlanet(17, "kashyyyk_south_dungeons", "terrain/kashyyyk_south_dungeons.trn", true);*/ + terrainService.addPlanet(18, "adventure1", "terrain/adventure1.trn", true); + terrainService.addPlanet(19, "adventure2", "terrain/adventure2.trn", true); + terrainService.addPlanet(20, "dungeon1", "terrain/dungeon1.trn", true); + //Space Zones + // NOTE: Commented out for now until space is implemented. No need to be loaded into memory when space is not implemented. + /*terrainService.addPlanet(21, "space_corellia", "terrain/space_corellia.trn", true); + terrainService.addPlanet(22, "space_corellia_2", "terrain/space_corellia_2.trn", true); + terrainService.addPlanet(23, "space_dantooine", "terrain/space_dantooine.trn", true); + terrainService.addPlanet(24, "space_dathomir", "terrain/space_dathomir.trn", true); + terrainService.addPlanet(25, "space_endor", "terrain/space_endor.trn", true); + terrainService.addPlanet(26, "space_env", "terrain/space_env.trn", true); + terrainService.addPlanet(27, "space_halos", "terrain/space_halos.trn", true); + terrainService.addPlanet(28, "space_heavy1", "terrain/space_heavy1.trn", true); + terrainService.addPlanet(29, "space_kashyyyk", "terrain/space_kashyyyk.trn", true); + terrainService.addPlanet(30, "space_light1", "terrain/space_light1.trn", true); + terrainService.addPlanet(31, "space_lok", "terrain/space_lok.trn", true); + terrainService.addPlanet(32, "space_naboo", "terrain/space_naboo.trn", true); + terrainService.addPlanet(33, "space_naboo_2", "terrain/space_naboo_2.trn", true); + terrainService.addPlanet(34, "space_nova_orion", "terrain/space_nova_orion.trn", true); + terrainService.addPlanet(35, "space_npe_falcon", "terrain/space_npe_falcon.trn", true); // TODO: New Player Tutorial + terrainService.addPlanet(36, "space_npe_falcon_2", "terrain/space_npe_falcon_2.trn", true); // TODO: New Player Tutorial + terrainService.addPlanet(37, "space_ord_mantell", "terrain/space_ord_mantell.trn", true); + terrainService.addPlanet(38, "space_ord_mantell_2", "terrain/space_ord_mantell_2.trn", true); + terrainService.addPlanet(39, "space_ord_mantell_3", "terrain/space_ord_mantell_3.trn", true); + terrainService.addPlanet(40, "space_ord_mantell_4", "terrain/space_ord_mantell_4.trn", true); + terrainService.addPlanet(41, "space_ord_mantell_5", "terrain/space_ord_mantell_5.trn", true); + terrainService.addPlanet(42, "space_ord_mantell_6", "terrain/space_ord_mantell_6.trn", true); + terrainService.addPlanet(43, "space_tatooine", "terrain/space_tatooine.trn", true); + terrainService.addPlanet(44, "space_tatooine_2", "terrain/space_tatooine_2.trn", true); + terrainService.addPlanet(45, "space_yavin4", "terrain/space_yavin4.trn", true);*/ + //PSWG New Content Terrains (WARNING Keep commented out unless you have the current build of kaas!) + + //terrainService.addPlanet(46, "kaas", "terrain/kaas.trn", true); + + //end terrainList + spawnService = new SpawnService(this); + terrainService.loadClientPois(); + // Travel Points + travelService.loadTravelPoints(); + simulationService = new SimulationService(this); + + objectService.loadBuildings(); + + if (config.getInt("LOAD.RESOURCE.SYSTEM") == 1) { + objectService.loadResourceRoots(); + objectService.loadResources(); + } + + terrainService.loadSnapShotObjects(); + objectService.loadServerTemplates(); + simulationService.insertSnapShotObjects(); + simulationService.insertPersistentBuildings(); + // Zone services that need to be loaded after the above + zoneDispatch.addService(simulationService); + + + // Static Spawns + staticService.spawnStatics(); + + guildService = new GuildService(this); + zoneDispatch.addService(guildService); + + gcwService = new GCWService(this); + zoneDispatch.addService(gcwService); + + collectionService = new CollectionService(this); + zoneDispatch.addService(collectionService); + + tradeService = new TradeService(this); + zoneDispatch.addService(tradeService); + + zoneDispatch.addService(skillService); + + instanceService = new InstanceService(this); + zoneDispatch.addService(instanceService); + + //travelService.startShuttleSchedule(); + + weatherService = new WeatherService(this); + weatherService.loadPlanetSettings(); + + spawnService.loadMobileTemplates(); + spawnService.loadLairTemplates(); + spawnService.loadLairGroups(); + spawnService.loadSpawnAreas(); + + housingService.loadHousingTemplates(); + equipmentService.loadBonusSets(); + + retroService.run(); + + didServerCrash = false; + System.out.println("Started Server."); + cleanupCreatureODB(); + setGalaxyStatus(2); + + } + + private void cleanupCreatureODB() { + EntityCursor cursor = creatureODB.getCursor(Long.class, CreatureObject.class); + + Iterator it = cursor.iterator(); + List deletedObjects = new ArrayList(); + + while(it.hasNext()) { + CreatureObject creature = it.next(); + if(!characterService.playerExists(creature.getObjectID())) + deletedObjects.add(creature); + } + + cursor.close(); + + Transaction txn = creatureODB.getEnvironment().beginTransaction(null, null); + for(CreatureObject creature : deletedObjects) { + creatureODB.delete(creature.getObjectID(), Long.class, CreatureObject.class, txn); + } + txn.commitSync(); + System.out.println("Deleted " + deletedObjects.size() + " creatures."); + } + + public void stop() { + System.out.println("Stopping Servers and Connections."); + databaseConnection.close(); + databaseConnection2.close(); + } + + public void cleanUp() { + System.out.println("Cleaning Up..."); + long memoryUsed = Runtime.getRuntime().freeMemory(); + System.out.println("Using " + memoryUsed + " bytes of memory."); + + config = null; + databaseConnection = null; + databaseConnection2 = null; + Runtime.getRuntime().gc(); + System.out.println("Cleaned Up " + (Runtime.getRuntime().freeMemory() - memoryUsed) + " bytes of memory."); + } + + public void restart() { + stop(); + cleanUp(); + try { + Thread.sleep(30000); + } catch (InterruptedException e) { + + } + start(); + } + + public static void main(String[] args) { + + NGECore core = new NGECore(); + + core.start(); + + do { + if (didServerCrash) { + core.restart(); + } + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + + } + } while (true); + + } + + public void setGalaxyStatus(int statusId) { + + int galaxyId = config.getInt("GALAXY_ID"); + + try { + PreparedStatement ps = databaseConnection.preparedStatement("UPDATE \"connectionServers\" SET \"statusId\"=? WHERE \"galaxyId\"=?"); + ps.setInt(1, statusId); + ps.setInt(2, galaxyId); + ps.executeUpdate(); + } catch (SQLException e) { + e.printStackTrace(); + } + + } + + /* + * ---------- Getter methods for NGECore ---------- + */ + public Config getConfig() { + return config; + } + + public String getGalaxyName() { + return config.getString("GALAXY_NAME"); + } + + public DatabaseConnection getDatabase1() { + return databaseConnection; + } + + public DatabaseConnection getDatabase2() { + return databaseConnection2; + } + + public ObjectDatabase getCreatureODB() { + return creatureODB; + } + + public ObjectDatabase getMailODB() { + return mailODB; + } + + public ObjectDatabase getGuildODB() { + return guildODB; + } + + public ObjectDatabase getBuildingODB() { + return buildingODB; + } + + public ObjectDatabase getObjectIdODB() { + return objectIdODB; + } + + public ObjectDatabase getDuplicateIdODB() { + return duplicateIdODB; + } + + public ObjectDatabase getChatRoomODB() { + return chatRoomODB; + } + + public ObjectDatabase getResourcesODB() { + return resourcesODB; + } + + public ObjectDatabase getResourceRootsODB() { + return resourceRootsODB; + } + + public ObjectDatabase getResourceHistoryODB() { + return resourceHistoryODB; + } + + + public int getActiveClients() { + int connections = 0; + for (Map.Entry c : clients.entrySet()) { + if(c.getValue().getSession() != null) { + if (c.getValue().getSession().isConnected()) { + connections++; + } + } + } + return connections; + } + + public int getActiveZoneClients() { + int connections = 0; + for (Map.Entry c : clients.entrySet()) { + if(c.getValue().getSession() != null) { + if (c.getValue().getSession().isConnected() && c.getValue().getParent() != null) { + connections++; + } + } + } + return connections; + } + + + public Client getClient(IoSession session) { + return clients.get(session); + } + + public ConcurrentHashMap getActiveConnectionsMap() { + return clients; + } + + /* + * --------------- Other methods for services --------------- + */ + public void addClient(IoSession session, Client client) { + clients.put(session, client); + } + + public void removeClient(IoSession session) { + clients.remove(session); + } + + // for python scripts + public Thread getCurrentThread() { + return Thread.currentThread(); + } + + public static NGECore getInstance() { + return instance; + } + + public BusConfiguration getEventBusConfig() { + return eventBusConfig; + } + + public void initiateShutdown() { + if(isShuttingDown) + return; + try { + + for(int minutes = 15; minutes > 1; minutes--) { + simulationService.notifyAllClients(new ChatSystemMessage("The server will be shutting down soon. Please find a safe place to logout. (" + minutes + " minutes left)", (byte) 0 ).serialize()); + Thread.sleep(60000); + } + setGalaxyStatus(3); + simulationService.notifyAllClients(new ChatSystemMessage("The server will be shutting down soon. Please find a safe place to logout. (" + 1 + " minutes left)", (byte) 0 ).serialize()); + Thread.sleep(30000); + simulationService.notifyAllClients(new ChatSystemMessage("You will be disconnected in 30 seconds so the server can perform a final save before shutting down. Please find a safe place to logout now.", (byte) 0 ).serialize()); + Thread.sleep(20000); + simulationService.notifyAllClients(new ChatSystemMessage("You will be disconnected in 10 seconds so the server can perform a final save before shutting down. Please find a safe place to logout now.", (byte) 0 ).serialize()); + Thread.sleep(10000); + simulationService.notifyAllClients(new ChatSystemMessage("You will now be disconnected so the server can perform a final save before shutting down.", (byte) 0 ).serialize()); + + synchronized(getActiveConnectionsMap()) { + for(Client client : getActiveConnectionsMap().values()) { + client.getSession().close(true); + connectionService.disconnect(client); + } + } + + System.exit(0); + + } catch (InterruptedException e) { + e.printStackTrace(); + } + + + + } + + public long getGalacticTime() { + return System.currentTimeMillis() - galacticTime; + } + + +} + diff --git a/src/services/DevService.java b/src/services/DevService.java new file mode 100644 index 00000000..30ee710c --- /dev/null +++ b/src/services/DevService.java @@ -0,0 +1,1018 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package services; + +import java.nio.ByteOrder; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.Vector; + +import org.apache.mina.core.buffer.IoBuffer; +import org.apache.mina.core.session.IoSession; + +import protocol.swg.ExpertiseRequestMessage; +import resources.common.Console; +import resources.common.FileUtilities; +import resources.common.Opcodes; +import resources.common.SpawnPoint; +import resources.objects.building.BuildingObject; +import resources.objects.creature.CreatureObject; +import resources.objects.player.PlayerObject; +import resources.objects.tangible.TangibleObject; +import resources.objects.tool.SurveyTool; +import services.sui.SUIWindow; +import services.sui.SUIService.ListBoxType; +import services.sui.SUIWindow.SUICallback; +import services.sui.SUIWindow.Trigger; +import main.NGECore; +import engine.clientdata.ClientFileManager; +import engine.clientdata.visitors.DatatableVisitor; +import engine.clients.Client; +import engine.resources.objects.SWGObject; +import engine.resources.scene.Planet; +import engine.resources.scene.Point3D; +import engine.resources.service.INetworkDispatch; +import engine.resources.service.INetworkRemoteEvent; + +@SuppressWarnings("unused") +public class DevService implements INetworkDispatch { + + private NGECore core; + + public DevService(NGECore core) { + this.core = core; + } + + public void sendCharacterBuilderSUI(CreatureObject creature, int childMenu) + { + Map suiOptions = new HashMap(); + + switch(childMenu) + { + case 0: // Root + suiOptions.put((long) 1, "Character"); + suiOptions.put((long) 2, "Items"); + break; + case 1: // Character + suiOptions.put((long) 10, "Set combat level to 90"); + suiOptions.put((long) 11, "Give 100,000 credits"); + suiOptions.put((long) 12, "Reset expertise"); + break; + case 2: // Items + suiOptions.put((long) 20, "Armor"); + suiOptions.put((long) 21, "Weapons"); + suiOptions.put((long) 22, "Misc Items"); + suiOptions.put((long) 23, "Jedi Items"); + suiOptions.put((long) 110, "Survey Devices"); + //suiOptions.put((long) 120, "House Deeds"); + break; + case 3: // [Items] Weapons + suiOptions.put((long) 30, "Jedi Weapons"); + suiOptions.put((long) 31, "Melee Weapons"); + suiOptions.put((long) 32, "Ranged Weapons"); + break; + case 4: // [Items] Misc Items + suiOptions.put((long) 40, "Unity Ring"); + suiOptions.put((long) 41, "Tusken Rucksack"); + suiOptions.put((long) 42, "Heroism Jewlery Set"); + break; + case 5: // [Items] Armor + suiOptions.put((long) 50, "Assault Armor"); + suiOptions.put((long) 51, "Battle Armor"); + suiOptions.put((long) 52, "Reconnaissance Armor"); + break; + case 6: // [Items] Assault Armor + suiOptions.put((long) 60, "Composite"); + suiOptions.put((long) 61, "Ithorian Sentinel"); + suiOptions.put((long) 62, "Kashyyykian Hunting"); + break; + case 7: // [Items] Battle Armor + suiOptions.put((long) 70, "Bone"); + suiOptions.put((long) 71, "Ithorian Defender"); + suiOptions.put((long) 72, "Kashyyykian Black Mountain"); + break; + case 8: // [Items] Reconnaissance Armor + suiOptions.put((long) 80, "Marauder"); + suiOptions.put((long) 81, "Ithorian Guardian"); + suiOptions.put((long) 82, "Kashyyykian Ceremonial"); + break; + case 9: // [Items] Jedi Items + suiOptions.put((long) 90, "(Light) Jedi Robe"); + suiOptions.put((long) 91, "(Dark) Jedi Robe"); + suiOptions.put((long) 92, "Belt of Master Bodo Baas"); + break; + + } + + final SUIWindow window = core.suiService.createListBox(ListBoxType.LIST_BOX_OK_CANCEL, "Character Builder Terminal", "Select the desired option and click OK.", suiOptions, creature, null, 10); + Vector returnList = new Vector(); + + returnList.add("List.lstList:SelectedRow"); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() + { + public void process(SWGObject owner, int eventType, Vector returnList) + { + int index = Integer.parseInt(returnList.get(0)); + int childIndex = (int) window.getObjectIdByIndex(index); + + CreatureObject player = (CreatureObject) owner; + SWGObject inventory = player.getSlottedObject("inventory"); + Planet planet = player.getPlanet(); + + switch(childIndex) + { + // Root + case 1: // Character + sendCharacterBuilderSUI(player, 1); + return; + case 2: // Items + sendCharacterBuilderSUI(player, 2); + return; + + // Character + case 10: // Set combat level to 90 + core.playerService.grantLevel(player, 90); // Commented out until fixed + //core.playerService.giveExperience(player, 999999999); + return; + case 11: // Give 100,000 credits + player.setCashCredits(player.getCashCredits() + 100000); + return; + case 12: // Reset expertise + // Seefo->Light: I commented out the below line because it gave us an error and didn't properly remove the skill, could you try the method SWGList.reverseGet that I added? + //player.getSkills().get().stream().filter(s -> s.contains("expertise")).forEach(s -> core.skillService.removeSkill(creature, s)); + + // Using this for now + for(int i = creature.getSkills().size() - 1; i >= 0; i-- ) + { + String skill = creature.getSkills().get(i); + if(skill.contains("expertise")) core.skillService.removeSkill(player, skill); + } + return; + + // Items + case 20: // Armor + sendCharacterBuilderSUI(player, 5); + return; + case 21: // Weapons + sendCharacterBuilderSUI(player, 3); + return; + case 22: // Misc Items + sendCharacterBuilderSUI(player, 4); + return; + case 23: // Jedi Items + sendCharacterBuilderSUI(player, 9); + return; + case 25: // Tools + sendCharacterBuilderSUI(player, 15); + return; + + // [Items] Weapons + case 30: // Jedi Weapons + TangibleObject lightsaber1 = (TangibleObject) core.objectService.createObject("object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_gen5.iff", planet); + lightsaber1.setIntAttribute("required_combat_level", 90); + lightsaber1.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1); + lightsaber1.setStringAttribute("class_required", "Jedi"); + lightsaber1.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy"); + lightsaber1.setStringAttribute("cat_wpn_damage.damage", "689-1379"); + + TangibleObject lightsaber2 = (TangibleObject) core.objectService.createObject("object/weapon/melee/2h_sword/crafted_saber/shared_sword_lightsaber_two_handed_gen5.iff", planet); + lightsaber2.setIntAttribute("required_combat_level", 90); + lightsaber2.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1); + lightsaber2.setStringAttribute("class_required", "Jedi"); + lightsaber2.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy"); + lightsaber2.setStringAttribute("cat_wpn_damage.damage", "689-1379"); + + TangibleObject lightsaber3 = (TangibleObject) core.objectService.createObject("object/weapon/melee/polearm/crafted_saber/shared_sword_lightsaber_polearm_gen5.iff", planet); + lightsaber3.setIntAttribute("required_combat_level", 90); + lightsaber3.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1); + lightsaber3.setStringAttribute("class_required", "Jedi"); + lightsaber3.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy"); + lightsaber3.setStringAttribute("cat_wpn_damage.damage", "689-1379"); + + Random random = new Random(); + + lightsaber1.setCustomizationVariable("/private/index_color_blade", (byte) random.nextInt(47)); + lightsaber2.setCustomizationVariable("/private/index_color_blade", (byte) random.nextInt(47)); + lightsaber3.setCustomizationVariable("/private/index_color_blade", (byte) random.nextInt(47)); + + inventory.add(lightsaber1); + inventory.add(lightsaber2); + inventory.add(lightsaber3); + return; + case 31: // Melee Weapons + SWGObject sword1 = core.objectService.createObject("object/weapon/melee/sword/shared_sword_01.iff", planet); + sword1.setIntAttribute("required_combat_level", 90); + sword1.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1); + sword1.setStringAttribute("class_required", "None"); + sword1.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy"); + sword1.setStringAttribute("cat_wpn_damage.damage", "1100-1200"); + + inventory.add(sword1); + return; + case 32: // Ranged Weapons + SWGObject rifle1 = core.objectService.createObject("object/weapon/ranged/rifle/shared_rifle_e11.iff", planet); + rifle1.setIntAttribute("required_combat_level", 90); + rifle1.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", (float) 0.8); + rifle1.setStringAttribute("class_required", "None"); + rifle1.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy"); + rifle1.setStringAttribute("cat_wpn_damage.damage", "800-1250"); + + inventory.add(rifle1); + + SWGObject pistol = core.objectService.createObject("object/weapon/ranged/pistol/shared_pistol_cdef.iff", planet); + pistol.setIntAttribute("required_combat_level", 90); + pistol.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", (float) 0.4); + pistol.setStringAttribute("class_required", "None"); + pistol.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy"); + pistol.setStringAttribute("cat_wpn_damage.damage", "400-559"); + + inventory.add(pistol); + + /* == Disabled until Elemental Damage is implemented. == + SWGObject heavy = core.objectService.createObject("object/weapon/ranged/heavy/shared_som_lava_cannon_generic.iff", planet); + heavy.setIntAttribute("required_combat_level", 90); + heavy.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1); + heavy.setStringAttribute("class_required", "Commando"); + heavy.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy"); + heavy.setStringAttribute("cat_wpn_damage.damage", "700-1400"); + + inventory.add(heavy);*/ + return; + case 40: + TangibleObject ring = (TangibleObject) core.objectService.createObject("object/tangible/wearables/ring/shared_ring_s01.iff", planet); + ring.setCustomName("Unity Ring"); + inventory.add(ring); + case 41: + TangibleObject backpack = (TangibleObject) core.objectService.createObject("object/tangible/wearables/backpack/shared_backpack_krayt_skull.iff", planet); + backpack.setIntAttribute("cat_stat_mod_bonus.@stat_n:agility_modified", 25); + backpack.setIntAttribute("cat_stat_mod_bonus.@stat_n:constitution_modified", 30); + backpack.setIntAttribute("cat_stat_mod_bonus.@stat_n:luck_modified", 25); + backpack.setIntAttribute("cat_stat_mod_bonus.@stat_n:precision_modified", 35); + backpack.setIntAttribute("cat_stat_mod_bonus.@stat_n:stamina_modified", 30); + backpack.setIntAttribute("cat_stat_mod_bonus.@stat_n:strength_modified", 35); + inventory.add(backpack); + return; + case 42: + TangibleObject heroismBand = (TangibleObject) core.objectService.createObject("object/tangible/wearables/ring/shared_ring_s01.iff", planet); + heroismBand.setStfFilename("static_item_n"); + heroismBand.setStfName("item_band_set_hero_01_01"); + heroismBand.setStringAttribute("@set_bonus:piece_bonus_count_3", "@set_bonus:set_bonus_hero_1"); + heroismBand.setStringAttribute("@set_bonus:piece_bonus_count_4", "@set_bonus:set_bonus_hero_2"); + heroismBand.setStringAttribute("@set_bonus:piece_bonus_count_5", "@set_bonus:set_bonus_hero_3"); + heroismBand.setAttachment("setBonus", "set_bonus_hero"); + + TangibleObject heroismRing = (TangibleObject) core.objectService.createObject("object/tangible/wearables/ring/shared_ring_s01.iff", planet); + heroismRing.setStfFilename("static_item_n"); + heroismRing.setStfName("item_ring_set_hero_01_01"); + heroismRing.setStringAttribute("@set_bonus:piece_bonus_count_3", "@set_bonus:set_bonus_hero_1"); + heroismRing.setStringAttribute("@set_bonus:piece_bonus_count_4", "@set_bonus:set_bonus_hero_2"); + heroismRing.setStringAttribute("@set_bonus:piece_bonus_count_5", "@set_bonus:set_bonus_hero_3"); + heroismRing.setAttachment("setBonus", "set_bonus_hero"); + + TangibleObject heroismNecklace = (TangibleObject) core.objectService.createObject("object/tangible/wearables/necklace/shared_necklace_s01.iff", planet); + heroismNecklace.setStfFilename("static_item_n"); + heroismNecklace.setStfName("item_necklace_set_hero_01_01"); + heroismNecklace.setStringAttribute("@set_bonus:piece_bonus_count_3", "@set_bonus:set_bonus_hero_1"); + heroismNecklace.setStringAttribute("@set_bonus:piece_bonus_count_4", "@set_bonus:set_bonus_hero_2"); + heroismNecklace.setStringAttribute("@set_bonus:piece_bonus_count_5", "@set_bonus:set_bonus_hero_3"); + heroismNecklace.setAttachment("setBonus", "set_bonus_hero"); + + TangibleObject heroismBraceletRight = (TangibleObject) core.objectService.createObject("object/tangible/wearables/bracelet/shared_bracelet_s02_r.iff", planet); + heroismBraceletRight.setStfFilename("static_item_n"); + heroismBraceletRight.setStfName("item_bracelet_r_set_hero_01_01"); + heroismBraceletRight.setStringAttribute("@set_bonus:piece_bonus_count_3", "@set_bonus:set_bonus_hero_1"); + heroismBraceletRight.setStringAttribute("@set_bonus:piece_bonus_count_4", "@set_bonus:set_bonus_hero_2"); + heroismBraceletRight.setStringAttribute("@set_bonus:piece_bonus_count_5", "@set_bonus:set_bonus_hero_3"); + heroismBraceletRight.setAttachment("setBonus", "set_bonus_hero"); + + TangibleObject heroismBraceletLeft = (TangibleObject) core.objectService.createObject("object/tangible/wearables/bracelet/shared_bracelet_s02_l.iff", planet); + heroismBraceletLeft.setStfFilename("static_item_n"); + heroismBraceletLeft.setStfName("item_bracelet_l_set_hero_01_01"); + heroismBraceletLeft.setStringAttribute("@set_bonus:piece_bonus_count_3", "@set_bonus:set_bonus_hero_1"); + heroismBraceletLeft.setStringAttribute("@set_bonus:piece_bonus_count_4", "@set_bonus:set_bonus_hero_2"); + heroismBraceletLeft.setStringAttribute("@set_bonus:piece_bonus_count_5", "@set_bonus:set_bonus_hero_3"); + heroismBraceletLeft.setAttachment("setBonus", "set_bonus_hero"); + + inventory.add(heroismBand); + inventory.add(heroismRing); + inventory.add(heroismNecklace); + inventory.add(heroismBraceletRight); + inventory.add(heroismBraceletLeft); + return; + case 50: // [Items] Assault Armor + sendCharacterBuilderSUI(player, 6); + return; + case 51: // [Items] Battle Armor + sendCharacterBuilderSUI(player, 7); + return; + case 52: // [Items] Reconnaissance Armor + sendCharacterBuilderSUI(player, 8); + return; + case 60: // Composite Armor + SWGObject comp_bicep_r = core.objectService.createObject("object/tangible/wearables/armor/composite/shared_armor_composite_bicep_r.iff", planet); + comp_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + comp_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + comp_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + comp_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + comp_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + comp_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject comp_bicep_l = core.objectService.createObject("object/tangible/wearables/armor/composite/shared_armor_composite_bicep_l.iff", planet); + comp_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + comp_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + comp_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + comp_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + comp_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + comp_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject comp_bracer_r = core.objectService.createObject("object/tangible/wearables/armor/composite/shared_armor_composite_bracer_r.iff", planet); + comp_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + comp_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + comp_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + comp_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + comp_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + comp_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject comp_bracer_l = core.objectService.createObject("object/tangible/wearables/armor/composite/shared_armor_composite_bracer_l.iff", planet); + comp_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + comp_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + comp_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + comp_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + comp_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + comp_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject comp_leggings = core.objectService.createObject("object/tangible/wearables/armor/composite/shared_armor_composite_leggings.iff", planet); + comp_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + comp_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + comp_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + comp_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + comp_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + comp_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject comp_helmet = core.objectService.createObject("object/tangible/wearables/armor/composite/shared_armor_composite_helmet.iff", planet); + comp_helmet.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + comp_helmet.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + comp_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + comp_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + comp_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + comp_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject comp_chest = core.objectService.createObject("object/tangible/wearables/armor/composite/shared_armor_composite_chest_plate.iff", planet); + comp_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + comp_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + comp_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + comp_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + comp_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + comp_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject comp_boots = core.objectService.createObject("object/tangible/wearables/armor/composite/shared_armor_composite_boots.iff", planet); + SWGObject comp_gloves = core.objectService.createObject("object/tangible/wearables/armor/composite/shared_armor_composite_gloves.iff", planet); + + + + inventory.add(comp_bicep_r); + inventory.add(comp_bicep_l); + inventory.add(comp_bracer_r); + inventory.add(comp_bracer_l); + inventory.add(comp_leggings); + inventory.add(comp_helmet); + inventory.add(comp_chest); + inventory.add(comp_boots); + inventory.add(comp_gloves); + + + return; + case 61: // Ithorian Sentinel + SWGObject sent_bicep_r = core.objectService.createObject("object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_bicep_r.iff", planet); + sent_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + sent_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + sent_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + sent_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + sent_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + sent_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject sent_bicep_l = core.objectService.createObject("object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_bicep_l.iff", planet); + sent_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + sent_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + sent_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + sent_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + sent_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + sent_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject sent_bracer_r = core.objectService.createObject("object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_bracer_r.iff", planet); + sent_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + sent_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + sent_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + sent_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + sent_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + sent_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject sent_bracer_l = core.objectService.createObject("object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_bracer_l.iff", planet); + sent_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + sent_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + sent_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + sent_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + sent_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + sent_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject sent_leggings = core.objectService.createObject("object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_leggings.iff", planet); + sent_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + sent_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + sent_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + sent_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + sent_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + sent_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject sent_helmet = core.objectService.createObject("object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_helmet.iff", planet); + sent_helmet.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + sent_helmet.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + sent_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + sent_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + sent_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + sent_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject sent_chest = core.objectService.createObject("object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_chest_plate.iff", planet); + sent_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + sent_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + sent_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + sent_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + sent_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + sent_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject sent_boots = core.objectService.createObject("object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_boots.iff", planet); + SWGObject sent_gloves = core.objectService.createObject("object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_gloves.iff", planet); + + + + inventory.add(sent_bicep_r); + inventory.add(sent_bicep_l); + inventory.add(sent_bracer_r); + inventory.add(sent_bracer_l); + inventory.add(sent_leggings); + inventory.add(sent_helmet); + inventory.add(sent_chest); + inventory.add(sent_boots); + inventory.add(sent_gloves); + + + return; + case 62: // Kashyyykian Hunting + SWGObject hunt_bicep_r = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_hunting/shared_armor_kashyyykian_hunting_bicep_r.iff", planet); + hunt_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + hunt_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + hunt_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + hunt_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + hunt_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + hunt_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject hunt_bicep_l = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_hunting/shared_armor_kashyyykian_hunting_bicep_l.iff", planet); + hunt_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + hunt_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + hunt_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + hunt_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + hunt_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + hunt_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject hunt_bracer_r = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_hunting/shared_armor_kashyyykian_hunting_bracer_r.iff", planet); + hunt_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + hunt_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + hunt_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + hunt_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + hunt_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + hunt_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject hunt_bracer_l = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_hunting/shared_armor_kashyyykian_hunting_bracer_l.iff", planet); + hunt_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + hunt_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + hunt_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + hunt_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + hunt_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + hunt_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject hunt_leggings = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_hunting/shared_armor_kashyyykian_hunting_leggings.iff", planet); + hunt_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + hunt_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + hunt_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + hunt_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + hunt_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + hunt_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject hunt_chest = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_hunting/shared_armor_kashyyykian_hunting_chestplate.iff", planet); + hunt_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 7000); + hunt_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 5000); + hunt_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + hunt_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + hunt_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + hunt_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + + + inventory.add(hunt_bicep_r); + inventory.add(hunt_bicep_l); + inventory.add(hunt_bracer_r); + inventory.add(hunt_bracer_l); + inventory.add(hunt_leggings); + inventory.add(hunt_chest); + + + return; + case 70: // Bone Armor + SWGObject bone_bicep_r = core.objectService.createObject("object/tangible/wearables/armor/bone/shared_armor_bone_s01_bicep_r.iff", planet); + bone_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + bone_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + bone_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + bone_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + bone_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + bone_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject bone_bicep_l = core.objectService.createObject("object/tangible/wearables/armor/bone/shared_armor_bone_s01_bicep_l.iff", planet); + bone_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + bone_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + bone_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + bone_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + bone_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + bone_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject bone_bracer_r = core.objectService.createObject("object/tangible/wearables/armor/bone/shared_armor_bone_s01_bracer_r.iff", planet); + bone_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + bone_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + bone_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + bone_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + bone_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + bone_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject bone_bracer_l = core.objectService.createObject("object/tangible/wearables/armor/bone/shared_armor_bone_s01_bracer_l.iff", planet); + bone_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + bone_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + bone_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + bone_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + bone_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + bone_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject bone_leggings = core.objectService.createObject("object/tangible/wearables/armor/bone/shared_armor_bone_s01_leggings.iff", planet); + bone_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + bone_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + bone_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + bone_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + bone_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + bone_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject bone_helmet = core.objectService.createObject("object/tangible/wearables/armor/bone/shared_armor_bone_s01_helmet.iff", planet); + bone_helmet.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + bone_helmet.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + bone_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + bone_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + bone_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + bone_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject bone_chest = core.objectService.createObject("object/tangible/wearables/armor/bone/shared_armor_bone_s01_chest_plate.iff", planet); + bone_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + bone_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + bone_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + bone_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + bone_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + bone_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject bone_boots = core.objectService.createObject("object/tangible/wearables/armor/bone/shared_armor_bone_s01_boots.iff", planet); + SWGObject bone_gloves = core.objectService.createObject("object/tangible/wearables/armor/bone/shared_armor_bone_s01_gloves.iff", planet); + + + + inventory.add(bone_bicep_r); + inventory.add(bone_bicep_l); + inventory.add(bone_bracer_r); + inventory.add(bone_bracer_l); + inventory.add(bone_leggings); + inventory.add(bone_helmet); + inventory.add(bone_chest); + inventory.add(bone_boots); + inventory.add(bone_gloves); + + + return; + case 71: // Ithorian Defender + SWGObject def_bicep_r = core.objectService.createObject("object/tangible/wearables/armor/ithorian_defender/shared_ith_armor_s01_bicep_r.iff", planet); + def_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + def_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + def_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + def_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + def_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + def_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject def_bicep_l = core.objectService.createObject("object/tangible/wearables/armor/ithorian_defender/shared_ith_armor_s01_bicep_l.iff", planet); + def_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + def_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + def_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + def_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + def_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + def_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject def_bracer_r = core.objectService.createObject("object/tangible/wearables/armor/ithorian_defender/shared_ith_armor_s01_bracer_r.iff", planet); + def_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + def_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + def_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + def_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + def_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + def_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject def_bracer_l = core.objectService.createObject("object/tangible/wearables/armor/ithorian_defender/shared_ith_armor_s01_bracer_l.iff", planet); + def_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + def_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + def_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + def_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + def_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + def_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject def_leggings = core.objectService.createObject("object/tangible/wearables/armor/ithorian_defender/shared_ith_armor_s01_leggings.iff", planet); + def_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + def_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + def_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + def_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + def_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + def_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject def_helmet = core.objectService.createObject("object/tangible/wearables/armor/ithorian_defender/shared_ith_armor_s01_helmet.iff", planet); + def_helmet.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + def_helmet.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + def_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + def_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + def_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + def_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject def_chest = core.objectService.createObject("object/tangible/wearables/armor/ithorian_defender/shared_ith_armor_s01_chest_plate.iff", planet); + def_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + def_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + def_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + def_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + def_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + def_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject def_boots = core.objectService.createObject("object/tangible/wearables/armor/ithorian_defender/shared_ith_armor_s01_boots.iff", planet); + SWGObject def_gloves = core.objectService.createObject("object/tangible/wearables/armor/ithorian_defender/shared_ith_armor_s01_gloves.iff", planet); + + + + inventory.add(def_bicep_r); + inventory.add(def_bicep_l); + inventory.add(def_bracer_r); + inventory.add(def_bracer_l); + inventory.add(def_leggings); + inventory.add(def_helmet); + inventory.add(def_chest); + inventory.add(def_boots); + inventory.add(def_gloves); + + + return; + case 72: // Kashyyykian Black Mountain + SWGObject moun_bicep_r = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_black_mtn/shared_armor_kashyyykian_black_mtn_bicep_r.iff", planet); + moun_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + moun_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + moun_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + moun_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + moun_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + moun_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject moun_bicep_l = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_black_mtn/shared_armor_kashyyykian_black_mtn_bicep_l.iff", planet); + moun_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + moun_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + moun_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + moun_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + moun_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + moun_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject moun_bracer_r = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_black_mtn/shared_armor_kashyyykian_black_mtn_bracer_r.iff", planet); + moun_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + moun_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + moun_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + moun_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + moun_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + moun_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject moun_bracer_l = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_black_mtn/shared_armor_kashyyykian_black_mtn_bracer_l.iff", planet); + moun_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + moun_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + moun_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + moun_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + moun_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + moun_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject moun_leggings = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_black_mtn/shared_armor_kashyyykian_black_mtn_leggings.iff", planet); + moun_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + moun_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + moun_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + moun_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + moun_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + moun_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject moun_chest = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_black_mtn/shared_armor_kashyyykian_black_mtn_chestplate.iff", planet); + moun_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 6000); + moun_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 6000); + moun_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + moun_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + moun_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + moun_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + + + inventory.add(moun_bicep_r); + inventory.add(moun_bicep_l); + inventory.add(moun_bracer_r); + inventory.add(moun_bracer_l); + inventory.add(moun_leggings); + inventory.add(moun_chest); + + + return; + case 80: // Marauder Armor + SWGObject mar_bicep_r = core.objectService.createObject("object/tangible/wearables/armor/marauder/shared_armor_marauder_s02_bicep_r.iff", planet); + mar_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + mar_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + mar_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + mar_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + mar_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + mar_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject mar_bicep_l = core.objectService.createObject("object/tangible/wearables/armor/marauder/shared_armor_marauder_s02_bicep_l.iff", planet); + mar_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + mar_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + mar_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + mar_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + mar_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + mar_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject mar_bracer_r = core.objectService.createObject("object/tangible/wearables/armor/marauder/shared_armor_marauder_s02_bracer_r.iff", planet); + mar_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + mar_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + mar_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + mar_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + mar_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + mar_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject mar_bracer_l = core.objectService.createObject("object/tangible/wearables/armor/marauder/shared_armor_marauder_s02_bracer_l.iff", planet); + mar_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + mar_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + mar_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + mar_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + mar_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + mar_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject mar_leggings = core.objectService.createObject("object/tangible/wearables/armor/marauder/shared_armor_marauder_s02_leggings.iff", planet); + mar_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + mar_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + mar_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + mar_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + mar_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + mar_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject mar_helmet = core.objectService.createObject("object/tangible/wearables/armor/marauder/shared_armor_marauder_s02_helmet.iff", planet); + mar_helmet.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + mar_helmet.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + mar_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + mar_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + mar_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + mar_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject mar_chest = core.objectService.createObject("object/tangible/wearables/armor/marauder/shared_armor_marauder_s02_chest_plate.iff", planet); + mar_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + mar_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + mar_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + mar_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + mar_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + mar_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject mar_boots = core.objectService.createObject("object/tangible/wearables/armor/marauder/shared_armor_marauder_s02_boots.iff", planet); + SWGObject mar_gloves = core.objectService.createObject("object/tangible/wearables/armor/marauder/shared_armor_marauder_s02_gloves.iff", planet); + + + + inventory.add(mar_bicep_r); + inventory.add(mar_bicep_l); + inventory.add(mar_bracer_r); + inventory.add(mar_bracer_l); + inventory.add(mar_leggings); + inventory.add(mar_helmet); + inventory.add(mar_chest); + inventory.add(mar_boots); + inventory.add(mar_gloves); + + + return; + case 81: // Ithorian Guardian + SWGObject gau_bicep_r = core.objectService.createObject("object/tangible/wearables/armor/ithorian_guardian/shared_ith_armor_s02_bicep_r.iff", planet); + gau_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + gau_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + gau_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + gau_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + gau_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + gau_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject gau_bicep_l = core.objectService.createObject("object/tangible/wearables/armor/ithorian_guardian/shared_ith_armor_s02_bicep_l.iff", planet); + gau_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + gau_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + gau_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + gau_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + gau_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + gau_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject gau_bracer_r = core.objectService.createObject("object/tangible/wearables/armor/ithorian_guardian/shared_ith_armor_s02_bracer_r.iff", planet); + gau_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + gau_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + gau_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + gau_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + gau_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + gau_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject gau_bracer_l = core.objectService.createObject("object/tangible/wearables/armor/ithorian_guardian/shared_ith_armor_s02_bracer_l.iff", planet); + gau_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + gau_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + gau_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + gau_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + gau_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + gau_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject gau_leggings = core.objectService.createObject("object/tangible/wearables/armor/ithorian_guardian/shared_ith_armor_s02_leggings.iff", planet); + gau_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + gau_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + gau_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + gau_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + gau_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + gau_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject gau_helmet = core.objectService.createObject("object/tangible/wearables/armor/ithorian_guardian/shared_ith_armor_s02_helmet.iff", planet); + gau_helmet.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + gau_helmet.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + gau_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + gau_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + gau_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + gau_helmet.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject gau_chest = core.objectService.createObject("object/tangible/wearables/armor/ithorian_guardian/shared_ith_armor_s02_chest_plate.iff", planet); + gau_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + gau_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + gau_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + gau_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + gau_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + gau_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject gau_boots = core.objectService.createObject("object/tangible/wearables/armor/ithorian_guardian/shared_ith_armor_s02_boots.iff", planet); + SWGObject gau_gloves = core.objectService.createObject("object/tangible/wearables/armor/ithorian_guardian/shared_ith_armor_s02_gloves.iff", planet); + + + + inventory.add(gau_bicep_r); + inventory.add(gau_bicep_l); + inventory.add(gau_bracer_r); + inventory.add(gau_bracer_l); + inventory.add(gau_leggings); + inventory.add(gau_helmet); + inventory.add(gau_chest); + inventory.add(gau_boots); + inventory.add(gau_gloves); + + + return; + case 82: // Kashyyykian Ceremonial + SWGObject cer_bicep_r = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_ceremonial/shared_armor_kashyyykian_ceremonial_bicep_r.iff", planet); + cer_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + cer_bicep_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + cer_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + cer_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + cer_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + cer_bicep_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject cer_bicep_l = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_ceremonial/shared_armor_kashyyykian_ceremonial_bicep_l.iff", planet); + cer_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + cer_bicep_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + cer_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + cer_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + cer_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + cer_bicep_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject cer_bracer_r = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_ceremonial/shared_armor_kashyyykian_ceremonial_bracer_r.iff", planet); + cer_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + cer_bracer_r.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + cer_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + cer_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + cer_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + cer_bracer_r.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject cer_bracer_l = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_ceremonial/shared_armor_kashyyykian_ceremonial_bracer_l.iff", planet); + cer_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + cer_bracer_l.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + cer_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + cer_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + cer_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + cer_bracer_l.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject cer_leggings = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_ceremonial/shared_armor_kashyyykian_ceremonial_leggings.iff", planet); + cer_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + cer_leggings.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + cer_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + cer_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + cer_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + cer_leggings.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + SWGObject cer_chest = core.objectService.createObject("object/tangible/wearables/armor/kashyyykian_ceremonial/shared_armor_kashyyykian_ceremonial_chestplate.iff", planet); + cer_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_kinetic", 5000); + cer_chest.setIntAttribute("cat_armor_standard_protection.armor_eff_energy", 7000); + cer_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_heat", 6000); + cer_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_cold", 6000); + cer_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_acid", 6000); + cer_chest.setIntAttribute("cat_armor_special_protection.special_protection_type_electricity", 6000); + + + + inventory.add(cer_bicep_r); + inventory.add(cer_bicep_l); + inventory.add(cer_bracer_r); + inventory.add(cer_bracer_l); + inventory.add(cer_leggings); + inventory.add(cer_chest); + + return; + + case 90: // (Light) Jedi Robe + inventory.add(core.objectService.createObject("object/tangible/wearables/robe/shared_robe_jedi_light_s03.iff", planet)); + return; + case 91: // (Dark) Jedi Robe + inventory.add(core.objectService.createObject("object/tangible/wearables/robe/shared_robe_jedi_dark_s03.iff", planet)); + return; + case 92: // Belt of Master Bodo Baas + inventory.add(core.objectService.createObject("object/tangible/wearables/backpack/shared_fannypack_s01.iff", planet)); + return; + case 110: + SurveyTool mineralSurveyTool = (SurveyTool) core.objectService.createObject("object/tangible/survey_tool/shared_survey_tool_mineral.iff", planet); + mineralSurveyTool.setCustomName("Mineral Survey Device"); + inventory.add(mineralSurveyTool); + + SurveyTool chemicalSurveyTool = (SurveyTool) core.objectService.createObject("object/tangible/survey_tool/shared_survey_tool_inorganic.iff", planet); + chemicalSurveyTool.setCustomName("Chemical Survey Device"); + inventory.add(chemicalSurveyTool); + + SurveyTool floraSurveyTool = (SurveyTool) core.objectService.createObject("object/tangible/survey_tool/shared_survey_tool_lumber.iff", planet); + floraSurveyTool.setCustomName("Flora Survey Device"); + inventory.add(floraSurveyTool); + + SurveyTool gasSurveyTool = (SurveyTool) core.objectService.createObject("object/tangible/survey_tool/shared_survey_tool_gas.iff", planet); + gasSurveyTool.setCustomName("Gas Survey Device"); + inventory.add(gasSurveyTool); + + SurveyTool waterSurveyTool = (SurveyTool) core.objectService.createObject("object/tangible/survey_tool/shared_survey_tool_moisture.iff", planet); + waterSurveyTool.setCustomName("Water Survey Device"); + inventory.add(waterSurveyTool); + + SurveyTool windSurveyTool = (SurveyTool) core.objectService.createObject("object/tangible/survey_tool/shared_survey_tool_wind.iff", planet); + windSurveyTool.setCustomName("Wind Survey Device"); + inventory.add(windSurveyTool); + + SurveyTool solarSurveyTool = (SurveyTool) core.objectService.createObject("object/tangible/survey_tool/shared_survey_tool_solar.iff", planet); + solarSurveyTool.setCustomName("Solar Survey Device"); + inventory.add(solarSurveyTool); + return; + + case 120: + SWGObject houseDeed = core.objectService.createObject("object/tangible/deed/player_house_deed/shared_generic_house_small_deed.iff", planet); + inventory.add(houseDeed); + return; + } + } + }); + + core.suiService.openSUIWindow(window); + } + + @Override + public void insertOpcodes(Map swgOpcodes, Map objControllerOpcodes) { + } + + + @Override + public void shutdown() { + + } + +} + From d776b52292d822e748aa16d87572fd0389236be5 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Thu, 10 Apr 2014 00:46:38 +0200 Subject: [PATCH 42/79] restored loot NGECore and Devservice --- src/main/NGECore.java | 3 +++ src/services/DevService.java | 13 +++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/main/NGECore.java b/src/main/NGECore.java index 050e213b..ab271d74 100644 --- a/src/main/NGECore.java +++ b/src/main/NGECore.java @@ -60,6 +60,7 @@ import services.GroupService; import services.housing.HousingService; import services.InstanceService; import services.LoginService; +import services.LootService; import services.MissionService; import services.PlayerService; import services.ScriptService; @@ -178,6 +179,7 @@ public class NGECore { public ConversationService conversationService; public HousingService housingService; + public LootService lootService; // Login Server @@ -290,6 +292,7 @@ public class NGECore { devService = new DevService(this); conversationService = new ConversationService(this); housingService = new HousingService(this); + lootService = new LootService(this); if (config.keyExists("JYTHONCONSOLE.PORT")) { int jythonPort = config.getInt("JYTHONCONSOLE.PORT"); diff --git a/src/services/DevService.java b/src/services/DevService.java index 30ee710c..3b303a8a 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -86,6 +86,8 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 23, "Jedi Items"); suiOptions.put((long) 110, "Survey Devices"); //suiOptions.put((long) 120, "House Deeds"); + suiOptions.put((long) 111, "Spawn Tusken"); + suiOptions.put((long) 112, "Spawn Krayt"); break; case 3: // [Items] Weapons suiOptions.put((long) 30, "Jedi Weapons"); @@ -993,6 +995,17 @@ public class DevService implements INetworkDispatch { inventory.add(solarSurveyTool); return; + case 111: + SWGObject spawned = core.staticService.spawnObject("object/mobile/shared_tusken_raider.iff", "tatooine", 0L, 3522F, 4F, -4801F, 0.70F, 0.71F); + + core.lootService.handleLootRequest(player,(TangibleObject)spawned); + break; + case 112: + SWGObject spawned2 = core.staticService.spawnObject("object/mobile/shared_krayt_dragon.iff", "tatooine", 0L, 3512F, 4F, -4801F, 0.70F, 0.71F); + + core.lootService.handleLootRequest(player,(TangibleObject)spawned2); + break; + case 120: SWGObject houseDeed = core.objectService.createObject("object/tangible/deed/player_house_deed/shared_generic_house_small_deed.iff", planet); inventory.add(houseDeed); From 221f9a93fc1283561b612c2605f5def79ee56fad Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Thu, 10 Apr 2014 04:22:54 +0200 Subject: [PATCH 43/79] Loot radial and power crystal items Connected loot radial to corpse. Made powercrystal scripts. Allowed the mobile scripts to drop loot now. --- scripts/loot/lootItems/junk/brain.py | 4 + .../loot/lootItems/junk/chassis_blueprint.py | 4 + scripts/loot/lootItems/junk/launcher_tube.py | 4 + scripts/loot/lootItems/powercrystal_fair.py | 2 +- .../loot/lootItems/powercrystal_flawless.py | 2 +- scripts/loot/lootItems/powercrystal_good.py | 2 +- .../loot/lootItems/powercrystal_perfect.py | 8 ++ scripts/loot/lootItems/powercrystal_poor.py | 2 +- .../loot/lootItems/powercrystal_premium.py | 2 +- .../loot/lootItems/powercrystal_quality.py | 2 +- scripts/loot/lootItems/powercrystal_select.py | 2 +- scripts/loot/lootItems/rarelootchest1.py | 8 ++ scripts/loot/lootItems/rarelootchest2.py | 8 ++ scripts/loot/lootPools/powercrystals_hiq.py | 6 ++ scripts/loot/lootPools/rareloot.py | 4 +- scripts/mobiles/tatooine/krayt_dragon.py | 19 +++++ scripts/mobiles/tatooine/tusken_raider.py | 28 +++++++ .../dressed_dark_jedi_master_female_twk_01.py | 13 +++- .../dressed_dark_jedi_master_female_twk_02.py | 13 +++- .../dressed_dark_jedi_master_female_zab_01.py | 13 +++- .../dressed_dark_jedi_master_female_zab_02.py | 13 +++- .../dressed_dark_jedi_master_male_human_01.py | 13 +++- .../dressed_dark_jedi_master_male_human_02.py | 13 +++- .../dressed_dark_jedi_master_male_human_03.py | 13 +++- .../dressed_dark_jedi_master_male_human_04.py | 13 +++- .../dressed_dark_jedi_master_male_human_05.py | 13 +++- .../dressed_dark_jedi_master_male_human_06.py | 13 +++- .../object/mobile/dressed_stormtrooper_m.py | 18 ++++- scripts/radial/npc/corpse.py | 16 ++++ .../objects/tangible/TangibleObject.java | 12 ++- src/services/DevService.java | 20 ++++- src/services/LootService.java | 78 +++++++++++-------- src/services/spawn/SpawnService.java | 2 + 33 files changed, 326 insertions(+), 57 deletions(-) create mode 100644 scripts/loot/lootItems/powercrystal_perfect.py create mode 100644 scripts/loot/lootItems/rarelootchest1.py create mode 100644 scripts/loot/lootItems/rarelootchest2.py create mode 100644 scripts/loot/lootPools/powercrystals_hiq.py create mode 100644 scripts/mobiles/tatooine/krayt_dragon.py create mode 100644 scripts/mobiles/tatooine/tusken_raider.py create mode 100644 scripts/radial/npc/corpse.py diff --git a/scripts/loot/lootItems/junk/brain.py b/scripts/loot/lootItems/junk/brain.py index d0e8f837..bb01bf52 100644 --- a/scripts/loot/lootItems/junk/brain.py +++ b/scripts/loot/lootItems/junk/brain.py @@ -2,3 +2,7 @@ def itemTemplate(): return 'object/tangible/loot/creature_loot/generic/shared_brain_s01.iff' + +def customItemName(): + + return 'Brain' \ No newline at end of file diff --git a/scripts/loot/lootItems/junk/chassis_blueprint.py b/scripts/loot/lootItems/junk/chassis_blueprint.py index 5c2445a8..b876b351 100644 --- a/scripts/loot/lootItems/junk/chassis_blueprint.py +++ b/scripts/loot/lootItems/junk/chassis_blueprint.py @@ -2,3 +2,7 @@ def itemTemplate(): return 'object/tangible/loot/generic_usable/shared_chassis_blueprint_usuable.iff' + +def customItemName(): + + return 'Chassis Blueprint' \ No newline at end of file diff --git a/scripts/loot/lootItems/junk/launcher_tube.py b/scripts/loot/lootItems/junk/launcher_tube.py index 5612b566..4159a299 100644 --- a/scripts/loot/lootItems/junk/launcher_tube.py +++ b/scripts/loot/lootItems/junk/launcher_tube.py @@ -2,3 +2,7 @@ def itemTemplate(): return 'object/tangible/loot/npc_loot/shared_launcher_tube_generic.iff' + +def customItemName(): + + return 'Launcher Tube' \ No newline at end of file diff --git a/scripts/loot/lootItems/powercrystal_fair.py b/scripts/loot/lootItems/powercrystal_fair.py index ef8d2dc0..3c533136 100644 --- a/scripts/loot/lootItems/powercrystal_fair.py +++ b/scripts/loot/lootItems/powercrystal_fair.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_force_crystal.iff' def customItemName(): diff --git a/scripts/loot/lootItems/powercrystal_flawless.py b/scripts/loot/lootItems/powercrystal_flawless.py index 8e532580..8163cb74 100644 --- a/scripts/loot/lootItems/powercrystal_flawless.py +++ b/scripts/loot/lootItems/powercrystal_flawless.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_force_crystal.iff' def customItemName(): diff --git a/scripts/loot/lootItems/powercrystal_good.py b/scripts/loot/lootItems/powercrystal_good.py index 8e532580..8163cb74 100644 --- a/scripts/loot/lootItems/powercrystal_good.py +++ b/scripts/loot/lootItems/powercrystal_good.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_force_crystal.iff' def customItemName(): diff --git a/scripts/loot/lootItems/powercrystal_perfect.py b/scripts/loot/lootItems/powercrystal_perfect.py new file mode 100644 index 00000000..8163cb74 --- /dev/null +++ b/scripts/loot/lootItems/powercrystal_perfect.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_force_crystal.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/powercrystal_poor.py b/scripts/loot/lootItems/powercrystal_poor.py index 8e532580..8163cb74 100644 --- a/scripts/loot/lootItems/powercrystal_poor.py +++ b/scripts/loot/lootItems/powercrystal_poor.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_force_crystal.iff' def customItemName(): diff --git a/scripts/loot/lootItems/powercrystal_premium.py b/scripts/loot/lootItems/powercrystal_premium.py index 8e532580..8163cb74 100644 --- a/scripts/loot/lootItems/powercrystal_premium.py +++ b/scripts/loot/lootItems/powercrystal_premium.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_force_crystal.iff' def customItemName(): diff --git a/scripts/loot/lootItems/powercrystal_quality.py b/scripts/loot/lootItems/powercrystal_quality.py index 8e532580..8163cb74 100644 --- a/scripts/loot/lootItems/powercrystal_quality.py +++ b/scripts/loot/lootItems/powercrystal_quality.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_force_crystal.iff' def customItemName(): diff --git a/scripts/loot/lootItems/powercrystal_select.py b/scripts/loot/lootItems/powercrystal_select.py index 8e532580..8163cb74 100644 --- a/scripts/loot/lootItems/powercrystal_select.py +++ b/scripts/loot/lootItems/powercrystal_select.py @@ -1,7 +1,7 @@ def itemTemplate(): - return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff' + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_force_crystal.iff' def customItemName(): diff --git a/scripts/loot/lootItems/rarelootchest1.py b/scripts/loot/lootItems/rarelootchest1.py new file mode 100644 index 00000000..1541e62a --- /dev/null +++ b/scripts/loot/lootItems/rarelootchest1.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/item/shared_rare_loot_chest_3.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/rarelootchest2.py b/scripts/loot/lootItems/rarelootchest2.py new file mode 100644 index 00000000..1541e62a --- /dev/null +++ b/scripts/loot/lootItems/rarelootchest2.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/item/shared_rare_loot_chest_3.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootPools/powercrystals_hiq.py b/scripts/loot/lootPools/powercrystals_hiq.py new file mode 100644 index 00000000..63d33a9b --- /dev/null +++ b/scripts/loot/lootPools/powercrystals_hiq.py @@ -0,0 +1,6 @@ + +def itemNames(): + return ['powercrystal_premium','powercrystal_flawless','powercrystal_perfect'] + +def itemChances(): + return [94,5,1] #= 100% \ No newline at end of file diff --git a/scripts/loot/lootPools/rareloot.py b/scripts/loot/lootPools/rareloot.py index 4487075d..435ebfce 100644 --- a/scripts/loot/lootPools/rareloot.py +++ b/scripts/loot/lootPools/rareloot.py @@ -2,8 +2,8 @@ def itemNames(): - templates=['object/tangible/item/shared_rare_loot_chest_3.iff'] + templates=['rarelootchest1','rarelootchest2'] return templates def itemChances(): - return [1] \ No newline at end of file + return [70,30] \ No newline at end of file diff --git a/scripts/mobiles/tatooine/krayt_dragon.py b/scripts/mobiles/tatooine/krayt_dragon.py new file mode 100644 index 00000000..aded5429 --- /dev/null +++ b/scripts/mobiles/tatooine/krayt_dragon.py @@ -0,0 +1,19 @@ +import sys +from services.spawn import MobileTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + templates = Vector() + templates.add('object/mobile/shared_krayt_dragon.iff') + mobileTemplate.setTemplates(templates) + mobileTemplate.setLevel(10) + mobileTemplate.setDifficulty(2) + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + mobileTemplate.setCreatureName('krayt_dragon') + mobileTemplate.setScale(2) + mobileTemplate.setAttackRange(12) + core.spawnService.addMobileTemplate('krayt_dragon', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_raider.py b/scripts/mobiles/tatooine/tusken_raider.py new file mode 100644 index 00000000..8daec628 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_raider.py @@ -0,0 +1,28 @@ +import sys +from services.spawn import MobileTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tuskenraider') + mobileTemplate.setLevel(90) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weaponTemplates.add('object/weapon/ranged/rifle/shared_rifle_e11.iff') + weaponTemplates.add('object/weapon/ranged/rifle/shared_rifle_t21.iff') + mobileTemplate.setWeaponTemplates(weaponTemplates) + + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedShot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tuskenraider', mobileTemplate) + \ No newline at end of file diff --git a/scripts/object/mobile/dressed_dark_jedi_master_female_twk_01.py b/scripts/object/mobile/dressed_dark_jedi_master_female_twk_01.py index ccad8904..58245dfb 100644 --- a/scripts/object/mobile/dressed_dark_jedi_master_female_twk_01.py +++ b/scripts/object/mobile/dressed_dark_jedi_master_female_twk_01.py @@ -1,4 +1,15 @@ import sys def setup(core, object): - return \ No newline at end of file + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['powercrystals_hiq'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 85 + object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + return \ No newline at end of file diff --git a/scripts/object/mobile/dressed_dark_jedi_master_female_twk_02.py b/scripts/object/mobile/dressed_dark_jedi_master_female_twk_02.py index ccad8904..58245dfb 100644 --- a/scripts/object/mobile/dressed_dark_jedi_master_female_twk_02.py +++ b/scripts/object/mobile/dressed_dark_jedi_master_female_twk_02.py @@ -1,4 +1,15 @@ import sys def setup(core, object): - return \ No newline at end of file + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['powercrystals_hiq'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 85 + object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + return \ No newline at end of file diff --git a/scripts/object/mobile/dressed_dark_jedi_master_female_zab_01.py b/scripts/object/mobile/dressed_dark_jedi_master_female_zab_01.py index ccad8904..58245dfb 100644 --- a/scripts/object/mobile/dressed_dark_jedi_master_female_zab_01.py +++ b/scripts/object/mobile/dressed_dark_jedi_master_female_zab_01.py @@ -1,4 +1,15 @@ import sys def setup(core, object): - return \ No newline at end of file + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['powercrystals_hiq'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 85 + object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + return \ No newline at end of file diff --git a/scripts/object/mobile/dressed_dark_jedi_master_female_zab_02.py b/scripts/object/mobile/dressed_dark_jedi_master_female_zab_02.py index ccad8904..58245dfb 100644 --- a/scripts/object/mobile/dressed_dark_jedi_master_female_zab_02.py +++ b/scripts/object/mobile/dressed_dark_jedi_master_female_zab_02.py @@ -1,4 +1,15 @@ import sys def setup(core, object): - return \ No newline at end of file + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['powercrystals_hiq'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 85 + object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + return \ No newline at end of file diff --git a/scripts/object/mobile/dressed_dark_jedi_master_male_human_01.py b/scripts/object/mobile/dressed_dark_jedi_master_male_human_01.py index ccad8904..58245dfb 100644 --- a/scripts/object/mobile/dressed_dark_jedi_master_male_human_01.py +++ b/scripts/object/mobile/dressed_dark_jedi_master_male_human_01.py @@ -1,4 +1,15 @@ import sys def setup(core, object): - return \ No newline at end of file + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['powercrystals_hiq'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 85 + object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + return \ No newline at end of file diff --git a/scripts/object/mobile/dressed_dark_jedi_master_male_human_02.py b/scripts/object/mobile/dressed_dark_jedi_master_male_human_02.py index ccad8904..58245dfb 100644 --- a/scripts/object/mobile/dressed_dark_jedi_master_male_human_02.py +++ b/scripts/object/mobile/dressed_dark_jedi_master_male_human_02.py @@ -1,4 +1,15 @@ import sys def setup(core, object): - return \ No newline at end of file + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['powercrystals_hiq'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 85 + object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + return \ No newline at end of file diff --git a/scripts/object/mobile/dressed_dark_jedi_master_male_human_03.py b/scripts/object/mobile/dressed_dark_jedi_master_male_human_03.py index ccad8904..58245dfb 100644 --- a/scripts/object/mobile/dressed_dark_jedi_master_male_human_03.py +++ b/scripts/object/mobile/dressed_dark_jedi_master_male_human_03.py @@ -1,4 +1,15 @@ import sys def setup(core, object): - return \ No newline at end of file + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['powercrystals_hiq'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 85 + object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + return \ No newline at end of file diff --git a/scripts/object/mobile/dressed_dark_jedi_master_male_human_04.py b/scripts/object/mobile/dressed_dark_jedi_master_male_human_04.py index ccad8904..58245dfb 100644 --- a/scripts/object/mobile/dressed_dark_jedi_master_male_human_04.py +++ b/scripts/object/mobile/dressed_dark_jedi_master_male_human_04.py @@ -1,4 +1,15 @@ import sys def setup(core, object): - return \ No newline at end of file + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['powercrystals_hiq'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 85 + object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + return \ No newline at end of file diff --git a/scripts/object/mobile/dressed_dark_jedi_master_male_human_05.py b/scripts/object/mobile/dressed_dark_jedi_master_male_human_05.py index ccad8904..58245dfb 100644 --- a/scripts/object/mobile/dressed_dark_jedi_master_male_human_05.py +++ b/scripts/object/mobile/dressed_dark_jedi_master_male_human_05.py @@ -1,4 +1,15 @@ import sys def setup(core, object): - return \ No newline at end of file + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['powercrystals_hiq'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 85 + object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + return \ No newline at end of file diff --git a/scripts/object/mobile/dressed_dark_jedi_master_male_human_06.py b/scripts/object/mobile/dressed_dark_jedi_master_male_human_06.py index ccad8904..58245dfb 100644 --- a/scripts/object/mobile/dressed_dark_jedi_master_male_human_06.py +++ b/scripts/object/mobile/dressed_dark_jedi_master_male_human_06.py @@ -1,4 +1,15 @@ import sys def setup(core, object): - return \ No newline at end of file + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['powercrystals_hiq'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 85 + object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + return \ No newline at end of file diff --git a/scripts/object/mobile/dressed_stormtrooper_m.py b/scripts/object/mobile/dressed_stormtrooper_m.py index ccad8904..961975a9 100644 --- a/scripts/object/mobile/dressed_stormtrooper_m.py +++ b/scripts/object/mobile/dressed_stormtrooper_m.py @@ -1,4 +1,20 @@ import sys def setup(core, object): - return \ No newline at end of file + + lootPoolNames_1 = ['Junk','Rifles'] + lootPoolChances_1 = [90,70] + lootGroupChance_1 = 90 + object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['Colorcrystals'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 20 + object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + lootPoolNames_3 = ['Rareloot'] + lootPoolChances_3 = [100] + lootGroupChance_3 = 1 + object.addToLootGroups(lootPoolNames_3,lootPoolChances_3,lootGroupChance_3) + + return \ No newline at end of file diff --git a/scripts/radial/npc/corpse.py b/scripts/radial/npc/corpse.py new file mode 100644 index 00000000..3155798a --- /dev/null +++ b/scripts/radial/npc/corpse.py @@ -0,0 +1,16 @@ +from resources.common import RadialOptions +import sys + +def createRadial(core, owner, target, radials): + radials.clear() + radials.add(RadialOptions(0, 36, 0, 'Loot')) + + return + +def handleSelection(core, owner, target, option): + if option == 36 and target: + core.lootService.handleLootRequest(owner,target) + if option == 15 and target: + core.objectService.destroyObject(target) + return + \ No newline at end of file diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index ee415959..3001915f 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -60,7 +60,7 @@ import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Persistent(version=3) +@Persistent(version=4) public class TangibleObject extends SWGObject { // TODO: Thread safety @@ -86,6 +86,8 @@ public class TangibleObject extends SWGObject { //private TreeSet> lootSpecification = new TreeSet>(); private List lootGroups = new ArrayList(); + private boolean looted = false; + @NotPersistent private TangibleObject killer = null; @@ -463,6 +465,14 @@ public class TangibleObject extends SWGObject { this.lootGroups.add(lootGroup); } + public boolean isLooted() { + return looted; + } + + public void setLooted(boolean looted) { + this.looted = looted; + } + @Override public void sendBaselines(Client destination) { diff --git a/src/services/DevService.java b/src/services/DevService.java index 3b303a8a..f6b387be 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -996,14 +996,26 @@ public class DevService implements INetworkDispatch { return; case 111: - SWGObject spawned = core.staticService.spawnObject("object/mobile/shared_tusken_raider.iff", "tatooine", 0L, 3522F, 4F, -4801F, 0.70F, 0.71F); - core.lootService.handleLootRequest(player,(TangibleObject)spawned); + + CreatureObject spawned2 = core.spawnService.spawnCreature("object/mobile/shared_tusken_raider.iff", "tatooine", 0, player.getPosition().x, player.getPosition().y, player.getPosition().z, 1, 0, 1, 0, 5); + // core.spawnService.spawnCreature(arg1, actor.getPlanet().getName(), 0, pos.x, pos.y, pos.z, 1, 0, 1, 0, int(arg2)) + //SWGObject spawned = core.staticService.spawnObject("object/mobile/shared_tusken_raider.iff", "tatooine", 0L, 3522F, 4F, -4801F, 0.70F, 0.71F); + //CreatureObject spawned2 = (CreatureObject) spawned; +// spawned2.setLevel((short)5); +// spawned2.setCombatFlag((byte)1); +// spawned2.setStateBitmask(1); +// spawned2.setOptionsBitmask(128); + + //core.lootService.handleLootRequest(player,(TangibleObject)spawned2); break; case 112: - SWGObject spawned2 = core.staticService.spawnObject("object/mobile/shared_krayt_dragon.iff", "tatooine", 0L, 3512F, 4F, -4801F, 0.70F, 0.71F); + SWGObject spawned3 = core.staticService.spawnObject("object/mobile/shared_krayt_dragon.iff", "tatooine", 0L, 3512F, 4F, -4801F, 0.70F, 0.71F); - core.lootService.handleLootRequest(player,(TangibleObject)spawned2); +// pos = actor.getWorldPosition() +// core.spawnService.spawnCreature(arg1, actor.getPlanet().getName(), 0, pos.x, pos.y, pos.z, 1, 0, 1, 0, int(arg2)) +// + core.lootService.handleLootRequest(player,(TangibleObject)spawned3); break; case 120: diff --git a/src/services/LootService.java b/src/services/LootService.java index d405e95d..2b38bf74 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -58,7 +58,6 @@ public class LootService implements INetworkDispatch { public LootService(NGECore core) { this.core = core; - //core.commandService.registerCommand(""); } @Override @@ -73,37 +72,19 @@ public class LootService implements INetworkDispatch { public void handleLootRequest(CreatureObject requester, TangibleObject lootedObject) { + if (lootedObject.isLooted()) + return; + if (requester.getCustomName().contains("Kun")){ requester.setCashCredits(requester.getCashCredits()+1); - requester.sendSystemMessage("You looted 1 lousy credit.", (byte)1); + requester.sendSystemMessage("You looted 1 credit.", (byte)1); return; } LootRollSession lootRollSession = new LootRollSession(requester); - String lootedObjectType = "Tangible"; - if (lootedObject instanceof CreatureObject) - lootedObjectType = "Creature"; - - // Credit drop is depending on the CL of the looted CreatureObject - // or if explicitely assigned in the .py script - int lootedCredits = 0; - if (lootedObjectType.equals("Creature")){ - CreatureObject lootedCreature = (CreatureObject) lootedObject; - int creatureCL = lootedCreature.getLevel(); - creatureCL = 90; - int maximalCredits = (int)Math.floor(4*creatureCL + creatureCL*creatureCL*4/100); - int minimalCredits = (int)Math.floor(creatureCL*2 + maximalCredits/2); - int spanOfCredits = maximalCredits - minimalCredits; - lootedCredits = minimalCredits + new Random().nextInt(spanOfCredits); - requester.sendSystemMessage("You looted " + lootedCredits + " credits.", (byte)1); - } - - if (lootedObjectType.equals("Tangible")){ - // This is for chests etc. - // Check the py script - } - + handleCreditDrop(requester,lootedObject); + CreatureObject lootedCreature = (CreatureObject) lootedObject; //TreeSet> lootSpec = lootedObject.getLootSpecification(); @@ -141,6 +122,8 @@ public class LootService implements INetworkDispatch { requesterInventory.add(droppedItem); } + + lootedObject.setLooted(true); // ToDo: Group loot settings etc. actual loot chance was lootgroupchance*lootchance @@ -271,8 +254,8 @@ public class LootService implements INetworkDispatch { droppedItem.setAttachment("LootItemName", itemName); handleCustomDropName(droppedItem,customName); handleStats(droppedItem); - setCustomization(droppedItem); - handleSpecialItems(droppedItem); + setCustomization(droppedItem, itemName); + handleSpecialItems(droppedItem,itemName); lootRollSession.addDroppedItem(droppedItem); } @@ -293,10 +276,19 @@ public class LootService implements INetworkDispatch { return droppedItem; } - private void setCustomization(TangibleObject droppedItem) { + private void setCustomization(TangibleObject droppedItem,String itemName) { // Example color crystal - droppedItem.setCustomizationVariable("/private/index_color_1", (byte) new Random().nextInt(7)); // 4 blue + if (itemName.contains("colorcrystal")) { + System.out.println("colorcrystal"); + droppedItem.setCustomizationVariable("/private/index_color_1", (byte) new Random().nextInt(11)); + } + + // Example power crystal + if (itemName.contains("powercrystal")) { + System.out.println("powercrystal"); + droppedItem.setCustomizationVariable("/private/index_color_1", (byte) 0x21); // 0x1F + } // More general // String path = "scripts/loot/lootItems/"+droppedItem.getCustomName().toLowerCase(); @@ -309,11 +301,11 @@ public class LootService implements INetworkDispatch { // } } - private void handleSpecialItems(TangibleObject droppedItem) { - if (droppedItem.getTemplate().contains("shared_lightsaber_module_krayt_dragon_pearl")){ + private void handleSpecialItems(TangibleObject droppedItem,String itemName) { + if (itemName.contains("kraytpearl")){ handleKraytPearl(droppedItem); } - if (droppedItem.getTemplate().contains("shared_lightsaber_module_force_crystal.iff")){ + if (itemName.contains("powercrystal")){ handlePowerCrystal(droppedItem); } } @@ -326,6 +318,28 @@ public class LootService implements INetworkDispatch { } + private void handleCreditDrop(CreatureObject requester,TangibleObject lootedObject){ + int lootedCredits = 0; + // Credit drop is depending on the CL of the looted CreatureObject + // or if explicitely assigned in the .py script + if (lootedObject instanceof CreatureObject){ + CreatureObject lootedCreature = (CreatureObject) lootedObject; + int creatureCL = lootedCreature.getLevel(); + creatureCL = 90; + int maximalCredits = (int)Math.floor(4*creatureCL + creatureCL*creatureCL*4/100); + int minimalCredits = (int)Math.floor(creatureCL*2 + maximalCredits/2); + int spanOfCredits = maximalCredits - minimalCredits; + lootedCredits = minimalCredits + new Random().nextInt(spanOfCredits); + requester.setCashCredits(requester.getCashCredits()+lootedCredits); + requester.sendSystemMessage("You looted " + lootedCredits + " credits.", (byte)1); + } + + if (lootedObject instanceof TangibleObject){ + // This is for chests etc. + // Check the py script + } + } + // ************* Special items ************ private void handleKraytPearl(TangibleObject droppedItem) { diff --git a/src/services/spawn/SpawnService.java b/src/services/spawn/SpawnService.java index bd0aadd1..a9ef4522 100644 --- a/src/services/spawn/SpawnService.java +++ b/src/services/spawn/SpawnService.java @@ -166,6 +166,8 @@ public class SpawnService { AIActor actor = new AIActor(creature, creature.getPosition(), scheduler); creature.setAttachment("AI", actor); actor.setMobileTemplate(mobileTemplate); + + creature.setAttachment("radial_filename", "npc/corpse"); if(cell == null) { From 4bb055ca19545030b28b623180158f8f50bc148d Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Thu, 10 Apr 2014 17:04:52 +0200 Subject: [PATCH 44/79] Rare loot system stage added Rare loot system stage in effect for every loot session. Added legendary,exceptional,rare loot chests --- .../rarelootchestcontents/exceptionaltable.py | 12 +++ .../rarelootchestcontents/legendarytable.py | 8 ++ .../loot/rarelootchestcontents/raretable.py | 0 .../object/tangible/item/rare_loot_chest_1.py | 1 + .../object/tangible/item/rare_loot_chest_2.py | 1 + .../object/tangible/item/rare_loot_chest_3.py | 1 + scripts/radial/lootchest.py | 13 +++ src/resources/objects/group/GroupObject.java | 5 + .../objects/loot/LootRollSession.java | 63 +++++++++++- .../objects/tangible/TangibleObject.java | 12 ++- src/services/LootService.java | 98 ++++++++++++++++++- 11 files changed, 207 insertions(+), 7 deletions(-) create mode 100644 scripts/loot/rarelootchestcontents/exceptionaltable.py create mode 100644 scripts/loot/rarelootchestcontents/legendarytable.py create mode 100644 scripts/loot/rarelootchestcontents/raretable.py create mode 100644 scripts/radial/lootchest.py diff --git a/scripts/loot/rarelootchestcontents/exceptionaltable.py b/scripts/loot/rarelootchestcontents/exceptionaltable.py new file mode 100644 index 00000000..b8c4ba4d --- /dev/null +++ b/scripts/loot/rarelootchestcontents/exceptionaltable.py @@ -0,0 +1,12 @@ + +def itemTemplates(): + templates = ['Biological_Focus_Crystal','Synapse_Focus_Crystal','Concentrated_Bacta_Tank','DNA_Storage_Device_Kowakian'] + templates = templates + ['Dug_Costume_Instructions','Dusk_in_Kachirho','Mercenaries_Despair','Mercenaries_Lament','Nightsister_Melee_Armguard'] + templates = templates + ['Rare_Painting','Sunriders_Destiny'] + return templates + +def itemChances(): + chances = [9,9,9,9] + chances = chances+[9,9,9,9,9] + chances = chances+[9,9] #= 100% + return chances \ No newline at end of file diff --git a/scripts/loot/rarelootchestcontents/legendarytable.py b/scripts/loot/rarelootchestcontents/legendarytable.py new file mode 100644 index 00000000..d372b968 --- /dev/null +++ b/scripts/loot/rarelootchestcontents/legendarytable.py @@ -0,0 +1,8 @@ + +def itemNames(): + + return ['colorCrystal'] + +def itemChances(): + + return [70] \ No newline at end of file diff --git a/scripts/loot/rarelootchestcontents/raretable.py b/scripts/loot/rarelootchestcontents/raretable.py new file mode 100644 index 00000000..e69de29b diff --git a/scripts/object/tangible/item/rare_loot_chest_1.py b/scripts/object/tangible/item/rare_loot_chest_1.py index ccad8904..33b2b963 100644 --- a/scripts/object/tangible/item/rare_loot_chest_1.py +++ b/scripts/object/tangible/item/rare_loot_chest_1.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'lootchest') return \ No newline at end of file diff --git a/scripts/object/tangible/item/rare_loot_chest_2.py b/scripts/object/tangible/item/rare_loot_chest_2.py index ccad8904..33b2b963 100644 --- a/scripts/object/tangible/item/rare_loot_chest_2.py +++ b/scripts/object/tangible/item/rare_loot_chest_2.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'lootchest') return \ No newline at end of file diff --git a/scripts/object/tangible/item/rare_loot_chest_3.py b/scripts/object/tangible/item/rare_loot_chest_3.py index ccad8904..33b2b963 100644 --- a/scripts/object/tangible/item/rare_loot_chest_3.py +++ b/scripts/object/tangible/item/rare_loot_chest_3.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'lootchest') return \ No newline at end of file diff --git a/scripts/radial/lootchest.py b/scripts/radial/lootchest.py new file mode 100644 index 00000000..1a0c9889 --- /dev/null +++ b/scripts/radial/lootchest.py @@ -0,0 +1,13 @@ +from resources.common import RadialOptions +import sys + +def createRadial(core, owner, target, radials): + radials.add(RadialOptions(0, 21, 1, 'Open')) + radials.add(RadialOptions(0, 7, 1, '')) + return + +def handleSelection(core, owner, target, option): + if option == 21 and target: + owner.sendSystemMessage('RLS chest content system not yet implemented.',1) + return + \ No newline at end of file diff --git a/src/resources/objects/group/GroupObject.java b/src/resources/objects/group/GroupObject.java index 0cac422d..0f5c4622 100644 --- a/src/resources/objects/group/GroupObject.java +++ b/src/resources/objects/group/GroupObject.java @@ -41,6 +41,11 @@ public class GroupObject extends UniverseObject { private GroupMessageBuilder messageBuilder; private int chatRoomId; + public static int FREE_FOR_ALL = 0; + public static int MASTER_LOOTER = 1; + public static int LOTTERY = 2; + + public GroupObject(long objectId) { super(objectId, null, new Point3D(0, 0, 0), new Quaternion(1, 0, 0, 0), "object/group/shared_group_object.iff"); messageBuilder = new GroupMessageBuilder(this); diff --git a/src/resources/objects/loot/LootRollSession.java b/src/resources/objects/loot/LootRollSession.java index cb7c93e4..59e06267 100644 --- a/src/resources/objects/loot/LootRollSession.java +++ b/src/resources/objects/loot/LootRollSession.java @@ -37,25 +37,50 @@ import resources.objects.tangible.TangibleObject; public class LootRollSession { private String SessionID; // leaderName-SystemTime + private boolean sessionValid; private GroupObject playerGroup; private List droppedItems; private Planet sessionPlanet; private List errorMessages; + private int sessionLootMode; + private boolean allowRareLoot; + private boolean increasedRLSChance; public LootRollSession(){ } - public LootRollSession(CreatureObject requester){ + public LootRollSession(CreatureObject requester, TangibleObject lootedObject){ long requesterGroupId = requester.getGroupId(); if (requesterGroupId>0){ this.playerGroup = (GroupObject) NGECore.getInstance().objectService.getObject(requesterGroupId); this.SessionID = playerGroup.getGroupLeader().getCustomName()+"-"+System.currentTimeMillis(); + } else { this.SessionID = requester.getCustomName()+"-"+System.currentTimeMillis(); } + + if (lootedObject instanceof CreatureObject){ + CreatureObject lootedCreature = (CreatureObject)lootedObject; + // Exclude rare loot depending on creature level + // For groups maybe average CL? + if (requester.getLevel()-lootedCreature.getLevel()<=6){ + this.setAllowRareLoot(true); + } + } + + // Group situation + if (this.getPlayerGroup()!=null){ + if (this.getPlayerGroup().getMemberList().size()>=4) + this.setIncreasedRLSChance(true); + } + + // Possible AFKer check here + + droppedItems = new ArrayList(); errorMessages = new ArrayList(); sessionPlanet = requester.getPlanet(); + allowRareLoot = false; } public List getDroppedItems() { @@ -89,4 +114,40 @@ public class LootRollSession { public void addErrorMessage(String errorMessage) { this.errorMessages.add(errorMessage); } + + public int getSessionLootMode() { + return sessionLootMode; + } + + public void setSessionLootMode(int sessionLootMode) { + this.sessionLootMode = sessionLootMode; + } + + public boolean isAllowRareLoot() { + return allowRareLoot; + } + + public void setAllowRareLoot(boolean allowRareLoot) { + this.allowRareLoot = allowRareLoot; + } + + public GroupObject getPlayerGroup() { + return playerGroup; + } + + public boolean isIncreasedRLSChance() { + return increasedRLSChance; + } + + public void setIncreasedRLSChance(boolean increasedRLSChance) { + this.increasedRLSChance = increasedRLSChance; + } + + public boolean isSessionValid() { + return sessionValid; + } + + public void setSessionValid(boolean sessionValid) { + this.sessionValid = sessionValid; + } } diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index 3001915f..eccd631f 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -60,7 +60,7 @@ import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Persistent(version=4) +@Persistent(version=5) public class TangibleObject extends SWGObject { // TODO: Thread safety @@ -87,6 +87,7 @@ public class TangibleObject extends SWGObject { private List lootGroups = new ArrayList(); private boolean looted = false; + private boolean lootLock = false; @NotPersistent private TangibleObject killer = null; @@ -473,6 +474,14 @@ public class TangibleObject extends SWGObject { this.looted = looted; } + public boolean isLootLock() { + return lootLock; + } + + public void setLootLock(boolean lootLock) { + this.lootLock = lootLock; + } + @Override public void sendBaselines(Client destination) { @@ -497,4 +506,5 @@ public class TangibleObject extends SWGObject { } + } diff --git a/src/services/LootService.java b/src/services/LootService.java index 2b38bf74..4084d8fd 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -39,6 +39,7 @@ import java.util.Random; import java.util.Vector; import resources.objects.creature.CreatureObject; +import resources.objects.group.GroupObject; import resources.objects.loot.LootGroup; import resources.objects.loot.LootRollSession; import resources.objects.tangible.TangibleObject; @@ -72,18 +73,23 @@ public class LootService implements INetworkDispatch { public void handleLootRequest(CreatureObject requester, TangibleObject lootedObject) { - if (lootedObject.isLooted()) + if (lootedObject.isLooted() || lootedObject.isLootLock()) return; + lootedObject.setLootLock(true); + if (requester.getCustomName().contains("Kun")){ requester.setCashCredits(requester.getCashCredits()+1); requester.sendSystemMessage("You looted 1 credit.", (byte)1); + lootedObject.setLooted(true); return; } - LootRollSession lootRollSession = new LootRollSession(requester); + LootRollSession lootRollSession = new LootRollSession(requester,lootedObject); handleCreditDrop(requester,lootedObject); + + lootSituationAssessment(requester,lootedObject,lootRollSession); CreatureObject lootedCreature = (CreatureObject) lootedObject; @@ -96,12 +102,23 @@ public class LootService implements INetworkDispatch { LootGroup lootGroup = iterator.next(); int groupChance = lootGroup.getLootGroupChance(); int lootGroupRoll = new Random().nextInt(100); - if (lootGroupRoll <= groupChance){ + if (lootGroupRoll <= groupChance){ System.out.println("this lootGroup will drop something"); handleLootGroup(lootGroup,lootRollSession); //this lootGroup will drop something e.g. {kraytpearl_range,krayt_tissue_rare} } } + // Rare Loot System Stage (Is in place for all looted creatures) + if (lootRollSession.isAllowRareLoot()){ + int randomRareLoot = new Random().nextInt(100); + int chanceRequirement = 1; + if (lootRollSession.isIncreasedRLSChance()) + chanceRequirement+=3; // RLS chance is at 4% for groupsize >= 4 + if (randomRareLoot <= chanceRequirement){ + handleRareLootChest(lootRollSession); + } + } + // ********** Phase 1 complete, loot items determined ********** // stored in the lootSession @@ -113,6 +130,8 @@ public class LootService implements INetworkDispatch { for (String msg : lootRollSession.getErrorMessages()){ // ToDo: Show this for each group member later! requester.sendSystemMessage(msg,(byte) 1); + lootedObject.setLootLock(false); + return; } } @@ -121,6 +140,9 @@ public class LootService implements INetworkDispatch { for (TangibleObject droppedItem : lootRollSession.getDroppedItems()){ requesterInventory.add(droppedItem); + if (droppedItem.getAttachment("LootItemName").toString().contains("Loot Chest")){ + requester.playEffectObject("clienteffect/level_granted.cef", ""); + } } lootedObject.setLooted(true); @@ -148,7 +170,7 @@ public class LootService implements INetworkDispatch { for(int i=0;i Date: Thu, 10 Apr 2014 17:49:47 +0200 Subject: [PATCH 45/79] Clean up Cleaned up classes Moved loot radial to death state --- options.cfg | 6 ++-- .../object/mobile/dressed_stormtrooper_m.py | 5 ---- scripts/object/mobile/tusken_raider.py | 5 ---- .../objects/tangible/TangibleObject.java | 5 ---- src/services/DevService.java | 29 ++----------------- src/services/ai/states/DeathState.java | 1 + src/services/spawn/SpawnService.java | 2 +- 7 files changed, 7 insertions(+), 46 deletions(-) diff --git a/options.cfg b/options.cfg index 9a9489b6..5a3a7f8e 100644 --- a/options.cfg +++ b/options.cfg @@ -1,3 +1,3 @@ -LOAD.SNAPSHOT_OBJECTS=0 -LOAD.BUILDOUT_OBJECTS=0 -LOAD.RESOURCE.SYSTEM=0 \ No newline at end of file +LOAD.SNAPSHOT_OBJECTS=1 +LOAD.BUILDOUT_OBJECTS=1 +LOAD.RESOURCE.SYSTEM=1 \ No newline at end of file diff --git a/scripts/object/mobile/dressed_stormtrooper_m.py b/scripts/object/mobile/dressed_stormtrooper_m.py index 961975a9..a4b0d784 100644 --- a/scripts/object/mobile/dressed_stormtrooper_m.py +++ b/scripts/object/mobile/dressed_stormtrooper_m.py @@ -11,10 +11,5 @@ def setup(core, object): lootPoolChances_2 = [100] lootGroupChance_2 = 20 object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) - - lootPoolNames_3 = ['Rareloot'] - lootPoolChances_3 = [100] - lootGroupChance_3 = 1 - object.addToLootGroups(lootPoolNames_3,lootPoolChances_3,lootGroupChance_3) return \ No newline at end of file diff --git a/scripts/object/mobile/tusken_raider.py b/scripts/object/mobile/tusken_raider.py index 961975a9..97f7842a 100644 --- a/scripts/object/mobile/tusken_raider.py +++ b/scripts/object/mobile/tusken_raider.py @@ -12,9 +12,4 @@ def setup(core, object): lootGroupChance_2 = 20 object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) - lootPoolNames_3 = ['Rareloot'] - lootPoolChances_3 = [100] - lootGroupChance_3 = 1 - object.addToLootGroups(lootPoolNames_3,lootPoolChances_3,lootGroupChance_3) - return \ No newline at end of file diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index eccd631f..3ac40cf1 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -23,17 +23,12 @@ package resources.objects.tangible; import java.io.ByteArrayOutputStream; import java.util.ArrayList; -import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.SortedSet; -import java.util.TreeMap; -import java.util.TreeSet; import java.util.Vector; import javax.xml.bind.DatatypeConverter; diff --git a/src/services/DevService.java b/src/services/DevService.java index f6b387be..ef265f41 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -67,7 +67,7 @@ public class DevService implements INetworkDispatch { public void sendCharacterBuilderSUI(CreatureObject creature, int childMenu) { Map suiOptions = new HashMap(); - + switch(childMenu) { case 0: // Root @@ -85,9 +85,7 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 22, "Misc Items"); suiOptions.put((long) 23, "Jedi Items"); suiOptions.put((long) 110, "Survey Devices"); - //suiOptions.put((long) 120, "House Deeds"); - suiOptions.put((long) 111, "Spawn Tusken"); - suiOptions.put((long) 112, "Spawn Krayt"); + if(creature.getClient().isGM()) suiOptions.put((long) 120, "House Deeds"); break; case 3: // [Items] Weapons suiOptions.put((long) 30, "Jedi Weapons"); @@ -995,29 +993,6 @@ public class DevService implements INetworkDispatch { inventory.add(solarSurveyTool); return; - case 111: - - - CreatureObject spawned2 = core.spawnService.spawnCreature("object/mobile/shared_tusken_raider.iff", "tatooine", 0, player.getPosition().x, player.getPosition().y, player.getPosition().z, 1, 0, 1, 0, 5); - // core.spawnService.spawnCreature(arg1, actor.getPlanet().getName(), 0, pos.x, pos.y, pos.z, 1, 0, 1, 0, int(arg2)) - //SWGObject spawned = core.staticService.spawnObject("object/mobile/shared_tusken_raider.iff", "tatooine", 0L, 3522F, 4F, -4801F, 0.70F, 0.71F); - //CreatureObject spawned2 = (CreatureObject) spawned; -// spawned2.setLevel((short)5); -// spawned2.setCombatFlag((byte)1); -// spawned2.setStateBitmask(1); -// spawned2.setOptionsBitmask(128); - - //core.lootService.handleLootRequest(player,(TangibleObject)spawned2); - break; - case 112: - SWGObject spawned3 = core.staticService.spawnObject("object/mobile/shared_krayt_dragon.iff", "tatooine", 0L, 3512F, 4F, -4801F, 0.70F, 0.71F); - -// pos = actor.getWorldPosition() -// core.spawnService.spawnCreature(arg1, actor.getPlanet().getName(), 0, pos.x, pos.y, pos.z, 1, 0, 1, 0, int(arg2)) -// - core.lootService.handleLootRequest(player,(TangibleObject)spawned3); - break; - case 120: SWGObject houseDeed = core.objectService.createObject("object/tangible/deed/player_house_deed/shared_generic_house_small_deed.iff", planet); inventory.add(houseDeed); diff --git a/src/services/ai/states/DeathState.java b/src/services/ai/states/DeathState.java index 13abdec0..14df1485 100644 --- a/src/services/ai/states/DeathState.java +++ b/src/services/ai/states/DeathState.java @@ -29,6 +29,7 @@ public class DeathState extends AIState { @Override public byte onEnter(AIActor actor) { NGECore.getInstance().aiService.awardExperience(actor); + actor.getCreature().setAttachment("radial_filename", "npc/corpse"); actor.scheduleDespawn(); return 0; } diff --git a/src/services/spawn/SpawnService.java b/src/services/spawn/SpawnService.java index a9ef4522..915c0498 100644 --- a/src/services/spawn/SpawnService.java +++ b/src/services/spawn/SpawnService.java @@ -167,7 +167,7 @@ public class SpawnService { creature.setAttachment("AI", actor); actor.setMobileTemplate(mobileTemplate); - creature.setAttachment("radial_filename", "npc/corpse"); + //creature.setAttachment("radial_filename", "npc/corpse"); if(cell == null) { From 20de91205b6b231311d8cca5d55db0a5199677ed Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Thu, 10 Apr 2014 17:56:02 +0200 Subject: [PATCH 46/79] More cleanup --- src/services/spawn/SpawnService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/services/spawn/SpawnService.java b/src/services/spawn/SpawnService.java index 915c0498..74da646a 100644 --- a/src/services/spawn/SpawnService.java +++ b/src/services/spawn/SpawnService.java @@ -167,7 +167,6 @@ public class SpawnService { creature.setAttachment("AI", actor); actor.setMobileTemplate(mobileTemplate); - //creature.setAttachment("radial_filename", "npc/corpse"); if(cell == null) { From b8b33a5019cc4ac6dd151082e1270aaa6d7908be Mon Sep 17 00:00:00 2001 From: Waverunner Date: Thu, 10 Apr 2014 14:44:27 -0400 Subject: [PATCH 47/79] Refactored ChatRoom to store Strings for lists instead of CreatureObject --- .../swg/chat/ChatQueryRoomResults.java | 18 +++---- src/services/chat/ChatRoom.java | 54 +++++++++++-------- src/services/chat/ChatService.java | 30 +++++------ 3 files changed, 56 insertions(+), 46 deletions(-) diff --git a/src/protocol/swg/chat/ChatQueryRoomResults.java b/src/protocol/swg/chat/ChatQueryRoomResults.java index da760c20..33d29f77 100644 --- a/src/protocol/swg/chat/ChatQueryRoomResults.java +++ b/src/protocol/swg/chat/ChatQueryRoomResults.java @@ -54,37 +54,37 @@ public class ChatQueryRoomResults extends SWGMessage { buffer.putShort((short) 7); buffer.putInt(0xC4DE864E); - Vector users = room.getUserList(); + Vector users = room.getUserList(); buffer.putInt(users.size()); if (users.size() > 0) { - for (CreatureObject creo : users) { + for (String str : users) { buffer.put(getAsciiString("SWG")); buffer.put(getAsciiString(server)); - buffer.put(getAsciiString(creo.getCustomName())); + buffer.put(getAsciiString(str)); } } buffer.putInt(0); // TODO: Invited list for chat rooms - Vector moderators = room.getModeratorList(); + Vector moderators = room.getModeratorList(); buffer.putInt(moderators.size()); if (moderators.size() > 0) { - for (CreatureObject creo : users) { + for (String str : moderators) { buffer.put(getAsciiString("SWG")); buffer.put(getAsciiString(server)); - buffer.put(getAsciiString(creo.getCustomName())); + buffer.put(getAsciiString(str)); } } - Vector banned = room.getBanList(); + Vector banned = room.getBanList(); buffer.putInt(banned.size()); if (banned.size() > 0) { - for (CreatureObject creo : users) { + for (String str : banned) { buffer.put(getAsciiString("SWG")); buffer.put(getAsciiString(server)); - buffer.put(getAsciiString(creo.getCustomName())); + buffer.put(getAsciiString(str)); } } diff --git a/src/services/chat/ChatRoom.java b/src/services/chat/ChatRoom.java index a2428907..d489e3e1 100644 --- a/src/services/chat/ChatRoom.java +++ b/src/services/chat/ChatRoom.java @@ -37,10 +37,10 @@ public class ChatRoom { private int roomId; private String roomAddress; // name - private Vector moderatorList = new Vector(); - private Vector banList = new Vector(); + private Vector moderatorList = new Vector(); + private Vector banList = new Vector(); @NotPersistent - private Vector userList = new Vector(); // current users + private Vector userList = new Vector(); // current users private boolean moderatorsOnly; private boolean privateRoom; @@ -50,9 +50,9 @@ public class ChatRoom { public String getCreator() { return creator; } - + public void setCreator(String creator) { - this.creator = creator; + this.creator = creator.toLowerCase(); } public String getRoomAddress() { @@ -71,22 +71,14 @@ public class ChatRoom { this.roomId = roomId; } - public Vector getModeratorList() { + public Vector getModeratorList() { return moderatorList; } - public void setModeratorList(Vector moderatorList) { - this.moderatorList = moderatorList; - } - - public Vector getUserList() { + public Vector getUserList() { return userList; } - public void setUserList(Vector userList) { - this.userList = userList; - } - public boolean isModeratorsOnly() { return moderatorsOnly; } @@ -108,17 +100,13 @@ public class ChatRoom { } public void setOwner(String owner) { - this.owner = owner; + this.owner = owner.toLowerCase(); } - public Vector getBanList() { + public Vector getBanList() { return banList; } - public void setBanList(Vector banList) { - this.banList = banList; - } - public String getDescription() { return description; } @@ -134,4 +122,28 @@ public class ChatRoom { public void setVisible(boolean visible) { this.visible = visible; } + + public void addUser(String user) { + userList.add(user.toLowerCase()); + } + + public void addModerator(String moderator) { + moderatorList.add(moderator.toLowerCase()); + } + + public void banUser(String user) { + banList.add(user.toLowerCase()); + } + + public boolean hasUser(String user) { + return userList.contains(user.toLowerCase()); + } + + public boolean hasModerator(String moderator) { + return moderatorList.contains(moderator.toLowerCase()); + } + + public boolean hasBan(String user) { + return banList.contains(user.toLowerCase()); + } } diff --git a/src/services/chat/ChatService.java b/src/services/chat/ChatService.java index 06afbab6..06844115 100644 --- a/src/services/chat/ChatService.java +++ b/src/services/chat/ChatService.java @@ -451,7 +451,7 @@ public class ChatService implements INetworkDispatch { ChatEnterRoomById sentPacket = new ChatEnterRoomById(); sentPacket.deserialize(data); - joinChatRoom((CreatureObject) obj, sentPacket.getRoomId()); + joinChatRoom(obj.getCustomName(), sentPacket.getRoomId()); //System.out.println("Entering room... " + sentPacket.getRoomId()); @@ -763,24 +763,25 @@ public class ChatService implements INetworkDispatch { return room; } - public void joinChatRoom(CreatureObject player, int roomId) { + public void joinChatRoom(String user, int roomId) { - String playerName = player.getCustomName().toLowerCase(); - - if (playerName.contains(" ")) - playerName = playerName.split(" ")[0]; + if (user.contains(" ")) + user = user.split(" ")[0]; ChatRoom room = getChatRoom(roomId); if (room == null) return; - ChatOnEnteredRoom enterRoom = new ChatOnEnteredRoom(playerName, 0, roomId, true); - - if (!room.getUserList().contains(player)) - room.getUserList().add(player); - - room.getUserList().stream().forEach(user -> user.getClient().getSession().write(enterRoom.serialize())); + if (!room.hasUser(user)) { + ChatOnEnteredRoom enterRoom = new ChatOnEnteredRoom(user, 0, roomId, true); + room.addUser(user); + + room.getUserList().stream().forEach(str -> { + SWGObject userObj = getObjectByFirstName(str); + if (userObj != null) { userObj.getClient().getSession().write(enterRoom.serialize()); } + }); + } } public void leaveChatRoom(CreatureObject player, int roomId) { @@ -815,11 +816,8 @@ public class ChatService implements INetworkDispatch { sender.getClient().getSession().write(onSend.serialize()); ChatRoomMessage roomMessage = new ChatRoomMessage(roomId, senderName, message); - Vector users = room.getUserList(); + Vector users = room.getUserList(); - for (CreatureObject user : users) { - user.getClient().getSession().write(roomMessage.serialize()); - } } public ConcurrentHashMap getChatRooms() { From e23fd23c2ac2534ae7af7dbc0b4ee2c6b3c5e71c Mon Sep 17 00:00:00 2001 From: Waverunner Date: Thu, 10 Apr 2014 15:32:45 -0400 Subject: [PATCH 48/79] Fixed null error on startup --- nge.cfg | 1 - src/main/NGECore.java | 9 +++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/nge.cfg b/nge.cfg index 6d4d88df..036d6202 100644 --- a/nge.cfg +++ b/nge.cfg @@ -13,5 +13,4 @@ GALAXY_ID=2 GALAXY_NAME=Local Connection XPMULTIPLIER=1.0 MAXNUMBEROFCHARACTERS=2 -LOAD.RESOURCE.SYSTEM=1 MOTD=Welcome to PSWG Test Center! \ No newline at end of file diff --git a/src/main/NGECore.java b/src/main/NGECore.java index 02469dff..b081dc0b 100644 --- a/src/main/NGECore.java +++ b/src/main/NGECore.java @@ -240,6 +240,11 @@ public class NGECore { if (!(config.loadConfigFile())) { config = DefaultConfig.getConfig(); } + + Config options = new Config(); + options.setFilePath("options.cfg"); + boolean optionsConfigLoaded = options.loadConfigFile(); + // Database databaseConnection = new DatabaseConnection(); databaseConnection.connect(config.getString("DB.URL"), config.getString("DB.NAME"), config.getString("DB.USER"), config.getString("DB.PASS"), "postgresql"); @@ -309,7 +314,7 @@ public class NGECore { aiService = new AIService(this); //missionService = new MissionService(this); - if (config.getInt("LOAD.RESOURCE.SYSTEM") == 1) { + if (optionsConfigLoaded && options.getInt("LOAD.RESOURCE.SYSTEM") == 1) { surveyService = new SurveyService(this); resourceService = new ResourceService(this); } @@ -413,7 +418,7 @@ public class NGECore { objectService.loadBuildings(); - if (config.getInt("LOAD.RESOURCE.SYSTEM") == 1) { + if (optionsConfigLoaded && options.getInt("LOAD.RESOURCE.SYSTEM") > 0) { objectService.loadResourceRoots(); objectService.loadResources(); } From 0eab2ff8c93a2645afb4543b3f11633ff101a15b Mon Sep 17 00:00:00 2001 From: Seefo Date: Thu, 10 Apr 2014 17:38:37 -0400 Subject: [PATCH 49/79] Fixed an issue where killing an NPC did not set you as the killer object --- src/services/combat/CombatService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/services/combat/CombatService.java b/src/services/combat/CombatService.java index 1f455338..f8cbb7fc 100644 --- a/src/services/combat/CombatService.java +++ b/src/services/combat/CombatService.java @@ -191,7 +191,9 @@ public class CombatService implements INetworkDispatch { { defender.removeDefender(creature); creature.removeDefender(defender); - } + } + + if(((CreatureObject) target).getPlayerObject() == null) target.setKiller(attacker); } } else if(target instanceof TangibleObject) From f7bac13377eac7d9f95f62be051719ce36e0ffb4 Mon Sep 17 00:00:00 2001 From: Waverunner Date: Thu, 10 Apr 2014 18:13:45 -0400 Subject: [PATCH 50/79] Added chat channels for all planets (system and planetary chat) --- src/protocol/swg/chat/ChatRoomList.java | 59 ++++++++++++------ src/protocol/swg/chat/ChatServerStatus.java | 2 + src/protocol/swg/chat/VoiceChatStatus.java | 47 +++++++++++++++ src/services/TerrainService.java | 5 ++ src/services/chat/ChatRoom.java | 1 - src/services/chat/ChatService.java | 66 ++++++++++++++++----- src/services/object/ObjectService.java | 24 ++++---- 7 files changed, 159 insertions(+), 45 deletions(-) create mode 100644 src/protocol/swg/chat/VoiceChatStatus.java diff --git a/src/protocol/swg/chat/ChatRoomList.java b/src/protocol/swg/chat/ChatRoomList.java index b183b140..3021f72f 100644 --- a/src/protocol/swg/chat/ChatRoomList.java +++ b/src/protocol/swg/chat/ChatRoomList.java @@ -34,11 +34,16 @@ import services.chat.ChatRoom; public class ChatRoomList extends SWGMessage { private ConcurrentHashMap chatRooms; + private ChatRoom room; public ChatRoomList(ConcurrentHashMap chatRooms) { this.chatRooms = chatRooms; } + public ChatRoomList(ChatRoom room) { + this.room = room; + } + @Override public void deserialize(IoBuffer data) { @@ -53,24 +58,42 @@ public class ChatRoomList extends SWGMessage { buffer.putShort((short) 2); buffer.putInt(0x70DEB197); - buffer.putInt(chatRooms.size()); - chatRooms.forEach((key, value) -> { - if (value.isVisible()) { - buffer.putInt(value.getRoomId()); - buffer.putInt((int) ((value.isPrivateRoom() ? 1 : 0))); - buffer.put((byte) ((value.isModeratorsOnly() ? 1 : 0))); - buffer.put(getAsciiString(value.getRoomAddress())); - buffer.put(getAsciiString("SWG")); - buffer.put(getAsciiString(server)); - buffer.put(getAsciiString(value.getOwner())); - buffer.put(getAsciiString("SWG")); - buffer.put(getAsciiString(server)); - buffer.put(getAsciiString(value.getCreator())); - buffer.put(getUnicodeString(value.getDescription())); - buffer.putInt(0); // moderator list (not used by client) - buffer.putInt(0); // user list (not used by client) - } - }); + if (room != null) { + buffer.putInt(1); + + buffer.putInt(room.getRoomId()); + buffer.putInt((int) ((room.isPrivateRoom() ? 1 : 0))); + buffer.put((byte) ((room.isModeratorsOnly() ? 1 : 0))); + buffer.put(getAsciiString(room.getRoomAddress())); + buffer.put(getAsciiString("SWG")); + buffer.put(getAsciiString(server)); + buffer.put(getAsciiString(room.getOwner())); + buffer.put(getAsciiString("SWG")); + buffer.put(getAsciiString(server)); + buffer.put(getAsciiString(room.getCreator())); + buffer.put(getUnicodeString(room.getDescription())); + buffer.putInt(0); // moderator list (not used by client) + buffer.putInt(0); // user list (not used by client) + } else { + buffer.putInt(chatRooms.size()); + chatRooms.forEach((key, value) -> { + if (value.isVisible()) { + buffer.putInt(value.getRoomId()); + buffer.putInt((int) ((value.isPrivateRoom() ? 1 : 0))); + buffer.put((byte) ((value.isModeratorsOnly() ? 1 : 0))); + buffer.put(getAsciiString(value.getRoomAddress())); + buffer.put(getAsciiString("SWG")); + buffer.put(getAsciiString(server)); + buffer.put(getAsciiString(value.getOwner())); + buffer.put(getAsciiString("SWG")); + buffer.put(getAsciiString(server)); + buffer.put(getAsciiString(value.getCreator())); + buffer.put(getUnicodeString(value.getDescription())); + buffer.putInt(0); // moderator list (not used by client) + buffer.putInt(0); // user list (not used by client) + } + }); + } buffer.flip(); //StringUtilities.printBytes(buffer.array()); return buffer; diff --git a/src/protocol/swg/chat/ChatServerStatus.java b/src/protocol/swg/chat/ChatServerStatus.java index a867a244..2de0db65 100644 --- a/src/protocol/swg/chat/ChatServerStatus.java +++ b/src/protocol/swg/chat/ChatServerStatus.java @@ -29,6 +29,8 @@ import protocol.swg.SWGMessage; public class ChatServerStatus extends SWGMessage { + public ChatServerStatus() { } + @Override public void deserialize(IoBuffer data) { } diff --git a/src/protocol/swg/chat/VoiceChatStatus.java b/src/protocol/swg/chat/VoiceChatStatus.java new file mode 100644 index 00000000..97936a19 --- /dev/null +++ b/src/protocol/swg/chat/VoiceChatStatus.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package protocol.swg.chat; + +import java.nio.ByteOrder; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class VoiceChatStatus extends SWGMessage { + + public VoiceChatStatus() { } + + @Override + public void deserialize(IoBuffer data) { + } + + @Override + public IoBuffer serialize() { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.putShort((short) 2); + buffer.putInt(0x9E601905); + buffer.putInt(1); + return buffer.flip(); + } + +} diff --git a/src/services/TerrainService.java b/src/services/TerrainService.java index c8b3aaf5..497477db 100644 --- a/src/services/TerrainService.java +++ b/src/services/TerrainService.java @@ -175,6 +175,11 @@ public class TerrainService { core.mapService.addPlanet(planet); noBuildAreas.put(planet, new ArrayList()); loadClientRegions(planet); + + core.chatService.createChatRoom("public chat for this planet, cannot create rooms here", name + ".Planet", "SYSTEM", true); + core.chatService.createChatRoom("system messages for this planet, cannot create rooms here", name + ".system", "SYSTEM", true); + + System.out.println("Created chat rooms for " + name); } diff --git a/src/services/chat/ChatRoom.java b/src/services/chat/ChatRoom.java index d489e3e1..1cc7f2a2 100644 --- a/src/services/chat/ChatRoom.java +++ b/src/services/chat/ChatRoom.java @@ -23,7 +23,6 @@ package services.chat; import java.util.Vector; -import resources.objects.creature.CreatureObject; import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.NotPersistent; diff --git a/src/services/chat/ChatService.java b/src/services/chat/ChatService.java index 06844115..4175d886 100644 --- a/src/services/chat/ChatService.java +++ b/src/services/chat/ChatService.java @@ -24,6 +24,7 @@ package services.chat; import java.nio.ByteOrder; import java.util.Date; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Random; import java.util.Vector; @@ -40,6 +41,7 @@ import engine.resources.config.Config; import engine.resources.config.DefaultConfig; import engine.resources.database.ObjectDatabase; import engine.resources.objects.SWGObject; +import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.service.INetworkDispatch; import engine.resources.service.INetworkRemoteEvent; @@ -48,6 +50,7 @@ import resources.objects.creature.CreatureObject; import resources.objects.player.PlayerObject; import protocol.swg.AddIgnoreMessage; import protocol.swg.ObjControllerMessage; +import protocol.swg.chat.ChatCreateRoom; import protocol.swg.chat.ChatDeletePersistentMessage; import protocol.swg.chat.ChatEnterRoomById; import protocol.swg.chat.ChatFriendsListUpdate; @@ -55,6 +58,7 @@ import protocol.swg.chat.ChatInstantMessageToCharacter; import protocol.swg.chat.ChatInstantMessagetoClient; import protocol.swg.chat.ChatOnAddFriend; import protocol.swg.chat.ChatOnChangeFriendStatus; +import protocol.swg.chat.ChatOnCreateRoom; import protocol.swg.chat.ChatOnEnteredRoom; import protocol.swg.chat.ChatOnSendInstantMessage; import protocol.swg.chat.ChatOnSendPersistentMessage; @@ -65,6 +69,7 @@ import protocol.swg.chat.ChatRequestPersistentMessage; import protocol.swg.chat.ChatRoomList; import protocol.swg.chat.ChatRoomMessage; import protocol.swg.chat.ChatSendToRoom; +import protocol.swg.chat.ChatServerStatus; import protocol.swg.chat.ChatSystemMessage; import protocol.swg.objectControllerObjects.PlayerEmote; import protocol.swg.objectControllerObjects.SpatialChat; @@ -359,11 +364,10 @@ public class ChatService implements INetworkDispatch { if (obj == null) return; - //ChatServerStatus chatServerStatus = new ChatServerStatus(); - //client.getSession().write(chatServerStatus.serialize()); - ChatRoomList listMessage = new ChatRoomList(chatRooms); client.getSession().write(listMessage.serialize()); + + //System.out.println("Sent the room request responses."); } }); @@ -391,11 +395,13 @@ public class ChatService implements INetworkDispatch { if (room != null) { room.setPrivateRoom(sentPacket.isPrivacy()); room.setModeratorsOnly(sentPacket.isModeratorOnly()); - room.getUserList().add(creo); - room.getModeratorList().add(creo); + room.addUser(creo.getCustomName()); + room.addModerator(creo.getCustomName()); ChatOnCreateRoom response = new ChatOnCreateRoom(room, 0, sentPacket.getRequest()); session.write(response.serialize()); - }*/ + } + + System.out.println("Created room.");*/ }); @@ -417,6 +423,7 @@ public class ChatService implements INetworkDispatch { }); swgOpcodes.put(Opcodes.ChatSendToRoom, (session, data) -> { + //System.out.println("send to room!"); Client client = core.getClient(session); if(client == null) @@ -723,8 +730,19 @@ public class ChatService implements INetworkDispatch { } private void loadChatRooms() { - ChatRoom system = createChatRoom("", "Chat", "system", true); - chatRooms.put(system.getRoomId(), system); + + /* + * Battlefields channel format: + * SWG.serverName.battlefield.bfMapName + * + * TODO: Research other channel address formats + */ + + ChatRoom system = createChatRoom("", "system", "system", true); + System.out.println("Created chat room " + system.getRoomAddress()); + + //createChatRoom("Bounty Hunter chat for this galaxy", "BountyHunter", "SYSTEM", true); + //createChatRoom("Commando chat for this galaxy", "Commando", "SYSTEM", true); EntityCursor cursor = chatRoomsODB.getCursor(Integer.class, ChatRoom.class); cursor.forEach(room -> { @@ -763,25 +781,43 @@ public class ChatService implements INetworkDispatch { return room; } - public void joinChatRoom(String user, int roomId) { + public boolean joinChatRoom(String user, String roomAddress) { + chatRooms.forEach((k, v) -> { + if (v.getRoomAddress().equals(roomAddress)) { + joinChatRoom(user, k); + return; + } + }); + return false; + } + public boolean joinChatRoom(String user, int roomId) { if (user.contains(" ")) user = user.split(" ")[0]; ChatRoom room = getChatRoom(roomId); if (room == null) - return; - - if (!room.hasUser(user)) { + return false; + if (!room.hasUser(user.toLowerCase())) { + room.addUser(user.toLowerCase()); + + if (!room.isVisible()) { + CreatureObject creo = (CreatureObject) getObjectByFirstName(user); + if (creo != null) { + ChatRoomList listMessage = new ChatRoomList(room); + creo.getClient().getSession().write(listMessage.serialize()); + } + } ChatOnEnteredRoom enterRoom = new ChatOnEnteredRoom(user, 0, roomId, true); - room.addUser(user); - + room.getUserList().stream().forEach(str -> { SWGObject userObj = getObjectByFirstName(str); - if (userObj != null) { userObj.getClient().getSession().write(enterRoom.serialize()); } + userObj.getClient().getSession().write(enterRoom.serialize()); }); + return true; } + return false; } public void leaveChatRoom(CreatureObject player, int roomId) { diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index 816d910b..61aba9b9 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -72,6 +72,7 @@ import protocol.swg.chat.ChatOnConnectAvatar; import protocol.swg.chat.ChatOnGetFriendsList; import protocol.swg.chat.ChatRoomList; import protocol.swg.chat.ChatServerStatus; +import protocol.swg.chat.VoiceChatStatus; import protocol.swg.objectControllerObjects.UiPlayEffect; import engine.clientdata.ClientFileManager; import engine.clientdata.visitors.CrcStringTableVisitor; @@ -752,7 +753,7 @@ public class ObjectService implements INetworkDispatch { objectList.put(object.getObjectID(), object); } - }); + }); if(creature.getParentId() != 0) { SWGObject parent = getObject(creature.getParentId()); @@ -778,25 +779,25 @@ public class ObjectService implements INetworkDispatch { CmdStartScene startScene = new CmdStartScene((byte) 0, objectId, creature.getPlanet().getPath(), creature.getTemplate(), position.x, position.y, position.z, core.getGalacticTime(), 0); session.write(startScene.serialize()); + ChatServerStatus chatServerStatus = new ChatServerStatus(); + client.getSession().write(chatServerStatus.serialize()); + + VoiceChatStatus voiceStatus = new VoiceChatStatus(); + client.getSession().write(voiceStatus.serialize()); + ParametersMessage parameters = new ParametersMessage(); session.write(parameters.serialize()); - creature.makeAware(core.guildService.getGuildObject()); + ChatOnConnectAvatar chatConnect = new ChatOnConnectAvatar(); + creature.getClient().getSession().write(chatConnect.serialize()); + + creature.makeAware(core.guildService.getGuildObject()); core.chatService.loadMailHeaders(client); core.simulationService.handleZoneIn(client); creature.makeAware(creature); - ChatServerStatus chatStatus = new ChatServerStatus(); - creature.getClient().getSession().write(chatStatus.serialize()); - - ChatOnConnectAvatar chatConnect = new ChatOnConnectAvatar(); - creature.getClient().getSession().write(chatConnect.serialize()); - - ChatRoomList chatRooms = new ChatRoomList(core.chatService.getChatRooms()); - creature.getClient().getSession().write(chatRooms.serialize()); - //ChatOnGetFriendsList friendsListMessage = new ChatOnGetFriendsList(ghost); //client.getSession().write(friendsListMessage.serialize()); @@ -832,6 +833,7 @@ public class ObjectService implements INetworkDispatch { if(!core.getConfig().getString("MOTD").equals("")) creature.sendSystemMessage(core.getConfig().getString("MOTD"), (byte) 2); + core.chatService.joinChatRoom(creature.getCustomName().toLowerCase(), "SWG." + core.getGalaxyName() + "." + creature.getPlanet().getName() + ".Planet"); core.playerService.postZoneIn(creature); } From 646476c17dda40f8bfed0713c5309f8d0001587f Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Fri, 11 Apr 2014 01:48:27 +0200 Subject: [PATCH 51/79] Harvesters introduced Working harvesters and generators Big update --- scripts/commands/harvesteractivate.py | 10 + scripts/commands/harvesterdeactivate.py | 10 + scripts/commands/harvesterdiscardhopper.py | 11 + scripts/commands/harvesterselectresource.py | 10 + scripts/commands/permissionlistmodify.py | 10 + scripts/commands/placestructure.py | 8 +- scripts/commands/resourceemptyhopper.py | 10 + .../power_generator_fusion_style_1.py | 4 + .../power_generator_geothermal_style_1.py | 4 + .../power_generator_photo_bio_style_1.py | 4 + .../power_generator_solar_style_1.py | 4 + .../power_generator_wind_style_1.py | 4 + .../mining_gas_harvester_style_1.py | 4 + .../mining_gas_harvester_style_2.py | 4 + .../mining_gas_harvester_style_3.py | 4 + .../mining_gas_harvester_style_4.py | 4 + .../mining_liquid_harvester_style_1.py | 4 + .../mining_liquid_harvester_style_2.py | 4 + .../mining_liquid_harvester_style_3.py | 4 + .../mining_liquid_harvester_style_4.py | 4 + .../mining_liquid_moisture_harvester.py | 4 + .../mining_liquid_moisture_harvester_elite.py | 4 + .../mining_liquid_moisture_harvester_heavy.py | 4 + ...mining_liquid_moisture_harvester_medium.py | 4 + .../mining_ore/mining_ore_harvester_elite.py | 4 + .../mining_ore/mining_ore_harvester_heavy.py | 4 + .../mining_ore_harvester_style_1.py | 4 + .../mining_ore_harvester_style_2.py | 4 + .../mining_organic_flora_farm.py | 4 + .../mining_organic_flora_farm_elite.py | 4 + .../mining_organic_flora_farm_heavy.py | 4 + .../mining_organic_flora_farm_medium.py | 4 + .../harvester_deed/harvester_flora_deed.py | 5 + .../harvester_flora_deed_elite.py | 5 + .../harvester_flora_deed_heavy.py | 5 + .../harvester_flora_deed_medium.py | 5 + .../deed/harvester_deed/harvester_gas_deed.py | 5 + .../harvester_gas_deed_elite.py | 5 + .../harvester_gas_deed_heavy.py | 5 + .../harvester_gas_deed_medium.py | 5 + .../harvester_deed/harvester_liquid_deed.py | 5 + .../harvester_liquid_deed_elite.py | 5 + .../harvester_liquid_deed_heavy.py | 5 + .../harvester_liquid_deed_medium.py | 5 + .../harvester_deed/harvester_moisture_deed.py | 5 + .../harvester_moisture_deed_elite.py | 5 + .../harvester_moisture_deed_heavy.py | 5 + .../harvester_moisture_deed_medium.py | 5 + .../harvester_ore_deed_elite.py | 5 + .../harvester_ore_heavy_deed.py | 5 + .../harvester_deed/harvester_ore_s1_deed.py | 5 + .../harvester_deed/harvester_ore_s2_deed.py | 5 + scripts/radial/generator.py | 53 + scripts/radial/harvester.py | 58 + scripts/radial/harvesterDeed.py | 23 + scripts/radial/harvesterHopper.py | 21 + src/main/NGECore.java | 3 + .../common/ObjControllerOpcodes.java | 3 +- src/resources/objects/deed/Deed.java | 37 + .../objects/deed/Harvester_Deed.java | 121 ++ .../harvester/HarvesterMessageBuilder.java | 803 ++++++++++++- .../objects/harvester/HarvesterObject.java | 490 ++++++++ .../InstallationMessageBuilder.java | 201 +++- .../installation/InstallationObject.java | 11 +- .../resource/ResourceContainerObject.java | 4 +- src/services/DevService.java | 198 +++ src/services/command/CommandService.java | 42 +- src/services/object/ObjectService.java | 26 +- src/services/resources/HarvesterService.java | 1070 +++++++++++++++++ src/services/resources/ResourceService.java | 33 + src/services/sui/SUIService.java | 21 + 71 files changed, 3476 insertions(+), 11 deletions(-) create mode 100644 scripts/commands/harvesteractivate.py create mode 100644 scripts/commands/harvesterdeactivate.py create mode 100644 scripts/commands/harvesterdiscardhopper.py create mode 100644 scripts/commands/harvesterselectresource.py create mode 100644 scripts/commands/permissionlistmodify.py create mode 100644 scripts/commands/resourceemptyhopper.py create mode 100644 scripts/radial/generator.py create mode 100644 scripts/radial/harvester.py create mode 100644 scripts/radial/harvesterDeed.py create mode 100644 scripts/radial/harvesterHopper.py create mode 100644 src/resources/objects/deed/Deed.java create mode 100644 src/resources/objects/deed/Harvester_Deed.java create mode 100644 src/services/resources/HarvesterService.java diff --git a/scripts/commands/harvesteractivate.py b/scripts/commands/harvesteractivate.py new file mode 100644 index 00000000..5411445a --- /dev/null +++ b/scripts/commands/harvesteractivate.py @@ -0,0 +1,10 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + core.harvesterService.handleHarvesterActivateCommand(actor, target, commandString) + return + + \ No newline at end of file diff --git a/scripts/commands/harvesterdeactivate.py b/scripts/commands/harvesterdeactivate.py new file mode 100644 index 00000000..3a225b3f --- /dev/null +++ b/scripts/commands/harvesterdeactivate.py @@ -0,0 +1,10 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + core.harvesterService.handleHarvesterDeactivateCommand(actor, target, commandString) + return + + \ No newline at end of file diff --git a/scripts/commands/harvesterdiscardhopper.py b/scripts/commands/harvesterdiscardhopper.py new file mode 100644 index 00000000..3a52f754 --- /dev/null +++ b/scripts/commands/harvesterdiscardhopper.py @@ -0,0 +1,11 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + actor.sendSystemMessage('handleEmptyHarvester', 0) + core.harvesterService.handleEmptyHarvester(actor, target, commandString) + return + + \ No newline at end of file diff --git a/scripts/commands/harvesterselectresource.py b/scripts/commands/harvesterselectresource.py new file mode 100644 index 00000000..69c8c725 --- /dev/null +++ b/scripts/commands/harvesterselectresource.py @@ -0,0 +1,10 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + core.harvesterService.handleHarvesterSelectResourceCommand(actor, target, commandString) + return + + \ No newline at end of file diff --git a/scripts/commands/permissionlistmodify.py b/scripts/commands/permissionlistmodify.py new file mode 100644 index 00000000..a34f8d43 --- /dev/null +++ b/scripts/commands/permissionlistmodify.py @@ -0,0 +1,10 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + core.harvesterService.handlePermissionListModify(actor, target, commandString) + return + + \ No newline at end of file diff --git a/scripts/commands/placestructure.py b/scripts/commands/placestructure.py index edddb24e..f6f5c122 100644 --- a/scripts/commands/placestructure.py +++ b/scripts/commands/placestructure.py @@ -1,4 +1,5 @@ import sys +import resources.objects.deed.Harvester_Deed def setup(): return @@ -8,7 +9,12 @@ def run(core, actor, target, commandString): deedId = long(cmdArgs[0]) deed = core.objectService.getObject(deedId) - + + if (actor.getAttachment('UsingHarvesterDeed') == '1'): + actor.setAttachment('UsingHarvesterDeed', '0'); + core.harvesterService.handlePlaceStructureCommand(actor, target, commandString) + return + positionX = float(cmdArgs[1]) positionZ = float(cmdArgs[2]) #positionY = core.terrainService.getHeight(actor.getPlanetId(), positionX, positionZ) + 2 diff --git a/scripts/commands/resourceemptyhopper.py b/scripts/commands/resourceemptyhopper.py new file mode 100644 index 00000000..3a225b3f --- /dev/null +++ b/scripts/commands/resourceemptyhopper.py @@ -0,0 +1,10 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + core.harvesterService.handleHarvesterDeactivateCommand(actor, target, commandString) + return + + \ No newline at end of file diff --git a/scripts/object/installation/generators/power_generator_fusion_style_1.py b/scripts/object/installation/generators/power_generator_fusion_style_1.py index ccad8904..be7d0439 100644 --- a/scripts/object/installation/generators/power_generator_fusion_style_1.py +++ b/scripts/object/installation/generators/power_generator_fusion_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'generator') + object.setHarvester_type(5) + object.setMaintenanceCost(30) + object.setGenerator(1) return \ No newline at end of file diff --git a/scripts/object/installation/generators/power_generator_geothermal_style_1.py b/scripts/object/installation/generators/power_generator_geothermal_style_1.py index ccad8904..be7d0439 100644 --- a/scripts/object/installation/generators/power_generator_geothermal_style_1.py +++ b/scripts/object/installation/generators/power_generator_geothermal_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'generator') + object.setHarvester_type(5) + object.setMaintenanceCost(30) + object.setGenerator(1) return \ No newline at end of file diff --git a/scripts/object/installation/generators/power_generator_photo_bio_style_1.py b/scripts/object/installation/generators/power_generator_photo_bio_style_1.py index ccad8904..be7d0439 100644 --- a/scripts/object/installation/generators/power_generator_photo_bio_style_1.py +++ b/scripts/object/installation/generators/power_generator_photo_bio_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'generator') + object.setHarvester_type(5) + object.setMaintenanceCost(30) + object.setGenerator(1) return \ No newline at end of file diff --git a/scripts/object/installation/generators/power_generator_solar_style_1.py b/scripts/object/installation/generators/power_generator_solar_style_1.py index ccad8904..be7d0439 100644 --- a/scripts/object/installation/generators/power_generator_solar_style_1.py +++ b/scripts/object/installation/generators/power_generator_solar_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'generator') + object.setHarvester_type(5) + object.setMaintenanceCost(30) + object.setGenerator(1) return \ No newline at end of file diff --git a/scripts/object/installation/generators/power_generator_wind_style_1.py b/scripts/object/installation/generators/power_generator_wind_style_1.py index ccad8904..b82445bb 100644 --- a/scripts/object/installation/generators/power_generator_wind_style_1.py +++ b/scripts/object/installation/generators/power_generator_wind_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'generator') + object.setHarvester_type(5) + object.setMaintenanceCost(20) + object.setGenerator(1) return \ No newline at end of file diff --git a/scripts/object/installation/mining_gas/mining_gas_harvester_style_1.py b/scripts/object/installation/mining_gas/mining_gas_harvester_style_1.py index ccad8904..e90b9514 100644 --- a/scripts/object/installation/mining_gas/mining_gas_harvester_style_1.py +++ b/scripts/object/installation/mining_gas/mining_gas_harvester_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(3) + object.setPowerCost(25); + object.setMaintenanceCost(16); return \ No newline at end of file diff --git a/scripts/object/installation/mining_gas/mining_gas_harvester_style_2.py b/scripts/object/installation/mining_gas/mining_gas_harvester_style_2.py index ccad8904..f90bf1bf 100644 --- a/scripts/object/installation/mining_gas/mining_gas_harvester_style_2.py +++ b/scripts/object/installation/mining_gas/mining_gas_harvester_style_2.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(3) + object.setPowerCost(60); + object.setMaintenanceCost(60); return \ No newline at end of file diff --git a/scripts/object/installation/mining_gas/mining_gas_harvester_style_3.py b/scripts/object/installation/mining_gas/mining_gas_harvester_style_3.py index ccad8904..5b0bb40b 100644 --- a/scripts/object/installation/mining_gas/mining_gas_harvester_style_3.py +++ b/scripts/object/installation/mining_gas/mining_gas_harvester_style_3.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(3) + object.setPowerCost(75); + object.setMaintenanceCost(90); return \ No newline at end of file diff --git a/scripts/object/installation/mining_gas/mining_gas_harvester_style_4.py b/scripts/object/installation/mining_gas/mining_gas_harvester_style_4.py index ccad8904..145b1356 100644 --- a/scripts/object/installation/mining_gas/mining_gas_harvester_style_4.py +++ b/scripts/object/installation/mining_gas/mining_gas_harvester_style_4.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(3) + object.setPowerCost(100); + object.setMaintenanceCost(120); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_1.py b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_1.py index ccad8904..25f6673f 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_1.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(1) + object.setPowerCost(25); + object.setMaintenanceCost(16); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_2.py b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_2.py index ccad8904..1fc10f74 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_2.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_2.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(1) + object.setPowerCost(60); + object.setMaintenanceCost(60); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_3.py b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_3.py index ccad8904..dab15cfd 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_3.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_3.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(1) + object.setPowerCost(75); + object.setMaintenanceCost(90); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_4.py b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_4.py index ccad8904..b848b851 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_4.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_4.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(1) + object.setPowerCost(100); + object.setMaintenanceCost(120); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester.py b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester.py index ccad8904..3e112037 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(4) + object.setPowerCost(25); + object.setMaintenanceCost(16); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_elite.py b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_elite.py index ccad8904..7577292f 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_elite.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_elite.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(4) + object.setPowerCost(100); + object.setMaintenanceCost(120); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_heavy.py b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_heavy.py index ccad8904..1fcc5436 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_heavy.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_heavy.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(4) + object.setPowerCost(75); + object.setMaintenanceCost(90); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_medium.py b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_medium.py index ccad8904..41919756 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_medium.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_medium.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(4) + object.setPowerCost(60); + object.setMaintenanceCost(60); return \ No newline at end of file diff --git a/scripts/object/installation/mining_ore/mining_ore_harvester_elite.py b/scripts/object/installation/mining_ore/mining_ore_harvester_elite.py index ccad8904..05c3be8a 100644 --- a/scripts/object/installation/mining_ore/mining_ore_harvester_elite.py +++ b/scripts/object/installation/mining_ore/mining_ore_harvester_elite.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(0) + object.setPowerCost(100); + object.setMaintenanceCost(120); return \ No newline at end of file diff --git a/scripts/object/installation/mining_ore/mining_ore_harvester_heavy.py b/scripts/object/installation/mining_ore/mining_ore_harvester_heavy.py index ccad8904..5dfeb966 100644 --- a/scripts/object/installation/mining_ore/mining_ore_harvester_heavy.py +++ b/scripts/object/installation/mining_ore/mining_ore_harvester_heavy.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(0) + object.setPowerCost(75); + object.setMaintenanceCost(90); return \ No newline at end of file diff --git a/scripts/object/installation/mining_ore/mining_ore_harvester_style_1.py b/scripts/object/installation/mining_ore/mining_ore_harvester_style_1.py index ccad8904..2973a685 100644 --- a/scripts/object/installation/mining_ore/mining_ore_harvester_style_1.py +++ b/scripts/object/installation/mining_ore/mining_ore_harvester_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(0) + object.setPowerCost(25); + object.setMaintenanceCost(16); return \ No newline at end of file diff --git a/scripts/object/installation/mining_ore/mining_ore_harvester_style_2.py b/scripts/object/installation/mining_ore/mining_ore_harvester_style_2.py index ccad8904..e6cfc1b1 100644 --- a/scripts/object/installation/mining_ore/mining_ore_harvester_style_2.py +++ b/scripts/object/installation/mining_ore/mining_ore_harvester_style_2.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(0) + object.setPowerCost(60); + object.setMaintenanceCost(60); return \ No newline at end of file diff --git a/scripts/object/installation/mining_organic/mining_organic_flora_farm.py b/scripts/object/installation/mining_organic/mining_organic_flora_farm.py index ccad8904..ace61f59 100644 --- a/scripts/object/installation/mining_organic/mining_organic_flora_farm.py +++ b/scripts/object/installation/mining_organic/mining_organic_flora_farm.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(2) + object.setPowerCost(25); + object.setMaintenanceCost(16); return \ No newline at end of file diff --git a/scripts/object/installation/mining_organic/mining_organic_flora_farm_elite.py b/scripts/object/installation/mining_organic/mining_organic_flora_farm_elite.py index ccad8904..53ef7fa9 100644 --- a/scripts/object/installation/mining_organic/mining_organic_flora_farm_elite.py +++ b/scripts/object/installation/mining_organic/mining_organic_flora_farm_elite.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(2) + object.setPowerCost(100); + object.setMaintenanceCost(120); return \ No newline at end of file diff --git a/scripts/object/installation/mining_organic/mining_organic_flora_farm_heavy.py b/scripts/object/installation/mining_organic/mining_organic_flora_farm_heavy.py index ccad8904..08daa7ee 100644 --- a/scripts/object/installation/mining_organic/mining_organic_flora_farm_heavy.py +++ b/scripts/object/installation/mining_organic/mining_organic_flora_farm_heavy.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(2) + object.setPowerCost(60); + object.setMaintenanceCost(60); return \ No newline at end of file diff --git a/scripts/object/installation/mining_organic/mining_organic_flora_farm_medium.py b/scripts/object/installation/mining_organic/mining_organic_flora_farm_medium.py index ccad8904..08daa7ee 100644 --- a/scripts/object/installation/mining_organic/mining_organic_flora_farm_medium.py +++ b/scripts/object/installation/mining_organic/mining_organic_flora_farm_medium.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(2) + object.setPowerCost(60); + object.setMaintenanceCost(60); return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed.py b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed.py index ccad8904..d6d7b4a8 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_1.iff') + object.setStructureTemplate('object/installation/mining_organic/shared_mining_organic_flora_farm.iff') + object.setLotRequirement(1) + object.setBMR(16) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_elite.py b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_elite.py index ccad8904..66784568 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_elite.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_elite.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_organic/shared_mining_organic_flora_farm_elite.iff') + object.setLotRequirement(3) + object.setBMR(120) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_heavy.py b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_heavy.py index ccad8904..097a35ea 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_heavy.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_heavy.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_organic/shared_mining_organic_flora_farm_heavy.iff') + object.setLotRequirement(1) + object.setBMR(90) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_medium.py b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_medium.py index ccad8904..70ea50f2 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_medium.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_medium.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_2.iff') + object.setStructureTemplate('object/installation/mining_organic/shared_mining_organic_flora_farm_medium.iff') + object.setLotRequirement(1) + object.setBMR(60) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed.py b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed.py index ccad8904..a11974a2 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_1.iff') + object.setStructureTemplate('object/installation/mining_gas/shared_mining_gas_harvester_style_1.iff') + object.setLotRequirement(1) + object.setBMR(16) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_elite.py b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_elite.py index ccad8904..814daa8a 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_elite.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_elite.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_gas/shared_mining_gas_harvester_style_4.iff') + object.setLotRequirement(3) + object.setBMR(120) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_heavy.py b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_heavy.py index ccad8904..2111f7bf 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_heavy.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_heavy.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_gas/shared_mining_gas_harvester_style_3.iff') + object.setLotRequirement(1) + object.setBMR(90) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_medium.py b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_medium.py index ccad8904..401da10e 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_medium.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_medium.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_2.iff') + object.setStructureTemplate('object/installation/mining_gas/shared_mining_gas_harvester_style_2.iff') + object.setLotRequirement(1) + object.setBMR(60) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed.py b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed.py index ccad8904..9bce9e66 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_1.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_harvester_style_1.iff') + object.setLotRequirement(1) + object.setBMR(16) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_elite.py b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_elite.py index ccad8904..15cbfa5d 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_elite.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_elite.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_harvester_style_4.iff') + object.setLotRequirement(3) + object.setBMR(120) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_heavy.py b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_heavy.py index ccad8904..ae4c3c71 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_heavy.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_heavy.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_harvester_style_3.iff') + object.setLotRequirement(1) + object.setBMR(90) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_medium.py b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_medium.py index ccad8904..4de7136b 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_medium.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_medium.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_2.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_harvester_style_2.iff') + object.setLotRequirement(1) + object.setBMR(60) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed.py b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed.py index ccad8904..6540aa1d 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_1.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_moisture_harvester.iff') + object.setLotRequirement(1) + object.setBMR(16) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_elite.py b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_elite.py index ccad8904..21dc0cfc 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_elite.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_elite.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_moisture_harvester_elite.iff') + object.setLotRequirement(3) + object.setBMR(120) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_heavy.py b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_heavy.py index ccad8904..afeb3a4b 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_heavy.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_heavy.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_moisture_harvester_heavy.iff') + object.setLotRequirement(1) + object.setBMR(90) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_medium.py b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_medium.py index ccad8904..7e9a5efe 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_medium.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_medium.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_2.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_moisture_harvester_medium.iff') + object.setLotRequirement(1) + object.setBMR(60) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_ore_deed_elite.py b/scripts/object/tangible/deed/harvester_deed/harvester_ore_deed_elite.py index ccad8904..5e0dde67 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_ore_deed_elite.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_ore_deed_elite.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_ore/shared_mining_ore_harvester_elite.iff') + object.setLotRequirement(3) + object.setBMR(120) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_ore_heavy_deed.py b/scripts/object/tangible/deed/harvester_deed/harvester_ore_heavy_deed.py index ccad8904..7f765aa8 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_ore_heavy_deed.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_ore_heavy_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_ore/shared_mining_ore_harvester_heavy.iff') + object.setLotRequirement(1) + object.setBMR(90) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_ore_s1_deed.py b/scripts/object/tangible/deed/harvester_deed/harvester_ore_s1_deed.py index ccad8904..d2edcd91 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_ore_s1_deed.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_ore_s1_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_1.iff') + object.setStructureTemplate('object/installation/mining_ore/shared_mining_ore_harvester_style_1.iff') + object.setLotRequirement(1) + object.setBMR(16) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_ore_s2_deed.py b/scripts/object/tangible/deed/harvester_deed/harvester_ore_s2_deed.py index ccad8904..34c6d56c 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_ore_s2_deed.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_ore_s2_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_2.iff') + object.setStructureTemplate('object/installation/mining_ore/shared_mining_ore_harvester_style_2.iff') + object.setLotRequirement(1) + object.setBMR(60) return \ No newline at end of file diff --git a/scripts/radial/generator.py b/scripts/radial/generator.py new file mode 100644 index 00000000..44d7a9b4 --- /dev/null +++ b/scripts/radial/generator.py @@ -0,0 +1,53 @@ +from resources.common import RadialOptions +from protocol.swg import ResourceListForSurveyMessage +from services.sui.SUIService import MessageBoxType +from services.SurveyService import createSurveyRangeSUIWindow +from services.sui.SUIWindow import Trigger +from java.util import Vector +import sys + +def createRadial(core, owner, target, radials): + #(byte parentId, short optionId, byte optionType, String description) + radials.clear() + radials.add(RadialOptions(0, 7, 0, 'Examine')) + radials.add(RadialOptions(0, 78, 0, '@player_structure:management')) + radials.add(RadialOptions(0, 117, 0, '@player_structure:permissions')) + radials.add(RadialOptions(2, 118, 0, '@harvester:manage')) + radials.add(RadialOptions(2, 128, 0, '@player_structure:permission_destroy')) + radials.add(RadialOptions(2, 124, 0, '@player_structure:management_status')) + radials.add(RadialOptions(2, 129, 0, '@player_structure:management_pay')) + radials.add(RadialOptions(2, 50, 0, '@base_player:set_name')) + radials.add(RadialOptions(3, 121, 0, '@player_structure:permission_admin')) + radials.add(RadialOptions(3, 123, 0, '@player_structure:permissions')) + + return + +def handleSelection(core, owner, target, option): + if option == 118 and target: + if owner is not None: + core.harvesterService.handleOperateMachinery(owner,target) + return + if option == 128: + if owner is not None: + core.harvesterService.createDestroySUIPage(owner,target) + return + if option == 124: + if owner is not None: + core.harvesterService.createStatusSUIPage(owner,target) + return + if option == 129: + if owner is not None: + core.harvesterService.createPayMaintenanceSUIPage(owner,target) + return + if option == 50: + if owner is not None: + core.harvesterService.createRenameSUIPage(owner,target) + return + if option == 121: + if owner is not None: + core.harvesterService.handlePermissionAdmin(owner,target) + return + if option == 123: + if owner is not None: + core.harvesterService.handlePermissionHopper(owner,target) + return diff --git a/scripts/radial/harvester.py b/scripts/radial/harvester.py new file mode 100644 index 00000000..079c99ae --- /dev/null +++ b/scripts/radial/harvester.py @@ -0,0 +1,58 @@ +from resources.common import RadialOptions +from protocol.swg import ResourceListForSurveyMessage +from services.sui.SUIService import MessageBoxType +from services.SurveyService import createSurveyRangeSUIWindow +from services.sui.SUIWindow import Trigger +from java.util import Vector +import sys + +def createRadial(core, owner, target, radials): + #(byte parentId, short optionId, byte optionType, String description) + radials.clear() + radials.add(RadialOptions(0, 7, 0, 'Examine')) + radials.add(RadialOptions(0, 78, 0, '@player_structure:management')) + radials.add(RadialOptions(0, 117, 0, '@player_structure:permissions')) + radials.add(RadialOptions(2, 118, 0, '@harvester:manage')) + radials.add(RadialOptions(2, 128, 0, '@player_structure:permission_destroy')) + radials.add(RadialOptions(2, 124, 0, '@player_structure:management_status')) + radials.add(RadialOptions(2, 129, 0, '@player_structure:management_pay')) + radials.add(RadialOptions(2, 50, 0, '@base_player:set_name')) + radials.add(RadialOptions(2, 51, 0, '@player_structure:management_power')) + radials.add(RadialOptions(3, 121, 0, '@player_structure:permission_admin')) + radials.add(RadialOptions(3, 123, 0, '@player_structure:permissions')) + + return + +def handleSelection(core, owner, target, option): + if option == 118 and target: + if owner is not None: + core.harvesterService.handleOperateMachinery(owner,target) + return + if option == 128: + if owner is not None: + core.harvesterService.createDestroySUIPage(owner,target) + return + if option == 124: + if owner is not None: + core.harvesterService.createStatusSUIPage(owner,target) + return + if option == 129: + if owner is not None: + core.harvesterService.createPayMaintenanceSUIPage(owner,target) + return + if option == 50: + if owner is not None: + core.harvesterService.createRenameSUIPage(owner,target) + return + if option == 51: + if owner is not None: + core.harvesterService.handleDepositPower(owner,target) + return + if option == 121: + if owner is not None: + core.harvesterService.handlePermissionAdmin(owner,target) + return + if option == 123: + if owner is not None: + core.harvesterService.handlePermissionHopper(owner,target) + return diff --git a/scripts/radial/harvesterDeed.py b/scripts/radial/harvesterDeed.py new file mode 100644 index 00000000..cc8fdc7a --- /dev/null +++ b/scripts/radial/harvesterDeed.py @@ -0,0 +1,23 @@ +from resources.common import RadialOptions +import sys + +def createRadial(core, owner, target, radials): + radials.clear() + radials.add(RadialOptions(0, 21, 1, 'Use Deed')) + #radials.add(RadialOptions(0, 7, 1, '111111')) + #radials.add(RadialOptions(0, 15, 1, '')) + #radials.add(RadialOptions(0, 61, 1, '')) + return + +def handleSelection(core, owner, target, option): + + if option == 21 and target: + owner.setAttachment('UsingHarvesterDeed', '1'); + core.harvesterService.enterStructurePlacementMode(target,owner) + if option == 61 and target: + object5 = core.harvesterService.constructionSite(owner,target) + core.objectService.useObject(owner, target) + if option == 15 and target: + core.objectService.destroyObject(target) + return + \ No newline at end of file diff --git a/scripts/radial/harvesterHopper.py b/scripts/radial/harvesterHopper.py new file mode 100644 index 00000000..3323d45b --- /dev/null +++ b/scripts/radial/harvesterHopper.py @@ -0,0 +1,21 @@ +from resources.common import RadialOptions +from protocol.swg import ResourceListForSurveyMessage +from services.sui.SUIService import MessageBoxType +from services.SurveyService import createSurveyRangeSUIWindow +from services.sui.SUIWindow import Trigger +from java.util import Vector +import sys + +def createRadial(core, owner, target, radials): + #(byte parentId, short optionId, byte optionType, String description) + radials.clear() + radials.add(RadialOptions(0, 7, 0, 'Examine')) + radials.add(RadialOptions(0, 78, 0, '@player_structure:management')) + radials.add(RadialOptions(2, 118, 0, '@harvester:manage')) + return + +def handleSelection(core, owner, target, option): + if option == 118 and target: + if owner is not None: + core.harvesterService.handleOperateMachinery(owner,target) + return diff --git a/src/main/NGECore.java b/src/main/NGECore.java index 02469dff..2f04ffb5 100644 --- a/src/main/NGECore.java +++ b/src/main/NGECore.java @@ -84,6 +84,7 @@ import services.LoginService; import services.map.MapService; import services.object.ObjectService; import services.object.UpdateService; +import services.resources.HarvesterService; import services.resources.ResourceService; import services.retro.RetroService; import services.spawn.SpawnService; @@ -180,6 +181,7 @@ public class NGECore { public HousingService housingService; public LootService lootService; + public HarvesterService harvesterService; // Login Server @@ -293,6 +295,7 @@ public class NGECore { conversationService = new ConversationService(this); housingService = new HousingService(this); lootService = new LootService(this); + harvesterService = new HarvesterService(this); if (config.keyExists("JYTHONCONSOLE.PORT")) { int jythonPort = config.getInt("JYTHONCONSOLE.PORT"); diff --git a/src/resources/common/ObjControllerOpcodes.java b/src/resources/common/ObjControllerOpcodes.java index c2d117bd..1c7b626b 100644 --- a/src/resources/common/ObjControllerOpcodes.java +++ b/src/resources/common/ObjControllerOpcodes.java @@ -42,5 +42,6 @@ public class ObjControllerOpcodes { public static final int STOP_NPC_CONVERSATION = 0xDE000000; public static final int NPC_CONVERSATION_OPTIONS = 0xE0000000; public static final int SET_PROFESSION_TEMPLATE = 0x5C040000; - + public static final int RESOURCE_EMPTY_HOPPER = 0xED000000; + } diff --git a/src/resources/objects/deed/Deed.java b/src/resources/objects/deed/Deed.java new file mode 100644 index 00000000..f98c6398 --- /dev/null +++ b/src/resources/objects/deed/Deed.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package resources.objects.deed; + +import engine.resources.scene.Planet; +import engine.resources.scene.Point3D; +import engine.resources.scene.Quaternion; +import resources.objects.tangible.TangibleObject; + +/** + * @author Charon + */ +public class Deed extends TangibleObject { + + public Deed(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ + super(objectID, planet, template, position, orientation); + } +} diff --git a/src/resources/objects/deed/Harvester_Deed.java b/src/resources/objects/deed/Harvester_Deed.java new file mode 100644 index 00000000..945d9eb3 --- /dev/null +++ b/src/resources/objects/deed/Harvester_Deed.java @@ -0,0 +1,121 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package resources.objects.deed; +import com.sleepycat.persist.model.Persistent; + +import engine.resources.scene.Planet; +import engine.resources.scene.Point3D; +import engine.resources.scene.Quaternion; + +/** + * @author Charon + */ +@Persistent(version=0) +public class Harvester_Deed extends Deed { + + private String name; + private String structureTemplate; + private String constructorTemplate; + private int outputHopperCapacity=0; + private int BER=0; + private int BMR=0; + private int surplusMaintenance=0; + private int surplusPower=0; + private int lotRequirement; + + + public Harvester_Deed(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ + super(objectID, planet, template, position, orientation); + } + + public int getOutputHopperCapacity() { + return outputHopperCapacity; + } + public void setOutputHopperCapacity(int outputHopperCapacity) { + this.outputHopperCapacity = outputHopperCapacity; + } + public int getBER() { + return BER; + } + public void setBER(int bER) { + this.BER = bER; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getStructureTemplate() { + return structureTemplate; + } + public void setStructureTemplate(String structureTemplate) { + this.structureTemplate = structureTemplate; + } + public int getLotRequirement() { + return lotRequirement; + } + public void setLotRequirement(int lotRequirement) { + this.lotRequirement = lotRequirement; + } + public String getConstructorTemplate() { + return constructorTemplate; + } + public void setConstructorTemplate(String constructorTemplate) { + this.constructorTemplate = constructorTemplate; + } + public int getBMR() { + return BMR; + } + public void setBMR(int BMR) { + this.BMR = BMR; + } + public int getSurplusMaintenance() { + return surplusMaintenance; + } + public void setSurplusMaintenance(int surplusMaintenance) { + this.surplusMaintenance = surplusMaintenance; + } + + public int getSurplusPower() { + return surplusPower; + } + + public void setSurplusPower(int surplusPower) { + this.surplusPower = surplusPower; + } + + + public void setAttributes() { + this.getAttributes().put("@obj_attr_n:volume", "1"); + this.getAttributes().put("@obj_attr_n:examine_maintenance_rate", ""+this.getBMR() + "/hour"); + if (this.getSurplusMaintenance()>0) + this.getAttributes().put("@obj_attr_n:examine_maintenance", ""+this.getSurplusMaintenance()); + + //this.getAttributes().put("@obj_attr_n:energy_maintenance", "0"); + if (this.getSurplusPower()>0) + this.getAttributes().put("@obj_attr_n:examine_power", ""+this.getSurplusPower()); + + this.getAttributes().put("@obj_attr_n:examine_hoppersize", ""+this.getOutputHopperCapacity()); + this.getAttributes().put("@obj_attr_n:examine_extractionrate", ""+this.getBER()); + } +} diff --git a/src/resources/objects/harvester/HarvesterMessageBuilder.java b/src/resources/objects/harvester/HarvesterMessageBuilder.java index 3b6c4602..98daa62a 100644 --- a/src/resources/objects/harvester/HarvesterMessageBuilder.java +++ b/src/resources/objects/harvester/HarvesterMessageBuilder.java @@ -21,6 +21,807 @@ ******************************************************************************/ package resources.objects.harvester; -public class HarvesterMessageBuilder { +import java.nio.ByteOrder; +import java.util.Vector; +import org.apache.mina.core.buffer.IoBuffer; + +import engine.resources.objects.SWGObject; + +import resources.objects.ObjectMessageBuilder; +import resources.objects.building.BuildingObject; +import resources.objects.creature.CreatureObject; +import resources.objects.resource.GalacticResource; +import resources.objects.resource.ResourceContainerObject; + +/** + * @author Charon + */ +public class HarvesterMessageBuilder extends ObjectMessageBuilder{ + + public HarvesterMessageBuilder(HarvesterObject harvesterObject) { + setObject(harvesterObject); + } + + public IoBuffer buildBaseline3() { + + HarvesterObject building = (HarvesterObject) object; + IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + + buffer.putShort((short) 0x0D); + buffer.putFloat(building.getComplexity()); + buffer.put(getAsciiString(building.getStfFilename())); + buffer.putInt(0); + buffer.put(getAsciiString(building.getStfName())); + buffer.putInt(0); + buffer.putInt(0xFF); + //buffer.putInt(0x64); + buffer.putInt(0); + buffer.putInt(0); + buffer.putShort((short) 0); + + buffer.putInt(0); + buffer.putInt(0); + // buffer.putInt(16777216); + buffer.putInt(0x100); + buffer.putInt(0); + buffer.putInt(64); + buffer.putInt(0x201C); + buffer.put((byte) 1); + + int size = buffer.position(); + buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); + + buffer.flip(); + buffer = createBaseline("BUIO", (byte) 3, buffer, size); + + return buffer; + + } + + public IoBuffer buildHINO3Delta(HarvesterObject harvester,byte state) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)3); + buffer.putInt(0xB); + buffer.putShort((short)2); + buffer.putShort((short)8); + buffer.put((byte)1); + buffer.putShort((short)1); + buffer.put((byte)0); + buffer.putShort((short)0xD); + buffer.put(state); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } +// 0000: 05 00 53 21 86 12 33 01 0E BE 41 00 00 00 4F 4E ..S!..3...A...ON +// 0010: 49 48 03 0B 00 00 00 02 00 08 00 01 01 00 00 0D IH.............. +// 0020: 00 01 + + + public IoBuffer buildHINO3Delta2(HarvesterObject harvester,byte state) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)3); + buffer.putInt(0xB); + buffer.putShort((short)2); + buffer.putShort((short)8); + buffer.put((byte)0); + buffer.putShort((short)1); + buffer.put((byte)0); + buffer.putShort((short)0xD); + buffer.put(state); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + + public IoBuffer buildBaseline6() { + + HarvesterObject building = (HarvesterObject) object; + IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + + buffer.putShort((short) 8); + buffer.putInt(0x43); + + buffer.put(getAsciiString(building.getDetailFilename())); + buffer.putInt(0); + buffer.put(getAsciiString(building.getDetailName())); + buffer.putInt(0); + buffer.put((byte) 0); + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + + int size = buffer.position(); + buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); + + buffer.flip(); + buffer = createBaseline("BUIO", (byte) 6, buffer, size); + + return buffer; + + } + + + public IoBuffer buildHINO7Delta(HarvesterObject harvester,byte state) { + + Vector outputHopperContent = harvester.getOutputHopperContent(); + int hopperContentSize = outputHopperContent.size(); + int iHopperList = 1; + if (hopperContentSize==0) { + iHopperList = 0; + } + //int sizeP = 30 + 15*hopperContentSize; + int sizeP = 30-2-4-4; + //System.out.println("sizeP " + sizeP); + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + buffer.putInt(sizeP); + // dOut.writeInt(0x2D); + buffer.putShort((short)5); + buffer.putShort((short)6); + buffer.put(state); + buffer.putShort((short)9); + buffer.putFloat(harvester.getActualExtractionRate()); + buffer.putShort((short)0x0C); + buffer.put(harvester.getUpdateCount()); +// buffer.putShort((short)0x0D); +// buffer.putInt(iHopperList); +// buffer.putInt(harvester.getResourceUpdateCount()); + int sumOfHopper = 0; + int i = 0; + sumOfHopper = 0; + Vector outputHopper = harvester.getOutputHopperContent(); + for (ResourceContainerObject cont : outputHopper){ + sumOfHopper += cont.getStackCount(); + i++; + } + + buffer.putShort((short)0x0A); + buffer.putInt(sumOfHopper); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildHINO7Delta2(HarvesterObject harvester,byte state) { + + Vector outputHopperContent = harvester.getOutputHopperContent(); + int hopperContentSize = outputHopperContent.size(); + int iHopperList = 1; + if (hopperContentSize==0) { + iHopperList = 0; + } + int sizeP = 30 + 15*hopperContentSize; + //System.out.println("sizeP " + sizeP); + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + buffer.putInt(sizeP); + // dOut.writeInt(0x2D); + buffer.putShort((short)5); + buffer.putShort((short)6); + buffer.put(state); + buffer.putShort((short)9); + buffer.putFloat(harvester.getActualExtractionRate()); + buffer.putShort((short)0x0C); + buffer.put(harvester.getUpdateCount()); + buffer.putShort((short)0x0D); + buffer.putInt(iHopperList); + buffer.putInt(harvester.getResourceUpdateCount()); + int sumOfHopper = 0; + + byte i = 0; + for (ResourceContainerObject container : outputHopperContent){ + buffer.putShort((short)harvester.getResourceUpdateCount()); + buffer.put(i); + buffer.putLong(container.getReferenceID()); + buffer.putInt(container.getStackCount()); + sumOfHopper += container.getStackCount(); + i++; + } + + buffer.putShort((short)0x0A); + buffer.putInt(sumOfHopper); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + // 2 + 2 + 1 + 2 + 4 + 2 + 1 + 2 + 4 + 4 + (hoppersize* 2+1+8+4=15) + 2 + 4 + +// 0000: 05 00 53 21 86 12 33 01 0E BE 41 00 00 00 4F 4E ..S!..3...A...ON +// 0010: 49 48 07 2D 00 00 00 05 00 06 00 01 09 00 3F AE IH.-..........?. +// 0020: 2D 42 0C 00 02 0D 00 01 00 00 00 01 00 00 00 02 -B.............. +// 0030: 00 00 5E C8 62 AB 41 00 00 00 CC F1 0A 40 0A 00 ..^.b.A......@.. +// 0040: CC F1 0A 40 ...@ + + public IoBuffer buildHINO7EmptyHopperDelta(HarvesterObject harvester) { + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + buffer.putInt(21); + buffer.putShort((short)3); + buffer.putShort((short)0x0C); + buffer.put((byte)harvester.getResourceUpdateCount()); + buffer.putShort((short)0x0D); + buffer.putInt(0); + buffer.putInt(harvester.getResourceUpdateCount()); + buffer.putShort((short)0x0A); + buffer.putFloat(harvester.getOutputHopperContent().size()); + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + + public IoBuffer buildHINO7ExperimentalDelta(HarvesterObject harvester) { + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + buffer.putInt(0x18); + buffer.putShort((short)3); + buffer.putShort((short)0x0C); + buffer.put((byte)harvester.getResourceUpdateCount()); + buffer.putShort((short)0x0D); + buffer.putInt(1); + buffer.putInt(0x1E); + buffer.put((byte)0); + buffer.putShort((short)0); + buffer.putInt(harvester.getResourceUpdateCount()); + buffer.putShort((short)0x0A); + buffer.putFloat(0); // since it's 0 outputhoppercontent + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + +// 0000: 05 00 53 21 86 12 53 D0 AC 41 3F 00 00 00 4F 4E ..S!..S..A?...ON +// 0010: 49 48 07 18 00 00 00 03 00 0C 00 25 0D 00 01 00 IH.........%.... +// 0020: 00 00 1E 00 00 00 00 00 00 0A 00 00 00 00 00 ............... + + + public IoBuffer buildHINO7ExperimentalDelta2(HarvesterObject harvester) { + + int iHopperList = 0; + if (harvester.getOutputHopperContent().size() >= 1) { + iHopperList = 1; + } + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + + buffer.putInt(36); + buffer.putShort((short)3); + buffer.putShort((short)0x0C); + buffer.put(harvester.getUpdateCount()); + buffer.putShort((short)0x0D); + buffer.putInt(iHopperList); + buffer.putInt(harvester.getResourceUpdateCount()); + int i = 0; + int totalStackCount = 0; + Vector outputHopper = harvester.getOutputHopperContent(); + for (ResourceContainerObject cont : outputHopper){ + totalStackCount += cont.getStackCount(); + if (cont.getReferenceID() == harvester.getSelectedHarvestResource().getId()) { + buffer.put((byte)2); + buffer.putShort((short) i); + buffer.putLong(cont.getReferenceID()); + buffer.putFloat((float)cont.getStackCount()); + //System.out.println("TOTAL STACKCOUNT " + (float)cont.getStackCount()); + } + i++; + } + + buffer.putShort((short)0x0A); + buffer.putFloat((float)totalStackCount); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildHINO7ActivateDelta(HarvesterObject harvester) { + + int iHopperList = 0; + if (harvester.getOutputHopperContent().size() >= 1) { + iHopperList = 1; + } + int factor = 0; + Vector outputHopper = harvester.getOutputHopperContent(); + for (ResourceContainerObject cont : outputHopper){ + if (cont.getReferenceID() == harvester.getSelectedHarvestResource().getId()) { + factor = 1; + } + } + + byte iHopperUpdateCounter = harvester.getResourceUpdateCount(); + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + buffer.putInt(5+19+(15*factor)); + buffer.putShort((short)5); + buffer.putShort((short)6); + buffer.put((byte)1); + // 2 + 4 + 4 + 2 + 4 + (15*h) = 16 + 2 + 1 = 19 + buffer.putShort((short)0x0C); + buffer.put(harvester.getUpdateCount()); + buffer.putShort((short)0x0D); + buffer.putInt(iHopperList); + buffer.putInt(iHopperUpdateCounter); + int totalStackCount = 0; + + int i = 0; + + for (ResourceContainerObject cont : outputHopper){ + totalStackCount += cont.getStackCount(); + if (cont.getReferenceID() == harvester.getSelectedHarvestResource().getId()) { + buffer.put((byte)2); + buffer.putShort((short) i); + buffer.putLong(cont.getReferenceID()); + buffer.putFloat((float)cont.getStackCount()); + } + i++; + } + + buffer.putShort((short)0x0A); + buffer.putFloat((float)totalStackCount); + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + + public IoBuffer buildHINO7ActivateDelta2(HarvesterObject harvester) { + + int iHopperList = 0; + if (harvester.getOutputHopperContent().size() >= 1) { + iHopperList = 1; + } + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + + buffer.putInt(11); + buffer.putShort((short)2); + buffer.putShort((short)6); + buffer.put((byte)1); + buffer.putShort((short)9); + buffer.putFloat(harvester.getActualExtractionRate()); + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } +// +// 02 00 06 00 01 09 00 43 94 IH............C. +// 0020: 59 42 YB + + public IoBuffer buildHINO7ActivateDelta2old(HarvesterObject harvester) { + + int iHopperList = 0; + if (harvester.getOutputHopperContent().size() >= 1) { + iHopperList = 1; + } + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + + buffer.putInt(5); + buffer.putShort((short)5); + buffer.putShort((short)6); + buffer.put((byte)1); + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildHINO7DeactivateDelta(HarvesterObject harvester) { + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + + buffer.putInt(14); + buffer.putShort((short)5); + buffer.putShort((short)6); + buffer.put((byte)0); + buffer.putShort((short)9); + buffer.putFloat(0); + buffer.putShort((short)0xC); + buffer.put((byte)5); + + // new +// buffer.putShort((short)6); +// buffer.put((byte)0); +// buffer.putShort((short)9); +// buffer.put((byte)0); +// buffer.putShort((short)0xC); +// buffer.put((byte)5); + + // + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + + public IoBuffer buildHINO7DeactivateDeltaold(HarvesterObject harvester) { + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + + buffer.putInt(5); + buffer.putShort((short)5); + buffer.putShort((short)6); + buffer.put((byte)0); + + // new + buffer.putShort((short)6); + buffer.put((byte)0); + buffer.putShort((short)9); + buffer.put((byte)0); + buffer.putShort((short)0xC); + buffer.put((byte)5); + + // + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildHINO7ClearDelta(HarvesterObject harvester) { + + int iHopperList = 0; + if (harvester.getOutputHopperContent().size() >= 1) { + iHopperList = 1; + } + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + + buffer.putInt(36); + buffer.putShort((short)3); + buffer.putShort((short)0x0C); + buffer.put(harvester.getUpdateCount()); + buffer.putShort((short)0x0D); + buffer.putInt(iHopperList); + buffer.putInt(harvester.getResourceUpdateCount()); + buffer.put((byte)4); + buffer.putShort((short)0x0A); + buffer.putFloat((float)0.0F); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + + public IoBuffer buildDiscardResourceResponse(HarvesterObject harvester, byte actionMode, byte actionCounter,CreatureObject owner) { + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x80CE5E46); + buffer.putInt(0x0B); + buffer.putInt(0xEE); + buffer.putLong(owner.getObjectID()); + buffer.putInt(0); + buffer.putInt(0xED); + buffer.put((byte)1); + buffer.put(actionCounter); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + +//0000: 05 00 46 5E CE 80 0B 00 00 00 EE 00 00 00 62 5F ..F^..........b_ +//0010: 02 15 00 00 01 00 00 00 00 00 ED 00 00 00 01 01 ................ +// ^^ weird but works, should be zero allowed too + + public IoBuffer buildBaseline8() { + IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.putShort((short) 0); + int size = buffer.position(); + buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size); + buffer.flip(); + buffer = createBaseline("TANO", (byte) 8, buffer, size); + + return buffer; + } + + public IoBuffer buildBaseline9() { + IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.putShort((short) 0); + int size = buffer.position(); + buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size); + buffer.flip(); + buffer = createBaseline("TANO", (byte) 9, buffer, size); + + return buffer; + } + + + public IoBuffer buildHINOBaseline7(HarvesterObject harvester,Vector vSRD) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + int sizeP = 74; + + buffer.putShort((short)5); + buffer.putInt(0x68A75F0C); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x4F4E4948); + buffer.put((byte)7); + + int iResourceCount = vSRD.size(); + Vector outputHopperContent = harvester.getOutputHopperContent(); + int hopperContentSize = outputHopperContent.size(); + float outputHopperCount = 0; + + //y = a + 4x + 16x + 12z = a + 20x + 12z + sizeP += (iResourceCount * 4); + sizeP += (iResourceCount * 16); + + sizeP += (hopperContentSize * 12); + + for (int i = 0; i < iResourceCount; i++) { + sizeP += vSRD.get(i).getName().length(); + sizeP += vSRD.get(i).getFileName().length(); + } + + buffer.putInt(sizeP); + + for (ResourceContainerObject container : outputHopperContent){ + outputHopperCount += container.getStackCount(); + } + + buffer.putShort((short)0x0F); + buffer.put((byte)1); + buffer.putInt(iResourceCount); + buffer.putInt(iResourceCount); + + for (int i = 0; i < iResourceCount; i++) { + buffer.putLong(vSRD.get(i).getId()); + } + buffer.putInt(iResourceCount); + + buffer.putInt(iResourceCount); + + for (int i = 0; i < iResourceCount; i++) { + buffer.putLong(vSRD.get(i).getId()); + } + + buffer.putInt(iResourceCount); + + buffer.putInt(iResourceCount); + + for (int i = 0; i < iResourceCount; i++) { + buffer.put(getAsciiString(vSRD.get(i).getName())); + } + + buffer.putInt(iResourceCount); + buffer.putInt(iResourceCount); + for (int i = 0; i < iResourceCount; i++) { + buffer.put(getAsciiString(vSRD.get(i).getFileName())); + + } + + if (harvester.getSelectedHarvestResource() != null) { + buffer.putLong(harvester.getSelectedHarvestResource().getId()); + } else { + buffer.putLong(0); + } + + buffer.put(harvester.isActivated() ? (byte)1 : (byte)0); + + buffer.putInt(harvester.getSpecRate()); // SPEC RATE buffer.putInt(harvester.getBER()); + + buffer.putFloat(harvester.getBER()); + + buffer.putFloat(harvester.getActualExtractionRate()); + buffer.putFloat(outputHopperCount); + buffer.putInt(harvester.getOutputHopperCapacity()); + buffer.put(harvester.getUpdateCount()); + buffer.putInt(hopperContentSize); + buffer.putInt(0); + for (ResourceContainerObject container : outputHopperContent){ + buffer.putLong(container.getReferenceID()); + buffer.putFloat(container.getStackCount()); + } + buffer.put(harvester.getStructuralCondition()); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildCustomNameDelta(HarvesterObject harvester, String customName) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + int sizeP = 8; + sizeP += 2*customName.length(); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x54414E4F); + buffer.put((byte)3); + buffer.putInt(sizeP); + buffer.putShort((short)1); + buffer.putShort((short)2); + buffer.put(getUnicodeString(customName)); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildPermissionListCreate(HarvesterObject harvester, Vector permissionList, String listName) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + int listSize = permissionList.size(); + buffer.putShort((short)4); + buffer.putInt(0x52F364B8); + buffer.putInt(listSize); + for (String name : permissionList){ + buffer.put(getUnicodeString(name)); + } + //buffer.putInt(0x61); + buffer.putInt(0); + //buffer.putShort((short)0); + buffer.put(getUnicodeString(listName)); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + /* + 0000: 04 00 B8 64 F3 52 01 00 00 00 06 00 00 00 63 00 ...d.R........c. + 0010: 68 00 61 00 72 00 6F 00 6E 00 00 00 00 00 05 00 h.a.r.o.n....... + 0020: 00 00 41 00 44 00 4D 00 49 00 4E 00 ..A.D.M.I.N. + */ + + // Send this in response to the Radial Menu to manage harvesters, + // it is necessary to send this *before* the 07 Baseline! + //ResourceHarvesterActivatePageMessage (BD18C679) + public IoBuffer buildResourceHarvesterActivatePageMessage(HarvesterObject harvester) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)2); + buffer.putInt(0xBD18C679); + buffer.putLong(harvester.getObjectID()); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildHarvesterGetResourceData(HarvesterObject harvester,SWGObject owner,Vector planetResources) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x80CE5E46); + buffer.putInt(0x0B); + buffer.putInt(0x000000EA); + buffer.putLong(owner.getObjectID()); + buffer.putInt(0); + buffer.putLong(harvester.getObjectID()); + if (planetResources == null || planetResources.isEmpty()) { + buffer.putInt(0); + } else { + buffer.putInt(planetResources.size()); + for (int i = 0; i < planetResources.size(); i++) { + float localConcentration = planetResources.get(i).deliverConcentrationForSurvey(owner.getPlanetId(), owner.getPosition().x, owner.getPosition().z); + buffer.putLong(planetResources.get(i).getId()); + buffer.put(getAsciiString(planetResources.get(i).getName())); + buffer.put(getAsciiString(planetResources.get(i).getFileName())); + buffer.put((byte)localConcentration); + } + } + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + + @Override + public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) { + // TODO Auto-generated method stub + + } + + @Override + public void sendBaselines() { + + } } diff --git a/src/resources/objects/harvester/HarvesterObject.java b/src/resources/objects/harvester/HarvesterObject.java index b31b40cf..5626ce35 100644 --- a/src/resources/objects/harvester/HarvesterObject.java +++ b/src/resources/objects/harvester/HarvesterObject.java @@ -21,11 +21,501 @@ ******************************************************************************/ package resources.objects.harvester; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Vector; + +import main.NGECore; +import protocol.swg.SceneCreateObjectByCrc; +import protocol.swg.SceneDestroyObject; +import protocol.swg.SceneEndBaselines; +import protocol.swg.UpdatePVPStatusMessage; + import com.sleepycat.persist.model.Persistent; +import services.chat.WaypointAttachment; +import engine.clients.Client; +import engine.resources.common.CRC; +import engine.resources.objects.SWGObject; +import engine.resources.scene.Planet; +import engine.resources.scene.Point3D; +import engine.resources.scene.Quaternion; +import resources.objects.creature.CreatureObject; +import resources.objects.installation.InstallationMessageBuilder; import resources.objects.installation.InstallationObject; +import resources.objects.player.PlayerObject; +import resources.objects.resource.GalacticResource; +import resources.objects.resource.ResourceContainerObject; +import resources.objects.waypoint.WaypointObject; +import services.chat.Mail; + + +/** + * @author Charon + */ @Persistent(version=0) public class HarvesterObject extends InstallationObject { + + private HarvesterMessageBuilder messageBuilder; + private InstallationMessageBuilder installationMessageBuilder; + + public final static byte HARVESTER_TYPE_MINERAL = 0; + public final static byte HARVESTER_TYPE_CHEMICAL = 1; + public final static byte HARVESTER_TYPE_FLORA = 2; + public final static byte HARVESTER_TYPE_GAS = 3; + public final static byte HARVESTER_TYPE_WATER = 4; + public final static byte HARVESTER_TYPE_SOLAR = 5; + public final static byte HARVESTER_TYPE_WIND = 6; + public final static byte HARVESTER_TYPE_FUSION = 7; + public final static byte HARVESTER_TYPE_GEO = 8; + + public String[] mineral_type_iff = new String[]{"object/installation/mining_ore/shared_mining_ore_harvester_style_1.iff", + "object/installation/mining_ore/shared_mining_ore_harvester_style_2.iff", + "object/installation/mining_ore/shared_mining_ore_harvester_heavy.iff", + "object/installation/mining_ore/shared_mining_ore_harvester_elite.iff"}; + + public String[] chemical_type_iff = new String[]{"object/installation/mining_liquid/shared_mining_liquid_harvester_style_1.iff", + "object/installation/mining_liquid/shared_mining_liquid_harvester_style_2.iff", + "object/installation/mining_liquid/shared_mining_liquid_harvester_style_3.iff", + "object/installation/mining_liquid/shared_mining_liquid_harvester_style_4.iff"}; + + public String[] flora_type_iff = new String[]{"object/installation/mining_organic/shared_mining_organic_flora_farm.iff", + "object/installation/mining_organic/shared_mining_organic_flora_farm_medium.iff", + "object/installation/mining_organic/shared_mining_organic_flora_farm_heavy.iff", + "object/installation/mining_organic/shared_mining_organic_flora_farm_elite.iff"}; + + public String[] water_type_iff = new String[]{"object/installation/mining_liquid/shared_mining_liquid_moisture_harvester.iff", + "object/installation/mining_liquid/shared_mining_liquid_moisture_harvester_medium.iff", + "object/installation/mining_liquid/shared_mining_liquid_moisture_harvester_heavy.iff", + "object/installation/mining_liquid/shared_mining_liquid_moisture_harvester_elite.iff"}; + + public String[] gas_type_iff = new String[]{"object/installation/mining_gas/shared_mining_gas_harvester_style_1.iff", + "object/installation/mining_gas/shared_mining_gas_harvester_style_2.iff", + "object/installation/mining_gas/shared_mining_gas_harvester_style_3.iff", + "object/installation/mining_gas/shared_mining_gas_harvester_style_4.iff"}; + + public String[] wind_type_iff = new String[]{"object/installation/generators/shared_power_generator_wind_style_1.iff"}; + + public String[] solar_type_iff = new String[]{"object/installation/generators/shared_power_generator_solar_style_1.iff"}; + + public String[] fusion_type_iff = new String[]{"object/installation/generators/shared_power_generator_fusion_style_1.iff"}; + + public String[] geo_type_iff = new String[]{"object/installation/generators/shared_power_generator_geothermal_style_1.iff"}; + //for nothing "object/installation/generators/shared_power_generator_photo_bio_style_1.iff" + + + public byte harvester_type = 0; + public byte harvester_size = 0; + private Vector outputHopperContent = new Vector(); + private int outputHopperCapacity = 0; + private int BER = 0; + private float maintenanceAmount = 0; + private float powerLevel = 0; + private int powerCost = 0; + private int maintenanceCost = 0; + private byte structuralCondition = 100; + private boolean activated = false; + private boolean generator = false; + private GalacticResource selectedHarvestResource; + private float selectedResourceConcentration; + private byte updateCount; + private byte resourceUpdateCount; + private Vector adminList = new Vector(); + private Vector hopperList = new Vector(); + private SWGObject owner; + private float currentHarvestedCountFloat=0.0F; + private String deedTemplate; + + private int specRate; + + + public HarvesterObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ + super(objectID, planet, template, position, orientation); + this.setConditionDamage(100); + messageBuilder = new HarvesterMessageBuilder(this); + installationMessageBuilder = new InstallationMessageBuilder((InstallationObject)this); + } + + public int getBER() { + return BER; + } + + + public void setBER(int baseExtractionRate) { + this.BER = baseExtractionRate; + } + + + public float getActualExtractionRate() { + //float resourceDraw = (getBER() * getSelectedResourceConcentration()) / 400; // /100 + float resourceDraw = 1.5F*(getBER() * getSelectedResourceConcentration()) / 100; + // BER * concentration * publish 27 bonus * profession buffs = AER + // 14* 0.83 * 1.5 * 1.05 = 18.3015 AER + return resourceDraw; + } + + public int getSpecRate() { + return specRate; + } + + public void setSpecRate(int specRate) { + this.specRate = specRate; + } + + + public GalacticResource getSelectedHarvestResource() { + return selectedHarvestResource; + } + + + public void setSelectedHarvestResource(GalacticResource selectedHarvestResource,CreatureObject owner) { + this.selectedHarvestResource = selectedHarvestResource; + setSelectedResourceConcentration(selectedHarvestResource.deliverConcentrationForSurvey(this.getPlanetId(), this.getPosition().x, this.getPosition().z)); + + owner.getClient().getSession().write(installationMessageBuilder.constructINSO7Var1((InstallationObject) this,selectedHarvestResource.getObjectId())); + owner.getClient().getSession().write(installationMessageBuilder.constructINSO7Var2((InstallationObject) this,selectedHarvestResource.getObjectId())); + } + + + public float getSelectedResourceConcentration() { + return selectedResourceConcentration; + } + + + private void setSelectedResourceConcentration(float selectedResourceConcentration) { + this.selectedResourceConcentration = selectedResourceConcentration; + } + + + public void activateHarvester(CreatureObject owner){ + activated = true; + this.setOwner(owner); + owner.getClient().getSession().write(messageBuilder.buildHINO3Delta(this,(byte)1)); + owner.getClient().getSession().write(messageBuilder.buildHINO7ActivateDelta2(this)); + } + + + public void deactivateHarvester(CreatureObject owner){ + activated = false; + owner.getClient().getSession().write(messageBuilder.buildHINO3Delta2(this,(byte)0)); + owner.getClient().getSession().write(messageBuilder.buildHINO7DeactivateDelta(this)); + } + + + public boolean isActivated(){ + return this.activated; + } + + + public byte getHarvester_type() { + return harvester_type; + } + + + public void setHarvester_type(byte harvester_type) { + this.harvester_type = harvester_type; + } + + + public Vector getOutputHopperContent() { + return outputHopperContent; + } + + + public void setOutputHopperContent(Vector outputHopperContent) { + this.outputHopperContent = outputHopperContent; + } + + + public byte getStructuralCondition() { + return structuralCondition; + } + + + public void setStructuralCondition(byte structuralCondition) { + this.structuralCondition = structuralCondition; + } + + + public int getOutputHopperCapacity() { + return outputHopperCapacity; + } + + + public void setOutputHopperCapacity(int outputHopperCapacity) { + this.outputHopperCapacity = outputHopperCapacity; + } + + + public byte getUpdateCount() { + if (updateCount>254) updateCount = 0; + return updateCount++; + } + + public byte getResourceUpdateCount() { + if (resourceUpdateCount>254) resourceUpdateCount = 0; + return resourceUpdateCount++; + } + + + public void setUpdateCount(byte updateCount) { + this.updateCount = updateCount; + } + + + public Vector getAdminList() { + return adminList; + } + + + public void setAdminList(Vector adminList) { + this.adminList = adminList; + } + + + public Vector getHopperList() { + return hopperList; + } + + + public void setHopperList(Vector hopperList) { + this.hopperList = hopperList; + } + + + public float getPowerLevel() { + return powerLevel; + } + + + public void setPowerLevel(float energyLevel) { + this.powerLevel = energyLevel; + } + + + public float getMaintenanceAmount() { + return maintenanceAmount; + } + + + public void setMaintenanceAmount(float maintenanceAmount) { + this.maintenanceAmount = maintenanceAmount; + } + + public int getPowerCost() { + return powerCost; + } + + + public void setPowerCost(int powerCost) { + this.powerCost = powerCost; + } + + + public int getMaintenanceCost() { + return maintenanceCost; + } + + + public void setMaintenanceCost(int maintenanceCost) { + this.maintenanceCost = maintenanceCost; + } + + + public float getCurrentHarvestedCountFloat() { + return currentHarvestedCountFloat; + } + + + public void setCurrentHarvestedCountFloat(float currentHarvestedCountFloat) { + this.currentHarvestedCountFloat = currentHarvestedCountFloat; + } + + + public SWGObject getOwner() { + return owner; + } + + + public void setOwner(SWGObject owner) { + this.owner = owner; + } + + public void setDeedTemplate(String deedTemplate){ + this.deedTemplate = deedTemplate; + } + + public String getDeedTemplate(){ + return this.deedTemplate; + } + + + public boolean isGenerator() { + return generator; + } + + public void setGenerator(boolean generator) { + this.generator = generator; + } + + + public void setHarvesterName(String name,CreatureObject owner){ + owner.getClient().getSession().write(messageBuilder.buildCustomNameDelta(this,name)); + this.setCustomName(name); + ((CreatureObject)owner).sendSystemMessage("Structure renamed.", (byte) 0); + } + + public void setPermissionAdmin(String name,CreatureObject owner){ + Vector permissionList = this.getAdminList(); + owner.getClient().getSession().write(messageBuilder.buildPermissionListCreate(this, permissionList, name)); + } + + public void setPermissionHopper(String name,CreatureObject owner){ + Vector permissionList = this.getAdminList(); + owner.getClient().getSession().write(messageBuilder.buildPermissionListCreate(this, permissionList, name)); + } + + public void operateMachinery(CreatureObject owner){ + owner.getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); + // Assemble resources at that spot + // For later, it might be needed to also pass the template to differentiate liquid resources + Vector planetResourcesVector = NGECore.getInstance().resourceService.getSpawnedResourcesByPlanetAndHarvesterType(this.getPlanetId(),this.getHarvester_type()); + owner.getClient().getSession().write(messageBuilder.buildHarvesterGetResourceData(this, owner, planetResourcesVector)); + owner.getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); + } + + public void deActivate(){ + owner.getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); + } + + public void placeHarvester(){ + owner.getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); + } + + public static void createAndPlaceHarvester(SWGObject object){ + CreatureObject actor = (CreatureObject) object.getAttachment("Owner"); + + String structureTemplate = (String)object.getAttachment("Deed_StructureTemplate"); + HarvesterObject harvester = (HarvesterObject) NGECore.getInstance().objectService.createObject(structureTemplate, actor.getPlanet()); + long objectId = harvester.getObjectID(); + + Vector adminList = harvester.getAdminList(); + String[] fullName = ((CreatureObject)actor).getCustomName().split(" "); + adminList.add(fullName[0]); + harvester.setAdminList(adminList); + // Set BER and outputhopper capacity here, take it from deed + harvester.setBER((int)object.getAttachment("Deed_BER")); + harvester.setSpecRate((int)(1.5F*(int)object.getAttachment("Deed_BER"))); + harvester.setOutputHopperCapacity((int)object.getAttachment("Deed_Capacity")); + harvester.setDeedTemplate((String)object.getAttachment("Deed_DeedTemplate")); + if ((int)object.getAttachment("Deed_SurplusMaintenance")>0){ + harvester.setMaintenanceAmount((int)object.getAttachment("Deed_SurplusMaintenance")); + } + if ((int)object.getAttachment("Deed_SurplusPower")>0){ + harvester.setPowerLevel((int)object.getAttachment("Deed_SurplusPower")); + } + + + // build harvester + int resCRC = CRC.StringtoCRC(structureTemplate); + float positionY = NGECore.getInstance().terrainService.getHeight(actor.getPlanetId(), object.getPosition().x, object.getPosition().z); + SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(objectId, object.getOrientation().x, object.getOrientation().y, object.getOrientation().z, object.getOrientation().w, object.getPosition().x, positionY, object.getPosition().z, resCRC, (byte) 0); + actor.getClient().getSession().write(createObjectMsg.serialize()); + tools.CharonPacketUtils.printAnalysis(createObjectMsg.serialize()); + + harvester.setPosition(new Point3D(object.getPosition().x,positionY, object.getPosition().z)); + + resources.objects.installation.InstallationMessageBuilder messenger = new resources.objects.installation.InstallationMessageBuilder((InstallationObject)harvester); + actor.getClient().getSession().write(messenger.buildBaseline3((InstallationObject)harvester)); + SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(harvester.getObjectID()); + actor.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); + tools.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); + + PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); + WaypointObject constructionWaypoint = (WaypointObject)NGECore.getInstance().objectService.createObject("object/waypoint/shared_world_waypoint_blue.iff", actor.getPlanet(), harvester.getPosition().x, 0 ,harvester.getPosition().z); + String displayname = "@installation_n:"+harvester.getStfName(); + constructionWaypoint.setName(displayname); + constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); + constructionWaypoint.setPosition(new Point3D(object.getPosition().x,0, object.getPosition().z)); + player.waypointAdd(constructionWaypoint); + constructionWaypoint.setPosition(new Point3D(object.getPosition().x,0, object.getPosition().z)); + constructionWaypoint.setActive(true); + constructionWaypoint.setColor((byte)1); + constructionWaypoint.setStringAttribute("", ""); + player.waypointAdd(constructionWaypoint); + constructionWaypoint.setName(displayname); + constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); + player.setLastSurveyWaypoint(constructionWaypoint); + + List attachments = new ArrayList(); + WaypointAttachment attachment = new WaypointAttachment(); + attachment.active = true; + attachment.cellID = constructionWaypoint.getCellId(); + attachment.color = (byte)1; + attachment.name = displayname; + attachment.planetCRC = engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName()); + attachment.positionX = object.getPosition().x; + attachment.positionY = 0; + attachment.positionZ = object.getPosition().z; + attachments.add(attachment); + + // remove constructor + NGECore.getInstance().objectService.destroyObject(object); + SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(object.getObjectID()); + actor.getClient().getSession().write(destroyObjectMsg.serialize()); + + // ToDo: waypoint attachment fix + Date date = new Date(); + Mail constructionNotificationMail = new Mail(); + constructionNotificationMail.setSenderName("Structure Service"); + constructionNotificationMail.setSubject("Your structure"); + constructionNotificationMail.setRecieverId(actor.getObjectID()); + constructionNotificationMail.setTimeStamp((int) (date.getTime() / 1000)); + constructionNotificationMail.setMailId(NGECore.getInstance().chatService.generateMailId()); + String message = "Your construction is ready"; + constructionNotificationMail.setMessage(message); + constructionNotificationMail.setStatus(Mail.NEW); + constructionNotificationMail.setAttachments(attachments); + //NGECore.getInstance().chatService.sendPersistentMessage(actor.getClient(), constructionNotificationMail); + NGECore.getInstance().chatService.storePersistentMessage(constructionNotificationMail); + NGECore.getInstance().chatService.sendPersistentMessageHeader(actor.getClient(), constructionNotificationMail); + + } + + public void createNewHopperContainer(){ + Vector planetResourcesVector = NGECore.getInstance().resourceService.getSpawnedResourcesByPlanetAndHarvesterType(this.getPlanetId(),this.getHarvester_type()); + ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); + ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINO7Delta(this,(byte)1)); + } + + public void continueHopperContainer(){ + Vector planetResourcesVector = NGECore.getInstance().resourceService.getSpawnedResourcesByPlanetAndHarvesterType(this.getPlanetId(),this.getHarvester_type()); + ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHarvesterGetResourceData(this, owner, planetResourcesVector)); + ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); + } + + @Override + public void sendBaselines(Client destination) { + + + if(destination == null || destination.getSession() == null) { + System.out.println("NULL destination"); + return; + } + + destination.getSession().write(messageBuilder.buildBaseline3()); + destination.getSession().write(messageBuilder.buildBaseline6()); + destination.getSession().write(messageBuilder.buildBaseline8()); + destination.getSession().write(messageBuilder.buildBaseline9()); + + if(getPvPBitmask() != 0) { + UpdatePVPStatusMessage upvpm = new UpdatePVPStatusMessage(getObjectID()); + upvpm.setFaction(UpdatePVPStatusMessage.factionCRC.Neutral); + upvpm.setStatus(getPvPBitmask()); + destination.getSession().write(upvpm.serialize()); + } + } } diff --git a/src/resources/objects/installation/InstallationMessageBuilder.java b/src/resources/objects/installation/InstallationMessageBuilder.java index f7902d4e..f9fe356d 100644 --- a/src/resources/objects/installation/InstallationMessageBuilder.java +++ b/src/resources/objects/installation/InstallationMessageBuilder.java @@ -21,6 +21,205 @@ ******************************************************************************/ package resources.objects.installation; -public class InstallationMessageBuilder { +import java.nio.ByteOrder; +import org.apache.mina.core.buffer.IoBuffer; +import resources.objects.ObjectMessageBuilder; +import resources.objects.harvester.HarvesterObject; +/** + * @author Charon + */ + +public class InstallationMessageBuilder extends ObjectMessageBuilder{ + + public InstallationMessageBuilder(InstallationObject installationObject) { + setObject(installationObject); + } + + public IoBuffer buildBaseline3(InstallationObject installationObject) { + IoBuffer buffer = bufferPool.allocate(10, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + int packSize = 66; + packSize += installationObject.getStfName().length(); + packSize += installationObject.getStfFilename().length(); + + buffer.putShort((short)5); + buffer.putInt(0x68A75F0C); + buffer.putLong(installationObject.getObjectID()); + buffer.putInt(0x494E534F); + buffer.put((byte)3); + buffer.putInt(packSize); + buffer.putShort((short) 0x05); + buffer.putFloat(installationObject.getComplexity()); + buffer.put(getAsciiString(installationObject.getStfFilename())); // installation_n + buffer.putInt(0); + buffer.put(getAsciiString(installationObject.getStfName())); + buffer.put(getUnicodeString(""));//buffer.put(getUnicodeString(installationObject.getCustomName())); + buffer.putInt(1);// int 1 // oper 3 + buffer.putShort((short)0); + + buffer.putInt(0); + buffer.putInt(0); + buffer.putLong(0); + + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + buffer.put((byte)1); + buffer.put((byte)0); + buffer.putFloat(0.0F); + buffer.putFloat(0.0F); + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + +// 0000: 05 00 0C 5F A7 68 82 EC 7D 16 00 00 02 00 4F 53 ..._.h..}.....OS +// 0010: 4E 49 06 0E 00 00 00 05 00 76 00 00 00 00 00 00 NI.......v...... +// 0020: 00 01 00 00 00 ..... + + public IoBuffer buildBaseline6(InstallationObject installationObject) { + IoBuffer buffer = bufferPool.allocate(10, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + int packSize = 14; + buffer.putShort((short)5); + buffer.putInt(0x68A75F0C); + buffer.putLong(installationObject.getObjectID()); + buffer.putInt(0x494E534F); + buffer.put((byte)6); + buffer.putInt(packSize); + buffer.putShort((short)5); + buffer.putInt(0x76); + buffer.putInt(0); + buffer.putInt(1); + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + + public IoBuffer buildBaseline7() { + IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.putShort((short) 0); + int size = buffer.position(); + buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size); + buffer.flip(); + buffer = createBaseline("INSO", (byte) 7, buffer, size); + + return buffer; + } + + public IoBuffer buildBaseline8() { + IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.putShort((short) 0); + int size = buffer.position(); + buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size); + buffer.flip(); + buffer = createBaseline("INSO", (byte) 8, buffer, size); + + return buffer; + } + + public IoBuffer buildBaseline9() { + IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.putShort((short) 0); + int size = buffer.position(); + buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size); + buffer.flip(); + buffer = createBaseline("INSO", (byte) 9, buffer, size); + + return buffer; + } + + public IoBuffer buildDelta3(InstallationObject installationObject,IoBuffer packet,int packSize) { + IoBuffer buffer = bufferPool.allocate(10, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(installationObject.getObjectID()); + buffer.putInt(0x494E534F); + buffer.put((byte)3); + buffer.putInt(packSize); + buffer.put(packet); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildDelta7(InstallationObject installationObject,IoBuffer packet,int packSize) { + IoBuffer buffer = bufferPool.allocate(10, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(installationObject.getObjectID()); + buffer.putInt(0x494E534F); + buffer.put((byte)7); + buffer.putInt(packSize); + buffer.put(packet); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer constructINSO7Var1(InstallationObject installationObject,long selectedResource) { + IoBuffer buffer = bufferPool.allocate(10, false).order(ByteOrder.LITTLE_ENDIAN); + int hopperContentsSize = ((HarvesterObject)installationObject).getOutputHopperContent().size()+1; + byte updateCounter = ((HarvesterObject)installationObject).getUpdateCount(); + + buffer.setAutoExpand(true); + buffer.putShort((short)2); // buffer.putShort((short)updateCounter); + buffer.putShort((short)0xC); + buffer.put((byte)1); + buffer.putShort((short)0xD); + + buffer.putInt(1);//buffer.putInt(hopperContentsSize); // works once with 1! HopperContentsSize->Number of resources in hopper + buffer.putInt(2); // UpdateCounter works once with 2! + buffer.put((byte)1); // subtype : ADD + buffer.putShort((short)0); // index was 0 buffer.putShort((short)(hopperContentsSize-1)); + buffer.putLong(selectedResource); + buffer.putFloat(0); + int size = buffer.position(); + buffer.flip(); + return buildDelta7(installationObject,IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(),size); + } + +// 0000: 05 00 53 21 86 12 82 EC 7D 16 00 00 02 00 4F 53 ..S!....}.....OS +// 0010: 4E 49 07 1E 00 00 00 02 00 0C 00 01 0D 00 01 00 NI.............. +// 0020: 00 00 02 00 00 00 01 00 00 8A D3 79 16 00 00 0F ...........y.... +// 0030: 00 00 00 00 00 ..... + + public IoBuffer constructINSO7Var2(InstallationObject installationObject,long selectedResource) { + IoBuffer buffer = bufferPool.allocate(10, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)2); + buffer.putShort((short)0x9); + buffer.putFloat(0); + buffer.putShort((short)0x5); + buffer.putLong(selectedResource); + int size = buffer.position(); + buffer.flip(); + return buildDelta7(installationObject,IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(),size); + } + +// 0000: 05 00 53 21 86 12 82 EC 7D 16 00 00 02 00 4F 53 ..S!....}.....OS +// 0010: 4E 49 07 12 00 00 00 02 00 09 00 00 00 00 00 05 NI.............. +// 0020: 00 8A D3 79 16 00 00 0F 00 ...y..... + + @Override + public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) { + // TODO Auto-generated method stub + + } + + @Override + public void sendBaselines() { + + } } diff --git a/src/resources/objects/installation/InstallationObject.java b/src/resources/objects/installation/InstallationObject.java index 728de4a9..5a3870e7 100644 --- a/src/resources/objects/installation/InstallationObject.java +++ b/src/resources/objects/installation/InstallationObject.java @@ -23,9 +23,16 @@ package resources.objects.installation; import com.sleepycat.persist.model.Persistent; +import engine.resources.scene.Planet; +import engine.resources.scene.Point3D; +import engine.resources.scene.Quaternion; + import resources.objects.tangible.TangibleObject; @Persistent(version=0) public class InstallationObject extends TangibleObject { - -} + + public InstallationObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ + super(objectID, planet, template, position, orientation); + } +} \ No newline at end of file diff --git a/src/resources/objects/resource/ResourceContainerObject.java b/src/resources/objects/resource/ResourceContainerObject.java index b2a0eada..c5b84a9f 100644 --- a/src/resources/objects/resource/ResourceContainerObject.java +++ b/src/resources/objects/resource/ResourceContainerObject.java @@ -47,7 +47,7 @@ public class ResourceContainerObject extends TangibleObject { private CreatureObject proprietor; private String resourceType; - private String resourceClass; + private String resourceClass=""; private String resourceName; private byte generalType; private long referenceID; @@ -148,7 +148,7 @@ public class ResourceContainerObject extends TangibleObject { public void initializeStats(GalacticResource resource){ this.setResourceName(resource.getName()); - this.setResourceClass(resource.getResourceClass()); + this.setResourceClass(resource.getCategory()); this.setColdResistance(resource.getResourceStats()[0]); this.setConductivity(resource.getResourceStats()[1]); this.setDecayResistance(resource.getResourceStats()[2]); diff --git a/src/services/DevService.java b/src/services/DevService.java index ef265f41..b5f0e2d3 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -38,6 +38,7 @@ import resources.common.Opcodes; import resources.common.SpawnPoint; import resources.objects.building.BuildingObject; import resources.objects.creature.CreatureObject; +import resources.objects.deed.Harvester_Deed; import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; import resources.objects.tool.SurveyTool; @@ -84,6 +85,7 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 21, "Weapons"); suiOptions.put((long) 22, "Misc Items"); suiOptions.put((long) 23, "Jedi Items"); + suiOptions.put((long) 26, "Installations"); suiOptions.put((long) 110, "Survey Devices"); if(creature.getClient().isGM()) suiOptions.put((long) 120, "House Deeds"); break; @@ -122,6 +124,10 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 91, "(Dark) Jedi Robe"); suiOptions.put((long) 92, "Belt of Master Bodo Baas"); break; + case 10: // [Items] Jedi Items + suiOptions.put((long) 111, "Harvesters"); + suiOptions.put((long) 112, "Energy resources"); + break; } @@ -187,6 +193,9 @@ public class DevService implements INetworkDispatch { case 25: // Tools sendCharacterBuilderSUI(player, 15); return; + case 26: // Installations + sendCharacterBuilderSUI(player, 10); + return; // [Items] Weapons case 30: // Jedi Weapons @@ -992,7 +1001,196 @@ public class DevService implements INetworkDispatch { solarSurveyTool.setCustomName("Solar Survey Device"); inventory.add(solarSurveyTool); return; + case 111: + // Minerals + String templateString="object/tangible/deed/harvester_deed/shared_harvester_ore_s1_deed.iff"; + Harvester_Deed deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(5); + deed1.setAttributes(); + inventory.add(deed1); + templateString="object/tangible/deed/harvester_deed/shared_harvester_ore_s2_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(11); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_ore_heavy_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(135400); + deed1.setBER(14); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_ore_deed_elite.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(44); + deed1.setAttributes(); + inventory.add(deed1); + + + // Chemicals + templateString="object/tangible/deed/harvester_deed/shared_harvester_liquid_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(5); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_liquid_deed_medium.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(11); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_liquid_deed_heavy.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(135400); + deed1.setBER(14); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_liquid_deed_elite.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(44); + deed1.setAttributes(); + inventory.add(deed1); + + + // Flora + templateString="object/tangible/deed/harvester_deed/shared_harvester_flora_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(5); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_flora_deed_medium.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(11); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_flora_deed_heavy.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(135400); + deed1.setBER(14); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_flora_deed_elite.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(44); + deed1.setAttributes(); + inventory.add(deed1); + + + // Gas + templateString="object/tangible/deed/harvester_deed/shared_harvester_gas_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(5); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_gas_deed_medium.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(11); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_gas_deed_heavy.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(135400); + deed1.setBER(14); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_gas_deed_elite.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(44); + deed1.setAttributes(); + inventory.add(deed1); + + + // Water + templateString="object/tangible/deed/harvester_deed/shared_harvester_moisture_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(5); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_moisture_deed_medium.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(11); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_moisture_deed_heavy.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(135400); + deed1.setBER(14); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_moisture_deed_elite.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(44); + deed1.setAttributes(); + inventory.add(deed1); + + + // Generators + templateString="object/tangible/deed/generator_deed/shared_generator_fusion_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(19); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/generator_deed/shared_generator_wind_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(10); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/generator_deed/shared_generator_solar_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(15); + deed1.setAttributes(); + inventory.add(deed1); + +// templateString="object/tangible/deed/generator_deed/shared_generator_photo_bio_deed.iff"; +// deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); +// deed1.setOutputHopperCapacity(250000); +// deed1.setBER(19); +// inventory.add(deed1); + + templateString="object/tangible/deed/generator_deed/shared_generator_geothermal_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(15); + deed1.setAttributes(); + inventory.add(deed1); + + break; + case 112: + core.resourceService.spawnSpecificResourceContainer("Radioactive", player, 100000); + break; case 120: SWGObject houseDeed = core.objectService.createObject("object/tangible/deed/player_house_deed/shared_generic_house_small_deed.iff", planet); inventory.add(houseDeed); diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 34e02ecf..82345d06 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -48,6 +48,7 @@ import protocol.swg.objectControllerObjects.CommandEnqueueRemove; import protocol.swg.objectControllerObjects.ShowFlyText; import protocol.swg.objectControllerObjects.StartTask; import resources.objects.creature.CreatureObject; +import resources.objects.harvester.HarvesterObject; import resources.objects.tangible.TangibleObject; import resources.objects.weapon.WeaponObject; @@ -137,7 +138,7 @@ public class CommandService implements INetworkDispatch { target = actor; } - if (target != actor) { + if (target != actor && target instanceof CreatureObject) { return false; } @@ -521,6 +522,45 @@ public class CommandService implements INetworkDispatch { } }); + + objControllerOpcodes.put(ObjControllerOpcodes.RESOURCE_EMPTY_HOPPER, new INetworkRemoteEvent() { + + @Override + public void handlePacket(IoSession session, IoBuffer data) throws Exception { + data.order(ByteOrder.LITTLE_ENDIAN); + Client client = core.getClient(session); + CommandEnqueue commandEnqueue = new CommandEnqueue(); + +// StringBuilder sb = new StringBuilder(); +// for (byte b : data.array()) { +// sb.append(String.format("%02X ", b)); +// } +// System.out.println(sb.toString()); + + /* + 05 00 46 5E CE 80 83 00 00 00 ED 00 00 00 3E 45 + 04 00 00 00 00 00 00 00 00 00 3E 45 04 00 00 00 + 00 00 90 52 05 00 00 00 00 00 D7 35 05 00 00 00 + 00 00 01 00 00 00 00 07 + */ + + long playerId = data.getLong(); // 3E 45 04 00 00 00 00 00 + data.getInt(); // 00 00 00 00 + data.getLong(); // 3E 45 04 00 00 00 00 00 + long harvesterId = data.getLong(); // 1E 55 05 00 00 00 00 00 + //long containerId = data.getLong(); // 1E 55 05 00 00 00 00 00 Resources ID + long resourceId = data.getLong(); // 1E 55 05 00 00 00 00 00 Resources ID + int stackCount = data.getInt(); // Stack count + byte actionMode = data.get(); // 0 for retrieving, 1 for discarding + byte updateCount = data.get(); // updateCount + + CreatureObject actor = (CreatureObject) client.getParent(); + SWGObject target = core.objectService.getObject(harvesterId); + + core.harvesterService.handleEmptyHopper(actor,target,harvesterId,resourceId,stackCount,actionMode,updateCount); + } + }); + } diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index 816d910b..80fea282 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -95,8 +95,11 @@ import resources.objects.Delta; import resources.objects.building.BuildingObject; import resources.objects.cell.CellObject; import resources.objects.creature.CreatureObject; +import resources.objects.deed.Harvester_Deed; import resources.objects.group.GroupObject; import resources.objects.guild.GuildObject; +import resources.objects.harvester.HarvesterObject; +import resources.objects.installation.InstallationObject; import resources.objects.intangible.IntangibleObject; import resources.objects.mission.MissionObject; import resources.objects.player.PlayerObject; @@ -313,7 +316,11 @@ public class ObjectService implements INetworkDispatch { object = new SurveyTool(objectID, planet, Template, position, orientation); - }else if(Template.startsWith("object/tangible")) { + } else if(Template.startsWith("object/tangible/deed/harvester_deed") || Template.startsWith("object/tangible/deed/generator_deed")) { + + object = new Harvester_Deed(objectID, planet, Template, position, orientation); + + } else if(Template.startsWith("object/tangible")) { object = new TangibleObject(objectID, planet, Template, position, orientation); @@ -369,7 +376,22 @@ public class ObjectService implements INetworkDispatch { object = new ResourceContainerObject(objectID, planet, Template, position, orientation); - }else { + } else if(Template.startsWith("object/installation/mining_ore/construction")) { + + float positionY = core.terrainService.getHeight(planet.getID(), position.x, position.z)-1f; + Point3D newpoint = new Point3D(position.x,positionY,position.z); + object = new InstallationObject(objectID, planet, Template, newpoint, orientation); + + } else if(Template.startsWith("object/installation/mining_ore") || Template.startsWith("object/installation/mining_liquid") || + Template.startsWith("object/installation/mining_gas") || Template.startsWith("object/installation/mining_organic") || + Template.startsWith("object/installation/generators")) { + + float positionY = core.terrainService.getHeight(planet.getID(), position.x, position.z)-1f; + Point3D newpoint = new Point3D(position.x,positionY,position.z); + object = new HarvesterObject(objectID, planet, Template, newpoint, orientation); + core.harvesterService.addHarvester(object); + + } else { return null; } diff --git a/src/services/resources/HarvesterService.java b/src/services/resources/HarvesterService.java new file mode 100644 index 00000000..11c17dfe --- /dev/null +++ b/src/services/resources/HarvesterService.java @@ -0,0 +1,1070 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package services.resources; + +import java.util.Collections; +import java.util.Comparator; +import java.util.Map; +import java.util.Random; +import java.util.Vector; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; +import protocol.swg.EnterStructurePlacementModeMessage; +import protocol.swg.SceneCreateObjectByCrc; +import protocol.swg.SceneDestroyObject; +import protocol.swg.SceneEndBaselines; +import main.NGECore; +import engine.resources.common.CRC; +import engine.resources.container.Traverser; +import engine.resources.objects.SWGObject; +import engine.resources.scene.Point3D; +import engine.resources.scene.Quaternion; +import engine.resources.service.INetworkDispatch; +import engine.resources.service.INetworkRemoteEvent; +import resources.objects.creature.CreatureObject; +import resources.objects.deed.Harvester_Deed; +import resources.objects.harvester.HarvesterMessageBuilder; +import resources.objects.harvester.HarvesterObject; +import resources.objects.installation.InstallationObject; +import resources.objects.player.PlayerObject; +import resources.objects.resource.GalacticResource; +import resources.objects.resource.ResourceContainerObject; +import resources.objects.resource.ResourceRoot; +import resources.objects.tangible.TangibleObject; +import resources.objects.waypoint.WaypointObject; +import services.sui.SUIWindow; +import services.sui.SUIWindow.SUICallback; +import services.sui.SUIWindow.Trigger; + +/** + * @author Charon + */ + +public class HarvesterService implements INetworkDispatch { + + private NGECore core; + private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + + private Vector allHarvesters = new Vector(); + private Vector allConstructors = new Vector(); + + public HarvesterService(NGECore core) { + this.core = core; + //core.commandService.registerCommand("permissionlistmodify"); + //core.commandService.registerCommand("harvesterselectresource"); + //core.commandService.registerCommand("harvesteractivate"); + //core.commandService.registerCommand("harvesterdeactivate"); + //core.commandService.registerCommand("harvesterdiscardhopper"); + //core.commandService.registerCommand("harvestergetresourcedata"); + //core.commandService.registerCommand("resourceemptyhopper"); + //core.commandService.registerCommand("placestructure"); + //generateNoBuildData(); + scheduleHarvesterService(); + } + + @Override + public void insertOpcodes(Map swgOpcodes, Map objControllerOpcodes) { + + + } + + + public void scheduleHarvesterService(){ + + final ScheduledFuture task = scheduler.scheduleAtFixedRate(new Runnable() { + + @Override + public void run() { + ServiceProcessing(); + } + + }, 10, 5000, TimeUnit.MILLISECONDS); + + } + + public void ServiceProcessing(){ + synchronized(allHarvesters){ + for (HarvesterObject harvester : allHarvesters){ + updateHarvester(harvester); + } + } + synchronized(allConstructors){ + Vector removeConstructors = new Vector(); + for (InstallationObject constructor : allConstructors){ + boolean readyToBuild = checkBuildTime(constructor); + if (readyToBuild) + removeConstructors.add(constructor); + } + allConstructors.removeAll(removeConstructors); + } + } + + + public void addHarvester(SWGObject harvester){ + synchronized(allHarvesters){ + allHarvesters.add((HarvesterObject)harvester); + } + } + + public void removeHarvester(SWGObject harvester){ + synchronized(allHarvesters){ + allHarvesters.remove((HarvesterObject)harvester); + } + } + + public boolean checkBuildTime(InstallationObject installation){ + boolean value = false; + long startTime = (long) installation.getAttachment("ConstructionStart"); + if (startTime+50000){ + String[] helper = ownerName.split(" "); + ownerName = helper[0]; + } + + String maintenancePool_string = ""+(int)harvester.getMaintenanceAmount(); + int hourlyMaintenance = harvester.getMaintenanceCost(); + float totalNumberOfHours = (float)harvester.getMaintenanceAmount()/hourlyMaintenance; + float minuteFraction = ((totalNumberOfHours * 100) % 100) / 100; + int nDays = (int)totalNumberOfHours / 24; + float difference = totalNumberOfHours % 24; + int nHours = (int)difference; + int nMinutes = (int)(minuteFraction *60); + maintenancePool_string += " (" + nDays + " days, " + nHours + " hours, " + nMinutes + " minutes)"; + // Power reserves calculation + String powerReserves_string = ""+(int)harvester.getPowerLevel(); + int hourlyPower = harvester.getPowerCost(); + totalNumberOfHours = (float)harvester.getPowerLevel()/hourlyPower; + minuteFraction = ((totalNumberOfHours * 100) % 100) / 100; + nDays = (int)totalNumberOfHours / 24; + difference = totalNumberOfHours % 24; + nHours = (int)difference; + nMinutes = (int)(minuteFraction *60); + powerReserves_string += " (" + nDays + " days, " + nHours + " hours, " + nMinutes + " minutes)"; + + window.addListBoxMenuItem("@player_structure:owner_prompt" + " " + ownerName, 0); + window.addListBoxMenuItem("@player_structure:structure_public", 1); + window.addListBoxMenuItem("@player_structure:condition_prompt" + " " + target.getConditionDamage(), 2); + window.addListBoxMenuItem("@player_structure:maintenance_pool_prompt " + maintenancePool_string, 3); + window.addListBoxMenuItem("@player_structure:maintenance_rate_prompt " + harvester.getMaintenanceCost() + " cr/h", 4); // @player_structure:credits_per_hour + window.addListBoxMenuItem("@player_structure:maintenance_mods_prompt", 5); + window.addListBoxMenuItem("@player_structure:power_reserve_prompt " + powerReserves_string, 6); + window.addListBoxMenuItem("@player_structure:power_consumption_prompt " + harvester.getPowerCost() + " @player_structure:units_per_hour", 7); + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@ok"); + window.setProperty("btnCancel:Text", "@cancel"); + Vector returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void createPayMaintenanceSUIPage(SWGObject owner, TangibleObject target) { + CreatureObject creature = (CreatureObject) owner; + final HarvesterObject harvester = (HarvesterObject)target; + final SUIWindow window = core.suiService.createSUIWindow("Script.transfer", owner, target, 10); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:select_amount"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:select_maint_amount" + + "\n \n @player_structure:current_maint_pool : " + (int)harvester.getMaintenanceAmount()); + + window.setProperty("msgPayMaintenance", "transaction.txtInputFrom"); + + window.setProperty("transaction.lblFrom:Text", "@player_structure:total_funds"); + window.setProperty("transaction.lblTo:Text", "@player_structure:to_pay"); + window.setProperty("transaction.lblFrom", "@player_structure:total_funds"); + window.setProperty("transaction.lblTo", "@player_structure:to_pay"); + + window.setProperty("transaction.lblStartingFrom:Text", ""+creature.getCashCredits()); + window.setProperty("transaction.lblStartingTo:Text", "0"); + + window.setProperty("transaction:InputFrom", "555555"); + window.setProperty("transaction:InputTo", "666666"); + + window.setProperty("transaction:txtInputFrom", ""+creature.getCashCredits()); + window.setProperty("transaction:txtInputTo", "1"); + window.setProperty("transaction.txtInputFrom:Text", ""+creature.getCashCredits()); + window.setProperty("transaction.txtInputTo:Text", "" + "0"); + + window.setProperty("transaction.ConversionRatioFrom", "1"); + window.setProperty("transaction.ConversionRatioTo", "0"); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@ok"); + window.setProperty("btnCancel:Text", "@cancel"); + + Vector returnList = new Vector(); + returnList.add("transaction.txtInputFrom:Text"); + returnList.add("transaction.txtInputTo:Text"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject crafter = (CreatureObject)owner; + crafter.setCashCredits(crafter.getCashCredits() - Integer.parseInt(returnList.get(1))); + harvester.setMaintenanceAmount(harvester.getMaintenanceAmount()+Float.parseFloat(returnList.get(1))); + //String displayname = "@installation_n:"+harvester.getStfName(); + String displayname = "the structure"; + if (harvester.getCustomName()!=null) + displayname = harvester.getCustomName(); + crafter.sendSystemMessage("You successfully make a payment of " + Integer.parseInt(returnList.get(1)) + " credits to " + displayname + ".", (byte) 0); + core.suiService.closeSUIWindow(owner, 0); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject crafter = (CreatureObject)owner; + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void createRenameSUIPage(SWGObject owner, TangibleObject target) { + //updateHarvester(owner, target); + final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); + Vector returnList = new Vector(); + returnList.add("txtInput:LocalText"); + final TangibleObject outerSurveyTool = target; + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.harvesterService.handleSetName((CreatureObject)owner, (TangibleObject)outerSurveyTool,returnList.get(0)); + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + + public void createDestroySUIPage(final SWGObject owner, final TangibleObject target) { + + // "\\#32CD32 @player_structure:confirm_destruction_d3b \#" + + final HarvesterObject harvester = (HarvesterObject)target; + // harvester.getStfFilename(); installation_n .getTemplate(); + String displayname = "@installation_n:"+harvester.getStfName(); + if (harvester.getCustomName()!=null) + displayname = harvester.getCustomName(); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", displayname); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:confirm_destruction_d1 " + + "@player_structure:confirm_destruction_d2 " + + "\n \n @player_structure:confirm_destruction_d3a " + + "\\#32CD32 @player_structure:confirm_destruction_d3b \\#FFFFFF " + + "@player_structure:confirm_destruction_d4 "); + if (harvester.getConditionDamage()<20 && harvester.getMaintenanceAmount()<3000){ + window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#BB0000 @player_structure:can_redeed_no_suffix \\#FFFFFF ",1 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#32CD32 @player_structure:can_redeed_yes_suffix \\#FFFFFF ",1 ); + } + if (harvester.getConditionDamage()<20){ + window.addListBoxMenuItem("@player_structure:redeed_condition \\#BB0000 " + harvester.getConditionDamage() + " \\#FFFFFF ",1 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_condition \\#32CD32 " + harvester.getConditionDamage() + " \\#FFFFFF ",1 ); + } + if (harvester.getMaintenanceAmount()<0){ + window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#BB0000 " + (int)harvester.getMaintenanceAmount() + " \\#FFFFFF ",2 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#32CD32 " + (int)harvester.getMaintenanceAmount() + " \\#FFFFFF ",2 ); + } + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + createCodeWindow(owner, target); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void createCodeWindow(SWGObject owner, TangibleObject target) { + + // "\\#32CD32 @player_structure:confirm_destruction_d3b \#" + + final HarvesterObject harvester = (HarvesterObject)target; + // harvester.getStfFilename(); installation_n .getTemplate(); + Random rnd = new Random(); + final int confirmCode = 100000 + rnd.nextInt(900000); + final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:confirm_destruction_t"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:your_structure_prefix " + + "\\#32CD32 @player_structure:will_redeed_confirm \\#FFFFFF "+ + "@player_structure:will_redeed_suffix " + + "\n \n Code: " + confirmCode); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + returnList.add("txtInput:LocalText"); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject crafter = (CreatureObject)owner; + core.suiService.closeSUIWindow(owner, 0); + if (returnList.get(0).equals(""+confirmCode)){ + // handle creation of correct deed in player inventory + PlayerObject player = (PlayerObject) crafter.getSlottedObject("ghost"); + String deedTemplate = harvester.getDeedTemplate(); + Harvester_Deed deed = (Harvester_Deed)core.objectService.createObject(deedTemplate, owner.getPlanet()); + if(player.getLotsRemaining()+deed.getLotRequirement()>10){ + // Something went wrong or hacking attempt + crafter.sendSystemMessage("Structure can't be redeeded. Maximum lot count exceeded.",(byte)1); + return; + } + + deed.setStructureTemplate(harvester.getTemplate()); + deed.setOutputHopperCapacity(harvester.getOutputHopperCapacity()); + deed.setBER(harvester.getBER()); + deed.setSurplusMaintenance((int)harvester.getMaintenanceAmount()); + deed.setSurplusPower((int)harvester.getPowerLevel()); + deed.setAttributes(); + + SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(harvester.getObjectID()); + owner.getClient().getSession().write(destroyObjectMsg.serialize()); + core.objectService.destroyObject(harvester.getObjectID()); + + SWGObject crafterInventory = owner.getSlottedObject("inventory"); + crafterInventory.add(deed); + + if(player.getLotsRemaining()+deed.getLotRequirement()<=10) + player.setLotsRemaining(player.getLotsRemaining()+deed.getLotRequirement()); + + crafter.sendSystemMessage("@player_structure:processing_destruction",(byte)1); + crafter.sendSystemMessage("@player_structure:deed_reclaimed",(byte)1); + + } else { + crafter.sendSystemMessage("@player_structure:incorrect_destroy_code",(byte)1); + } + + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void handleOperateMachinery(CreatureObject owner, TangibleObject target) { + + HarvesterObject harvester = (HarvesterObject) target; + harvester.operateMachinery(owner); + } + + public void handleDestroy(SWGObject owner, TangibleObject target) { + + HarvesterObject harvester = (HarvesterObject) target; + // Assemble resources at that spot + // For later, it might be needed to also pass the template to differentiate liquid resources + Vector planetVector = core.resourceService.getSpawnedResourcesByPlanetAndHarvesterType(target.getPlanetId(),harvester.getHarvester_type()); + HarvesterMessageBuilder messenger = new HarvesterMessageBuilder((HarvesterObject)target); + owner.getClient().getSession().write(messenger.buildHINOBaseline7((HarvesterObject)target, planetVector)); + } + + public void handleSetName(CreatureObject owner, TangibleObject target,String name) { + + ((HarvesterObject) target).setHarvesterName(name,owner); + } + + public void handleDepositPower(SWGObject owner, TangibleObject target) { + + CreatureObject creature = (CreatureObject) owner; + final HarvesterObject harvester = (HarvesterObject) target; + int playerEnergyLevel = 0; + playerEnergyLevel = calculateTotalPlayerEnergy(creature); + + final SUIWindow window = core.suiService.createSUIWindow("Script.transfer", owner, target, 10); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:add_power"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:select_power_amount"+ + "\n \n @player_structure:current_power_value " + (int)harvester.getPowerLevel()); + window.setProperty("transaction.txtInputFrom:Text", "" + playerEnergyLevel); + window.setProperty("transaction.txtInputTo:Text", "" + "0"); + window.setProperty("transaction.lblFrom:Text", "@player_structure:total_energy"); + window.setProperty("transaction.lblTo:Text", "@player_structure:to_deposit"); + window.setProperty("transaction:InputFrom", "5555"); + window.setProperty("transaction:InputTo", "6666"); + window.setProperty("transaction.lblStartingFrom:Text", ""+playerEnergyLevel); + window.setProperty("transaction.lblStartingTo:Text", "0"); + window.setProperty("transaction.ConversionRatioFrom", "0"); + window.setProperty("transaction.ConversionRatioTo", "1"); + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@ok"); + window.setProperty("btnCancel:Text", "@cancel"); + + Vector returnList = new Vector(); + returnList.add("transaction.txtInputFrom:Text"); + returnList.add("transaction.txtInputTo:Text"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject crafter = (CreatureObject)owner; + harvester.setPowerLevel(harvester.getPowerLevel()+Integer.parseInt(returnList.get(1))); + updateEnergyInventoryContainers(crafter,Integer.parseInt(returnList.get(1))); + crafter.sendSystemMessage("You successfully deposit " + Integer.parseInt(returnList.get(1)) + " units of energy.", (byte) 0); + crafter.sendSystemMessage("Energy reserves now at " + (int)harvester.getPowerLevel() + " units.", (byte) 0); + core.suiService.closeSUIWindow(owner, 0); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public int calculateTotalPlayerEnergy(CreatureObject owner){ + // final int energy = 0; Doesn't work with generic types + int energy = 0; + final Vector energyVector = new Vector(); + TangibleObject playerInventory = (TangibleObject) owner.getSlottedObject("inventory"); + playerInventory.viewChildren(owner, false, false, new Traverser() { + @Override + public void process(SWGObject obj) { + + if (obj instanceof ResourceContainerObject){ + ResourceContainerObject container = (ResourceContainerObject) obj; + if (container.getResourceClass()==null)System.out.println("container.getResourceClass()==null " + container.getTemplate()); + if (container.getResourceClass().equals("Radioactive") || + container.getResourceClass().equals("Wind Renewable Energy") || + container.getResourceClass().equals("Solar Renewable Energy") || + container.getResourceClass().equals("Geothermal Renewable Energy") || + container.getResourceClass().equals("Tidal Renewable Energy") || + container.getResourceClass().equals("Hydron-3 Renewable Energy")) { + energyVector.add(container.getStackCount()); + } + } + } + /* + public void process(SWGObject a1) { + if(!(a1 instanceof PlayerObject) && a1 != null) { + if(a1.getClient() != null && a1 != a.this$0) { + a1.makeAware(a.this$0); + } + a.this$0.makeAware(a1); + } + } + } + */ + }); + + for (Integer value : energyVector){ + energy += value; + } + return energy; + } + + /* + * This is deducting the deposited power from the inventory + */ + public void updateEnergyInventoryContainers(SWGObject owner, int deductedEnergy){ + + final Vector containerVector = new Vector(); + TangibleObject playerInventory = (TangibleObject) owner.getSlottedObject("inventory"); + playerInventory.viewChildren(owner, false, false, new Traverser() { + @Override + public void process(SWGObject obj) { + // is energy resource? + if (obj instanceof ResourceContainerObject){ + ResourceContainerObject container = (ResourceContainerObject) obj; + if (container.getResourceClass().equals("Radioactive") || + container.getResourceClass().equals("Wind Renewable Energy") || + container.getResourceClass().equals("Solar Renewable Energy") || + container.getResourceClass().equals("Geothermal Renewable Energy") || + container.getResourceClass().equals("Tidal Renewable Energy") || + container.getResourceClass().equals("Hydron-3 Renewable Energy")) { + containerVector.add(container); + } + } + } + }); + + Comparator comp = new ResourceContainerObjectComparator(); + Collections.sort(containerVector, comp); + + for (int i=containerVector.size()-1;i >= 0; i--){ + int containerEnergy = containerVector.get(i).getStackCount(); + if (containerEnergy <= deductedEnergy){ + deductedEnergy -= containerEnergy; + playerInventory._remove(containerVector.get(i)); + SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(containerVector.get(i).getObjectID()); + owner.getClient().getSession().write(destroyObjectMsg.serialize()); + } else { + containerEnergy -= deductedEnergy; + containerVector.get(i).setStackCount(containerEnergy,(CreatureObject)owner); + playerInventory._remove(containerVector.get(i)); + playerInventory._add(containerVector.get(i)); + +// ResourceMessenger messenger = new ResourceMessenger(IoBuffer.allocate(1)); +// owner.getClient().getSession().write(messenger.serialize_buildRCNO3Delta(containerVector.get(i).getObjectID(),containerEnergy)); + } + } + } + + public class ResourceContainerObjectComparator implements Comparator { + + @Override + public int compare(ResourceContainerObject b1, ResourceContainerObject b2) { + if (b1.getStackCount() == b2.getStackCount()) { + return 0; + } + if (b1.getStackCount() > b2.getStackCount()) { + return 1; + } + if (b1.getStackCount() < b2.getStackCount()) { + return -1; + } + return 0; + } + } + + public void handlePermissionAdmin(CreatureObject owner, TangibleObject target) { + + String listName = "ADMIN"; + ((HarvesterObject) target).setPermissionAdmin(listName,owner); + } + + public void handlePermissionHopper(CreatureObject owner, TangibleObject target) { + + String listName = "HOPPER"; + ((HarvesterObject) target).setPermissionHopper(listName,owner); + } + + public void handlePermissionListModify(CreatureObject crafter, SWGObject target, String commandArgs){ + + String[] commandSplit = commandArgs.split(" "); + if (commandSplit.length==3){ + if (core.characterService.playerExists(commandSplit[2])){ + if (commandSplit[2].equals("ADMIN")){ + Vector adminList = ((HarvesterObject)target).getAdminList(); + if (commandSplit[0].equals("add") && (!adminList.contains(commandSplit[2]))){ + crafter.sendSystemMessage(commandSplit[2] + " added as administrator", (byte) 0); + adminList.add(commandSplit[2]); + ((HarvesterObject)target).setAdminList(adminList); + } + if (commandSplit[0].equals("remove") && (adminList.contains(commandSplit[2]))){ + crafter.sendSystemMessage(commandSplit[2] + " removed as administrator", (byte) 0); + adminList.remove(commandSplit[2]); + ((HarvesterObject)target).setAdminList(adminList); + } + } + if (commandSplit[2].equals("HOPPER")){ + Vector hopperList = ((HarvesterObject)target).getHopperList(); + if (commandSplit[0].equals("add") && (!hopperList.contains(commandSplit[2]))){ + crafter.sendSystemMessage(commandSplit[2] + " added as administrator", (byte) 0); + hopperList.add(commandSplit[2]); + ((HarvesterObject)target).setHopperList(hopperList); + } + if (commandSplit[0].equals("remove") && (hopperList.contains(commandSplit[2]))){ + crafter.sendSystemMessage(commandSplit[2] + " removed as administrator", (byte) 0); + hopperList.remove(commandSplit[2]); + ((HarvesterObject)target).setHopperList(hopperList); + } + } + } else { + crafter.sendSystemMessage(commandSplit[2]+ " is an invalid player name", (byte) 0); + } + } + if (commandSplit.length==2){ + crafter.sendSystemMessage("No name was entered", (byte) 0); + } + + } + + public void handleHarvesterSelectResourceCommand(CreatureObject owner, SWGObject target, String commandArgs){ + + long selectedResourceId = Long.parseLong(commandArgs); + GalacticResource resource = core.resourceService.findResourceById(selectedResourceId); + ((HarvesterObject) target).setSelectedHarvestResource(resource,owner); + } + + public void handleHarvesterActivateCommand(CreatureObject owner, SWGObject target, String commandArgs){ + + + if (((HarvesterObject)target).getPowerLevel()<=0 && !((HarvesterObject)target).isGenerator()){ + ((CreatureObject)owner).sendSystemMessage("The installation is lacking power.", (byte) 0); + return; + } + if (((HarvesterObject)target).getMaintenanceAmount()<=0){ + ((CreatureObject)owner).sendSystemMessage("The installation is lacking maintenance.", (byte) 0); + return; + } + + + ((HarvesterObject)target).activateHarvester(owner); + } + + public void handleHarvesterDeactivateCommand(CreatureObject owner, SWGObject target, String commandArgs){ + + ((HarvesterObject)target).deactivateHarvester(owner); + } + + public void handleEmptyHopper(CreatureObject owner,SWGObject target,long harvesterId, long resourceId, int stackcount, byte actionMode, byte updateCount){ + + HarvesterMessageBuilder messenger = new HarvesterMessageBuilder((HarvesterObject)target); + //DiscardResourceResponse + owner.getClient().getSession().write(messenger.buildDiscardResourceResponse((HarvesterObject)target, actionMode, updateCount,owner)); + + + ResourceContainerObject foundContainer = null; + Vector hopperContent = ((HarvesterObject) target).getOutputHopperContent(); + for (ResourceContainerObject cont : hopperContent){ + if (cont.getReferenceID()==resourceId){ + foundContainer = cont; + } + } + if (foundContainer==null) + return; // something went wrong + + if (foundContainer.getStackCount()==stackcount){ + ((HarvesterObject) target).setCurrentHarvestedCountFloat(1); + foundContainer.setStackCount(0, owner); + } else { + ((HarvesterObject) target).setCurrentHarvestedCountFloat(foundContainer.getStackCount()-stackcount); + foundContainer.setStackCount(foundContainer.getStackCount()-stackcount,owner); + } + ((HarvesterObject) target).setOutputHopperContent(hopperContent); + + // <<< + Vector planetResourcesVector = core.resourceService.getSpawnedResourcesByPlanetAndHarvesterType(target.getPlanetId(),((HarvesterObject)target).getHarvester_type()); + owner.getClient().getSession().write(messenger.buildHINOBaseline7((HarvesterObject)target, planetResourcesVector)); + owner.getClient().getSession().write(messenger.buildHINO7ExperimentalDelta2((HarvesterObject)target)); + // >> + + hopperContent = ((HarvesterObject) target).getOutputHopperContent(); + for (ResourceContainerObject cont : hopperContent){ + if (cont.getReferenceID()==resourceId){ + foundContainer = cont; + } + } + + // create retrieved resource container + GalacticResource sampleResource = core.resourceService.findResourceById(resourceId); + String resourceContainerIFF = ResourceRoot.CONTAINER_TYPE_IFF_SIGNIFIER[sampleResource.getResourceRoot().getContainerType()]; + ResourceContainerObject containerObject = (ResourceContainerObject) core.objectService.createObject(resourceContainerIFF, owner.getPlanet()); + containerObject.initializeStats(sampleResource); + containerObject.setProprietor(owner); + containerObject.setStackCount(stackcount,owner); + containerObject.setIffFileName(resourceContainerIFF); + SWGObject crafterInventory = owner.getSlottedObject("inventory"); +// containerObject.sendBaselines(owner.getClient()); +// SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(containerObject.getObjectID()); +// owner.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); +// tools.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); + crafterInventory.add(containerObject); + } + + + public void handleEmptyHarvester(CreatureObject owner, SWGObject target, String commandArgs){ + + HarvesterMessageBuilder messenger = new HarvesterMessageBuilder((HarvesterObject)target); + Vector hopperContent = ((HarvesterObject) target).getOutputHopperContent(); + Vector deleteContent = new Vector(); + + for (ResourceContainerObject cont : hopperContent){ + ResourceContainerObject foundContainer = cont; + + if (foundContainer==null) + return; // something went wrong + + long resourceId = foundContainer.getReferenceID(); + int stackcount = foundContainer.getStackCount(); + + SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(resourceId); + owner.getClient().getSession().write(destroyObjectMsg.serialize()); + + // create retrieved resource container + GalacticResource sampleResource = core.resourceService.findResourceById(resourceId); + String resourceContainerIFF = ResourceRoot.CONTAINER_TYPE_IFF_SIGNIFIER[sampleResource.getResourceRoot().getContainerType()]; + ResourceContainerObject containerObject = (ResourceContainerObject) core.objectService.createObject(resourceContainerIFF, owner.getPlanet()); + containerObject.initializeStats(sampleResource); + containerObject.setProprietor(owner); + containerObject.setStackCount(stackcount,owner); + int resCRC = CRC.StringtoCRC(resourceContainerIFF); + containerObject.setIffFileName(resourceContainerIFF); + + long objectId = containerObject.getObjectID(); + SWGObject crafterInventory = owner.getSlottedObject("inventory"); + +// SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(objectId, owner.getOrientation().x, owner.getOrientation().y, owner.getOrientation().z, owner.getOrientation().w, owner.getPosition().x, owner.getPosition().y, owner.getPosition().z, resCRC, (byte) 0); +// owner.getClient().getSession().write(createObjectMsg.serialize()); +// tools.CharonPacketUtils.printAnalysis(createObjectMsg.serialize()); +// +// containerObject.sendBaselines(owner.getClient()); +// +// SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(containerObject.getObjectID()); +// owner.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); +// tools.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); + + crafterInventory.add(containerObject); + + if (cont.getReferenceID()!=((HarvesterObject) target).getSelectedHarvestResource().getId()){ + deleteContent.add(cont); + } else { + ((HarvesterObject) target).setCurrentHarvestedCountFloat(0); + foundContainer.setStackCount(0,owner); + } + } + hopperContent.removeAll(deleteContent); + + ((HarvesterObject) target).setOutputHopperContent(hopperContent); + + Vector planetResourcesVector = core.resourceService.getSpawnedResourcesByPlanetAndHarvesterType(target.getPlanetId(),((HarvesterObject)target).getHarvester_type()); + owner.getClient().getSession().write(messenger.buildHINOBaseline7((HarvesterObject)target, planetResourcesVector)); + owner.getClient().getSession().write(messenger.buildHINO7ExperimentalDelta2((HarvesterObject)target)); + } + + public void updateHarvester(HarvesterObject harvester){ + + + if(harvester.isActivated()) + { + // Check maintenance and power + if (harvester.getMaintenanceAmount()<=0){ + CreatureObject owner = (CreatureObject)harvester.getOwner(); + owner.sendSystemMessage("The installation is lacking maintenance.", (byte) 0); + // ToDo: Send mail + harvester.deactivateHarvester(owner); + return; + } + + if (harvester.getPowerLevel()<=0 && !harvester.isGenerator()){ + CreatureObject owner = (CreatureObject)harvester.getOwner(); + owner.sendSystemMessage("The installation is lacking power.", (byte) 0); + // ToDo: Send mail + harvester.deactivateHarvester(owner); + return; + } + + harvester.setMaintenanceAmount(harvester.getMaintenanceAmount()-(harvester.getMaintenanceCost()/3600.0F)); + harvester.setPowerLevel(harvester.getPowerLevel()-(harvester.getPowerCost()/3600.0F)); + + Vector outputHopperContent = harvester.getOutputHopperContent(); + GalacticResource currentResource = harvester.getSelectedHarvestResource(); + ResourceContainerObject hopperContainer = hopperHasContainer(currentResource, outputHopperContent); + // check if output hopper contains already a container with the selected harvest resource + if(hopperContainer==null) + { + + //ResourceContainerObject container = new ResourceContainerObject(); + String resourceContainerIFF = ResourceRoot.CONTAINER_TYPE_IFF_SIGNIFIER[currentResource.getResourceRoot().getContainerType()]; + ResourceContainerObject container = (ResourceContainerObject) core.objectService.createObject(resourceContainerIFF, harvester.getPlanet()); + container.initializeStats(harvester.getSelectedHarvestResource()); + container.setStackCount(0,false); + harvester.setCurrentHarvestedCountFloat(0.0F); + outputHopperContent.add(container); + harvester.setOutputHopperContent(outputHopperContent); + harvester.createNewHopperContainer(); + + } else { + + harvester.continueHopperContainer(); + + // add harvested amount + int BER = harvester.getBER(); + //BER = 15; + float minuteRate = harvester.getActualExtractionRate(); + float updateRate = minuteRate / 60; + harvester.setCurrentHarvestedCountFloat(harvester.getCurrentHarvestedCountFloat()+updateRate); + + int oldStackCount = hopperContainer.getStackCount(); + int newStackCount = (int) (harvester.getCurrentHarvestedCountFloat()); + CreatureObject owner = (CreatureObject)harvester.getOwner(); + if (newStackCount>oldStackCount){ + for (ResourceContainerObject iterContainer : outputHopperContent){ + if (iterContainer.getReferenceID()==hopperContainer.getReferenceID()){ + iterContainer.setStackCount(newStackCount,owner); // updates collection + } + } + harvester.setOutputHopperContent(outputHopperContent); + //((CreatureObject)harvester.getOwner()).getClient().getSession().write(messenger.buildHINO7ExperimentalDelta2(harvester)); + } + harvester.setCurrentHarvestedCountFloat(harvester.getCurrentHarvestedCountFloat()+updateRate); + } + } + } + + private ResourceContainerObject hopperHasContainer(GalacticResource resource, Vector outputHopperContent){ + ResourceContainerObject container = null; + for (ResourceContainerObject iterContainer : outputHopperContent){ + if (iterContainer.getReferenceID()==resource.getId()){ + return iterContainer; + } + } + return container; + } + + + public void constructionSite(CreatureObject actor,SWGObject target, long objectId, float posX, float posZ, float dir){ + + SWGObject usedDeed = (SWGObject)actor.getAttachment("LastUsedDeed"); + String constructorTemplate = ((Harvester_Deed)usedDeed).getConstructorTemplate(); + //String structureTemplate = "object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_1.iff"; + + float positionY = core.terrainService.getHeight(actor.getPlanetId(), posX, posZ) + 2f; + Quaternion quaternion = new Quaternion(1, 0, 0, 0); + quaternion = resources.common.MathUtilities.rotateQuaternion(quaternion, (float)((Math.PI/2) * dir), new Point3D(0, 1, 0)); + InstallationObject installation = (InstallationObject) core.objectService.createObject(constructorTemplate, 0, actor.getPlanet(), new Point3D(posX, positionY, posZ), quaternion); + + + installation.setAttachment("ConstructionStart", System.currentTimeMillis()); + installation.setAttachment("Owner", actor); + installation.setAttachment("Deed_StructureTemplate", ((Harvester_Deed)usedDeed).getStructureTemplate()); + installation.setAttachment("Deed_DeedTemplate", ((Harvester_Deed)usedDeed).getTemplate()); + installation.setAttachment("Deed_BER", ((Harvester_Deed)usedDeed).getBER()); + installation.setAttachment("Deed_Capacity", ((Harvester_Deed)usedDeed).getOutputHopperCapacity()); + installation.setAttachment("Deed_DeedLots", ((Harvester_Deed)usedDeed).getLotRequirement()); + installation.setAttachment("Deed_SurplusMaintenance", ((Harvester_Deed)usedDeed).getSurplusMaintenance()); + installation.setAttachment("Deed_SurplusPower", ((Harvester_Deed)usedDeed).getSurplusPower()); + + // destroy deed + TangibleObject playerInventory = (TangibleObject) actor.getSlottedObject("inventory"); + playerInventory._remove(usedDeed); + SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(usedDeed.getObjectID()); + actor.getClient().getSession().write(destroyObjectMsg.serialize()); + + int resCRC = CRC.StringtoCRC(constructorTemplate); + SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(installation.getObjectID(), quaternion.x, quaternion.y, quaternion.z, quaternion.w, posX, positionY, posZ, resCRC, (byte) 0); + actor.getClient().getSession().write(createObjectMsg.serialize()); + tools.CharonPacketUtils.printAnalysis(createObjectMsg.serialize()); + SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(installation.getObjectID()); + actor.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); + tools.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); + + PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); + player.setLotsRemaining(player.getLotsRemaining()-(int)((Harvester_Deed)usedDeed).getLotRequirement()); + synchronized(allConstructors){ + allConstructors.add(installation); + } + } + + public void placeHarvester(SWGObject object){ + HarvesterObject.createAndPlaceHarvester(object); + } + + + public void enterStructurePlacementMode(SWGObject object, CreatureObject actor){ + + if (!core.terrainService.canBuildAtPosition(actor,actor.getPosition().x,actor.getPosition().z)){ + actor.sendSystemMessage("@player_structure:not_permitted", (byte) 0); + return; + } + + PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); + if (((Harvester_Deed)object).getLotRequirement()>player.getLotsRemaining()){ + actor.sendSystemMessage("@player_structure:not_enough_lots", (byte) 0); + return; + } + + actor.setAttachment("LastUsedDeed", object); + String structureTemplate = ((Harvester_Deed)object).getStructureTemplate(); + //String temp = "object/installation/mining_ore/shared_mining_ore_harvester_style_1.iff"; + EnterStructurePlacementModeMessage placementMsg = new EnterStructurePlacementModeMessage(actor,structureTemplate); + actor.getClient().getSession().write(placementMsg.serialize()); + } + + + public void handlePlaceStructureCommand(CreatureObject crafter, SWGObject target, String commandArgs){ + + // 511379 3516.08 -4804.08 0 + // Split Args by Delimiter + long objectId = crafter.getObjectID(); + float posX = crafter.getPosition().x; + float posZ = crafter.getPosition().z; + float dir = 0; + String[] splitter = commandArgs.split(" "); + if (splitter.length==4){ //QA + objectId = Long.parseLong(splitter[0]); + posX = Float.parseFloat(splitter[1]); + posZ = Float.parseFloat(splitter[2]); + dir = Float.parseFloat(splitter[3]); + } + + constructionSite(crafter, target, objectId, posX, posZ, dir); + } + + + // helper method to simulate a harvester deed in the player inventory + // that contains BER,cap,template info about the harvester + public void createExampleDeed(CreatureObject actor){ + + String templateString="object/tangible/deed/harvester_deed/shared_harvester_ore_s1_deed.iff"; + Harvester_Deed deed = (Harvester_Deed)core.objectService.createObject(templateString, actor.getPlanet()); + deed.setName("Example Harvester Deed"); + deed.setStructureTemplate("object/installation/mining_ore/shared_mining_ore_harvester_style_1.iff"); + deed.setOutputHopperCapacity(27344); + deed.setBER(15); + + TangibleObject playerInventory = (TangibleObject) actor.getSlottedObject("inventory"); + playerInventory.add(deed); + + deed.setParent(playerInventory); + + core.resourceService.spawnSpecificResourceContainer("Radioactive", actor, 50); + core.resourceService.spawnSpecificResourceContainer("Radioactive", actor, 501); + core.resourceService.spawnSpecificResourceContainer("Radioactive", actor, 3); + core.resourceService.spawnSpecificResourceContainer("Radioactive", actor, 66); +// core.resourceService.spawnSpecificResourceContainer("Steel", actor, 50); +// core.resourceService.spawnSpecificResourceContainer("Fiberplast", actor, 50); + + } + + + // Stress Test (Server) for many harvesters running in the service + // 200 are running fine, 400 also + public void moduleTestManyHarvesters(CreatureObject actor){ + // assuming an average number of 200 harvesters per planet + for (int i=0;i<400;i++){ + createSingleTestHarvester(actor,i); + } + } + + public void createSingleTestHarvester(CreatureObject actor,int counter){ + // determine random position + String structureTemplate = "object/installation/mining_ore/shared_mining_ore_harvester_style_1.iff"; + HarvesterObject harvester = (HarvesterObject) core.objectService.createObject(structureTemplate, actor.getPlanet()); + long objectId = harvester.getObjectID(); + Vector adminList = harvester.getAdminList(); + String[] fullName = ((CreatureObject)actor).getCustomName().split(" "); + adminList.add(fullName[0]); + harvester.setAdminList(adminList); + // Set BER and outputhopper capacity here, take it from deed + harvester.setBER(8); + harvester.setOutputHopperCapacity(27344); + harvester.setMaintenanceAmount(2993); + harvester.setMaintenanceCost(30); + harvester.setPowerLevel(14714); + harvester.setPowerCost(25); + + Random generator = new Random(); + generator = new Random(); // Exclude mountains at the edge of the maps + int spawnCoordsX = generator.nextInt(15000) - 7500; + int spawnCoordsZ = generator.nextInt(15000) - 7500; + + // build harvester + int resCRC = CRC.StringtoCRC(structureTemplate); + Quaternion quaternion = new Quaternion(1, 0, 0, 0); + quaternion = resources.common.MathUtilities.rotateQuaternion(quaternion, (float)((Math.PI/2) * 1), new Point3D(0, 1, 0)); + float positionY = core.terrainService.getHeight(actor.getPlanetId(), spawnCoordsX, spawnCoordsZ)+ 2f; + SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(objectId,quaternion.x,quaternion.y, quaternion.z, quaternion.w, spawnCoordsX, positionY, spawnCoordsZ, resCRC, (byte) 0); + actor.getClient().getSession().write(createObjectMsg.serialize()); + tools.CharonPacketUtils.printAnalysis(createObjectMsg.serialize()); + + resources.objects.installation.InstallationMessageBuilder messenger = new resources.objects.installation.InstallationMessageBuilder((InstallationObject)harvester); + actor.getClient().getSession().write(messenger.buildBaseline3((InstallationObject)harvester)); + SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(harvester.getObjectID()); + actor.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); + tools.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); + + // select resource + long selectedResourceId = core.resourceService.getAllSpawnedResources().get(51).getId(); + GalacticResource resource = core.resourceService.findResourceById(selectedResourceId); + harvester.setSelectedHarvestResource(resource,actor); + + + // activate harvester + harvester.activateHarvester(actor); + HarvesterMessageBuilder messenger2 = new HarvesterMessageBuilder(harvester); + actor.getClient().getSession().write(messenger2.buildHINO3Delta(harvester,(byte)1)); + actor.getClient().getSession().write(messenger2.buildHINO7ActivateDelta2(harvester)); + + + //create waypoint + if (counter<200){ + PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); + WaypointObject constructionWaypoint = (WaypointObject)core.objectService.createObject("object/waypoint/shared_world_waypoint_blue.iff", actor.getPlanet(), harvester.getPosition().x, 0 ,harvester.getPosition().z); + String displayname = "@installation_n:"+harvester.getStfName() + " " + counter; + constructionWaypoint.setName(displayname); + constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); + constructionWaypoint.setPosition(new Point3D(spawnCoordsX,0, spawnCoordsZ)); + player.waypointAdd(constructionWaypoint); + constructionWaypoint.setPosition(new Point3D(spawnCoordsX,0, spawnCoordsZ)); + constructionWaypoint.setActive(true); + constructionWaypoint.setColor((byte)1); + constructionWaypoint.setStringAttribute("", ""); + player.waypointAdd(constructionWaypoint); + constructionWaypoint.setName(displayname); + constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); + player.setLastSurveyWaypoint(constructionWaypoint); + } + + allHarvesters.add(harvester); + } + + @Override + public void shutdown() { + // TODO Auto-generated method stub + + } +} \ No newline at end of file diff --git a/src/services/resources/ResourceService.java b/src/services/resources/ResourceService.java index efc62fe1..4ebaa89d 100644 --- a/src/services/resources/ResourceService.java +++ b/src/services/resources/ResourceService.java @@ -28,13 +28,16 @@ import java.util.Random; import java.util.Vector; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; + import com.sleepycat.persist.EntityCursor; + import main.NGECore; import engine.resources.common.CRC; import engine.resources.objects.SWGObject; import engine.resources.service.INetworkDispatch; import engine.resources.service.INetworkRemoteEvent; import resources.objects.creature.CreatureObject; +import resources.objects.harvester.HarvesterObject; import resources.objects.resource.GalacticResource; import resources.objects.resource.ResourceContainerObject; import resources.objects.resource.ResourceRoot; @@ -11306,6 +11309,36 @@ public class ResourceService implements INetworkDispatch { return resource; } + public Vector getSpawnedResourcesByPlanetAndHarvesterType(int planetId, byte harvesterType) { + Vector planetResourceList = new Vector(); + byte searchtype = harvesterType; + if (harvesterType==7) searchtype = (byte) 0; + for (GalacticResource gal : allSpawnedResources){ + if (gal.isSpawnedOn(planetId) && gal.getGeneralType()==searchtype) + if (harvesterType!=HarvesterObject.HARVESTER_TYPE_FUSION) + planetResourceList.add(gal); + else if (harvesterType==HarvesterObject.HARVESTER_TYPE_FUSION) { + System.err.println("gal.getContainerType() " + gal.getContainerType()); + if (gal.getResourceRoot().getContainerType()==ResourceRoot.CONTAINER_TYPE_ENERGY_RADIOACTIVE) + planetResourceList.add(gal); + } else if (harvesterType==HarvesterObject.HARVESTER_TYPE_GEO) { + System.err.println("gal.getContainerType() " + gal.getContainerType()); + if (gal.getGeneralType()==GalacticResource.GENERAL_GEOTHERM) + planetResourceList.add(gal); + } + } + return planetResourceList; + } + + public GalacticResource findResourceById(long id){ + GalacticResource resource = new GalacticResource(); + for (GalacticResource sampleResource : allSpawnedResources){ + if (sampleResource.getId()==id) + return sampleResource; + } + return resource; + } + // ToDo: Improve public GalacticResource grabMeatForCreature(CreatureObject corpse){ GalacticResource resource = null; diff --git a/src/services/sui/SUIService.java b/src/services/sui/SUIService.java index eb853838..b49cf67f 100644 --- a/src/services/sui/SUIService.java +++ b/src/services/sui/SUIService.java @@ -46,6 +46,7 @@ import resources.common.FileUtilities; import resources.common.ObjControllerOpcodes; import resources.common.Opcodes; import resources.common.RadialOptions; +import resources.objects.harvester.HarvesterObject; import services.sui.SUIWindow.SUICallback; import services.sui.SUIWindow.Trigger; import engine.clients.Client; @@ -81,6 +82,26 @@ public class SUIService implements INetworkDispatch { if(target == null || owner == null) return; + if (target instanceof HarvesterObject){ + HarvesterObject harvester = (HarvesterObject) target; + Vector admins = harvester.getAdminList(); + Vector hoppers = harvester.getHopperList(); + + if (harvester.getOwner()==owner && !admins.contains(owner.getCustomName())){ + admins.add(owner.getCustomName()); + } + + if (! admins.contains(owner.getCustomName()) && ! hoppers.contains(owner.getCustomName())){ + return; // Completely unauthorized + } + + if (! admins.contains(owner.getCustomName()) && hoppers.contains(owner.getCustomName())){ + // authorized for hopper + // change radialOptions to hopper access + harvester.setAttachment("radial_filename", "harvesterHopper"); + } + } + if(target.getGrandparent() != null && target.getGrandparent().getAttachment("structureAdmins") != null) { if(core.housingService.getPermissions(owner, target.getContainer())) From 3ccbfcc3c935145e763a96b8212917a0b83e4fa5 Mon Sep 17 00:00:00 2001 From: Waverunner Date: Thu, 10 Apr 2014 20:03:48 -0400 Subject: [PATCH 52/79] Added SWG, Server, and other parent channels --- src/services/SimulationService.java | 4 +++- src/services/TerrainService.java | 1 + src/services/chat/ChatService.java | 33 ++++++++++++++------------ src/services/object/ObjectService.java | 1 - 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/services/SimulationService.java b/src/services/SimulationService.java index 22b30882..9e8096e6 100644 --- a/src/services/SimulationService.java +++ b/src/services/SimulationService.java @@ -809,7 +809,9 @@ public class SimulationService implements INetworkDispatch { PlayerObject ghost = (PlayerObject) object.getSlottedObject("ghost"); core.weatherService.sendWeather(object); - + + //core.chatService.joinChatRoom(object.getCustomName().toLowerCase(), "SWG." + core.getGalaxyName() + "." + object.getPlanet().getName()); + if (!object.hasSkill(ghost.getProfessionWheelPosition())) { object.showFlyText("cbt_spam", "skill_up", (float) 2.5, new RGB(154, 205, 50), 0); object.playEffectObject("clienteffect/skill_granted.cef", ""); diff --git a/src/services/TerrainService.java b/src/services/TerrainService.java index 497477db..ddc66042 100644 --- a/src/services/TerrainService.java +++ b/src/services/TerrainService.java @@ -176,6 +176,7 @@ public class TerrainService { noBuildAreas.put(planet, new ArrayList()); loadClientRegions(planet); + core.chatService.createChatRoom("", name, "system", true); core.chatService.createChatRoom("public chat for this planet, cannot create rooms here", name + ".Planet", "SYSTEM", true); core.chatService.createChatRoom("system messages for this planet, cannot create rooms here", name + ".system", "SYSTEM", true); diff --git a/src/services/chat/ChatService.java b/src/services/chat/ChatService.java index 4175d886..dbaea263 100644 --- a/src/services/chat/ChatService.java +++ b/src/services/chat/ChatService.java @@ -738,8 +738,11 @@ public class ChatService implements INetworkDispatch { * TODO: Research other channel address formats */ - ChatRoom system = createChatRoom("", "system", "system", true); - System.out.println("Created chat room " + system.getRoomAddress()); + createChatRoom("", "SWG", "system", true); + createChatRoom("", "SWG." + core.getGalaxyName(), "system", true); + + createChatRoom("", "system", "system", true); // galaxy system messages + createChatRoom("", "Auction", "system", true); //createChatRoom("Bounty Hunter chat for this galaxy", "BountyHunter", "SYSTEM", true); //createChatRoom("Commando chat for this galaxy", "Commando", "SYSTEM", true); @@ -751,23 +754,23 @@ public class ChatService implements INetworkDispatch { cursor.close(); } - public ChatRoom createChatRoom(String roomName, String address, String creator, boolean showInList) { - return createChatRoom(roomName, address, creator, showInList, false); + public ChatRoom createChatRoom(String roomName, String address, String creator, boolean isPublic) { + return createChatRoom(roomName, address, creator, isPublic, false); } - public ChatRoom createChatRoom(String roomName, String address, String creator, boolean showInList, boolean store) { + public ChatRoom createChatRoom(String roomName, String address, String creator, boolean isPublic, boolean store) { if (creator.contains(" ")) creator = creator.split(" ")[0]; ChatRoom room = new ChatRoom(); room.setDescription(roomName); - if (!address.startsWith("SWG.")) + if (!address.startsWith("SWG")) room.setRoomAddress("SWG." + core.getGalaxyName() + "." + address); else room.setRoomAddress(address); room.setCreator(creator.toLowerCase()); room.setOwner(creator.toLowerCase()); - room.setVisible(showInList); + room.setVisible(isPublic); room.setRoomId(generateChatRoomId()); chatRooms.put(room.getRoomId(), room); @@ -784,13 +787,13 @@ public class ChatService implements INetworkDispatch { public boolean joinChatRoom(String user, String roomAddress) { chatRooms.forEach((k, v) -> { if (v.getRoomAddress().equals(roomAddress)) { - joinChatRoom(user, k); + joinChatRoom(user, k, true); return; } }); return false; } - public boolean joinChatRoom(String user, int roomId) { + public boolean joinChatRoom(String user, int roomId, boolean resendList) { if (user.contains(" ")) user = user.split(" ")[0]; @@ -802,7 +805,7 @@ public class ChatService implements INetworkDispatch { if (!room.hasUser(user.toLowerCase())) { room.addUser(user.toLowerCase()); - if (!room.isVisible()) { + if (!room.isVisible() || resendList) { CreatureObject creo = (CreatureObject) getObjectByFirstName(user); if (creo != null) { ChatRoomList listMessage = new ChatRoomList(room); @@ -810,16 +813,16 @@ public class ChatService implements INetworkDispatch { } } ChatOnEnteredRoom enterRoom = new ChatOnEnteredRoom(user, 0, roomId, true); - - room.getUserList().stream().forEach(str -> { - SWGObject userObj = getObjectByFirstName(str); - userObj.getClient().getSession().write(enterRoom.serialize()); - }); + getObjectByFirstName(user).getClient().getSession().write(enterRoom.serialize()); + //System.out.println("Sent message for room " + room.getRoomAddress()); return true; } return false; } + public boolean joinChatRoom(String user, int roomId) { + return joinChatRoom(user, roomId, false); + } public void leaveChatRoom(CreatureObject player, int roomId) { String playerName = player.getCustomName().toLowerCase(); diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index 61aba9b9..e193e791 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -833,7 +833,6 @@ public class ObjectService implements INetworkDispatch { if(!core.getConfig().getString("MOTD").equals("")) creature.sendSystemMessage(core.getConfig().getString("MOTD"), (byte) 2); - core.chatService.joinChatRoom(creature.getCustomName().toLowerCase(), "SWG." + core.getGalaxyName() + "." + creature.getPlanet().getName() + ".Planet"); core.playerService.postZoneIn(creature); } From 5854eaea00efd6e3c0ab49baa17212ec8637287d Mon Sep 17 00:00:00 2001 From: Waverunner Date: Thu, 10 Apr 2014 14:44:27 -0400 Subject: [PATCH 53/79] Refactored ChatRoom to store Strings for lists instead of CreatureObject --- .../swg/chat/ChatQueryRoomResults.java | 18 +++---- src/services/chat/ChatRoom.java | 54 +++++++++++-------- src/services/chat/ChatService.java | 30 +++++------ 3 files changed, 56 insertions(+), 46 deletions(-) diff --git a/src/protocol/swg/chat/ChatQueryRoomResults.java b/src/protocol/swg/chat/ChatQueryRoomResults.java index da760c20..33d29f77 100644 --- a/src/protocol/swg/chat/ChatQueryRoomResults.java +++ b/src/protocol/swg/chat/ChatQueryRoomResults.java @@ -54,37 +54,37 @@ public class ChatQueryRoomResults extends SWGMessage { buffer.putShort((short) 7); buffer.putInt(0xC4DE864E); - Vector users = room.getUserList(); + Vector users = room.getUserList(); buffer.putInt(users.size()); if (users.size() > 0) { - for (CreatureObject creo : users) { + for (String str : users) { buffer.put(getAsciiString("SWG")); buffer.put(getAsciiString(server)); - buffer.put(getAsciiString(creo.getCustomName())); + buffer.put(getAsciiString(str)); } } buffer.putInt(0); // TODO: Invited list for chat rooms - Vector moderators = room.getModeratorList(); + Vector moderators = room.getModeratorList(); buffer.putInt(moderators.size()); if (moderators.size() > 0) { - for (CreatureObject creo : users) { + for (String str : moderators) { buffer.put(getAsciiString("SWG")); buffer.put(getAsciiString(server)); - buffer.put(getAsciiString(creo.getCustomName())); + buffer.put(getAsciiString(str)); } } - Vector banned = room.getBanList(); + Vector banned = room.getBanList(); buffer.putInt(banned.size()); if (banned.size() > 0) { - for (CreatureObject creo : users) { + for (String str : banned) { buffer.put(getAsciiString("SWG")); buffer.put(getAsciiString(server)); - buffer.put(getAsciiString(creo.getCustomName())); + buffer.put(getAsciiString(str)); } } diff --git a/src/services/chat/ChatRoom.java b/src/services/chat/ChatRoom.java index a2428907..d489e3e1 100644 --- a/src/services/chat/ChatRoom.java +++ b/src/services/chat/ChatRoom.java @@ -37,10 +37,10 @@ public class ChatRoom { private int roomId; private String roomAddress; // name - private Vector moderatorList = new Vector(); - private Vector banList = new Vector(); + private Vector moderatorList = new Vector(); + private Vector banList = new Vector(); @NotPersistent - private Vector userList = new Vector(); // current users + private Vector userList = new Vector(); // current users private boolean moderatorsOnly; private boolean privateRoom; @@ -50,9 +50,9 @@ public class ChatRoom { public String getCreator() { return creator; } - + public void setCreator(String creator) { - this.creator = creator; + this.creator = creator.toLowerCase(); } public String getRoomAddress() { @@ -71,22 +71,14 @@ public class ChatRoom { this.roomId = roomId; } - public Vector getModeratorList() { + public Vector getModeratorList() { return moderatorList; } - public void setModeratorList(Vector moderatorList) { - this.moderatorList = moderatorList; - } - - public Vector getUserList() { + public Vector getUserList() { return userList; } - public void setUserList(Vector userList) { - this.userList = userList; - } - public boolean isModeratorsOnly() { return moderatorsOnly; } @@ -108,17 +100,13 @@ public class ChatRoom { } public void setOwner(String owner) { - this.owner = owner; + this.owner = owner.toLowerCase(); } - public Vector getBanList() { + public Vector getBanList() { return banList; } - public void setBanList(Vector banList) { - this.banList = banList; - } - public String getDescription() { return description; } @@ -134,4 +122,28 @@ public class ChatRoom { public void setVisible(boolean visible) { this.visible = visible; } + + public void addUser(String user) { + userList.add(user.toLowerCase()); + } + + public void addModerator(String moderator) { + moderatorList.add(moderator.toLowerCase()); + } + + public void banUser(String user) { + banList.add(user.toLowerCase()); + } + + public boolean hasUser(String user) { + return userList.contains(user.toLowerCase()); + } + + public boolean hasModerator(String moderator) { + return moderatorList.contains(moderator.toLowerCase()); + } + + public boolean hasBan(String user) { + return banList.contains(user.toLowerCase()); + } } diff --git a/src/services/chat/ChatService.java b/src/services/chat/ChatService.java index 06afbab6..06844115 100644 --- a/src/services/chat/ChatService.java +++ b/src/services/chat/ChatService.java @@ -451,7 +451,7 @@ public class ChatService implements INetworkDispatch { ChatEnterRoomById sentPacket = new ChatEnterRoomById(); sentPacket.deserialize(data); - joinChatRoom((CreatureObject) obj, sentPacket.getRoomId()); + joinChatRoom(obj.getCustomName(), sentPacket.getRoomId()); //System.out.println("Entering room... " + sentPacket.getRoomId()); @@ -763,24 +763,25 @@ public class ChatService implements INetworkDispatch { return room; } - public void joinChatRoom(CreatureObject player, int roomId) { + public void joinChatRoom(String user, int roomId) { - String playerName = player.getCustomName().toLowerCase(); - - if (playerName.contains(" ")) - playerName = playerName.split(" ")[0]; + if (user.contains(" ")) + user = user.split(" ")[0]; ChatRoom room = getChatRoom(roomId); if (room == null) return; - ChatOnEnteredRoom enterRoom = new ChatOnEnteredRoom(playerName, 0, roomId, true); - - if (!room.getUserList().contains(player)) - room.getUserList().add(player); - - room.getUserList().stream().forEach(user -> user.getClient().getSession().write(enterRoom.serialize())); + if (!room.hasUser(user)) { + ChatOnEnteredRoom enterRoom = new ChatOnEnteredRoom(user, 0, roomId, true); + room.addUser(user); + + room.getUserList().stream().forEach(str -> { + SWGObject userObj = getObjectByFirstName(str); + if (userObj != null) { userObj.getClient().getSession().write(enterRoom.serialize()); } + }); + } } public void leaveChatRoom(CreatureObject player, int roomId) { @@ -815,11 +816,8 @@ public class ChatService implements INetworkDispatch { sender.getClient().getSession().write(onSend.serialize()); ChatRoomMessage roomMessage = new ChatRoomMessage(roomId, senderName, message); - Vector users = room.getUserList(); + Vector users = room.getUserList(); - for (CreatureObject user : users) { - user.getClient().getSession().write(roomMessage.serialize()); - } } public ConcurrentHashMap getChatRooms() { From a676fbf63b8754a9a5e5a78ce8c27afbb2c56308 Mon Sep 17 00:00:00 2001 From: Waverunner Date: Thu, 10 Apr 2014 15:32:45 -0400 Subject: [PATCH 54/79] Fixed null error on startup --- nge.cfg | 1 - src/main/NGECore.java | 9 +++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/nge.cfg b/nge.cfg index 6d4d88df..036d6202 100644 --- a/nge.cfg +++ b/nge.cfg @@ -13,5 +13,4 @@ GALAXY_ID=2 GALAXY_NAME=Local Connection XPMULTIPLIER=1.0 MAXNUMBEROFCHARACTERS=2 -LOAD.RESOURCE.SYSTEM=1 MOTD=Welcome to PSWG Test Center! \ No newline at end of file diff --git a/src/main/NGECore.java b/src/main/NGECore.java index 02469dff..b081dc0b 100644 --- a/src/main/NGECore.java +++ b/src/main/NGECore.java @@ -240,6 +240,11 @@ public class NGECore { if (!(config.loadConfigFile())) { config = DefaultConfig.getConfig(); } + + Config options = new Config(); + options.setFilePath("options.cfg"); + boolean optionsConfigLoaded = options.loadConfigFile(); + // Database databaseConnection = new DatabaseConnection(); databaseConnection.connect(config.getString("DB.URL"), config.getString("DB.NAME"), config.getString("DB.USER"), config.getString("DB.PASS"), "postgresql"); @@ -309,7 +314,7 @@ public class NGECore { aiService = new AIService(this); //missionService = new MissionService(this); - if (config.getInt("LOAD.RESOURCE.SYSTEM") == 1) { + if (optionsConfigLoaded && options.getInt("LOAD.RESOURCE.SYSTEM") == 1) { surveyService = new SurveyService(this); resourceService = new ResourceService(this); } @@ -413,7 +418,7 @@ public class NGECore { objectService.loadBuildings(); - if (config.getInt("LOAD.RESOURCE.SYSTEM") == 1) { + if (optionsConfigLoaded && options.getInt("LOAD.RESOURCE.SYSTEM") > 0) { objectService.loadResourceRoots(); objectService.loadResources(); } From beeada3e8741bb8e188b9b6d43dfd7724513e0a7 Mon Sep 17 00:00:00 2001 From: Seefo Date: Thu, 10 Apr 2014 17:38:37 -0400 Subject: [PATCH 55/79] Fixed an issue where killing an NPC did not set you as the killer object --- src/services/combat/CombatService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/services/combat/CombatService.java b/src/services/combat/CombatService.java index 1f455338..f8cbb7fc 100644 --- a/src/services/combat/CombatService.java +++ b/src/services/combat/CombatService.java @@ -191,7 +191,9 @@ public class CombatService implements INetworkDispatch { { defender.removeDefender(creature); creature.removeDefender(defender); - } + } + + if(((CreatureObject) target).getPlayerObject() == null) target.setKiller(attacker); } } else if(target instanceof TangibleObject) From 8c76695a9fdc76feaf24f39f859176e5ed1922e2 Mon Sep 17 00:00:00 2001 From: Waverunner Date: Thu, 10 Apr 2014 18:13:45 -0400 Subject: [PATCH 56/79] Added chat channels for all planets (system and planetary chat) --- src/protocol/swg/chat/ChatRoomList.java | 59 ++++++++++++------ src/protocol/swg/chat/ChatServerStatus.java | 2 + src/protocol/swg/chat/VoiceChatStatus.java | 47 +++++++++++++++ src/services/TerrainService.java | 5 ++ src/services/chat/ChatRoom.java | 1 - src/services/chat/ChatService.java | 66 ++++++++++++++++----- src/services/object/ObjectService.java | 24 ++++---- 7 files changed, 159 insertions(+), 45 deletions(-) create mode 100644 src/protocol/swg/chat/VoiceChatStatus.java diff --git a/src/protocol/swg/chat/ChatRoomList.java b/src/protocol/swg/chat/ChatRoomList.java index b183b140..3021f72f 100644 --- a/src/protocol/swg/chat/ChatRoomList.java +++ b/src/protocol/swg/chat/ChatRoomList.java @@ -34,11 +34,16 @@ import services.chat.ChatRoom; public class ChatRoomList extends SWGMessage { private ConcurrentHashMap chatRooms; + private ChatRoom room; public ChatRoomList(ConcurrentHashMap chatRooms) { this.chatRooms = chatRooms; } + public ChatRoomList(ChatRoom room) { + this.room = room; + } + @Override public void deserialize(IoBuffer data) { @@ -53,24 +58,42 @@ public class ChatRoomList extends SWGMessage { buffer.putShort((short) 2); buffer.putInt(0x70DEB197); - buffer.putInt(chatRooms.size()); - chatRooms.forEach((key, value) -> { - if (value.isVisible()) { - buffer.putInt(value.getRoomId()); - buffer.putInt((int) ((value.isPrivateRoom() ? 1 : 0))); - buffer.put((byte) ((value.isModeratorsOnly() ? 1 : 0))); - buffer.put(getAsciiString(value.getRoomAddress())); - buffer.put(getAsciiString("SWG")); - buffer.put(getAsciiString(server)); - buffer.put(getAsciiString(value.getOwner())); - buffer.put(getAsciiString("SWG")); - buffer.put(getAsciiString(server)); - buffer.put(getAsciiString(value.getCreator())); - buffer.put(getUnicodeString(value.getDescription())); - buffer.putInt(0); // moderator list (not used by client) - buffer.putInt(0); // user list (not used by client) - } - }); + if (room != null) { + buffer.putInt(1); + + buffer.putInt(room.getRoomId()); + buffer.putInt((int) ((room.isPrivateRoom() ? 1 : 0))); + buffer.put((byte) ((room.isModeratorsOnly() ? 1 : 0))); + buffer.put(getAsciiString(room.getRoomAddress())); + buffer.put(getAsciiString("SWG")); + buffer.put(getAsciiString(server)); + buffer.put(getAsciiString(room.getOwner())); + buffer.put(getAsciiString("SWG")); + buffer.put(getAsciiString(server)); + buffer.put(getAsciiString(room.getCreator())); + buffer.put(getUnicodeString(room.getDescription())); + buffer.putInt(0); // moderator list (not used by client) + buffer.putInt(0); // user list (not used by client) + } else { + buffer.putInt(chatRooms.size()); + chatRooms.forEach((key, value) -> { + if (value.isVisible()) { + buffer.putInt(value.getRoomId()); + buffer.putInt((int) ((value.isPrivateRoom() ? 1 : 0))); + buffer.put((byte) ((value.isModeratorsOnly() ? 1 : 0))); + buffer.put(getAsciiString(value.getRoomAddress())); + buffer.put(getAsciiString("SWG")); + buffer.put(getAsciiString(server)); + buffer.put(getAsciiString(value.getOwner())); + buffer.put(getAsciiString("SWG")); + buffer.put(getAsciiString(server)); + buffer.put(getAsciiString(value.getCreator())); + buffer.put(getUnicodeString(value.getDescription())); + buffer.putInt(0); // moderator list (not used by client) + buffer.putInt(0); // user list (not used by client) + } + }); + } buffer.flip(); //StringUtilities.printBytes(buffer.array()); return buffer; diff --git a/src/protocol/swg/chat/ChatServerStatus.java b/src/protocol/swg/chat/ChatServerStatus.java index a867a244..2de0db65 100644 --- a/src/protocol/swg/chat/ChatServerStatus.java +++ b/src/protocol/swg/chat/ChatServerStatus.java @@ -29,6 +29,8 @@ import protocol.swg.SWGMessage; public class ChatServerStatus extends SWGMessage { + public ChatServerStatus() { } + @Override public void deserialize(IoBuffer data) { } diff --git a/src/protocol/swg/chat/VoiceChatStatus.java b/src/protocol/swg/chat/VoiceChatStatus.java new file mode 100644 index 00000000..97936a19 --- /dev/null +++ b/src/protocol/swg/chat/VoiceChatStatus.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package protocol.swg.chat; + +import java.nio.ByteOrder; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class VoiceChatStatus extends SWGMessage { + + public VoiceChatStatus() { } + + @Override + public void deserialize(IoBuffer data) { + } + + @Override + public IoBuffer serialize() { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.putShort((short) 2); + buffer.putInt(0x9E601905); + buffer.putInt(1); + return buffer.flip(); + } + +} diff --git a/src/services/TerrainService.java b/src/services/TerrainService.java index c8b3aaf5..497477db 100644 --- a/src/services/TerrainService.java +++ b/src/services/TerrainService.java @@ -175,6 +175,11 @@ public class TerrainService { core.mapService.addPlanet(planet); noBuildAreas.put(planet, new ArrayList()); loadClientRegions(planet); + + core.chatService.createChatRoom("public chat for this planet, cannot create rooms here", name + ".Planet", "SYSTEM", true); + core.chatService.createChatRoom("system messages for this planet, cannot create rooms here", name + ".system", "SYSTEM", true); + + System.out.println("Created chat rooms for " + name); } diff --git a/src/services/chat/ChatRoom.java b/src/services/chat/ChatRoom.java index d489e3e1..1cc7f2a2 100644 --- a/src/services/chat/ChatRoom.java +++ b/src/services/chat/ChatRoom.java @@ -23,7 +23,6 @@ package services.chat; import java.util.Vector; -import resources.objects.creature.CreatureObject; import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.NotPersistent; diff --git a/src/services/chat/ChatService.java b/src/services/chat/ChatService.java index 06844115..4175d886 100644 --- a/src/services/chat/ChatService.java +++ b/src/services/chat/ChatService.java @@ -24,6 +24,7 @@ package services.chat; import java.nio.ByteOrder; import java.util.Date; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Random; import java.util.Vector; @@ -40,6 +41,7 @@ import engine.resources.config.Config; import engine.resources.config.DefaultConfig; import engine.resources.database.ObjectDatabase; import engine.resources.objects.SWGObject; +import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.service.INetworkDispatch; import engine.resources.service.INetworkRemoteEvent; @@ -48,6 +50,7 @@ import resources.objects.creature.CreatureObject; import resources.objects.player.PlayerObject; import protocol.swg.AddIgnoreMessage; import protocol.swg.ObjControllerMessage; +import protocol.swg.chat.ChatCreateRoom; import protocol.swg.chat.ChatDeletePersistentMessage; import protocol.swg.chat.ChatEnterRoomById; import protocol.swg.chat.ChatFriendsListUpdate; @@ -55,6 +58,7 @@ import protocol.swg.chat.ChatInstantMessageToCharacter; import protocol.swg.chat.ChatInstantMessagetoClient; import protocol.swg.chat.ChatOnAddFriend; import protocol.swg.chat.ChatOnChangeFriendStatus; +import protocol.swg.chat.ChatOnCreateRoom; import protocol.swg.chat.ChatOnEnteredRoom; import protocol.swg.chat.ChatOnSendInstantMessage; import protocol.swg.chat.ChatOnSendPersistentMessage; @@ -65,6 +69,7 @@ import protocol.swg.chat.ChatRequestPersistentMessage; import protocol.swg.chat.ChatRoomList; import protocol.swg.chat.ChatRoomMessage; import protocol.swg.chat.ChatSendToRoom; +import protocol.swg.chat.ChatServerStatus; import protocol.swg.chat.ChatSystemMessage; import protocol.swg.objectControllerObjects.PlayerEmote; import protocol.swg.objectControllerObjects.SpatialChat; @@ -359,11 +364,10 @@ public class ChatService implements INetworkDispatch { if (obj == null) return; - //ChatServerStatus chatServerStatus = new ChatServerStatus(); - //client.getSession().write(chatServerStatus.serialize()); - ChatRoomList listMessage = new ChatRoomList(chatRooms); client.getSession().write(listMessage.serialize()); + + //System.out.println("Sent the room request responses."); } }); @@ -391,11 +395,13 @@ public class ChatService implements INetworkDispatch { if (room != null) { room.setPrivateRoom(sentPacket.isPrivacy()); room.setModeratorsOnly(sentPacket.isModeratorOnly()); - room.getUserList().add(creo); - room.getModeratorList().add(creo); + room.addUser(creo.getCustomName()); + room.addModerator(creo.getCustomName()); ChatOnCreateRoom response = new ChatOnCreateRoom(room, 0, sentPacket.getRequest()); session.write(response.serialize()); - }*/ + } + + System.out.println("Created room.");*/ }); @@ -417,6 +423,7 @@ public class ChatService implements INetworkDispatch { }); swgOpcodes.put(Opcodes.ChatSendToRoom, (session, data) -> { + //System.out.println("send to room!"); Client client = core.getClient(session); if(client == null) @@ -723,8 +730,19 @@ public class ChatService implements INetworkDispatch { } private void loadChatRooms() { - ChatRoom system = createChatRoom("", "Chat", "system", true); - chatRooms.put(system.getRoomId(), system); + + /* + * Battlefields channel format: + * SWG.serverName.battlefield.bfMapName + * + * TODO: Research other channel address formats + */ + + ChatRoom system = createChatRoom("", "system", "system", true); + System.out.println("Created chat room " + system.getRoomAddress()); + + //createChatRoom("Bounty Hunter chat for this galaxy", "BountyHunter", "SYSTEM", true); + //createChatRoom("Commando chat for this galaxy", "Commando", "SYSTEM", true); EntityCursor cursor = chatRoomsODB.getCursor(Integer.class, ChatRoom.class); cursor.forEach(room -> { @@ -763,25 +781,43 @@ public class ChatService implements INetworkDispatch { return room; } - public void joinChatRoom(String user, int roomId) { + public boolean joinChatRoom(String user, String roomAddress) { + chatRooms.forEach((k, v) -> { + if (v.getRoomAddress().equals(roomAddress)) { + joinChatRoom(user, k); + return; + } + }); + return false; + } + public boolean joinChatRoom(String user, int roomId) { if (user.contains(" ")) user = user.split(" ")[0]; ChatRoom room = getChatRoom(roomId); if (room == null) - return; - - if (!room.hasUser(user)) { + return false; + if (!room.hasUser(user.toLowerCase())) { + room.addUser(user.toLowerCase()); + + if (!room.isVisible()) { + CreatureObject creo = (CreatureObject) getObjectByFirstName(user); + if (creo != null) { + ChatRoomList listMessage = new ChatRoomList(room); + creo.getClient().getSession().write(listMessage.serialize()); + } + } ChatOnEnteredRoom enterRoom = new ChatOnEnteredRoom(user, 0, roomId, true); - room.addUser(user); - + room.getUserList().stream().forEach(str -> { SWGObject userObj = getObjectByFirstName(str); - if (userObj != null) { userObj.getClient().getSession().write(enterRoom.serialize()); } + userObj.getClient().getSession().write(enterRoom.serialize()); }); + return true; } + return false; } public void leaveChatRoom(CreatureObject player, int roomId) { diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index 816d910b..61aba9b9 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -72,6 +72,7 @@ import protocol.swg.chat.ChatOnConnectAvatar; import protocol.swg.chat.ChatOnGetFriendsList; import protocol.swg.chat.ChatRoomList; import protocol.swg.chat.ChatServerStatus; +import protocol.swg.chat.VoiceChatStatus; import protocol.swg.objectControllerObjects.UiPlayEffect; import engine.clientdata.ClientFileManager; import engine.clientdata.visitors.CrcStringTableVisitor; @@ -752,7 +753,7 @@ public class ObjectService implements INetworkDispatch { objectList.put(object.getObjectID(), object); } - }); + }); if(creature.getParentId() != 0) { SWGObject parent = getObject(creature.getParentId()); @@ -778,25 +779,25 @@ public class ObjectService implements INetworkDispatch { CmdStartScene startScene = new CmdStartScene((byte) 0, objectId, creature.getPlanet().getPath(), creature.getTemplate(), position.x, position.y, position.z, core.getGalacticTime(), 0); session.write(startScene.serialize()); + ChatServerStatus chatServerStatus = new ChatServerStatus(); + client.getSession().write(chatServerStatus.serialize()); + + VoiceChatStatus voiceStatus = new VoiceChatStatus(); + client.getSession().write(voiceStatus.serialize()); + ParametersMessage parameters = new ParametersMessage(); session.write(parameters.serialize()); - creature.makeAware(core.guildService.getGuildObject()); + ChatOnConnectAvatar chatConnect = new ChatOnConnectAvatar(); + creature.getClient().getSession().write(chatConnect.serialize()); + + creature.makeAware(core.guildService.getGuildObject()); core.chatService.loadMailHeaders(client); core.simulationService.handleZoneIn(client); creature.makeAware(creature); - ChatServerStatus chatStatus = new ChatServerStatus(); - creature.getClient().getSession().write(chatStatus.serialize()); - - ChatOnConnectAvatar chatConnect = new ChatOnConnectAvatar(); - creature.getClient().getSession().write(chatConnect.serialize()); - - ChatRoomList chatRooms = new ChatRoomList(core.chatService.getChatRooms()); - creature.getClient().getSession().write(chatRooms.serialize()); - //ChatOnGetFriendsList friendsListMessage = new ChatOnGetFriendsList(ghost); //client.getSession().write(friendsListMessage.serialize()); @@ -832,6 +833,7 @@ public class ObjectService implements INetworkDispatch { if(!core.getConfig().getString("MOTD").equals("")) creature.sendSystemMessage(core.getConfig().getString("MOTD"), (byte) 2); + core.chatService.joinChatRoom(creature.getCustomName().toLowerCase(), "SWG." + core.getGalaxyName() + "." + creature.getPlanet().getName() + ".Planet"); core.playerService.postZoneIn(creature); } From a1370a9b6039f8c019121d2defc6c3618223c265 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Fri, 11 Apr 2014 01:48:27 +0200 Subject: [PATCH 57/79] Harvesters introduced Working harvesters and generators Big update --- scripts/commands/harvesteractivate.py | 10 + scripts/commands/harvesterdeactivate.py | 10 + scripts/commands/harvesterdiscardhopper.py | 11 + scripts/commands/harvesterselectresource.py | 10 + scripts/commands/permissionlistmodify.py | 10 + scripts/commands/placestructure.py | 8 +- scripts/commands/resourceemptyhopper.py | 10 + .../power_generator_fusion_style_1.py | 4 + .../power_generator_geothermal_style_1.py | 4 + .../power_generator_photo_bio_style_1.py | 4 + .../power_generator_solar_style_1.py | 4 + .../power_generator_wind_style_1.py | 4 + .../mining_gas_harvester_style_1.py | 4 + .../mining_gas_harvester_style_2.py | 4 + .../mining_gas_harvester_style_3.py | 4 + .../mining_gas_harvester_style_4.py | 4 + .../mining_liquid_harvester_style_1.py | 4 + .../mining_liquid_harvester_style_2.py | 4 + .../mining_liquid_harvester_style_3.py | 4 + .../mining_liquid_harvester_style_4.py | 4 + .../mining_liquid_moisture_harvester.py | 4 + .../mining_liquid_moisture_harvester_elite.py | 4 + .../mining_liquid_moisture_harvester_heavy.py | 4 + ...mining_liquid_moisture_harvester_medium.py | 4 + .../mining_ore/mining_ore_harvester_elite.py | 4 + .../mining_ore/mining_ore_harvester_heavy.py | 4 + .../mining_ore_harvester_style_1.py | 4 + .../mining_ore_harvester_style_2.py | 4 + .../mining_organic_flora_farm.py | 4 + .../mining_organic_flora_farm_elite.py | 4 + .../mining_organic_flora_farm_heavy.py | 4 + .../mining_organic_flora_farm_medium.py | 4 + .../harvester_deed/harvester_flora_deed.py | 5 + .../harvester_flora_deed_elite.py | 5 + .../harvester_flora_deed_heavy.py | 5 + .../harvester_flora_deed_medium.py | 5 + .../deed/harvester_deed/harvester_gas_deed.py | 5 + .../harvester_gas_deed_elite.py | 5 + .../harvester_gas_deed_heavy.py | 5 + .../harvester_gas_deed_medium.py | 5 + .../harvester_deed/harvester_liquid_deed.py | 5 + .../harvester_liquid_deed_elite.py | 5 + .../harvester_liquid_deed_heavy.py | 5 + .../harvester_liquid_deed_medium.py | 5 + .../harvester_deed/harvester_moisture_deed.py | 5 + .../harvester_moisture_deed_elite.py | 5 + .../harvester_moisture_deed_heavy.py | 5 + .../harvester_moisture_deed_medium.py | 5 + .../harvester_ore_deed_elite.py | 5 + .../harvester_ore_heavy_deed.py | 5 + .../harvester_deed/harvester_ore_s1_deed.py | 5 + .../harvester_deed/harvester_ore_s2_deed.py | 5 + scripts/radial/generator.py | 53 + scripts/radial/harvester.py | 58 + scripts/radial/harvesterDeed.py | 23 + scripts/radial/harvesterHopper.py | 21 + src/main/NGECore.java | 3 + .../common/ObjControllerOpcodes.java | 3 +- src/resources/objects/deed/Deed.java | 37 + .../objects/deed/Harvester_Deed.java | 121 ++ .../harvester/HarvesterMessageBuilder.java | 803 ++++++++++++- .../objects/harvester/HarvesterObject.java | 490 ++++++++ .../InstallationMessageBuilder.java | 201 +++- .../installation/InstallationObject.java | 11 +- .../resource/ResourceContainerObject.java | 4 +- src/services/DevService.java | 198 +++ src/services/command/CommandService.java | 42 +- src/services/object/ObjectService.java | 26 +- src/services/resources/HarvesterService.java | 1070 +++++++++++++++++ src/services/resources/ResourceService.java | 33 + src/services/sui/SUIService.java | 21 + 71 files changed, 3476 insertions(+), 11 deletions(-) create mode 100644 scripts/commands/harvesteractivate.py create mode 100644 scripts/commands/harvesterdeactivate.py create mode 100644 scripts/commands/harvesterdiscardhopper.py create mode 100644 scripts/commands/harvesterselectresource.py create mode 100644 scripts/commands/permissionlistmodify.py create mode 100644 scripts/commands/resourceemptyhopper.py create mode 100644 scripts/radial/generator.py create mode 100644 scripts/radial/harvester.py create mode 100644 scripts/radial/harvesterDeed.py create mode 100644 scripts/radial/harvesterHopper.py create mode 100644 src/resources/objects/deed/Deed.java create mode 100644 src/resources/objects/deed/Harvester_Deed.java create mode 100644 src/services/resources/HarvesterService.java diff --git a/scripts/commands/harvesteractivate.py b/scripts/commands/harvesteractivate.py new file mode 100644 index 00000000..5411445a --- /dev/null +++ b/scripts/commands/harvesteractivate.py @@ -0,0 +1,10 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + core.harvesterService.handleHarvesterActivateCommand(actor, target, commandString) + return + + \ No newline at end of file diff --git a/scripts/commands/harvesterdeactivate.py b/scripts/commands/harvesterdeactivate.py new file mode 100644 index 00000000..3a225b3f --- /dev/null +++ b/scripts/commands/harvesterdeactivate.py @@ -0,0 +1,10 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + core.harvesterService.handleHarvesterDeactivateCommand(actor, target, commandString) + return + + \ No newline at end of file diff --git a/scripts/commands/harvesterdiscardhopper.py b/scripts/commands/harvesterdiscardhopper.py new file mode 100644 index 00000000..3a52f754 --- /dev/null +++ b/scripts/commands/harvesterdiscardhopper.py @@ -0,0 +1,11 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + actor.sendSystemMessage('handleEmptyHarvester', 0) + core.harvesterService.handleEmptyHarvester(actor, target, commandString) + return + + \ No newline at end of file diff --git a/scripts/commands/harvesterselectresource.py b/scripts/commands/harvesterselectresource.py new file mode 100644 index 00000000..69c8c725 --- /dev/null +++ b/scripts/commands/harvesterselectresource.py @@ -0,0 +1,10 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + core.harvesterService.handleHarvesterSelectResourceCommand(actor, target, commandString) + return + + \ No newline at end of file diff --git a/scripts/commands/permissionlistmodify.py b/scripts/commands/permissionlistmodify.py new file mode 100644 index 00000000..a34f8d43 --- /dev/null +++ b/scripts/commands/permissionlistmodify.py @@ -0,0 +1,10 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + core.harvesterService.handlePermissionListModify(actor, target, commandString) + return + + \ No newline at end of file diff --git a/scripts/commands/placestructure.py b/scripts/commands/placestructure.py index edddb24e..f6f5c122 100644 --- a/scripts/commands/placestructure.py +++ b/scripts/commands/placestructure.py @@ -1,4 +1,5 @@ import sys +import resources.objects.deed.Harvester_Deed def setup(): return @@ -8,7 +9,12 @@ def run(core, actor, target, commandString): deedId = long(cmdArgs[0]) deed = core.objectService.getObject(deedId) - + + if (actor.getAttachment('UsingHarvesterDeed') == '1'): + actor.setAttachment('UsingHarvesterDeed', '0'); + core.harvesterService.handlePlaceStructureCommand(actor, target, commandString) + return + positionX = float(cmdArgs[1]) positionZ = float(cmdArgs[2]) #positionY = core.terrainService.getHeight(actor.getPlanetId(), positionX, positionZ) + 2 diff --git a/scripts/commands/resourceemptyhopper.py b/scripts/commands/resourceemptyhopper.py new file mode 100644 index 00000000..3a225b3f --- /dev/null +++ b/scripts/commands/resourceemptyhopper.py @@ -0,0 +1,10 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + core.harvesterService.handleHarvesterDeactivateCommand(actor, target, commandString) + return + + \ No newline at end of file diff --git a/scripts/object/installation/generators/power_generator_fusion_style_1.py b/scripts/object/installation/generators/power_generator_fusion_style_1.py index ccad8904..be7d0439 100644 --- a/scripts/object/installation/generators/power_generator_fusion_style_1.py +++ b/scripts/object/installation/generators/power_generator_fusion_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'generator') + object.setHarvester_type(5) + object.setMaintenanceCost(30) + object.setGenerator(1) return \ No newline at end of file diff --git a/scripts/object/installation/generators/power_generator_geothermal_style_1.py b/scripts/object/installation/generators/power_generator_geothermal_style_1.py index ccad8904..be7d0439 100644 --- a/scripts/object/installation/generators/power_generator_geothermal_style_1.py +++ b/scripts/object/installation/generators/power_generator_geothermal_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'generator') + object.setHarvester_type(5) + object.setMaintenanceCost(30) + object.setGenerator(1) return \ No newline at end of file diff --git a/scripts/object/installation/generators/power_generator_photo_bio_style_1.py b/scripts/object/installation/generators/power_generator_photo_bio_style_1.py index ccad8904..be7d0439 100644 --- a/scripts/object/installation/generators/power_generator_photo_bio_style_1.py +++ b/scripts/object/installation/generators/power_generator_photo_bio_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'generator') + object.setHarvester_type(5) + object.setMaintenanceCost(30) + object.setGenerator(1) return \ No newline at end of file diff --git a/scripts/object/installation/generators/power_generator_solar_style_1.py b/scripts/object/installation/generators/power_generator_solar_style_1.py index ccad8904..be7d0439 100644 --- a/scripts/object/installation/generators/power_generator_solar_style_1.py +++ b/scripts/object/installation/generators/power_generator_solar_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'generator') + object.setHarvester_type(5) + object.setMaintenanceCost(30) + object.setGenerator(1) return \ No newline at end of file diff --git a/scripts/object/installation/generators/power_generator_wind_style_1.py b/scripts/object/installation/generators/power_generator_wind_style_1.py index ccad8904..b82445bb 100644 --- a/scripts/object/installation/generators/power_generator_wind_style_1.py +++ b/scripts/object/installation/generators/power_generator_wind_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'generator') + object.setHarvester_type(5) + object.setMaintenanceCost(20) + object.setGenerator(1) return \ No newline at end of file diff --git a/scripts/object/installation/mining_gas/mining_gas_harvester_style_1.py b/scripts/object/installation/mining_gas/mining_gas_harvester_style_1.py index ccad8904..e90b9514 100644 --- a/scripts/object/installation/mining_gas/mining_gas_harvester_style_1.py +++ b/scripts/object/installation/mining_gas/mining_gas_harvester_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(3) + object.setPowerCost(25); + object.setMaintenanceCost(16); return \ No newline at end of file diff --git a/scripts/object/installation/mining_gas/mining_gas_harvester_style_2.py b/scripts/object/installation/mining_gas/mining_gas_harvester_style_2.py index ccad8904..f90bf1bf 100644 --- a/scripts/object/installation/mining_gas/mining_gas_harvester_style_2.py +++ b/scripts/object/installation/mining_gas/mining_gas_harvester_style_2.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(3) + object.setPowerCost(60); + object.setMaintenanceCost(60); return \ No newline at end of file diff --git a/scripts/object/installation/mining_gas/mining_gas_harvester_style_3.py b/scripts/object/installation/mining_gas/mining_gas_harvester_style_3.py index ccad8904..5b0bb40b 100644 --- a/scripts/object/installation/mining_gas/mining_gas_harvester_style_3.py +++ b/scripts/object/installation/mining_gas/mining_gas_harvester_style_3.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(3) + object.setPowerCost(75); + object.setMaintenanceCost(90); return \ No newline at end of file diff --git a/scripts/object/installation/mining_gas/mining_gas_harvester_style_4.py b/scripts/object/installation/mining_gas/mining_gas_harvester_style_4.py index ccad8904..145b1356 100644 --- a/scripts/object/installation/mining_gas/mining_gas_harvester_style_4.py +++ b/scripts/object/installation/mining_gas/mining_gas_harvester_style_4.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(3) + object.setPowerCost(100); + object.setMaintenanceCost(120); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_1.py b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_1.py index ccad8904..25f6673f 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_1.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(1) + object.setPowerCost(25); + object.setMaintenanceCost(16); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_2.py b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_2.py index ccad8904..1fc10f74 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_2.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_2.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(1) + object.setPowerCost(60); + object.setMaintenanceCost(60); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_3.py b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_3.py index ccad8904..dab15cfd 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_3.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_3.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(1) + object.setPowerCost(75); + object.setMaintenanceCost(90); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_4.py b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_4.py index ccad8904..b848b851 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_4.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_harvester_style_4.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(1) + object.setPowerCost(100); + object.setMaintenanceCost(120); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester.py b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester.py index ccad8904..3e112037 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(4) + object.setPowerCost(25); + object.setMaintenanceCost(16); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_elite.py b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_elite.py index ccad8904..7577292f 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_elite.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_elite.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(4) + object.setPowerCost(100); + object.setMaintenanceCost(120); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_heavy.py b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_heavy.py index ccad8904..1fcc5436 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_heavy.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_heavy.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(4) + object.setPowerCost(75); + object.setMaintenanceCost(90); return \ No newline at end of file diff --git a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_medium.py b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_medium.py index ccad8904..41919756 100644 --- a/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_medium.py +++ b/scripts/object/installation/mining_liquid/mining_liquid_moisture_harvester_medium.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(4) + object.setPowerCost(60); + object.setMaintenanceCost(60); return \ No newline at end of file diff --git a/scripts/object/installation/mining_ore/mining_ore_harvester_elite.py b/scripts/object/installation/mining_ore/mining_ore_harvester_elite.py index ccad8904..05c3be8a 100644 --- a/scripts/object/installation/mining_ore/mining_ore_harvester_elite.py +++ b/scripts/object/installation/mining_ore/mining_ore_harvester_elite.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(0) + object.setPowerCost(100); + object.setMaintenanceCost(120); return \ No newline at end of file diff --git a/scripts/object/installation/mining_ore/mining_ore_harvester_heavy.py b/scripts/object/installation/mining_ore/mining_ore_harvester_heavy.py index ccad8904..5dfeb966 100644 --- a/scripts/object/installation/mining_ore/mining_ore_harvester_heavy.py +++ b/scripts/object/installation/mining_ore/mining_ore_harvester_heavy.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(0) + object.setPowerCost(75); + object.setMaintenanceCost(90); return \ No newline at end of file diff --git a/scripts/object/installation/mining_ore/mining_ore_harvester_style_1.py b/scripts/object/installation/mining_ore/mining_ore_harvester_style_1.py index ccad8904..2973a685 100644 --- a/scripts/object/installation/mining_ore/mining_ore_harvester_style_1.py +++ b/scripts/object/installation/mining_ore/mining_ore_harvester_style_1.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(0) + object.setPowerCost(25); + object.setMaintenanceCost(16); return \ No newline at end of file diff --git a/scripts/object/installation/mining_ore/mining_ore_harvester_style_2.py b/scripts/object/installation/mining_ore/mining_ore_harvester_style_2.py index ccad8904..e6cfc1b1 100644 --- a/scripts/object/installation/mining_ore/mining_ore_harvester_style_2.py +++ b/scripts/object/installation/mining_ore/mining_ore_harvester_style_2.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(0) + object.setPowerCost(60); + object.setMaintenanceCost(60); return \ No newline at end of file diff --git a/scripts/object/installation/mining_organic/mining_organic_flora_farm.py b/scripts/object/installation/mining_organic/mining_organic_flora_farm.py index ccad8904..ace61f59 100644 --- a/scripts/object/installation/mining_organic/mining_organic_flora_farm.py +++ b/scripts/object/installation/mining_organic/mining_organic_flora_farm.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(2) + object.setPowerCost(25); + object.setMaintenanceCost(16); return \ No newline at end of file diff --git a/scripts/object/installation/mining_organic/mining_organic_flora_farm_elite.py b/scripts/object/installation/mining_organic/mining_organic_flora_farm_elite.py index ccad8904..53ef7fa9 100644 --- a/scripts/object/installation/mining_organic/mining_organic_flora_farm_elite.py +++ b/scripts/object/installation/mining_organic/mining_organic_flora_farm_elite.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(2) + object.setPowerCost(100); + object.setMaintenanceCost(120); return \ No newline at end of file diff --git a/scripts/object/installation/mining_organic/mining_organic_flora_farm_heavy.py b/scripts/object/installation/mining_organic/mining_organic_flora_farm_heavy.py index ccad8904..08daa7ee 100644 --- a/scripts/object/installation/mining_organic/mining_organic_flora_farm_heavy.py +++ b/scripts/object/installation/mining_organic/mining_organic_flora_farm_heavy.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(2) + object.setPowerCost(60); + object.setMaintenanceCost(60); return \ No newline at end of file diff --git a/scripts/object/installation/mining_organic/mining_organic_flora_farm_medium.py b/scripts/object/installation/mining_organic/mining_organic_flora_farm_medium.py index ccad8904..08daa7ee 100644 --- a/scripts/object/installation/mining_organic/mining_organic_flora_farm_medium.py +++ b/scripts/object/installation/mining_organic/mining_organic_flora_farm_medium.py @@ -1,4 +1,8 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvester') + object.setHarvester_type(2) + object.setPowerCost(60); + object.setMaintenanceCost(60); return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed.py b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed.py index ccad8904..d6d7b4a8 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_1.iff') + object.setStructureTemplate('object/installation/mining_organic/shared_mining_organic_flora_farm.iff') + object.setLotRequirement(1) + object.setBMR(16) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_elite.py b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_elite.py index ccad8904..66784568 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_elite.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_elite.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_organic/shared_mining_organic_flora_farm_elite.iff') + object.setLotRequirement(3) + object.setBMR(120) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_heavy.py b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_heavy.py index ccad8904..097a35ea 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_heavy.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_heavy.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_organic/shared_mining_organic_flora_farm_heavy.iff') + object.setLotRequirement(1) + object.setBMR(90) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_medium.py b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_medium.py index ccad8904..70ea50f2 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_medium.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_flora_deed_medium.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_2.iff') + object.setStructureTemplate('object/installation/mining_organic/shared_mining_organic_flora_farm_medium.iff') + object.setLotRequirement(1) + object.setBMR(60) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed.py b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed.py index ccad8904..a11974a2 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_1.iff') + object.setStructureTemplate('object/installation/mining_gas/shared_mining_gas_harvester_style_1.iff') + object.setLotRequirement(1) + object.setBMR(16) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_elite.py b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_elite.py index ccad8904..814daa8a 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_elite.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_elite.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_gas/shared_mining_gas_harvester_style_4.iff') + object.setLotRequirement(3) + object.setBMR(120) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_heavy.py b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_heavy.py index ccad8904..2111f7bf 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_heavy.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_heavy.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_gas/shared_mining_gas_harvester_style_3.iff') + object.setLotRequirement(1) + object.setBMR(90) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_medium.py b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_medium.py index ccad8904..401da10e 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_medium.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_gas_deed_medium.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_2.iff') + object.setStructureTemplate('object/installation/mining_gas/shared_mining_gas_harvester_style_2.iff') + object.setLotRequirement(1) + object.setBMR(60) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed.py b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed.py index ccad8904..9bce9e66 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_1.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_harvester_style_1.iff') + object.setLotRequirement(1) + object.setBMR(16) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_elite.py b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_elite.py index ccad8904..15cbfa5d 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_elite.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_elite.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_harvester_style_4.iff') + object.setLotRequirement(3) + object.setBMR(120) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_heavy.py b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_heavy.py index ccad8904..ae4c3c71 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_heavy.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_heavy.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_harvester_style_3.iff') + object.setLotRequirement(1) + object.setBMR(90) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_medium.py b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_medium.py index ccad8904..4de7136b 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_medium.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_liquid_deed_medium.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_2.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_harvester_style_2.iff') + object.setLotRequirement(1) + object.setBMR(60) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed.py b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed.py index ccad8904..6540aa1d 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_1.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_moisture_harvester.iff') + object.setLotRequirement(1) + object.setBMR(16) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_elite.py b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_elite.py index ccad8904..21dc0cfc 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_elite.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_elite.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_moisture_harvester_elite.iff') + object.setLotRequirement(3) + object.setBMR(120) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_heavy.py b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_heavy.py index ccad8904..afeb3a4b 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_heavy.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_heavy.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_moisture_harvester_heavy.iff') + object.setLotRequirement(1) + object.setBMR(90) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_medium.py b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_medium.py index ccad8904..7e9a5efe 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_medium.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_moisture_deed_medium.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_2.iff') + object.setStructureTemplate('object/installation/mining_liquid/shared_mining_liquid_moisture_harvester_medium.iff') + object.setLotRequirement(1) + object.setBMR(60) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_ore_deed_elite.py b/scripts/object/tangible/deed/harvester_deed/harvester_ore_deed_elite.py index ccad8904..5e0dde67 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_ore_deed_elite.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_ore_deed_elite.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_ore/shared_mining_ore_harvester_elite.iff') + object.setLotRequirement(3) + object.setBMR(120) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_ore_heavy_deed.py b/scripts/object/tangible/deed/harvester_deed/harvester_ore_heavy_deed.py index ccad8904..7f765aa8 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_ore_heavy_deed.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_ore_heavy_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_heavy.iff') + object.setStructureTemplate('object/installation/mining_ore/shared_mining_ore_harvester_heavy.iff') + object.setLotRequirement(1) + object.setBMR(90) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_ore_s1_deed.py b/scripts/object/tangible/deed/harvester_deed/harvester_ore_s1_deed.py index ccad8904..d2edcd91 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_ore_s1_deed.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_ore_s1_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_1.iff') + object.setStructureTemplate('object/installation/mining_ore/shared_mining_ore_harvester_style_1.iff') + object.setLotRequirement(1) + object.setBMR(16) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/harvester_deed/harvester_ore_s2_deed.py b/scripts/object/tangible/deed/harvester_deed/harvester_ore_s2_deed.py index ccad8904..34c6d56c 100644 --- a/scripts/object/tangible/deed/harvester_deed/harvester_ore_s2_deed.py +++ b/scripts/object/tangible/deed/harvester_deed/harvester_ore_s2_deed.py @@ -1,4 +1,9 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'harvesterDeed') + object.setConstructorTemplate('object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_2.iff') + object.setStructureTemplate('object/installation/mining_ore/shared_mining_ore_harvester_style_2.iff') + object.setLotRequirement(1) + object.setBMR(60) return \ No newline at end of file diff --git a/scripts/radial/generator.py b/scripts/radial/generator.py new file mode 100644 index 00000000..44d7a9b4 --- /dev/null +++ b/scripts/radial/generator.py @@ -0,0 +1,53 @@ +from resources.common import RadialOptions +from protocol.swg import ResourceListForSurveyMessage +from services.sui.SUIService import MessageBoxType +from services.SurveyService import createSurveyRangeSUIWindow +from services.sui.SUIWindow import Trigger +from java.util import Vector +import sys + +def createRadial(core, owner, target, radials): + #(byte parentId, short optionId, byte optionType, String description) + radials.clear() + radials.add(RadialOptions(0, 7, 0, 'Examine')) + radials.add(RadialOptions(0, 78, 0, '@player_structure:management')) + radials.add(RadialOptions(0, 117, 0, '@player_structure:permissions')) + radials.add(RadialOptions(2, 118, 0, '@harvester:manage')) + radials.add(RadialOptions(2, 128, 0, '@player_structure:permission_destroy')) + radials.add(RadialOptions(2, 124, 0, '@player_structure:management_status')) + radials.add(RadialOptions(2, 129, 0, '@player_structure:management_pay')) + radials.add(RadialOptions(2, 50, 0, '@base_player:set_name')) + radials.add(RadialOptions(3, 121, 0, '@player_structure:permission_admin')) + radials.add(RadialOptions(3, 123, 0, '@player_structure:permissions')) + + return + +def handleSelection(core, owner, target, option): + if option == 118 and target: + if owner is not None: + core.harvesterService.handleOperateMachinery(owner,target) + return + if option == 128: + if owner is not None: + core.harvesterService.createDestroySUIPage(owner,target) + return + if option == 124: + if owner is not None: + core.harvesterService.createStatusSUIPage(owner,target) + return + if option == 129: + if owner is not None: + core.harvesterService.createPayMaintenanceSUIPage(owner,target) + return + if option == 50: + if owner is not None: + core.harvesterService.createRenameSUIPage(owner,target) + return + if option == 121: + if owner is not None: + core.harvesterService.handlePermissionAdmin(owner,target) + return + if option == 123: + if owner is not None: + core.harvesterService.handlePermissionHopper(owner,target) + return diff --git a/scripts/radial/harvester.py b/scripts/radial/harvester.py new file mode 100644 index 00000000..079c99ae --- /dev/null +++ b/scripts/radial/harvester.py @@ -0,0 +1,58 @@ +from resources.common import RadialOptions +from protocol.swg import ResourceListForSurveyMessage +from services.sui.SUIService import MessageBoxType +from services.SurveyService import createSurveyRangeSUIWindow +from services.sui.SUIWindow import Trigger +from java.util import Vector +import sys + +def createRadial(core, owner, target, radials): + #(byte parentId, short optionId, byte optionType, String description) + radials.clear() + radials.add(RadialOptions(0, 7, 0, 'Examine')) + radials.add(RadialOptions(0, 78, 0, '@player_structure:management')) + radials.add(RadialOptions(0, 117, 0, '@player_structure:permissions')) + radials.add(RadialOptions(2, 118, 0, '@harvester:manage')) + radials.add(RadialOptions(2, 128, 0, '@player_structure:permission_destroy')) + radials.add(RadialOptions(2, 124, 0, '@player_structure:management_status')) + radials.add(RadialOptions(2, 129, 0, '@player_structure:management_pay')) + radials.add(RadialOptions(2, 50, 0, '@base_player:set_name')) + radials.add(RadialOptions(2, 51, 0, '@player_structure:management_power')) + radials.add(RadialOptions(3, 121, 0, '@player_structure:permission_admin')) + radials.add(RadialOptions(3, 123, 0, '@player_structure:permissions')) + + return + +def handleSelection(core, owner, target, option): + if option == 118 and target: + if owner is not None: + core.harvesterService.handleOperateMachinery(owner,target) + return + if option == 128: + if owner is not None: + core.harvesterService.createDestroySUIPage(owner,target) + return + if option == 124: + if owner is not None: + core.harvesterService.createStatusSUIPage(owner,target) + return + if option == 129: + if owner is not None: + core.harvesterService.createPayMaintenanceSUIPage(owner,target) + return + if option == 50: + if owner is not None: + core.harvesterService.createRenameSUIPage(owner,target) + return + if option == 51: + if owner is not None: + core.harvesterService.handleDepositPower(owner,target) + return + if option == 121: + if owner is not None: + core.harvesterService.handlePermissionAdmin(owner,target) + return + if option == 123: + if owner is not None: + core.harvesterService.handlePermissionHopper(owner,target) + return diff --git a/scripts/radial/harvesterDeed.py b/scripts/radial/harvesterDeed.py new file mode 100644 index 00000000..cc8fdc7a --- /dev/null +++ b/scripts/radial/harvesterDeed.py @@ -0,0 +1,23 @@ +from resources.common import RadialOptions +import sys + +def createRadial(core, owner, target, radials): + radials.clear() + radials.add(RadialOptions(0, 21, 1, 'Use Deed')) + #radials.add(RadialOptions(0, 7, 1, '111111')) + #radials.add(RadialOptions(0, 15, 1, '')) + #radials.add(RadialOptions(0, 61, 1, '')) + return + +def handleSelection(core, owner, target, option): + + if option == 21 and target: + owner.setAttachment('UsingHarvesterDeed', '1'); + core.harvesterService.enterStructurePlacementMode(target,owner) + if option == 61 and target: + object5 = core.harvesterService.constructionSite(owner,target) + core.objectService.useObject(owner, target) + if option == 15 and target: + core.objectService.destroyObject(target) + return + \ No newline at end of file diff --git a/scripts/radial/harvesterHopper.py b/scripts/radial/harvesterHopper.py new file mode 100644 index 00000000..3323d45b --- /dev/null +++ b/scripts/radial/harvesterHopper.py @@ -0,0 +1,21 @@ +from resources.common import RadialOptions +from protocol.swg import ResourceListForSurveyMessage +from services.sui.SUIService import MessageBoxType +from services.SurveyService import createSurveyRangeSUIWindow +from services.sui.SUIWindow import Trigger +from java.util import Vector +import sys + +def createRadial(core, owner, target, radials): + #(byte parentId, short optionId, byte optionType, String description) + radials.clear() + radials.add(RadialOptions(0, 7, 0, 'Examine')) + radials.add(RadialOptions(0, 78, 0, '@player_structure:management')) + radials.add(RadialOptions(2, 118, 0, '@harvester:manage')) + return + +def handleSelection(core, owner, target, option): + if option == 118 and target: + if owner is not None: + core.harvesterService.handleOperateMachinery(owner,target) + return diff --git a/src/main/NGECore.java b/src/main/NGECore.java index b081dc0b..fdffda01 100644 --- a/src/main/NGECore.java +++ b/src/main/NGECore.java @@ -84,6 +84,7 @@ import services.LoginService; import services.map.MapService; import services.object.ObjectService; import services.object.UpdateService; +import services.resources.HarvesterService; import services.resources.ResourceService; import services.retro.RetroService; import services.spawn.SpawnService; @@ -180,6 +181,7 @@ public class NGECore { public HousingService housingService; public LootService lootService; + public HarvesterService harvesterService; // Login Server @@ -298,6 +300,7 @@ public class NGECore { conversationService = new ConversationService(this); housingService = new HousingService(this); lootService = new LootService(this); + harvesterService = new HarvesterService(this); if (config.keyExists("JYTHONCONSOLE.PORT")) { int jythonPort = config.getInt("JYTHONCONSOLE.PORT"); diff --git a/src/resources/common/ObjControllerOpcodes.java b/src/resources/common/ObjControllerOpcodes.java index c2d117bd..1c7b626b 100644 --- a/src/resources/common/ObjControllerOpcodes.java +++ b/src/resources/common/ObjControllerOpcodes.java @@ -42,5 +42,6 @@ public class ObjControllerOpcodes { public static final int STOP_NPC_CONVERSATION = 0xDE000000; public static final int NPC_CONVERSATION_OPTIONS = 0xE0000000; public static final int SET_PROFESSION_TEMPLATE = 0x5C040000; - + public static final int RESOURCE_EMPTY_HOPPER = 0xED000000; + } diff --git a/src/resources/objects/deed/Deed.java b/src/resources/objects/deed/Deed.java new file mode 100644 index 00000000..f98c6398 --- /dev/null +++ b/src/resources/objects/deed/Deed.java @@ -0,0 +1,37 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package resources.objects.deed; + +import engine.resources.scene.Planet; +import engine.resources.scene.Point3D; +import engine.resources.scene.Quaternion; +import resources.objects.tangible.TangibleObject; + +/** + * @author Charon + */ +public class Deed extends TangibleObject { + + public Deed(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ + super(objectID, planet, template, position, orientation); + } +} diff --git a/src/resources/objects/deed/Harvester_Deed.java b/src/resources/objects/deed/Harvester_Deed.java new file mode 100644 index 00000000..945d9eb3 --- /dev/null +++ b/src/resources/objects/deed/Harvester_Deed.java @@ -0,0 +1,121 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package resources.objects.deed; +import com.sleepycat.persist.model.Persistent; + +import engine.resources.scene.Planet; +import engine.resources.scene.Point3D; +import engine.resources.scene.Quaternion; + +/** + * @author Charon + */ +@Persistent(version=0) +public class Harvester_Deed extends Deed { + + private String name; + private String structureTemplate; + private String constructorTemplate; + private int outputHopperCapacity=0; + private int BER=0; + private int BMR=0; + private int surplusMaintenance=0; + private int surplusPower=0; + private int lotRequirement; + + + public Harvester_Deed(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ + super(objectID, planet, template, position, orientation); + } + + public int getOutputHopperCapacity() { + return outputHopperCapacity; + } + public void setOutputHopperCapacity(int outputHopperCapacity) { + this.outputHopperCapacity = outputHopperCapacity; + } + public int getBER() { + return BER; + } + public void setBER(int bER) { + this.BER = bER; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getStructureTemplate() { + return structureTemplate; + } + public void setStructureTemplate(String structureTemplate) { + this.structureTemplate = structureTemplate; + } + public int getLotRequirement() { + return lotRequirement; + } + public void setLotRequirement(int lotRequirement) { + this.lotRequirement = lotRequirement; + } + public String getConstructorTemplate() { + return constructorTemplate; + } + public void setConstructorTemplate(String constructorTemplate) { + this.constructorTemplate = constructorTemplate; + } + public int getBMR() { + return BMR; + } + public void setBMR(int BMR) { + this.BMR = BMR; + } + public int getSurplusMaintenance() { + return surplusMaintenance; + } + public void setSurplusMaintenance(int surplusMaintenance) { + this.surplusMaintenance = surplusMaintenance; + } + + public int getSurplusPower() { + return surplusPower; + } + + public void setSurplusPower(int surplusPower) { + this.surplusPower = surplusPower; + } + + + public void setAttributes() { + this.getAttributes().put("@obj_attr_n:volume", "1"); + this.getAttributes().put("@obj_attr_n:examine_maintenance_rate", ""+this.getBMR() + "/hour"); + if (this.getSurplusMaintenance()>0) + this.getAttributes().put("@obj_attr_n:examine_maintenance", ""+this.getSurplusMaintenance()); + + //this.getAttributes().put("@obj_attr_n:energy_maintenance", "0"); + if (this.getSurplusPower()>0) + this.getAttributes().put("@obj_attr_n:examine_power", ""+this.getSurplusPower()); + + this.getAttributes().put("@obj_attr_n:examine_hoppersize", ""+this.getOutputHopperCapacity()); + this.getAttributes().put("@obj_attr_n:examine_extractionrate", ""+this.getBER()); + } +} diff --git a/src/resources/objects/harvester/HarvesterMessageBuilder.java b/src/resources/objects/harvester/HarvesterMessageBuilder.java index 3b6c4602..98daa62a 100644 --- a/src/resources/objects/harvester/HarvesterMessageBuilder.java +++ b/src/resources/objects/harvester/HarvesterMessageBuilder.java @@ -21,6 +21,807 @@ ******************************************************************************/ package resources.objects.harvester; -public class HarvesterMessageBuilder { +import java.nio.ByteOrder; +import java.util.Vector; +import org.apache.mina.core.buffer.IoBuffer; + +import engine.resources.objects.SWGObject; + +import resources.objects.ObjectMessageBuilder; +import resources.objects.building.BuildingObject; +import resources.objects.creature.CreatureObject; +import resources.objects.resource.GalacticResource; +import resources.objects.resource.ResourceContainerObject; + +/** + * @author Charon + */ +public class HarvesterMessageBuilder extends ObjectMessageBuilder{ + + public HarvesterMessageBuilder(HarvesterObject harvesterObject) { + setObject(harvesterObject); + } + + public IoBuffer buildBaseline3() { + + HarvesterObject building = (HarvesterObject) object; + IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + + buffer.putShort((short) 0x0D); + buffer.putFloat(building.getComplexity()); + buffer.put(getAsciiString(building.getStfFilename())); + buffer.putInt(0); + buffer.put(getAsciiString(building.getStfName())); + buffer.putInt(0); + buffer.putInt(0xFF); + //buffer.putInt(0x64); + buffer.putInt(0); + buffer.putInt(0); + buffer.putShort((short) 0); + + buffer.putInt(0); + buffer.putInt(0); + // buffer.putInt(16777216); + buffer.putInt(0x100); + buffer.putInt(0); + buffer.putInt(64); + buffer.putInt(0x201C); + buffer.put((byte) 1); + + int size = buffer.position(); + buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); + + buffer.flip(); + buffer = createBaseline("BUIO", (byte) 3, buffer, size); + + return buffer; + + } + + public IoBuffer buildHINO3Delta(HarvesterObject harvester,byte state) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)3); + buffer.putInt(0xB); + buffer.putShort((short)2); + buffer.putShort((short)8); + buffer.put((byte)1); + buffer.putShort((short)1); + buffer.put((byte)0); + buffer.putShort((short)0xD); + buffer.put(state); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } +// 0000: 05 00 53 21 86 12 33 01 0E BE 41 00 00 00 4F 4E ..S!..3...A...ON +// 0010: 49 48 03 0B 00 00 00 02 00 08 00 01 01 00 00 0D IH.............. +// 0020: 00 01 + + + public IoBuffer buildHINO3Delta2(HarvesterObject harvester,byte state) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)3); + buffer.putInt(0xB); + buffer.putShort((short)2); + buffer.putShort((short)8); + buffer.put((byte)0); + buffer.putShort((short)1); + buffer.put((byte)0); + buffer.putShort((short)0xD); + buffer.put(state); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + + public IoBuffer buildBaseline6() { + + HarvesterObject building = (HarvesterObject) object; + IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + + buffer.putShort((short) 8); + buffer.putInt(0x43); + + buffer.put(getAsciiString(building.getDetailFilename())); + buffer.putInt(0); + buffer.put(getAsciiString(building.getDetailName())); + buffer.putInt(0); + buffer.put((byte) 0); + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + + int size = buffer.position(); + buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); + + buffer.flip(); + buffer = createBaseline("BUIO", (byte) 6, buffer, size); + + return buffer; + + } + + + public IoBuffer buildHINO7Delta(HarvesterObject harvester,byte state) { + + Vector outputHopperContent = harvester.getOutputHopperContent(); + int hopperContentSize = outputHopperContent.size(); + int iHopperList = 1; + if (hopperContentSize==0) { + iHopperList = 0; + } + //int sizeP = 30 + 15*hopperContentSize; + int sizeP = 30-2-4-4; + //System.out.println("sizeP " + sizeP); + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + buffer.putInt(sizeP); + // dOut.writeInt(0x2D); + buffer.putShort((short)5); + buffer.putShort((short)6); + buffer.put(state); + buffer.putShort((short)9); + buffer.putFloat(harvester.getActualExtractionRate()); + buffer.putShort((short)0x0C); + buffer.put(harvester.getUpdateCount()); +// buffer.putShort((short)0x0D); +// buffer.putInt(iHopperList); +// buffer.putInt(harvester.getResourceUpdateCount()); + int sumOfHopper = 0; + int i = 0; + sumOfHopper = 0; + Vector outputHopper = harvester.getOutputHopperContent(); + for (ResourceContainerObject cont : outputHopper){ + sumOfHopper += cont.getStackCount(); + i++; + } + + buffer.putShort((short)0x0A); + buffer.putInt(sumOfHopper); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildHINO7Delta2(HarvesterObject harvester,byte state) { + + Vector outputHopperContent = harvester.getOutputHopperContent(); + int hopperContentSize = outputHopperContent.size(); + int iHopperList = 1; + if (hopperContentSize==0) { + iHopperList = 0; + } + int sizeP = 30 + 15*hopperContentSize; + //System.out.println("sizeP " + sizeP); + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + buffer.putInt(sizeP); + // dOut.writeInt(0x2D); + buffer.putShort((short)5); + buffer.putShort((short)6); + buffer.put(state); + buffer.putShort((short)9); + buffer.putFloat(harvester.getActualExtractionRate()); + buffer.putShort((short)0x0C); + buffer.put(harvester.getUpdateCount()); + buffer.putShort((short)0x0D); + buffer.putInt(iHopperList); + buffer.putInt(harvester.getResourceUpdateCount()); + int sumOfHopper = 0; + + byte i = 0; + for (ResourceContainerObject container : outputHopperContent){ + buffer.putShort((short)harvester.getResourceUpdateCount()); + buffer.put(i); + buffer.putLong(container.getReferenceID()); + buffer.putInt(container.getStackCount()); + sumOfHopper += container.getStackCount(); + i++; + } + + buffer.putShort((short)0x0A); + buffer.putInt(sumOfHopper); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + // 2 + 2 + 1 + 2 + 4 + 2 + 1 + 2 + 4 + 4 + (hoppersize* 2+1+8+4=15) + 2 + 4 + +// 0000: 05 00 53 21 86 12 33 01 0E BE 41 00 00 00 4F 4E ..S!..3...A...ON +// 0010: 49 48 07 2D 00 00 00 05 00 06 00 01 09 00 3F AE IH.-..........?. +// 0020: 2D 42 0C 00 02 0D 00 01 00 00 00 01 00 00 00 02 -B.............. +// 0030: 00 00 5E C8 62 AB 41 00 00 00 CC F1 0A 40 0A 00 ..^.b.A......@.. +// 0040: CC F1 0A 40 ...@ + + public IoBuffer buildHINO7EmptyHopperDelta(HarvesterObject harvester) { + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + buffer.putInt(21); + buffer.putShort((short)3); + buffer.putShort((short)0x0C); + buffer.put((byte)harvester.getResourceUpdateCount()); + buffer.putShort((short)0x0D); + buffer.putInt(0); + buffer.putInt(harvester.getResourceUpdateCount()); + buffer.putShort((short)0x0A); + buffer.putFloat(harvester.getOutputHopperContent().size()); + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + + public IoBuffer buildHINO7ExperimentalDelta(HarvesterObject harvester) { + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + buffer.putInt(0x18); + buffer.putShort((short)3); + buffer.putShort((short)0x0C); + buffer.put((byte)harvester.getResourceUpdateCount()); + buffer.putShort((short)0x0D); + buffer.putInt(1); + buffer.putInt(0x1E); + buffer.put((byte)0); + buffer.putShort((short)0); + buffer.putInt(harvester.getResourceUpdateCount()); + buffer.putShort((short)0x0A); + buffer.putFloat(0); // since it's 0 outputhoppercontent + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + +// 0000: 05 00 53 21 86 12 53 D0 AC 41 3F 00 00 00 4F 4E ..S!..S..A?...ON +// 0010: 49 48 07 18 00 00 00 03 00 0C 00 25 0D 00 01 00 IH.........%.... +// 0020: 00 00 1E 00 00 00 00 00 00 0A 00 00 00 00 00 ............... + + + public IoBuffer buildHINO7ExperimentalDelta2(HarvesterObject harvester) { + + int iHopperList = 0; + if (harvester.getOutputHopperContent().size() >= 1) { + iHopperList = 1; + } + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + + buffer.putInt(36); + buffer.putShort((short)3); + buffer.putShort((short)0x0C); + buffer.put(harvester.getUpdateCount()); + buffer.putShort((short)0x0D); + buffer.putInt(iHopperList); + buffer.putInt(harvester.getResourceUpdateCount()); + int i = 0; + int totalStackCount = 0; + Vector outputHopper = harvester.getOutputHopperContent(); + for (ResourceContainerObject cont : outputHopper){ + totalStackCount += cont.getStackCount(); + if (cont.getReferenceID() == harvester.getSelectedHarvestResource().getId()) { + buffer.put((byte)2); + buffer.putShort((short) i); + buffer.putLong(cont.getReferenceID()); + buffer.putFloat((float)cont.getStackCount()); + //System.out.println("TOTAL STACKCOUNT " + (float)cont.getStackCount()); + } + i++; + } + + buffer.putShort((short)0x0A); + buffer.putFloat((float)totalStackCount); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildHINO7ActivateDelta(HarvesterObject harvester) { + + int iHopperList = 0; + if (harvester.getOutputHopperContent().size() >= 1) { + iHopperList = 1; + } + int factor = 0; + Vector outputHopper = harvester.getOutputHopperContent(); + for (ResourceContainerObject cont : outputHopper){ + if (cont.getReferenceID() == harvester.getSelectedHarvestResource().getId()) { + factor = 1; + } + } + + byte iHopperUpdateCounter = harvester.getResourceUpdateCount(); + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + buffer.putInt(5+19+(15*factor)); + buffer.putShort((short)5); + buffer.putShort((short)6); + buffer.put((byte)1); + // 2 + 4 + 4 + 2 + 4 + (15*h) = 16 + 2 + 1 = 19 + buffer.putShort((short)0x0C); + buffer.put(harvester.getUpdateCount()); + buffer.putShort((short)0x0D); + buffer.putInt(iHopperList); + buffer.putInt(iHopperUpdateCounter); + int totalStackCount = 0; + + int i = 0; + + for (ResourceContainerObject cont : outputHopper){ + totalStackCount += cont.getStackCount(); + if (cont.getReferenceID() == harvester.getSelectedHarvestResource().getId()) { + buffer.put((byte)2); + buffer.putShort((short) i); + buffer.putLong(cont.getReferenceID()); + buffer.putFloat((float)cont.getStackCount()); + } + i++; + } + + buffer.putShort((short)0x0A); + buffer.putFloat((float)totalStackCount); + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + + public IoBuffer buildHINO7ActivateDelta2(HarvesterObject harvester) { + + int iHopperList = 0; + if (harvester.getOutputHopperContent().size() >= 1) { + iHopperList = 1; + } + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + + buffer.putInt(11); + buffer.putShort((short)2); + buffer.putShort((short)6); + buffer.put((byte)1); + buffer.putShort((short)9); + buffer.putFloat(harvester.getActualExtractionRate()); + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } +// +// 02 00 06 00 01 09 00 43 94 IH............C. +// 0020: 59 42 YB + + public IoBuffer buildHINO7ActivateDelta2old(HarvesterObject harvester) { + + int iHopperList = 0; + if (harvester.getOutputHopperContent().size() >= 1) { + iHopperList = 1; + } + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + + buffer.putInt(5); + buffer.putShort((short)5); + buffer.putShort((short)6); + buffer.put((byte)1); + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildHINO7DeactivateDelta(HarvesterObject harvester) { + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + + buffer.putInt(14); + buffer.putShort((short)5); + buffer.putShort((short)6); + buffer.put((byte)0); + buffer.putShort((short)9); + buffer.putFloat(0); + buffer.putShort((short)0xC); + buffer.put((byte)5); + + // new +// buffer.putShort((short)6); +// buffer.put((byte)0); +// buffer.putShort((short)9); +// buffer.put((byte)0); +// buffer.putShort((short)0xC); +// buffer.put((byte)5); + + // + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + + public IoBuffer buildHINO7DeactivateDeltaold(HarvesterObject harvester) { + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + + buffer.putInt(5); + buffer.putShort((short)5); + buffer.putShort((short)6); + buffer.put((byte)0); + + // new + buffer.putShort((short)6); + buffer.put((byte)0); + buffer.putShort((short)9); + buffer.put((byte)0); + buffer.putShort((short)0xC); + buffer.put((byte)5); + + // + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildHINO7ClearDelta(HarvesterObject harvester) { + + int iHopperList = 0; + if (harvester.getOutputHopperContent().size() >= 1) { + iHopperList = 1; + } + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x48494E4F); + buffer.put((byte)7); + + buffer.putInt(36); + buffer.putShort((short)3); + buffer.putShort((short)0x0C); + buffer.put(harvester.getUpdateCount()); + buffer.putShort((short)0x0D); + buffer.putInt(iHopperList); + buffer.putInt(harvester.getResourceUpdateCount()); + buffer.put((byte)4); + buffer.putShort((short)0x0A); + buffer.putFloat((float)0.0F); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + + public IoBuffer buildDiscardResourceResponse(HarvesterObject harvester, byte actionMode, byte actionCounter,CreatureObject owner) { + + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x80CE5E46); + buffer.putInt(0x0B); + buffer.putInt(0xEE); + buffer.putLong(owner.getObjectID()); + buffer.putInt(0); + buffer.putInt(0xED); + buffer.put((byte)1); + buffer.put(actionCounter); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + +//0000: 05 00 46 5E CE 80 0B 00 00 00 EE 00 00 00 62 5F ..F^..........b_ +//0010: 02 15 00 00 01 00 00 00 00 00 ED 00 00 00 01 01 ................ +// ^^ weird but works, should be zero allowed too + + public IoBuffer buildBaseline8() { + IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.putShort((short) 0); + int size = buffer.position(); + buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size); + buffer.flip(); + buffer = createBaseline("TANO", (byte) 8, buffer, size); + + return buffer; + } + + public IoBuffer buildBaseline9() { + IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.putShort((short) 0); + int size = buffer.position(); + buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size); + buffer.flip(); + buffer = createBaseline("TANO", (byte) 9, buffer, size); + + return buffer; + } + + + public IoBuffer buildHINOBaseline7(HarvesterObject harvester,Vector vSRD) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + int sizeP = 74; + + buffer.putShort((short)5); + buffer.putInt(0x68A75F0C); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x4F4E4948); + buffer.put((byte)7); + + int iResourceCount = vSRD.size(); + Vector outputHopperContent = harvester.getOutputHopperContent(); + int hopperContentSize = outputHopperContent.size(); + float outputHopperCount = 0; + + //y = a + 4x + 16x + 12z = a + 20x + 12z + sizeP += (iResourceCount * 4); + sizeP += (iResourceCount * 16); + + sizeP += (hopperContentSize * 12); + + for (int i = 0; i < iResourceCount; i++) { + sizeP += vSRD.get(i).getName().length(); + sizeP += vSRD.get(i).getFileName().length(); + } + + buffer.putInt(sizeP); + + for (ResourceContainerObject container : outputHopperContent){ + outputHopperCount += container.getStackCount(); + } + + buffer.putShort((short)0x0F); + buffer.put((byte)1); + buffer.putInt(iResourceCount); + buffer.putInt(iResourceCount); + + for (int i = 0; i < iResourceCount; i++) { + buffer.putLong(vSRD.get(i).getId()); + } + buffer.putInt(iResourceCount); + + buffer.putInt(iResourceCount); + + for (int i = 0; i < iResourceCount; i++) { + buffer.putLong(vSRD.get(i).getId()); + } + + buffer.putInt(iResourceCount); + + buffer.putInt(iResourceCount); + + for (int i = 0; i < iResourceCount; i++) { + buffer.put(getAsciiString(vSRD.get(i).getName())); + } + + buffer.putInt(iResourceCount); + buffer.putInt(iResourceCount); + for (int i = 0; i < iResourceCount; i++) { + buffer.put(getAsciiString(vSRD.get(i).getFileName())); + + } + + if (harvester.getSelectedHarvestResource() != null) { + buffer.putLong(harvester.getSelectedHarvestResource().getId()); + } else { + buffer.putLong(0); + } + + buffer.put(harvester.isActivated() ? (byte)1 : (byte)0); + + buffer.putInt(harvester.getSpecRate()); // SPEC RATE buffer.putInt(harvester.getBER()); + + buffer.putFloat(harvester.getBER()); + + buffer.putFloat(harvester.getActualExtractionRate()); + buffer.putFloat(outputHopperCount); + buffer.putInt(harvester.getOutputHopperCapacity()); + buffer.put(harvester.getUpdateCount()); + buffer.putInt(hopperContentSize); + buffer.putInt(0); + for (ResourceContainerObject container : outputHopperContent){ + buffer.putLong(container.getReferenceID()); + buffer.putFloat(container.getStackCount()); + } + buffer.put(harvester.getStructuralCondition()); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildCustomNameDelta(HarvesterObject harvester, String customName) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + int sizeP = 8; + sizeP += 2*customName.length(); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(harvester.getObjectID()); + buffer.putInt(0x54414E4F); + buffer.put((byte)3); + buffer.putInt(sizeP); + buffer.putShort((short)1); + buffer.putShort((short)2); + buffer.put(getUnicodeString(customName)); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildPermissionListCreate(HarvesterObject harvester, Vector permissionList, String listName) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + int listSize = permissionList.size(); + buffer.putShort((short)4); + buffer.putInt(0x52F364B8); + buffer.putInt(listSize); + for (String name : permissionList){ + buffer.put(getUnicodeString(name)); + } + //buffer.putInt(0x61); + buffer.putInt(0); + //buffer.putShort((short)0); + buffer.put(getUnicodeString(listName)); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + /* + 0000: 04 00 B8 64 F3 52 01 00 00 00 06 00 00 00 63 00 ...d.R........c. + 0010: 68 00 61 00 72 00 6F 00 6E 00 00 00 00 00 05 00 h.a.r.o.n....... + 0020: 00 00 41 00 44 00 4D 00 49 00 4E 00 ..A.D.M.I.N. + */ + + // Send this in response to the Radial Menu to manage harvesters, + // it is necessary to send this *before* the 07 Baseline! + //ResourceHarvesterActivatePageMessage (BD18C679) + public IoBuffer buildResourceHarvesterActivatePageMessage(HarvesterObject harvester) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)2); + buffer.putInt(0xBD18C679); + buffer.putLong(harvester.getObjectID()); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildHarvesterGetResourceData(HarvesterObject harvester,SWGObject owner,Vector planetResources) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x80CE5E46); + buffer.putInt(0x0B); + buffer.putInt(0x000000EA); + buffer.putLong(owner.getObjectID()); + buffer.putInt(0); + buffer.putLong(harvester.getObjectID()); + if (planetResources == null || planetResources.isEmpty()) { + buffer.putInt(0); + } else { + buffer.putInt(planetResources.size()); + for (int i = 0; i < planetResources.size(); i++) { + float localConcentration = planetResources.get(i).deliverConcentrationForSurvey(owner.getPlanetId(), owner.getPosition().x, owner.getPosition().z); + buffer.putLong(planetResources.get(i).getId()); + buffer.put(getAsciiString(planetResources.get(i).getName())); + buffer.put(getAsciiString(planetResources.get(i).getFileName())); + buffer.put((byte)localConcentration); + } + } + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + + @Override + public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) { + // TODO Auto-generated method stub + + } + + @Override + public void sendBaselines() { + + } } diff --git a/src/resources/objects/harvester/HarvesterObject.java b/src/resources/objects/harvester/HarvesterObject.java index b31b40cf..5626ce35 100644 --- a/src/resources/objects/harvester/HarvesterObject.java +++ b/src/resources/objects/harvester/HarvesterObject.java @@ -21,11 +21,501 @@ ******************************************************************************/ package resources.objects.harvester; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Vector; + +import main.NGECore; +import protocol.swg.SceneCreateObjectByCrc; +import protocol.swg.SceneDestroyObject; +import protocol.swg.SceneEndBaselines; +import protocol.swg.UpdatePVPStatusMessage; + import com.sleepycat.persist.model.Persistent; +import services.chat.WaypointAttachment; +import engine.clients.Client; +import engine.resources.common.CRC; +import engine.resources.objects.SWGObject; +import engine.resources.scene.Planet; +import engine.resources.scene.Point3D; +import engine.resources.scene.Quaternion; +import resources.objects.creature.CreatureObject; +import resources.objects.installation.InstallationMessageBuilder; import resources.objects.installation.InstallationObject; +import resources.objects.player.PlayerObject; +import resources.objects.resource.GalacticResource; +import resources.objects.resource.ResourceContainerObject; +import resources.objects.waypoint.WaypointObject; +import services.chat.Mail; + + +/** + * @author Charon + */ @Persistent(version=0) public class HarvesterObject extends InstallationObject { + + private HarvesterMessageBuilder messageBuilder; + private InstallationMessageBuilder installationMessageBuilder; + + public final static byte HARVESTER_TYPE_MINERAL = 0; + public final static byte HARVESTER_TYPE_CHEMICAL = 1; + public final static byte HARVESTER_TYPE_FLORA = 2; + public final static byte HARVESTER_TYPE_GAS = 3; + public final static byte HARVESTER_TYPE_WATER = 4; + public final static byte HARVESTER_TYPE_SOLAR = 5; + public final static byte HARVESTER_TYPE_WIND = 6; + public final static byte HARVESTER_TYPE_FUSION = 7; + public final static byte HARVESTER_TYPE_GEO = 8; + + public String[] mineral_type_iff = new String[]{"object/installation/mining_ore/shared_mining_ore_harvester_style_1.iff", + "object/installation/mining_ore/shared_mining_ore_harvester_style_2.iff", + "object/installation/mining_ore/shared_mining_ore_harvester_heavy.iff", + "object/installation/mining_ore/shared_mining_ore_harvester_elite.iff"}; + + public String[] chemical_type_iff = new String[]{"object/installation/mining_liquid/shared_mining_liquid_harvester_style_1.iff", + "object/installation/mining_liquid/shared_mining_liquid_harvester_style_2.iff", + "object/installation/mining_liquid/shared_mining_liquid_harvester_style_3.iff", + "object/installation/mining_liquid/shared_mining_liquid_harvester_style_4.iff"}; + + public String[] flora_type_iff = new String[]{"object/installation/mining_organic/shared_mining_organic_flora_farm.iff", + "object/installation/mining_organic/shared_mining_organic_flora_farm_medium.iff", + "object/installation/mining_organic/shared_mining_organic_flora_farm_heavy.iff", + "object/installation/mining_organic/shared_mining_organic_flora_farm_elite.iff"}; + + public String[] water_type_iff = new String[]{"object/installation/mining_liquid/shared_mining_liquid_moisture_harvester.iff", + "object/installation/mining_liquid/shared_mining_liquid_moisture_harvester_medium.iff", + "object/installation/mining_liquid/shared_mining_liquid_moisture_harvester_heavy.iff", + "object/installation/mining_liquid/shared_mining_liquid_moisture_harvester_elite.iff"}; + + public String[] gas_type_iff = new String[]{"object/installation/mining_gas/shared_mining_gas_harvester_style_1.iff", + "object/installation/mining_gas/shared_mining_gas_harvester_style_2.iff", + "object/installation/mining_gas/shared_mining_gas_harvester_style_3.iff", + "object/installation/mining_gas/shared_mining_gas_harvester_style_4.iff"}; + + public String[] wind_type_iff = new String[]{"object/installation/generators/shared_power_generator_wind_style_1.iff"}; + + public String[] solar_type_iff = new String[]{"object/installation/generators/shared_power_generator_solar_style_1.iff"}; + + public String[] fusion_type_iff = new String[]{"object/installation/generators/shared_power_generator_fusion_style_1.iff"}; + + public String[] geo_type_iff = new String[]{"object/installation/generators/shared_power_generator_geothermal_style_1.iff"}; + //for nothing "object/installation/generators/shared_power_generator_photo_bio_style_1.iff" + + + public byte harvester_type = 0; + public byte harvester_size = 0; + private Vector outputHopperContent = new Vector(); + private int outputHopperCapacity = 0; + private int BER = 0; + private float maintenanceAmount = 0; + private float powerLevel = 0; + private int powerCost = 0; + private int maintenanceCost = 0; + private byte structuralCondition = 100; + private boolean activated = false; + private boolean generator = false; + private GalacticResource selectedHarvestResource; + private float selectedResourceConcentration; + private byte updateCount; + private byte resourceUpdateCount; + private Vector adminList = new Vector(); + private Vector hopperList = new Vector(); + private SWGObject owner; + private float currentHarvestedCountFloat=0.0F; + private String deedTemplate; + + private int specRate; + + + public HarvesterObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ + super(objectID, planet, template, position, orientation); + this.setConditionDamage(100); + messageBuilder = new HarvesterMessageBuilder(this); + installationMessageBuilder = new InstallationMessageBuilder((InstallationObject)this); + } + + public int getBER() { + return BER; + } + + + public void setBER(int baseExtractionRate) { + this.BER = baseExtractionRate; + } + + + public float getActualExtractionRate() { + //float resourceDraw = (getBER() * getSelectedResourceConcentration()) / 400; // /100 + float resourceDraw = 1.5F*(getBER() * getSelectedResourceConcentration()) / 100; + // BER * concentration * publish 27 bonus * profession buffs = AER + // 14* 0.83 * 1.5 * 1.05 = 18.3015 AER + return resourceDraw; + } + + public int getSpecRate() { + return specRate; + } + + public void setSpecRate(int specRate) { + this.specRate = specRate; + } + + + public GalacticResource getSelectedHarvestResource() { + return selectedHarvestResource; + } + + + public void setSelectedHarvestResource(GalacticResource selectedHarvestResource,CreatureObject owner) { + this.selectedHarvestResource = selectedHarvestResource; + setSelectedResourceConcentration(selectedHarvestResource.deliverConcentrationForSurvey(this.getPlanetId(), this.getPosition().x, this.getPosition().z)); + + owner.getClient().getSession().write(installationMessageBuilder.constructINSO7Var1((InstallationObject) this,selectedHarvestResource.getObjectId())); + owner.getClient().getSession().write(installationMessageBuilder.constructINSO7Var2((InstallationObject) this,selectedHarvestResource.getObjectId())); + } + + + public float getSelectedResourceConcentration() { + return selectedResourceConcentration; + } + + + private void setSelectedResourceConcentration(float selectedResourceConcentration) { + this.selectedResourceConcentration = selectedResourceConcentration; + } + + + public void activateHarvester(CreatureObject owner){ + activated = true; + this.setOwner(owner); + owner.getClient().getSession().write(messageBuilder.buildHINO3Delta(this,(byte)1)); + owner.getClient().getSession().write(messageBuilder.buildHINO7ActivateDelta2(this)); + } + + + public void deactivateHarvester(CreatureObject owner){ + activated = false; + owner.getClient().getSession().write(messageBuilder.buildHINO3Delta2(this,(byte)0)); + owner.getClient().getSession().write(messageBuilder.buildHINO7DeactivateDelta(this)); + } + + + public boolean isActivated(){ + return this.activated; + } + + + public byte getHarvester_type() { + return harvester_type; + } + + + public void setHarvester_type(byte harvester_type) { + this.harvester_type = harvester_type; + } + + + public Vector getOutputHopperContent() { + return outputHopperContent; + } + + + public void setOutputHopperContent(Vector outputHopperContent) { + this.outputHopperContent = outputHopperContent; + } + + + public byte getStructuralCondition() { + return structuralCondition; + } + + + public void setStructuralCondition(byte structuralCondition) { + this.structuralCondition = structuralCondition; + } + + + public int getOutputHopperCapacity() { + return outputHopperCapacity; + } + + + public void setOutputHopperCapacity(int outputHopperCapacity) { + this.outputHopperCapacity = outputHopperCapacity; + } + + + public byte getUpdateCount() { + if (updateCount>254) updateCount = 0; + return updateCount++; + } + + public byte getResourceUpdateCount() { + if (resourceUpdateCount>254) resourceUpdateCount = 0; + return resourceUpdateCount++; + } + + + public void setUpdateCount(byte updateCount) { + this.updateCount = updateCount; + } + + + public Vector getAdminList() { + return adminList; + } + + + public void setAdminList(Vector adminList) { + this.adminList = adminList; + } + + + public Vector getHopperList() { + return hopperList; + } + + + public void setHopperList(Vector hopperList) { + this.hopperList = hopperList; + } + + + public float getPowerLevel() { + return powerLevel; + } + + + public void setPowerLevel(float energyLevel) { + this.powerLevel = energyLevel; + } + + + public float getMaintenanceAmount() { + return maintenanceAmount; + } + + + public void setMaintenanceAmount(float maintenanceAmount) { + this.maintenanceAmount = maintenanceAmount; + } + + public int getPowerCost() { + return powerCost; + } + + + public void setPowerCost(int powerCost) { + this.powerCost = powerCost; + } + + + public int getMaintenanceCost() { + return maintenanceCost; + } + + + public void setMaintenanceCost(int maintenanceCost) { + this.maintenanceCost = maintenanceCost; + } + + + public float getCurrentHarvestedCountFloat() { + return currentHarvestedCountFloat; + } + + + public void setCurrentHarvestedCountFloat(float currentHarvestedCountFloat) { + this.currentHarvestedCountFloat = currentHarvestedCountFloat; + } + + + public SWGObject getOwner() { + return owner; + } + + + public void setOwner(SWGObject owner) { + this.owner = owner; + } + + public void setDeedTemplate(String deedTemplate){ + this.deedTemplate = deedTemplate; + } + + public String getDeedTemplate(){ + return this.deedTemplate; + } + + + public boolean isGenerator() { + return generator; + } + + public void setGenerator(boolean generator) { + this.generator = generator; + } + + + public void setHarvesterName(String name,CreatureObject owner){ + owner.getClient().getSession().write(messageBuilder.buildCustomNameDelta(this,name)); + this.setCustomName(name); + ((CreatureObject)owner).sendSystemMessage("Structure renamed.", (byte) 0); + } + + public void setPermissionAdmin(String name,CreatureObject owner){ + Vector permissionList = this.getAdminList(); + owner.getClient().getSession().write(messageBuilder.buildPermissionListCreate(this, permissionList, name)); + } + + public void setPermissionHopper(String name,CreatureObject owner){ + Vector permissionList = this.getAdminList(); + owner.getClient().getSession().write(messageBuilder.buildPermissionListCreate(this, permissionList, name)); + } + + public void operateMachinery(CreatureObject owner){ + owner.getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); + // Assemble resources at that spot + // For later, it might be needed to also pass the template to differentiate liquid resources + Vector planetResourcesVector = NGECore.getInstance().resourceService.getSpawnedResourcesByPlanetAndHarvesterType(this.getPlanetId(),this.getHarvester_type()); + owner.getClient().getSession().write(messageBuilder.buildHarvesterGetResourceData(this, owner, planetResourcesVector)); + owner.getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); + } + + public void deActivate(){ + owner.getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); + } + + public void placeHarvester(){ + owner.getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); + } + + public static void createAndPlaceHarvester(SWGObject object){ + CreatureObject actor = (CreatureObject) object.getAttachment("Owner"); + + String structureTemplate = (String)object.getAttachment("Deed_StructureTemplate"); + HarvesterObject harvester = (HarvesterObject) NGECore.getInstance().objectService.createObject(structureTemplate, actor.getPlanet()); + long objectId = harvester.getObjectID(); + + Vector adminList = harvester.getAdminList(); + String[] fullName = ((CreatureObject)actor).getCustomName().split(" "); + adminList.add(fullName[0]); + harvester.setAdminList(adminList); + // Set BER and outputhopper capacity here, take it from deed + harvester.setBER((int)object.getAttachment("Deed_BER")); + harvester.setSpecRate((int)(1.5F*(int)object.getAttachment("Deed_BER"))); + harvester.setOutputHopperCapacity((int)object.getAttachment("Deed_Capacity")); + harvester.setDeedTemplate((String)object.getAttachment("Deed_DeedTemplate")); + if ((int)object.getAttachment("Deed_SurplusMaintenance")>0){ + harvester.setMaintenanceAmount((int)object.getAttachment("Deed_SurplusMaintenance")); + } + if ((int)object.getAttachment("Deed_SurplusPower")>0){ + harvester.setPowerLevel((int)object.getAttachment("Deed_SurplusPower")); + } + + + // build harvester + int resCRC = CRC.StringtoCRC(structureTemplate); + float positionY = NGECore.getInstance().terrainService.getHeight(actor.getPlanetId(), object.getPosition().x, object.getPosition().z); + SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(objectId, object.getOrientation().x, object.getOrientation().y, object.getOrientation().z, object.getOrientation().w, object.getPosition().x, positionY, object.getPosition().z, resCRC, (byte) 0); + actor.getClient().getSession().write(createObjectMsg.serialize()); + tools.CharonPacketUtils.printAnalysis(createObjectMsg.serialize()); + + harvester.setPosition(new Point3D(object.getPosition().x,positionY, object.getPosition().z)); + + resources.objects.installation.InstallationMessageBuilder messenger = new resources.objects.installation.InstallationMessageBuilder((InstallationObject)harvester); + actor.getClient().getSession().write(messenger.buildBaseline3((InstallationObject)harvester)); + SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(harvester.getObjectID()); + actor.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); + tools.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); + + PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); + WaypointObject constructionWaypoint = (WaypointObject)NGECore.getInstance().objectService.createObject("object/waypoint/shared_world_waypoint_blue.iff", actor.getPlanet(), harvester.getPosition().x, 0 ,harvester.getPosition().z); + String displayname = "@installation_n:"+harvester.getStfName(); + constructionWaypoint.setName(displayname); + constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); + constructionWaypoint.setPosition(new Point3D(object.getPosition().x,0, object.getPosition().z)); + player.waypointAdd(constructionWaypoint); + constructionWaypoint.setPosition(new Point3D(object.getPosition().x,0, object.getPosition().z)); + constructionWaypoint.setActive(true); + constructionWaypoint.setColor((byte)1); + constructionWaypoint.setStringAttribute("", ""); + player.waypointAdd(constructionWaypoint); + constructionWaypoint.setName(displayname); + constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); + player.setLastSurveyWaypoint(constructionWaypoint); + + List attachments = new ArrayList(); + WaypointAttachment attachment = new WaypointAttachment(); + attachment.active = true; + attachment.cellID = constructionWaypoint.getCellId(); + attachment.color = (byte)1; + attachment.name = displayname; + attachment.planetCRC = engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName()); + attachment.positionX = object.getPosition().x; + attachment.positionY = 0; + attachment.positionZ = object.getPosition().z; + attachments.add(attachment); + + // remove constructor + NGECore.getInstance().objectService.destroyObject(object); + SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(object.getObjectID()); + actor.getClient().getSession().write(destroyObjectMsg.serialize()); + + // ToDo: waypoint attachment fix + Date date = new Date(); + Mail constructionNotificationMail = new Mail(); + constructionNotificationMail.setSenderName("Structure Service"); + constructionNotificationMail.setSubject("Your structure"); + constructionNotificationMail.setRecieverId(actor.getObjectID()); + constructionNotificationMail.setTimeStamp((int) (date.getTime() / 1000)); + constructionNotificationMail.setMailId(NGECore.getInstance().chatService.generateMailId()); + String message = "Your construction is ready"; + constructionNotificationMail.setMessage(message); + constructionNotificationMail.setStatus(Mail.NEW); + constructionNotificationMail.setAttachments(attachments); + //NGECore.getInstance().chatService.sendPersistentMessage(actor.getClient(), constructionNotificationMail); + NGECore.getInstance().chatService.storePersistentMessage(constructionNotificationMail); + NGECore.getInstance().chatService.sendPersistentMessageHeader(actor.getClient(), constructionNotificationMail); + + } + + public void createNewHopperContainer(){ + Vector planetResourcesVector = NGECore.getInstance().resourceService.getSpawnedResourcesByPlanetAndHarvesterType(this.getPlanetId(),this.getHarvester_type()); + ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); + ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINO7Delta(this,(byte)1)); + } + + public void continueHopperContainer(){ + Vector planetResourcesVector = NGECore.getInstance().resourceService.getSpawnedResourcesByPlanetAndHarvesterType(this.getPlanetId(),this.getHarvester_type()); + ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHarvesterGetResourceData(this, owner, planetResourcesVector)); + ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); + } + + @Override + public void sendBaselines(Client destination) { + + + if(destination == null || destination.getSession() == null) { + System.out.println("NULL destination"); + return; + } + + destination.getSession().write(messageBuilder.buildBaseline3()); + destination.getSession().write(messageBuilder.buildBaseline6()); + destination.getSession().write(messageBuilder.buildBaseline8()); + destination.getSession().write(messageBuilder.buildBaseline9()); + + if(getPvPBitmask() != 0) { + UpdatePVPStatusMessage upvpm = new UpdatePVPStatusMessage(getObjectID()); + upvpm.setFaction(UpdatePVPStatusMessage.factionCRC.Neutral); + upvpm.setStatus(getPvPBitmask()); + destination.getSession().write(upvpm.serialize()); + } + } } diff --git a/src/resources/objects/installation/InstallationMessageBuilder.java b/src/resources/objects/installation/InstallationMessageBuilder.java index f7902d4e..f9fe356d 100644 --- a/src/resources/objects/installation/InstallationMessageBuilder.java +++ b/src/resources/objects/installation/InstallationMessageBuilder.java @@ -21,6 +21,205 @@ ******************************************************************************/ package resources.objects.installation; -public class InstallationMessageBuilder { +import java.nio.ByteOrder; +import org.apache.mina.core.buffer.IoBuffer; +import resources.objects.ObjectMessageBuilder; +import resources.objects.harvester.HarvesterObject; +/** + * @author Charon + */ + +public class InstallationMessageBuilder extends ObjectMessageBuilder{ + + public InstallationMessageBuilder(InstallationObject installationObject) { + setObject(installationObject); + } + + public IoBuffer buildBaseline3(InstallationObject installationObject) { + IoBuffer buffer = bufferPool.allocate(10, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + int packSize = 66; + packSize += installationObject.getStfName().length(); + packSize += installationObject.getStfFilename().length(); + + buffer.putShort((short)5); + buffer.putInt(0x68A75F0C); + buffer.putLong(installationObject.getObjectID()); + buffer.putInt(0x494E534F); + buffer.put((byte)3); + buffer.putInt(packSize); + buffer.putShort((short) 0x05); + buffer.putFloat(installationObject.getComplexity()); + buffer.put(getAsciiString(installationObject.getStfFilename())); // installation_n + buffer.putInt(0); + buffer.put(getAsciiString(installationObject.getStfName())); + buffer.put(getUnicodeString(""));//buffer.put(getUnicodeString(installationObject.getCustomName())); + buffer.putInt(1);// int 1 // oper 3 + buffer.putShort((short)0); + + buffer.putInt(0); + buffer.putInt(0); + buffer.putLong(0); + + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + buffer.putInt(0); + buffer.put((byte)1); + buffer.put((byte)0); + buffer.putFloat(0.0F); + buffer.putFloat(0.0F); + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + +// 0000: 05 00 0C 5F A7 68 82 EC 7D 16 00 00 02 00 4F 53 ..._.h..}.....OS +// 0010: 4E 49 06 0E 00 00 00 05 00 76 00 00 00 00 00 00 NI.......v...... +// 0020: 00 01 00 00 00 ..... + + public IoBuffer buildBaseline6(InstallationObject installationObject) { + IoBuffer buffer = bufferPool.allocate(10, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + int packSize = 14; + buffer.putShort((short)5); + buffer.putInt(0x68A75F0C); + buffer.putLong(installationObject.getObjectID()); + buffer.putInt(0x494E534F); + buffer.put((byte)6); + buffer.putInt(packSize); + buffer.putShort((short)5); + buffer.putInt(0x76); + buffer.putInt(0); + buffer.putInt(1); + + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + + public IoBuffer buildBaseline7() { + IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.putShort((short) 0); + int size = buffer.position(); + buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size); + buffer.flip(); + buffer = createBaseline("INSO", (byte) 7, buffer, size); + + return buffer; + } + + public IoBuffer buildBaseline8() { + IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.putShort((short) 0); + int size = buffer.position(); + buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size); + buffer.flip(); + buffer = createBaseline("INSO", (byte) 8, buffer, size); + + return buffer; + } + + public IoBuffer buildBaseline9() { + IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.putShort((short) 0); + int size = buffer.position(); + buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size); + buffer.flip(); + buffer = createBaseline("INSO", (byte) 9, buffer, size); + + return buffer; + } + + public IoBuffer buildDelta3(InstallationObject installationObject,IoBuffer packet,int packSize) { + IoBuffer buffer = bufferPool.allocate(10, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(installationObject.getObjectID()); + buffer.putInt(0x494E534F); + buffer.put((byte)3); + buffer.putInt(packSize); + buffer.put(packet); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer buildDelta7(InstallationObject installationObject,IoBuffer packet,int packSize) { + IoBuffer buffer = bufferPool.allocate(10, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)5); + buffer.putInt(0x12862153); + buffer.putLong(installationObject.getObjectID()); + buffer.putInt(0x494E534F); + buffer.put((byte)7); + buffer.putInt(packSize); + buffer.put(packet); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } + + public IoBuffer constructINSO7Var1(InstallationObject installationObject,long selectedResource) { + IoBuffer buffer = bufferPool.allocate(10, false).order(ByteOrder.LITTLE_ENDIAN); + int hopperContentsSize = ((HarvesterObject)installationObject).getOutputHopperContent().size()+1; + byte updateCounter = ((HarvesterObject)installationObject).getUpdateCount(); + + buffer.setAutoExpand(true); + buffer.putShort((short)2); // buffer.putShort((short)updateCounter); + buffer.putShort((short)0xC); + buffer.put((byte)1); + buffer.putShort((short)0xD); + + buffer.putInt(1);//buffer.putInt(hopperContentsSize); // works once with 1! HopperContentsSize->Number of resources in hopper + buffer.putInt(2); // UpdateCounter works once with 2! + buffer.put((byte)1); // subtype : ADD + buffer.putShort((short)0); // index was 0 buffer.putShort((short)(hopperContentsSize-1)); + buffer.putLong(selectedResource); + buffer.putFloat(0); + int size = buffer.position(); + buffer.flip(); + return buildDelta7(installationObject,IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(),size); + } + +// 0000: 05 00 53 21 86 12 82 EC 7D 16 00 00 02 00 4F 53 ..S!....}.....OS +// 0010: 4E 49 07 1E 00 00 00 02 00 0C 00 01 0D 00 01 00 NI.............. +// 0020: 00 00 02 00 00 00 01 00 00 8A D3 79 16 00 00 0F ...........y.... +// 0030: 00 00 00 00 00 ..... + + public IoBuffer constructINSO7Var2(InstallationObject installationObject,long selectedResource) { + IoBuffer buffer = bufferPool.allocate(10, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + buffer.putShort((short)2); + buffer.putShort((short)0x9); + buffer.putFloat(0); + buffer.putShort((short)0x5); + buffer.putLong(selectedResource); + int size = buffer.position(); + buffer.flip(); + return buildDelta7(installationObject,IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(),size); + } + +// 0000: 05 00 53 21 86 12 82 EC 7D 16 00 00 02 00 4F 53 ..S!....}.....OS +// 0010: 4E 49 07 12 00 00 00 02 00 09 00 00 00 00 00 05 NI.............. +// 0020: 00 8A D3 79 16 00 00 0F 00 ...y..... + + @Override + public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) { + // TODO Auto-generated method stub + + } + + @Override + public void sendBaselines() { + + } } diff --git a/src/resources/objects/installation/InstallationObject.java b/src/resources/objects/installation/InstallationObject.java index 728de4a9..5a3870e7 100644 --- a/src/resources/objects/installation/InstallationObject.java +++ b/src/resources/objects/installation/InstallationObject.java @@ -23,9 +23,16 @@ package resources.objects.installation; import com.sleepycat.persist.model.Persistent; +import engine.resources.scene.Planet; +import engine.resources.scene.Point3D; +import engine.resources.scene.Quaternion; + import resources.objects.tangible.TangibleObject; @Persistent(version=0) public class InstallationObject extends TangibleObject { - -} + + public InstallationObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ + super(objectID, planet, template, position, orientation); + } +} \ No newline at end of file diff --git a/src/resources/objects/resource/ResourceContainerObject.java b/src/resources/objects/resource/ResourceContainerObject.java index b2a0eada..c5b84a9f 100644 --- a/src/resources/objects/resource/ResourceContainerObject.java +++ b/src/resources/objects/resource/ResourceContainerObject.java @@ -47,7 +47,7 @@ public class ResourceContainerObject extends TangibleObject { private CreatureObject proprietor; private String resourceType; - private String resourceClass; + private String resourceClass=""; private String resourceName; private byte generalType; private long referenceID; @@ -148,7 +148,7 @@ public class ResourceContainerObject extends TangibleObject { public void initializeStats(GalacticResource resource){ this.setResourceName(resource.getName()); - this.setResourceClass(resource.getResourceClass()); + this.setResourceClass(resource.getCategory()); this.setColdResistance(resource.getResourceStats()[0]); this.setConductivity(resource.getResourceStats()[1]); this.setDecayResistance(resource.getResourceStats()[2]); diff --git a/src/services/DevService.java b/src/services/DevService.java index ef265f41..b5f0e2d3 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -38,6 +38,7 @@ import resources.common.Opcodes; import resources.common.SpawnPoint; import resources.objects.building.BuildingObject; import resources.objects.creature.CreatureObject; +import resources.objects.deed.Harvester_Deed; import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; import resources.objects.tool.SurveyTool; @@ -84,6 +85,7 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 21, "Weapons"); suiOptions.put((long) 22, "Misc Items"); suiOptions.put((long) 23, "Jedi Items"); + suiOptions.put((long) 26, "Installations"); suiOptions.put((long) 110, "Survey Devices"); if(creature.getClient().isGM()) suiOptions.put((long) 120, "House Deeds"); break; @@ -122,6 +124,10 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 91, "(Dark) Jedi Robe"); suiOptions.put((long) 92, "Belt of Master Bodo Baas"); break; + case 10: // [Items] Jedi Items + suiOptions.put((long) 111, "Harvesters"); + suiOptions.put((long) 112, "Energy resources"); + break; } @@ -187,6 +193,9 @@ public class DevService implements INetworkDispatch { case 25: // Tools sendCharacterBuilderSUI(player, 15); return; + case 26: // Installations + sendCharacterBuilderSUI(player, 10); + return; // [Items] Weapons case 30: // Jedi Weapons @@ -992,7 +1001,196 @@ public class DevService implements INetworkDispatch { solarSurveyTool.setCustomName("Solar Survey Device"); inventory.add(solarSurveyTool); return; + case 111: + // Minerals + String templateString="object/tangible/deed/harvester_deed/shared_harvester_ore_s1_deed.iff"; + Harvester_Deed deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(5); + deed1.setAttributes(); + inventory.add(deed1); + templateString="object/tangible/deed/harvester_deed/shared_harvester_ore_s2_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(11); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_ore_heavy_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(135400); + deed1.setBER(14); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_ore_deed_elite.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(44); + deed1.setAttributes(); + inventory.add(deed1); + + + // Chemicals + templateString="object/tangible/deed/harvester_deed/shared_harvester_liquid_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(5); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_liquid_deed_medium.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(11); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_liquid_deed_heavy.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(135400); + deed1.setBER(14); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_liquid_deed_elite.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(44); + deed1.setAttributes(); + inventory.add(deed1); + + + // Flora + templateString="object/tangible/deed/harvester_deed/shared_harvester_flora_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(5); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_flora_deed_medium.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(11); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_flora_deed_heavy.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(135400); + deed1.setBER(14); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_flora_deed_elite.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(44); + deed1.setAttributes(); + inventory.add(deed1); + + + // Gas + templateString="object/tangible/deed/harvester_deed/shared_harvester_gas_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(5); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_gas_deed_medium.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(11); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_gas_deed_heavy.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(135400); + deed1.setBER(14); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_gas_deed_elite.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(44); + deed1.setAttributes(); + inventory.add(deed1); + + + // Water + templateString="object/tangible/deed/harvester_deed/shared_harvester_moisture_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(5); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_moisture_deed_medium.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(27344); + deed1.setBER(11); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_moisture_deed_heavy.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(135400); + deed1.setBER(14); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/harvester_deed/shared_harvester_moisture_deed_elite.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(44); + deed1.setAttributes(); + inventory.add(deed1); + + + // Generators + templateString="object/tangible/deed/generator_deed/shared_generator_fusion_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(19); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/generator_deed/shared_generator_wind_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(10); + deed1.setAttributes(); + inventory.add(deed1); + + templateString="object/tangible/deed/generator_deed/shared_generator_solar_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(15); + deed1.setAttributes(); + inventory.add(deed1); + +// templateString="object/tangible/deed/generator_deed/shared_generator_photo_bio_deed.iff"; +// deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); +// deed1.setOutputHopperCapacity(250000); +// deed1.setBER(19); +// inventory.add(deed1); + + templateString="object/tangible/deed/generator_deed/shared_generator_geothermal_deed.iff"; + deed1 = (Harvester_Deed)core.objectService.createObject(templateString, planet); + deed1.setOutputHopperCapacity(250000); + deed1.setBER(15); + deed1.setAttributes(); + inventory.add(deed1); + + break; + case 112: + core.resourceService.spawnSpecificResourceContainer("Radioactive", player, 100000); + break; case 120: SWGObject houseDeed = core.objectService.createObject("object/tangible/deed/player_house_deed/shared_generic_house_small_deed.iff", planet); inventory.add(houseDeed); diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 34e02ecf..82345d06 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -48,6 +48,7 @@ import protocol.swg.objectControllerObjects.CommandEnqueueRemove; import protocol.swg.objectControllerObjects.ShowFlyText; import protocol.swg.objectControllerObjects.StartTask; import resources.objects.creature.CreatureObject; +import resources.objects.harvester.HarvesterObject; import resources.objects.tangible.TangibleObject; import resources.objects.weapon.WeaponObject; @@ -137,7 +138,7 @@ public class CommandService implements INetworkDispatch { target = actor; } - if (target != actor) { + if (target != actor && target instanceof CreatureObject) { return false; } @@ -521,6 +522,45 @@ public class CommandService implements INetworkDispatch { } }); + + objControllerOpcodes.put(ObjControllerOpcodes.RESOURCE_EMPTY_HOPPER, new INetworkRemoteEvent() { + + @Override + public void handlePacket(IoSession session, IoBuffer data) throws Exception { + data.order(ByteOrder.LITTLE_ENDIAN); + Client client = core.getClient(session); + CommandEnqueue commandEnqueue = new CommandEnqueue(); + +// StringBuilder sb = new StringBuilder(); +// for (byte b : data.array()) { +// sb.append(String.format("%02X ", b)); +// } +// System.out.println(sb.toString()); + + /* + 05 00 46 5E CE 80 83 00 00 00 ED 00 00 00 3E 45 + 04 00 00 00 00 00 00 00 00 00 3E 45 04 00 00 00 + 00 00 90 52 05 00 00 00 00 00 D7 35 05 00 00 00 + 00 00 01 00 00 00 00 07 + */ + + long playerId = data.getLong(); // 3E 45 04 00 00 00 00 00 + data.getInt(); // 00 00 00 00 + data.getLong(); // 3E 45 04 00 00 00 00 00 + long harvesterId = data.getLong(); // 1E 55 05 00 00 00 00 00 + //long containerId = data.getLong(); // 1E 55 05 00 00 00 00 00 Resources ID + long resourceId = data.getLong(); // 1E 55 05 00 00 00 00 00 Resources ID + int stackCount = data.getInt(); // Stack count + byte actionMode = data.get(); // 0 for retrieving, 1 for discarding + byte updateCount = data.get(); // updateCount + + CreatureObject actor = (CreatureObject) client.getParent(); + SWGObject target = core.objectService.getObject(harvesterId); + + core.harvesterService.handleEmptyHopper(actor,target,harvesterId,resourceId,stackCount,actionMode,updateCount); + } + }); + } diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index 61aba9b9..b3dbb5bd 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -96,8 +96,11 @@ import resources.objects.Delta; import resources.objects.building.BuildingObject; import resources.objects.cell.CellObject; import resources.objects.creature.CreatureObject; +import resources.objects.deed.Harvester_Deed; import resources.objects.group.GroupObject; import resources.objects.guild.GuildObject; +import resources.objects.harvester.HarvesterObject; +import resources.objects.installation.InstallationObject; import resources.objects.intangible.IntangibleObject; import resources.objects.mission.MissionObject; import resources.objects.player.PlayerObject; @@ -314,7 +317,11 @@ public class ObjectService implements INetworkDispatch { object = new SurveyTool(objectID, planet, Template, position, orientation); - }else if(Template.startsWith("object/tangible")) { + } else if(Template.startsWith("object/tangible/deed/harvester_deed") || Template.startsWith("object/tangible/deed/generator_deed")) { + + object = new Harvester_Deed(objectID, planet, Template, position, orientation); + + } else if(Template.startsWith("object/tangible")) { object = new TangibleObject(objectID, planet, Template, position, orientation); @@ -370,7 +377,22 @@ public class ObjectService implements INetworkDispatch { object = new ResourceContainerObject(objectID, planet, Template, position, orientation); - }else { + } else if(Template.startsWith("object/installation/mining_ore/construction")) { + + float positionY = core.terrainService.getHeight(planet.getID(), position.x, position.z)-1f; + Point3D newpoint = new Point3D(position.x,positionY,position.z); + object = new InstallationObject(objectID, planet, Template, newpoint, orientation); + + } else if(Template.startsWith("object/installation/mining_ore") || Template.startsWith("object/installation/mining_liquid") || + Template.startsWith("object/installation/mining_gas") || Template.startsWith("object/installation/mining_organic") || + Template.startsWith("object/installation/generators")) { + + float positionY = core.terrainService.getHeight(planet.getID(), position.x, position.z)-1f; + Point3D newpoint = new Point3D(position.x,positionY,position.z); + object = new HarvesterObject(objectID, planet, Template, newpoint, orientation); + core.harvesterService.addHarvester(object); + + } else { return null; } diff --git a/src/services/resources/HarvesterService.java b/src/services/resources/HarvesterService.java new file mode 100644 index 00000000..11c17dfe --- /dev/null +++ b/src/services/resources/HarvesterService.java @@ -0,0 +1,1070 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package services.resources; + +import java.util.Collections; +import java.util.Comparator; +import java.util.Map; +import java.util.Random; +import java.util.Vector; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; +import protocol.swg.EnterStructurePlacementModeMessage; +import protocol.swg.SceneCreateObjectByCrc; +import protocol.swg.SceneDestroyObject; +import protocol.swg.SceneEndBaselines; +import main.NGECore; +import engine.resources.common.CRC; +import engine.resources.container.Traverser; +import engine.resources.objects.SWGObject; +import engine.resources.scene.Point3D; +import engine.resources.scene.Quaternion; +import engine.resources.service.INetworkDispatch; +import engine.resources.service.INetworkRemoteEvent; +import resources.objects.creature.CreatureObject; +import resources.objects.deed.Harvester_Deed; +import resources.objects.harvester.HarvesterMessageBuilder; +import resources.objects.harvester.HarvesterObject; +import resources.objects.installation.InstallationObject; +import resources.objects.player.PlayerObject; +import resources.objects.resource.GalacticResource; +import resources.objects.resource.ResourceContainerObject; +import resources.objects.resource.ResourceRoot; +import resources.objects.tangible.TangibleObject; +import resources.objects.waypoint.WaypointObject; +import services.sui.SUIWindow; +import services.sui.SUIWindow.SUICallback; +import services.sui.SUIWindow.Trigger; + +/** + * @author Charon + */ + +public class HarvesterService implements INetworkDispatch { + + private NGECore core; + private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + + private Vector allHarvesters = new Vector(); + private Vector allConstructors = new Vector(); + + public HarvesterService(NGECore core) { + this.core = core; + //core.commandService.registerCommand("permissionlistmodify"); + //core.commandService.registerCommand("harvesterselectresource"); + //core.commandService.registerCommand("harvesteractivate"); + //core.commandService.registerCommand("harvesterdeactivate"); + //core.commandService.registerCommand("harvesterdiscardhopper"); + //core.commandService.registerCommand("harvestergetresourcedata"); + //core.commandService.registerCommand("resourceemptyhopper"); + //core.commandService.registerCommand("placestructure"); + //generateNoBuildData(); + scheduleHarvesterService(); + } + + @Override + public void insertOpcodes(Map swgOpcodes, Map objControllerOpcodes) { + + + } + + + public void scheduleHarvesterService(){ + + final ScheduledFuture task = scheduler.scheduleAtFixedRate(new Runnable() { + + @Override + public void run() { + ServiceProcessing(); + } + + }, 10, 5000, TimeUnit.MILLISECONDS); + + } + + public void ServiceProcessing(){ + synchronized(allHarvesters){ + for (HarvesterObject harvester : allHarvesters){ + updateHarvester(harvester); + } + } + synchronized(allConstructors){ + Vector removeConstructors = new Vector(); + for (InstallationObject constructor : allConstructors){ + boolean readyToBuild = checkBuildTime(constructor); + if (readyToBuild) + removeConstructors.add(constructor); + } + allConstructors.removeAll(removeConstructors); + } + } + + + public void addHarvester(SWGObject harvester){ + synchronized(allHarvesters){ + allHarvesters.add((HarvesterObject)harvester); + } + } + + public void removeHarvester(SWGObject harvester){ + synchronized(allHarvesters){ + allHarvesters.remove((HarvesterObject)harvester); + } + } + + public boolean checkBuildTime(InstallationObject installation){ + boolean value = false; + long startTime = (long) installation.getAttachment("ConstructionStart"); + if (startTime+50000){ + String[] helper = ownerName.split(" "); + ownerName = helper[0]; + } + + String maintenancePool_string = ""+(int)harvester.getMaintenanceAmount(); + int hourlyMaintenance = harvester.getMaintenanceCost(); + float totalNumberOfHours = (float)harvester.getMaintenanceAmount()/hourlyMaintenance; + float minuteFraction = ((totalNumberOfHours * 100) % 100) / 100; + int nDays = (int)totalNumberOfHours / 24; + float difference = totalNumberOfHours % 24; + int nHours = (int)difference; + int nMinutes = (int)(minuteFraction *60); + maintenancePool_string += " (" + nDays + " days, " + nHours + " hours, " + nMinutes + " minutes)"; + // Power reserves calculation + String powerReserves_string = ""+(int)harvester.getPowerLevel(); + int hourlyPower = harvester.getPowerCost(); + totalNumberOfHours = (float)harvester.getPowerLevel()/hourlyPower; + minuteFraction = ((totalNumberOfHours * 100) % 100) / 100; + nDays = (int)totalNumberOfHours / 24; + difference = totalNumberOfHours % 24; + nHours = (int)difference; + nMinutes = (int)(minuteFraction *60); + powerReserves_string += " (" + nDays + " days, " + nHours + " hours, " + nMinutes + " minutes)"; + + window.addListBoxMenuItem("@player_structure:owner_prompt" + " " + ownerName, 0); + window.addListBoxMenuItem("@player_structure:structure_public", 1); + window.addListBoxMenuItem("@player_structure:condition_prompt" + " " + target.getConditionDamage(), 2); + window.addListBoxMenuItem("@player_structure:maintenance_pool_prompt " + maintenancePool_string, 3); + window.addListBoxMenuItem("@player_structure:maintenance_rate_prompt " + harvester.getMaintenanceCost() + " cr/h", 4); // @player_structure:credits_per_hour + window.addListBoxMenuItem("@player_structure:maintenance_mods_prompt", 5); + window.addListBoxMenuItem("@player_structure:power_reserve_prompt " + powerReserves_string, 6); + window.addListBoxMenuItem("@player_structure:power_consumption_prompt " + harvester.getPowerCost() + " @player_structure:units_per_hour", 7); + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@ok"); + window.setProperty("btnCancel:Text", "@cancel"); + Vector returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void createPayMaintenanceSUIPage(SWGObject owner, TangibleObject target) { + CreatureObject creature = (CreatureObject) owner; + final HarvesterObject harvester = (HarvesterObject)target; + final SUIWindow window = core.suiService.createSUIWindow("Script.transfer", owner, target, 10); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:select_amount"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:select_maint_amount" + + "\n \n @player_structure:current_maint_pool : " + (int)harvester.getMaintenanceAmount()); + + window.setProperty("msgPayMaintenance", "transaction.txtInputFrom"); + + window.setProperty("transaction.lblFrom:Text", "@player_structure:total_funds"); + window.setProperty("transaction.lblTo:Text", "@player_structure:to_pay"); + window.setProperty("transaction.lblFrom", "@player_structure:total_funds"); + window.setProperty("transaction.lblTo", "@player_structure:to_pay"); + + window.setProperty("transaction.lblStartingFrom:Text", ""+creature.getCashCredits()); + window.setProperty("transaction.lblStartingTo:Text", "0"); + + window.setProperty("transaction:InputFrom", "555555"); + window.setProperty("transaction:InputTo", "666666"); + + window.setProperty("transaction:txtInputFrom", ""+creature.getCashCredits()); + window.setProperty("transaction:txtInputTo", "1"); + window.setProperty("transaction.txtInputFrom:Text", ""+creature.getCashCredits()); + window.setProperty("transaction.txtInputTo:Text", "" + "0"); + + window.setProperty("transaction.ConversionRatioFrom", "1"); + window.setProperty("transaction.ConversionRatioTo", "0"); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@ok"); + window.setProperty("btnCancel:Text", "@cancel"); + + Vector returnList = new Vector(); + returnList.add("transaction.txtInputFrom:Text"); + returnList.add("transaction.txtInputTo:Text"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject crafter = (CreatureObject)owner; + crafter.setCashCredits(crafter.getCashCredits() - Integer.parseInt(returnList.get(1))); + harvester.setMaintenanceAmount(harvester.getMaintenanceAmount()+Float.parseFloat(returnList.get(1))); + //String displayname = "@installation_n:"+harvester.getStfName(); + String displayname = "the structure"; + if (harvester.getCustomName()!=null) + displayname = harvester.getCustomName(); + crafter.sendSystemMessage("You successfully make a payment of " + Integer.parseInt(returnList.get(1)) + " credits to " + displayname + ".", (byte) 0); + core.suiService.closeSUIWindow(owner, 0); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject crafter = (CreatureObject)owner; + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void createRenameSUIPage(SWGObject owner, TangibleObject target) { + //updateHarvester(owner, target); + final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); + Vector returnList = new Vector(); + returnList.add("txtInput:LocalText"); + final TangibleObject outerSurveyTool = target; + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.harvesterService.handleSetName((CreatureObject)owner, (TangibleObject)outerSurveyTool,returnList.get(0)); + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + + public void createDestroySUIPage(final SWGObject owner, final TangibleObject target) { + + // "\\#32CD32 @player_structure:confirm_destruction_d3b \#" + + final HarvesterObject harvester = (HarvesterObject)target; + // harvester.getStfFilename(); installation_n .getTemplate(); + String displayname = "@installation_n:"+harvester.getStfName(); + if (harvester.getCustomName()!=null) + displayname = harvester.getCustomName(); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", displayname); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:confirm_destruction_d1 " + + "@player_structure:confirm_destruction_d2 " + + "\n \n @player_structure:confirm_destruction_d3a " + + "\\#32CD32 @player_structure:confirm_destruction_d3b \\#FFFFFF " + + "@player_structure:confirm_destruction_d4 "); + if (harvester.getConditionDamage()<20 && harvester.getMaintenanceAmount()<3000){ + window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#BB0000 @player_structure:can_redeed_no_suffix \\#FFFFFF ",1 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#32CD32 @player_structure:can_redeed_yes_suffix \\#FFFFFF ",1 ); + } + if (harvester.getConditionDamage()<20){ + window.addListBoxMenuItem("@player_structure:redeed_condition \\#BB0000 " + harvester.getConditionDamage() + " \\#FFFFFF ",1 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_condition \\#32CD32 " + harvester.getConditionDamage() + " \\#FFFFFF ",1 ); + } + if (harvester.getMaintenanceAmount()<0){ + window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#BB0000 " + (int)harvester.getMaintenanceAmount() + " \\#FFFFFF ",2 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#32CD32 " + (int)harvester.getMaintenanceAmount() + " \\#FFFFFF ",2 ); + } + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + createCodeWindow(owner, target); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void createCodeWindow(SWGObject owner, TangibleObject target) { + + // "\\#32CD32 @player_structure:confirm_destruction_d3b \#" + + final HarvesterObject harvester = (HarvesterObject)target; + // harvester.getStfFilename(); installation_n .getTemplate(); + Random rnd = new Random(); + final int confirmCode = 100000 + rnd.nextInt(900000); + final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:confirm_destruction_t"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:your_structure_prefix " + + "\\#32CD32 @player_structure:will_redeed_confirm \\#FFFFFF "+ + "@player_structure:will_redeed_suffix " + + "\n \n Code: " + confirmCode); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + returnList.add("txtInput:LocalText"); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject crafter = (CreatureObject)owner; + core.suiService.closeSUIWindow(owner, 0); + if (returnList.get(0).equals(""+confirmCode)){ + // handle creation of correct deed in player inventory + PlayerObject player = (PlayerObject) crafter.getSlottedObject("ghost"); + String deedTemplate = harvester.getDeedTemplate(); + Harvester_Deed deed = (Harvester_Deed)core.objectService.createObject(deedTemplate, owner.getPlanet()); + if(player.getLotsRemaining()+deed.getLotRequirement()>10){ + // Something went wrong or hacking attempt + crafter.sendSystemMessage("Structure can't be redeeded. Maximum lot count exceeded.",(byte)1); + return; + } + + deed.setStructureTemplate(harvester.getTemplate()); + deed.setOutputHopperCapacity(harvester.getOutputHopperCapacity()); + deed.setBER(harvester.getBER()); + deed.setSurplusMaintenance((int)harvester.getMaintenanceAmount()); + deed.setSurplusPower((int)harvester.getPowerLevel()); + deed.setAttributes(); + + SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(harvester.getObjectID()); + owner.getClient().getSession().write(destroyObjectMsg.serialize()); + core.objectService.destroyObject(harvester.getObjectID()); + + SWGObject crafterInventory = owner.getSlottedObject("inventory"); + crafterInventory.add(deed); + + if(player.getLotsRemaining()+deed.getLotRequirement()<=10) + player.setLotsRemaining(player.getLotsRemaining()+deed.getLotRequirement()); + + crafter.sendSystemMessage("@player_structure:processing_destruction",(byte)1); + crafter.sendSystemMessage("@player_structure:deed_reclaimed",(byte)1); + + } else { + crafter.sendSystemMessage("@player_structure:incorrect_destroy_code",(byte)1); + } + + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void handleOperateMachinery(CreatureObject owner, TangibleObject target) { + + HarvesterObject harvester = (HarvesterObject) target; + harvester.operateMachinery(owner); + } + + public void handleDestroy(SWGObject owner, TangibleObject target) { + + HarvesterObject harvester = (HarvesterObject) target; + // Assemble resources at that spot + // For later, it might be needed to also pass the template to differentiate liquid resources + Vector planetVector = core.resourceService.getSpawnedResourcesByPlanetAndHarvesterType(target.getPlanetId(),harvester.getHarvester_type()); + HarvesterMessageBuilder messenger = new HarvesterMessageBuilder((HarvesterObject)target); + owner.getClient().getSession().write(messenger.buildHINOBaseline7((HarvesterObject)target, planetVector)); + } + + public void handleSetName(CreatureObject owner, TangibleObject target,String name) { + + ((HarvesterObject) target).setHarvesterName(name,owner); + } + + public void handleDepositPower(SWGObject owner, TangibleObject target) { + + CreatureObject creature = (CreatureObject) owner; + final HarvesterObject harvester = (HarvesterObject) target; + int playerEnergyLevel = 0; + playerEnergyLevel = calculateTotalPlayerEnergy(creature); + + final SUIWindow window = core.suiService.createSUIWindow("Script.transfer", owner, target, 10); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:add_power"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:select_power_amount"+ + "\n \n @player_structure:current_power_value " + (int)harvester.getPowerLevel()); + window.setProperty("transaction.txtInputFrom:Text", "" + playerEnergyLevel); + window.setProperty("transaction.txtInputTo:Text", "" + "0"); + window.setProperty("transaction.lblFrom:Text", "@player_structure:total_energy"); + window.setProperty("transaction.lblTo:Text", "@player_structure:to_deposit"); + window.setProperty("transaction:InputFrom", "5555"); + window.setProperty("transaction:InputTo", "6666"); + window.setProperty("transaction.lblStartingFrom:Text", ""+playerEnergyLevel); + window.setProperty("transaction.lblStartingTo:Text", "0"); + window.setProperty("transaction.ConversionRatioFrom", "0"); + window.setProperty("transaction.ConversionRatioTo", "1"); + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@ok"); + window.setProperty("btnCancel:Text", "@cancel"); + + Vector returnList = new Vector(); + returnList.add("transaction.txtInputFrom:Text"); + returnList.add("transaction.txtInputTo:Text"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject crafter = (CreatureObject)owner; + harvester.setPowerLevel(harvester.getPowerLevel()+Integer.parseInt(returnList.get(1))); + updateEnergyInventoryContainers(crafter,Integer.parseInt(returnList.get(1))); + crafter.sendSystemMessage("You successfully deposit " + Integer.parseInt(returnList.get(1)) + " units of energy.", (byte) 0); + crafter.sendSystemMessage("Energy reserves now at " + (int)harvester.getPowerLevel() + " units.", (byte) 0); + core.suiService.closeSUIWindow(owner, 0); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public int calculateTotalPlayerEnergy(CreatureObject owner){ + // final int energy = 0; Doesn't work with generic types + int energy = 0; + final Vector energyVector = new Vector(); + TangibleObject playerInventory = (TangibleObject) owner.getSlottedObject("inventory"); + playerInventory.viewChildren(owner, false, false, new Traverser() { + @Override + public void process(SWGObject obj) { + + if (obj instanceof ResourceContainerObject){ + ResourceContainerObject container = (ResourceContainerObject) obj; + if (container.getResourceClass()==null)System.out.println("container.getResourceClass()==null " + container.getTemplate()); + if (container.getResourceClass().equals("Radioactive") || + container.getResourceClass().equals("Wind Renewable Energy") || + container.getResourceClass().equals("Solar Renewable Energy") || + container.getResourceClass().equals("Geothermal Renewable Energy") || + container.getResourceClass().equals("Tidal Renewable Energy") || + container.getResourceClass().equals("Hydron-3 Renewable Energy")) { + energyVector.add(container.getStackCount()); + } + } + } + /* + public void process(SWGObject a1) { + if(!(a1 instanceof PlayerObject) && a1 != null) { + if(a1.getClient() != null && a1 != a.this$0) { + a1.makeAware(a.this$0); + } + a.this$0.makeAware(a1); + } + } + } + */ + }); + + for (Integer value : energyVector){ + energy += value; + } + return energy; + } + + /* + * This is deducting the deposited power from the inventory + */ + public void updateEnergyInventoryContainers(SWGObject owner, int deductedEnergy){ + + final Vector containerVector = new Vector(); + TangibleObject playerInventory = (TangibleObject) owner.getSlottedObject("inventory"); + playerInventory.viewChildren(owner, false, false, new Traverser() { + @Override + public void process(SWGObject obj) { + // is energy resource? + if (obj instanceof ResourceContainerObject){ + ResourceContainerObject container = (ResourceContainerObject) obj; + if (container.getResourceClass().equals("Radioactive") || + container.getResourceClass().equals("Wind Renewable Energy") || + container.getResourceClass().equals("Solar Renewable Energy") || + container.getResourceClass().equals("Geothermal Renewable Energy") || + container.getResourceClass().equals("Tidal Renewable Energy") || + container.getResourceClass().equals("Hydron-3 Renewable Energy")) { + containerVector.add(container); + } + } + } + }); + + Comparator comp = new ResourceContainerObjectComparator(); + Collections.sort(containerVector, comp); + + for (int i=containerVector.size()-1;i >= 0; i--){ + int containerEnergy = containerVector.get(i).getStackCount(); + if (containerEnergy <= deductedEnergy){ + deductedEnergy -= containerEnergy; + playerInventory._remove(containerVector.get(i)); + SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(containerVector.get(i).getObjectID()); + owner.getClient().getSession().write(destroyObjectMsg.serialize()); + } else { + containerEnergy -= deductedEnergy; + containerVector.get(i).setStackCount(containerEnergy,(CreatureObject)owner); + playerInventory._remove(containerVector.get(i)); + playerInventory._add(containerVector.get(i)); + +// ResourceMessenger messenger = new ResourceMessenger(IoBuffer.allocate(1)); +// owner.getClient().getSession().write(messenger.serialize_buildRCNO3Delta(containerVector.get(i).getObjectID(),containerEnergy)); + } + } + } + + public class ResourceContainerObjectComparator implements Comparator { + + @Override + public int compare(ResourceContainerObject b1, ResourceContainerObject b2) { + if (b1.getStackCount() == b2.getStackCount()) { + return 0; + } + if (b1.getStackCount() > b2.getStackCount()) { + return 1; + } + if (b1.getStackCount() < b2.getStackCount()) { + return -1; + } + return 0; + } + } + + public void handlePermissionAdmin(CreatureObject owner, TangibleObject target) { + + String listName = "ADMIN"; + ((HarvesterObject) target).setPermissionAdmin(listName,owner); + } + + public void handlePermissionHopper(CreatureObject owner, TangibleObject target) { + + String listName = "HOPPER"; + ((HarvesterObject) target).setPermissionHopper(listName,owner); + } + + public void handlePermissionListModify(CreatureObject crafter, SWGObject target, String commandArgs){ + + String[] commandSplit = commandArgs.split(" "); + if (commandSplit.length==3){ + if (core.characterService.playerExists(commandSplit[2])){ + if (commandSplit[2].equals("ADMIN")){ + Vector adminList = ((HarvesterObject)target).getAdminList(); + if (commandSplit[0].equals("add") && (!adminList.contains(commandSplit[2]))){ + crafter.sendSystemMessage(commandSplit[2] + " added as administrator", (byte) 0); + adminList.add(commandSplit[2]); + ((HarvesterObject)target).setAdminList(adminList); + } + if (commandSplit[0].equals("remove") && (adminList.contains(commandSplit[2]))){ + crafter.sendSystemMessage(commandSplit[2] + " removed as administrator", (byte) 0); + adminList.remove(commandSplit[2]); + ((HarvesterObject)target).setAdminList(adminList); + } + } + if (commandSplit[2].equals("HOPPER")){ + Vector hopperList = ((HarvesterObject)target).getHopperList(); + if (commandSplit[0].equals("add") && (!hopperList.contains(commandSplit[2]))){ + crafter.sendSystemMessage(commandSplit[2] + " added as administrator", (byte) 0); + hopperList.add(commandSplit[2]); + ((HarvesterObject)target).setHopperList(hopperList); + } + if (commandSplit[0].equals("remove") && (hopperList.contains(commandSplit[2]))){ + crafter.sendSystemMessage(commandSplit[2] + " removed as administrator", (byte) 0); + hopperList.remove(commandSplit[2]); + ((HarvesterObject)target).setHopperList(hopperList); + } + } + } else { + crafter.sendSystemMessage(commandSplit[2]+ " is an invalid player name", (byte) 0); + } + } + if (commandSplit.length==2){ + crafter.sendSystemMessage("No name was entered", (byte) 0); + } + + } + + public void handleHarvesterSelectResourceCommand(CreatureObject owner, SWGObject target, String commandArgs){ + + long selectedResourceId = Long.parseLong(commandArgs); + GalacticResource resource = core.resourceService.findResourceById(selectedResourceId); + ((HarvesterObject) target).setSelectedHarvestResource(resource,owner); + } + + public void handleHarvesterActivateCommand(CreatureObject owner, SWGObject target, String commandArgs){ + + + if (((HarvesterObject)target).getPowerLevel()<=0 && !((HarvesterObject)target).isGenerator()){ + ((CreatureObject)owner).sendSystemMessage("The installation is lacking power.", (byte) 0); + return; + } + if (((HarvesterObject)target).getMaintenanceAmount()<=0){ + ((CreatureObject)owner).sendSystemMessage("The installation is lacking maintenance.", (byte) 0); + return; + } + + + ((HarvesterObject)target).activateHarvester(owner); + } + + public void handleHarvesterDeactivateCommand(CreatureObject owner, SWGObject target, String commandArgs){ + + ((HarvesterObject)target).deactivateHarvester(owner); + } + + public void handleEmptyHopper(CreatureObject owner,SWGObject target,long harvesterId, long resourceId, int stackcount, byte actionMode, byte updateCount){ + + HarvesterMessageBuilder messenger = new HarvesterMessageBuilder((HarvesterObject)target); + //DiscardResourceResponse + owner.getClient().getSession().write(messenger.buildDiscardResourceResponse((HarvesterObject)target, actionMode, updateCount,owner)); + + + ResourceContainerObject foundContainer = null; + Vector hopperContent = ((HarvesterObject) target).getOutputHopperContent(); + for (ResourceContainerObject cont : hopperContent){ + if (cont.getReferenceID()==resourceId){ + foundContainer = cont; + } + } + if (foundContainer==null) + return; // something went wrong + + if (foundContainer.getStackCount()==stackcount){ + ((HarvesterObject) target).setCurrentHarvestedCountFloat(1); + foundContainer.setStackCount(0, owner); + } else { + ((HarvesterObject) target).setCurrentHarvestedCountFloat(foundContainer.getStackCount()-stackcount); + foundContainer.setStackCount(foundContainer.getStackCount()-stackcount,owner); + } + ((HarvesterObject) target).setOutputHopperContent(hopperContent); + + // <<< + Vector planetResourcesVector = core.resourceService.getSpawnedResourcesByPlanetAndHarvesterType(target.getPlanetId(),((HarvesterObject)target).getHarvester_type()); + owner.getClient().getSession().write(messenger.buildHINOBaseline7((HarvesterObject)target, planetResourcesVector)); + owner.getClient().getSession().write(messenger.buildHINO7ExperimentalDelta2((HarvesterObject)target)); + // >> + + hopperContent = ((HarvesterObject) target).getOutputHopperContent(); + for (ResourceContainerObject cont : hopperContent){ + if (cont.getReferenceID()==resourceId){ + foundContainer = cont; + } + } + + // create retrieved resource container + GalacticResource sampleResource = core.resourceService.findResourceById(resourceId); + String resourceContainerIFF = ResourceRoot.CONTAINER_TYPE_IFF_SIGNIFIER[sampleResource.getResourceRoot().getContainerType()]; + ResourceContainerObject containerObject = (ResourceContainerObject) core.objectService.createObject(resourceContainerIFF, owner.getPlanet()); + containerObject.initializeStats(sampleResource); + containerObject.setProprietor(owner); + containerObject.setStackCount(stackcount,owner); + containerObject.setIffFileName(resourceContainerIFF); + SWGObject crafterInventory = owner.getSlottedObject("inventory"); +// containerObject.sendBaselines(owner.getClient()); +// SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(containerObject.getObjectID()); +// owner.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); +// tools.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); + crafterInventory.add(containerObject); + } + + + public void handleEmptyHarvester(CreatureObject owner, SWGObject target, String commandArgs){ + + HarvesterMessageBuilder messenger = new HarvesterMessageBuilder((HarvesterObject)target); + Vector hopperContent = ((HarvesterObject) target).getOutputHopperContent(); + Vector deleteContent = new Vector(); + + for (ResourceContainerObject cont : hopperContent){ + ResourceContainerObject foundContainer = cont; + + if (foundContainer==null) + return; // something went wrong + + long resourceId = foundContainer.getReferenceID(); + int stackcount = foundContainer.getStackCount(); + + SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(resourceId); + owner.getClient().getSession().write(destroyObjectMsg.serialize()); + + // create retrieved resource container + GalacticResource sampleResource = core.resourceService.findResourceById(resourceId); + String resourceContainerIFF = ResourceRoot.CONTAINER_TYPE_IFF_SIGNIFIER[sampleResource.getResourceRoot().getContainerType()]; + ResourceContainerObject containerObject = (ResourceContainerObject) core.objectService.createObject(resourceContainerIFF, owner.getPlanet()); + containerObject.initializeStats(sampleResource); + containerObject.setProprietor(owner); + containerObject.setStackCount(stackcount,owner); + int resCRC = CRC.StringtoCRC(resourceContainerIFF); + containerObject.setIffFileName(resourceContainerIFF); + + long objectId = containerObject.getObjectID(); + SWGObject crafterInventory = owner.getSlottedObject("inventory"); + +// SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(objectId, owner.getOrientation().x, owner.getOrientation().y, owner.getOrientation().z, owner.getOrientation().w, owner.getPosition().x, owner.getPosition().y, owner.getPosition().z, resCRC, (byte) 0); +// owner.getClient().getSession().write(createObjectMsg.serialize()); +// tools.CharonPacketUtils.printAnalysis(createObjectMsg.serialize()); +// +// containerObject.sendBaselines(owner.getClient()); +// +// SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(containerObject.getObjectID()); +// owner.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); +// tools.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); + + crafterInventory.add(containerObject); + + if (cont.getReferenceID()!=((HarvesterObject) target).getSelectedHarvestResource().getId()){ + deleteContent.add(cont); + } else { + ((HarvesterObject) target).setCurrentHarvestedCountFloat(0); + foundContainer.setStackCount(0,owner); + } + } + hopperContent.removeAll(deleteContent); + + ((HarvesterObject) target).setOutputHopperContent(hopperContent); + + Vector planetResourcesVector = core.resourceService.getSpawnedResourcesByPlanetAndHarvesterType(target.getPlanetId(),((HarvesterObject)target).getHarvester_type()); + owner.getClient().getSession().write(messenger.buildHINOBaseline7((HarvesterObject)target, planetResourcesVector)); + owner.getClient().getSession().write(messenger.buildHINO7ExperimentalDelta2((HarvesterObject)target)); + } + + public void updateHarvester(HarvesterObject harvester){ + + + if(harvester.isActivated()) + { + // Check maintenance and power + if (harvester.getMaintenanceAmount()<=0){ + CreatureObject owner = (CreatureObject)harvester.getOwner(); + owner.sendSystemMessage("The installation is lacking maintenance.", (byte) 0); + // ToDo: Send mail + harvester.deactivateHarvester(owner); + return; + } + + if (harvester.getPowerLevel()<=0 && !harvester.isGenerator()){ + CreatureObject owner = (CreatureObject)harvester.getOwner(); + owner.sendSystemMessage("The installation is lacking power.", (byte) 0); + // ToDo: Send mail + harvester.deactivateHarvester(owner); + return; + } + + harvester.setMaintenanceAmount(harvester.getMaintenanceAmount()-(harvester.getMaintenanceCost()/3600.0F)); + harvester.setPowerLevel(harvester.getPowerLevel()-(harvester.getPowerCost()/3600.0F)); + + Vector outputHopperContent = harvester.getOutputHopperContent(); + GalacticResource currentResource = harvester.getSelectedHarvestResource(); + ResourceContainerObject hopperContainer = hopperHasContainer(currentResource, outputHopperContent); + // check if output hopper contains already a container with the selected harvest resource + if(hopperContainer==null) + { + + //ResourceContainerObject container = new ResourceContainerObject(); + String resourceContainerIFF = ResourceRoot.CONTAINER_TYPE_IFF_SIGNIFIER[currentResource.getResourceRoot().getContainerType()]; + ResourceContainerObject container = (ResourceContainerObject) core.objectService.createObject(resourceContainerIFF, harvester.getPlanet()); + container.initializeStats(harvester.getSelectedHarvestResource()); + container.setStackCount(0,false); + harvester.setCurrentHarvestedCountFloat(0.0F); + outputHopperContent.add(container); + harvester.setOutputHopperContent(outputHopperContent); + harvester.createNewHopperContainer(); + + } else { + + harvester.continueHopperContainer(); + + // add harvested amount + int BER = harvester.getBER(); + //BER = 15; + float minuteRate = harvester.getActualExtractionRate(); + float updateRate = minuteRate / 60; + harvester.setCurrentHarvestedCountFloat(harvester.getCurrentHarvestedCountFloat()+updateRate); + + int oldStackCount = hopperContainer.getStackCount(); + int newStackCount = (int) (harvester.getCurrentHarvestedCountFloat()); + CreatureObject owner = (CreatureObject)harvester.getOwner(); + if (newStackCount>oldStackCount){ + for (ResourceContainerObject iterContainer : outputHopperContent){ + if (iterContainer.getReferenceID()==hopperContainer.getReferenceID()){ + iterContainer.setStackCount(newStackCount,owner); // updates collection + } + } + harvester.setOutputHopperContent(outputHopperContent); + //((CreatureObject)harvester.getOwner()).getClient().getSession().write(messenger.buildHINO7ExperimentalDelta2(harvester)); + } + harvester.setCurrentHarvestedCountFloat(harvester.getCurrentHarvestedCountFloat()+updateRate); + } + } + } + + private ResourceContainerObject hopperHasContainer(GalacticResource resource, Vector outputHopperContent){ + ResourceContainerObject container = null; + for (ResourceContainerObject iterContainer : outputHopperContent){ + if (iterContainer.getReferenceID()==resource.getId()){ + return iterContainer; + } + } + return container; + } + + + public void constructionSite(CreatureObject actor,SWGObject target, long objectId, float posX, float posZ, float dir){ + + SWGObject usedDeed = (SWGObject)actor.getAttachment("LastUsedDeed"); + String constructorTemplate = ((Harvester_Deed)usedDeed).getConstructorTemplate(); + //String structureTemplate = "object/installation/mining_ore/construction/shared_construction_mining_ore_harvester_style_1.iff"; + + float positionY = core.terrainService.getHeight(actor.getPlanetId(), posX, posZ) + 2f; + Quaternion quaternion = new Quaternion(1, 0, 0, 0); + quaternion = resources.common.MathUtilities.rotateQuaternion(quaternion, (float)((Math.PI/2) * dir), new Point3D(0, 1, 0)); + InstallationObject installation = (InstallationObject) core.objectService.createObject(constructorTemplate, 0, actor.getPlanet(), new Point3D(posX, positionY, posZ), quaternion); + + + installation.setAttachment("ConstructionStart", System.currentTimeMillis()); + installation.setAttachment("Owner", actor); + installation.setAttachment("Deed_StructureTemplate", ((Harvester_Deed)usedDeed).getStructureTemplate()); + installation.setAttachment("Deed_DeedTemplate", ((Harvester_Deed)usedDeed).getTemplate()); + installation.setAttachment("Deed_BER", ((Harvester_Deed)usedDeed).getBER()); + installation.setAttachment("Deed_Capacity", ((Harvester_Deed)usedDeed).getOutputHopperCapacity()); + installation.setAttachment("Deed_DeedLots", ((Harvester_Deed)usedDeed).getLotRequirement()); + installation.setAttachment("Deed_SurplusMaintenance", ((Harvester_Deed)usedDeed).getSurplusMaintenance()); + installation.setAttachment("Deed_SurplusPower", ((Harvester_Deed)usedDeed).getSurplusPower()); + + // destroy deed + TangibleObject playerInventory = (TangibleObject) actor.getSlottedObject("inventory"); + playerInventory._remove(usedDeed); + SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(usedDeed.getObjectID()); + actor.getClient().getSession().write(destroyObjectMsg.serialize()); + + int resCRC = CRC.StringtoCRC(constructorTemplate); + SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(installation.getObjectID(), quaternion.x, quaternion.y, quaternion.z, quaternion.w, posX, positionY, posZ, resCRC, (byte) 0); + actor.getClient().getSession().write(createObjectMsg.serialize()); + tools.CharonPacketUtils.printAnalysis(createObjectMsg.serialize()); + SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(installation.getObjectID()); + actor.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); + tools.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); + + PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); + player.setLotsRemaining(player.getLotsRemaining()-(int)((Harvester_Deed)usedDeed).getLotRequirement()); + synchronized(allConstructors){ + allConstructors.add(installation); + } + } + + public void placeHarvester(SWGObject object){ + HarvesterObject.createAndPlaceHarvester(object); + } + + + public void enterStructurePlacementMode(SWGObject object, CreatureObject actor){ + + if (!core.terrainService.canBuildAtPosition(actor,actor.getPosition().x,actor.getPosition().z)){ + actor.sendSystemMessage("@player_structure:not_permitted", (byte) 0); + return; + } + + PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); + if (((Harvester_Deed)object).getLotRequirement()>player.getLotsRemaining()){ + actor.sendSystemMessage("@player_structure:not_enough_lots", (byte) 0); + return; + } + + actor.setAttachment("LastUsedDeed", object); + String structureTemplate = ((Harvester_Deed)object).getStructureTemplate(); + //String temp = "object/installation/mining_ore/shared_mining_ore_harvester_style_1.iff"; + EnterStructurePlacementModeMessage placementMsg = new EnterStructurePlacementModeMessage(actor,structureTemplate); + actor.getClient().getSession().write(placementMsg.serialize()); + } + + + public void handlePlaceStructureCommand(CreatureObject crafter, SWGObject target, String commandArgs){ + + // 511379 3516.08 -4804.08 0 + // Split Args by Delimiter + long objectId = crafter.getObjectID(); + float posX = crafter.getPosition().x; + float posZ = crafter.getPosition().z; + float dir = 0; + String[] splitter = commandArgs.split(" "); + if (splitter.length==4){ //QA + objectId = Long.parseLong(splitter[0]); + posX = Float.parseFloat(splitter[1]); + posZ = Float.parseFloat(splitter[2]); + dir = Float.parseFloat(splitter[3]); + } + + constructionSite(crafter, target, objectId, posX, posZ, dir); + } + + + // helper method to simulate a harvester deed in the player inventory + // that contains BER,cap,template info about the harvester + public void createExampleDeed(CreatureObject actor){ + + String templateString="object/tangible/deed/harvester_deed/shared_harvester_ore_s1_deed.iff"; + Harvester_Deed deed = (Harvester_Deed)core.objectService.createObject(templateString, actor.getPlanet()); + deed.setName("Example Harvester Deed"); + deed.setStructureTemplate("object/installation/mining_ore/shared_mining_ore_harvester_style_1.iff"); + deed.setOutputHopperCapacity(27344); + deed.setBER(15); + + TangibleObject playerInventory = (TangibleObject) actor.getSlottedObject("inventory"); + playerInventory.add(deed); + + deed.setParent(playerInventory); + + core.resourceService.spawnSpecificResourceContainer("Radioactive", actor, 50); + core.resourceService.spawnSpecificResourceContainer("Radioactive", actor, 501); + core.resourceService.spawnSpecificResourceContainer("Radioactive", actor, 3); + core.resourceService.spawnSpecificResourceContainer("Radioactive", actor, 66); +// core.resourceService.spawnSpecificResourceContainer("Steel", actor, 50); +// core.resourceService.spawnSpecificResourceContainer("Fiberplast", actor, 50); + + } + + + // Stress Test (Server) for many harvesters running in the service + // 200 are running fine, 400 also + public void moduleTestManyHarvesters(CreatureObject actor){ + // assuming an average number of 200 harvesters per planet + for (int i=0;i<400;i++){ + createSingleTestHarvester(actor,i); + } + } + + public void createSingleTestHarvester(CreatureObject actor,int counter){ + // determine random position + String structureTemplate = "object/installation/mining_ore/shared_mining_ore_harvester_style_1.iff"; + HarvesterObject harvester = (HarvesterObject) core.objectService.createObject(structureTemplate, actor.getPlanet()); + long objectId = harvester.getObjectID(); + Vector adminList = harvester.getAdminList(); + String[] fullName = ((CreatureObject)actor).getCustomName().split(" "); + adminList.add(fullName[0]); + harvester.setAdminList(adminList); + // Set BER and outputhopper capacity here, take it from deed + harvester.setBER(8); + harvester.setOutputHopperCapacity(27344); + harvester.setMaintenanceAmount(2993); + harvester.setMaintenanceCost(30); + harvester.setPowerLevel(14714); + harvester.setPowerCost(25); + + Random generator = new Random(); + generator = new Random(); // Exclude mountains at the edge of the maps + int spawnCoordsX = generator.nextInt(15000) - 7500; + int spawnCoordsZ = generator.nextInt(15000) - 7500; + + // build harvester + int resCRC = CRC.StringtoCRC(structureTemplate); + Quaternion quaternion = new Quaternion(1, 0, 0, 0); + quaternion = resources.common.MathUtilities.rotateQuaternion(quaternion, (float)((Math.PI/2) * 1), new Point3D(0, 1, 0)); + float positionY = core.terrainService.getHeight(actor.getPlanetId(), spawnCoordsX, spawnCoordsZ)+ 2f; + SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(objectId,quaternion.x,quaternion.y, quaternion.z, quaternion.w, spawnCoordsX, positionY, spawnCoordsZ, resCRC, (byte) 0); + actor.getClient().getSession().write(createObjectMsg.serialize()); + tools.CharonPacketUtils.printAnalysis(createObjectMsg.serialize()); + + resources.objects.installation.InstallationMessageBuilder messenger = new resources.objects.installation.InstallationMessageBuilder((InstallationObject)harvester); + actor.getClient().getSession().write(messenger.buildBaseline3((InstallationObject)harvester)); + SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(harvester.getObjectID()); + actor.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); + tools.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); + + // select resource + long selectedResourceId = core.resourceService.getAllSpawnedResources().get(51).getId(); + GalacticResource resource = core.resourceService.findResourceById(selectedResourceId); + harvester.setSelectedHarvestResource(resource,actor); + + + // activate harvester + harvester.activateHarvester(actor); + HarvesterMessageBuilder messenger2 = new HarvesterMessageBuilder(harvester); + actor.getClient().getSession().write(messenger2.buildHINO3Delta(harvester,(byte)1)); + actor.getClient().getSession().write(messenger2.buildHINO7ActivateDelta2(harvester)); + + + //create waypoint + if (counter<200){ + PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); + WaypointObject constructionWaypoint = (WaypointObject)core.objectService.createObject("object/waypoint/shared_world_waypoint_blue.iff", actor.getPlanet(), harvester.getPosition().x, 0 ,harvester.getPosition().z); + String displayname = "@installation_n:"+harvester.getStfName() + " " + counter; + constructionWaypoint.setName(displayname); + constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); + constructionWaypoint.setPosition(new Point3D(spawnCoordsX,0, spawnCoordsZ)); + player.waypointAdd(constructionWaypoint); + constructionWaypoint.setPosition(new Point3D(spawnCoordsX,0, spawnCoordsZ)); + constructionWaypoint.setActive(true); + constructionWaypoint.setColor((byte)1); + constructionWaypoint.setStringAttribute("", ""); + player.waypointAdd(constructionWaypoint); + constructionWaypoint.setName(displayname); + constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); + player.setLastSurveyWaypoint(constructionWaypoint); + } + + allHarvesters.add(harvester); + } + + @Override + public void shutdown() { + // TODO Auto-generated method stub + + } +} \ No newline at end of file diff --git a/src/services/resources/ResourceService.java b/src/services/resources/ResourceService.java index efc62fe1..4ebaa89d 100644 --- a/src/services/resources/ResourceService.java +++ b/src/services/resources/ResourceService.java @@ -28,13 +28,16 @@ import java.util.Random; import java.util.Vector; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; + import com.sleepycat.persist.EntityCursor; + import main.NGECore; import engine.resources.common.CRC; import engine.resources.objects.SWGObject; import engine.resources.service.INetworkDispatch; import engine.resources.service.INetworkRemoteEvent; import resources.objects.creature.CreatureObject; +import resources.objects.harvester.HarvesterObject; import resources.objects.resource.GalacticResource; import resources.objects.resource.ResourceContainerObject; import resources.objects.resource.ResourceRoot; @@ -11306,6 +11309,36 @@ public class ResourceService implements INetworkDispatch { return resource; } + public Vector getSpawnedResourcesByPlanetAndHarvesterType(int planetId, byte harvesterType) { + Vector planetResourceList = new Vector(); + byte searchtype = harvesterType; + if (harvesterType==7) searchtype = (byte) 0; + for (GalacticResource gal : allSpawnedResources){ + if (gal.isSpawnedOn(planetId) && gal.getGeneralType()==searchtype) + if (harvesterType!=HarvesterObject.HARVESTER_TYPE_FUSION) + planetResourceList.add(gal); + else if (harvesterType==HarvesterObject.HARVESTER_TYPE_FUSION) { + System.err.println("gal.getContainerType() " + gal.getContainerType()); + if (gal.getResourceRoot().getContainerType()==ResourceRoot.CONTAINER_TYPE_ENERGY_RADIOACTIVE) + planetResourceList.add(gal); + } else if (harvesterType==HarvesterObject.HARVESTER_TYPE_GEO) { + System.err.println("gal.getContainerType() " + gal.getContainerType()); + if (gal.getGeneralType()==GalacticResource.GENERAL_GEOTHERM) + planetResourceList.add(gal); + } + } + return planetResourceList; + } + + public GalacticResource findResourceById(long id){ + GalacticResource resource = new GalacticResource(); + for (GalacticResource sampleResource : allSpawnedResources){ + if (sampleResource.getId()==id) + return sampleResource; + } + return resource; + } + // ToDo: Improve public GalacticResource grabMeatForCreature(CreatureObject corpse){ GalacticResource resource = null; diff --git a/src/services/sui/SUIService.java b/src/services/sui/SUIService.java index eb853838..b49cf67f 100644 --- a/src/services/sui/SUIService.java +++ b/src/services/sui/SUIService.java @@ -46,6 +46,7 @@ import resources.common.FileUtilities; import resources.common.ObjControllerOpcodes; import resources.common.Opcodes; import resources.common.RadialOptions; +import resources.objects.harvester.HarvesterObject; import services.sui.SUIWindow.SUICallback; import services.sui.SUIWindow.Trigger; import engine.clients.Client; @@ -81,6 +82,26 @@ public class SUIService implements INetworkDispatch { if(target == null || owner == null) return; + if (target instanceof HarvesterObject){ + HarvesterObject harvester = (HarvesterObject) target; + Vector admins = harvester.getAdminList(); + Vector hoppers = harvester.getHopperList(); + + if (harvester.getOwner()==owner && !admins.contains(owner.getCustomName())){ + admins.add(owner.getCustomName()); + } + + if (! admins.contains(owner.getCustomName()) && ! hoppers.contains(owner.getCustomName())){ + return; // Completely unauthorized + } + + if (! admins.contains(owner.getCustomName()) && hoppers.contains(owner.getCustomName())){ + // authorized for hopper + // change radialOptions to hopper access + harvester.setAttachment("radial_filename", "harvesterHopper"); + } + } + if(target.getGrandparent() != null && target.getGrandparent().getAttachment("structureAdmins") != null) { if(core.housingService.getPermissions(owner, target.getContainer())) From 4cb78da62c5ca6323ddd1c1ef198df7e96f61aef Mon Sep 17 00:00:00 2001 From: Waverunner Date: Thu, 10 Apr 2014 20:03:48 -0400 Subject: [PATCH 58/79] Added SWG, Server, and other parent channels --- src/services/SimulationService.java | 4 +++- src/services/TerrainService.java | 1 + src/services/chat/ChatService.java | 33 ++++++++++++++------------ src/services/object/ObjectService.java | 1 - 4 files changed, 22 insertions(+), 17 deletions(-) diff --git a/src/services/SimulationService.java b/src/services/SimulationService.java index 22b30882..9e8096e6 100644 --- a/src/services/SimulationService.java +++ b/src/services/SimulationService.java @@ -809,7 +809,9 @@ public class SimulationService implements INetworkDispatch { PlayerObject ghost = (PlayerObject) object.getSlottedObject("ghost"); core.weatherService.sendWeather(object); - + + //core.chatService.joinChatRoom(object.getCustomName().toLowerCase(), "SWG." + core.getGalaxyName() + "." + object.getPlanet().getName()); + if (!object.hasSkill(ghost.getProfessionWheelPosition())) { object.showFlyText("cbt_spam", "skill_up", (float) 2.5, new RGB(154, 205, 50), 0); object.playEffectObject("clienteffect/skill_granted.cef", ""); diff --git a/src/services/TerrainService.java b/src/services/TerrainService.java index 497477db..ddc66042 100644 --- a/src/services/TerrainService.java +++ b/src/services/TerrainService.java @@ -176,6 +176,7 @@ public class TerrainService { noBuildAreas.put(planet, new ArrayList()); loadClientRegions(planet); + core.chatService.createChatRoom("", name, "system", true); core.chatService.createChatRoom("public chat for this planet, cannot create rooms here", name + ".Planet", "SYSTEM", true); core.chatService.createChatRoom("system messages for this planet, cannot create rooms here", name + ".system", "SYSTEM", true); diff --git a/src/services/chat/ChatService.java b/src/services/chat/ChatService.java index 4175d886..dbaea263 100644 --- a/src/services/chat/ChatService.java +++ b/src/services/chat/ChatService.java @@ -738,8 +738,11 @@ public class ChatService implements INetworkDispatch { * TODO: Research other channel address formats */ - ChatRoom system = createChatRoom("", "system", "system", true); - System.out.println("Created chat room " + system.getRoomAddress()); + createChatRoom("", "SWG", "system", true); + createChatRoom("", "SWG." + core.getGalaxyName(), "system", true); + + createChatRoom("", "system", "system", true); // galaxy system messages + createChatRoom("", "Auction", "system", true); //createChatRoom("Bounty Hunter chat for this galaxy", "BountyHunter", "SYSTEM", true); //createChatRoom("Commando chat for this galaxy", "Commando", "SYSTEM", true); @@ -751,23 +754,23 @@ public class ChatService implements INetworkDispatch { cursor.close(); } - public ChatRoom createChatRoom(String roomName, String address, String creator, boolean showInList) { - return createChatRoom(roomName, address, creator, showInList, false); + public ChatRoom createChatRoom(String roomName, String address, String creator, boolean isPublic) { + return createChatRoom(roomName, address, creator, isPublic, false); } - public ChatRoom createChatRoom(String roomName, String address, String creator, boolean showInList, boolean store) { + public ChatRoom createChatRoom(String roomName, String address, String creator, boolean isPublic, boolean store) { if (creator.contains(" ")) creator = creator.split(" ")[0]; ChatRoom room = new ChatRoom(); room.setDescription(roomName); - if (!address.startsWith("SWG.")) + if (!address.startsWith("SWG")) room.setRoomAddress("SWG." + core.getGalaxyName() + "." + address); else room.setRoomAddress(address); room.setCreator(creator.toLowerCase()); room.setOwner(creator.toLowerCase()); - room.setVisible(showInList); + room.setVisible(isPublic); room.setRoomId(generateChatRoomId()); chatRooms.put(room.getRoomId(), room); @@ -784,13 +787,13 @@ public class ChatService implements INetworkDispatch { public boolean joinChatRoom(String user, String roomAddress) { chatRooms.forEach((k, v) -> { if (v.getRoomAddress().equals(roomAddress)) { - joinChatRoom(user, k); + joinChatRoom(user, k, true); return; } }); return false; } - public boolean joinChatRoom(String user, int roomId) { + public boolean joinChatRoom(String user, int roomId, boolean resendList) { if (user.contains(" ")) user = user.split(" ")[0]; @@ -802,7 +805,7 @@ public class ChatService implements INetworkDispatch { if (!room.hasUser(user.toLowerCase())) { room.addUser(user.toLowerCase()); - if (!room.isVisible()) { + if (!room.isVisible() || resendList) { CreatureObject creo = (CreatureObject) getObjectByFirstName(user); if (creo != null) { ChatRoomList listMessage = new ChatRoomList(room); @@ -810,16 +813,16 @@ public class ChatService implements INetworkDispatch { } } ChatOnEnteredRoom enterRoom = new ChatOnEnteredRoom(user, 0, roomId, true); - - room.getUserList().stream().forEach(str -> { - SWGObject userObj = getObjectByFirstName(str); - userObj.getClient().getSession().write(enterRoom.serialize()); - }); + getObjectByFirstName(user).getClient().getSession().write(enterRoom.serialize()); + //System.out.println("Sent message for room " + room.getRoomAddress()); return true; } return false; } + public boolean joinChatRoom(String user, int roomId) { + return joinChatRoom(user, roomId, false); + } public void leaveChatRoom(CreatureObject player, int roomId) { String playerName = player.getCustomName().toLowerCase(); diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index b3dbb5bd..a3c317a6 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -855,7 +855,6 @@ public class ObjectService implements INetworkDispatch { if(!core.getConfig().getString("MOTD").equals("")) creature.sendSystemMessage(core.getConfig().getString("MOTD"), (byte) 2); - core.chatService.joinChatRoom(creature.getCustomName().toLowerCase(), "SWG." + core.getGalaxyName() + "." + creature.getPlanet().getName() + ".Planet"); core.playerService.postZoneIn(creature); } From 1ab23231f6399e2a612d4ded129cd11ab2abe851 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Fri, 11 Apr 2014 04:14:29 +0200 Subject: [PATCH 59/79] Structure terminal work Creation of player_house_deed class terminal menus made py scripts arranged --- options.cfg | 4 +- scripts/commands/movefurniture.py | 2 +- .../player_house_generic_small_style_01.py | 4 +- .../generic_house_small_deed.py | 6 +- .../terminal/terminal_player_structure.py | 1 + .../terminal/terminal_player_structure_new.py | 1 + .../terminal_player_structure_nosnap.py | 1 + .../terminal_player_structure_nosnap_mini.py | 1 + .../radial/structure_management_terminal.py | 59 ++++++ .../objects/building/BuildingObject.java | 28 ++- .../objects/deed/Player_House_Deed.java | 94 +++++++++ src/services/DevService.java | 15 +- src/services/housing/HousingService.java | 182 +++++++++++++++--- src/services/object/ObjectService.java | 7 +- 14 files changed, 372 insertions(+), 33 deletions(-) create mode 100644 scripts/radial/structure_management_terminal.py create mode 100644 src/resources/objects/deed/Player_House_Deed.java diff --git a/options.cfg b/options.cfg index 5a3a7f8e..cb743c88 100644 --- a/options.cfg +++ b/options.cfg @@ -1,3 +1,3 @@ -LOAD.SNAPSHOT_OBJECTS=1 -LOAD.BUILDOUT_OBJECTS=1 +LOAD.SNAPSHOT_OBJECTS=0 +LOAD.BUILDOUT_OBJECTS=0 LOAD.RESOURCE.SYSTEM=1 \ No newline at end of file diff --git a/scripts/commands/movefurniture.py b/scripts/commands/movefurniture.py index 3c45c55e..b6ff5c6d 100644 --- a/scripts/commands/movefurniture.py +++ b/scripts/commands/movefurniture.py @@ -6,7 +6,7 @@ def setup(): def run(core, actor, target, commandString): tarObj = core.objectService.getObject(actor.getTargetId()) - + actor.sendSystemMessage('target template ' + tarObj.getTemplate(),1) container = actor.getContainer() parsedMsg = commandString.split(' ', 2) diff --git a/scripts/object/building/player/player_house_generic_small_style_01.py b/scripts/object/building/player/player_house_generic_small_style_01.py index 17c11b52..aa3c37eb 100644 --- a/scripts/object/building/player/player_house_generic_small_style_01.py +++ b/scripts/object/building/player/player_house_generic_small_style_01.py @@ -5,5 +5,7 @@ def setup(core, object): print(sign) object.setAttachment("structureSign", sign) - core.objectService.createChildObject(object, 'object/tangible/terminal/shared_terminal_player_structure.iff', -5, 0.74, -1.81, 0.707107, -0.707107, 1) + structureterminal = core.objectService.createChildObject(object, 'object/tangible/terminal/shared_terminal_player_structure.iff', -5, 0.74, -1.81, 0.707107, -0.707107, 1) + structureterminal.setAttachment('radial_filename', 'structure_management_terminal') + structureterminal.setAttachment('housing_parentstruct', object) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/player_house_deed/generic_house_small_deed.py b/scripts/object/tangible/deed/player_house_deed/generic_house_small_deed.py index e100519a..5dbae10f 100644 --- a/scripts/object/tangible/deed/player_house_deed/generic_house_small_deed.py +++ b/scripts/object/tangible/deed/player_house_deed/generic_house_small_deed.py @@ -1,7 +1,11 @@ import sys def setup(core, object): - object.setAttachment('radial_filename', 'structureDeed'); + object.setAttachment('radial_filename', 'structureDeed') + object.setConstructorTemplate('object/building/player/construction/shared_construction_player_house_corellia_small_style_01.iff') + object.setStructureTemplate('object/tangible/deed/player_house_deed/shared_generic_house_small_deed.iff') + object.setLotRequirement(1) + object.setBMR(15) return def use(core, actor, object): diff --git a/scripts/object/tangible/terminal/terminal_player_structure.py b/scripts/object/tangible/terminal/terminal_player_structure.py index ccad8904..839210a3 100644 --- a/scripts/object/tangible/terminal/terminal_player_structure.py +++ b/scripts/object/tangible/terminal/terminal_player_structure.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'structure_management_terminal') return \ No newline at end of file diff --git a/scripts/object/tangible/terminal/terminal_player_structure_new.py b/scripts/object/tangible/terminal/terminal_player_structure_new.py index ccad8904..839210a3 100644 --- a/scripts/object/tangible/terminal/terminal_player_structure_new.py +++ b/scripts/object/tangible/terminal/terminal_player_structure_new.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'structure_management_terminal') return \ No newline at end of file diff --git a/scripts/object/tangible/terminal/terminal_player_structure_nosnap.py b/scripts/object/tangible/terminal/terminal_player_structure_nosnap.py index ccad8904..839210a3 100644 --- a/scripts/object/tangible/terminal/terminal_player_structure_nosnap.py +++ b/scripts/object/tangible/terminal/terminal_player_structure_nosnap.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'structure_management_terminal') return \ No newline at end of file diff --git a/scripts/object/tangible/terminal/terminal_player_structure_nosnap_mini.py b/scripts/object/tangible/terminal/terminal_player_structure_nosnap_mini.py index ccad8904..839210a3 100644 --- a/scripts/object/tangible/terminal/terminal_player_structure_nosnap_mini.py +++ b/scripts/object/tangible/terminal/terminal_player_structure_nosnap_mini.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'structure_management_terminal') return \ No newline at end of file diff --git a/scripts/radial/structure_management_terminal.py b/scripts/radial/structure_management_terminal.py new file mode 100644 index 00000000..983127e2 --- /dev/null +++ b/scripts/radial/structure_management_terminal.py @@ -0,0 +1,59 @@ +from resources.common import RadialOptions +from protocol.swg import ResourceListForSurveyMessage +from services.sui.SUIService import MessageBoxType +from services.SurveyService import createSurveyRangeSUIWindow +from services.sui.SUIWindow import Trigger +from java.util import Vector +import sys + +def createRadial(core, owner, target, radials): + #(byte parentId, short optionId, byte optionType, String description) + radials.clear() + owner.sendSystemMessage('target template ' + target.getTemplate(),1) + radials.add(RadialOptions(0, 7, 0, 'Examine')) + radials.add(RadialOptions(0, 78, 0, '@player_structure:management')) + radials.add(RadialOptions(0, 117, 0, '@player_structure:permissions')) + radials.add(RadialOptions(2, 118, 0, '@harvester:manage')) + radials.add(RadialOptions(2, 128, 0, '@player_structure:permission_destroy')) + radials.add(RadialOptions(2, 124, 0, '@player_structure:management_status')) + radials.add(RadialOptions(2, 129, 0, '@player_structure:management_pay')) + radials.add(RadialOptions(2, 50, 0, '@base_player:set_name')) + radials.add(RadialOptions(2, 51, 0, '@player_structure:management_power')) + radials.add(RadialOptions(3, 121, 0, '@player_structure:permission_admin')) + radials.add(RadialOptions(3, 123, 0, '@player_structure:permissions')) + + return + +def handleSelection(core, owner, target, option): + if option == 118 and target: + if owner is not None: + core.housingService.handleOperateMachinery(owner,target) + return + if option == 128: + if owner is not None: + core.housingService.createDestroySUIPage(owner,target) + return + if option == 124: + if owner is not None: + core.housingService.createStatusSUIPage(owner,target) + return + if option == 129: + if owner is not None: + core.housingService.createPayMaintenanceSUIPage(owner,target) + return + if option == 50: + if owner is not None: + core.housingService.createRenameSUIPage(owner,target) + return + if option == 51: + if owner is not None: + core.housingService.handleDepositPower(owner,target) + return + if option == 121: + if owner is not None: + core.housingService.handlePermissionAdmin(owner,target) + return + if option == 123: + if owner is not None: + core.housingService.handlePermissionHopper(owner,target) + return diff --git a/src/resources/objects/building/BuildingObject.java b/src/resources/objects/building/BuildingObject.java index f604d0a3..37776c1e 100644 --- a/src/resources/objects/building/BuildingObject.java +++ b/src/resources/objects/building/BuildingObject.java @@ -23,34 +23,44 @@ package resources.objects.building; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; + import resources.objects.cell.CellObject; + import com.sleepycat.je.Environment; import com.sleepycat.je.Transaction; + import resources.objects.tangible.TangibleObject; + import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.NotPersistent; + import engine.clients.Client; import engine.resources.objects.IPersistent; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Entity(version=0) +@Entity(version=2) public class BuildingObject extends TangibleObject implements IPersistent { @NotPersistent private BuildingMessageBuilder messageBuilder; @NotPersistent private Transaction txn; + + private float maintenanceAmount = 0; + private String deedTemplate; public BuildingObject() { super(); messageBuilder = new BuildingMessageBuilder(this); + this.setConditionDamage(100); } public BuildingObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { super(objectID, planet, Template, position, orientation); messageBuilder = new BuildingMessageBuilder(this); + this.setConditionDamage(100); } public CellObject getCellByCellNumber(final int cellNumber) { @@ -67,6 +77,22 @@ public class BuildingObject extends TangibleObject implements IPersistent { return ref.get(); } + + public float getMaintenanceAmount() { + return maintenanceAmount; + } + + public void setMaintenanceAmount(float maintenanceAmount) { + this.maintenanceAmount = maintenanceAmount; + } + + public void setDeedTemplate(String deedTemplate){ + this.deedTemplate = deedTemplate; + } + + public String getDeedTemplate(){ + return this.deedTemplate; + } @Override public void sendBaselines(Client destination) { diff --git a/src/resources/objects/deed/Player_House_Deed.java b/src/resources/objects/deed/Player_House_Deed.java new file mode 100644 index 00000000..448f3da9 --- /dev/null +++ b/src/resources/objects/deed/Player_House_Deed.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package resources.objects.deed; +import com.sleepycat.persist.model.Persistent; + +import engine.resources.scene.Planet; +import engine.resources.scene.Point3D; +import engine.resources.scene.Quaternion; + +/** + * @author Seefo + * @author Charon + */ + +@Persistent(version=0) +public class Player_House_Deed extends Deed { + + private String name; + private String structureTemplate; + private String constructorTemplate; + private int BMR=0; + private int surplusMaintenance=0; + private int lotRequirement; + + + public Player_House_Deed(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ + super(objectID, planet, template, position, orientation); + } + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getStructureTemplate() { + return structureTemplate; + } + public void setStructureTemplate(String structureTemplate) { + this.structureTemplate = structureTemplate; + } + public int getLotRequirement() { + return lotRequirement; + } + public void setLotRequirement(int lotRequirement) { + this.lotRequirement = lotRequirement; + } + public String getConstructorTemplate() { + return constructorTemplate; + } + public void setConstructorTemplate(String constructorTemplate) { + this.constructorTemplate = constructorTemplate; + } + public int getBMR() { + return BMR; + } + public void setBMR(int BMR) { + this.BMR = BMR; + } + public int getSurplusMaintenance() { + return surplusMaintenance; + } + public void setSurplusMaintenance(int surplusMaintenance) { + this.surplusMaintenance = surplusMaintenance; + } + + public void setAttributes() { + this.getAttributes().put("@obj_attr_n:volume", "1"); + this.getAttributes().put("@obj_attr_n:examine_maintenance_rate", ""+this.getBMR() + "/hour"); + if (this.getSurplusMaintenance()>0) + this.getAttributes().put("@obj_attr_n:examine_maintenance", ""+this.getSurplusMaintenance()); + + + } +} diff --git a/src/services/DevService.java b/src/services/DevService.java index b5f0e2d3..03464bb2 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -39,6 +39,7 @@ import resources.common.SpawnPoint; import resources.objects.building.BuildingObject; import resources.objects.creature.CreatureObject; import resources.objects.deed.Harvester_Deed; +import resources.objects.deed.Player_House_Deed; import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; import resources.objects.tool.SurveyTool; @@ -87,7 +88,8 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 23, "Jedi Items"); suiOptions.put((long) 26, "Installations"); suiOptions.put((long) 110, "Survey Devices"); - if(creature.getClient().isGM()) suiOptions.put((long) 120, "House Deeds"); + //if(creature.getClient().isGM()) suiOptions.put((long) 120, "House Deeds"); + suiOptions.put((long) 120, "House Deeds"); break; case 3: // [Items] Weapons suiOptions.put((long) 30, "Jedi Weapons"); @@ -1192,8 +1194,15 @@ public class DevService implements INetworkDispatch { core.resourceService.spawnSpecificResourceContainer("Radioactive", player, 100000); break; case 120: - SWGObject houseDeed = core.objectService.createObject("object/tangible/deed/player_house_deed/shared_generic_house_small_deed.iff", planet); - inventory.add(houseDeed); +// SWGObject houseDeed = core.objectService.createObject("object/tangible/deed/player_house_deed/shared_generic_house_small_deed.iff", planet); +// inventory.add(houseDeed); + + templateString="object/tangible/deed/player_house_deed/shared_generic_house_small_deed.iff"; + Player_House_Deed deed = (Player_House_Deed)core.objectService.createObject(templateString, planet); + deed.setBMR(15); + deed.setAttributes(); + inventory.add(deed); + return; } } diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index a9f427b5..b8ee3f79 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -30,14 +30,23 @@ import java.nio.file.Paths; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; import java.util.Map; +import java.util.Random; import java.util.Vector; import java.util.concurrent.ConcurrentHashMap; import main.NGECore; import protocol.swg.EnterStructurePlacementModeMessage; +import protocol.swg.SceneDestroyObject; import resources.objects.building.BuildingObject; import resources.objects.creature.CreatureObject; +import resources.objects.deed.Harvester_Deed; +import resources.objects.deed.Player_House_Deed; +import resources.objects.harvester.HarvesterObject; +import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; +import services.sui.SUIWindow; +import services.sui.SUIWindow.SUICallback; +import services.sui.SUIWindow.Trigger; import engine.resources.objects.SWGObject; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; @@ -58,11 +67,11 @@ public class HousingService implements INetworkDispatch { public void enterStructureMode(CreatureObject actor, TangibleObject deed) { - if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, actor.getWorldPosition().x, actor.getWorldPosition().z)) - { - actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf - return; - } +// if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, actor.getWorldPosition().x, actor.getWorldPosition().z)) +// { +// actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf +// return; +// } if(housingTemplates.containsKey(deed.getTemplate())) { @@ -79,24 +88,24 @@ public class HousingService implements INetworkDispatch { int structureLotCost = houseTemplate.getLotCost(); String structureTemplate = houseTemplate.getBuildingTemplate(); - if(!houseTemplate.canBePlacedOn(actor.getPlanet().getName())) - { - actor.sendSystemMessage("You may not place this structure on this planet.", (byte) 0); // should probably load this from an stf - return; - } - - if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, positionX, positionZ)) - { - actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf - return; - } - - // Lot stuff - if(!actor.getPlayerObject().deductLots(structureLotCost)) - { - actor.sendSystemMessage("You do not have enough available lots to place this structure.", (byte) 0); // should probably load this from an stf - return; - } +// if(!houseTemplate.canBePlacedOn(actor.getPlanet().getName())) +// { +// actor.sendSystemMessage("You may not place this structure on this planet.", (byte) 0); // should probably load this from an stf +// return; +// } +// +// if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, positionX, positionZ)) +// { +// actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf +// return; +// } +// +// // Lot stuff +// if(!actor.getPlayerObject().deductLots(structureLotCost)) +// { +// actor.sendSystemMessage("You do not have enough available lots to place this structure.", (byte) 0); // should probably load this from an stf +// return; +// } // Calculate our orientation and height Quaternion quaternion = new Quaternion(1, 0, 0, 0); @@ -122,6 +131,7 @@ public class HousingService implements INetworkDispatch { building.setAttachment("structureOwner", actor.getObjectID()); building.setAttachment("structureAdmins", admins); + building.setDeedTemplate(deed.getTemplate()); // Save structure to DB //building.createTransaction(core.getBuildingODB().getEnvironment()); @@ -160,6 +170,132 @@ public class HousingService implements INetworkDispatch { catch (IOException e) { e.printStackTrace(); } } + public void createDestroySUIPage(final SWGObject owner, final TangibleObject target) { + + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + //final BuildingObject building = (BuildingObject) core.objectService.getObject(target.getParentId()); + // harvester.getStfFilename(); installation_n .getTemplate(); + String displayname = "@installation_n:"+building.getStfName(); + if (building.getCustomName()!=null) + displayname = building.getCustomName(); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", displayname); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:confirm_destruction_d1 " + + "@player_structure:confirm_destruction_d2 " + + "\n \n @player_structure:confirm_destruction_d3a " + + "\\#32CD32 @player_structure:confirm_destruction_d3b \\#FFFFFF " + + "@player_structure:confirm_destruction_d4 "); + if (building.getConditionDamage()<20 && building.getMaintenanceAmount()<3000){ + window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#BB0000 @player_structure:can_redeed_no_suffix \\#FFFFFF ",1 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#32CD32 @player_structure:can_redeed_yes_suffix \\#FFFFFF ",1 ); + } + if (building.getConditionDamage()<20){ + window.addListBoxMenuItem("@player_structure:redeed_condition \\#BB0000 " + building.getConditionDamage() + " \\#FFFFFF ",1 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_condition \\#32CD32 " + building.getConditionDamage() + " \\#FFFFFF ",1 ); + } + if (building.getMaintenanceAmount()<0){ + window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#BB0000 " + (int)building.getMaintenanceAmount() + " \\#FFFFFF ",2 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#32CD32 " + (int)building.getMaintenanceAmount() + " \\#FFFFFF ",2 ); + } + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + createCodeWindow(owner, target); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void createCodeWindow(SWGObject owner, TangibleObject target) { + + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + //final BuildingObject building = (BuildingObject)target; + // harvester.getStfFilename(); installation_n .getTemplate(); + Random rnd = new Random(); + final int confirmCode = 100000 + rnd.nextInt(900000); + final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:confirm_destruction_t"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:your_structure_prefix " + + "\\#32CD32 @player_structure:will_redeed_confirm \\#FFFFFF "+ + "@player_structure:will_redeed_suffix " + + "\n \n Code: " + confirmCode); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + returnList.add("txtInput:LocalText"); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject crafter = (CreatureObject)owner; + core.suiService.closeSUIWindow(owner, 0); + if (returnList.get(0).equals(""+confirmCode)){ + // handle creation of correct deed in player inventory + PlayerObject player = (PlayerObject) crafter.getSlottedObject("ghost"); + String deedTemplate = building.getDeedTemplate(); + + Player_House_Deed deed = (Player_House_Deed)core.objectService.createObject(deedTemplate, owner.getPlanet()); + if(player.getLotsRemaining()+deed.getLotRequirement()>10){ + // Something went wrong or hacking attempt + crafter.sendSystemMessage("Structure can't be redeeded. Maximum lot count exceeded.",(byte)1); + return; + } + + deed.setStructureTemplate(building.getTemplate()); + deed.setSurplusMaintenance((int)building.getMaintenanceAmount()); + deed.setAttributes(); + + SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(building.getObjectID()); + owner.getClient().getSession().write(destroyObjectMsg.serialize()); + core.objectService.destroyObject(building.getObjectID()); + + SWGObject ownerInventory = owner.getSlottedObject("inventory"); + ownerInventory.add(deed); + + if(player.getLotsRemaining()+deed.getLotRequirement()<=10) + player.setLotsRemaining(player.getLotsRemaining()+deed.getLotRequirement()); + + crafter.sendSystemMessage("@player_structure:processing_destruction",(byte)1); + crafter.sendSystemMessage("@player_structure:deed_reclaimed",(byte)1); + + } else { + crafter.sendSystemMessage("@player_structure:incorrect_destroy_code",(byte)1); + } + + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + @Override diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index a3c317a6..ca22a7fc 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -97,6 +97,7 @@ import resources.objects.building.BuildingObject; import resources.objects.cell.CellObject; import resources.objects.creature.CreatureObject; import resources.objects.deed.Harvester_Deed; +import resources.objects.deed.Player_House_Deed; import resources.objects.group.GroupObject; import resources.objects.guild.GuildObject; import resources.objects.harvester.HarvesterObject; @@ -320,7 +321,11 @@ public class ObjectService implements INetworkDispatch { } else if(Template.startsWith("object/tangible/deed/harvester_deed") || Template.startsWith("object/tangible/deed/generator_deed")) { object = new Harvester_Deed(objectID, planet, Template, position, orientation); - + + } else if(Template.startsWith("object/tangible/deed/player_house_deed")) { + + object = new Player_House_Deed(objectID, planet, Template, position, orientation); + } else if(Template.startsWith("object/tangible")) { object = new TangibleObject(objectID, planet, Template, position, orientation); From 3ebf1dbf94baaad00e92c311a219b93e318c41de Mon Sep 17 00:00:00 2001 From: Seefo Date: Fri, 11 Apr 2014 09:20:21 -0400 Subject: [PATCH 60/79] Fixed an issue where people who did not get the winning kill... see ext. Fixed an issue where people who did not get the winning kill of a creature or were not grouped with the killer of a creature could loot the corpse of said creature. --- src/services/LootService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/services/LootService.java b/src/services/LootService.java index 4084d8fd..815490e4 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -73,7 +73,9 @@ public class LootService implements INetworkDispatch { public void handleLootRequest(CreatureObject requester, TangibleObject lootedObject) { - if (lootedObject.isLooted() || lootedObject.isLootLock()) + GroupObject group = (GroupObject) core.objectService.getObject(requester.getGroupId()); + + if (lootedObject.isLooted() || lootedObject.isLootLock() || (group == null && !lootedObject.getKiller().equals(requester)) || (group != null && !group.getMemberList().contains(lootedObject.getKiller()))) return; lootedObject.setLootLock(true); From ea8bc533944f8a3efd820ebed476ef947b507d95 Mon Sep 17 00:00:00 2001 From: Light2 Date: Fri, 11 Apr 2014 23:47:03 +0200 Subject: [PATCH 61/79] Started work on bazaar --- src/main/NGECore.java | 9 +- .../AcceptAuctionResponseMessage.java | 34 +++ .../AuctionItemDescriptionMessage.java | 38 +++ .../AuctionQueryHeadersMessage.java | 162 ++++++++++++ .../AuctionQueryHeadersResponseMessage.java | 21 ++ .../BidAuctionMessage.java | 51 ++++ .../BidAuctionResponseMessage.java | 45 ++++ .../CancelLiveAuctionMessage.java | 31 +++ .../CancelLiveAuctionResponseMessage.java | 42 +++ .../CommoditiesItemTypeListResponse.java | 30 +++ .../CommoditiesResourceTypeListResponse.java | 47 ++++ .../CreateAuctionMessage.java | 90 +++++++ .../CreateImmediateAuctionMessage.java | 90 +++++++ .../GetAuctionDetails.java | 31 +++ .../GetAuctionDetailsResponse.java | 21 ++ .../IsVendorOwnerMessage.java | 31 +++ .../IsVendorOwnerResponseMessage.java | 42 +++ .../ItemSoldMessage.java | 55 ++++ .../RetrieveAuctionItemMessage.java | 41 +++ .../RetrieveAuctionItemResponseMessage.java | 41 +++ src/resources/common/Opcodes.java | 5 +- src/services/PlayerService.java | 6 +- src/services/bazaar/AuctionItem.java | 243 ++++++++++++++++++ src/services/bazaar/BazaarService.java | 149 +++++++++++ src/services/resources/ResourceService.java | 4 + 25 files changed, 1349 insertions(+), 10 deletions(-) create mode 100644 src/protocol/swg/auctionManagerClientListener/AcceptAuctionResponseMessage.java create mode 100644 src/protocol/swg/auctionManagerClientListener/AuctionItemDescriptionMessage.java create mode 100644 src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersMessage.java create mode 100644 src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java create mode 100644 src/protocol/swg/auctionManagerClientListener/BidAuctionMessage.java create mode 100644 src/protocol/swg/auctionManagerClientListener/BidAuctionResponseMessage.java create mode 100644 src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionMessage.java create mode 100644 src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionResponseMessage.java create mode 100644 src/protocol/swg/auctionManagerClientListener/CommoditiesItemTypeListResponse.java create mode 100644 src/protocol/swg/auctionManagerClientListener/CommoditiesResourceTypeListResponse.java create mode 100644 src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java create mode 100644 src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java create mode 100644 src/protocol/swg/auctionManagerClientListener/GetAuctionDetails.java create mode 100644 src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java create mode 100644 src/protocol/swg/auctionManagerClientListener/IsVendorOwnerMessage.java create mode 100644 src/protocol/swg/auctionManagerClientListener/IsVendorOwnerResponseMessage.java create mode 100644 src/protocol/swg/auctionManagerClientListener/ItemSoldMessage.java create mode 100644 src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemMessage.java create mode 100644 src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemResponseMessage.java create mode 100644 src/services/bazaar/AuctionItem.java create mode 100644 src/services/bazaar/BazaarService.java diff --git a/src/main/NGECore.java b/src/main/NGECore.java index 0762507f..ca13e959 100644 --- a/src/main/NGECore.java +++ b/src/main/NGECore.java @@ -70,6 +70,7 @@ import services.SurveyService; import services.TerrainService; import services.WeatherService; import services.ai.AIService; +import services.bazaar.BazaarService; import services.chat.ChatService; import services.collections.CollectionService; import services.combat.CombatService; @@ -170,11 +171,10 @@ public class NGECore { //public MissionService missionService; public InstanceService instanceService; public DevService devService; - public SurveyService surveyService; public ResourceService resourceService; - public ConversationService conversationService; + public BazaarService bazaarService; // Login Server @@ -199,7 +199,7 @@ public class NGECore { private BusConfiguration eventBusConfig = BusConfiguration.Default(1, new ThreadPoolExecutor(1, 4, 1, TimeUnit.MINUTES, new LinkedBlockingQueue())); private ObjectDatabase buildingODB; - + private ObjectDatabase auctionODB; private ObjectDatabase resourcesODB; private ObjectDatabase resourceRootsODB; private ObjectDatabase resourceHistoryODB; @@ -258,6 +258,7 @@ public class NGECore { resourcesODB = new ObjectDatabase("resources", true, false, true); resourceRootsODB = new ObjectDatabase("resourceroots", true, false, true); resourceHistoryODB = new ObjectDatabase("resourcehistory", true, false, true); + auctionODB = new ObjectDatabase("auction", true, false, true); // Services loginService = new LoginService(this); @@ -286,6 +287,7 @@ public class NGECore { entertainmentService = new EntertainmentService(this); devService = new DevService(this); conversationService = new ConversationService(this); + bazaarService = new BazaarService(this); if (config.keyExists("JYTHONCONSOLE.PORT")) { int jythonPort = config.getInt("JYTHONCONSOLE.PORT"); @@ -338,6 +340,7 @@ public class NGECore { zoneDispatch.addService(buffService); zoneDispatch.addService(entertainmentService); //zoneDispatch.addService(missionService); + zoneDispatch.addService(bazaarService); zoneServer = new MINAServer(zoneDispatch, config.getInt("ZONE.PORT")); zoneServer.start(); diff --git a/src/protocol/swg/auctionManagerClientListener/AcceptAuctionResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/AcceptAuctionResponseMessage.java new file mode 100644 index 00000000..669132ff --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/AcceptAuctionResponseMessage.java @@ -0,0 +1,34 @@ +package protocol.swg.auctionManagerClientListener; + +import java.nio.ByteOrder; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class AcceptAuctionResponseMessage extends SWGMessage { + + private long itemId; + private int error; + + public AcceptAuctionResponseMessage(long itemId, int error) { + this.itemId = itemId; + this.error = error; + } + + @Override + public void deserialize(IoBuffer data) { + + } + + @Override + public IoBuffer serialize() { + IoBuffer result = IoBuffer.allocate(18).order(ByteOrder.LITTLE_ENDIAN); + result.putShort((short) 3); + result.putInt(0xC58A446E); + result.putLong(itemId); + result.putInt(error); + return result.flip(); + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/AuctionItemDescriptionMessage.java b/src/protocol/swg/auctionManagerClientListener/AuctionItemDescriptionMessage.java new file mode 100644 index 00000000..957118e1 --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/AuctionItemDescriptionMessage.java @@ -0,0 +1,38 @@ +package protocol.swg.auctionManagerClientListener; + +import java.nio.ByteOrder; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class AuctionItemDescriptionMessage extends SWGMessage { + + private long itemId; + private String description; + + public AuctionItemDescriptionMessage(long itemId, String description) { + this.itemId = itemId; + this.description = description; + } + + + @Override + public void deserialize(IoBuffer data) { + // TODO Auto-generated method stub + + } + + @Override + public IoBuffer serialize() { + IoBuffer result = IoBuffer.allocate(26 + (description.length() * 2)).order(ByteOrder.LITTLE_ENDIAN); + result.putShort((short) 2); + result.putInt(0xFE0E644B); + result.putLong(itemId); + result.put(getUnicodeString(description)); + result.putInt(0); + result.putInt(0); + return result.flip(); + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersMessage.java b/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersMessage.java new file mode 100644 index 00000000..1436f459 --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersMessage.java @@ -0,0 +1,162 @@ +package protocol.swg.auctionManagerClientListener; + +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class AuctionQueryHeadersMessage extends SWGMessage { + + private int range; + private int counter; + private int screen; + private int category; + private int itemTypeCRC; + private String searchString; + private int unkInt; + private int minPrice; + private int maxPrice; + private byte includeEntranceFee; + private long vendorId; + private byte vendorFlag; + private short offset; + + @Override + public void deserialize(IoBuffer data) { + data.skip(6); + setRange(data.getInt()); + setCounter(data.getInt()); + setScreen(data.getInt()); + setCategory(data.getInt()); + setItemTypeCRC(data.getInt()); + int size = data.getInt(); + try { + setSearchString(new String(ByteBuffer.allocate(size * 2).put(data.array(), data.position(), size * 2).array(), "UTF-16LE")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + data.position(data.position() + size * 2); + setUnkInt(data.getInt()); + setMinPrice(data.getInt()); + setMaxPrice(data.getInt()); + setIncludeEntranceFee(data.get()); + data.skip(5); // unk + setVendorId(data.getLong()); + setVendorFlag(data.get()); + setOffset(data.getShort()); + + } + + @Override + public IoBuffer serialize() { + // TODO Auto-generated method stub + return null; + } + + public int getRange() { + return range; + } + + public void setRange(int range) { + this.range = range; + } + + public int getCounter() { + return counter; + } + + public void setCounter(int counter) { + this.counter = counter; + } + + public int getScreen() { + return screen; + } + + public void setScreen(int screen) { + this.screen = screen; + } + + public int getCategory() { + return category; + } + + public void setCategory(int category) { + this.category = category; + } + + public int getItemTypeCRC() { + return itemTypeCRC; + } + + public void setItemTypeCRC(int itemTypeCRC) { + this.itemTypeCRC = itemTypeCRC; + } + + public String getSearchString() { + return searchString; + } + + public void setSearchString(String searchString) { + this.searchString = searchString; + } + + public int getUnkInt() { + return unkInt; + } + + public void setUnkInt(int unkInt) { + this.unkInt = unkInt; + } + + public int getMinPrice() { + return minPrice; + } + + public void setMinPrice(int minPrice) { + this.minPrice = minPrice; + } + + public int getMaxPrice() { + return maxPrice; + } + + public void setMaxPrice(int maxPrice) { + this.maxPrice = maxPrice; + } + + public byte getIncludeEntranceFee() { + return includeEntranceFee; + } + + public void setIncludeEntranceFee(byte includeEntranceFee) { + this.includeEntranceFee = includeEntranceFee; + } + + public long getVendorId() { + return vendorId; + } + + public void setVendorId(long vendorId) { + this.vendorId = vendorId; + } + + public byte getVendorFlag() { + return vendorFlag; + } + + public void setVendorFlag(byte vendorFlag) { + this.vendorFlag = vendorFlag; + } + + public short getOffset() { + return offset; + } + + public void setOffset(short offset) { + this.offset = offset; + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java new file mode 100644 index 00000000..71eea176 --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java @@ -0,0 +1,21 @@ +package protocol.swg.auctionManagerClientListener; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class AuctionQueryHeadersResponseMessage extends SWGMessage { + + @Override + public void deserialize(IoBuffer data) { + // TODO Auto-generated method stub + + } + + @Override + public IoBuffer serialize() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/BidAuctionMessage.java b/src/protocol/swg/auctionManagerClientListener/BidAuctionMessage.java new file mode 100644 index 00000000..21492348 --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/BidAuctionMessage.java @@ -0,0 +1,51 @@ +package protocol.swg.auctionManagerClientListener; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class BidAuctionMessage extends SWGMessage { + + private long auctionId; + private int myPrice; + private int proxyPrice; + + @Override + public void deserialize(IoBuffer data) { + data.skip(6); + setAuctionId(data.getLong()); + setMyPrice(data.getInt()); + setProxyPrice(data.getInt()); + } + + @Override + public IoBuffer serialize() { + // TODO Auto-generated method stub + return null; + } + + public long getAuctionId() { + return auctionId; + } + + public void setAuctionId(long auctionId) { + this.auctionId = auctionId; + } + + public int getMyPrice() { + return myPrice; + } + + public void setMyPrice(int myPrice) { + this.myPrice = myPrice; + } + + public int getProxyPrice() { + return proxyPrice; + } + + public void setProxyPrice(int proxyPrice) { + this.proxyPrice = proxyPrice; + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/BidAuctionResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/BidAuctionResponseMessage.java new file mode 100644 index 00000000..da1bccc8 --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/BidAuctionResponseMessage.java @@ -0,0 +1,45 @@ +package protocol.swg.auctionManagerClientListener; + +import java.nio.ByteOrder; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class BidAuctionResponseMessage extends SWGMessage { + + private long objectId; + private int status; + + public static final int SUCCESS = 0; + public static final int INVALIDAUCTIONER = 1; + public static final int INVALIDITEM = 2; + public static final int INVALIDPRICE = 4; + public static final int NOTENOUGHCREDITS = 9; + public static final int PURCHASEFAILED = 10; + public static final int PURCHASEREJECTED = 11; + public static final int PRICETOOHIGH = 13; + public static final int PRICEOVERFLOW = 14; + + public BidAuctionResponseMessage(long objectId, int status) { + this.objectId = objectId; + this.status = status; + } + + @Override + public void deserialize(IoBuffer data) { + // TODO Auto-generated method stub + + } + + @Override + public IoBuffer serialize() { + IoBuffer result = IoBuffer.allocate(18).order(ByteOrder.LITTLE_ENDIAN); + result.putShort((short) 3); + result.putInt(0x8FCBEF4A); + result.putLong(objectId); + result.putInt(status); + return result.flip(); + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionMessage.java b/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionMessage.java new file mode 100644 index 00000000..64685acf --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionMessage.java @@ -0,0 +1,31 @@ +package protocol.swg.auctionManagerClientListener; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class CancelLiveAuctionMessage extends SWGMessage { + + private long objectId; + + @Override + public void deserialize(IoBuffer data) { + data.skip(6); + setObjectId(data.getLong()); + } + + @Override + public IoBuffer serialize() { + // TODO Auto-generated method stub + return null; + } + + public long getObjectId() { + return objectId; + } + + public void setObjectId(long objectId) { + this.objectId = objectId; + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionResponseMessage.java new file mode 100644 index 00000000..8b72042c --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionResponseMessage.java @@ -0,0 +1,42 @@ +package protocol.swg.auctionManagerClientListener; + +import java.nio.ByteOrder; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class CancelLiveAuctionResponseMessage extends SWGMessage { + + public static final int SUCCESS = 0; + public static final int NOTALLOWED = 1; + public static final int INVALIDITEM = 2; + public static final int NOTOWNER = 8; + public static final int ALREADYCOMPLETED = 15; + private long itemId; + private int status; + + public CancelLiveAuctionResponseMessage(long itemId, int status) { + this.itemId = itemId; + this.status = status; + } + + + @Override + public void deserialize(IoBuffer data) { + // TODO Auto-generated method stub + + } + + @Override + public IoBuffer serialize() { + IoBuffer result = IoBuffer.allocate(19).order(ByteOrder.LITTLE_ENDIAN); + result.putShort((short) 4); + result.putInt(0x7DA2246C); + result.putLong(itemId); + result.putInt(status); + result.put((byte) 0); // unk + return result.flip(); + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/CommoditiesItemTypeListResponse.java b/src/protocol/swg/auctionManagerClientListener/CommoditiesItemTypeListResponse.java new file mode 100644 index 00000000..bb2a915b --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/CommoditiesItemTypeListResponse.java @@ -0,0 +1,30 @@ +package protocol.swg.auctionManagerClientListener; + +import java.nio.ByteOrder; + +import main.NGECore; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class CommoditiesItemTypeListResponse extends SWGMessage { + + @Override + public void deserialize(IoBuffer data) { + // TODO Auto-generated method stub + + } + + @Override + public IoBuffer serialize() { + String galaxy = NGECore.getInstance().getGalaxyName(); + IoBuffer result = IoBuffer.allocate(14 + galaxy.length()).order(ByteOrder.LITTLE_ENDIAN); + result.putShort((short) 2); + result.putInt(0xD4E937FC); + result.put(getAsciiString(galaxy + ".0")); + result.putInt(0); + return result.flip(); + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/CommoditiesResourceTypeListResponse.java b/src/protocol/swg/auctionManagerClientListener/CommoditiesResourceTypeListResponse.java new file mode 100644 index 00000000..c55b4726 --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/CommoditiesResourceTypeListResponse.java @@ -0,0 +1,47 @@ +package protocol.swg.auctionManagerClientListener; + +import java.nio.ByteOrder; +import java.util.Vector; + +import main.NGECore; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class CommoditiesResourceTypeListResponse extends SWGMessage { + + private Vector resNames; + + public CommoditiesResourceTypeListResponse(Vector resNames) { + this.resNames = resNames; + } + + @Override + public void deserialize(IoBuffer data) { + // TODO Auto-generated method stub + + } + + @Override + public IoBuffer serialize() { + String galaxyName = NGECore.getInstance().getGalaxyName(); + final IoBuffer result = IoBuffer.allocate(100).order(ByteOrder.LITTLE_ENDIAN); + result.setAutoExpand(true); + + result.putShort((short) 2); + result.putInt(0x5EDD19CB); + + result.put(getAsciiString(galaxyName + "." + String.valueOf(resNames.size()))); + result.putInt(479); + result.putLong(0); + + resNames.forEach(s -> result.put(getAsciiString(s))); + + int size = result.position(); + IoBuffer result2 = IoBuffer.allocate(size).put(result.array(), 0, size); + + return result2.flip(); + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java b/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java new file mode 100644 index 00000000..159e911b --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java @@ -0,0 +1,90 @@ +package protocol.swg.auctionManagerClientListener; + +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class CreateAuctionMessage extends SWGMessage { + + private long objectId; + private long vendorId; + private int price; + private int duration; + private String description; + private byte premium; + + @Override + public void deserialize(IoBuffer data) { + data.skip(6); + setObjectId(data.getLong()); + setVendorId(data.getLong()); + setPrice(data.getInt()); + setDuration(data.getInt()); // in minutes + int size = data.getInt(); + try { + setDescription(new String(ByteBuffer.allocate(size * 2).put(data.array(), data.position(), size * 2).array(), "UTF-16LE")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + data.position(data.position() + size * 2); + setPremium(data.get()); + } + + @Override + public IoBuffer serialize() { + // TODO Auto-generated method stub + return null; + } + + public long getObjectId() { + return objectId; + } + + public void setObjectId(long objectId) { + this.objectId = objectId; + } + + public long getVendorId() { + return vendorId; + } + + public void setVendorId(long vendorId) { + this.vendorId = vendorId; + } + + public int getPrice() { + return price; + } + + public void setPrice(int price) { + this.price = price; + } + + public int getDuration() { + return duration; + } + + public void setDuration(int duration) { + this.duration = duration; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public byte getPremium() { + return premium; + } + + public void setPremium(byte premium) { + this.premium = premium; + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java b/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java new file mode 100644 index 00000000..ce961680 --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java @@ -0,0 +1,90 @@ +package protocol.swg.auctionManagerClientListener; + +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class CreateImmediateAuctionMessage extends SWGMessage { + + private long objectId; + private long vendorId; + private int price; + private int duration; + private String description; + private byte premium; + + @Override + public void deserialize(IoBuffer data) { + data.skip(6); + setObjectId(data.getLong()); + setVendorId(data.getLong()); + setPrice(data.getInt()); + setDuration(data.getInt()); // in minutes + int size = data.getInt(); + try { + setDescription(new String(ByteBuffer.allocate(size * 2).put(data.array(), data.position(), size * 2).array(), "UTF-16LE")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + data.position(data.position() + size * 2); + setPremium(data.get()); + } + + @Override + public IoBuffer serialize() { + // TODO Auto-generated method stub + return null; + } + + public long getObjectId() { + return objectId; + } + + public void setObjectId(long objectId) { + this.objectId = objectId; + } + + public long getVendorId() { + return vendorId; + } + + public void setVendorId(long vendorId) { + this.vendorId = vendorId; + } + + public int getPrice() { + return price; + } + + public void setPrice(int price) { + this.price = price; + } + + public int getDuration() { + return duration; + } + + public void setDuration(int duration) { + this.duration = duration; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public byte getPremium() { + return premium; + } + + public void setPremium(byte premium) { + this.premium = premium; + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/GetAuctionDetails.java b/src/protocol/swg/auctionManagerClientListener/GetAuctionDetails.java new file mode 100644 index 00000000..127d3450 --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/GetAuctionDetails.java @@ -0,0 +1,31 @@ +package protocol.swg.auctionManagerClientListener; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class GetAuctionDetails extends SWGMessage { + + private long objectId; + + @Override + public void deserialize(IoBuffer data) { + data.skip(6); + setObjectId(data.getLong()); + } + + @Override + public IoBuffer serialize() { + // TODO Auto-generated method stub + return null; + } + + public long getObjectId() { + return objectId; + } + + public void setObjectId(long objectId) { + this.objectId = objectId; + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java b/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java new file mode 100644 index 00000000..27fe7f85 --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java @@ -0,0 +1,21 @@ +package protocol.swg.auctionManagerClientListener; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class GetAuctionDetailsResponse extends SWGMessage { + + @Override + public void deserialize(IoBuffer data) { + // TODO Auto-generated method stub + + } + + @Override + public IoBuffer serialize() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerMessage.java b/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerMessage.java new file mode 100644 index 00000000..9492eb87 --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerMessage.java @@ -0,0 +1,31 @@ +package protocol.swg.auctionManagerClientListener; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class IsVendorOwnerMessage extends SWGMessage { + + private long terminalId; + + @Override + public void deserialize(IoBuffer data) { + data.skip(6); + setTerminalId(data.getLong()); + } + + @Override + public IoBuffer serialize() { + // TODO Auto-generated method stub + return null; + } + + public long getTerminalId() { + return terminalId; + } + + public void setTerminalId(long terminalId) { + this.terminalId = terminalId; + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerResponseMessage.java new file mode 100644 index 00000000..9f3e4aeb --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerResponseMessage.java @@ -0,0 +1,42 @@ +package protocol.swg.auctionManagerClientListener; + +import java.nio.ByteOrder; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class IsVendorOwnerResponseMessage extends SWGMessage { + + private int permission; + private int errorCode; + private long terminalId; + private String terminalString; + + public IsVendorOwnerResponseMessage(int permission, int errorCode, long terminalId, String terminalString) { + this.permission = permission; + this.errorCode = errorCode; + this.terminalId = terminalId; + this.terminalString = terminalString; + } + + @Override + public void deserialize(IoBuffer data) { + // TODO Auto-generated method stub + + } + + @Override + public IoBuffer serialize() { + IoBuffer result = IoBuffer.allocate(26 + terminalString.length()).order(ByteOrder.LITTLE_ENDIAN); + result.putShort((short) 6); + result.putInt(0xCE04173E); + result.putInt(permission); + result.putInt(errorCode); + result.putLong(terminalId); + result.put(getAsciiString(terminalString)); + result.putShort((short) 0x64); // unk + return result.flip(); + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/ItemSoldMessage.java b/src/protocol/swg/auctionManagerClientListener/ItemSoldMessage.java new file mode 100644 index 00000000..3ff53489 --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/ItemSoldMessage.java @@ -0,0 +1,55 @@ +package protocol.swg.auctionManagerClientListener; + +import java.nio.ByteOrder; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class ItemSoldMessage extends SWGMessage { + + public static final int SUCCESS = 0; + public static final int INVALIDAUCTIONER = 1; + public static final int INVALIDITEM = 2; + public static final int BADVENDOR = 3; + public static final int INVALIDPRICE = 4; + public static final int INVALIDDURATION = 5; + public static final int ALREADYFORSALE = 6; + public static final int UNKERROR = 6; + public static final int DONTOWNITEM = 8; + public static final int NOTENOUGHCREDITS = 9; + public static final int TOOMANYITEMS = 13; + public static final int PRICETOOHIGH = 14; + public static final int CANTSELLTRADINGITEM = 19; + public static final int VENDORFULL = 25; + + private long objectId; + private int status; + + public ItemSoldMessage(long objectId, int status) { + this.objectId = objectId; + this.status = status; + } + + + @Override + public void deserialize(IoBuffer data) { + // TODO Auto-generated method stub + + } + + @Override + public IoBuffer serialize() { + IoBuffer result = IoBuffer.allocate(18).order(ByteOrder.LITTLE_ENDIAN); + result.putShort((short) 3); + result.putInt(0x0E61CC92); + result.putLong(objectId); + result.putInt(status); + return result.flip(); + } + + public void setStatus(int status) { + this.status = status; + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemMessage.java b/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemMessage.java new file mode 100644 index 00000000..486d475c --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemMessage.java @@ -0,0 +1,41 @@ +package protocol.swg.auctionManagerClientListener; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class RetrieveAuctionItemMessage extends SWGMessage { + + private long objectId; + private long vendorId; + + @Override + public void deserialize(IoBuffer data) { + data.skip(6); + setObjectId(data.getLong()); + setVendorId(data.getLong()); + } + + @Override + public IoBuffer serialize() { + // TODO Auto-generated method stub + return null; + } + + public long getObjectId() { + return objectId; + } + + public void setObjectId(long objectId) { + this.objectId = objectId; + } + + public long getVendorId() { + return vendorId; + } + + public void setVendorId(long vendorId) { + this.vendorId = vendorId; + } + +} diff --git a/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemResponseMessage.java new file mode 100644 index 00000000..dbd39f46 --- /dev/null +++ b/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemResponseMessage.java @@ -0,0 +1,41 @@ +package protocol.swg.auctionManagerClientListener; + +import java.nio.ByteOrder; + +import org.apache.mina.core.buffer.IoBuffer; + +import protocol.swg.SWGMessage; + +public class RetrieveAuctionItemResponseMessage extends SWGMessage { + + private long objectId; + private int status; + + public static final int SUCCESS = 0; + public static final int NOTALLOWED = 1; + public static final int FULLINVENTORY = 12; + public static final int TOOFAR = 0x100; + public static final int DONTRETRIEVE = 0x200; + + public RetrieveAuctionItemResponseMessage(long objectId, int status) { + this.objectId = objectId; + this.status = status; + } + + @Override + public void deserialize(IoBuffer data) { + // TODO Auto-generated method stub + + } + + @Override + public IoBuffer serialize() { + IoBuffer result = IoBuffer.allocate(18).order(ByteOrder.LITTLE_ENDIAN); + result.putShort((short) 3); + result.putInt(0x9499EF8C); + result.putLong(objectId); + result.putInt(status); + return result.flip(); + } + +} diff --git a/src/resources/common/Opcodes.java b/src/resources/common/Opcodes.java index 4ac4d5ad..59b9880d 100644 --- a/src/resources/common/Opcodes.java +++ b/src/resources/common/Opcodes.java @@ -34,7 +34,7 @@ public class Opcodes { public static int ChatRequestRoomList = 0x4C3D2CFA; public static int ChatSystemMessage = CRC.StringtoCRC("ChatSystemMessage"); public static int ClientOpenContainerMessage = 0x2D2D6EE1; - public static int CommodotiesItemTypeListRequest = 0x48F493C5; + public static int CommoditiesItemTypeListRequest = 0x48F493C5; public static int CommoditiesResourceTypeListRequest = 0xCB1AE82D; public static int NewbieTutorialResponse = 0xCA88FBAD; public static int CmdSceneReady = 0x43FD1C22; @@ -45,6 +45,7 @@ public class Opcodes { public static int ClientVerifyAndLockNameRequest = 0x9eb04b9f; public static int DeleteCharacterMessage = 0xE87AD031; public static int GetMapLocationsMessage = 0x1A7AB839; + public static int IsVendorOwnerMessage = CRC.StringtoCRC("IsVendorOwnerMessage"); public static int LagRequest = 0x31805EE0; public static int LoginClientId = 0x41131F96; public static int ObjControllerMessage = 0x80CE5E46; @@ -77,9 +78,9 @@ public class Opcodes { public static int CollectionServerFirstListRequest = CRC.StringtoCRC("CollectionServerFirstListRequest"); public static int ShowHelmet = CRC.StringtoCRC("ShowHelmet"); public static int ShowBackpack = CRC.StringtoCRC("ShowBackpack"); + public static int CreateAuctionMessage = CRC.StringtoCRC("CreateAuctionMessage"); public static int ChatOnEnteredRoom = CRC.StringtoCRC("ChatOnEnteredRoom"); public static int ChatCreateRoom = CRC.StringtoCRC("ChatCreateRoom"); public static int ChatQueryRoom = 0x9CF2B192; - public static int Unknown = 0x173B91C2; // packet sent to server on every character load-in } diff --git a/src/services/PlayerService.java b/src/services/PlayerService.java index a1dc9eb3..91a3eedd 100644 --- a/src/services/PlayerService.java +++ b/src/services/PlayerService.java @@ -361,11 +361,7 @@ public class PlayerService implements INetworkDispatch { swgOpcodes.put(Opcodes.SetLfgInterests, (session, data) -> { }); - - swgOpcodes.put(Opcodes.CommodotiesItemTypeListRequest, (session, data) -> { - - }); - + swgOpcodes.put(Opcodes.SetFurnitureRoationDegree, (session, data) -> { }); diff --git a/src/services/bazaar/AuctionItem.java b/src/services/bazaar/AuctionItem.java new file mode 100644 index 00000000..1eef0858 --- /dev/null +++ b/src/services/bazaar/AuctionItem.java @@ -0,0 +1,243 @@ +package services.bazaar; + +import com.sleepycat.je.Environment; +import com.sleepycat.je.Transaction; +import com.sleepycat.persist.model.Entity; +import com.sleepycat.persist.model.NotPersistent; +import com.sleepycat.persist.model.PrimaryKey; +import engine.resources.objects.IPersistent; + +@Entity(version=0) +public class AuctionItem implements IPersistent { + + @PrimaryKey + private long objectId; + private long ownerId; + private long vendorId; + private long buyerId; + private long offerToId; + private int itemType; + private String ownerName; + private String bidderName; + private String itemName; + private String itemDescription; + private int price; + private int proxyBid; + private boolean auction; + private String vuid; + private int status; + private boolean onBazaar; + private long expireTime; + private int auctionOptions; + + public static final int PREMIUM = 0x400; + public static final int WITHDRAW = 0x800; + public final static int FORSALE = 1; + public final static int SOLD = 2; + public final static int EXPIRED = 4; + public final static int OFFERED = 5; + public final static int RETRIEVED = 6; + + @NotPersistent + private Transaction txn; + + public AuctionItem() { + + } + + public AuctionItem(long objectId, long ownerId) { + this.objectId = objectId; + this.ownerId = ownerId; + } + + + public long getObjectId() { + return objectId; + } + + + public void setObjectId(long objectId) { + this.objectId = objectId; + } + + + public long getOwnerId() { + return ownerId; + } + + + public void setOwnerId(long ownerId) { + this.ownerId = ownerId; + } + + + public long getVendorId() { + return vendorId; + } + + + public void setVendorId(long vendorId) { + this.vendorId = vendorId; + } + + + public long getBuyerId() { + return buyerId; + } + + + public void setBuyerId(long buyerId) { + this.buyerId = buyerId; + } + + + public long getOfferToId() { + return offerToId; + } + + + public void setOfferToId(long offerToId) { + this.offerToId = offerToId; + } + + + public int getItemType() { + return itemType; + } + + + public void setItemType(int itemType) { + this.itemType = itemType; + } + + + public String getOwnerName() { + return ownerName; + } + + + public void setOwnerName(String ownerName) { + this.ownerName = ownerName; + } + + + public String getBidderName() { + return bidderName; + } + + + public void setBidderName(String bidderName) { + this.bidderName = bidderName; + } + + + public String getItemName() { + return itemName; + } + + + public void setItemName(String itemName) { + this.itemName = itemName; + } + + + public String getItemDescription() { + return itemDescription; + } + + + public void setItemDescription(String itemDescription) { + this.itemDescription = itemDescription; + } + + + public int getPrice() { + return price; + } + + + public void setPrice(int price) { + this.price = price; + } + + + public int getProxyBid() { + return proxyBid; + } + + + public void setProxyBid(int proxyBid) { + this.proxyBid = proxyBid; + } + + + public boolean isAuction() { + return auction; + } + + + public void setAuction(boolean auction) { + this.auction = auction; + } + + + public String getVuid() { + return vuid; + } + + + public void setVuid(String vuid) { + this.vuid = vuid; + } + + + public int getStatus() { + return status; + } + + + public void setStatus(int status) { + this.status = status; + } + + + public boolean isOnBazaar() { + return onBazaar; + } + + + public void setOnBazaar(boolean onBazaar) { + this.onBazaar = onBazaar; + } + + + public long getExpireTime() { + return expireTime; + } + + + public void setExpireTime(long expireTime) { + this.expireTime = expireTime; + } + + + public int getAuctionOptions() { + return auctionOptions; + } + + + public void setAuctionOptions(int auctionOptions) { + this.auctionOptions = auctionOptions; + } + + @Override + public void createTransaction(Environment env) { + txn = env.beginTransaction(null, null); + } + + @Override + public Transaction getTransaction() { + return txn; + } + +} diff --git a/src/services/bazaar/BazaarService.java b/src/services/bazaar/BazaarService.java new file mode 100644 index 00000000..4d765826 --- /dev/null +++ b/src/services/bazaar/BazaarService.java @@ -0,0 +1,149 @@ +package services.bazaar; + +import java.nio.ByteOrder; +import java.util.Map; + +import main.NGECore; +import engine.clients.Client; +import engine.resources.objects.SWGObject; +import engine.resources.scene.Point3D; +import engine.resources.service.INetworkDispatch; +import engine.resources.service.INetworkRemoteEvent; +import resources.common.Opcodes; +import resources.objects.building.BuildingObject; +import resources.objects.creature.CreatureObject; +import protocol.swg.ClientIdMsg; +import protocol.swg.auctionManagerClientListener.CommoditiesItemTypeListResponse; +import protocol.swg.auctionManagerClientListener.CommoditiesResourceTypeListResponse; +import protocol.swg.auctionManagerClientListener.CreateAuctionMessage; +import protocol.swg.auctionManagerClientListener.IsVendorOwnerMessage; +import protocol.swg.auctionManagerClientListener.IsVendorOwnerResponseMessage; +import protocol.swg.auctionManagerClientListener.ItemSoldMessage; + +public class BazaarService implements INetworkDispatch { + + private NGECore core; + + public BazaarService(NGECore core) { + this.core = core; + } + + @Override + public void insertOpcodes(Map swgOpcodes, Map objControllerOpcodes) { + + swgOpcodes.put(Opcodes.CommoditiesItemTypeListRequest, (session, data) -> { + + Client client = core.getClient(session); + + if (client == null) + return; + + SWGObject player = client.getParent(); + + if (player == null) + return; + + session.write(new CommoditiesItemTypeListResponse().serialize()); + + }); + + swgOpcodes.put(Opcodes.IsVendorOwnerMessage, (session, data) -> { + + Client client = core.getClient(session); + + if (client == null) + return; + + SWGObject player = client.getParent(); + + if (player == null) + return; + + data = data.order(ByteOrder.LITTLE_ENDIAN); + data.position(0); + + IsVendorOwnerMessage request = new IsVendorOwnerMessage(); + request.deserialize(data); + long terminalId = request.getTerminalId(); + SWGObject terminal = core.objectService.getObject(terminalId); + if(terminal == null) + return; + Point3D pos = terminal.getWorldPosition(); + session.write(new IsVendorOwnerResponseMessage(2, 0, terminalId, "tatooine.@tatooine_region_names:mos_eisley.@terminal_name:terminal_bazaar." + terminalId + "#" + pos.x + "," + pos.z).serialize()); + + + }); + + swgOpcodes.put(Opcodes.CommoditiesResourceTypeListRequest, (session, data) -> { + + Client client = core.getClient(session); + + if (client == null) + return; + + SWGObject player = client.getParent(); + + if (player == null) + return; + + data = data.order(ByteOrder.LITTLE_ENDIAN); + + if(data.remaining() > 2) // if client attaches a string to the request then it has already recieved it on zone-in + return; + + //session.write(new CommoditiesResourceTypeListResponse(core.resourceService.getCompleteResourceNameHistory()).serialize()); + + }); + + swgOpcodes.put(Opcodes.CreateAuctionMessage, (session, data) -> { + + Client client = core.getClient(session); + + if (client == null) + return; + + SWGObject player = client.getParent(); + + if (player == null) + return; + + data = data.order(ByteOrder.LITTLE_ENDIAN); + data.position(0); + + CreateAuctionMessage createAuction = new CreateAuctionMessage(); + + SWGObject vendor = core.objectService.getObject(createAuction.getVendorId()); + SWGObject item = core.objectService.getObject(createAuction.getObjectId()); + + if(vendor == null || item == null || item instanceof CreatureObject || item instanceof BuildingObject) + return; + + + + }); + + + + } + + public void addAuction(CreatureObject player, SWGObject item, SWGObject vendor, int price, int duration, String description, boolean auction, boolean premium) { + + ItemSoldMessage itemSoldMsg = new ItemSoldMessage(item.getObjectID(), ItemSoldMessage.SUCCESS); + + if(item.getAttributes().containsKey("no_trade") || !item.isSubChildOf(player)) { + itemSoldMsg.setStatus(ItemSoldMessage.INVALIDITEM); + player.getClient().getSession().write(itemSoldMsg.serialize()); + return; + } + + + + } + + @Override + public void shutdown() { + + } + + +} diff --git a/src/services/resources/ResourceService.java b/src/services/resources/ResourceService.java index fa546a01..4d9e9eee 100644 --- a/src/services/resources/ResourceService.java +++ b/src/services/resources/ResourceService.java @@ -11343,4 +11343,8 @@ public class ResourceService implements INetworkDispatch { } return containerObject; } + + public Vector getCompleteResourceNameHistory() { + return completeResourceNameHistory; + } } From 7cd8d8d742b06c75e6535c5fb9976dd6c3979aa1 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Sat, 12 Apr 2014 02:30:17 +0200 Subject: [PATCH 62/79] All structure terminal menus and functionalities implemented Dropped items add nowto the buildings itemlist Some databse work for permissions --- scripts/commands/movefurniture.py | 1 - scripts/commands/permissionlistmodify.py | 9 +- scripts/commands/transferitemmisc.py | 7 +- .../player_house_generic_small_style_01.py | 2 +- .../radial/structure_management_terminal.py | 46 +- src/protocol/swg/ObjControllerMessage.java | 5 +- .../building/BuildingMessageBuilder.java | 24 + .../objects/building/BuildingObject.java | 128 +++- src/services/CharacterService.java | 53 ++ src/services/DevService.java | 4 +- src/services/housing/HousingService.java | 707 +++++++++++++++--- 11 files changed, 836 insertions(+), 150 deletions(-) diff --git a/scripts/commands/movefurniture.py b/scripts/commands/movefurniture.py index b6ff5c6d..1f4a7148 100644 --- a/scripts/commands/movefurniture.py +++ b/scripts/commands/movefurniture.py @@ -6,7 +6,6 @@ def setup(): def run(core, actor, target, commandString): tarObj = core.objectService.getObject(actor.getTargetId()) - actor.sendSystemMessage('target template ' + tarObj.getTemplate(),1) container = actor.getContainer() parsedMsg = commandString.split(' ', 2) diff --git a/scripts/commands/permissionlistmodify.py b/scripts/commands/permissionlistmodify.py index a34f8d43..8c0108ba 100644 --- a/scripts/commands/permissionlistmodify.py +++ b/scripts/commands/permissionlistmodify.py @@ -4,7 +4,14 @@ def setup(): return def run(core, actor, target, commandString): - core.harvesterService.handlePermissionListModify(actor, target, commandString) + permissionType = 'Undetermined' + commandArgs = commandString.split(' ') + if len(commandArgs) > 3: + permissionType = commandArgs[2] + if permissionType=='ENTRY' | permissionType=='BAN': + core.housingService.handlePermissionListModify(actor, target, commandString) + if permissionType=='ADMIN' | permissionType=='HOPPER': + core.harvesterService.handlePermissionListModify(actor, target, commandString) return \ No newline at end of file diff --git a/scripts/commands/transferitemmisc.py b/scripts/commands/transferitemmisc.py index 27bfde45..c398a980 100644 --- a/scripts/commands/transferitemmisc.py +++ b/scripts/commands/transferitemmisc.py @@ -12,9 +12,10 @@ def run(core, actor, target, commandString): actorContainer = actor.getContainer() if actorContainer != None and (container.getTemplate() == "object/cell/shared_cell.iff") & core.housingService.getPermissions(actor, actorContainer): - target.getContainer().transferTo(actor, container, target) - core.simulationService.teleport(target, actor.getPosition(), Quaternion(1,0,0,0), containerID) - return + target.getContainer().transferTo(actor, container, target) + core.simulationService.teleport(target, actor.getPosition(), Quaternion(1,0,0,0), containerID) + core.housingService.addItemToHouseItemList(target,actorContainer) + return elif actorContainer != None and container.getTemplate() == "object/cell/shared_cell.iff": actor.sendSystemMessage("You do not have permission to access that container!", 0) return diff --git a/scripts/object/building/player/player_house_generic_small_style_01.py b/scripts/object/building/player/player_house_generic_small_style_01.py index aa3c37eb..6e0ae61d 100644 --- a/scripts/object/building/player/player_house_generic_small_style_01.py +++ b/scripts/object/building/player/player_house_generic_small_style_01.py @@ -6,6 +6,6 @@ def setup(core, object): object.setAttachment("structureSign", sign) structureterminal = core.objectService.createChildObject(object, 'object/tangible/terminal/shared_terminal_player_structure.iff', -5, 0.74, -1.81, 0.707107, -0.707107, 1) - structureterminal.setAttachment('radial_filename', 'structure_management_terminal') + #structureterminal.setAttachment('radial_filename', 'structure_management_terminal') structureterminal.setAttachment('housing_parentstruct', object) return \ No newline at end of file diff --git a/scripts/radial/structure_management_terminal.py b/scripts/radial/structure_management_terminal.py index 983127e2..914133ef 100644 --- a/scripts/radial/structure_management_terminal.py +++ b/scripts/radial/structure_management_terminal.py @@ -1,8 +1,8 @@ from resources.common import RadialOptions from protocol.swg import ResourceListForSurveyMessage from services.sui.SUIService import MessageBoxType -from services.SurveyService import createSurveyRangeSUIWindow from services.sui.SUIWindow import Trigger +from tools import JythonUtilities from java.util import Vector import sys @@ -13,22 +13,24 @@ def createRadial(core, owner, target, radials): radials.add(RadialOptions(0, 7, 0, 'Examine')) radials.add(RadialOptions(0, 78, 0, '@player_structure:management')) radials.add(RadialOptions(0, 117, 0, '@player_structure:permissions')) - radials.add(RadialOptions(2, 118, 0, '@harvester:manage')) radials.add(RadialOptions(2, 128, 0, '@player_structure:permission_destroy')) radials.add(RadialOptions(2, 124, 0, '@player_structure:management_status')) radials.add(RadialOptions(2, 129, 0, '@player_structure:management_pay')) radials.add(RadialOptions(2, 50, 0, '@base_player:set_name')) - radials.add(RadialOptions(2, 51, 0, '@player_structure:management_power')) - radials.add(RadialOptions(3, 121, 0, '@player_structure:permission_admin')) - radials.add(RadialOptions(3, 123, 0, '@player_structure:permissions')) + radials.add(RadialOptions(2, 127, 0, '@player_structure:management_residence')) + #radials.add(RadialOptions(2, 125, 0, '@player_structure:management_privacy : ' + core.housingService.fetchPrivacyString(target))) + radials.add(RadialOptions(2, 171, 0, '@player_structure:find_items_find_all_house_items')) + radials.add(RadialOptions(2, 173, 0, '@player_structure:move_first_item')) + radials.add(RadialOptions(2, 174, 0, '@player_structure:find_items_search_for_house_items')) + radials.add(RadialOptions(2, 175, 0, '@player_structure:delete_all_items_title')) + radials.add(RadialOptions(2, 172, 0, 'Pack Up This Building')) + radials.add(RadialOptions(3, 121, 0, '@player_structure:permission_enter')) + radials.add(RadialOptions(3, 123, 0, '@player_structure:permission_banned')) return def handleSelection(core, owner, target, option): - if option == 118 and target: - if owner is not None: - core.housingService.handleOperateMachinery(owner,target) - return + if option == 128: if owner is not None: core.housingService.createDestroySUIPage(owner,target) @@ -45,15 +47,33 @@ def handleSelection(core, owner, target, option): if owner is not None: core.housingService.createRenameSUIPage(owner,target) return - if option == 51: + if option == 127: if owner is not None: - core.housingService.handleDepositPower(owner,target) + core.housingService.declareResidency(owner,target) + return + if option == 171: + if owner is not None: + core.housingService.handleListAllItems(owner,target) + return + if option == 175: + if owner is not None: + core.housingService.handleDeleteAllItems(owner,target) + return + if option == 173: + if owner is not None: + core.housingService.handleFindLostItems(owner,target) + return + if option == 174: + if owner is not None: + core.housingService.handleSearchForItems(owner,target) return if option == 121: if owner is not None: - core.housingService.handlePermissionAdmin(owner,target) + core.housingService.handlePermissionEntry(owner,target) return if option == 123: if owner is not None: - core.housingService.handlePermissionHopper(owner,target) + core.housingService.handlePermissionBan(owner,target) return + + diff --git a/src/protocol/swg/ObjControllerMessage.java b/src/protocol/swg/ObjControllerMessage.java index b3aa94eb..1c94c6b7 100644 --- a/src/protocol/swg/ObjControllerMessage.java +++ b/src/protocol/swg/ObjControllerMessage.java @@ -83,8 +83,9 @@ public class ObjControllerMessage extends SWGMessage { } public IoBuffer serialize() { - IoBuffer buffer = IoBuffer.allocate(1024).order(ByteOrder.LITTLE_ENDIAN); - + //IoBuffer buffer = IoBuffer.allocate(1024).order(ByteOrder.LITTLE_ENDIAN); -> java.nio.BufferOverflowException + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); buffer.putShort((short)5); buffer.putInt(0x80CE5E46); buffer.putInt(update); diff --git a/src/resources/objects/building/BuildingMessageBuilder.java b/src/resources/objects/building/BuildingMessageBuilder.java index 5a751d8f..b3639d99 100644 --- a/src/resources/objects/building/BuildingMessageBuilder.java +++ b/src/resources/objects/building/BuildingMessageBuilder.java @@ -22,8 +22,12 @@ package resources.objects.building; import java.nio.ByteOrder; +import java.util.Vector; + import org.apache.mina.core.buffer.IoBuffer; + import resources.objects.ObjectMessageBuilder; +import resources.objects.harvester.HarvesterObject; public class BuildingMessageBuilder extends ObjectMessageBuilder { @@ -122,6 +126,26 @@ public class BuildingMessageBuilder extends ObjectMessageBuilder { return buffer; } + + public IoBuffer buildPermissionListCreate(Vector permissionList, String listName) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + int listSize = permissionList.size(); + buffer.putShort((short)4); + buffer.putInt(0x52F364B8); + buffer.putInt(listSize); + for (String name : permissionList){ + buffer.put(getUnicodeString(name)); + } + //buffer.putInt(0x61); + buffer.putInt(0); + //buffer.putShort((short)0); + buffer.put(getUnicodeString(listName)); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } @Override diff --git a/src/resources/objects/building/BuildingObject.java b/src/resources/objects/building/BuildingObject.java index 37776c1e..1598b374 100644 --- a/src/resources/objects/building/BuildingObject.java +++ b/src/resources/objects/building/BuildingObject.java @@ -21,10 +21,13 @@ ******************************************************************************/ package resources.objects.building; +import java.util.Vector; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; +import main.NGECore; import resources.objects.cell.CellObject; +import resources.objects.creature.CreatureObject; import com.sleepycat.je.Environment; import com.sleepycat.je.Transaction; @@ -40,7 +43,7 @@ import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Entity(version=2) +@Entity(version=5) public class BuildingObject extends TangibleObject implements IPersistent { @NotPersistent @@ -49,7 +52,16 @@ public class BuildingObject extends TangibleObject implements IPersistent { private Transaction txn; private float maintenanceAmount = 0; - private String deedTemplate; + private int BMR = 0; + private String deedTemplate=""; + private boolean residency=false; + private byte privacy=(byte)0; + public static byte PRIVATE = (byte)0; + public static byte PUBLIC = (byte)1; + private Vector itemsList = new Vector(); + private short maximumStorageCapacity=0; + private Vector entryList = new Vector(); // Preferably the OIDs should be stored, because of name changes + private Vector banList = new Vector(); public BuildingObject() { super(); @@ -93,6 +105,117 @@ public class BuildingObject extends TangibleObject implements IPersistent { public String getDeedTemplate(){ return this.deedTemplate; } + + public String getBuildingName() { + return this.getCustomName(); + } + + public void setBuildingName(String buildingName, CreatureObject owner) { + //owner.getClient().getSession().write(messageBuilder.buildCustomNameDelta(this,buildingName)); + this.setCustomName(buildingName); + ((CreatureObject)owner).sendSystemMessage("Structure renamed.", (byte) 0); + } + + public int getBMR() { + return BMR; + } + + public void setBMR(int BMR) { + this.BMR = BMR; + } + + public void setResidency(CreatureObject owner){ + owner.sendSystemMessage("@player_structure:declared_residency", (byte) 1); + residency = true; + } + + public boolean getResidency(){ + return this.residency; + } + + public byte getPrivacy() { + return privacy; + } + + public String getPrivacyString() { + if (privacy==PRIVATE) + return "private"; + if (privacy==PUBLIC) + return "public"; + return "42"; + } + + public void setPrivacy(byte privacy) { + this.privacy = privacy; + } + + public Vector getItemsList() { + return itemsList; + } + + public void setItemsList(Vector itemsList) { + this.itemsList = itemsList; + } + + public short getMaximumStorageCapacity() { + return maximumStorageCapacity; + } + + public void setMaximumStorageCapacity(short maximumStorageCapacity) { + this.maximumStorageCapacity = maximumStorageCapacity; + } + + public void setPermissionEntry(String name,CreatureObject owner){ + Vector entryListFirstNames = new Vector(); + for (long oid : entryList){ + String firstName = NGECore.getInstance().characterService.getPlayerFirstName(oid); + entryListFirstNames.add(firstName); + } + entryListFirstNames.add("Peter"); + entryListFirstNames.add("Jackson"); + owner.getClient().getSession().write(messageBuilder.buildPermissionListCreate(entryListFirstNames, name)); + } + + public void setPermissionBan(String name,CreatureObject owner){ + Vector banListFirstNames = new Vector(); + for (long oid : banList){ + String firstName = NGECore.getInstance().characterService.getPlayerFirstName(oid); + banListFirstNames.add(firstName); + } + banListFirstNames.add("Peter"); + banListFirstNames.add("Smith"); + owner.getClient().getSession().write(messageBuilder.buildPermissionListCreate(banListFirstNames, name)); + } + + public void addPlayerToEntryList(CreatureObject owner,long oid, String firstName){ + if (!entryList.contains(oid)){ + this.entryList.add(oid); + owner.sendSystemMessage(firstName+ " added to the list.", (byte)1); // player_added %NO added to the list. + } + } + + public void removePlayerFromEntryList(CreatureObject owner,long oid, String firstName){ + if (entryList.contains(oid)){ + this.entryList.remove(oid); + owner.sendSystemMessage(firstName+ " removed to the list.", (byte)1); // player_removed %NO removed from the list. + } + } + + public void addPlayerToBanList(CreatureObject owner,long oid, String firstName){ + if (!banList.contains(oid)){ + this.banList.add(oid); + owner.sendSystemMessage(firstName+ " added to the list.", (byte)1); + } + } + + public void removePlayerFromBanList(CreatureObject owner,long oid, String firstName){ + if (banList.contains(oid)){ + this.banList.remove(oid); + owner.sendSystemMessage(firstName+ " removed to the list.", (byte)1); + } + } + + @Override public void sendBaselines(Client destination) { @@ -115,5 +238,4 @@ public class BuildingObject extends TangibleObject implements IPersistent { txn = env.beginTransaction(null, null); txn.setLockTimeout(500, TimeUnit.MILLISECONDS); } - } diff --git a/src/services/CharacterService.java b/src/services/CharacterService.java index ec394752..9a00b424 100644 --- a/src/services/CharacterService.java +++ b/src/services/CharacterService.java @@ -542,6 +542,59 @@ public class CharacterService implements INetworkDispatch { return false; } + /** + * Checks the database if a player with the given first name exists + * and returns the objectID of that player. + * @param name : String + * @return objectID : long + */ + public long getPlayerOID(String name) { + if (!name.equals("")) { + long oid = 0L; + try { + PreparedStatement ps = databaseConnection.preparedStatement("SELECT * FROM characters WHERE \"firstName\"=?"); + ps.setString(1, name); + ResultSet resultSet = ps.executeQuery(); + while (resultSet.next()) { + oid = resultSet.getLong("id"); + } + return oid; + } + + catch (SQLException e) { e.printStackTrace(); } + } + return 0L; + } + + /** + * Delivers the first name of a player + * @param oid : long + * @return firstName : String + */ + public String getPlayerFirstName(long oid) { + + String name = ""; + try { + PreparedStatement ps = databaseConnection.preparedStatement("SELECT * FROM characters WHERE \"id\"=?"); + ps.setLong(1, oid); + ResultSet resultSet = ps.executeQuery(); + while (resultSet.next()) { + name = resultSet.getString("firstName"); + if (!name.equals("")) { + if (name.contains(" ")) { + name = name.split(" ")[0]; + } + name = name.toLowerCase(); + + } + return name; + } + + } catch (SQLException e) { e.printStackTrace(); } + + return ""; + } + /** * Checks the database for if the object ID of the player exists. * @param objectId Object ID to check for in the database diff --git a/src/services/DevService.java b/src/services/DevService.java index 03464bb2..da4a5561 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -88,8 +88,8 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 23, "Jedi Items"); suiOptions.put((long) 26, "Installations"); suiOptions.put((long) 110, "Survey Devices"); - //if(creature.getClient().isGM()) suiOptions.put((long) 120, "House Deeds"); - suiOptions.put((long) 120, "House Deeds"); + if(creature.getClient().isGM()) suiOptions.put((long) 120, "House Deeds"); + //suiOptions.put((long) 120, "House Deeds"); break; case 3: // [Items] Weapons suiOptions.put((long) 30, "Jedi Weapons"); diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index b8ee3f79..5db53834 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -29,6 +29,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; +import java.util.HashMap; import java.util.Map; import java.util.Random; import java.util.Vector; @@ -36,6 +37,7 @@ import java.util.concurrent.ConcurrentHashMap; import main.NGECore; import protocol.swg.EnterStructurePlacementModeMessage; +import protocol.swg.SceneCreateObjectByCrc; import protocol.swg.SceneDestroyObject; import resources.objects.building.BuildingObject; import resources.objects.creature.CreatureObject; @@ -47,6 +49,7 @@ import resources.objects.tangible.TangibleObject; import services.sui.SUIWindow; import services.sui.SUIWindow.SUICallback; import services.sui.SUIWindow.Trigger; +import engine.resources.common.CRC; import engine.resources.objects.SWGObject; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; @@ -84,7 +87,7 @@ public class HousingService implements INetworkDispatch { public void placeStructure(final CreatureObject actor, TangibleObject deed, float positionX, float positionZ, float rotation) { HouseTemplate houseTemplate = housingTemplates.get(deed.getTemplate()); - + Player_House_Deed playerHourseDeed = (Player_House_Deed)core.objectService.getObject(deed.getObjectID()); int structureLotCost = houseTemplate.getLotCost(); String structureTemplate = houseTemplate.getBuildingTemplate(); @@ -100,12 +103,12 @@ public class HousingService implements INetworkDispatch { // return; // } // -// // Lot stuff -// if(!actor.getPlayerObject().deductLots(structureLotCost)) -// { -// actor.sendSystemMessage("You do not have enough available lots to place this structure.", (byte) 0); // should probably load this from an stf -// return; -// } + // Lot stuff + if(!actor.getPlayerObject().deductLots(structureLotCost)) + { + actor.sendSystemMessage("You do not have enough available lots to place this structure.", (byte) 0); // should probably load this from an stf + return; + } // Calculate our orientation and height Quaternion quaternion = new Quaternion(1, 0, 0, 0); @@ -132,6 +135,8 @@ public class HousingService implements INetworkDispatch { building.setAttachment("structureOwner", actor.getObjectID()); building.setAttachment("structureAdmins", admins); building.setDeedTemplate(deed.getTemplate()); + building.setBMR(playerHourseDeed.getBMR()); + building.setConditionDamage(100); // Save structure to DB //building.createTransaction(core.getBuildingODB().getEnvironment()); @@ -172,131 +177,585 @@ public class HousingService implements INetworkDispatch { public void createDestroySUIPage(final SWGObject owner, final TangibleObject target) { - final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); - //final BuildingObject building = (BuildingObject) core.objectService.getObject(target.getParentId()); - // harvester.getStfFilename(); installation_n .getTemplate(); - String displayname = "@installation_n:"+building.getStfName(); - if (building.getCustomName()!=null) - displayname = building.getCustomName(); - final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); - window.setProperty("bg.caption.lblTitle:Text", displayname); - window.setProperty("Prompt.lblPrompt:Text", "@player_structure:confirm_destruction_d1 " + - "@player_structure:confirm_destruction_d2 " + - "\n \n @player_structure:confirm_destruction_d3a " + - "\\#32CD32 @player_structure:confirm_destruction_d3b \\#FFFFFF " + - "@player_structure:confirm_destruction_d4 "); - if (building.getConditionDamage()<20 && building.getMaintenanceAmount()<3000){ - window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#BB0000 @player_structure:can_redeed_no_suffix \\#FFFFFF ",1 ); - } else { - window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#32CD32 @player_structure:can_redeed_yes_suffix \\#FFFFFF ",1 ); - } - if (building.getConditionDamage()<20){ - window.addListBoxMenuItem("@player_structure:redeed_condition \\#BB0000 " + building.getConditionDamage() + " \\#FFFFFF ",1 ); - } else { - window.addListBoxMenuItem("@player_structure:redeed_condition \\#32CD32 " + building.getConditionDamage() + " \\#FFFFFF ",1 ); - } - if (building.getMaintenanceAmount()<0){ - window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#BB0000 " + (int)building.getMaintenanceAmount() + " \\#FFFFFF ",2 ); - } else { - window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#32CD32 " + (int)building.getMaintenanceAmount() + " \\#FFFFFF ",2 ); - } - window.setProperty("btnOk:visible", "True"); - window.setProperty("btnCancel:visible", "True"); - window.setProperty("btnOk:Text", "@yes"); - window.setProperty("btnCancel:Text", "@no"); - Vector returnList = new Vector(); - returnList.add("List.lstList:SelectedRow"); - window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { - @SuppressWarnings("unchecked") - @Override - public void process(SWGObject owner, int eventType, Vector returnList) { - core.suiService.closeSUIWindow(owner, 0); - createCodeWindow(owner, target); - } - }); - window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { - @SuppressWarnings("unchecked") - @Override - public void process(SWGObject owner, int eventType, Vector returnList) { - core.suiService.closeSUIWindow(owner, 0); - } - }); - core.suiService.openSUIWindow(window); + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + //final BuildingObject building = (BuildingObject) core.objectService.getObject(target.getParentId()); + // harvester.getStfFilename(); installation_n .getTemplate(); + + if (building.getItemsList().size()>0){ + ((CreatureObject) owner).sendSystemMessage("@player_structure:clear_building_for_delete", (byte)1); } + String displayname = "@installation_n:"+building.getStfName(); + if (building.getCustomName()!=null) + displayname = building.getCustomName(); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", displayname); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:confirm_destruction_d1 " + + "@player_structure:confirm_destruction_d2 " + + "\n \n @player_structure:confirm_destruction_d3a " + + "\\#32CD32 @player_structure:confirm_destruction_d3b \\#FFFFFF " + + "@player_structure:confirm_destruction_d4 "); + if (building.getConditionDamage()<20 && building.getMaintenanceAmount()<3000){ + window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#BB0000 @player_structure:can_redeed_no_suffix \\#FFFFFF ",1 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#32CD32 @player_structure:can_redeed_yes_suffix \\#FFFFFF ",1 ); + } + if (building.getConditionDamage()<20){ + window.addListBoxMenuItem("@player_structure:redeed_condition \\#BB0000 " + building.getConditionDamage() + " \\#FFFFFF ",1 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_condition \\#32CD32 " + building.getConditionDamage() + " \\#FFFFFF ",1 ); + } + if (building.getMaintenanceAmount()<0){ + window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#BB0000 " + (int)building.getMaintenanceAmount() + " \\#FFFFFF ",2 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#32CD32 " + (int)building.getMaintenanceAmount() + " \\#FFFFFF ",2 ); + } + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + createCodeWindow(owner, target); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + public void createCodeWindow(SWGObject owner, TangibleObject target) { - - final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); - //final BuildingObject building = (BuildingObject)target; - // harvester.getStfFilename(); installation_n .getTemplate(); - Random rnd = new Random(); - final int confirmCode = 100000 + rnd.nextInt(900000); - final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); - window.setProperty("bg.caption.lblTitle:Text", "@player_structure:confirm_destruction_t"); - window.setProperty("Prompt.lblPrompt:Text", "@player_structure:your_structure_prefix " + - "\\#32CD32 @player_structure:will_redeed_confirm \\#FFFFFF "+ - "@player_structure:will_redeed_suffix " + - "\n \n Code: " + confirmCode); - - window.setProperty("btnOk:visible", "True"); - window.setProperty("btnCancel:visible", "True"); - window.setProperty("btnOk:Text", "@yes"); - window.setProperty("btnCancel:Text", "@no"); - Vector returnList = new Vector(); - returnList.add("txtInput:LocalText"); - - window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { - @SuppressWarnings("unchecked") - @Override - public void process(SWGObject owner, int eventType, Vector returnList) { - CreatureObject crafter = (CreatureObject)owner; - core.suiService.closeSUIWindow(owner, 0); - if (returnList.get(0).equals(""+confirmCode)){ - // handle creation of correct deed in player inventory - PlayerObject player = (PlayerObject) crafter.getSlottedObject("ghost"); - String deedTemplate = building.getDeedTemplate(); - Player_House_Deed deed = (Player_House_Deed)core.objectService.createObject(deedTemplate, owner.getPlanet()); - if(player.getLotsRemaining()+deed.getLotRequirement()>10){ - // Something went wrong or hacking attempt - crafter.sendSystemMessage("Structure can't be redeeded. Maximum lot count exceeded.",(byte)1); - return; - } - - deed.setStructureTemplate(building.getTemplate()); - deed.setSurplusMaintenance((int)building.getMaintenanceAmount()); - deed.setAttributes(); - - SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(building.getObjectID()); - owner.getClient().getSession().write(destroyObjectMsg.serialize()); - core.objectService.destroyObject(building.getObjectID()); - - SWGObject ownerInventory = owner.getSlottedObject("inventory"); - ownerInventory.add(deed); - - if(player.getLotsRemaining()+deed.getLotRequirement()<=10) - player.setLotsRemaining(player.getLotsRemaining()+deed.getLotRequirement()); - - crafter.sendSystemMessage("@player_structure:processing_destruction",(byte)1); - crafter.sendSystemMessage("@player_structure:deed_reclaimed",(byte)1); - - } else { - crafter.sendSystemMessage("@player_structure:incorrect_destroy_code",(byte)1); + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + //final BuildingObject building = (BuildingObject)target; + Random rnd = new Random(); + final int confirmCode = 100000 + rnd.nextInt(900000); + final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:confirm_destruction_t"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:your_structure_prefix " + + "\\#32CD32 @player_structure:will_redeed_confirm \\#FFFFFF "+ + "@player_structure:will_redeed_suffix " + + "\n \n Code: " + confirmCode); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + returnList.add("txtInput:LocalText"); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject crafter = (CreatureObject)owner; + core.suiService.closeSUIWindow(owner, 0); + if (returnList.get(0).equals(""+confirmCode)){ + // handle creation of correct deed in player inventory + PlayerObject player = (PlayerObject) crafter.getSlottedObject("ghost"); + String deedTemplate = building.getDeedTemplate(); + + Player_House_Deed deed = (Player_House_Deed)core.objectService.createObject(deedTemplate, owner.getPlanet()); + if(player.getLotsRemaining()+deed.getLotRequirement()>10){ + // Something went wrong or hacking attempt + crafter.sendSystemMessage("Structure can't be redeeded. Maximum lot count exceeded.",(byte)1); + return; } - - } - }); - window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { - @SuppressWarnings("unchecked") - @Override - public void process(SWGObject owner, int eventType, Vector returnList) { - core.suiService.closeSUIWindow(owner, 0); - } - }); - core.suiService.openSUIWindow(window); + + deed.setStructureTemplate(building.getTemplate()); + deed.setSurplusMaintenance((int)building.getMaintenanceAmount()); + deed.setAttributes(); + + SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(building.getObjectID()); + owner.getClient().getSession().write(destroyObjectMsg.serialize()); + core.objectService.destroyObject(building.getObjectID()); + + SWGObject ownerInventory = owner.getSlottedObject("inventory"); + ownerInventory.add(deed); + + if(player.getLotsRemaining()+deed.getLotRequirement()<=10) + player.setLotsRemaining(player.getLotsRemaining()+deed.getLotRequirement()); + + crafter.sendSystemMessage("@player_structure:processing_destruction",(byte)1); + crafter.sendSystemMessage("@player_structure:deed_reclaimed",(byte)1); + + } else { + crafter.sendSystemMessage("@player_structure:incorrect_destroy_code",(byte)1); + } + + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void createPayMaintenanceSUIPage(SWGObject owner, TangibleObject target) { + CreatureObject creature = (CreatureObject) owner; + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + final SUIWindow window = core.suiService.createSUIWindow("Script.transfer", owner, target, 10); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:select_amount"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:select_maint_amount" + + "\n \n @player_structure:current_maint_pool : " + (int)building.getMaintenanceAmount()); + + window.setProperty("msgPayMaintenance", "transaction.txtInputFrom"); + + window.setProperty("transaction.lblFrom:Text", "@player_structure:total_funds"); + window.setProperty("transaction.lblTo:Text", "@player_structure:to_pay"); + window.setProperty("transaction.lblFrom", "@player_structure:total_funds"); + window.setProperty("transaction.lblTo", "@player_structure:to_pay"); + + window.setProperty("transaction.lblStartingFrom:Text", ""+creature.getCashCredits()); + window.setProperty("transaction.lblStartingTo:Text", "0"); + + window.setProperty("transaction:InputFrom", "555555"); + window.setProperty("transaction:InputTo", "666666"); + + window.setProperty("transaction:txtInputFrom", ""+creature.getCashCredits()); + window.setProperty("transaction:txtInputTo", "1"); + window.setProperty("transaction.txtInputFrom:Text", ""+creature.getCashCredits()); + window.setProperty("transaction.txtInputTo:Text", "" + "0"); + + window.setProperty("transaction.ConversionRatioFrom", "1"); + window.setProperty("transaction.ConversionRatioTo", "0"); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@ok"); + window.setProperty("btnCancel:Text", "@cancel"); + + Vector returnList = new Vector(); + returnList.add("transaction.txtInputFrom:Text"); + returnList.add("transaction.txtInputTo:Text"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject crafter = (CreatureObject)owner; + crafter.setCashCredits(crafter.getCashCredits() - Integer.parseInt(returnList.get(1))); + building.setMaintenanceAmount(building.getMaintenanceAmount()+Float.parseFloat(returnList.get(1))); + String displayname = "the structure"; + if (building.getCustomName()!=null) + displayname = building.getCustomName(); + crafter.sendSystemMessage("You successfully make a payment of " + Integer.parseInt(returnList.get(1)) + " credits to " + displayname + ".", (byte) 0); + core.suiService.closeSUIWindow(owner, 0); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void createRenameSUIPage(SWGObject owner, TangibleObject target) { + final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); + Vector returnList = new Vector(); + returnList.add("txtInput:LocalText"); + final TangibleObject outerSurveyTool = target; + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.housingService.handleSetName((CreatureObject)owner, (TangibleObject)outerSurveyTool,returnList.get(0)); + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void handleSetName(CreatureObject owner, TangibleObject target,String name) { + + ((BuildingObject) target).setBuildingName(name,owner); + } + + public void createStatusSUIPage(SWGObject owner, TangibleObject target) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + String displayname = "@installation_n:"+building.getStfName(); + if (building.getCustomName()!=null) + displayname = building.getCustomName(); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:structure_status_t"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:structure_name_prompt" + " " + displayname); + String ownerName = owner.getCustomName(); + if (ownerName.length()>0){ + String[] helper = ownerName.split(" "); + ownerName = helper[0]; } + + String maintenancePool_string = ""+(int)building.getMaintenanceAmount(); + int hourlyMaintenance = building.getBMR(); + float totalNumberOfHours = (float)building.getMaintenanceAmount()/hourlyMaintenance; + float minuteFraction = ((totalNumberOfHours * 100) % 100) / 100; + int nDays = (int)totalNumberOfHours / 24; + float difference = totalNumberOfHours % 24; + int nHours = (int)difference; + int nMinutes = (int)(minuteFraction *60); + maintenancePool_string += " (" + nDays + " days, " + nHours + " hours, " + nMinutes + " minutes)"; + + window.addListBoxMenuItem("@player_structure:owner_prompt" + " " + ownerName, 0); + if (building.getPrivacy()==BuildingObject.PRIVATE) + window.addListBoxMenuItem("@player_structure:structure_private", 1); + else + window.addListBoxMenuItem("@player_structure:structure_public", 1); + window.addListBoxMenuItem("@player_structure:condition_prompt" + " " + target.getConditionDamage()+"%", 2); + window.addListBoxMenuItem("@player_structure:maintenance_pool_prompt " + maintenancePool_string, 3); + window.addListBoxMenuItem("@player_structure:maintenance_rate_prompt " + building.getBMR() + " cr/h", 4); // @player_structure:credits_per_hour + window.addListBoxMenuItem("@player_structure:maintenance_mods_prompt", 5); + window.addListBoxMenuItem("@player_structure:items_in_building_prompt " + building.getItemsList().size(), 6); + window.addListBoxMenuItem("@player_structure:total_house_storage " + building.getMaximumStorageCapacity(), 7); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@ok"); + window.setProperty("btnCancel:Text", "@cancel"); + Vector returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void declareResidency(SWGObject owner, TangibleObject target) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + building.setResidency((CreatureObject)owner); + //owner.setResidence(); + } + + public void handleListAllItems(SWGObject owner, TangibleObject target) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + String displayname = "@installation_n:"+building.getStfName(); + if (building.getCustomName()!=null) + displayname = building.getCustomName(); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:find_items_find_all_house_items"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:find_items_prompt"); + + Vector itemList = building.getItemsList(); + + for (int i=0;i returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + + + } + + public void handleDeleteAllItems(SWGObject owner, TangibleObject target) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + //building.getItemsList().clear(); + // confirmation needed + confirmDeleteAllItems(owner, target); + } + + public void confirmDeleteAllItems(SWGObject owner, TangibleObject target) { + + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + + Random rnd = new Random(); + final int confirmCode = 100000 + rnd.nextInt(900000); + final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:confirm_destruction_t"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:delete_all_items_d " + + "@player_structure:delete_all_items_prompt " + + "\n \n Code: " + confirmCode); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + returnList.add("txtInput:LocalText"); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject ownerC = (CreatureObject)owner; + core.suiService.closeSUIWindow(owner, 0); + if (returnList.get(0).equals(""+confirmCode)){ + confirmDeleteAllItems2ndStage(ownerC,building); + } else { + ownerC.sendSystemMessage("@player_structure:incorrect_destroy_code",(byte)1); + } + + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void confirmDeleteAllItems2ndStage(final CreatureObject ownerC, BuildingObject building) { + + final SUIWindow window = core.suiService.createMessageBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", ownerC, building, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:confirm_destruction_t"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:delete_all_items_second_d"); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + for (TangibleObject del : building.getItemsList()){ + core.objectService.destroyObject(del); + } + building.getItemsList().clear(); + ownerC.sendSystemMessage("@player_structure:items_deleted",(byte)1); + core.suiService.closeSUIWindow(owner, 0); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void handleFindLostItems(SWGObject owner, TangibleObject target) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + String displayname = "@installation_n:"+building.getStfName(); + if (building.getCustomName()!=null) + displayname = building.getCustomName(); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:find_items_find_all_house_items"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:structure_name_prompt" + " " + displayname); + + Vector itemList = building.getItemsList(); + final Map itemIDMapping = new HashMap(); + + for (int i=0;i returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + + int index = Integer.parseInt(returnList.get(0)); + long foundItemID = (long) itemIDMapping.get(index); + TangibleObject foundItem = (TangibleObject) core.objectService.getObject(foundItemID); + //core.simulationService.transform(foundItem,owner.getPosition()); + foundItem.setPosition(owner.getPosition()); + core.suiService.closeSUIWindow(owner, 0); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + + + } + + public void handleSearchForItems(SWGObject owner, TangibleObject target) { + // Spawning the structure terminal outside makes it display the correct radial + core.staticService.spawnObject("object/tangible/terminal/shared_terminal_player_structure.iff", "tatooine", 0L, 3525.0F, 4.0F, -4800.0F, 0.70F, 0.71F); + // I assume that childobject does not get a radial somehow + + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:find_items_search_keyword_title"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:find_items_search_keyword_prompt"); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@ok"); + window.setProperty("btnCancel:Text", "@cancel"); + Vector returnList = new Vector(); + returnList.add("txtInput:LocalText"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + + String itemSearchName = (String) returnList.get(0); + Vector allItems = building.getItemsList(); + Vector foundItems = new Vector(); + + for (TangibleObject obj : allItems){ + String searchAttribute=obj.getCustomName(); + if (searchAttribute==null) + searchAttribute=obj.getTemplate(); + if (searchAttribute.toLowerCase().contains(itemSearchName.toLowerCase())){ + foundItems.add(obj); + } + } + if (foundItems.size()>0){ + ((CreatureObject) owner).sendSystemMessage("@player_structure:find_items_search_list_title", (byte) 1); + displayFoundItems(owner, target, foundItems); + } else { + ((CreatureObject) owner).sendSystemMessage("@player_structure:find_items_search_not_found", (byte) 1); + } + core.suiService.closeSUIWindow(owner, 0); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void displayFoundItems(SWGObject owner, TangibleObject target, Vector foundItems) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:find_items_search_keyword_title"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:find_items_search_list_prompt"); + + Vector itemList = building.getItemsList(); + + final Map itemIDMapping = new HashMap(); + + for (int i=0;i returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void handlePermissionEntry(CreatureObject owner, TangibleObject target) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + String listName = "ENTRY"; + building.setPermissionEntry(listName,owner); + } + + public void handlePermissionBan(CreatureObject owner, TangibleObject target) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + String listName = "BAN"; + building.setPermissionBan(listName,owner); + } + + public void handlePermissionListModify(CreatureObject owner, SWGObject target, String commandArgs){ + + String[] commandSplit = commandArgs.split(" "); + if (commandSplit.length==3){ + if (core.characterService.playerExists(commandSplit[2]) && + core.characterService.getPlayerOID(commandSplit[2])>0){ + long playerOID = core.characterService.getPlayerOID(commandSplit[2]); + if (commandSplit[2].equals("ENTRY")){ + + if (commandSplit[0].equals("add")){ + ((BuildingObject)target).addPlayerToEntryList(owner, playerOID, commandSplit[2]); + } + if (commandSplit[0].equals("remove")){ + ((BuildingObject)target).removePlayerFromEntryList(owner, playerOID, commandSplit[2]); + } + } + if (commandSplit[2].equals("BAN")){ + + if (commandSplit[0].equals("add")){ + ((BuildingObject)target).addPlayerToBanList(owner, playerOID, commandSplit[2]); + } + if (commandSplit[0].equals("remove")){ + ((BuildingObject)target).removePlayerFromBanList(owner, playerOID, commandSplit[2]); + } + } + } else { + owner.sendSystemMessage(commandSplit[2]+ " is an invalid player name", (byte) 0); // modify_list_invalid_player %NO is an invalid player name. + } + } + if (commandSplit.length==2){ + owner.sendSystemMessage("No name was entered", (byte) 0); + } + + } + + public void addItemToHouseItemList(TangibleObject item, SWGObject container){ + BuildingObject building = (BuildingObject) container.getContainer(); + building.getItemsList().add(item); + } + public String fetchPrivacyString(TangibleObject object){ + final BuildingObject building = (BuildingObject) object.getAttachment("housing_parentstruct"); + return building.getPrivacyString(); + } + + public String fetchStringFromCastedClass(SWGObject object, String classToCastTo, String methodName){ + return tools.JythonUtilities.fetchStringFromCastedClass(object,classToCastTo,methodName); + } @Override public void insertOpcodes(Map arg0, From d4d688869c98f888af7d407022c6b34ddeb8e325 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Sat, 12 Apr 2014 03:04:17 +0200 Subject: [PATCH 63/79] Cleanup --- options.cfg | 4 +- .../radial/structure_management_terminal.py | 4 +- src/services/housing/HousingService.java | 37 +++++++++---------- 3 files changed, 20 insertions(+), 25 deletions(-) diff --git a/options.cfg b/options.cfg index cb743c88..5a3a7f8e 100644 --- a/options.cfg +++ b/options.cfg @@ -1,3 +1,3 @@ -LOAD.SNAPSHOT_OBJECTS=0 -LOAD.BUILDOUT_OBJECTS=0 +LOAD.SNAPSHOT_OBJECTS=1 +LOAD.BUILDOUT_OBJECTS=1 LOAD.RESOURCE.SYSTEM=1 \ No newline at end of file diff --git a/scripts/radial/structure_management_terminal.py b/scripts/radial/structure_management_terminal.py index 914133ef..b6e7ae3a 100644 --- a/scripts/radial/structure_management_terminal.py +++ b/scripts/radial/structure_management_terminal.py @@ -2,14 +2,12 @@ from resources.common import RadialOptions from protocol.swg import ResourceListForSurveyMessage from services.sui.SUIService import MessageBoxType from services.sui.SUIWindow import Trigger -from tools import JythonUtilities from java.util import Vector import sys def createRadial(core, owner, target, radials): #(byte parentId, short optionId, byte optionType, String description) radials.clear() - owner.sendSystemMessage('target template ' + target.getTemplate(),1) radials.add(RadialOptions(0, 7, 0, 'Examine')) radials.add(RadialOptions(0, 78, 0, '@player_structure:management')) radials.add(RadialOptions(0, 117, 0, '@player_structure:permissions')) @@ -18,7 +16,7 @@ def createRadial(core, owner, target, radials): radials.add(RadialOptions(2, 129, 0, '@player_structure:management_pay')) radials.add(RadialOptions(2, 50, 0, '@base_player:set_name')) radials.add(RadialOptions(2, 127, 0, '@player_structure:management_residence')) - #radials.add(RadialOptions(2, 125, 0, '@player_structure:management_privacy : ' + core.housingService.fetchPrivacyString(target))) + radials.add(RadialOptions(2, 125, 0, '@player_structure:management_privacy : ' + core.housingService.fetchPrivacyString(target))) radials.add(RadialOptions(2, 171, 0, '@player_structure:find_items_find_all_house_items')) radials.add(RadialOptions(2, 173, 0, '@player_structure:move_first_item')) radials.add(RadialOptions(2, 174, 0, '@player_structure:find_items_search_for_house_items')) diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index 5db53834..e1526ef7 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -70,11 +70,11 @@ public class HousingService implements INetworkDispatch { public void enterStructureMode(CreatureObject actor, TangibleObject deed) { -// if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, actor.getWorldPosition().x, actor.getWorldPosition().z)) -// { -// actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf -// return; -// } + if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, actor.getWorldPosition().x, actor.getWorldPosition().z)) + { + actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf + return; + } if(housingTemplates.containsKey(deed.getTemplate())) { @@ -91,18 +91,18 @@ public class HousingService implements INetworkDispatch { int structureLotCost = houseTemplate.getLotCost(); String structureTemplate = houseTemplate.getBuildingTemplate(); -// if(!houseTemplate.canBePlacedOn(actor.getPlanet().getName())) -// { -// actor.sendSystemMessage("You may not place this structure on this planet.", (byte) 0); // should probably load this from an stf -// return; -// } -// -// if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, positionX, positionZ)) -// { -// actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf -// return; -// } -// + if(!houseTemplate.canBePlacedOn(actor.getPlanet().getName())) + { + actor.sendSystemMessage("You may not place this structure on this planet.", (byte) 0); // should probably load this from an stf + return; + } + + if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, positionX, positionZ)) + { + actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf + return; + } + // Lot stuff if(!actor.getPlayerObject().deductLots(structureLotCost)) { @@ -753,9 +753,6 @@ public class HousingService implements INetworkDispatch { return building.getPrivacyString(); } - public String fetchStringFromCastedClass(SWGObject object, String classToCastTo, String methodName){ - return tools.JythonUtilities.fetchStringFromCastedClass(object,classToCastTo,methodName); - } @Override public void insertOpcodes(Map arg0, From acbc1a7c74e19dd69415a41415fe134c93b99925 Mon Sep 17 00:00:00 2001 From: Light2 Date: Sat, 12 Apr 2014 15:23:14 +0200 Subject: [PATCH 64/79] minor changes --- .../AcceptAuctionResponseMessage.java | 21 ++++++++++++++++++ .../AuctionItemDescriptionMessage.java | 21 ++++++++++++++++++ .../AuctionQueryHeadersMessage.java | 21 ++++++++++++++++++ .../AuctionQueryHeadersResponseMessage.java | 21 ++++++++++++++++++ .../BidAuctionMessage.java | 21 ++++++++++++++++++ .../BidAuctionResponseMessage.java | 21 ++++++++++++++++++ .../CancelLiveAuctionMessage.java | 21 ++++++++++++++++++ .../CancelLiveAuctionResponseMessage.java | 21 ++++++++++++++++++ .../CommoditiesItemTypeListResponse.java | 22 +++++++++++++++++++ .../CommoditiesResourceTypeListResponse.java | 22 +++++++++++++++++++ .../CreateAuctionMessage.java | 21 ++++++++++++++++++ .../CreateImmediateAuctionMessage.java | 21 ++++++++++++++++++ .../GetAuctionDetails.java | 21 ++++++++++++++++++ .../GetAuctionDetailsResponse.java | 21 ++++++++++++++++++ .../IsVendorOwnerMessage.java | 21 ++++++++++++++++++ .../IsVendorOwnerResponseMessage.java | 21 ++++++++++++++++++ .../ItemSoldMessage.java | 21 ++++++++++++++++++ .../RetrieveAuctionItemMessage.java | 21 ++++++++++++++++++ .../RetrieveAuctionItemResponseMessage.java | 21 ++++++++++++++++++ src/services/bazaar/AuctionItem.java | 21 ++++++++++++++++++ src/services/bazaar/BazaarService.java | 21 ++++++++++++++++++ src/services/command/CommandService.java | 13 +++++++---- 22 files changed, 452 insertions(+), 4 deletions(-) diff --git a/src/protocol/swg/auctionManagerClientListener/AcceptAuctionResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/AcceptAuctionResponseMessage.java index 669132ff..49aae248 100644 --- a/src/protocol/swg/auctionManagerClientListener/AcceptAuctionResponseMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/AcceptAuctionResponseMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; diff --git a/src/protocol/swg/auctionManagerClientListener/AuctionItemDescriptionMessage.java b/src/protocol/swg/auctionManagerClientListener/AuctionItemDescriptionMessage.java index 957118e1..bdb7e95e 100644 --- a/src/protocol/swg/auctionManagerClientListener/AuctionItemDescriptionMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/AuctionItemDescriptionMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; diff --git a/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersMessage.java b/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersMessage.java index 1436f459..14f345ba 100644 --- a/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.io.UnsupportedEncodingException; diff --git a/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java index 71eea176..4c2776c9 100644 --- a/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import org.apache.mina.core.buffer.IoBuffer; diff --git a/src/protocol/swg/auctionManagerClientListener/BidAuctionMessage.java b/src/protocol/swg/auctionManagerClientListener/BidAuctionMessage.java index 21492348..ea769785 100644 --- a/src/protocol/swg/auctionManagerClientListener/BidAuctionMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/BidAuctionMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import org.apache.mina.core.buffer.IoBuffer; diff --git a/src/protocol/swg/auctionManagerClientListener/BidAuctionResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/BidAuctionResponseMessage.java index da1bccc8..2ff213ef 100644 --- a/src/protocol/swg/auctionManagerClientListener/BidAuctionResponseMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/BidAuctionResponseMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; diff --git a/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionMessage.java b/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionMessage.java index 64685acf..cc3705a1 100644 --- a/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import org.apache.mina.core.buffer.IoBuffer; diff --git a/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionResponseMessage.java index 8b72042c..d820f45b 100644 --- a/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionResponseMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionResponseMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; diff --git a/src/protocol/swg/auctionManagerClientListener/CommoditiesItemTypeListResponse.java b/src/protocol/swg/auctionManagerClientListener/CommoditiesItemTypeListResponse.java index bb2a915b..d299a44e 100644 --- a/src/protocol/swg/auctionManagerClientListener/CommoditiesItemTypeListResponse.java +++ b/src/protocol/swg/auctionManagerClientListener/CommoditiesItemTypeListResponse.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; @@ -18,6 +39,7 @@ public class CommoditiesItemTypeListResponse extends SWGMessage { @Override public IoBuffer serialize() { + // TODO: research how categories work String galaxy = NGECore.getInstance().getGalaxyName(); IoBuffer result = IoBuffer.allocate(14 + galaxy.length()).order(ByteOrder.LITTLE_ENDIAN); result.putShort((short) 2); diff --git a/src/protocol/swg/auctionManagerClientListener/CommoditiesResourceTypeListResponse.java b/src/protocol/swg/auctionManagerClientListener/CommoditiesResourceTypeListResponse.java index c55b4726..f898ade4 100644 --- a/src/protocol/swg/auctionManagerClientListener/CommoditiesResourceTypeListResponse.java +++ b/src/protocol/swg/auctionManagerClientListener/CommoditiesResourceTypeListResponse.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; @@ -36,6 +57,7 @@ public class CommoditiesResourceTypeListResponse extends SWGMessage { result.putInt(479); result.putLong(0); + // wrong struct, TODO: research resNames.forEach(s -> result.put(getAsciiString(s))); int size = result.position(); diff --git a/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java b/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java index 159e911b..cdabef34 100644 --- a/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.io.UnsupportedEncodingException; diff --git a/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java b/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java index ce961680..33307c41 100644 --- a/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.io.UnsupportedEncodingException; diff --git a/src/protocol/swg/auctionManagerClientListener/GetAuctionDetails.java b/src/protocol/swg/auctionManagerClientListener/GetAuctionDetails.java index 127d3450..946c0a06 100644 --- a/src/protocol/swg/auctionManagerClientListener/GetAuctionDetails.java +++ b/src/protocol/swg/auctionManagerClientListener/GetAuctionDetails.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import org.apache.mina.core.buffer.IoBuffer; diff --git a/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java b/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java index 27fe7f85..4fe23725 100644 --- a/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java +++ b/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import org.apache.mina.core.buffer.IoBuffer; diff --git a/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerMessage.java b/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerMessage.java index 9492eb87..35b3b498 100644 --- a/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import org.apache.mina.core.buffer.IoBuffer; diff --git a/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerResponseMessage.java index 9f3e4aeb..cfc73637 100644 --- a/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerResponseMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerResponseMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; diff --git a/src/protocol/swg/auctionManagerClientListener/ItemSoldMessage.java b/src/protocol/swg/auctionManagerClientListener/ItemSoldMessage.java index 3ff53489..6c22d1a1 100644 --- a/src/protocol/swg/auctionManagerClientListener/ItemSoldMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/ItemSoldMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; diff --git a/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemMessage.java b/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemMessage.java index 486d475c..af2f0c0c 100644 --- a/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import org.apache.mina.core.buffer.IoBuffer; diff --git a/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemResponseMessage.java index dbd39f46..2d883695 100644 --- a/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemResponseMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemResponseMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; diff --git a/src/services/bazaar/AuctionItem.java b/src/services/bazaar/AuctionItem.java index 1eef0858..8b134e97 100644 --- a/src/services/bazaar/AuctionItem.java +++ b/src/services/bazaar/AuctionItem.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package services.bazaar; import com.sleepycat.je.Environment; diff --git a/src/services/bazaar/BazaarService.java b/src/services/bazaar/BazaarService.java index 4d765826..1700aa64 100644 --- a/src/services/bazaar/BazaarService.java +++ b/src/services/bazaar/BazaarService.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package services.bazaar; import java.nio.ByteOrder; diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 82345d06..a215c548 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -76,7 +76,7 @@ public class CommandService implements INetworkDispatch { return false; } - if (command.getCharacterAbility().length() > 0 && !actor.hasAbility(command.getCharacterAbility())) { + if (command.getCharacterAbility().length() > 0 && !actor.hasAbility(command.getCharacterAbility()) && command.getGodLevel() < 1) { return false; } @@ -111,7 +111,7 @@ public class CommandService implements INetworkDispatch { //return false; } } - + switch (command.getTargetType()) { case 0: // Target Not Used For This Command break; @@ -138,7 +138,7 @@ public class CommandService implements INetworkDispatch { target = actor; } - if (target != actor && target instanceof CreatureObject) { + if (target != actor && target instanceof CreatureObject && actor.getClient() != null) { return false; } @@ -571,6 +571,11 @@ public class CommandService implements INetworkDispatch { public BaseSWGCommand registerCombatCommand(String name) { return getCommandByName(name); } public BaseSWGCommand registerCommand(String name) { return getCommandByName(name); } - public BaseSWGCommand registerGmCommand(String name) { return getCommandByName(name); } + public BaseSWGCommand registerGmCommand(String name) { + BaseSWGCommand command = getCommandByName(name); + if(command != null) + command.setGodLevel(5); + return command; + } } From c5520abff8d2f1a2d7c0b59800de62c181da5da9 Mon Sep 17 00:00:00 2001 From: Light2 Date: Sat, 12 Apr 2014 17:19:52 +0200 Subject: [PATCH 65/79] Cleanup + persistence fix --- odb/auction/placeholder.txt | 0 scripts/commands/transferitemmisc.py | 2 +- .../objects/building/BuildingObject.java | 18 ++++++++++------- .../objects/harvester/HarvesterObject.java | 20 +++++++++---------- .../installation/InstallationObject.java | 4 ++-- src/services/housing/HousingService.java | 1 - src/services/resources/HarvesterService.java | 6 ++---- src/services/sui/SUIService.java | 5 +++-- 8 files changed, 29 insertions(+), 27 deletions(-) create mode 100644 odb/auction/placeholder.txt diff --git a/odb/auction/placeholder.txt b/odb/auction/placeholder.txt new file mode 100644 index 00000000..e69de29b diff --git a/scripts/commands/transferitemmisc.py b/scripts/commands/transferitemmisc.py index c398a980..dbe46f8a 100644 --- a/scripts/commands/transferitemmisc.py +++ b/scripts/commands/transferitemmisc.py @@ -14,7 +14,7 @@ def run(core, actor, target, commandString): if actorContainer != None and (container.getTemplate() == "object/cell/shared_cell.iff") & core.housingService.getPermissions(actor, actorContainer): target.getContainer().transferTo(actor, container, target) core.simulationService.teleport(target, actor.getPosition(), Quaternion(1,0,0,0), containerID) - core.housingService.addItemToHouseItemList(target,actorContainer) + #core.housingService.addItemToHouseItemList(target,actorContainer) return elif actorContainer != None and container.getTemplate() == "object/cell/shared_cell.iff": actor.sendSystemMessage("You do not have permission to access that container!", 0) diff --git a/src/resources/objects/building/BuildingObject.java b/src/resources/objects/building/BuildingObject.java index 1598b374..502ebef4 100644 --- a/src/resources/objects/building/BuildingObject.java +++ b/src/resources/objects/building/BuildingObject.java @@ -43,7 +43,7 @@ import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Entity(version=5) +@Entity(version=6) public class BuildingObject extends TangibleObject implements IPersistent { @NotPersistent @@ -58,7 +58,6 @@ public class BuildingObject extends TangibleObject implements IPersistent { private byte privacy=(byte)0; public static byte PRIVATE = (byte)0; public static byte PUBLIC = (byte)1; - private Vector itemsList = new Vector(); private short maximumStorageCapacity=0; private Vector entryList = new Vector(); // Preferably the OIDs should be stored, because of name changes private Vector banList = new Vector(); @@ -150,13 +149,11 @@ public class BuildingObject extends TangibleObject implements IPersistent { } public Vector getItemsList() { - return itemsList; + Vector items = new Vector(); + getCells().forEach(c -> c.viewChildren(c, true, false, (item) -> items.add((TangibleObject) item))); + return items; } - public void setItemsList(Vector itemsList) { - this.itemsList = itemsList; - } - public short getMaximumStorageCapacity() { return maximumStorageCapacity; } @@ -238,4 +235,11 @@ public class BuildingObject extends TangibleObject implements IPersistent { txn = env.beginTransaction(null, null); txn.setLockTimeout(500, TimeUnit.MILLISECONDS); } + + public Vector getCells() { + Vector cells = new Vector(); + this.viewChildren(this, true, false, (cell) -> cells.add((CellObject) cell)); + return cells; + } + } diff --git a/src/resources/objects/harvester/HarvesterObject.java b/src/resources/objects/harvester/HarvesterObject.java index 5626ce35..b10755f2 100644 --- a/src/resources/objects/harvester/HarvesterObject.java +++ b/src/resources/objects/harvester/HarvesterObject.java @@ -125,7 +125,7 @@ public class HarvesterObject extends InstallationObject { private byte resourceUpdateCount; private Vector adminList = new Vector(); private Vector hopperList = new Vector(); - private SWGObject owner; + private long owner; private float currentHarvestedCountFloat=0.0F; private String deedTemplate; @@ -192,7 +192,7 @@ public class HarvesterObject extends InstallationObject { public void activateHarvester(CreatureObject owner){ activated = true; - this.setOwner(owner); + this.setOwner(owner.getObjectID()); owner.getClient().getSession().write(messageBuilder.buildHINO3Delta(this,(byte)1)); owner.getClient().getSession().write(messageBuilder.buildHINO7ActivateDelta2(this)); } @@ -335,12 +335,12 @@ public class HarvesterObject extends InstallationObject { } - public SWGObject getOwner() { + public long getOwner() { return owner; } - public void setOwner(SWGObject owner) { + public void setOwner(long owner) { this.owner = owner; } @@ -388,11 +388,11 @@ public class HarvesterObject extends InstallationObject { } public void deActivate(){ - owner.getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); } public void placeHarvester(){ - owner.getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); } public static void createAndPlaceHarvester(SWGObject object){ @@ -487,14 +487,14 @@ public class HarvesterObject extends InstallationObject { public void createNewHopperContainer(){ Vector planetResourcesVector = NGECore.getInstance().resourceService.getSpawnedResourcesByPlanetAndHarvesterType(this.getPlanetId(),this.getHarvester_type()); - ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); - ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINO7Delta(this,(byte)1)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildHINO7Delta(this,(byte)1)); } public void continueHopperContainer(){ Vector planetResourcesVector = NGECore.getInstance().resourceService.getSpawnedResourcesByPlanetAndHarvesterType(this.getPlanetId(),this.getHarvester_type()); - ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHarvesterGetResourceData(this, owner, planetResourcesVector)); - ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildHarvesterGetResourceData(this, NGECore.getInstance().objectService.getObject(owner), planetResourcesVector)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); } @Override diff --git a/src/resources/objects/installation/InstallationObject.java b/src/resources/objects/installation/InstallationObject.java index 5a3870e7..3392e5fd 100644 --- a/src/resources/objects/installation/InstallationObject.java +++ b/src/resources/objects/installation/InstallationObject.java @@ -21,15 +21,15 @@ ******************************************************************************/ package resources.objects.installation; +import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.Persistent; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; - import resources.objects.tangible.TangibleObject; -@Persistent(version=0) +@Entity(version=0) public class InstallationObject extends TangibleObject { public InstallationObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index e1526ef7..5ee88004 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -544,7 +544,6 @@ public class HousingService implements INetworkDispatch { for (TangibleObject del : building.getItemsList()){ core.objectService.destroyObject(del); } - building.getItemsList().clear(); ownerC.sendSystemMessage("@player_structure:items_deleted",(byte)1); core.suiService.closeSUIWindow(owner, 0); } diff --git a/src/services/resources/HarvesterService.java b/src/services/resources/HarvesterService.java index 11c17dfe..93e076c9 100644 --- a/src/services/resources/HarvesterService.java +++ b/src/services/resources/HarvesterService.java @@ -787,12 +787,12 @@ public class HarvesterService implements INetworkDispatch { public void updateHarvester(HarvesterObject harvester){ - + CreatureObject owner = (CreatureObject)core.objectService.getObject(harvester.getOwner()); + if(harvester.isActivated()) { // Check maintenance and power if (harvester.getMaintenanceAmount()<=0){ - CreatureObject owner = (CreatureObject)harvester.getOwner(); owner.sendSystemMessage("The installation is lacking maintenance.", (byte) 0); // ToDo: Send mail harvester.deactivateHarvester(owner); @@ -800,7 +800,6 @@ public class HarvesterService implements INetworkDispatch { } if (harvester.getPowerLevel()<=0 && !harvester.isGenerator()){ - CreatureObject owner = (CreatureObject)harvester.getOwner(); owner.sendSystemMessage("The installation is lacking power.", (byte) 0); // ToDo: Send mail harvester.deactivateHarvester(owner); @@ -840,7 +839,6 @@ public class HarvesterService implements INetworkDispatch { int oldStackCount = hopperContainer.getStackCount(); int newStackCount = (int) (harvester.getCurrentHarvestedCountFloat()); - CreatureObject owner = (CreatureObject)harvester.getOwner(); if (newStackCount>oldStackCount){ for (ResourceContainerObject iterContainer : outputHopperContent){ if (iterContainer.getReferenceID()==hopperContainer.getReferenceID()){ diff --git a/src/services/sui/SUIService.java b/src/services/sui/SUIService.java index b49cf67f..0e76c325 100644 --- a/src/services/sui/SUIService.java +++ b/src/services/sui/SUIService.java @@ -46,6 +46,7 @@ import resources.common.FileUtilities; import resources.common.ObjControllerOpcodes; import resources.common.Opcodes; import resources.common.RadialOptions; +import resources.objects.creature.CreatureObject; import resources.objects.harvester.HarvesterObject; import services.sui.SUIWindow.SUICallback; import services.sui.SUIWindow.Trigger; @@ -86,8 +87,8 @@ public class SUIService implements INetworkDispatch { HarvesterObject harvester = (HarvesterObject) target; Vector admins = harvester.getAdminList(); Vector hoppers = harvester.getHopperList(); - - if (harvester.getOwner()==owner && !admins.contains(owner.getCustomName())){ + CreatureObject creature = (CreatureObject) core.objectService.getObject(harvester.getOwner()); + if (creature == owner && !admins.contains(owner.getCustomName())){ admins.add(owner.getCustomName()); } From e144118364f238ac35fd3bc0fd68ac07206a795a Mon Sep 17 00:00:00 2001 From: Light2 Date: Sat, 12 Apr 2014 18:31:37 +0200 Subject: [PATCH 66/79] more cleanup + fixes Harvesters and house terminal work now --- .gitignore | 1 + .../objects/building/BuildingObject.java | 12 +- .../objects/harvester/HarvesterObject.java | 104 +----------------- .../installation/InstallationObject.java | 6 + src/services/housing/HousingService.java | 2 - src/services/object/ObjectService.java | 12 +- src/services/resources/HarvesterService.java | 101 ++++++++++++++--- src/services/sui/SUIService.java | 6 +- 8 files changed, 116 insertions(+), 128 deletions(-) diff --git a/.gitignore b/.gitignore index 8560d241..63147709 100644 --- a/.gitignore +++ b/.gitignore @@ -60,6 +60,7 @@ odb/chatRooms/je.info.* odb/resourcehistory/je.info.* odb/resourceroots/je.info.* odb/resources/je.info.* +odb/auction/je.info.* # External tool builders .externalToolBuilders/ diff --git a/src/resources/objects/building/BuildingObject.java b/src/resources/objects/building/BuildingObject.java index 502ebef4..2c3d0db4 100644 --- a/src/resources/objects/building/BuildingObject.java +++ b/src/resources/objects/building/BuildingObject.java @@ -150,7 +150,10 @@ public class BuildingObject extends TangibleObject implements IPersistent { public Vector getItemsList() { Vector items = new Vector(); - getCells().forEach(c -> c.viewChildren(c, true, false, (item) -> items.add((TangibleObject) item))); + getCells().forEach(c -> c.viewChildren(c, true, false, (item) -> { + if(!(item instanceof CreatureObject)) + items.add((TangibleObject) item); + })); return items; } @@ -237,8 +240,11 @@ public class BuildingObject extends TangibleObject implements IPersistent { } public Vector getCells() { - Vector cells = new Vector(); - this.viewChildren(this, true, false, (cell) -> cells.add((CellObject) cell)); + final Vector cells = new Vector(); + this.viewChildren(this, true, false, (obj) -> { + if(obj instanceof CellObject) + cells.add((CellObject) obj); + }); return cells; } diff --git a/src/resources/objects/harvester/HarvesterObject.java b/src/resources/objects/harvester/HarvesterObject.java index b10755f2..7fe12cbb 100644 --- a/src/resources/objects/harvester/HarvesterObject.java +++ b/src/resources/objects/harvester/HarvesterObject.java @@ -394,97 +394,7 @@ public class HarvesterObject extends InstallationObject { public void placeHarvester(){ NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); } - - public static void createAndPlaceHarvester(SWGObject object){ - CreatureObject actor = (CreatureObject) object.getAttachment("Owner"); - - String structureTemplate = (String)object.getAttachment("Deed_StructureTemplate"); - HarvesterObject harvester = (HarvesterObject) NGECore.getInstance().objectService.createObject(structureTemplate, actor.getPlanet()); - long objectId = harvester.getObjectID(); - - Vector adminList = harvester.getAdminList(); - String[] fullName = ((CreatureObject)actor).getCustomName().split(" "); - adminList.add(fullName[0]); - harvester.setAdminList(adminList); - // Set BER and outputhopper capacity here, take it from deed - harvester.setBER((int)object.getAttachment("Deed_BER")); - harvester.setSpecRate((int)(1.5F*(int)object.getAttachment("Deed_BER"))); - harvester.setOutputHopperCapacity((int)object.getAttachment("Deed_Capacity")); - harvester.setDeedTemplate((String)object.getAttachment("Deed_DeedTemplate")); - if ((int)object.getAttachment("Deed_SurplusMaintenance")>0){ - harvester.setMaintenanceAmount((int)object.getAttachment("Deed_SurplusMaintenance")); - } - if ((int)object.getAttachment("Deed_SurplusPower")>0){ - harvester.setPowerLevel((int)object.getAttachment("Deed_SurplusPower")); - } - - // build harvester - int resCRC = CRC.StringtoCRC(structureTemplate); - float positionY = NGECore.getInstance().terrainService.getHeight(actor.getPlanetId(), object.getPosition().x, object.getPosition().z); - SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(objectId, object.getOrientation().x, object.getOrientation().y, object.getOrientation().z, object.getOrientation().w, object.getPosition().x, positionY, object.getPosition().z, resCRC, (byte) 0); - actor.getClient().getSession().write(createObjectMsg.serialize()); - tools.CharonPacketUtils.printAnalysis(createObjectMsg.serialize()); - - harvester.setPosition(new Point3D(object.getPosition().x,positionY, object.getPosition().z)); - - resources.objects.installation.InstallationMessageBuilder messenger = new resources.objects.installation.InstallationMessageBuilder((InstallationObject)harvester); - actor.getClient().getSession().write(messenger.buildBaseline3((InstallationObject)harvester)); - SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(harvester.getObjectID()); - actor.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); - tools.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); - - PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); - WaypointObject constructionWaypoint = (WaypointObject)NGECore.getInstance().objectService.createObject("object/waypoint/shared_world_waypoint_blue.iff", actor.getPlanet(), harvester.getPosition().x, 0 ,harvester.getPosition().z); - String displayname = "@installation_n:"+harvester.getStfName(); - constructionWaypoint.setName(displayname); - constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); - constructionWaypoint.setPosition(new Point3D(object.getPosition().x,0, object.getPosition().z)); - player.waypointAdd(constructionWaypoint); - constructionWaypoint.setPosition(new Point3D(object.getPosition().x,0, object.getPosition().z)); - constructionWaypoint.setActive(true); - constructionWaypoint.setColor((byte)1); - constructionWaypoint.setStringAttribute("", ""); - player.waypointAdd(constructionWaypoint); - constructionWaypoint.setName(displayname); - constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); - player.setLastSurveyWaypoint(constructionWaypoint); - - List attachments = new ArrayList(); - WaypointAttachment attachment = new WaypointAttachment(); - attachment.active = true; - attachment.cellID = constructionWaypoint.getCellId(); - attachment.color = (byte)1; - attachment.name = displayname; - attachment.planetCRC = engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName()); - attachment.positionX = object.getPosition().x; - attachment.positionY = 0; - attachment.positionZ = object.getPosition().z; - attachments.add(attachment); - - // remove constructor - NGECore.getInstance().objectService.destroyObject(object); - SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(object.getObjectID()); - actor.getClient().getSession().write(destroyObjectMsg.serialize()); - - // ToDo: waypoint attachment fix - Date date = new Date(); - Mail constructionNotificationMail = new Mail(); - constructionNotificationMail.setSenderName("Structure Service"); - constructionNotificationMail.setSubject("Your structure"); - constructionNotificationMail.setRecieverId(actor.getObjectID()); - constructionNotificationMail.setTimeStamp((int) (date.getTime() / 1000)); - constructionNotificationMail.setMailId(NGECore.getInstance().chatService.generateMailId()); - String message = "Your construction is ready"; - constructionNotificationMail.setMessage(message); - constructionNotificationMail.setStatus(Mail.NEW); - constructionNotificationMail.setAttachments(attachments); - //NGECore.getInstance().chatService.sendPersistentMessage(actor.getClient(), constructionNotificationMail); - NGECore.getInstance().chatService.storePersistentMessage(constructionNotificationMail); - NGECore.getInstance().chatService.sendPersistentMessageHeader(actor.getClient(), constructionNotificationMail); - - } - public void createNewHopperContainer(){ Vector planetResourcesVector = NGECore.getInstance().resourceService.getSpawnedResourcesByPlanetAndHarvesterType(this.getPlanetId(),this.getHarvester_type()); NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); @@ -506,16 +416,10 @@ public class HarvesterObject extends InstallationObject { return; } - destination.getSession().write(messageBuilder.buildBaseline3()); - destination.getSession().write(messageBuilder.buildBaseline6()); - destination.getSession().write(messageBuilder.buildBaseline8()); - destination.getSession().write(messageBuilder.buildBaseline9()); + destination.getSession().write(installationMessageBuilder.buildBaseline3(this)); + //destination.getSession().write(installationMessageBuilder.buildBaseline6(this)); + //destination.getSession().write(installationMessageBuilder.buildBaseline8()); + //destination.getSession().write(installationMessageBuilder.buildBaseline9()); - if(getPvPBitmask() != 0) { - UpdatePVPStatusMessage upvpm = new UpdatePVPStatusMessage(getObjectID()); - upvpm.setFaction(UpdatePVPStatusMessage.factionCRC.Neutral); - upvpm.setStatus(getPvPBitmask()); - destination.getSession().write(upvpm.serialize()); - } } } diff --git a/src/resources/objects/installation/InstallationObject.java b/src/resources/objects/installation/InstallationObject.java index 3392e5fd..856eeb59 100644 --- a/src/resources/objects/installation/InstallationObject.java +++ b/src/resources/objects/installation/InstallationObject.java @@ -24,6 +24,7 @@ package resources.objects.installation; import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.Persistent; +import engine.clients.Client; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; @@ -35,4 +36,9 @@ public class InstallationObject extends TangibleObject { public InstallationObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ super(objectID, planet, template, position, orientation); } + + @Override + public void sendBaselines(Client destination) { + + } } \ No newline at end of file diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index 5ee88004..e375abe0 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -276,8 +276,6 @@ public class HousingService implements INetworkDispatch { deed.setSurplusMaintenance((int)building.getMaintenanceAmount()); deed.setAttributes(); - SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(building.getObjectID()); - owner.getClient().getSession().write(destroyObjectMsg.serialize()); core.objectService.destroyObject(building.getObjectID()); SWGObject ownerInventory = owner.getSlottedObject("inventory"); diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index ca22a7fc..aba0b902 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -54,6 +54,7 @@ import org.python.core.Py; import org.python.core.PyObject; import com.sleepycat.je.Transaction; +import com.sleepycat.je.TransactionConfig; import com.sleepycat.persist.EntityCursor; import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.PrimaryKey; @@ -976,7 +977,8 @@ public class ObjectService implements INetworkDispatch { CrcStringTableVisitor crcTable = ClientFileManager.loadFile("misc/object_template_crc_string_table.iff", CrcStringTableVisitor.class); List persistentBuildings = new ArrayList(); Map duplicate = new HashMap(); - + Transaction txn = core.getDuplicateIdODB().getEnvironment().beginTransaction(null, null); + for (int i = 0; i < buildoutTable.getRowCount(); i++) { String template; @@ -1055,15 +1057,17 @@ public class ObjectService implements INetworkDispatch { newObjectId = core.getDuplicateIdODB().get(key, String.class, DuplicateId.class).getObjectId(); } else { newObjectId = generateObjectID(); - Transaction txn = core.getDuplicateIdODB().getEnvironment().beginTransaction(null, null); core.getDuplicateIdODB().put(new DuplicateId(key, newObjectId), String.class, DuplicateId.class, txn); - txn.commitSync(); } duplicate.put(objectId, newObjectId); objectId = newObjectId; } - + if(txn.isValid()) { + System.out.println("Committed doid transaction."); + txn.commitSync(); + } + List containers = new ArrayList(); SWGObject object; if(objectId != 0 && containerId == 0) { diff --git a/src/services/resources/HarvesterService.java b/src/services/resources/HarvesterService.java index 93e076c9..6caccdd1 100644 --- a/src/services/resources/HarvesterService.java +++ b/src/services/resources/HarvesterService.java @@ -21,8 +21,11 @@ ******************************************************************************/ package services.resources; +import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.Date; +import java.util.List; import java.util.Map; import java.util.Random; import java.util.Vector; @@ -30,6 +33,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; + import protocol.swg.EnterStructurePlacementModeMessage; import protocol.swg.SceneCreateObjectByCrc; import protocol.swg.SceneDestroyObject; @@ -53,6 +57,8 @@ import resources.objects.resource.ResourceContainerObject; import resources.objects.resource.ResourceRoot; import resources.objects.tangible.TangibleObject; import resources.objects.waypoint.WaypointObject; +import services.chat.Mail; +import services.chat.WaypointAttachment; import services.sui.SUIWindow; import services.sui.SUIWindow.SUICallback; import services.sui.SUIWindow.Trigger; @@ -383,8 +389,6 @@ public class HarvesterService implements INetworkDispatch { deed.setSurplusPower((int)harvester.getPowerLevel()); deed.setAttributes(); - SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(harvester.getObjectID()); - owner.getClient().getSession().write(destroyObjectMsg.serialize()); core.objectService.destroyObject(harvester.getObjectID()); SWGObject crafterInventory = owner.getSlottedObject("inventory"); @@ -557,9 +561,7 @@ public class HarvesterService implements INetworkDispatch { int containerEnergy = containerVector.get(i).getStackCount(); if (containerEnergy <= deductedEnergy){ deductedEnergy -= containerEnergy; - playerInventory._remove(containerVector.get(i)); - SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(containerVector.get(i).getObjectID()); - owner.getClient().getSession().write(destroyObjectMsg.serialize()); + playerInventory.remove(containerVector.get(i)); } else { containerEnergy -= deductedEnergy; containerVector.get(i).setStackCount(containerEnergy,(CreatureObject)owner); @@ -888,17 +890,9 @@ public class HarvesterService implements INetworkDispatch { // destroy deed TangibleObject playerInventory = (TangibleObject) actor.getSlottedObject("inventory"); - playerInventory._remove(usedDeed); - SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(usedDeed.getObjectID()); - actor.getClient().getSession().write(destroyObjectMsg.serialize()); + playerInventory.remove(usedDeed); - int resCRC = CRC.StringtoCRC(constructorTemplate); - SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(installation.getObjectID(), quaternion.x, quaternion.y, quaternion.z, quaternion.w, posX, positionY, posZ, resCRC, (byte) 0); - actor.getClient().getSession().write(createObjectMsg.serialize()); - tools.CharonPacketUtils.printAnalysis(createObjectMsg.serialize()); - SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(installation.getObjectID()); - actor.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); - tools.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); + core.simulationService.add(installation, posX, posZ, true); PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); player.setLotsRemaining(player.getLotsRemaining()-(int)((Harvester_Deed)usedDeed).getLotRequirement()); @@ -907,8 +901,81 @@ public class HarvesterService implements INetworkDispatch { } } - public void placeHarvester(SWGObject object){ - HarvesterObject.createAndPlaceHarvester(object); + public void placeHarvester(SWGObject object) { + CreatureObject actor = (CreatureObject) object.getAttachment("Owner"); + + String structureTemplate = (String)object.getAttachment("Deed_StructureTemplate"); + HarvesterObject harvester = (HarvesterObject) NGECore.getInstance().objectService.createObject(structureTemplate, actor.getPlanet()); + long objectId = harvester.getObjectID(); + + Vector adminList = harvester.getAdminList(); + //String[] fullName = ((CreatureObject)actor).getCustomName().split(" "); + adminList.add(actor.getCustomName()); + // Set BER and outputhopper capacity here, take it from deed + harvester.setBER((int)object.getAttachment("Deed_BER")); + harvester.setSpecRate((int)(1.5F*(int)object.getAttachment("Deed_BER"))); + harvester.setOutputHopperCapacity((int)object.getAttachment("Deed_Capacity")); + harvester.setDeedTemplate((String)object.getAttachment("Deed_DeedTemplate")); + if ((int)object.getAttachment("Deed_SurplusMaintenance")>0){ + harvester.setMaintenanceAmount((int)object.getAttachment("Deed_SurplusMaintenance")); + } + if ((int)object.getAttachment("Deed_SurplusPower")>0){ + harvester.setPowerLevel((int)object.getAttachment("Deed_SurplusPower")); + } + + + // build harvester + float positionY = NGECore.getInstance().terrainService.getHeight(actor.getPlanetId(), object.getPosition().x, object.getPosition().z); + harvester.setPosition(new Point3D(object.getPosition().x,positionY, object.getPosition().z)); + core.simulationService.add(harvester, harvester.getPosition().x, harvester.getPosition().x, true); + + + PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); + WaypointObject constructionWaypoint = (WaypointObject)NGECore.getInstance().objectService.createObject("object/waypoint/shared_world_waypoint_blue.iff", actor.getPlanet(), harvester.getPosition().x, 0 ,harvester.getPosition().z); + String displayname = "@installation_n:"+harvester.getStfName(); + constructionWaypoint.setName(displayname); + constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); + constructionWaypoint.setPosition(new Point3D(object.getPosition().x,0, object.getPosition().z)); + player.waypointAdd(constructionWaypoint); + constructionWaypoint.setPosition(new Point3D(object.getPosition().x,0, object.getPosition().z)); + constructionWaypoint.setActive(true); + constructionWaypoint.setColor((byte)1); + constructionWaypoint.setStringAttribute("", ""); + player.waypointAdd(constructionWaypoint); + constructionWaypoint.setName(displayname); + constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); + player.setLastSurveyWaypoint(constructionWaypoint); + + List attachments = new ArrayList(); + WaypointAttachment attachment = new WaypointAttachment(); + attachment.active = true; + attachment.cellID = constructionWaypoint.getCellId(); + attachment.color = (byte)1; + attachment.name = displayname; + attachment.planetCRC = engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName()); + attachment.positionX = object.getPosition().x; + attachment.positionY = 0; + attachment.positionZ = object.getPosition().z; + attachments.add(attachment); + + // remove constructor + NGECore.getInstance().objectService.destroyObject(object); + + // ToDo: waypoint attachment fix + Date date = new Date(); + Mail constructionNotificationMail = new Mail(); + constructionNotificationMail.setSenderName("Structure Service"); + constructionNotificationMail.setSubject("Your structure"); + constructionNotificationMail.setRecieverId(actor.getObjectID()); + constructionNotificationMail.setTimeStamp((int) (date.getTime() / 1000)); + constructionNotificationMail.setMailId(NGECore.getInstance().chatService.generateMailId()); + String message = "Your construction is ready"; + constructionNotificationMail.setMessage(message); + constructionNotificationMail.setStatus(Mail.NEW); + constructionNotificationMail.setAttachments(attachments); + //NGECore.getInstance().chatService.sendPersistentMessage(actor.getClient(), constructionNotificationMail); + NGECore.getInstance().chatService.storePersistentMessage(constructionNotificationMail); + NGECore.getInstance().chatService.sendPersistentMessageHeader(actor.getClient(), constructionNotificationMail); } diff --git a/src/services/sui/SUIService.java b/src/services/sui/SUIService.java index 0e76c325..a2d32ce3 100644 --- a/src/services/sui/SUIService.java +++ b/src/services/sui/SUIService.java @@ -99,13 +99,15 @@ public class SUIService implements INetworkDispatch { if (! admins.contains(owner.getCustomName()) && hoppers.contains(owner.getCustomName())){ // authorized for hopper // change radialOptions to hopper access - harvester.setAttachment("radial_filename", "harvesterHopper"); + core.scriptService.callScript("scripts/radial/", "harvesterHopper", "createRadial", core, owner, target, request.getRadialOptions()); + sendRadial(owner, target, request.getRadialOptions(), request.getRadialCount()); + return; } } if(target.getGrandparent() != null && target.getGrandparent().getAttachment("structureAdmins") != null) { - if(core.housingService.getPermissions(owner, target.getContainer())) + if(core.housingService.getPermissions(owner, target.getContainer()) && !getRadialFilename(target).equals("structure_management_terminal")) { core.scriptService.callScript("scripts/radial/", "moveable", "createRadial", core, owner, target, request.getRadialOptions()); sendRadial(owner, target, request.getRadialOptions(), request.getRadialCount()); From 4ae9f292be9d3d474fa1af06c064285563fb35f1 Mon Sep 17 00:00:00 2001 From: Light2 Date: Sat, 12 Apr 2014 21:20:05 +0200 Subject: [PATCH 67/79] Fixed issue where non combat commands would be created as a combat command --- scripts/commands/setspeed.py | 1 - src/services/command/CommandService.java | 29 +++++++++++++----------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/scripts/commands/setspeed.py b/scripts/commands/setspeed.py index e5929c25..c73266de 100644 --- a/scripts/commands/setspeed.py +++ b/scripts/commands/setspeed.py @@ -5,6 +5,5 @@ def setup(): def run(core, actor, target, commandString): actor.setSpeedMultiplierBase(float(commandString)) - core.buffService.addBuffToCreature(actor, 'bh_prescience') return \ No newline at end of file diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index a215c548..e18b9535 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -76,7 +76,7 @@ public class CommandService implements INetworkDispatch { return false; } - if (command.getCharacterAbility().length() > 0 && !actor.hasAbility(command.getCharacterAbility()) && command.getGodLevel() < 1) { + if (command.getCharacterAbility().length() > 0 && !actor.hasAbility(command.getCharacterAbility()) && !command.getCharacterAbility().equals("admin")) { return false; } @@ -200,7 +200,7 @@ public class CommandService implements INetworkDispatch { default: break; } - + if (command.shouldCallOnTarget()) { if (target == null || !(target instanceof CreatureObject)) { return false; @@ -211,10 +211,12 @@ public class CommandService implements INetworkDispatch { long warmupTime = (long) (command.getWarmupTime() * 1000F); - try { - Thread.sleep(warmupTime); - } catch (InterruptedException e) { - e.printStackTrace(); + if(warmupTime > 0) { + try { + Thread.sleep(warmupTime); + } catch (InterruptedException e) { + e.printStackTrace(); + } } processCommand(actor, target, command, actionCounter, commandArgs); @@ -316,7 +318,7 @@ public class CommandService implements INetworkDispatch { sub += 5; } - if (hasCharacterAbility || isCombatCommand(commandName)) { + if (/*hasCharacterAbility ||*/ isCombatCommand(commandName)) { CombatCommand command = new CombatCommand(commandName); commandLookup.add(command); return command; @@ -353,15 +355,16 @@ public class CommandService implements INetworkDispatch { } public void processCommand(CreatureObject actor, SWGObject target, BaseSWGCommand command, int actionCounter, String commandArgs) { - actor.addCooldown(command.getCooldownGroup(), command.getCooldown()); - + if(command.getCooldown() > 0) + actor.addCooldown(command.getCooldownGroup(), command.getCooldown()); + if (command instanceof CombatCommand) { processCombatCommand(actor, target, (CombatCommand) command, actionCounter, commandArgs); } else { - if (FileUtilities.doesFileExist("scripts/commands/" + command.getCommandName() + ".py")) { - core.scriptService.callScript("scripts/commands/", command.getCommandName(), "run", core, actor, target, commandArgs); - } else if (FileUtilities.doesFileExist("scripts/commands/combat/" + command.getCommandName() + ".py")) { - core.scriptService.callScript("scripts/commands/combat/", command.getCommandName(), "run", core, actor, target, commandArgs); + if (FileUtilities.doesFileExist("scripts/commands/" + command.getCommandName().toLowerCase() + ".py")) { + core.scriptService.callScript("scripts/commands/", command.getCommandName().toLowerCase(), "run", core, actor, target, commandArgs); + } else if (FileUtilities.doesFileExist("scripts/commands/combat/" + command.getCommandName().toLowerCase() + ".py")) { + core.scriptService.callScript("scripts/commands/combat/", command.getCommandName().toLowerCase(), "run", core, actor, target, commandArgs); } } } From 4df7274ac9bcb813a7cfc6af4680ca3db80a33f8 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Fri, 11 Apr 2014 04:14:29 +0200 Subject: [PATCH 68/79] Structure terminal work Creation of player_house_deed class terminal menus made py scripts arranged --- options.cfg | 4 +- scripts/commands/movefurniture.py | 2 +- .../player_house_generic_small_style_01.py | 4 +- .../generic_house_small_deed.py | 6 +- .../terminal/terminal_player_structure.py | 1 + .../terminal/terminal_player_structure_new.py | 1 + .../terminal_player_structure_nosnap.py | 1 + .../terminal_player_structure_nosnap_mini.py | 1 + .../radial/structure_management_terminal.py | 59 ++++++ .../objects/building/BuildingObject.java | 28 ++- .../objects/deed/Player_House_Deed.java | 94 +++++++++ src/services/DevService.java | 15 +- src/services/housing/HousingService.java | 182 +++++++++++++++--- src/services/object/ObjectService.java | 7 +- 14 files changed, 372 insertions(+), 33 deletions(-) create mode 100644 scripts/radial/structure_management_terminal.py create mode 100644 src/resources/objects/deed/Player_House_Deed.java diff --git a/options.cfg b/options.cfg index 5a3a7f8e..cb743c88 100644 --- a/options.cfg +++ b/options.cfg @@ -1,3 +1,3 @@ -LOAD.SNAPSHOT_OBJECTS=1 -LOAD.BUILDOUT_OBJECTS=1 +LOAD.SNAPSHOT_OBJECTS=0 +LOAD.BUILDOUT_OBJECTS=0 LOAD.RESOURCE.SYSTEM=1 \ No newline at end of file diff --git a/scripts/commands/movefurniture.py b/scripts/commands/movefurniture.py index 3c45c55e..b6ff5c6d 100644 --- a/scripts/commands/movefurniture.py +++ b/scripts/commands/movefurniture.py @@ -6,7 +6,7 @@ def setup(): def run(core, actor, target, commandString): tarObj = core.objectService.getObject(actor.getTargetId()) - + actor.sendSystemMessage('target template ' + tarObj.getTemplate(),1) container = actor.getContainer() parsedMsg = commandString.split(' ', 2) diff --git a/scripts/object/building/player/player_house_generic_small_style_01.py b/scripts/object/building/player/player_house_generic_small_style_01.py index 17c11b52..aa3c37eb 100644 --- a/scripts/object/building/player/player_house_generic_small_style_01.py +++ b/scripts/object/building/player/player_house_generic_small_style_01.py @@ -5,5 +5,7 @@ def setup(core, object): print(sign) object.setAttachment("structureSign", sign) - core.objectService.createChildObject(object, 'object/tangible/terminal/shared_terminal_player_structure.iff', -5, 0.74, -1.81, 0.707107, -0.707107, 1) + structureterminal = core.objectService.createChildObject(object, 'object/tangible/terminal/shared_terminal_player_structure.iff', -5, 0.74, -1.81, 0.707107, -0.707107, 1) + structureterminal.setAttachment('radial_filename', 'structure_management_terminal') + structureterminal.setAttachment('housing_parentstruct', object) return \ No newline at end of file diff --git a/scripts/object/tangible/deed/player_house_deed/generic_house_small_deed.py b/scripts/object/tangible/deed/player_house_deed/generic_house_small_deed.py index e100519a..5dbae10f 100644 --- a/scripts/object/tangible/deed/player_house_deed/generic_house_small_deed.py +++ b/scripts/object/tangible/deed/player_house_deed/generic_house_small_deed.py @@ -1,7 +1,11 @@ import sys def setup(core, object): - object.setAttachment('radial_filename', 'structureDeed'); + object.setAttachment('radial_filename', 'structureDeed') + object.setConstructorTemplate('object/building/player/construction/shared_construction_player_house_corellia_small_style_01.iff') + object.setStructureTemplate('object/tangible/deed/player_house_deed/shared_generic_house_small_deed.iff') + object.setLotRequirement(1) + object.setBMR(15) return def use(core, actor, object): diff --git a/scripts/object/tangible/terminal/terminal_player_structure.py b/scripts/object/tangible/terminal/terminal_player_structure.py index ccad8904..839210a3 100644 --- a/scripts/object/tangible/terminal/terminal_player_structure.py +++ b/scripts/object/tangible/terminal/terminal_player_structure.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'structure_management_terminal') return \ No newline at end of file diff --git a/scripts/object/tangible/terminal/terminal_player_structure_new.py b/scripts/object/tangible/terminal/terminal_player_structure_new.py index ccad8904..839210a3 100644 --- a/scripts/object/tangible/terminal/terminal_player_structure_new.py +++ b/scripts/object/tangible/terminal/terminal_player_structure_new.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'structure_management_terminal') return \ No newline at end of file diff --git a/scripts/object/tangible/terminal/terminal_player_structure_nosnap.py b/scripts/object/tangible/terminal/terminal_player_structure_nosnap.py index ccad8904..839210a3 100644 --- a/scripts/object/tangible/terminal/terminal_player_structure_nosnap.py +++ b/scripts/object/tangible/terminal/terminal_player_structure_nosnap.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'structure_management_terminal') return \ No newline at end of file diff --git a/scripts/object/tangible/terminal/terminal_player_structure_nosnap_mini.py b/scripts/object/tangible/terminal/terminal_player_structure_nosnap_mini.py index ccad8904..839210a3 100644 --- a/scripts/object/tangible/terminal/terminal_player_structure_nosnap_mini.py +++ b/scripts/object/tangible/terminal/terminal_player_structure_nosnap_mini.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'structure_management_terminal') return \ No newline at end of file diff --git a/scripts/radial/structure_management_terminal.py b/scripts/radial/structure_management_terminal.py new file mode 100644 index 00000000..983127e2 --- /dev/null +++ b/scripts/radial/structure_management_terminal.py @@ -0,0 +1,59 @@ +from resources.common import RadialOptions +from protocol.swg import ResourceListForSurveyMessage +from services.sui.SUIService import MessageBoxType +from services.SurveyService import createSurveyRangeSUIWindow +from services.sui.SUIWindow import Trigger +from java.util import Vector +import sys + +def createRadial(core, owner, target, radials): + #(byte parentId, short optionId, byte optionType, String description) + radials.clear() + owner.sendSystemMessage('target template ' + target.getTemplate(),1) + radials.add(RadialOptions(0, 7, 0, 'Examine')) + radials.add(RadialOptions(0, 78, 0, '@player_structure:management')) + radials.add(RadialOptions(0, 117, 0, '@player_structure:permissions')) + radials.add(RadialOptions(2, 118, 0, '@harvester:manage')) + radials.add(RadialOptions(2, 128, 0, '@player_structure:permission_destroy')) + radials.add(RadialOptions(2, 124, 0, '@player_structure:management_status')) + radials.add(RadialOptions(2, 129, 0, '@player_structure:management_pay')) + radials.add(RadialOptions(2, 50, 0, '@base_player:set_name')) + radials.add(RadialOptions(2, 51, 0, '@player_structure:management_power')) + radials.add(RadialOptions(3, 121, 0, '@player_structure:permission_admin')) + radials.add(RadialOptions(3, 123, 0, '@player_structure:permissions')) + + return + +def handleSelection(core, owner, target, option): + if option == 118 and target: + if owner is not None: + core.housingService.handleOperateMachinery(owner,target) + return + if option == 128: + if owner is not None: + core.housingService.createDestroySUIPage(owner,target) + return + if option == 124: + if owner is not None: + core.housingService.createStatusSUIPage(owner,target) + return + if option == 129: + if owner is not None: + core.housingService.createPayMaintenanceSUIPage(owner,target) + return + if option == 50: + if owner is not None: + core.housingService.createRenameSUIPage(owner,target) + return + if option == 51: + if owner is not None: + core.housingService.handleDepositPower(owner,target) + return + if option == 121: + if owner is not None: + core.housingService.handlePermissionAdmin(owner,target) + return + if option == 123: + if owner is not None: + core.housingService.handlePermissionHopper(owner,target) + return diff --git a/src/resources/objects/building/BuildingObject.java b/src/resources/objects/building/BuildingObject.java index f604d0a3..37776c1e 100644 --- a/src/resources/objects/building/BuildingObject.java +++ b/src/resources/objects/building/BuildingObject.java @@ -23,34 +23,44 @@ package resources.objects.building; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; + import resources.objects.cell.CellObject; + import com.sleepycat.je.Environment; import com.sleepycat.je.Transaction; + import resources.objects.tangible.TangibleObject; + import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.NotPersistent; + import engine.clients.Client; import engine.resources.objects.IPersistent; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Entity(version=0) +@Entity(version=2) public class BuildingObject extends TangibleObject implements IPersistent { @NotPersistent private BuildingMessageBuilder messageBuilder; @NotPersistent private Transaction txn; + + private float maintenanceAmount = 0; + private String deedTemplate; public BuildingObject() { super(); messageBuilder = new BuildingMessageBuilder(this); + this.setConditionDamage(100); } public BuildingObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { super(objectID, planet, Template, position, orientation); messageBuilder = new BuildingMessageBuilder(this); + this.setConditionDamage(100); } public CellObject getCellByCellNumber(final int cellNumber) { @@ -67,6 +77,22 @@ public class BuildingObject extends TangibleObject implements IPersistent { return ref.get(); } + + public float getMaintenanceAmount() { + return maintenanceAmount; + } + + public void setMaintenanceAmount(float maintenanceAmount) { + this.maintenanceAmount = maintenanceAmount; + } + + public void setDeedTemplate(String deedTemplate){ + this.deedTemplate = deedTemplate; + } + + public String getDeedTemplate(){ + return this.deedTemplate; + } @Override public void sendBaselines(Client destination) { diff --git a/src/resources/objects/deed/Player_House_Deed.java b/src/resources/objects/deed/Player_House_Deed.java new file mode 100644 index 00000000..448f3da9 --- /dev/null +++ b/src/resources/objects/deed/Player_House_Deed.java @@ -0,0 +1,94 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ +package resources.objects.deed; +import com.sleepycat.persist.model.Persistent; + +import engine.resources.scene.Planet; +import engine.resources.scene.Point3D; +import engine.resources.scene.Quaternion; + +/** + * @author Seefo + * @author Charon + */ + +@Persistent(version=0) +public class Player_House_Deed extends Deed { + + private String name; + private String structureTemplate; + private String constructorTemplate; + private int BMR=0; + private int surplusMaintenance=0; + private int lotRequirement; + + + public Player_House_Deed(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ + super(objectID, planet, template, position, orientation); + } + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getStructureTemplate() { + return structureTemplate; + } + public void setStructureTemplate(String structureTemplate) { + this.structureTemplate = structureTemplate; + } + public int getLotRequirement() { + return lotRequirement; + } + public void setLotRequirement(int lotRequirement) { + this.lotRequirement = lotRequirement; + } + public String getConstructorTemplate() { + return constructorTemplate; + } + public void setConstructorTemplate(String constructorTemplate) { + this.constructorTemplate = constructorTemplate; + } + public int getBMR() { + return BMR; + } + public void setBMR(int BMR) { + this.BMR = BMR; + } + public int getSurplusMaintenance() { + return surplusMaintenance; + } + public void setSurplusMaintenance(int surplusMaintenance) { + this.surplusMaintenance = surplusMaintenance; + } + + public void setAttributes() { + this.getAttributes().put("@obj_attr_n:volume", "1"); + this.getAttributes().put("@obj_attr_n:examine_maintenance_rate", ""+this.getBMR() + "/hour"); + if (this.getSurplusMaintenance()>0) + this.getAttributes().put("@obj_attr_n:examine_maintenance", ""+this.getSurplusMaintenance()); + + + } +} diff --git a/src/services/DevService.java b/src/services/DevService.java index b5f0e2d3..03464bb2 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -39,6 +39,7 @@ import resources.common.SpawnPoint; import resources.objects.building.BuildingObject; import resources.objects.creature.CreatureObject; import resources.objects.deed.Harvester_Deed; +import resources.objects.deed.Player_House_Deed; import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; import resources.objects.tool.SurveyTool; @@ -87,7 +88,8 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 23, "Jedi Items"); suiOptions.put((long) 26, "Installations"); suiOptions.put((long) 110, "Survey Devices"); - if(creature.getClient().isGM()) suiOptions.put((long) 120, "House Deeds"); + //if(creature.getClient().isGM()) suiOptions.put((long) 120, "House Deeds"); + suiOptions.put((long) 120, "House Deeds"); break; case 3: // [Items] Weapons suiOptions.put((long) 30, "Jedi Weapons"); @@ -1192,8 +1194,15 @@ public class DevService implements INetworkDispatch { core.resourceService.spawnSpecificResourceContainer("Radioactive", player, 100000); break; case 120: - SWGObject houseDeed = core.objectService.createObject("object/tangible/deed/player_house_deed/shared_generic_house_small_deed.iff", planet); - inventory.add(houseDeed); +// SWGObject houseDeed = core.objectService.createObject("object/tangible/deed/player_house_deed/shared_generic_house_small_deed.iff", planet); +// inventory.add(houseDeed); + + templateString="object/tangible/deed/player_house_deed/shared_generic_house_small_deed.iff"; + Player_House_Deed deed = (Player_House_Deed)core.objectService.createObject(templateString, planet); + deed.setBMR(15); + deed.setAttributes(); + inventory.add(deed); + return; } } diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index a9f427b5..b8ee3f79 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -30,14 +30,23 @@ import java.nio.file.Paths; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; import java.util.Map; +import java.util.Random; import java.util.Vector; import java.util.concurrent.ConcurrentHashMap; import main.NGECore; import protocol.swg.EnterStructurePlacementModeMessage; +import protocol.swg.SceneDestroyObject; import resources.objects.building.BuildingObject; import resources.objects.creature.CreatureObject; +import resources.objects.deed.Harvester_Deed; +import resources.objects.deed.Player_House_Deed; +import resources.objects.harvester.HarvesterObject; +import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; +import services.sui.SUIWindow; +import services.sui.SUIWindow.SUICallback; +import services.sui.SUIWindow.Trigger; import engine.resources.objects.SWGObject; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; @@ -58,11 +67,11 @@ public class HousingService implements INetworkDispatch { public void enterStructureMode(CreatureObject actor, TangibleObject deed) { - if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, actor.getWorldPosition().x, actor.getWorldPosition().z)) - { - actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf - return; - } +// if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, actor.getWorldPosition().x, actor.getWorldPosition().z)) +// { +// actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf +// return; +// } if(housingTemplates.containsKey(deed.getTemplate())) { @@ -79,24 +88,24 @@ public class HousingService implements INetworkDispatch { int structureLotCost = houseTemplate.getLotCost(); String structureTemplate = houseTemplate.getBuildingTemplate(); - if(!houseTemplate.canBePlacedOn(actor.getPlanet().getName())) - { - actor.sendSystemMessage("You may not place this structure on this planet.", (byte) 0); // should probably load this from an stf - return; - } - - if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, positionX, positionZ)) - { - actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf - return; - } - - // Lot stuff - if(!actor.getPlayerObject().deductLots(structureLotCost)) - { - actor.sendSystemMessage("You do not have enough available lots to place this structure.", (byte) 0); // should probably load this from an stf - return; - } +// if(!houseTemplate.canBePlacedOn(actor.getPlanet().getName())) +// { +// actor.sendSystemMessage("You may not place this structure on this planet.", (byte) 0); // should probably load this from an stf +// return; +// } +// +// if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, positionX, positionZ)) +// { +// actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf +// return; +// } +// +// // Lot stuff +// if(!actor.getPlayerObject().deductLots(structureLotCost)) +// { +// actor.sendSystemMessage("You do not have enough available lots to place this structure.", (byte) 0); // should probably load this from an stf +// return; +// } // Calculate our orientation and height Quaternion quaternion = new Quaternion(1, 0, 0, 0); @@ -122,6 +131,7 @@ public class HousingService implements INetworkDispatch { building.setAttachment("structureOwner", actor.getObjectID()); building.setAttachment("structureAdmins", admins); + building.setDeedTemplate(deed.getTemplate()); // Save structure to DB //building.createTransaction(core.getBuildingODB().getEnvironment()); @@ -160,6 +170,132 @@ public class HousingService implements INetworkDispatch { catch (IOException e) { e.printStackTrace(); } } + public void createDestroySUIPage(final SWGObject owner, final TangibleObject target) { + + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + //final BuildingObject building = (BuildingObject) core.objectService.getObject(target.getParentId()); + // harvester.getStfFilename(); installation_n .getTemplate(); + String displayname = "@installation_n:"+building.getStfName(); + if (building.getCustomName()!=null) + displayname = building.getCustomName(); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", displayname); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:confirm_destruction_d1 " + + "@player_structure:confirm_destruction_d2 " + + "\n \n @player_structure:confirm_destruction_d3a " + + "\\#32CD32 @player_structure:confirm_destruction_d3b \\#FFFFFF " + + "@player_structure:confirm_destruction_d4 "); + if (building.getConditionDamage()<20 && building.getMaintenanceAmount()<3000){ + window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#BB0000 @player_structure:can_redeed_no_suffix \\#FFFFFF ",1 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#32CD32 @player_structure:can_redeed_yes_suffix \\#FFFFFF ",1 ); + } + if (building.getConditionDamage()<20){ + window.addListBoxMenuItem("@player_structure:redeed_condition \\#BB0000 " + building.getConditionDamage() + " \\#FFFFFF ",1 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_condition \\#32CD32 " + building.getConditionDamage() + " \\#FFFFFF ",1 ); + } + if (building.getMaintenanceAmount()<0){ + window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#BB0000 " + (int)building.getMaintenanceAmount() + " \\#FFFFFF ",2 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#32CD32 " + (int)building.getMaintenanceAmount() + " \\#FFFFFF ",2 ); + } + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + createCodeWindow(owner, target); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void createCodeWindow(SWGObject owner, TangibleObject target) { + + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + //final BuildingObject building = (BuildingObject)target; + // harvester.getStfFilename(); installation_n .getTemplate(); + Random rnd = new Random(); + final int confirmCode = 100000 + rnd.nextInt(900000); + final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:confirm_destruction_t"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:your_structure_prefix " + + "\\#32CD32 @player_structure:will_redeed_confirm \\#FFFFFF "+ + "@player_structure:will_redeed_suffix " + + "\n \n Code: " + confirmCode); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + returnList.add("txtInput:LocalText"); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject crafter = (CreatureObject)owner; + core.suiService.closeSUIWindow(owner, 0); + if (returnList.get(0).equals(""+confirmCode)){ + // handle creation of correct deed in player inventory + PlayerObject player = (PlayerObject) crafter.getSlottedObject("ghost"); + String deedTemplate = building.getDeedTemplate(); + + Player_House_Deed deed = (Player_House_Deed)core.objectService.createObject(deedTemplate, owner.getPlanet()); + if(player.getLotsRemaining()+deed.getLotRequirement()>10){ + // Something went wrong or hacking attempt + crafter.sendSystemMessage("Structure can't be redeeded. Maximum lot count exceeded.",(byte)1); + return; + } + + deed.setStructureTemplate(building.getTemplate()); + deed.setSurplusMaintenance((int)building.getMaintenanceAmount()); + deed.setAttributes(); + + SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(building.getObjectID()); + owner.getClient().getSession().write(destroyObjectMsg.serialize()); + core.objectService.destroyObject(building.getObjectID()); + + SWGObject ownerInventory = owner.getSlottedObject("inventory"); + ownerInventory.add(deed); + + if(player.getLotsRemaining()+deed.getLotRequirement()<=10) + player.setLotsRemaining(player.getLotsRemaining()+deed.getLotRequirement()); + + crafter.sendSystemMessage("@player_structure:processing_destruction",(byte)1); + crafter.sendSystemMessage("@player_structure:deed_reclaimed",(byte)1); + + } else { + crafter.sendSystemMessage("@player_structure:incorrect_destroy_code",(byte)1); + } + + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + @Override diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index a3c317a6..ca22a7fc 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -97,6 +97,7 @@ import resources.objects.building.BuildingObject; import resources.objects.cell.CellObject; import resources.objects.creature.CreatureObject; import resources.objects.deed.Harvester_Deed; +import resources.objects.deed.Player_House_Deed; import resources.objects.group.GroupObject; import resources.objects.guild.GuildObject; import resources.objects.harvester.HarvesterObject; @@ -320,7 +321,11 @@ public class ObjectService implements INetworkDispatch { } else if(Template.startsWith("object/tangible/deed/harvester_deed") || Template.startsWith("object/tangible/deed/generator_deed")) { object = new Harvester_Deed(objectID, planet, Template, position, orientation); - + + } else if(Template.startsWith("object/tangible/deed/player_house_deed")) { + + object = new Player_House_Deed(objectID, planet, Template, position, orientation); + } else if(Template.startsWith("object/tangible")) { object = new TangibleObject(objectID, planet, Template, position, orientation); From 81f77b06dd482b58ee7a3510846d30a68e890356 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Sat, 12 Apr 2014 02:30:17 +0200 Subject: [PATCH 69/79] All structure terminal menus and functionalities implemented Dropped items add nowto the buildings itemlist Some databse work for permissions --- scripts/commands/movefurniture.py | 1 - scripts/commands/permissionlistmodify.py | 9 +- scripts/commands/transferitemmisc.py | 7 +- .../player_house_generic_small_style_01.py | 2 +- .../radial/structure_management_terminal.py | 46 +- src/protocol/swg/ObjControllerMessage.java | 5 +- .../building/BuildingMessageBuilder.java | 24 + .../objects/building/BuildingObject.java | 128 +++- src/services/CharacterService.java | 53 ++ src/services/DevService.java | 4 +- src/services/housing/HousingService.java | 707 +++++++++++++++--- 11 files changed, 836 insertions(+), 150 deletions(-) diff --git a/scripts/commands/movefurniture.py b/scripts/commands/movefurniture.py index b6ff5c6d..1f4a7148 100644 --- a/scripts/commands/movefurniture.py +++ b/scripts/commands/movefurniture.py @@ -6,7 +6,6 @@ def setup(): def run(core, actor, target, commandString): tarObj = core.objectService.getObject(actor.getTargetId()) - actor.sendSystemMessage('target template ' + tarObj.getTemplate(),1) container = actor.getContainer() parsedMsg = commandString.split(' ', 2) diff --git a/scripts/commands/permissionlistmodify.py b/scripts/commands/permissionlistmodify.py index a34f8d43..8c0108ba 100644 --- a/scripts/commands/permissionlistmodify.py +++ b/scripts/commands/permissionlistmodify.py @@ -4,7 +4,14 @@ def setup(): return def run(core, actor, target, commandString): - core.harvesterService.handlePermissionListModify(actor, target, commandString) + permissionType = 'Undetermined' + commandArgs = commandString.split(' ') + if len(commandArgs) > 3: + permissionType = commandArgs[2] + if permissionType=='ENTRY' | permissionType=='BAN': + core.housingService.handlePermissionListModify(actor, target, commandString) + if permissionType=='ADMIN' | permissionType=='HOPPER': + core.harvesterService.handlePermissionListModify(actor, target, commandString) return \ No newline at end of file diff --git a/scripts/commands/transferitemmisc.py b/scripts/commands/transferitemmisc.py index 27bfde45..c398a980 100644 --- a/scripts/commands/transferitemmisc.py +++ b/scripts/commands/transferitemmisc.py @@ -12,9 +12,10 @@ def run(core, actor, target, commandString): actorContainer = actor.getContainer() if actorContainer != None and (container.getTemplate() == "object/cell/shared_cell.iff") & core.housingService.getPermissions(actor, actorContainer): - target.getContainer().transferTo(actor, container, target) - core.simulationService.teleport(target, actor.getPosition(), Quaternion(1,0,0,0), containerID) - return + target.getContainer().transferTo(actor, container, target) + core.simulationService.teleport(target, actor.getPosition(), Quaternion(1,0,0,0), containerID) + core.housingService.addItemToHouseItemList(target,actorContainer) + return elif actorContainer != None and container.getTemplate() == "object/cell/shared_cell.iff": actor.sendSystemMessage("You do not have permission to access that container!", 0) return diff --git a/scripts/object/building/player/player_house_generic_small_style_01.py b/scripts/object/building/player/player_house_generic_small_style_01.py index aa3c37eb..6e0ae61d 100644 --- a/scripts/object/building/player/player_house_generic_small_style_01.py +++ b/scripts/object/building/player/player_house_generic_small_style_01.py @@ -6,6 +6,6 @@ def setup(core, object): object.setAttachment("structureSign", sign) structureterminal = core.objectService.createChildObject(object, 'object/tangible/terminal/shared_terminal_player_structure.iff', -5, 0.74, -1.81, 0.707107, -0.707107, 1) - structureterminal.setAttachment('radial_filename', 'structure_management_terminal') + #structureterminal.setAttachment('radial_filename', 'structure_management_terminal') structureterminal.setAttachment('housing_parentstruct', object) return \ No newline at end of file diff --git a/scripts/radial/structure_management_terminal.py b/scripts/radial/structure_management_terminal.py index 983127e2..914133ef 100644 --- a/scripts/radial/structure_management_terminal.py +++ b/scripts/radial/structure_management_terminal.py @@ -1,8 +1,8 @@ from resources.common import RadialOptions from protocol.swg import ResourceListForSurveyMessage from services.sui.SUIService import MessageBoxType -from services.SurveyService import createSurveyRangeSUIWindow from services.sui.SUIWindow import Trigger +from tools import JythonUtilities from java.util import Vector import sys @@ -13,22 +13,24 @@ def createRadial(core, owner, target, radials): radials.add(RadialOptions(0, 7, 0, 'Examine')) radials.add(RadialOptions(0, 78, 0, '@player_structure:management')) radials.add(RadialOptions(0, 117, 0, '@player_structure:permissions')) - radials.add(RadialOptions(2, 118, 0, '@harvester:manage')) radials.add(RadialOptions(2, 128, 0, '@player_structure:permission_destroy')) radials.add(RadialOptions(2, 124, 0, '@player_structure:management_status')) radials.add(RadialOptions(2, 129, 0, '@player_structure:management_pay')) radials.add(RadialOptions(2, 50, 0, '@base_player:set_name')) - radials.add(RadialOptions(2, 51, 0, '@player_structure:management_power')) - radials.add(RadialOptions(3, 121, 0, '@player_structure:permission_admin')) - radials.add(RadialOptions(3, 123, 0, '@player_structure:permissions')) + radials.add(RadialOptions(2, 127, 0, '@player_structure:management_residence')) + #radials.add(RadialOptions(2, 125, 0, '@player_structure:management_privacy : ' + core.housingService.fetchPrivacyString(target))) + radials.add(RadialOptions(2, 171, 0, '@player_structure:find_items_find_all_house_items')) + radials.add(RadialOptions(2, 173, 0, '@player_structure:move_first_item')) + radials.add(RadialOptions(2, 174, 0, '@player_structure:find_items_search_for_house_items')) + radials.add(RadialOptions(2, 175, 0, '@player_structure:delete_all_items_title')) + radials.add(RadialOptions(2, 172, 0, 'Pack Up This Building')) + radials.add(RadialOptions(3, 121, 0, '@player_structure:permission_enter')) + radials.add(RadialOptions(3, 123, 0, '@player_structure:permission_banned')) return def handleSelection(core, owner, target, option): - if option == 118 and target: - if owner is not None: - core.housingService.handleOperateMachinery(owner,target) - return + if option == 128: if owner is not None: core.housingService.createDestroySUIPage(owner,target) @@ -45,15 +47,33 @@ def handleSelection(core, owner, target, option): if owner is not None: core.housingService.createRenameSUIPage(owner,target) return - if option == 51: + if option == 127: if owner is not None: - core.housingService.handleDepositPower(owner,target) + core.housingService.declareResidency(owner,target) + return + if option == 171: + if owner is not None: + core.housingService.handleListAllItems(owner,target) + return + if option == 175: + if owner is not None: + core.housingService.handleDeleteAllItems(owner,target) + return + if option == 173: + if owner is not None: + core.housingService.handleFindLostItems(owner,target) + return + if option == 174: + if owner is not None: + core.housingService.handleSearchForItems(owner,target) return if option == 121: if owner is not None: - core.housingService.handlePermissionAdmin(owner,target) + core.housingService.handlePermissionEntry(owner,target) return if option == 123: if owner is not None: - core.housingService.handlePermissionHopper(owner,target) + core.housingService.handlePermissionBan(owner,target) return + + diff --git a/src/protocol/swg/ObjControllerMessage.java b/src/protocol/swg/ObjControllerMessage.java index b3aa94eb..1c94c6b7 100644 --- a/src/protocol/swg/ObjControllerMessage.java +++ b/src/protocol/swg/ObjControllerMessage.java @@ -83,8 +83,9 @@ public class ObjControllerMessage extends SWGMessage { } public IoBuffer serialize() { - IoBuffer buffer = IoBuffer.allocate(1024).order(ByteOrder.LITTLE_ENDIAN); - + //IoBuffer buffer = IoBuffer.allocate(1024).order(ByteOrder.LITTLE_ENDIAN); -> java.nio.BufferOverflowException + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); buffer.putShort((short)5); buffer.putInt(0x80CE5E46); buffer.putInt(update); diff --git a/src/resources/objects/building/BuildingMessageBuilder.java b/src/resources/objects/building/BuildingMessageBuilder.java index 5a751d8f..b3639d99 100644 --- a/src/resources/objects/building/BuildingMessageBuilder.java +++ b/src/resources/objects/building/BuildingMessageBuilder.java @@ -22,8 +22,12 @@ package resources.objects.building; import java.nio.ByteOrder; +import java.util.Vector; + import org.apache.mina.core.buffer.IoBuffer; + import resources.objects.ObjectMessageBuilder; +import resources.objects.harvester.HarvesterObject; public class BuildingMessageBuilder extends ObjectMessageBuilder { @@ -122,6 +126,26 @@ public class BuildingMessageBuilder extends ObjectMessageBuilder { return buffer; } + + public IoBuffer buildPermissionListCreate(Vector permissionList, String listName) { + IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); + buffer.setAutoExpand(true); + int listSize = permissionList.size(); + buffer.putShort((short)4); + buffer.putInt(0x52F364B8); + buffer.putInt(listSize); + for (String name : permissionList){ + buffer.put(getUnicodeString(name)); + } + //buffer.putInt(0x61); + buffer.putInt(0); + //buffer.putShort((short)0); + buffer.put(getUnicodeString(listName)); + int size = buffer.position(); + buffer.flip(); + tools.CharonPacketUtils.printAnalysis(IoBuffer.allocate(size).put(buffer.array(), 0, size).flip()); + return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); + } @Override diff --git a/src/resources/objects/building/BuildingObject.java b/src/resources/objects/building/BuildingObject.java index 37776c1e..1598b374 100644 --- a/src/resources/objects/building/BuildingObject.java +++ b/src/resources/objects/building/BuildingObject.java @@ -21,10 +21,13 @@ ******************************************************************************/ package resources.objects.building; +import java.util.Vector; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; +import main.NGECore; import resources.objects.cell.CellObject; +import resources.objects.creature.CreatureObject; import com.sleepycat.je.Environment; import com.sleepycat.je.Transaction; @@ -40,7 +43,7 @@ import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Entity(version=2) +@Entity(version=5) public class BuildingObject extends TangibleObject implements IPersistent { @NotPersistent @@ -49,7 +52,16 @@ public class BuildingObject extends TangibleObject implements IPersistent { private Transaction txn; private float maintenanceAmount = 0; - private String deedTemplate; + private int BMR = 0; + private String deedTemplate=""; + private boolean residency=false; + private byte privacy=(byte)0; + public static byte PRIVATE = (byte)0; + public static byte PUBLIC = (byte)1; + private Vector itemsList = new Vector(); + private short maximumStorageCapacity=0; + private Vector entryList = new Vector(); // Preferably the OIDs should be stored, because of name changes + private Vector banList = new Vector(); public BuildingObject() { super(); @@ -93,6 +105,117 @@ public class BuildingObject extends TangibleObject implements IPersistent { public String getDeedTemplate(){ return this.deedTemplate; } + + public String getBuildingName() { + return this.getCustomName(); + } + + public void setBuildingName(String buildingName, CreatureObject owner) { + //owner.getClient().getSession().write(messageBuilder.buildCustomNameDelta(this,buildingName)); + this.setCustomName(buildingName); + ((CreatureObject)owner).sendSystemMessage("Structure renamed.", (byte) 0); + } + + public int getBMR() { + return BMR; + } + + public void setBMR(int BMR) { + this.BMR = BMR; + } + + public void setResidency(CreatureObject owner){ + owner.sendSystemMessage("@player_structure:declared_residency", (byte) 1); + residency = true; + } + + public boolean getResidency(){ + return this.residency; + } + + public byte getPrivacy() { + return privacy; + } + + public String getPrivacyString() { + if (privacy==PRIVATE) + return "private"; + if (privacy==PUBLIC) + return "public"; + return "42"; + } + + public void setPrivacy(byte privacy) { + this.privacy = privacy; + } + + public Vector getItemsList() { + return itemsList; + } + + public void setItemsList(Vector itemsList) { + this.itemsList = itemsList; + } + + public short getMaximumStorageCapacity() { + return maximumStorageCapacity; + } + + public void setMaximumStorageCapacity(short maximumStorageCapacity) { + this.maximumStorageCapacity = maximumStorageCapacity; + } + + public void setPermissionEntry(String name,CreatureObject owner){ + Vector entryListFirstNames = new Vector(); + for (long oid : entryList){ + String firstName = NGECore.getInstance().characterService.getPlayerFirstName(oid); + entryListFirstNames.add(firstName); + } + entryListFirstNames.add("Peter"); + entryListFirstNames.add("Jackson"); + owner.getClient().getSession().write(messageBuilder.buildPermissionListCreate(entryListFirstNames, name)); + } + + public void setPermissionBan(String name,CreatureObject owner){ + Vector banListFirstNames = new Vector(); + for (long oid : banList){ + String firstName = NGECore.getInstance().characterService.getPlayerFirstName(oid); + banListFirstNames.add(firstName); + } + banListFirstNames.add("Peter"); + banListFirstNames.add("Smith"); + owner.getClient().getSession().write(messageBuilder.buildPermissionListCreate(banListFirstNames, name)); + } + + public void addPlayerToEntryList(CreatureObject owner,long oid, String firstName){ + if (!entryList.contains(oid)){ + this.entryList.add(oid); + owner.sendSystemMessage(firstName+ " added to the list.", (byte)1); // player_added %NO added to the list. + } + } + + public void removePlayerFromEntryList(CreatureObject owner,long oid, String firstName){ + if (entryList.contains(oid)){ + this.entryList.remove(oid); + owner.sendSystemMessage(firstName+ " removed to the list.", (byte)1); // player_removed %NO removed from the list. + } + } + + public void addPlayerToBanList(CreatureObject owner,long oid, String firstName){ + if (!banList.contains(oid)){ + this.banList.add(oid); + owner.sendSystemMessage(firstName+ " added to the list.", (byte)1); + } + } + + public void removePlayerFromBanList(CreatureObject owner,long oid, String firstName){ + if (banList.contains(oid)){ + this.banList.remove(oid); + owner.sendSystemMessage(firstName+ " removed to the list.", (byte)1); + } + } + + @Override public void sendBaselines(Client destination) { @@ -115,5 +238,4 @@ public class BuildingObject extends TangibleObject implements IPersistent { txn = env.beginTransaction(null, null); txn.setLockTimeout(500, TimeUnit.MILLISECONDS); } - } diff --git a/src/services/CharacterService.java b/src/services/CharacterService.java index ec394752..9a00b424 100644 --- a/src/services/CharacterService.java +++ b/src/services/CharacterService.java @@ -542,6 +542,59 @@ public class CharacterService implements INetworkDispatch { return false; } + /** + * Checks the database if a player with the given first name exists + * and returns the objectID of that player. + * @param name : String + * @return objectID : long + */ + public long getPlayerOID(String name) { + if (!name.equals("")) { + long oid = 0L; + try { + PreparedStatement ps = databaseConnection.preparedStatement("SELECT * FROM characters WHERE \"firstName\"=?"); + ps.setString(1, name); + ResultSet resultSet = ps.executeQuery(); + while (resultSet.next()) { + oid = resultSet.getLong("id"); + } + return oid; + } + + catch (SQLException e) { e.printStackTrace(); } + } + return 0L; + } + + /** + * Delivers the first name of a player + * @param oid : long + * @return firstName : String + */ + public String getPlayerFirstName(long oid) { + + String name = ""; + try { + PreparedStatement ps = databaseConnection.preparedStatement("SELECT * FROM characters WHERE \"id\"=?"); + ps.setLong(1, oid); + ResultSet resultSet = ps.executeQuery(); + while (resultSet.next()) { + name = resultSet.getString("firstName"); + if (!name.equals("")) { + if (name.contains(" ")) { + name = name.split(" ")[0]; + } + name = name.toLowerCase(); + + } + return name; + } + + } catch (SQLException e) { e.printStackTrace(); } + + return ""; + } + /** * Checks the database for if the object ID of the player exists. * @param objectId Object ID to check for in the database diff --git a/src/services/DevService.java b/src/services/DevService.java index 03464bb2..da4a5561 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -88,8 +88,8 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 23, "Jedi Items"); suiOptions.put((long) 26, "Installations"); suiOptions.put((long) 110, "Survey Devices"); - //if(creature.getClient().isGM()) suiOptions.put((long) 120, "House Deeds"); - suiOptions.put((long) 120, "House Deeds"); + if(creature.getClient().isGM()) suiOptions.put((long) 120, "House Deeds"); + //suiOptions.put((long) 120, "House Deeds"); break; case 3: // [Items] Weapons suiOptions.put((long) 30, "Jedi Weapons"); diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index b8ee3f79..5db53834 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -29,6 +29,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.SimpleFileVisitor; import java.nio.file.attribute.BasicFileAttributes; +import java.util.HashMap; import java.util.Map; import java.util.Random; import java.util.Vector; @@ -36,6 +37,7 @@ import java.util.concurrent.ConcurrentHashMap; import main.NGECore; import protocol.swg.EnterStructurePlacementModeMessage; +import protocol.swg.SceneCreateObjectByCrc; import protocol.swg.SceneDestroyObject; import resources.objects.building.BuildingObject; import resources.objects.creature.CreatureObject; @@ -47,6 +49,7 @@ import resources.objects.tangible.TangibleObject; import services.sui.SUIWindow; import services.sui.SUIWindow.SUICallback; import services.sui.SUIWindow.Trigger; +import engine.resources.common.CRC; import engine.resources.objects.SWGObject; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; @@ -84,7 +87,7 @@ public class HousingService implements INetworkDispatch { public void placeStructure(final CreatureObject actor, TangibleObject deed, float positionX, float positionZ, float rotation) { HouseTemplate houseTemplate = housingTemplates.get(deed.getTemplate()); - + Player_House_Deed playerHourseDeed = (Player_House_Deed)core.objectService.getObject(deed.getObjectID()); int structureLotCost = houseTemplate.getLotCost(); String structureTemplate = houseTemplate.getBuildingTemplate(); @@ -100,12 +103,12 @@ public class HousingService implements INetworkDispatch { // return; // } // -// // Lot stuff -// if(!actor.getPlayerObject().deductLots(structureLotCost)) -// { -// actor.sendSystemMessage("You do not have enough available lots to place this structure.", (byte) 0); // should probably load this from an stf -// return; -// } + // Lot stuff + if(!actor.getPlayerObject().deductLots(structureLotCost)) + { + actor.sendSystemMessage("You do not have enough available lots to place this structure.", (byte) 0); // should probably load this from an stf + return; + } // Calculate our orientation and height Quaternion quaternion = new Quaternion(1, 0, 0, 0); @@ -132,6 +135,8 @@ public class HousingService implements INetworkDispatch { building.setAttachment("structureOwner", actor.getObjectID()); building.setAttachment("structureAdmins", admins); building.setDeedTemplate(deed.getTemplate()); + building.setBMR(playerHourseDeed.getBMR()); + building.setConditionDamage(100); // Save structure to DB //building.createTransaction(core.getBuildingODB().getEnvironment()); @@ -172,131 +177,585 @@ public class HousingService implements INetworkDispatch { public void createDestroySUIPage(final SWGObject owner, final TangibleObject target) { - final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); - //final BuildingObject building = (BuildingObject) core.objectService.getObject(target.getParentId()); - // harvester.getStfFilename(); installation_n .getTemplate(); - String displayname = "@installation_n:"+building.getStfName(); - if (building.getCustomName()!=null) - displayname = building.getCustomName(); - final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); - window.setProperty("bg.caption.lblTitle:Text", displayname); - window.setProperty("Prompt.lblPrompt:Text", "@player_structure:confirm_destruction_d1 " + - "@player_structure:confirm_destruction_d2 " + - "\n \n @player_structure:confirm_destruction_d3a " + - "\\#32CD32 @player_structure:confirm_destruction_d3b \\#FFFFFF " + - "@player_structure:confirm_destruction_d4 "); - if (building.getConditionDamage()<20 && building.getMaintenanceAmount()<3000){ - window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#BB0000 @player_structure:can_redeed_no_suffix \\#FFFFFF ",1 ); - } else { - window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#32CD32 @player_structure:can_redeed_yes_suffix \\#FFFFFF ",1 ); - } - if (building.getConditionDamage()<20){ - window.addListBoxMenuItem("@player_structure:redeed_condition \\#BB0000 " + building.getConditionDamage() + " \\#FFFFFF ",1 ); - } else { - window.addListBoxMenuItem("@player_structure:redeed_condition \\#32CD32 " + building.getConditionDamage() + " \\#FFFFFF ",1 ); - } - if (building.getMaintenanceAmount()<0){ - window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#BB0000 " + (int)building.getMaintenanceAmount() + " \\#FFFFFF ",2 ); - } else { - window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#32CD32 " + (int)building.getMaintenanceAmount() + " \\#FFFFFF ",2 ); - } - window.setProperty("btnOk:visible", "True"); - window.setProperty("btnCancel:visible", "True"); - window.setProperty("btnOk:Text", "@yes"); - window.setProperty("btnCancel:Text", "@no"); - Vector returnList = new Vector(); - returnList.add("List.lstList:SelectedRow"); - window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { - @SuppressWarnings("unchecked") - @Override - public void process(SWGObject owner, int eventType, Vector returnList) { - core.suiService.closeSUIWindow(owner, 0); - createCodeWindow(owner, target); - } - }); - window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { - @SuppressWarnings("unchecked") - @Override - public void process(SWGObject owner, int eventType, Vector returnList) { - core.suiService.closeSUIWindow(owner, 0); - } - }); - core.suiService.openSUIWindow(window); + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + //final BuildingObject building = (BuildingObject) core.objectService.getObject(target.getParentId()); + // harvester.getStfFilename(); installation_n .getTemplate(); + + if (building.getItemsList().size()>0){ + ((CreatureObject) owner).sendSystemMessage("@player_structure:clear_building_for_delete", (byte)1); } + String displayname = "@installation_n:"+building.getStfName(); + if (building.getCustomName()!=null) + displayname = building.getCustomName(); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", displayname); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:confirm_destruction_d1 " + + "@player_structure:confirm_destruction_d2 " + + "\n \n @player_structure:confirm_destruction_d3a " + + "\\#32CD32 @player_structure:confirm_destruction_d3b \\#FFFFFF " + + "@player_structure:confirm_destruction_d4 "); + if (building.getConditionDamage()<20 && building.getMaintenanceAmount()<3000){ + window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#BB0000 @player_structure:can_redeed_no_suffix \\#FFFFFF ",1 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_confirmation \\#32CD32 @player_structure:can_redeed_yes_suffix \\#FFFFFF ",1 ); + } + if (building.getConditionDamage()<20){ + window.addListBoxMenuItem("@player_structure:redeed_condition \\#BB0000 " + building.getConditionDamage() + " \\#FFFFFF ",1 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_condition \\#32CD32 " + building.getConditionDamage() + " \\#FFFFFF ",1 ); + } + if (building.getMaintenanceAmount()<0){ + window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#BB0000 " + (int)building.getMaintenanceAmount() + " \\#FFFFFF ",2 ); + } else { + window.addListBoxMenuItem("@player_structure:redeed_maintenance \\#32CD32 " + (int)building.getMaintenanceAmount() + " \\#FFFFFF ",2 ); + } + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + createCodeWindow(owner, target); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + public void createCodeWindow(SWGObject owner, TangibleObject target) { - - final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); - //final BuildingObject building = (BuildingObject)target; - // harvester.getStfFilename(); installation_n .getTemplate(); - Random rnd = new Random(); - final int confirmCode = 100000 + rnd.nextInt(900000); - final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); - window.setProperty("bg.caption.lblTitle:Text", "@player_structure:confirm_destruction_t"); - window.setProperty("Prompt.lblPrompt:Text", "@player_structure:your_structure_prefix " + - "\\#32CD32 @player_structure:will_redeed_confirm \\#FFFFFF "+ - "@player_structure:will_redeed_suffix " + - "\n \n Code: " + confirmCode); - - window.setProperty("btnOk:visible", "True"); - window.setProperty("btnCancel:visible", "True"); - window.setProperty("btnOk:Text", "@yes"); - window.setProperty("btnCancel:Text", "@no"); - Vector returnList = new Vector(); - returnList.add("txtInput:LocalText"); - - window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { - @SuppressWarnings("unchecked") - @Override - public void process(SWGObject owner, int eventType, Vector returnList) { - CreatureObject crafter = (CreatureObject)owner; - core.suiService.closeSUIWindow(owner, 0); - if (returnList.get(0).equals(""+confirmCode)){ - // handle creation of correct deed in player inventory - PlayerObject player = (PlayerObject) crafter.getSlottedObject("ghost"); - String deedTemplate = building.getDeedTemplate(); - Player_House_Deed deed = (Player_House_Deed)core.objectService.createObject(deedTemplate, owner.getPlanet()); - if(player.getLotsRemaining()+deed.getLotRequirement()>10){ - // Something went wrong or hacking attempt - crafter.sendSystemMessage("Structure can't be redeeded. Maximum lot count exceeded.",(byte)1); - return; - } - - deed.setStructureTemplate(building.getTemplate()); - deed.setSurplusMaintenance((int)building.getMaintenanceAmount()); - deed.setAttributes(); - - SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(building.getObjectID()); - owner.getClient().getSession().write(destroyObjectMsg.serialize()); - core.objectService.destroyObject(building.getObjectID()); - - SWGObject ownerInventory = owner.getSlottedObject("inventory"); - ownerInventory.add(deed); - - if(player.getLotsRemaining()+deed.getLotRequirement()<=10) - player.setLotsRemaining(player.getLotsRemaining()+deed.getLotRequirement()); - - crafter.sendSystemMessage("@player_structure:processing_destruction",(byte)1); - crafter.sendSystemMessage("@player_structure:deed_reclaimed",(byte)1); - - } else { - crafter.sendSystemMessage("@player_structure:incorrect_destroy_code",(byte)1); + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + //final BuildingObject building = (BuildingObject)target; + Random rnd = new Random(); + final int confirmCode = 100000 + rnd.nextInt(900000); + final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:confirm_destruction_t"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:your_structure_prefix " + + "\\#32CD32 @player_structure:will_redeed_confirm \\#FFFFFF "+ + "@player_structure:will_redeed_suffix " + + "\n \n Code: " + confirmCode); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + returnList.add("txtInput:LocalText"); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject crafter = (CreatureObject)owner; + core.suiService.closeSUIWindow(owner, 0); + if (returnList.get(0).equals(""+confirmCode)){ + // handle creation of correct deed in player inventory + PlayerObject player = (PlayerObject) crafter.getSlottedObject("ghost"); + String deedTemplate = building.getDeedTemplate(); + + Player_House_Deed deed = (Player_House_Deed)core.objectService.createObject(deedTemplate, owner.getPlanet()); + if(player.getLotsRemaining()+deed.getLotRequirement()>10){ + // Something went wrong or hacking attempt + crafter.sendSystemMessage("Structure can't be redeeded. Maximum lot count exceeded.",(byte)1); + return; } - - } - }); - window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { - @SuppressWarnings("unchecked") - @Override - public void process(SWGObject owner, int eventType, Vector returnList) { - core.suiService.closeSUIWindow(owner, 0); - } - }); - core.suiService.openSUIWindow(window); + + deed.setStructureTemplate(building.getTemplate()); + deed.setSurplusMaintenance((int)building.getMaintenanceAmount()); + deed.setAttributes(); + + SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(building.getObjectID()); + owner.getClient().getSession().write(destroyObjectMsg.serialize()); + core.objectService.destroyObject(building.getObjectID()); + + SWGObject ownerInventory = owner.getSlottedObject("inventory"); + ownerInventory.add(deed); + + if(player.getLotsRemaining()+deed.getLotRequirement()<=10) + player.setLotsRemaining(player.getLotsRemaining()+deed.getLotRequirement()); + + crafter.sendSystemMessage("@player_structure:processing_destruction",(byte)1); + crafter.sendSystemMessage("@player_structure:deed_reclaimed",(byte)1); + + } else { + crafter.sendSystemMessage("@player_structure:incorrect_destroy_code",(byte)1); + } + + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void createPayMaintenanceSUIPage(SWGObject owner, TangibleObject target) { + CreatureObject creature = (CreatureObject) owner; + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + final SUIWindow window = core.suiService.createSUIWindow("Script.transfer", owner, target, 10); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:select_amount"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:select_maint_amount" + + "\n \n @player_structure:current_maint_pool : " + (int)building.getMaintenanceAmount()); + + window.setProperty("msgPayMaintenance", "transaction.txtInputFrom"); + + window.setProperty("transaction.lblFrom:Text", "@player_structure:total_funds"); + window.setProperty("transaction.lblTo:Text", "@player_structure:to_pay"); + window.setProperty("transaction.lblFrom", "@player_structure:total_funds"); + window.setProperty("transaction.lblTo", "@player_structure:to_pay"); + + window.setProperty("transaction.lblStartingFrom:Text", ""+creature.getCashCredits()); + window.setProperty("transaction.lblStartingTo:Text", "0"); + + window.setProperty("transaction:InputFrom", "555555"); + window.setProperty("transaction:InputTo", "666666"); + + window.setProperty("transaction:txtInputFrom", ""+creature.getCashCredits()); + window.setProperty("transaction:txtInputTo", "1"); + window.setProperty("transaction.txtInputFrom:Text", ""+creature.getCashCredits()); + window.setProperty("transaction.txtInputTo:Text", "" + "0"); + + window.setProperty("transaction.ConversionRatioFrom", "1"); + window.setProperty("transaction.ConversionRatioTo", "0"); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@ok"); + window.setProperty("btnCancel:Text", "@cancel"); + + Vector returnList = new Vector(); + returnList.add("transaction.txtInputFrom:Text"); + returnList.add("transaction.txtInputTo:Text"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject crafter = (CreatureObject)owner; + crafter.setCashCredits(crafter.getCashCredits() - Integer.parseInt(returnList.get(1))); + building.setMaintenanceAmount(building.getMaintenanceAmount()+Float.parseFloat(returnList.get(1))); + String displayname = "the structure"; + if (building.getCustomName()!=null) + displayname = building.getCustomName(); + crafter.sendSystemMessage("You successfully make a payment of " + Integer.parseInt(returnList.get(1)) + " credits to " + displayname + ".", (byte) 0); + core.suiService.closeSUIWindow(owner, 0); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void createRenameSUIPage(SWGObject owner, TangibleObject target) { + final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); + Vector returnList = new Vector(); + returnList.add("txtInput:LocalText"); + final TangibleObject outerSurveyTool = target; + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.housingService.handleSetName((CreatureObject)owner, (TangibleObject)outerSurveyTool,returnList.get(0)); + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void handleSetName(CreatureObject owner, TangibleObject target,String name) { + + ((BuildingObject) target).setBuildingName(name,owner); + } + + public void createStatusSUIPage(SWGObject owner, TangibleObject target) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + String displayname = "@installation_n:"+building.getStfName(); + if (building.getCustomName()!=null) + displayname = building.getCustomName(); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:structure_status_t"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:structure_name_prompt" + " " + displayname); + String ownerName = owner.getCustomName(); + if (ownerName.length()>0){ + String[] helper = ownerName.split(" "); + ownerName = helper[0]; } + + String maintenancePool_string = ""+(int)building.getMaintenanceAmount(); + int hourlyMaintenance = building.getBMR(); + float totalNumberOfHours = (float)building.getMaintenanceAmount()/hourlyMaintenance; + float minuteFraction = ((totalNumberOfHours * 100) % 100) / 100; + int nDays = (int)totalNumberOfHours / 24; + float difference = totalNumberOfHours % 24; + int nHours = (int)difference; + int nMinutes = (int)(minuteFraction *60); + maintenancePool_string += " (" + nDays + " days, " + nHours + " hours, " + nMinutes + " minutes)"; + + window.addListBoxMenuItem("@player_structure:owner_prompt" + " " + ownerName, 0); + if (building.getPrivacy()==BuildingObject.PRIVATE) + window.addListBoxMenuItem("@player_structure:structure_private", 1); + else + window.addListBoxMenuItem("@player_structure:structure_public", 1); + window.addListBoxMenuItem("@player_structure:condition_prompt" + " " + target.getConditionDamage()+"%", 2); + window.addListBoxMenuItem("@player_structure:maintenance_pool_prompt " + maintenancePool_string, 3); + window.addListBoxMenuItem("@player_structure:maintenance_rate_prompt " + building.getBMR() + " cr/h", 4); // @player_structure:credits_per_hour + window.addListBoxMenuItem("@player_structure:maintenance_mods_prompt", 5); + window.addListBoxMenuItem("@player_structure:items_in_building_prompt " + building.getItemsList().size(), 6); + window.addListBoxMenuItem("@player_structure:total_house_storage " + building.getMaximumStorageCapacity(), 7); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@ok"); + window.setProperty("btnCancel:Text", "@cancel"); + Vector returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @SuppressWarnings("unchecked") + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void declareResidency(SWGObject owner, TangibleObject target) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + building.setResidency((CreatureObject)owner); + //owner.setResidence(); + } + + public void handleListAllItems(SWGObject owner, TangibleObject target) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + String displayname = "@installation_n:"+building.getStfName(); + if (building.getCustomName()!=null) + displayname = building.getCustomName(); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:find_items_find_all_house_items"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:find_items_prompt"); + + Vector itemList = building.getItemsList(); + + for (int i=0;i returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + + + } + + public void handleDeleteAllItems(SWGObject owner, TangibleObject target) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + //building.getItemsList().clear(); + // confirmation needed + confirmDeleteAllItems(owner, target); + } + + public void confirmDeleteAllItems(SWGObject owner, TangibleObject target) { + + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + + Random rnd = new Random(); + final int confirmCode = 100000 + rnd.nextInt(900000); + final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:confirm_destruction_t"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:delete_all_items_d " + + "@player_structure:delete_all_items_prompt " + + "\n \n Code: " + confirmCode); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + returnList.add("txtInput:LocalText"); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + CreatureObject ownerC = (CreatureObject)owner; + core.suiService.closeSUIWindow(owner, 0); + if (returnList.get(0).equals(""+confirmCode)){ + confirmDeleteAllItems2ndStage(ownerC,building); + } else { + ownerC.sendSystemMessage("@player_structure:incorrect_destroy_code",(byte)1); + } + + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void confirmDeleteAllItems2ndStage(final CreatureObject ownerC, BuildingObject building) { + + final SUIWindow window = core.suiService.createMessageBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", ownerC, building, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:confirm_destruction_t"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:delete_all_items_second_d"); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@yes"); + window.setProperty("btnCancel:Text", "@no"); + Vector returnList = new Vector(); + + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + for (TangibleObject del : building.getItemsList()){ + core.objectService.destroyObject(del); + } + building.getItemsList().clear(); + ownerC.sendSystemMessage("@player_structure:items_deleted",(byte)1); + core.suiService.closeSUIWindow(owner, 0); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void handleFindLostItems(SWGObject owner, TangibleObject target) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + String displayname = "@installation_n:"+building.getStfName(); + if (building.getCustomName()!=null) + displayname = building.getCustomName(); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:find_items_find_all_house_items"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:structure_name_prompt" + " " + displayname); + + Vector itemList = building.getItemsList(); + final Map itemIDMapping = new HashMap(); + + for (int i=0;i returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + + int index = Integer.parseInt(returnList.get(0)); + long foundItemID = (long) itemIDMapping.get(index); + TangibleObject foundItem = (TangibleObject) core.objectService.getObject(foundItemID); + //core.simulationService.transform(foundItem,owner.getPosition()); + foundItem.setPosition(owner.getPosition()); + core.suiService.closeSUIWindow(owner, 0); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + + + } + + public void handleSearchForItems(SWGObject owner, TangibleObject target) { + // Spawning the structure terminal outside makes it display the correct radial + core.staticService.spawnObject("object/tangible/terminal/shared_terminal_player_structure.iff", "tatooine", 0L, 3525.0F, 4.0F, -4800.0F, 0.70F, 0.71F); + // I assume that childobject does not get a radial somehow + + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + final SUIWindow window = core.suiService.createInputBox(2,"@player_structure:structure_status","@player_structure:structure_name_prompt", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:find_items_search_keyword_title"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:find_items_search_keyword_prompt"); + + window.setProperty("btnOk:visible", "True"); + window.setProperty("btnCancel:visible", "True"); + window.setProperty("btnOk:Text", "@ok"); + window.setProperty("btnCancel:Text", "@cancel"); + Vector returnList = new Vector(); + returnList.add("txtInput:LocalText"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + + String itemSearchName = (String) returnList.get(0); + Vector allItems = building.getItemsList(); + Vector foundItems = new Vector(); + + for (TangibleObject obj : allItems){ + String searchAttribute=obj.getCustomName(); + if (searchAttribute==null) + searchAttribute=obj.getTemplate(); + if (searchAttribute.toLowerCase().contains(itemSearchName.toLowerCase())){ + foundItems.add(obj); + } + } + if (foundItems.size()>0){ + ((CreatureObject) owner).sendSystemMessage("@player_structure:find_items_search_list_title", (byte) 1); + displayFoundItems(owner, target, foundItems); + } else { + ((CreatureObject) owner).sendSystemMessage("@player_structure:find_items_search_not_found", (byte) 1); + } + core.suiService.closeSUIWindow(owner, 0); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void displayFoundItems(SWGObject owner, TangibleObject target, Vector foundItems) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + final SUIWindow window = core.suiService.createSUIWindow("Script.listBox", owner, target, 0); + window.setProperty("bg.caption.lblTitle:Text", "@player_structure:find_items_search_keyword_title"); + window.setProperty("Prompt.lblPrompt:Text", "@player_structure:find_items_search_list_prompt"); + + Vector itemList = building.getItemsList(); + + final Map itemIDMapping = new HashMap(); + + for (int i=0;i returnList = new Vector(); + returnList.add("List.lstList:SelectedRow"); + window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { + @Override + public void process(SWGObject owner, int eventType, Vector returnList) { + core.suiService.closeSUIWindow(owner, 0); + } + }); + core.suiService.openSUIWindow(window); + } + + public void handlePermissionEntry(CreatureObject owner, TangibleObject target) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + String listName = "ENTRY"; + building.setPermissionEntry(listName,owner); + } + + public void handlePermissionBan(CreatureObject owner, TangibleObject target) { + final BuildingObject building = (BuildingObject) target.getAttachment("housing_parentstruct"); + String listName = "BAN"; + building.setPermissionBan(listName,owner); + } + + public void handlePermissionListModify(CreatureObject owner, SWGObject target, String commandArgs){ + + String[] commandSplit = commandArgs.split(" "); + if (commandSplit.length==3){ + if (core.characterService.playerExists(commandSplit[2]) && + core.characterService.getPlayerOID(commandSplit[2])>0){ + long playerOID = core.characterService.getPlayerOID(commandSplit[2]); + if (commandSplit[2].equals("ENTRY")){ + + if (commandSplit[0].equals("add")){ + ((BuildingObject)target).addPlayerToEntryList(owner, playerOID, commandSplit[2]); + } + if (commandSplit[0].equals("remove")){ + ((BuildingObject)target).removePlayerFromEntryList(owner, playerOID, commandSplit[2]); + } + } + if (commandSplit[2].equals("BAN")){ + + if (commandSplit[0].equals("add")){ + ((BuildingObject)target).addPlayerToBanList(owner, playerOID, commandSplit[2]); + } + if (commandSplit[0].equals("remove")){ + ((BuildingObject)target).removePlayerFromBanList(owner, playerOID, commandSplit[2]); + } + } + } else { + owner.sendSystemMessage(commandSplit[2]+ " is an invalid player name", (byte) 0); // modify_list_invalid_player %NO is an invalid player name. + } + } + if (commandSplit.length==2){ + owner.sendSystemMessage("No name was entered", (byte) 0); + } + + } + + public void addItemToHouseItemList(TangibleObject item, SWGObject container){ + BuildingObject building = (BuildingObject) container.getContainer(); + building.getItemsList().add(item); + } + public String fetchPrivacyString(TangibleObject object){ + final BuildingObject building = (BuildingObject) object.getAttachment("housing_parentstruct"); + return building.getPrivacyString(); + } + + public String fetchStringFromCastedClass(SWGObject object, String classToCastTo, String methodName){ + return tools.JythonUtilities.fetchStringFromCastedClass(object,classToCastTo,methodName); + } @Override public void insertOpcodes(Map arg0, From 18c184ea79809edab54e544c9bf097a290ff73df Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Sat, 12 Apr 2014 03:04:17 +0200 Subject: [PATCH 70/79] Cleanup --- options.cfg | 4 +- .../radial/structure_management_terminal.py | 4 +- src/services/housing/HousingService.java | 37 +++++++++---------- 3 files changed, 20 insertions(+), 25 deletions(-) diff --git a/options.cfg b/options.cfg index cb743c88..5a3a7f8e 100644 --- a/options.cfg +++ b/options.cfg @@ -1,3 +1,3 @@ -LOAD.SNAPSHOT_OBJECTS=0 -LOAD.BUILDOUT_OBJECTS=0 +LOAD.SNAPSHOT_OBJECTS=1 +LOAD.BUILDOUT_OBJECTS=1 LOAD.RESOURCE.SYSTEM=1 \ No newline at end of file diff --git a/scripts/radial/structure_management_terminal.py b/scripts/radial/structure_management_terminal.py index 914133ef..b6e7ae3a 100644 --- a/scripts/radial/structure_management_terminal.py +++ b/scripts/radial/structure_management_terminal.py @@ -2,14 +2,12 @@ from resources.common import RadialOptions from protocol.swg import ResourceListForSurveyMessage from services.sui.SUIService import MessageBoxType from services.sui.SUIWindow import Trigger -from tools import JythonUtilities from java.util import Vector import sys def createRadial(core, owner, target, radials): #(byte parentId, short optionId, byte optionType, String description) radials.clear() - owner.sendSystemMessage('target template ' + target.getTemplate(),1) radials.add(RadialOptions(0, 7, 0, 'Examine')) radials.add(RadialOptions(0, 78, 0, '@player_structure:management')) radials.add(RadialOptions(0, 117, 0, '@player_structure:permissions')) @@ -18,7 +16,7 @@ def createRadial(core, owner, target, radials): radials.add(RadialOptions(2, 129, 0, '@player_structure:management_pay')) radials.add(RadialOptions(2, 50, 0, '@base_player:set_name')) radials.add(RadialOptions(2, 127, 0, '@player_structure:management_residence')) - #radials.add(RadialOptions(2, 125, 0, '@player_structure:management_privacy : ' + core.housingService.fetchPrivacyString(target))) + radials.add(RadialOptions(2, 125, 0, '@player_structure:management_privacy : ' + core.housingService.fetchPrivacyString(target))) radials.add(RadialOptions(2, 171, 0, '@player_structure:find_items_find_all_house_items')) radials.add(RadialOptions(2, 173, 0, '@player_structure:move_first_item')) radials.add(RadialOptions(2, 174, 0, '@player_structure:find_items_search_for_house_items')) diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index 5db53834..e1526ef7 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -70,11 +70,11 @@ public class HousingService implements INetworkDispatch { public void enterStructureMode(CreatureObject actor, TangibleObject deed) { -// if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, actor.getWorldPosition().x, actor.getWorldPosition().z)) -// { -// actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf -// return; -// } + if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, actor.getWorldPosition().x, actor.getWorldPosition().z)) + { + actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf + return; + } if(housingTemplates.containsKey(deed.getTemplate())) { @@ -91,18 +91,18 @@ public class HousingService implements INetworkDispatch { int structureLotCost = houseTemplate.getLotCost(); String structureTemplate = houseTemplate.getBuildingTemplate(); -// if(!houseTemplate.canBePlacedOn(actor.getPlanet().getName())) -// { -// actor.sendSystemMessage("You may not place this structure on this planet.", (byte) 0); // should probably load this from an stf -// return; -// } -// -// if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, positionX, positionZ)) -// { -// actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf -// return; -// } -// + if(!houseTemplate.canBePlacedOn(actor.getPlanet().getName())) + { + actor.sendSystemMessage("You may not place this structure on this planet.", (byte) 0); // should probably load this from an stf + return; + } + + if(!actor.getClient().isGM() && !core.terrainService.canBuildAtPosition(actor, positionX, positionZ)) + { + actor.sendSystemMessage("You may not place a structure here.", (byte) 0); // should probably load this from an stf + return; + } + // Lot stuff if(!actor.getPlayerObject().deductLots(structureLotCost)) { @@ -753,9 +753,6 @@ public class HousingService implements INetworkDispatch { return building.getPrivacyString(); } - public String fetchStringFromCastedClass(SWGObject object, String classToCastTo, String methodName){ - return tools.JythonUtilities.fetchStringFromCastedClass(object,classToCastTo,methodName); - } @Override public void insertOpcodes(Map arg0, From 1601c214e3ef1bde942ec6f75a0708d25154fc4e Mon Sep 17 00:00:00 2001 From: Light2 Date: Sat, 12 Apr 2014 15:23:14 +0200 Subject: [PATCH 71/79] minor changes --- .../AcceptAuctionResponseMessage.java | 21 ++++++++++++++++++ .../AuctionItemDescriptionMessage.java | 21 ++++++++++++++++++ .../AuctionQueryHeadersMessage.java | 21 ++++++++++++++++++ .../AuctionQueryHeadersResponseMessage.java | 21 ++++++++++++++++++ .../BidAuctionMessage.java | 21 ++++++++++++++++++ .../BidAuctionResponseMessage.java | 21 ++++++++++++++++++ .../CancelLiveAuctionMessage.java | 21 ++++++++++++++++++ .../CancelLiveAuctionResponseMessage.java | 21 ++++++++++++++++++ .../CommoditiesItemTypeListResponse.java | 22 +++++++++++++++++++ .../CommoditiesResourceTypeListResponse.java | 22 +++++++++++++++++++ .../CreateAuctionMessage.java | 21 ++++++++++++++++++ .../CreateImmediateAuctionMessage.java | 21 ++++++++++++++++++ .../GetAuctionDetails.java | 21 ++++++++++++++++++ .../GetAuctionDetailsResponse.java | 21 ++++++++++++++++++ .../IsVendorOwnerMessage.java | 21 ++++++++++++++++++ .../IsVendorOwnerResponseMessage.java | 21 ++++++++++++++++++ .../ItemSoldMessage.java | 21 ++++++++++++++++++ .../RetrieveAuctionItemMessage.java | 21 ++++++++++++++++++ .../RetrieveAuctionItemResponseMessage.java | 21 ++++++++++++++++++ src/services/bazaar/AuctionItem.java | 21 ++++++++++++++++++ src/services/bazaar/BazaarService.java | 21 ++++++++++++++++++ src/services/command/CommandService.java | 13 +++++++---- 22 files changed, 452 insertions(+), 4 deletions(-) diff --git a/src/protocol/swg/auctionManagerClientListener/AcceptAuctionResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/AcceptAuctionResponseMessage.java index 669132ff..49aae248 100644 --- a/src/protocol/swg/auctionManagerClientListener/AcceptAuctionResponseMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/AcceptAuctionResponseMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; diff --git a/src/protocol/swg/auctionManagerClientListener/AuctionItemDescriptionMessage.java b/src/protocol/swg/auctionManagerClientListener/AuctionItemDescriptionMessage.java index 957118e1..bdb7e95e 100644 --- a/src/protocol/swg/auctionManagerClientListener/AuctionItemDescriptionMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/AuctionItemDescriptionMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; diff --git a/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersMessage.java b/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersMessage.java index 1436f459..14f345ba 100644 --- a/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.io.UnsupportedEncodingException; diff --git a/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java index 71eea176..4c2776c9 100644 --- a/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import org.apache.mina.core.buffer.IoBuffer; diff --git a/src/protocol/swg/auctionManagerClientListener/BidAuctionMessage.java b/src/protocol/swg/auctionManagerClientListener/BidAuctionMessage.java index 21492348..ea769785 100644 --- a/src/protocol/swg/auctionManagerClientListener/BidAuctionMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/BidAuctionMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import org.apache.mina.core.buffer.IoBuffer; diff --git a/src/protocol/swg/auctionManagerClientListener/BidAuctionResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/BidAuctionResponseMessage.java index da1bccc8..2ff213ef 100644 --- a/src/protocol/swg/auctionManagerClientListener/BidAuctionResponseMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/BidAuctionResponseMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; diff --git a/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionMessage.java b/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionMessage.java index 64685acf..cc3705a1 100644 --- a/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import org.apache.mina.core.buffer.IoBuffer; diff --git a/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionResponseMessage.java index 8b72042c..d820f45b 100644 --- a/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionResponseMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/CancelLiveAuctionResponseMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; diff --git a/src/protocol/swg/auctionManagerClientListener/CommoditiesItemTypeListResponse.java b/src/protocol/swg/auctionManagerClientListener/CommoditiesItemTypeListResponse.java index bb2a915b..d299a44e 100644 --- a/src/protocol/swg/auctionManagerClientListener/CommoditiesItemTypeListResponse.java +++ b/src/protocol/swg/auctionManagerClientListener/CommoditiesItemTypeListResponse.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; @@ -18,6 +39,7 @@ public class CommoditiesItemTypeListResponse extends SWGMessage { @Override public IoBuffer serialize() { + // TODO: research how categories work String galaxy = NGECore.getInstance().getGalaxyName(); IoBuffer result = IoBuffer.allocate(14 + galaxy.length()).order(ByteOrder.LITTLE_ENDIAN); result.putShort((short) 2); diff --git a/src/protocol/swg/auctionManagerClientListener/CommoditiesResourceTypeListResponse.java b/src/protocol/swg/auctionManagerClientListener/CommoditiesResourceTypeListResponse.java index c55b4726..f898ade4 100644 --- a/src/protocol/swg/auctionManagerClientListener/CommoditiesResourceTypeListResponse.java +++ b/src/protocol/swg/auctionManagerClientListener/CommoditiesResourceTypeListResponse.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; @@ -36,6 +57,7 @@ public class CommoditiesResourceTypeListResponse extends SWGMessage { result.putInt(479); result.putLong(0); + // wrong struct, TODO: research resNames.forEach(s -> result.put(getAsciiString(s))); int size = result.position(); diff --git a/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java b/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java index 159e911b..cdabef34 100644 --- a/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.io.UnsupportedEncodingException; diff --git a/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java b/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java index ce961680..33307c41 100644 --- a/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.io.UnsupportedEncodingException; diff --git a/src/protocol/swg/auctionManagerClientListener/GetAuctionDetails.java b/src/protocol/swg/auctionManagerClientListener/GetAuctionDetails.java index 127d3450..946c0a06 100644 --- a/src/protocol/swg/auctionManagerClientListener/GetAuctionDetails.java +++ b/src/protocol/swg/auctionManagerClientListener/GetAuctionDetails.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import org.apache.mina.core.buffer.IoBuffer; diff --git a/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java b/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java index 27fe7f85..4fe23725 100644 --- a/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java +++ b/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import org.apache.mina.core.buffer.IoBuffer; diff --git a/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerMessage.java b/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerMessage.java index 9492eb87..35b3b498 100644 --- a/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import org.apache.mina.core.buffer.IoBuffer; diff --git a/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerResponseMessage.java index 9f3e4aeb..cfc73637 100644 --- a/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerResponseMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/IsVendorOwnerResponseMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; diff --git a/src/protocol/swg/auctionManagerClientListener/ItemSoldMessage.java b/src/protocol/swg/auctionManagerClientListener/ItemSoldMessage.java index 3ff53489..6c22d1a1 100644 --- a/src/protocol/swg/auctionManagerClientListener/ItemSoldMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/ItemSoldMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; diff --git a/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemMessage.java b/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemMessage.java index 486d475c..af2f0c0c 100644 --- a/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import org.apache.mina.core.buffer.IoBuffer; diff --git a/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemResponseMessage.java index dbd39f46..2d883695 100644 --- a/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemResponseMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/RetrieveAuctionItemResponseMessage.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; diff --git a/src/services/bazaar/AuctionItem.java b/src/services/bazaar/AuctionItem.java index 1eef0858..8b134e97 100644 --- a/src/services/bazaar/AuctionItem.java +++ b/src/services/bazaar/AuctionItem.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package services.bazaar; import com.sleepycat.je.Environment; diff --git a/src/services/bazaar/BazaarService.java b/src/services/bazaar/BazaarService.java index 4d765826..1700aa64 100644 --- a/src/services/bazaar/BazaarService.java +++ b/src/services/bazaar/BazaarService.java @@ -1,3 +1,24 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * This File is part of NGECore2. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program. If not, see . + * + * Using NGEngine to work with NGECore2 is making a combined work based on NGEngine. + * Therefore all terms and conditions of the GNU Lesser General Public License cover the combination. + ******************************************************************************/ package services.bazaar; import java.nio.ByteOrder; diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 82345d06..a215c548 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -76,7 +76,7 @@ public class CommandService implements INetworkDispatch { return false; } - if (command.getCharacterAbility().length() > 0 && !actor.hasAbility(command.getCharacterAbility())) { + if (command.getCharacterAbility().length() > 0 && !actor.hasAbility(command.getCharacterAbility()) && command.getGodLevel() < 1) { return false; } @@ -111,7 +111,7 @@ public class CommandService implements INetworkDispatch { //return false; } } - + switch (command.getTargetType()) { case 0: // Target Not Used For This Command break; @@ -138,7 +138,7 @@ public class CommandService implements INetworkDispatch { target = actor; } - if (target != actor && target instanceof CreatureObject) { + if (target != actor && target instanceof CreatureObject && actor.getClient() != null) { return false; } @@ -571,6 +571,11 @@ public class CommandService implements INetworkDispatch { public BaseSWGCommand registerCombatCommand(String name) { return getCommandByName(name); } public BaseSWGCommand registerCommand(String name) { return getCommandByName(name); } - public BaseSWGCommand registerGmCommand(String name) { return getCommandByName(name); } + public BaseSWGCommand registerGmCommand(String name) { + BaseSWGCommand command = getCommandByName(name); + if(command != null) + command.setGodLevel(5); + return command; + } } From 5594515cb4f739adb42f782179dac3096d5444d4 Mon Sep 17 00:00:00 2001 From: Light2 Date: Sat, 12 Apr 2014 17:19:52 +0200 Subject: [PATCH 72/79] Cleanup + persistence fix --- odb/auction/placeholder.txt | 0 scripts/commands/transferitemmisc.py | 2 +- .../objects/building/BuildingObject.java | 18 ++++++++++------- .../objects/harvester/HarvesterObject.java | 20 +++++++++---------- .../installation/InstallationObject.java | 4 ++-- src/services/housing/HousingService.java | 1 - src/services/resources/HarvesterService.java | 6 ++---- src/services/sui/SUIService.java | 5 +++-- 8 files changed, 29 insertions(+), 27 deletions(-) create mode 100644 odb/auction/placeholder.txt diff --git a/odb/auction/placeholder.txt b/odb/auction/placeholder.txt new file mode 100644 index 00000000..e69de29b diff --git a/scripts/commands/transferitemmisc.py b/scripts/commands/transferitemmisc.py index c398a980..dbe46f8a 100644 --- a/scripts/commands/transferitemmisc.py +++ b/scripts/commands/transferitemmisc.py @@ -14,7 +14,7 @@ def run(core, actor, target, commandString): if actorContainer != None and (container.getTemplate() == "object/cell/shared_cell.iff") & core.housingService.getPermissions(actor, actorContainer): target.getContainer().transferTo(actor, container, target) core.simulationService.teleport(target, actor.getPosition(), Quaternion(1,0,0,0), containerID) - core.housingService.addItemToHouseItemList(target,actorContainer) + #core.housingService.addItemToHouseItemList(target,actorContainer) return elif actorContainer != None and container.getTemplate() == "object/cell/shared_cell.iff": actor.sendSystemMessage("You do not have permission to access that container!", 0) diff --git a/src/resources/objects/building/BuildingObject.java b/src/resources/objects/building/BuildingObject.java index 1598b374..502ebef4 100644 --- a/src/resources/objects/building/BuildingObject.java +++ b/src/resources/objects/building/BuildingObject.java @@ -43,7 +43,7 @@ import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Entity(version=5) +@Entity(version=6) public class BuildingObject extends TangibleObject implements IPersistent { @NotPersistent @@ -58,7 +58,6 @@ public class BuildingObject extends TangibleObject implements IPersistent { private byte privacy=(byte)0; public static byte PRIVATE = (byte)0; public static byte PUBLIC = (byte)1; - private Vector itemsList = new Vector(); private short maximumStorageCapacity=0; private Vector entryList = new Vector(); // Preferably the OIDs should be stored, because of name changes private Vector banList = new Vector(); @@ -150,13 +149,11 @@ public class BuildingObject extends TangibleObject implements IPersistent { } public Vector getItemsList() { - return itemsList; + Vector items = new Vector(); + getCells().forEach(c -> c.viewChildren(c, true, false, (item) -> items.add((TangibleObject) item))); + return items; } - public void setItemsList(Vector itemsList) { - this.itemsList = itemsList; - } - public short getMaximumStorageCapacity() { return maximumStorageCapacity; } @@ -238,4 +235,11 @@ public class BuildingObject extends TangibleObject implements IPersistent { txn = env.beginTransaction(null, null); txn.setLockTimeout(500, TimeUnit.MILLISECONDS); } + + public Vector getCells() { + Vector cells = new Vector(); + this.viewChildren(this, true, false, (cell) -> cells.add((CellObject) cell)); + return cells; + } + } diff --git a/src/resources/objects/harvester/HarvesterObject.java b/src/resources/objects/harvester/HarvesterObject.java index 5626ce35..b10755f2 100644 --- a/src/resources/objects/harvester/HarvesterObject.java +++ b/src/resources/objects/harvester/HarvesterObject.java @@ -125,7 +125,7 @@ public class HarvesterObject extends InstallationObject { private byte resourceUpdateCount; private Vector adminList = new Vector(); private Vector hopperList = new Vector(); - private SWGObject owner; + private long owner; private float currentHarvestedCountFloat=0.0F; private String deedTemplate; @@ -192,7 +192,7 @@ public class HarvesterObject extends InstallationObject { public void activateHarvester(CreatureObject owner){ activated = true; - this.setOwner(owner); + this.setOwner(owner.getObjectID()); owner.getClient().getSession().write(messageBuilder.buildHINO3Delta(this,(byte)1)); owner.getClient().getSession().write(messageBuilder.buildHINO7ActivateDelta2(this)); } @@ -335,12 +335,12 @@ public class HarvesterObject extends InstallationObject { } - public SWGObject getOwner() { + public long getOwner() { return owner; } - public void setOwner(SWGObject owner) { + public void setOwner(long owner) { this.owner = owner; } @@ -388,11 +388,11 @@ public class HarvesterObject extends InstallationObject { } public void deActivate(){ - owner.getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); } public void placeHarvester(){ - owner.getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); } public static void createAndPlaceHarvester(SWGObject object){ @@ -487,14 +487,14 @@ public class HarvesterObject extends InstallationObject { public void createNewHopperContainer(){ Vector planetResourcesVector = NGECore.getInstance().resourceService.getSpawnedResourcesByPlanetAndHarvesterType(this.getPlanetId(),this.getHarvester_type()); - ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); - ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINO7Delta(this,(byte)1)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildHINO7Delta(this,(byte)1)); } public void continueHopperContainer(){ Vector planetResourcesVector = NGECore.getInstance().resourceService.getSpawnedResourcesByPlanetAndHarvesterType(this.getPlanetId(),this.getHarvester_type()); - ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHarvesterGetResourceData(this, owner, planetResourcesVector)); - ((CreatureObject)this.getOwner()).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildHarvesterGetResourceData(this, NGECore.getInstance().objectService.getObject(owner), planetResourcesVector)); + NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); } @Override diff --git a/src/resources/objects/installation/InstallationObject.java b/src/resources/objects/installation/InstallationObject.java index 5a3870e7..3392e5fd 100644 --- a/src/resources/objects/installation/InstallationObject.java +++ b/src/resources/objects/installation/InstallationObject.java @@ -21,15 +21,15 @@ ******************************************************************************/ package resources.objects.installation; +import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.Persistent; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; - import resources.objects.tangible.TangibleObject; -@Persistent(version=0) +@Entity(version=0) public class InstallationObject extends TangibleObject { public InstallationObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index e1526ef7..5ee88004 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -544,7 +544,6 @@ public class HousingService implements INetworkDispatch { for (TangibleObject del : building.getItemsList()){ core.objectService.destroyObject(del); } - building.getItemsList().clear(); ownerC.sendSystemMessage("@player_structure:items_deleted",(byte)1); core.suiService.closeSUIWindow(owner, 0); } diff --git a/src/services/resources/HarvesterService.java b/src/services/resources/HarvesterService.java index 11c17dfe..93e076c9 100644 --- a/src/services/resources/HarvesterService.java +++ b/src/services/resources/HarvesterService.java @@ -787,12 +787,12 @@ public class HarvesterService implements INetworkDispatch { public void updateHarvester(HarvesterObject harvester){ - + CreatureObject owner = (CreatureObject)core.objectService.getObject(harvester.getOwner()); + if(harvester.isActivated()) { // Check maintenance and power if (harvester.getMaintenanceAmount()<=0){ - CreatureObject owner = (CreatureObject)harvester.getOwner(); owner.sendSystemMessage("The installation is lacking maintenance.", (byte) 0); // ToDo: Send mail harvester.deactivateHarvester(owner); @@ -800,7 +800,6 @@ public class HarvesterService implements INetworkDispatch { } if (harvester.getPowerLevel()<=0 && !harvester.isGenerator()){ - CreatureObject owner = (CreatureObject)harvester.getOwner(); owner.sendSystemMessage("The installation is lacking power.", (byte) 0); // ToDo: Send mail harvester.deactivateHarvester(owner); @@ -840,7 +839,6 @@ public class HarvesterService implements INetworkDispatch { int oldStackCount = hopperContainer.getStackCount(); int newStackCount = (int) (harvester.getCurrentHarvestedCountFloat()); - CreatureObject owner = (CreatureObject)harvester.getOwner(); if (newStackCount>oldStackCount){ for (ResourceContainerObject iterContainer : outputHopperContent){ if (iterContainer.getReferenceID()==hopperContainer.getReferenceID()){ diff --git a/src/services/sui/SUIService.java b/src/services/sui/SUIService.java index b49cf67f..0e76c325 100644 --- a/src/services/sui/SUIService.java +++ b/src/services/sui/SUIService.java @@ -46,6 +46,7 @@ import resources.common.FileUtilities; import resources.common.ObjControllerOpcodes; import resources.common.Opcodes; import resources.common.RadialOptions; +import resources.objects.creature.CreatureObject; import resources.objects.harvester.HarvesterObject; import services.sui.SUIWindow.SUICallback; import services.sui.SUIWindow.Trigger; @@ -86,8 +87,8 @@ public class SUIService implements INetworkDispatch { HarvesterObject harvester = (HarvesterObject) target; Vector admins = harvester.getAdminList(); Vector hoppers = harvester.getHopperList(); - - if (harvester.getOwner()==owner && !admins.contains(owner.getCustomName())){ + CreatureObject creature = (CreatureObject) core.objectService.getObject(harvester.getOwner()); + if (creature == owner && !admins.contains(owner.getCustomName())){ admins.add(owner.getCustomName()); } From cc45a337bc2f94db99d60a44a98e6ae685735975 Mon Sep 17 00:00:00 2001 From: Light2 Date: Sat, 12 Apr 2014 18:31:37 +0200 Subject: [PATCH 73/79] more cleanup + fixes Harvesters and house terminal work now --- .gitignore | 1 + .../objects/building/BuildingObject.java | 12 +- .../objects/harvester/HarvesterObject.java | 104 +----------------- .../installation/InstallationObject.java | 6 + src/services/housing/HousingService.java | 2 - src/services/object/ObjectService.java | 12 +- src/services/resources/HarvesterService.java | 101 ++++++++++++++--- src/services/sui/SUIService.java | 6 +- 8 files changed, 116 insertions(+), 128 deletions(-) diff --git a/.gitignore b/.gitignore index 8560d241..63147709 100644 --- a/.gitignore +++ b/.gitignore @@ -60,6 +60,7 @@ odb/chatRooms/je.info.* odb/resourcehistory/je.info.* odb/resourceroots/je.info.* odb/resources/je.info.* +odb/auction/je.info.* # External tool builders .externalToolBuilders/ diff --git a/src/resources/objects/building/BuildingObject.java b/src/resources/objects/building/BuildingObject.java index 502ebef4..2c3d0db4 100644 --- a/src/resources/objects/building/BuildingObject.java +++ b/src/resources/objects/building/BuildingObject.java @@ -150,7 +150,10 @@ public class BuildingObject extends TangibleObject implements IPersistent { public Vector getItemsList() { Vector items = new Vector(); - getCells().forEach(c -> c.viewChildren(c, true, false, (item) -> items.add((TangibleObject) item))); + getCells().forEach(c -> c.viewChildren(c, true, false, (item) -> { + if(!(item instanceof CreatureObject)) + items.add((TangibleObject) item); + })); return items; } @@ -237,8 +240,11 @@ public class BuildingObject extends TangibleObject implements IPersistent { } public Vector getCells() { - Vector cells = new Vector(); - this.viewChildren(this, true, false, (cell) -> cells.add((CellObject) cell)); + final Vector cells = new Vector(); + this.viewChildren(this, true, false, (obj) -> { + if(obj instanceof CellObject) + cells.add((CellObject) obj); + }); return cells; } diff --git a/src/resources/objects/harvester/HarvesterObject.java b/src/resources/objects/harvester/HarvesterObject.java index b10755f2..7fe12cbb 100644 --- a/src/resources/objects/harvester/HarvesterObject.java +++ b/src/resources/objects/harvester/HarvesterObject.java @@ -394,97 +394,7 @@ public class HarvesterObject extends InstallationObject { public void placeHarvester(){ NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildResourceHarvesterActivatePageMessage(this)); } - - public static void createAndPlaceHarvester(SWGObject object){ - CreatureObject actor = (CreatureObject) object.getAttachment("Owner"); - - String structureTemplate = (String)object.getAttachment("Deed_StructureTemplate"); - HarvesterObject harvester = (HarvesterObject) NGECore.getInstance().objectService.createObject(structureTemplate, actor.getPlanet()); - long objectId = harvester.getObjectID(); - - Vector adminList = harvester.getAdminList(); - String[] fullName = ((CreatureObject)actor).getCustomName().split(" "); - adminList.add(fullName[0]); - harvester.setAdminList(adminList); - // Set BER and outputhopper capacity here, take it from deed - harvester.setBER((int)object.getAttachment("Deed_BER")); - harvester.setSpecRate((int)(1.5F*(int)object.getAttachment("Deed_BER"))); - harvester.setOutputHopperCapacity((int)object.getAttachment("Deed_Capacity")); - harvester.setDeedTemplate((String)object.getAttachment("Deed_DeedTemplate")); - if ((int)object.getAttachment("Deed_SurplusMaintenance")>0){ - harvester.setMaintenanceAmount((int)object.getAttachment("Deed_SurplusMaintenance")); - } - if ((int)object.getAttachment("Deed_SurplusPower")>0){ - harvester.setPowerLevel((int)object.getAttachment("Deed_SurplusPower")); - } - - // build harvester - int resCRC = CRC.StringtoCRC(structureTemplate); - float positionY = NGECore.getInstance().terrainService.getHeight(actor.getPlanetId(), object.getPosition().x, object.getPosition().z); - SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(objectId, object.getOrientation().x, object.getOrientation().y, object.getOrientation().z, object.getOrientation().w, object.getPosition().x, positionY, object.getPosition().z, resCRC, (byte) 0); - actor.getClient().getSession().write(createObjectMsg.serialize()); - tools.CharonPacketUtils.printAnalysis(createObjectMsg.serialize()); - - harvester.setPosition(new Point3D(object.getPosition().x,positionY, object.getPosition().z)); - - resources.objects.installation.InstallationMessageBuilder messenger = new resources.objects.installation.InstallationMessageBuilder((InstallationObject)harvester); - actor.getClient().getSession().write(messenger.buildBaseline3((InstallationObject)harvester)); - SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(harvester.getObjectID()); - actor.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); - tools.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); - - PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); - WaypointObject constructionWaypoint = (WaypointObject)NGECore.getInstance().objectService.createObject("object/waypoint/shared_world_waypoint_blue.iff", actor.getPlanet(), harvester.getPosition().x, 0 ,harvester.getPosition().z); - String displayname = "@installation_n:"+harvester.getStfName(); - constructionWaypoint.setName(displayname); - constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); - constructionWaypoint.setPosition(new Point3D(object.getPosition().x,0, object.getPosition().z)); - player.waypointAdd(constructionWaypoint); - constructionWaypoint.setPosition(new Point3D(object.getPosition().x,0, object.getPosition().z)); - constructionWaypoint.setActive(true); - constructionWaypoint.setColor((byte)1); - constructionWaypoint.setStringAttribute("", ""); - player.waypointAdd(constructionWaypoint); - constructionWaypoint.setName(displayname); - constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); - player.setLastSurveyWaypoint(constructionWaypoint); - - List attachments = new ArrayList(); - WaypointAttachment attachment = new WaypointAttachment(); - attachment.active = true; - attachment.cellID = constructionWaypoint.getCellId(); - attachment.color = (byte)1; - attachment.name = displayname; - attachment.planetCRC = engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName()); - attachment.positionX = object.getPosition().x; - attachment.positionY = 0; - attachment.positionZ = object.getPosition().z; - attachments.add(attachment); - - // remove constructor - NGECore.getInstance().objectService.destroyObject(object); - SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(object.getObjectID()); - actor.getClient().getSession().write(destroyObjectMsg.serialize()); - - // ToDo: waypoint attachment fix - Date date = new Date(); - Mail constructionNotificationMail = new Mail(); - constructionNotificationMail.setSenderName("Structure Service"); - constructionNotificationMail.setSubject("Your structure"); - constructionNotificationMail.setRecieverId(actor.getObjectID()); - constructionNotificationMail.setTimeStamp((int) (date.getTime() / 1000)); - constructionNotificationMail.setMailId(NGECore.getInstance().chatService.generateMailId()); - String message = "Your construction is ready"; - constructionNotificationMail.setMessage(message); - constructionNotificationMail.setStatus(Mail.NEW); - constructionNotificationMail.setAttachments(attachments); - //NGECore.getInstance().chatService.sendPersistentMessage(actor.getClient(), constructionNotificationMail); - NGECore.getInstance().chatService.storePersistentMessage(constructionNotificationMail); - NGECore.getInstance().chatService.sendPersistentMessageHeader(actor.getClient(), constructionNotificationMail); - - } - public void createNewHopperContainer(){ Vector planetResourcesVector = NGECore.getInstance().resourceService.getSpawnedResourcesByPlanetAndHarvesterType(this.getPlanetId(),this.getHarvester_type()); NGECore.getInstance().objectService.getObject(owner).getClient().getSession().write(messageBuilder.buildHINOBaseline7(this, planetResourcesVector)); @@ -506,16 +416,10 @@ public class HarvesterObject extends InstallationObject { return; } - destination.getSession().write(messageBuilder.buildBaseline3()); - destination.getSession().write(messageBuilder.buildBaseline6()); - destination.getSession().write(messageBuilder.buildBaseline8()); - destination.getSession().write(messageBuilder.buildBaseline9()); + destination.getSession().write(installationMessageBuilder.buildBaseline3(this)); + //destination.getSession().write(installationMessageBuilder.buildBaseline6(this)); + //destination.getSession().write(installationMessageBuilder.buildBaseline8()); + //destination.getSession().write(installationMessageBuilder.buildBaseline9()); - if(getPvPBitmask() != 0) { - UpdatePVPStatusMessage upvpm = new UpdatePVPStatusMessage(getObjectID()); - upvpm.setFaction(UpdatePVPStatusMessage.factionCRC.Neutral); - upvpm.setStatus(getPvPBitmask()); - destination.getSession().write(upvpm.serialize()); - } } } diff --git a/src/resources/objects/installation/InstallationObject.java b/src/resources/objects/installation/InstallationObject.java index 3392e5fd..856eeb59 100644 --- a/src/resources/objects/installation/InstallationObject.java +++ b/src/resources/objects/installation/InstallationObject.java @@ -24,6 +24,7 @@ package resources.objects.installation; import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.Persistent; +import engine.clients.Client; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; @@ -35,4 +36,9 @@ public class InstallationObject extends TangibleObject { public InstallationObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ super(objectID, planet, template, position, orientation); } + + @Override + public void sendBaselines(Client destination) { + + } } \ No newline at end of file diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index 5ee88004..e375abe0 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -276,8 +276,6 @@ public class HousingService implements INetworkDispatch { deed.setSurplusMaintenance((int)building.getMaintenanceAmount()); deed.setAttributes(); - SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(building.getObjectID()); - owner.getClient().getSession().write(destroyObjectMsg.serialize()); core.objectService.destroyObject(building.getObjectID()); SWGObject ownerInventory = owner.getSlottedObject("inventory"); diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index ca22a7fc..aba0b902 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -54,6 +54,7 @@ import org.python.core.Py; import org.python.core.PyObject; import com.sleepycat.je.Transaction; +import com.sleepycat.je.TransactionConfig; import com.sleepycat.persist.EntityCursor; import com.sleepycat.persist.model.Entity; import com.sleepycat.persist.model.PrimaryKey; @@ -976,7 +977,8 @@ public class ObjectService implements INetworkDispatch { CrcStringTableVisitor crcTable = ClientFileManager.loadFile("misc/object_template_crc_string_table.iff", CrcStringTableVisitor.class); List persistentBuildings = new ArrayList(); Map duplicate = new HashMap(); - + Transaction txn = core.getDuplicateIdODB().getEnvironment().beginTransaction(null, null); + for (int i = 0; i < buildoutTable.getRowCount(); i++) { String template; @@ -1055,15 +1057,17 @@ public class ObjectService implements INetworkDispatch { newObjectId = core.getDuplicateIdODB().get(key, String.class, DuplicateId.class).getObjectId(); } else { newObjectId = generateObjectID(); - Transaction txn = core.getDuplicateIdODB().getEnvironment().beginTransaction(null, null); core.getDuplicateIdODB().put(new DuplicateId(key, newObjectId), String.class, DuplicateId.class, txn); - txn.commitSync(); } duplicate.put(objectId, newObjectId); objectId = newObjectId; } - + if(txn.isValid()) { + System.out.println("Committed doid transaction."); + txn.commitSync(); + } + List containers = new ArrayList(); SWGObject object; if(objectId != 0 && containerId == 0) { diff --git a/src/services/resources/HarvesterService.java b/src/services/resources/HarvesterService.java index 93e076c9..6caccdd1 100644 --- a/src/services/resources/HarvesterService.java +++ b/src/services/resources/HarvesterService.java @@ -21,8 +21,11 @@ ******************************************************************************/ package services.resources; +import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.Date; +import java.util.List; import java.util.Map; import java.util.Random; import java.util.Vector; @@ -30,6 +33,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; + import protocol.swg.EnterStructurePlacementModeMessage; import protocol.swg.SceneCreateObjectByCrc; import protocol.swg.SceneDestroyObject; @@ -53,6 +57,8 @@ import resources.objects.resource.ResourceContainerObject; import resources.objects.resource.ResourceRoot; import resources.objects.tangible.TangibleObject; import resources.objects.waypoint.WaypointObject; +import services.chat.Mail; +import services.chat.WaypointAttachment; import services.sui.SUIWindow; import services.sui.SUIWindow.SUICallback; import services.sui.SUIWindow.Trigger; @@ -383,8 +389,6 @@ public class HarvesterService implements INetworkDispatch { deed.setSurplusPower((int)harvester.getPowerLevel()); deed.setAttributes(); - SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(harvester.getObjectID()); - owner.getClient().getSession().write(destroyObjectMsg.serialize()); core.objectService.destroyObject(harvester.getObjectID()); SWGObject crafterInventory = owner.getSlottedObject("inventory"); @@ -557,9 +561,7 @@ public class HarvesterService implements INetworkDispatch { int containerEnergy = containerVector.get(i).getStackCount(); if (containerEnergy <= deductedEnergy){ deductedEnergy -= containerEnergy; - playerInventory._remove(containerVector.get(i)); - SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(containerVector.get(i).getObjectID()); - owner.getClient().getSession().write(destroyObjectMsg.serialize()); + playerInventory.remove(containerVector.get(i)); } else { containerEnergy -= deductedEnergy; containerVector.get(i).setStackCount(containerEnergy,(CreatureObject)owner); @@ -888,17 +890,9 @@ public class HarvesterService implements INetworkDispatch { // destroy deed TangibleObject playerInventory = (TangibleObject) actor.getSlottedObject("inventory"); - playerInventory._remove(usedDeed); - SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(usedDeed.getObjectID()); - actor.getClient().getSession().write(destroyObjectMsg.serialize()); + playerInventory.remove(usedDeed); - int resCRC = CRC.StringtoCRC(constructorTemplate); - SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(installation.getObjectID(), quaternion.x, quaternion.y, quaternion.z, quaternion.w, posX, positionY, posZ, resCRC, (byte) 0); - actor.getClient().getSession().write(createObjectMsg.serialize()); - tools.CharonPacketUtils.printAnalysis(createObjectMsg.serialize()); - SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(installation.getObjectID()); - actor.getClient().getSession().write(sceneEndBaselinesMsg.serialize()); - tools.CharonPacketUtils.printAnalysis(sceneEndBaselinesMsg.serialize()); + core.simulationService.add(installation, posX, posZ, true); PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); player.setLotsRemaining(player.getLotsRemaining()-(int)((Harvester_Deed)usedDeed).getLotRequirement()); @@ -907,8 +901,81 @@ public class HarvesterService implements INetworkDispatch { } } - public void placeHarvester(SWGObject object){ - HarvesterObject.createAndPlaceHarvester(object); + public void placeHarvester(SWGObject object) { + CreatureObject actor = (CreatureObject) object.getAttachment("Owner"); + + String structureTemplate = (String)object.getAttachment("Deed_StructureTemplate"); + HarvesterObject harvester = (HarvesterObject) NGECore.getInstance().objectService.createObject(structureTemplate, actor.getPlanet()); + long objectId = harvester.getObjectID(); + + Vector adminList = harvester.getAdminList(); + //String[] fullName = ((CreatureObject)actor).getCustomName().split(" "); + adminList.add(actor.getCustomName()); + // Set BER and outputhopper capacity here, take it from deed + harvester.setBER((int)object.getAttachment("Deed_BER")); + harvester.setSpecRate((int)(1.5F*(int)object.getAttachment("Deed_BER"))); + harvester.setOutputHopperCapacity((int)object.getAttachment("Deed_Capacity")); + harvester.setDeedTemplate((String)object.getAttachment("Deed_DeedTemplate")); + if ((int)object.getAttachment("Deed_SurplusMaintenance")>0){ + harvester.setMaintenanceAmount((int)object.getAttachment("Deed_SurplusMaintenance")); + } + if ((int)object.getAttachment("Deed_SurplusPower")>0){ + harvester.setPowerLevel((int)object.getAttachment("Deed_SurplusPower")); + } + + + // build harvester + float positionY = NGECore.getInstance().terrainService.getHeight(actor.getPlanetId(), object.getPosition().x, object.getPosition().z); + harvester.setPosition(new Point3D(object.getPosition().x,positionY, object.getPosition().z)); + core.simulationService.add(harvester, harvester.getPosition().x, harvester.getPosition().x, true); + + + PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); + WaypointObject constructionWaypoint = (WaypointObject)NGECore.getInstance().objectService.createObject("object/waypoint/shared_world_waypoint_blue.iff", actor.getPlanet(), harvester.getPosition().x, 0 ,harvester.getPosition().z); + String displayname = "@installation_n:"+harvester.getStfName(); + constructionWaypoint.setName(displayname); + constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); + constructionWaypoint.setPosition(new Point3D(object.getPosition().x,0, object.getPosition().z)); + player.waypointAdd(constructionWaypoint); + constructionWaypoint.setPosition(new Point3D(object.getPosition().x,0, object.getPosition().z)); + constructionWaypoint.setActive(true); + constructionWaypoint.setColor((byte)1); + constructionWaypoint.setStringAttribute("", ""); + player.waypointAdd(constructionWaypoint); + constructionWaypoint.setName(displayname); + constructionWaypoint.setPlanetCRC(engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName())); + player.setLastSurveyWaypoint(constructionWaypoint); + + List attachments = new ArrayList(); + WaypointAttachment attachment = new WaypointAttachment(); + attachment.active = true; + attachment.cellID = constructionWaypoint.getCellId(); + attachment.color = (byte)1; + attachment.name = displayname; + attachment.planetCRC = engine.resources.common.CRC.StringtoCRC(actor.getPlanet().getName()); + attachment.positionX = object.getPosition().x; + attachment.positionY = 0; + attachment.positionZ = object.getPosition().z; + attachments.add(attachment); + + // remove constructor + NGECore.getInstance().objectService.destroyObject(object); + + // ToDo: waypoint attachment fix + Date date = new Date(); + Mail constructionNotificationMail = new Mail(); + constructionNotificationMail.setSenderName("Structure Service"); + constructionNotificationMail.setSubject("Your structure"); + constructionNotificationMail.setRecieverId(actor.getObjectID()); + constructionNotificationMail.setTimeStamp((int) (date.getTime() / 1000)); + constructionNotificationMail.setMailId(NGECore.getInstance().chatService.generateMailId()); + String message = "Your construction is ready"; + constructionNotificationMail.setMessage(message); + constructionNotificationMail.setStatus(Mail.NEW); + constructionNotificationMail.setAttachments(attachments); + //NGECore.getInstance().chatService.sendPersistentMessage(actor.getClient(), constructionNotificationMail); + NGECore.getInstance().chatService.storePersistentMessage(constructionNotificationMail); + NGECore.getInstance().chatService.sendPersistentMessageHeader(actor.getClient(), constructionNotificationMail); } diff --git a/src/services/sui/SUIService.java b/src/services/sui/SUIService.java index 0e76c325..a2d32ce3 100644 --- a/src/services/sui/SUIService.java +++ b/src/services/sui/SUIService.java @@ -99,13 +99,15 @@ public class SUIService implements INetworkDispatch { if (! admins.contains(owner.getCustomName()) && hoppers.contains(owner.getCustomName())){ // authorized for hopper // change radialOptions to hopper access - harvester.setAttachment("radial_filename", "harvesterHopper"); + core.scriptService.callScript("scripts/radial/", "harvesterHopper", "createRadial", core, owner, target, request.getRadialOptions()); + sendRadial(owner, target, request.getRadialOptions(), request.getRadialCount()); + return; } } if(target.getGrandparent() != null && target.getGrandparent().getAttachment("structureAdmins") != null) { - if(core.housingService.getPermissions(owner, target.getContainer())) + if(core.housingService.getPermissions(owner, target.getContainer()) && !getRadialFilename(target).equals("structure_management_terminal")) { core.scriptService.callScript("scripts/radial/", "moveable", "createRadial", core, owner, target, request.getRadialOptions()); sendRadial(owner, target, request.getRadialOptions(), request.getRadialCount()); From b7bcf89361a272ea6cfc62efedefd5108bf42fc3 Mon Sep 17 00:00:00 2001 From: Light2 Date: Sat, 12 Apr 2014 21:20:05 +0200 Subject: [PATCH 74/79] Fixed issue where non combat commands would be created as a combat command --- scripts/commands/setspeed.py | 1 - src/services/command/CommandService.java | 29 +++++++++++++----------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/scripts/commands/setspeed.py b/scripts/commands/setspeed.py index e5929c25..c73266de 100644 --- a/scripts/commands/setspeed.py +++ b/scripts/commands/setspeed.py @@ -5,6 +5,5 @@ def setup(): def run(core, actor, target, commandString): actor.setSpeedMultiplierBase(float(commandString)) - core.buffService.addBuffToCreature(actor, 'bh_prescience') return \ No newline at end of file diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index a215c548..e18b9535 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -76,7 +76,7 @@ public class CommandService implements INetworkDispatch { return false; } - if (command.getCharacterAbility().length() > 0 && !actor.hasAbility(command.getCharacterAbility()) && command.getGodLevel() < 1) { + if (command.getCharacterAbility().length() > 0 && !actor.hasAbility(command.getCharacterAbility()) && !command.getCharacterAbility().equals("admin")) { return false; } @@ -200,7 +200,7 @@ public class CommandService implements INetworkDispatch { default: break; } - + if (command.shouldCallOnTarget()) { if (target == null || !(target instanceof CreatureObject)) { return false; @@ -211,10 +211,12 @@ public class CommandService implements INetworkDispatch { long warmupTime = (long) (command.getWarmupTime() * 1000F); - try { - Thread.sleep(warmupTime); - } catch (InterruptedException e) { - e.printStackTrace(); + if(warmupTime > 0) { + try { + Thread.sleep(warmupTime); + } catch (InterruptedException e) { + e.printStackTrace(); + } } processCommand(actor, target, command, actionCounter, commandArgs); @@ -316,7 +318,7 @@ public class CommandService implements INetworkDispatch { sub += 5; } - if (hasCharacterAbility || isCombatCommand(commandName)) { + if (/*hasCharacterAbility ||*/ isCombatCommand(commandName)) { CombatCommand command = new CombatCommand(commandName); commandLookup.add(command); return command; @@ -353,15 +355,16 @@ public class CommandService implements INetworkDispatch { } public void processCommand(CreatureObject actor, SWGObject target, BaseSWGCommand command, int actionCounter, String commandArgs) { - actor.addCooldown(command.getCooldownGroup(), command.getCooldown()); - + if(command.getCooldown() > 0) + actor.addCooldown(command.getCooldownGroup(), command.getCooldown()); + if (command instanceof CombatCommand) { processCombatCommand(actor, target, (CombatCommand) command, actionCounter, commandArgs); } else { - if (FileUtilities.doesFileExist("scripts/commands/" + command.getCommandName() + ".py")) { - core.scriptService.callScript("scripts/commands/", command.getCommandName(), "run", core, actor, target, commandArgs); - } else if (FileUtilities.doesFileExist("scripts/commands/combat/" + command.getCommandName() + ".py")) { - core.scriptService.callScript("scripts/commands/combat/", command.getCommandName(), "run", core, actor, target, commandArgs); + if (FileUtilities.doesFileExist("scripts/commands/" + command.getCommandName().toLowerCase() + ".py")) { + core.scriptService.callScript("scripts/commands/", command.getCommandName().toLowerCase(), "run", core, actor, target, commandArgs); + } else if (FileUtilities.doesFileExist("scripts/commands/combat/" + command.getCommandName().toLowerCase() + ".py")) { + core.scriptService.callScript("scripts/commands/combat/", command.getCommandName().toLowerCase(), "run", core, actor, target, commandArgs); } } } From 537390832a597bae81588d342601492466ce9be0 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Sat, 12 Apr 2014 22:44:42 +0200 Subject: [PATCH 75/79] Harvester cleanup syntax error fixed --- src/services/resources/HarvesterService.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/services/resources/HarvesterService.java b/src/services/resources/HarvesterService.java index 6caccdd1..d8e028fc 100644 --- a/src/services/resources/HarvesterService.java +++ b/src/services/resources/HarvesterService.java @@ -903,11 +903,9 @@ public class HarvesterService implements INetworkDispatch { public void placeHarvester(SWGObject object) { CreatureObject actor = (CreatureObject) object.getAttachment("Owner"); - String structureTemplate = (String)object.getAttachment("Deed_StructureTemplate"); HarvesterObject harvester = (HarvesterObject) NGECore.getInstance().objectService.createObject(structureTemplate, actor.getPlanet()); long objectId = harvester.getObjectID(); - Vector adminList = harvester.getAdminList(); //String[] fullName = ((CreatureObject)actor).getCustomName().split(" "); adminList.add(actor.getCustomName()); @@ -927,9 +925,7 @@ public class HarvesterService implements INetworkDispatch { // build harvester float positionY = NGECore.getInstance().terrainService.getHeight(actor.getPlanetId(), object.getPosition().x, object.getPosition().z); harvester.setPosition(new Point3D(object.getPosition().x,positionY, object.getPosition().z)); - core.simulationService.add(harvester, harvester.getPosition().x, harvester.getPosition().x, true); - - + core.simulationService.add(harvester, harvester.getPosition().x, harvester.getPosition().z, true); PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); WaypointObject constructionWaypoint = (WaypointObject)NGECore.getInstance().objectService.createObject("object/waypoint/shared_world_waypoint_blue.iff", actor.getPlanet(), harvester.getPosition().x, 0 ,harvester.getPosition().z); String displayname = "@installation_n:"+harvester.getStfName(); From 6f791819e69e395cfffbdd736176671e210c0346 Mon Sep 17 00:00:00 2001 From: Seefo Date: Sat, 12 Apr 2014 18:13:11 -0400 Subject: [PATCH 76/79] Fixed some housing bugs and Tusken Raider mobile template - see extended Fixed a housing issue where the structure management terminal would be returned in the item list and could be deleted via the delete all items radial. Fixed item list to display proper names of objects. Fixed the Tusken Raider mobile template to display the proper creature name and changed their default weapons from an E11 and a T21 to a Tusken Rifle. --- scripts/mobiles/tatooine/tusken_raider.py | 7 +++---- src/resources/objects/building/BuildingObject.java | 2 +- src/services/housing/HousingService.java | 3 ++- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/mobiles/tatooine/tusken_raider.py b/scripts/mobiles/tatooine/tusken_raider.py index 8daec628..b2747696 100644 --- a/scripts/mobiles/tatooine/tusken_raider.py +++ b/scripts/mobiles/tatooine/tusken_raider.py @@ -5,7 +5,7 @@ from java.util import Vector def addTemplate(core): mobileTemplate = MobileTemplate() - mobileTemplate.setCreatureName('tuskenraider') + mobileTemplate.setCreatureName('tusken_raider') mobileTemplate.setLevel(90) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(24) @@ -15,8 +15,7 @@ def addTemplate(core): mobileTemplate.setTemplates(templates) weaponTemplates = Vector() - weaponTemplates.add('object/weapon/ranged/rifle/shared_rifle_e11.iff') - weaponTemplates.add('object/weapon/ranged/rifle/shared_rifle_t21.iff') + weaponTemplates.add('object/weapon/ranged/rifle/shared_rifle_tusken.iff') mobileTemplate.setWeaponTemplates(weaponTemplates) @@ -24,5 +23,5 @@ def addTemplate(core): mobileTemplate.setDefaultAttack('rangedShot') mobileTemplate.setAttacks(attacks) - core.spawnService.addMobileTemplate('tuskenraider', mobileTemplate) + core.spawnService.addMobileTemplate('tusken_raider', mobileTemplate) \ No newline at end of file diff --git a/src/resources/objects/building/BuildingObject.java b/src/resources/objects/building/BuildingObject.java index 2c3d0db4..36486462 100644 --- a/src/resources/objects/building/BuildingObject.java +++ b/src/resources/objects/building/BuildingObject.java @@ -151,7 +151,7 @@ public class BuildingObject extends TangibleObject implements IPersistent { public Vector getItemsList() { Vector items = new Vector(); getCells().forEach(c -> c.viewChildren(c, true, false, (item) -> { - if(!(item instanceof CreatureObject)) + if(!(item instanceof CreatureObject) && item.getTemplate() != "object/tangible/terminal/shared_terminal_player_structure.iff") items.add((TangibleObject) item); })); return items; diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index e375abe0..50f0c2c5 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -456,7 +456,8 @@ public class HousingService implements INetworkDispatch { Vector itemList = building.getItemsList(); for (int i=0;i Date: Sun, 13 Apr 2014 00:19:47 +0200 Subject: [PATCH 77/79] fixed #411 --- src/resources/objects/tangible/TangibleObject.java | 3 ++- src/services/command/CommandService.java | 11 +++++++++-- src/services/housing/HousingService.java | 6 ------ 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index f7d120cc..f13faa89 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -375,7 +375,8 @@ public class TangibleObject extends SWGObject { return getPvPBitmask() == 1 || getPvPBitmask() == 2; - } + } else if(attacker.getSlottedObject("ghost") == null) + return true; return getPvPBitmask() == 1 || getPvPBitmask() == 2; } diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index e18b9535..1d55ab34 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -76,7 +76,7 @@ public class CommandService implements INetworkDispatch { return false; } - if (command.getCharacterAbility().length() > 0 && !actor.hasAbility(command.getCharacterAbility()) && !command.getCharacterAbility().equals("admin")) { + if (command.getCharacterAbility().length() > 0 && !actor.hasAbility(command.getCharacterAbility()) && !command.getCharacterAbility().equals("admin") && actor.getClient() != null) { return false; } @@ -134,6 +134,10 @@ public class CommandService implements INetworkDispatch { break; case 2: // Self Only + + if(actor.getClient() == null) + break; + if (target == null) { target = actor; } @@ -173,7 +177,10 @@ public class CommandService implements INetworkDispatch { TangibleObject object = (TangibleObject) target; - if (object.isAttackableBy(actor) || actor.getFactionStatus() < ((CreatureObject) object).getFactionStatus() || (!object.getFaction().equals("") && !object.getFaction().equals(actor.getFaction()))) { + if(object instanceof CreatureObject && actor.getFactionStatus() < ((CreatureObject) object).getFactionStatus()) + return false; + + if (object.isAttackableBy(actor) || (!object.getFaction().equals("") && !object.getFaction().equals(actor.getFaction()))) { return false; } diff --git a/src/services/housing/HousingService.java b/src/services/housing/HousingService.java index e375abe0..59d7cf48 100644 --- a/src/services/housing/HousingService.java +++ b/src/services/housing/HousingService.java @@ -739,12 +739,6 @@ public class HousingService implements INetworkDispatch { } - public void addItemToHouseItemList(TangibleObject item, SWGObject container){ - BuildingObject building = (BuildingObject) container.getContainer(); - building.getItemsList().add(item); - } - - public String fetchPrivacyString(TangibleObject object){ final BuildingObject building = (BuildingObject) object.getAttachment("housing_parentstruct"); return building.getPrivacyString(); From 898d3f6eccabad7b447298f524506f4fa1106059 Mon Sep 17 00:00:00 2001 From: Light2 Date: Sun, 13 Apr 2014 00:43:42 +0200 Subject: [PATCH 78/79] fixed npc permission --- src/services/LootService.java | 2 +- src/services/spawn/SpawnService.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/services/LootService.java b/src/services/LootService.java index 815490e4..a0929b07 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -410,7 +410,7 @@ public class LootService implements INetworkDispatch { if (lootedObject instanceof CreatureObject){ CreatureObject lootedCreature = (CreatureObject) lootedObject; int creatureCL = lootedCreature.getLevel(); - creatureCL = 90; + //creatureCL = 90; int maximalCredits = (int)Math.floor(4*creatureCL + creatureCL*creatureCL*4/100); int minimalCredits = (int)Math.floor(creatureCL*2 + maximalCredits/2); int spanOfCredits = maximalCredits - minimalCredits; diff --git a/src/services/spawn/SpawnService.java b/src/services/spawn/SpawnService.java index dbb967ef..96d45123 100644 --- a/src/services/spawn/SpawnService.java +++ b/src/services/spawn/SpawnService.java @@ -48,6 +48,7 @@ import resources.objects.weapon.WeaponObject; import services.ai.AIActor; import services.ai.LairActor; import engine.resources.container.CreatureContainerPermissions; +import engine.resources.container.StaticContainerPermissions; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; @@ -90,7 +91,7 @@ public class SpawnService { return null; TangibleObject inventory = (TangibleObject) core.objectService.createObject("object/tangible/inventory/shared_character_inventory.iff", creature.getPlanet()); - inventory.setContainerPermissions(CreatureContainerPermissions.CREATURE_CONTAINER_PERMISSIONS); + inventory.setContainerPermissions(StaticContainerPermissions.STATIC_CONTAINER_PERMISSIONS); /*if(mobileTemplate.getCustomWeapon() != null) { From 7e9bb7ede5c331ea0aa500d02e641d8a2cc4ed4b Mon Sep 17 00:00:00 2001 From: Light2 Date: Sun, 13 Apr 2014 01:21:47 +0200 Subject: [PATCH 79/79] Fixed order of item attribute display --- ngengine_public.jar | Bin 26786594 -> 27075260 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ngengine_public.jar b/ngengine_public.jar index ddeff30b0266b2152f9ce74b3cb3a0e8de1e0169..8dbc2777be15419689c4cf12343cae8f365736df 100644 GIT binary patch delta 1162858 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 z z;}ayS)blNVTMMTrKvGAbubwPI#*S`tt2Opyclp`gl)@#Du54hJgzvqek=wqSTtDLi zsU@F(oz8zIfk0ma1b<;~5O4nOmE*bsKQ?MI&GH^;Zvv9!R$BtBay26OS)vmjzexx) z{7JW@6aN#lB+=hKY0v(*icU56vB=bj3!&uq+1ci9c3RWZoQ3a%#8>i|VLC`gBvq;C zi3X-C#DGg{v=aF3MThRbXtXcG8DMsOe>gVANC|vd5>u|Bfq-UAZ`T6acFEDKYqQ=O zPW;%4%Hn+1(z78%>o(DEYCP{rTVxybiU#{#xXK6Wk*jXv6%Bje#;1#R>x=2D>ERB{ z3x12s5;9ppV^sWF5jwS57gSqQ*A=H) z^kZ-ol2 zsZ*$gPy5v7K5JNZQO0^;?-@c*1nqLr*EBv_gAj$=K*R*Y!VNC}iFyoE8r6PiutYR(3(ShhUJH+yXf0)S|`$))k0ajVtVV$(T&Bb0*p~O5_ePH|bI_ ze7C*{Fu)%0B~F1h0+U#p7kB; z&FDSp$X|#My;1vtVk|i!n!;Eyy4jhOS;pW^NEq)~RGKh7U{JJGN-mc5onr{($$)wV zsE>HlKLF7zOdTN8xm9Lf+jVEp@)Hh$sKwiHNO@#RVUJ+!PXkk}5@ly6Ve=!z<)xb|JKUMO-TL3?-7SJU$ z@~MaND*gsq4nuEgy%$sO=2I1>^SgsII2QNF&H^_VR7z4%2;_=TL9=WS_$yC z<0v|}x8<>}`Y<-MH*mDE`O+ikufhQ|wtuzevF!ln1{-SgxSS6=^Du)AdF(y{yNXVi zyq<$Pe!rdI9>8L}gRjxI(VyFC`3~jzpl_|{c?WXXqrB^2eAg(CJFt(VYBk!Ac}$QT zy@;b)HF_~#qO5e_rFa<=Bu6jjsGe3=;1zf!)A=e&8&LHW7HjC7O#`pyq#trCKY!Ao zC{dwK3GPxJ>i(qf;j}7Q5?u8f%4#Tmtx|E2-br8DS`J|<@pxVDvWHM}_p&_R*j^K? zk>l2*xOw|wyd{sf7C22sE{{*P*9Yt6zF>VGpKWg-2*<}xC>ovU_m_Hy*$3O-#)%&tt04eT3J*fE;eD`v7w1lb?vFqTDZ2q8MYl79|&;(9XZ2BdK# z(Yi@t)aScj#K0A1(I}2o2E5R30y5>9jklP!A$ zd0Jxekf6N!_Fy<#(Xf1JEq+%CGVnXHW=V~plKOtzwFZ;HUBN`iK6Huw6U$5{bA2q< zp3r}5v)!M9it077oyl;dq9qn>>5RuiQLyATR|FG#RtGzLx-4LS!n@NPXBgo$tj<&YN!=Y%akLFnmoSzHa1y+wAK%QsP`BaH@yFP&rufa$&;#0%Hc_ZYE4?gDv=wB1zT%-^m|x6j%?^`-xZ2)2=0nN zcq8g#Ex|}rFdpXLcBdz~Cyd$SGw6S&BU0$(9sn5$HCj^TF+n?u`m+_&+$1W1zQtJ8 zkmmFgYGY$@lb`CT!JyTGrks5blh)8$K{)`*>Zn_yjbx=k>jll~h{uw#mRO`BabUN- z7$%a8$0CtXe2ueN4|jfAM;qAGHp1lyT#(WD}o)tmOY`0_HZ;@sLo(Lh`5>TGKZ#j!(;Zd8Be&|Zodv=5$aXh)jVPN30yARbQQpvCDf!NDo>(QTdV z!7DcL!ezQ$#dvm@bP2^_&02TZ3PSM&yW!$APv00yg484-3UWcf)C_-4s5czN%RDuoA@b4fP@3I)Vu>W9d)TB;(WjBHu-->v$z-V2 zqDatr8H3CacroZsLDT!s=!gWnpz>?=mo?Wy%1o}!h-O{}Y5HR(xhZF_==2CbGxq9YXC7lMjU8;X>W zX(fYkfCvmY(%FAbnxkVsu9$92+0fO2anXpS?Xg%Z)8n)D;HFrKof7Ghan8_Od|JH0 zNd>VCp#utDf7bYd#kn>HPCOVhKs11j#(G@b$ohW%iCOM&y-nfSj0=dg*hl(WZL>#BY-8%;XvUVO))}NR~18~9Va&BWX*s>3qt-XId$I4Kaw#PUs)c?pI)S2v!{OvAR&d&8O@7y910uaaaJ8~$Rc-$3X`@wBLHg(#gl6~T2LE6 znv>JR3D+%sesUdgq|cm;Mao&Lwe_0prTZ;e{O@-xZpx-V(4P$YqoA=pi#WYUCSWsc z(x2&dK@)%3eCndCdX6b?h@meYY)P_D5OscfgZ^gFU!8EAPMS$?(%&JG{lQ3QXiXbO z$-3eU92oQuq{sti$kS%~=`H#fOZ(r5WJQDI((J|lL#GXTyH^?kp-bM1z(b+c$ z^-q)CM5kXDkV7gXgp18um^xQcY49{^2Ve*_C{KTL{6f;dc)u)D7`)#EU0sAO>4b0Y zx2++v2i z8g!TWeoH}%g3zi48^;gQ&4QL8dPuo+Y^PD%qLDa#SE9RM%1YrVtnKXlGb>!DN1;JIFB#o z>X?UXy6Rd-kP?$o8NegCK4w@SpVBvMxf9p_@4W&dw3SK0^CvqKpf}0^a&(3arG|a& zBr(?%^Td2aLqzIopXtB@~=ZW*-&$Yh*n`3*ePs`zR zL=|0Qh(!P>(>U@!ae*l=bn?Gt`U=5P*=l56y~2U33)ZXzPutkh3KjK>iv-I5d@&m> zYU4~@=Y&}a4H3K_-+3kW#NtUSSv2fO%DInjE$4(72i6ZMZDkpB>XRE{$#7d&qkVr& zas3bp#s=Xb-=7V!1RW$vurFvVG6XFu8X}t+a^5Bu*?Lnna-qYeVy%_XvLD?D1p05> z!d`?6&RV-+ZSE7B1QBv=(QJy%oEvAsX$2z*Lu`dYW(IOi)KYhg6AN~~*dn&G@OMDN zi!xkM)PZQRfwp2IwK4fErf3z=0@HuGv0AUe>64JV{2F36_U$`R(;1GmhT=?q7{OEQ zlQowVY5GP83FC$--bEj49k&Xwg*23OtkNc9`N4fdHNr?C8+a zE6-S$4M3niE@_HRu62CLm^BDE!~s)WDrUpsB^b#r1f6y_+4dr7;9A*l5o3SZjL#9I zpwbNbGk};mL9?{a-Mwr8E6F6>D(kXwnSHf*pLjnCDe(bBvvd?V&uQe47v%`CIU7Fj zT2p*bT!$K}#mRx(yW6xYzS=&6fa}BJBZjy>{f58qBvafVZiMz&7PItHSasiW&JoLI zpSVfT0+#Wv5PAx&OV!r0!p?sv=j(;ZSRwM9!f>>(3wYYXPZUP5=S)9h*T+rq39ioz z+zY*$u4UnPLi;h4!{TOB+`@IB8BWwi*L4P4lkpI;hFkky$fcoN?cym8QUQOou|ga+ z#i#n*9k#Ny++m74*;=wK;;`B$J_Cv@#XXQt_)Ms2o9$%m>DY;{UlM<7q7gU=c;e0Q z&V0k)ucXUFA^WbFUTOJFL|$mahFJPN!TCe0aWa^;Pu!2%j`;{iptP-Bt{f~eSz_>s z2Q!$dJwuzRA-;qpvllbqz@pK)`xFm}N7(8g6;$~i3Es?p>>gHp^njT1Iv?LC0==}(&CYubTYds`0FC!R(YVi8an ziNTQLX=E7fj`@#ghtn_7T><>LPMKLWKpg9n6Y^sP?VV3#x-vsRZ42+_V2Urlc$Nx$ z;#(jBM9pkz;~w!HQ#{8!g5H0ChyCJ*;zx#fUeNS` zPFoUc3wB15)*4g%Sp3AkoYox!+*$Ubw8{`a6;zSgEHV@@7BqfwO8mkQKSxs1A0tz| z=-ifZ)*FhmBKX9w!1(g&`s$0DcQjP5UdoKWWQyO2-&!PF8rLVL4H#>xn1bJ#;uZ0G zYdIgxb-gMouH%2P*G%yTrb6GYcUm`p=>C%_{w!X1PP9@eEUDqKH%#$Y-i}j@4dM0> z#@jo1;7wEfozq2r7F3-~A}wlXHSvoV#6Q@;{;8kH^dm7tT2M2TSv7TiFCp0qU(iV= zKZ=EwWYSE&5VFOd;qs`r(7|+j0uyHs;135BJXVg%XiR^=Ns=jrgSi`eM<)>1`&XHq zIAyjkzw}DOkXeF?hWhNzls=hl$!BSFe>fhCw(Ea!pJU2GW;V-OgaFKbk+s9}*f7~~1G#K#hiRsqE@#-T zurr?E#BxQ^*@5aSi4Kcis6sNF?6P*M%8^B=FJ*r*yzAL#vssjyvW&AFc8KdkE#c7q zP@MA|A!nN6>*5>OP|h;tYzEic5{V_ivWjsMlhtAqKW!+4AIlZ$1wDQno*8vJ~#4gm#HTY@}WE)}%!Jt;Xq#}IP4DHrj+p16K%VMKjj z3c#ogw^}JDQ_9yZ?2GD(GvUHyHJEaZg!q(xaIxaO5!ZhaKhdybR!-VG23%(Jqs4t& z#ZRN;r7mmeqQ7jJQI32XzV)*lHfU}W{y0)%0j=~C2H}31XS*pVMFeL z=?}cIDfh~K(7LF;A*qf;YMm>W;-aBF5=VkAfr>&-?2|FR&C%pA5|@}VE))D-j=q1Q z?16CIkV1c^+`(!6H7&M?Bn3DoEIcI+kwCc^2p2CBVBFE_e)g0Mq4btG|2CV6&4M;k{@zh@E#mc z+N)TM^9LDcRMG3-E35Hy-mMFVf6pd>;cSXW2ez}SL)F$~+ zQ{KcWd!F@Nv?U(yur3krlOH$bC)h>$6Uksanb;Ig?(xZ+QEtxUg$GS}tFw>~ueMI( zq1#P)h==?bsh?oXNW)7q5c(Y5uk% z(^c|7SAq6L>}OdxKR4wspKgjbTXs#+1L+ z*T-@D9yiOnm;;bj!*Ver8B>RF7s;CcivGHc7sT?l0iRT?iE`1McA{UtD*woO@F#eH zqB@;qzsh>_mjN&AdaZwcUH+9<|Bc@)%Ro&g`Z#dv${#19&gA^UpKz}NFdEZD4*c|@ z9}`u!-466}Mkdm+#>*z3=$!}JB1Qt$uX9mzWFH6cL}J=3 zL8XI-@IJ3-I}2wETK-=?${hFwZfDauf|d?7p*YLi+`dS#eOG^LkQrPzKuVV3Dbo;B zHz?WCOF04JXN-pO!2o;UcSrcGCFgC+A(H^7$T+di42hT?PG@JUVQRRc@}0N*qTyIY zO;<9sCJu8j)d)2bF0Q_A!-o2$JC-&qsjF__`=<04yLD z*LJw5DAS%pd{ciEX{Z`+(l#|gQ1y^O8|b~*9&qLu>KufY0V)CaiMd}*LN=x*sVSzK z${Bu6Ysh`!75(yaJUGKt=W^QPY5Vz0C|U!mVNNldGc#rAb}3=UPVh5S0*dmFTl9DHqY|IylDB+?j8 zhN^~TsTKLk%Q~~pR37C;$69pQeNCpyMW0t~?CINLs)@R9b5Gw+QaOMQ&nErpY8o;m=DRlKjtgi13{ahr-`E_P0s7n3Jd5!{}VJ^JzFf zN1*4YSTFG%D>+6ZOS)-v^D!EGlmaECM`?WNV>EHZ)D%tMq+6wKtK4l>xUJc4Yp&ax z&#iwFtXp`Ls`z{HQMw2x)jXn!S&Gj}P1r^-&%))C4s zOVO%@S>3d*8C0zromD={Gs=668Y_L>)YN~RpA+yMql+uEF}S7DAMl@`oPa+?J5G}4 z5#0!6rzmus!jd*&PV6{ADu*!GO=<2MnS;iam1ZC(MIWflJ3`k5@{ZGWf}WzC zmAQf36y1pNfSIC?pEoR!dxF}yZ^sGRK4#d6TW`ICn)I9zx25RNQ*=j)?!tcers#jj zhzC;ikeYLx9+fx~+>{4=_I9gM^msZ0`FhJhzDq2V@D)La&+KOrc(e$%(-?g2#jkzP zn09DKf~HZDX48IJNSD$Q>cYIsA*A;K{3{`Xs{!)|sFSXx8|Z^{n69HQ(TC|LbUpnH zJ+IJ>^d@~&NV-;-^a(Add$216;D~<-t*-$Gp<7R*C3Wi=`a1NHTi>8(K@Yc1pyh>7 z6`iDSQWo}k$8JrdKhU@6+Yt9`dXc_E&q2%!=>_^OeGh!Z=uY}R{Qy?bNw?Dv>3P_} z4RnBhgwb5kyoY`aiid&He5`p6pFag*CTOx&{tPQmq334u`A?JA^DfObXq|sSO$M}Z z!Wo)Cc?JoC>h*v33E^>v4eBz$w?Q8wIs;uEHuyx{_>kne#Y5W^ME;z9VQcqn^bJGb zOO|$f9PRdW(~FjNdnO*EUsYz=ijl>NVQ9_v1$?a8K1Z{;5iriK+1XmN{cHpus5Fnz zwt(qsb`I;i)@(m(c5Wc&1TBB&K4|v*F}Yf^%L7^VEGX=6(&@_6GXr@&3TxU5dsmOb zHqj`2-iBYdL(qpIx=&LfVOzS3=F;7C5!9`kK1=K9^Y9u+px|GCYTr+n(1SqlA-Wan zdOtl(kJBSiu1BE;57MtGr4{ui?T=n^{mDy?qM~IhDq6qAI^`;*2NZw&z-|>{&dc;W zsAoBSSu3RhnjX|j=>rv=S}C(ZOH3=J9~3ocrOW|c7iy)<#qO3;=DA8~t^65QvQjQ4 z!&b@)gI-KmO4HRJ)}0so>(1M7tO7Rrd$3}~gjZRO#9UYzY>$qXK1#1WPJij9x0>Oq z|9PDLPeBzPr8C?qBszbE$LSPa-Ra{_zuTFkJM*|R-|ZZ(I}5mTwA(oboll5~L~hR{ z^prdyrlxgGv%1br>ngIkN}Vp&4W)IXL}!M&narPNgT{Nr?r=MWvuhxa!S;EZ0)J0WWOeBzy2$-E>@ir4cZ6cNvUPEH1Y_ z{iJSjQFG~pW1t!?XrNk23OtNebbCDCba-f;$5LZ)>P%NnuP7K<0A=tbXUr75xQDY1W{q0Ek-kkabX6EwX11m%{E z6iq2{G5a}8TU=%%UePVKH1j$*sxoy!xZ!|-^N#}~UAd!F4GVw3ESo|Mt6aS%| z;%({@?`VHX%(JL>C2^VP00E(87&$i~Ix;tHIxjK+xfi7RbnbI5a=W*A}voi`Sc zT;)I_ivS5URRkPJGQd#A@Gw;3>O*8Yn5|~DeoR~gmOpfeo`I&{QJb_-QT9=(UkJPfFw zHaVQy5QBq z#zKD}Ea|P5P~03T;7A&+yDdqJ;kKmP>0{y^co7eE(2e3=@mXle^$69U6Q750zewvL z?kiyp&(R2RL|Y$gLT_M(R1IS00)V8XqzDp8e+>CxI&LMraRb{Fo#%c?t{Oy z3@J=(O7MNX42biFQpa&MltPtmkZ{h=K6T8Jj&7~~t zhbz6Dy|A#oDe+}X*yY&Zu|BJhWs>MhZ33mlFFfSSavClxAk|qkSz+iGA)pR^oe&ypp!dtJ1jM;c~sh<$8z9 z^%|S&H3M=jrBpW8d+p4$5UzisDkVKaq@-Sh^h1uq|y;~fenWuoAE zQ1B6Wl^YN*ZcL+~#HFCbrC_25WQ#g+mLG?ie-dK88Gi8~ z#C#h>e28k~VJP=))F|(uW_f3tm^ZteY_`ShrH$~UTqsSVMRKm32ae|>+hIOEZVqUT z&BquEellk&`3Ofy`Nn@xmX1O@xr#w#)EV75fMo$Zg(a9$j*k4-gLf8p$a^(qrZs3& zCiq_p*m$nfw`6cac6PqH)Jbqk?U+_y=4R_Cq$>j+CtGhQcXIXV<+^gcm-BafRb^Hn zt28AS9wHwPKFrHB%Fl?0U4SiL`gz#VeE|0hNGI+`pm~5Q<%55;Sbm9?$%kp3e3UlJ zFVhZ;h2_x!e5sX+`=~{y-4gX>nFgN|zyLzl*CB*;l!w6eb*yzD*YlBfOAYxlhI|}S z<}=vBYbDWXiFZL-pObW-ft>ozgj^P(bg<;|VQ|XoUD_=dHy@K1)&rA^7CQzr!LgQ< ztOZadDY@){2@ij`u4XjrlROT1x?we6rD^g>Sj|&uR#R$2;G?N>1p*RV%_O;!Ubk7w zCU}x!LoODeY84`tMb%cDs&Nh><9i5M4MSO7_OPo)e$MsevouzoNIQ6(i~Tsnyw|bs zSdz9c6a4yxeNrucbDcO0Ck4i%L`}&JPsvR^+gn=towR?8%VF-;!w@=oYr!wGoej{7 z(g2m4TtK(<2lV>@^alX+c>ww&0Q!^n3g|WwvZ-2wjhXf_I(3uVyXCItQguwWrer83 z+aBqI<|!I2f1bwj7?UlK&4y_U6yqn|G8TM30n_kunOu)v<|xa=tQBCXuda z`<45xlqG+C3fjGYcDX-+nvK@f`qGjo5V7dEyh>83>j*8}rf}&iUx7e=j}-qks+NC1 zZu1vJ^*3OXZ&FPDJ&l_Vo11M2A?)mgYj0N1HCm)`#7>L9ZFV`DQ&L)1KFXs~^4h-o z@y|5>n&X0%BR^zU;5qWcI)&oa_129kS|33T;L(3aU1xi{E3gAs@yE*@FIR5+tA=j5 z3Ho${?YC|$1JEh?vBOjr$jSurNcl;8mRWG8+nmPXK-MV0 zeMcaR)iEXSW>Y{}CqD~w;O`^4aGSx>a6)RO!M_4oS~{rkWIlh43}ij*%48Ye-^>3{ zwtRn^M#y&%)ZazIeuhfH`vxUxvr^QeJQPu0N~kQlLiy+><)@of4&ALxdPL{?%dGKqr~HEaB7}7}a$yeIhPIYm@{Bl5)rQ>UeVevG z68FQoTS9NN?RYq&QBqd=1l&EPl`5gNs+6{h~+OxIDB9Zti>9Dz?BhzYn*VMVG_X|4=?}mmDT}A;MgUu&`{J z2KYy|1ee(o^p%uOfX)86M{wF^)p>tuLi4$F`CPhuHeEu#Ab)D_`8L*aXx|1C{2AXF z_P5hC;UU=v+U073(rA~uMV*5*OYs!8`sE?Yb=oiW&E?f1@~I1GxVn(WscM?6YG{V4 zrE}F%nx~f0GPQ!%t2)}MR;J}1+gygW$(I43&@GE0AJVW%RAqKgs%s&!8fv(PMyjskf2>&V9U!5igUIv<-(=i6Rm0Ts!A zz{wlb1hx2={5LS%20Z?c{aae};GVbb`~EzVr)iRlA;wON`OXDC{2{ATg?{QuLtVj|xs--Qdcba8sx;_-bJ(^|b)@)AW#WLQ$wcgec6B~pK>3`_cw2q)<* z@$(x3BvqD{m{5jZJl`7am-UNV)55V(*~+g4BvcL@zsQ&TYC*rv?$I~cL{rNiRe32@ z!0EyG(v%w4;9Oqa=$Kuf%s?R35}%^s;tm=m?xfM;Gc-ZmLzBh5G({Xq3*A#)U74zh z61v4iN%-~QcE&z|vUGpBN?CuX4h1^YgzW?+iD)uiTQs*ug7ETtxw z1Uzu)@Dyqqe@y3(qLeD`^Uy@xPub!@$`ub$9?F&i@hAnvmuZ|hN>fFOip3LDExwZG z7HV7uYg`6vYzDLGJe$D+Dz_P&3PUS}NB8!qbRJkeO*ts_z-@nd25w)*4&1YRU~U}= zmZ_AQxv5*t2Jdri-sgdLlxocJ{FGX-sn5-p_!?M#8Z18pmcId(Pk`l&so%7rU&_v00x@qrm!k1G0WTY7Wap>g*RXbgEEl zuVN?nLh@#9Tt zTCT4y)F?95Xd0u&&{!2n3vTZ9G=g^xB8To%OSIoVrS}kHNh#h)s%2`q1(|9<-x{@E zHR{#|wMkv9Tg_^#+NN9ERZ#8HtyZ;L?a{5hs$IoYhZZ(hmbyeGR3`{{i!1||_P5Xe z&a=M@tndE^P)i302O;XAMkW9Nn^*t@6aWYa2mmMwjh`+Ii~$;-5rK;VBLgT3 zjh`V*i~$;-dIFdM6rW{*ivb^hVuEynL7IRdAcje1LIx%?ab^NUT`P-N*RG%L zVws>=u%T-&Ywz84ZLDn-l>a&Rm6?Pj#C83zKm26ozT59P=YG#Q_ntRC@yk8;1HfoU zHw`$0-cf&KRiMfrEvyRHR(fNFlhxNeBUb~-AZ>+rmA5eH4J|L6UAe-4Ulr59$zX^- zv^)^<7e@TiaD9Y2FncO2pXHCO4o6l_2}J9>v8oydvML<$Gw3v<)*A>F&YCuLGCr3w za7U|Z{J#32Kf<7Jh8m_m76{^0LRIyVh(8o7oM+bXOcs% z(fT5$s&cA1HV_KL#xdxBlG}U=Ll)rVCWn1~4+!X@Ln@>*5V=DZc%UmFfiki4R;Ojn zCaOagbZ5{l%1b$(66@Ab_Ihl318=9Ulnl`C@tgC07#!J|Ph2EE!_oCkVB7i!Q~ zhZN8$)lUZvTpkzz2Wc=67tnfp{H*nce7Jx?&u`r1l= zWWKjDhzv}h5w7wE7kDE9dNwmRcT~~z!#}@r^lL#}@TUXlR zk(lG27g!$h#_CCY8e7yKJ0l^O<)N5=xj#}mrH zK#2~eFqVO5xj!~195v(y_wytVjDrapjBl|W_8(Y>iPS-VDt0h27V}oEB<^@{TTRws z3QWZkZ!G4ot&3T7T=YB9amZpCb(#)`K{;+uZ(UumVP2iTD&P%H#+5Os|BVCxCtRUP zje)~;m;p0!b0U!@2LmW)46<{FSdv+#vZ94XQK<)J!x0+HVUXEs1s&$XJcDKP{LyG2 zjB=WXy@exx%L~1AUPQ^l+Ca!#NIC>%UDYTo51VyMH8_&NA$5^(EL;^17DiVuH&-}0 z9EwH4K~yfY%@v!gm>N2^-e2#hZL-Qw>shG7QLu`;@TljlxW>?)`7 zRXVJHhBdfjRCzc^z&9-tuCHUzHFrqTO6J8PfzWak&*R_(4UT8fb3bIIO@M^K{&n~h zoQRV#8pXnD$jsdRyBkt2A2=Dn13@^2_&xS*MhXb?h&i-=3kAdVEPp}sEB z;ZnE^sfK-(qdA6hZ1ko&RtzlDU?YRU&4gtR78*b?6{Wc-HJMFq19{H`7Cd(8t^(Dt|x|&cr6S^fJgb4j8V>0&uR_B2f+HW&#extT6Kad1;WSb6IAg3G$=q)@BPiXLeHx%hs zy^Z;STK|!_>vVV$oxU~{Jyzf(kn}ocgfuPP>5{c(&^I=FqZ?lQ?}mu`vGNXqz7Jvmr0ghVQ|<1 zWvN5s4p~6NdQFGd;SI9A&0+?BN4LJ*|ITX3R(wl`x1k8toG&~N@r4|;h@m8L5mez_ z9o~cYk@>#xL=;%dg1zTg8IlJQ+5eLH-!ajrReeaSD$?L%l(Ph_CPpIOh8gJ5k}dJ6 z4*!794A7q9ul9$02%uD$WD}@X3$WX81gZHEd`@EV1sS$U<&()?sUi@6RD*v6U+M5Q z>_$GL!4vUfTY}}}9?Q*q+(O^LcN%<)UiAK@I(!d5AP$H8Yho?!6k8pyg&%eJ3HC7P z6j8RTwG_0kT4Q0Gp2Y&9$&WOlUv${VkcL`~H#$p=jary&e8zPqm_(E}6l;TJrJ?PD zv)g~LI#s7IxhhSWId!Ig(Uj40jU65!Ymai>I`fbcNH;7KpVFXHytRf_XS&W(shA9x zncg*a0etFVY4DZCx>!0biED0_!7?@06`LiW@#w4@%R+O}n5emzn;lmeB_^G%&F*2@ ztf$6$B%hGAR#9iYSa0m!=Z~T_+h7rCaBjy07$wK6^dE6C|5xmPLo}^oYJ0cdtS#PS zGh;jA6g#+8Q98^$${^=J`q+UOaH03AMeD1u4caVhF+EvsUT#O7JnYsS z&+yt9ly=OeYR%G0S9a?GZP_!7^r-8=CqtkNW zRcmY_gM&IGmWccey|VY%l;3`o^*bM$lpBD1otuqi({y$i?Ffc$1uLVR!*w=8Un|XHMsD@JH)OIvy{bjR!`EPRYXka^%!tA*&htz463~=O+(YtebN_*9A$hV+B+f$ zUUc~r2+gIGiKp1ICH0YYI0*(tEeghVWU}MP1ZF3HqY2EWQ0i2joyOLp{Zi!(R*{_e z4J(4d=0Enq_mDE0{yLqV&gk4no%>o-U;H~wT_F@>XX@-Mb~bHK)C$I|=8$PZ+`8_M zMzu-as2|yHgKSwjozAjz8DzCQX_-_X2%?sAvGW*ok5)wjbuqgi+t>53bJzuhq!+ev zu(yDJK;UAXT|!4fof4;y>SPETU#7DSY$F<2$TB|}OG8`hWxp(Qa-}YI1#W<0bq&%f-4IyKd zH&~CzL>^69^2${u1ob=ET^hR+U8dHD(pj7}A>QB?4jKgvHg@c2t-Tyer2eBEk>Z^-(eghRi_iSxAT+F2s(a(T2jxdSqNf$U2wBia3X7+4CBEj=_KqRM*)H z>_wE9y86msAX?KxT$7w7hr04-kk{^is*>rZ)WR#I3|{^1(Eoeit|{n$U1x8wH;oIi z!vZn7fBfUme3Bf$lWsj2dq-#QviDGl_`)+$=$9)CZ7#Y}(LcPQJ_(mG?y0AqcCil; zvJAnh@UQZc3tFMDj7~;A*4ZcQQ)6SyTNwxjXND2%hqns$tynB(3)~@}vClPs_D?iv z+peXvFX$YEE+9zX5q-bX+1G40(wA+DCmeCwP`imr5R&D;(Lk&LImo-|Jd1ZXJVF|Od{P6glR-fT zHx0ERAm=@F-jnyDa0s6d2T5MU`M;O!|N0vwHC=-$eRSTJs6zJQM4!*^v(7Td@qRk* zPjc6lj)n|jEsKO}7n;X&T8)MMY!bGwwXxL5)Jqwk58 z(Qu^Fj}YZi`${$N@O(ahRO1CLZb(`&taUz&7a9k(#=e;t3eOTs|G3ZuSq2gU#7cy1putc&V zMiFpq0$-+cFRwJPz-T%#hF_KSbeTJ-L(VRag+SDM0w441hhe&*AfQP?cda(zm}|m zAfc#>hY@GZVO{)K8c(%yaU4?CAg5fsUWG3QeJ;M5;y0@Tm}jhKd6g_rCRbu&iu`IF91BqSi6FsY#qeIfHp_cF=N|$w}LZXL&rJb~B%uqWljbE;R^DBt8t|}uUDN3{2r1PsN*h`ss zF(lrkK&;jqU8!POTtINXmT%Gdwfs6dNsJmXBXs>RsiBSA&$f0PNlhaIKCztoyiw;j z@tc$4J!@)}gLxovHapY!Efn2gZBB2XaANsHx{UPjt^BV#zm0FBGdwg_+P|u8bFvfy z#P7g=j$jYb=|=jvgM_F_=i9AA_KD_=n>wfF_vn0wRYDjRt1(I#zfb4)^9OLpQ0$U| zmqg1XFXG7GA+S_g{`^6mKSaXkwkJ)wkLdhSE7zDX}UN9Vs`F+-LcyX(u)PW;yjla|CZCEQ; z?H>L%e^2M{lPf`dpA!jJ8&{_;j=pS)sWrkCBfPY%k9Gcu6+>yT$$-OuP!OaIV?Hu} zF=J|TS5$^W^-($g?5Ccl_Mhwg3l%mHh|WZGAitDzxU%d%4QiE#NOaI!MLk>o~tF03>-4HV3N$v8)qj!yZZ0%~hwEzX| z(`bmTT$}yy9^Q^c2&5 zfhY}95e@|#Dtuudu1Po<%t1?V_j=9U>1X6s@ORp^El=GFQA zzL|(3fx2M8A0bO!XE%$v3?}|6-QQZcU^;*}f(ATN7Yi&1FDF`4#9+h?kBg&pv4}!E zH8Z-CYA?~n(PAkwDr(h#RzV{}ayu0EL3HD(qC)3sVi|*#zwNl_*V$?U9gZ%G!u2^y zpwRp#>oAAbjeuvkHbI^= z^DmG1>773{gqfRvV!labkmYyV^C&~-;bd$5KIL1A3v_WIL6JwrfJGMuR1}A}SQnRw zb8&{=2-+-D>it2Iq04l!frN}MW6Hdi0E0k$zZohn*TofCNMKtsZXFf5lBy>@lKvt?aEj zU&xOlrF^R{{%V~$P6@}R)JMF=yqVahi`&H=46@NBp@y?js0cWc4^kWcM+d1x7P!P+ z^pcpZgo%Kpg3x_-i6)9N+ph>e{1vsvvrF9FcAapwS!YMvb)vOqo%`CUQ)kveQ@3+< zw1Uo#&_G280$m94e_*q702DCPht1n#6QljZ&1`L}PLi^I6fK@Mf)z|R$AAIcNc1o# z9P@{&=(t_{O&3ql8ycwyigh;Jy96qQG=kC^?<#)|U8MMZIWF-GgYFY5l`*c=ZwWFf z7N{kw+ef`Ur;F#s3x-un+ro&OPS0&EdWv68QudNAUKX$5fB0w*_=5haAs@B-{q9m0 z(=B#}cug0ti#KpsV;!wUGR#RXDfNiA#5VS?cha%f=yZM@aL z62%v*SDCHS5lQKh#7adaA`wzhe5{L4=zK)r7Ig{q$T|_rs%mf(AWZv_VgE#4+niRsR~J94!#*Rx z%q8}rKvD3D8y6}O%x5IDC$rMe>a0NoqgfC{#5~bwUbGQE}aCH zE#8SpRB-9iO%=>{B8&o*CYhp3U8a(ns1Mkpl${VI%r2aFWVsy`BRiuQO`t>Tl8EZ0 z0&7&n0wlZR1WjV44J9Pu7nw_&rp}$WEMpXlH~cV*o!dgw)MH? z|Jmzm`+J)msZ%y&KO!2Ns+5BJySQWzx~htWX0I%n?_U$cO!2WxqW=eO*;n?{WKQx+ z+|7CzI6o3tzT6+tWq*#&ooD{s@@dni&aIezf4C+G9`J3TQ64!!4$>i24yIQu5AZe+ z8jEs>%-3XIGJG_fjxG!2P&%JNWvli$S_Ly(Ble{IUqNYuMguW588=y_w`!%DLWV5V z<#0KIE^g}lA-f`Km)y4Ktk5XpKhCPzy{(G4Eh2t|sn8s6#9JF}?(LcrZ611VWRBf` ze~A>IIYt)i@(@{K*gR;OSogq19lQrNPJb+;rPL$G%5j=J6dBO^C9E#TCs|l3Y(46c z6Xj%0qTiWwpaFC_MNT!2$_;-hH@AbYW2J~XIZc;`N%Sb4Rb&MO$yr>i-mQ^`>vD#i zsd%7X;|b#&4{A-Hv{VE|GP8%e@T0> z4PIfLaL}h@rT>A~i}r($s&+=#6I}o!9u9R3gUkOoaT5EBH_|4m%b2xk6G0?cuu7M! zrTI4YBt@$pt-gt71dAXv9H-0Ut$PJy@4MumnjH!vi7LDlA5mvr)6qaD>GEXjwQu9s zKhBq@>hd(|%Y{n3hJG-}CI5^Zf2j)xqG+qj)3Ky7=tq4WTJDnMhF7D1Z?~5a$ zb&b3*?gfz_b5)#@a^dFrgVn}rR{alt&%=m9lIQ92d|Gkmq$nhs7+oh#(d0!3+^z?E z+X4M7_jvvrAr%rd5J1e}+SCp21fP zcgZW;DIVdHSG7|-(j~8Mr+BnWZfU3ZV3)kEo#G;wY;31^j7#3wPI0kI-rP>{Auf3f z%6OaWM!Nj9y>cYXwsyK7<&t-xUA$khm)`2|thR53P%4ZP`-adZo0|1&-qIx4b$2_( zIIA7)6eGLtYo{35^*}qtf5@%}+bKqNJ={()vg^@yijiH9wNs4j`dc%0v{*ON<;nKS zkuXoU(>=25*=FoAixs=N*tb~LZ5yJV{SF72)t}>s{JSn+A`p|&z;SdJFJIB+tMWC( zv1kli)soGaY~UEVWE$XCsV?7;Z<0lzJU#}~|AWJ9)onHUX(UI8e<7i0eXT!InvRax z>nZXb`JN`a>8E!nxc^^T))Y%#tSTeagatEgYo z@~T%^2M%Yj^FOdl{x~lh8Ar?JYS4dp?Z3I2Kh&=TB$heyKQku(DCQAvlP`36i98lp z6!g|s`n)8DR&vDefB0i$NJGy&RheEYLPg(HrL9FF0R_14Yw$7;epbOFAT zKWOrMG+7gFLm;#&ywYDdLroehdaJ#(4;ys(Z~3DN!LYL!JeBOtm@SRY4UalHa7H-1 zvc9hUH-4HmB&GJB6&gdf-*(9UrR1;A3&i}Tot^UAG)N~lfBvk?FZnji*ozry>_yCT za9w^SzwYdGAYSi5kqtNb(K_LuRf8`8DV2Z;?dq651WtWY@JO-n2 z^~O5$RlYe8Pa0^U8b~)A8Uryn7>bOBj%^0nL{`CrFlGbvD%c5Q;&4b>>Q&I$N_W}} za+@r2X3IDnx&boPx4a5;m2hr`&UyI-O)zOAI7N{&)42h<^k$(6?X* zY*?h8vFYV;xC+0nZGuM3xk)uRyDQup*bcWfe?kq8?T$md5sopsy5vfjPpKW$>2yln zFSo!%m6d4bF`NC0LGPE>!h*azA$tcrxF|1M7UU1jbYyEprH9?B`}AEa&b}QUyBnU? zpu}xdeG#i7OrVm4)|yhJ$=#y|BSzt0z706bVguP=XkxS25_SwUAu!PP`Vvaj z2G4<|FaRnLES4c?RKg;tf}_C?UZ{o@upAno2L6ILbPGN`3@hOg2*DE&hUef|_!y$_ zHPpi%SjDoSfenP?*bq3L4TF=|EI5@dfz#MBSj+ryI;(^A>})ujT@2^2t#Adqe;dDd z!Y1|%T*uzS?@yqSeF`_R-EcG82U~eI+`9eG zO3;F-9M+F;3RC^r0KzpvbUO&Ce?_T5NI?e-;NP-bT%i+bv6$tte1y&hIGh!*p$MV3 zKo%Ru3K7qr;4|59HUdkZ zI|S$A;d{WTQf`H!2!Uq(5^PzjR@1XD?1f$|C4CPp{~7veY^=t{4WF$+f0H|iAI?F0 zU`e;^v~Jm+y^y29n0=4|x&{oB8m!gW1P#V9W;DY*obNXP+54a;xZ9`&un&4eN?WC> zgD(4^YdakvmEW`A8`dK&NnM%nosL@#H-fR-*raU@C$=%ef-Zy3?`rt5WsAtCFR-Ae#D=XHF#Pnj<4mNX< z8=qzuG_g6j^_;sPCEJO6n$25Cp9`^imR4QtF(0O9xvGm(5K7ol#k#REmr!%7u3b$( zE6yrPQnORD&lcW_LFBI2%{eDZ7(`gEO)_9Z! zP=uA1Cpb}=0?M_JAB6a!#*|`ZI?pE zSt*lBBrYQ!vayy(u(6g%V2XAnS1D5@FlCAari@)qsa3dVow(0N(XZg3G^FEhpMfbC z^kY5QYAkg_DPwF6=6P@h-?9cwrQkZgV8>xf$JIQ+j%O#Je=T<=oXh@%Ejn5I*ep8{ zQkD4K2JT;A80WY<_F)HU=FXw*qIM4Et3pnn)y5v%hbG+tDylt=RR<2t=)4aH?_j^( zpwj^=(hh#x+QF<3QbNPLwXN;oleQVUvx%Kj?96hKjiF;smh-G8_Ge42W;sQgvx%Lt zgPpS|gZ-t6f1OW4dQqHRn!zr|&p5ksJKMYg1{&gZJ=RebGT2R&L)~p>TjT8Zg$cOG zBb%DJKtoB%WFF|oQjv3=5kJ#l1WSjBtSeNqOw>4 zjI1?frXN(X?Z|hh;;08ix4qB<5&Q_$zo)bHCfZ$we{JY~Wn=+q_1??k?Cu@xzD2l- zK8xb)frU-%;S!lG^Y3E2vSshP*yC9330mtjEzEn?13auJLVqvl&wAsk`rxYis+Ej3 zMzB{h(q73(dnF_3w-azBy^t<{XD{KbIQ>ACF-zWnwCIFma0~sM7W$!Ss&cZN)x|C& zJ)OYLe{JBKCkfxonpP!`LbnvOcNDs%Ho_H%bQZel*}6iv_1U_CZYNQOLN`5uZY%5u z1Kk!Up_|?e-CS923*8Pj=TwlbCxe^b0^Iaua7#78ZCL`t=Audi_gDRUEn1S78;mv5MPR#Z9?$BNh@uIT2aERtTj*ANWw=k_-EMRpF8w zJ+9{!E_rYzw<%moL0mpZ;gW9Sl2LXdq$nvq7PNhEj132b2nr53Z;3>0R!Lw`y279X zfAmGbVu_)+0H=+f9Z$0$ObE6ADE#6;2jSDfy zwHb2rGuQ`l_R%irW2WNlA6hWY7hG5Df6j91S?=l;G~cs|=*jA`iG4}gneKJCh0ZGS zU|-s1>>o~1=Q7kj;jRKBi_?bUf9ac` zD|Uj;o0*##=h^=Sn5N!(Z&WT9&q=v>W4jY+sU{L2e-mvQR)*qw7;ehx(3{PG32Zh@ zW^=m#S&F?zqg+H+>1aBWYB!1ki)o?po4m(&7;iwi~ zU?F&eh2ed6EPT%*2nMTI8Y=xkf4HrN;077aPC&!_L^hqB%&OTbSb7>htz~~fsK1S^ zXV0@U*$eDk_7&#rW9ReE?83xm=V{hv=V{hv$CSC*F=cLcOqrV;LPE0 zXnRpX_R0SlRU*spJhuBDn7EJb|M%OeK&M0WyIZE3ScVXif%Hf49~$R*CGH)3IJ&;u zp@B|4Fl%H%oR1NjNlpPo^W5&gKD2XKI^fp50`pC7sWx zL!6Lth||Ta-GyqWTeZ{e+Ez{{;}PdtwhPkfD=9Z2nA6G6WS64XcNq+38(=ish!ngW z1@H=3&aQ+Iy9(;r)o=;B2DY#*a2LA{9%0ubMmNF->;_beTM^f9e_<|mn-ZLz2BB>& z;kLDe+tTTnva|&1C_YVT3Ab(0x=q2sloAL{r3PTig|lS*FiwIq7~bd8`Qa!oqv0h! zgU>`3FNVMJS$sA^@p8C^&%wM@2*Kt22tF49{Sr7@`MjNB3(V&8urv)Gfnmxc?gGz4 zKRzGx(v{E^0^f(`e|+a=o*~aiU53x+YkW9Lv&IiqpGN|Ed7J{pO*8XUoD?08Zc|c* zTwWwbHWM{d5J=RVrrbD*n_7OhW{R32I>#PJbX-a2c_nU(_3k!A$79wu<=U*Bk~q|} zrD7OT6WE;IRKZNeGZ)k$1`yBOa6a@^JoCUNNLM^F zfFcFh&v2W;8{GY0v)$(IzY3e<)L5-?u1YYz2?~d1@TGBHk-@9t+`j?bSl9?Tc5XoB zra36rL#nx}aOcfxamT7tU*jOSR9OQ6Q`9jtz)bv`fPV|{?_~U|FseaKK?V<@ z4lL3zQD-G0Rw8C4R#}NPR^m9NO*2vT`;4a_e5k!^iZq(o3ACK7Ol@5TKS@1TV&%kosB;!mNWic@sb|0!t8rmQG-Ww|Kx zR$G=%guY0CT_D)w=tVw-3gKxOz@C9o>{%#c&%+_?MO1~apelR~PG)by8SHJifV~Ts zv-jazfA%5V!afExSWs1bhU)Hfc$0mB_TyJ9h3#ft*f;DT_AScDcj*6qkE-t9>JZxyk8QsiR#iqrCJ-6YHi!K)<&gT+jgy0s>^|MU%@XzDRts3^Z3PtN-PB` z`6Xn#V%>@SQc`DVJrCuVk?qQkfK0x@R$^#(f9}OaXFB)7c;-_7diMSqCUO1~TC|-0 zFGwbMq~f@=Ki1O;DzarG3L);)PYP7hA-7`Qm0kJfi#CEoY%Rd2Ym8I|zdp`yc#v=1 z06p`SN7B{I+sUcXt&QNK>bK{s+&fjxK87cpW#(Z`b-1f4=i`uf$*ndY$EnREp&NHV ze|N6I0Pcc=xCd990);#kCi6~k1n&&<(QH`6)1j7Uz=^yooWe6<9q*BJ3$xzFi1ju` ztT(iSq857T-F5dsIap%RVNh<8rU*$x*HBSJ(ReXw^1F*2S(1!0JwNJN_YWG;X~nYJ`85^;cyfm0Tp}{tl*>J zSYD(kG1pj%O^K*YiKvo8u2Lk20;R5&KgH;p3^f~n8dDC$$VvPer6;E#^`9kge@fA= z3pjqp3Guzq8~@UImo7-u)7Yyf7LLPC+(^suC>zhAk^C5>V(JA$_l)ncB(UE^%eM;{4qV{(%D0@mTevG<`D^ zVUP zaFBm)fF9(dpmm<*pacSCTE7~^JV%xzFCS}sxuV#CYu>FU(LKu{%?BJE>-yFi#or_s zf784;%aK4gbz;cJLRWq$?u_w}$0tAmp9G`%6d1?LU@B_48ECOA;L{N=e-4M!P+x84 zv*22^Q?{b*@CaW3&+vt4!z_X~`4aem9}VB|D)@!_nTuDm-aNnt^A&6?uT^qWtxk)^ z+ekLvMzZlXl8v{KY`lqNqge|7PRY$wxRrme0_2fIInFu!Eli5Ak#1 z1%7dYd+?II>tC{W{Y&djurSV3RPXcNMVmJf+_@vRD zftKw=&JfkIGy_x%GK4_GB0obo$XHpIA+*qb)#O(D_D{ItB4sC=K%%e2SQ*u3Mz5qA z1(wX_;zavwfPSivepJJ1KOm`n(kdy3=Adm&b0$>CCi>)8pbtz2>}JU3S3@6u4Jy+u z2piYJq5L`o_v@jY-vD#?ji^3ug2j9*)bU$kHUBFL+ij>+fA4^c_?>Vyk3$pR4)^oB zVHdv#9_RPN%X}xi#UF%^_(Sjs-vyuX$KhN41aqJg>4r*UFn^AX;Lo#S{sNoIUt|mT zD{Lu$jRpAYY$bnN3FHx3~R*O89cM;4J`Pj1yny_twIwyD;Q$tniGgvEz+3M~@ zaP32#>~3)cfTepm&haO3{sd|JU=X-k)ZkPDU@w&6^FEwW%TomEg33dj?g-mxj{E9e z_MVA{$0IFhdvCJ#6-h>+A-^LM^6SdhNI=ji$#T(Ye^{Efwaxqd0ocQ+B+<58x>ZZp z)=WnlRvU`d4pvAxz(}>#z`d2XG-WR_e%EM5(qwZIcaZn{3B#lMQN{>Ez3`7<$fh%&Q@^Jpmlf>R|vWcMA8j5wW3)5y6V zJEfC^0cZ$5+}n30Y_hlTMM$5LxEPDJ9odOu{5JfUyr@JzRDk;7Zv|C2Mf!I5iAG6RNuz$WfgcRN; zc0QI=(HW$uHqIbLT-0o{=6JASt>3u|^6e=JHKk5CrNl(A6!xMa4|@|+H~PTJiE0PB ztPw%;vc?H$tim*;=rowFz8`?6;W_+%4qjB>pTM{91AhO2+vx|et{KjR{wPQqWC%C( ze-<7XAW~qU=mZ6#GmH>vFh+F2U7ijTG4F8E6^<1BU@3n4M1NQz2EcJ*AnxRYV2c<8 z*CNlGL@qoahQK2t51zpE-$enuCWgY>Vi>$5hQlXf1nkD|Jz^9~6{8u-Im;GBtiKqO zxLrpXvk+^5jaUP0#2R2;Ci!53sAXe7f1k?NFD%qV-A{D0kl#iX&pya%qX?LYh^Tqrb|F5~ra+4XnL6vCeDXnhEkm9TMV2~; zKK#Ho6^EAr-GJiMx~uP`fCEtinkYq>EP-q>F3H>KVQ z4Wu#0qzQ7YP>VXiK(`>$w-Z)hlPMiRwB)*qRlV0`X`yqri#22z6c|AQ=0#j}vD?U) zZeGY$7kjci=VZCD`te!LbFv(iSbm;5Ll7seIH#*PIecERp5;mn6{lwDS*aIaiC!Ik zue#(4vM7>VFm+)nCgE}?Lzb8df4QOz4iSgJY_x2aio>Bw%!HVj1*^myMTT>YdD~=I zW8>2rl#EddpVo*|m1I!rG)zgATC4OHrT(n&NrPj>I;Eqsz$;Ey_>>EC#CnBKhroDo zhPt?#4MW74>XLma^b}{QOZF<%bZ2AAxJd6qM2{uzug5Xteu@6kaS@|mf3z?~|aOfQX_zUvViGT&hg$bbQ)~PaCf> zNJ~lOJ&P9ZzF2@279ynyg_qzSKN=1a6);RJgW;kI_qQLWi{-etYha;R0gFTkmWeP_ zienY!^Ne}hl=q1%P0IVse?6HFbHye!UWKAcC)C2|xN7`uPf8EwLMmKk-LbJRk=A6j zI@^nm?4(w|8P}3O6BE}EFm8qntDYtsLH=*!Cijo%6W4VtqEFnANZy<{s#Vv$q5*_B z9tMdMa5tO?qr^!tS)77))TyvQtc4}w&q(`q5EZAx8Dc#&iZkFoe{m+ddpB;b}wFA%^tpGH| z_jK?e+nFb80%H^))-BruoPMyyROlrQ0?rDs}c zbP|`Tf_PFvJh@Uh=%?RXsq3cf^`#ICT@mn5Ja|$TVRK{6?Tfh!qeh5ctvc3e~LTc8*wN6 zBJN=H(=$WFc2*|tNt}kUX|}LUvxRM%Eo{?lVVhkZa`3SH470*M1Q!Fqd!z7LNqh_!(~S-iR)+p75#Bp zBKo6*l%2RAA$uo6!9!@wJOYP_N6`d(459gPRE|#|e+)c{%JFG9O*{kZ#B*qLKLl5a zzbj50t&Vgy+mOB4hV0F@F~8Y1<~Q5M{AQCA8f;L}8&2$Pjf&pTU;-SeqBmT&k!6&f zXmZI1&VA?!diJ}=Z5Hd*YOxiyk!1vJw9^GDlZj|F7<}z%p0YRKE_)m|g;;Eu*`~4n zWE;jhe{RyJ={sSAD=)$D7vkdC{JX`A9LTpQ$j5qrS1c8;7TBj=h60LT}8gI?nEq?z`yXWB=+Z_c!j_`sei?!aC+^oKT&x|%%Nk{E3xOgHE85#4kf%=$E$ zS)U~_i;A&&)pqeYR>=@wC3#)@ce6XWn{V3b=DVb_xcC8!erR!VDt1Gv_y&RVTl9jy ze?u+&J`{n!0OOh_5dM!K_}T8y2!pTTIRqQ*&oKr0Weh#g!%Fy zSRn_&dN~+2$y~Tf=EDuL0OE2eJST_28*)U_q4S$I@!u5ZnZ$q7CjOf?q`zrHfBKu2 zB?qsWmfTd^lACW^a_gH}a%jQtg)S^R#j@h)r=m=8{f+`S@Vi36qVza3WT%$WmS#v> z0ZWO?^b+R|mbR!#b|<}>A+zJM=fZ5K$dJ8mmwk}@a=@azCV5a?=9)cbJL7U#f`}^q zR2~d@vIs`WF-W*#m@8+(F>-d&e;r(fO_&OsFcmgoDr~}3*o3Jt36lp0%aM|zuScQ8 zkH(QSTf-SSMVQ0s$FTmt+7nk9_C#~z;h_EPi{|!(lx^A*avo}~BXMUhgb8vH93~gz z?milp$)!*wE1*s;gQ%>8(_|H_lYY1u>s=)SZP*j%{hzQWI;S7do}mA2e~!u5**F)9 z%3fbEl+1BCW)}>zk|mC8xeHQ}(rS6OYpn&!-Q&>pC1$-g>8 z>Ih`YC=8G>MCny9T&{*9e|Z8NA^!vm<%v)sPewkT3k~>vvOEt?mlq`Mk+yE^4gRe+ z@2N2*SIQucoC*D8tqdXmjzGu?tJKNhQg0ABZLS$PC1xag3h=!!P?HmXLhNI*P9AIC zSB*80pHt+ej1wMyI+s!Jxhtsq05e_(o9beF3hY%fdo za3Z={ad`>__Mo5vcy7ORr-+8I7=&o?_~0K_hIUcI(yC>5Xt6l||IkutqqQp4O)Ob-`w{zfWdtmB&vaS=OH^XSETJOa z1f#6bB&QjglX;GXjuK3KhFE9qV)oKdN4FmdPh$e;pg3Gx@|jGabG--$ie2 zWIE!UCt&|Lv^7Cqf{=A7be5MvFS!Bw%F9vguS6ZX2|;@^jF(r#Jh_EUk=L_1@&24+$F2Qm4}n=*#x05F;lHWIxHX z)m_)ekg0-=3@w`nJ?Le+pV9B-z4wAogY#4Ee<{X4{u8A18J&$g=^SZV^Vo}FL+zGD z4l+9|6Uve4*a$w$IC9#?ktE|t%XXTEj<%n1B#od(e>iq%vT5Y9TQoDLwwaeC`3Q1< ziF3Wx9ci^642(2m6}9~%8`T^S6bIQN-c>$_hSdv@Dqn;&`4Zyd%g{%@0z>7i zFj>BaSok{B%Qs+^d>j5O--RvmJ-AK24-d%?;d%KHye&V5ujM}yfzq(s#>d_2-AJZV zRvgc6e;XfnE3HO;&6moga-gUlrA#U(425!KQfX+BWSLQqTVR$-IpH>#sNx?rcph?0 z)9Y=>Q1Op$GinO)GY#!#KROAwi#tr7Q#TZ;cxpm5^|e)#qjtlXO#1cSyE87U>)yrjgEf0UB)dF22F!9@8z zOp`yrZ22QBbGXr{_z{kCq`)bTPD!smooW;NRQqt^R9hLHY7#pW(v=F5FcJGT_SkWz z3Ub&g=r~ga*>6`4MtkiNOZBi%k#wX2zN9rNC6jc_=uAFlbS51$I+KqXok_=x&g5f8 ze`nG$qci!K(V2A2=uAFlRM3fP5C3x#mM$xDB%L8T_B%s#7-xu@d4}jvXNa0QL)0FA zK)n^8AumOXbGCXXo=sKn#LEqIK6pPo1<&HjpM@9Hx3PN`AX&kY4o*h~xE-00;phha z9a&J|=nkchY?$ik0rMR_;TT6RsCD#)f7OmYu+GsJ&T{0yWsZJujiW!r9RuNh$3gHn z{C?4q3tu?$l9>CY&D<|-=6-22_e*;xeQC1P37@KyKYG9DBX#m;SQEp*Z6Ev@=YC07 z_%II5jAqAvXwA_(*#_5F;WJ(PJcVTYXk2f4YX@!x;~&L1Pr|>$@o&DFzf?I{e*j^i zYbJnGfUZaBP7mM;{JSncLvEy4UWth-ti&cOvDr#oV5dXO&ru2+9AlAhhr-Q{ad4+&e*!c)roh9FvZOcop0auNlx-b8Wul)09z!)sS8GkU z)$bzoGmrdJ_rhUjEUfVldGPh`%7eH?sqI$c9xHLLmAKzZ?6eXOS&2ui#4aoGxRrRq zN<7t!2hX(6gBi$!*~o(~qhEou7lYC)jL0rDLiH-o}%lY@nw*c;z zZ*xdsySj{atN`7y65%0;@DNHm<+AVRVE{WsO;d*~`60T_+{R=h=Ogpn3#YUf`fDsL z%_TpUpO{lCFki;klYSVZf5q>y;P%c{Ie;xcMRjeo9ELDMKx3b~kcsh5%inT&HL2}q z@}FkgJR`6~#g5Q>e)97c?Hp-#I}iOBk=gDdx=Y9J{5%5W84u-|uZcSIAKsQH;-V~1 zkBjN_F)N>L`}66xU(mbUs_P6GsJ;gy@dn#6)Sony=mwhT4rwAAe=c@dlXHz`* zza%-s-7tkPD)-1=@ z6aWYa2mmMwjh`+Ii~$;-z{86HBLgT3jh`V*i~$;+#EStQf0V`fIQ~2{^X|LZya|Dr zgatwp4hcDkAeTW<2nj^FOt^x!xFkzhNV0Kv!=?4a`@X8+U60iJUO+tXC|28AD{4Jz zYwclet+m$H1C-zM%=_+&e{j`We`BO#q5i73YfVrHS!;dkeHAUfwq~c%1Q)_se_L~)&0i7nhl3p< zM&Mwos9oTXYzT(d%?^ayeUZjB2p${vyg)dDFkqg>*AWS{RLu9aPeVwn4>Y&=A{`+= zLUq^Hqvs_CpBHRvo;I(?ur}^+Mg6ilHhI%#5Kh$?e`Iu-^ICm@wu%LFs;lUk>IXIX zBED6=u)iwU)<(dAU>m}?o>*gG6|;N5GsSBH&1?MONNp2BaT3Li!M4VZP{`jFsqjUD zt%1ghnfgnUj^GOU+M0r`L`71cI$cMt1DJvS&|-gUdy6mP4>)|&9|z>ugP{D9cT+gW*`hK z?z((qm(s#k1)KaHkWgsBFepNh#bcM6Fp}`6f1F@dyg1hvUPD~;zz8Tz1A@1}1h)yr zy>;!egdP}UcP+JG0A!g^9@`yBE9rqU8|VlN2ErgNO|T#v+#Z++lTDa}Fg)dOu@wkg zFa@R}d2z6tXXtmH+vU;!+ox@LbQwiU+{Z;Qts+MeZcPOu;YGCfca zOH5cy;?+g|B7s&KY$+@weMN&gH8lO=f3fp=08TTZ0imEz2#Ru^woG)h5v7%MOLf7BmBC`+@Bte}B6# zzzLz`&d z6enS>^M^ZHh{uev9YQ9YLaMB1s|8^oGF6*@V??Wz6>eCMAOcO?ZKDO7U^6Kul8aiN zPEM-n)UtXw&4M4m>4YNeXMDxSe~n$rQ#sRuvshUfjV-}2sjqY3Tobm$_7;;;f5N=# zjg9_xn~~=+@PKwg9HH4Zu3H@PHTv0h(qb&=XkA76menPzFF)3az?3$52qVE za1-2O!p&sX`#Y=!x58~?Yl-x#j!-yAwsvl^cvQ9c!r^H>D#p%h47OH;Tm1g^O^v=t zMY}%~Ce>I`P5LFW$;L!7e|tOJX~G?(R1Xeq!Claa;0{FmAu?T|q@AEOZ>>{LSnq~= zO}Hnv6S}nWPPmU2x{KCx488}p!2=dN2oI5WK=ZY$YiH{nbDRgRhes@U6dpq`*ZW#J z{0mo;fuSwX-HA(wDC{s{JBdOU2gib)@B|@i?;uf|THKR>o;4|`e@r8RdeVZY;AxTu znpKGOsw46U-o&0*+@(oRZnp)`!gKcI77cbZKJlqUJG7_e>X@AuMhY)RIMQhazzjprXaqjtG;4IPbl(dBE(jIsDiW}d6q=) zG}fYb!>=uPi`BHb#ur{dnwq!AnWUW>oqac|KYNO`dP0+R-5IodVv{8&?+{o)M6^4r zR&bC-qixw$XK!kc>FpExLI2T*KovXFGgHj-P;m@ogy=5G2#3?Ik%wt<&7_Iq!BNoaRy(8=x@61dbaw&IA8}FHQI&<^gx@ZNXRYHOZMa zz%6aP82qJ7f8l-$zR|RhGBDu)>4)xsnxX!X8xdh}C~1O)%vOI>VeRZna<{)l$$Ru` z5Bv=c3tg;-26kg@?QDi~TbPC(5;j5&k;{b&6-o3FD z2$-OO77oJfu4`QrXz?%bv5VZ*SU3oIz#I#6xtlu@f3#~!H{)Ony*PxNnHVqP%6U{m zHzj1Gt}E0u4-UiOCgziVJUFz41z1P|ME>*2WY)81kzy01ltcEbaRfqP4TYs)3b6FL zrI0G}RqYk+vKy*`6f$rGj}()^+0qvXgP%d$1fQS~!X2%%o9S zB;7cLgibF@?Q9KU@JFSE)9`5W!kcZwKB%~dYr@hs!@^_mScLqLpM=)G-k&`0I{#`v z88{Z#GTwImWfzY>%fc!a#{uE4+nNWhwy*~0e-KR^>b3hev?atyhfjyVIyTHSTCGLy z{qc@R5)8K3af5beX7PygEnL7OdUMdN{C)AM)wba68 zeL_uiV*}@oY`qv?VmF>hoeIh77q$fp$+e_dww=HWwU=4Mll`8B-^Z0S*>Km%s^VG9 ze~n@2vv3s$RhjDojq4V!UOg+&Jd0M{jU)#{d)?W*sdKt+>iB+khvMr~en`thL?o*L z_7YXQ&g>wCJoW$WKJPIe@6@V8-Rmi_WHyp@jQA6Rd3dV$tf!l2Vmrd{-u$8<8QCLe zdoYL;eGEeiM_t7=H8tejVh2J|FWpY)e;`UiZ4_d9FoGMn=SI>1+_Q!?HpS~R9S=9w zb!Eb})PY=h4F|d_xxBI`%(%en)gC}R&B7mW#FN!b!xH2Cv9O2b?hGE6e9(=>#~sA) z>$TaQey{C`c}`2^gLv?4++yN6q^|lL-@yk zC&xsJbRRMKQqs|l9pOl@wQClb2e{nAEAUEtOU{f$e2r`DT+o;l-baeSZYkrq+QMt_ zT3cfV!nJMnZNB#KnxIattl)I8%O;n7hknQ*ZQAx=IACY}3lFv;oB}8PPvT&A7}<{{ zq7h;|=$bQkCW_z*gcGyC71SXZe-ERxd*;)_ZoHi|RLl_CX9R_jSS#5>3-83c*c)u* zlnVtQU84Tg9c?-}$BFQ8M=SYrg8=Z3bi5nyHSwNU!X%!XweUW?pZ3w}V5r*1hc|`A zePW}?j8Hvj;X_V-%kLvs_Yqo<9!fO@?c@>JDrKRwjQ6Jyj{lpT)gO6cfAtWx@KM~3 z@ZkSnC||LnU$nb%Cpn<4fpDYKxH7gdD;q3ZF6YY1%wJyH@EUhY|CAZ9WPQE!>UI(uQDx;cA51 zzI8<`mDUrtGd{OaiKQZwI+Dj=i4y~;$({)uA?%_mlx;<1RNL3zu0)J}Z zOZc+hyGz;oplVwMu5jbe$u+5Mvz-#EFQknV7x79Dz5?f(_{-Q4lYNHZU#(A3*83N> zvq7O{jHgT8_$$(Oj@{B*qa#GxbT7VP;_F=_VNIfiZ{n|suyDi|e~N^c1tM#D307B_ z_;$)nXlxK#K)c{%Lh&s;!;QZo{q0agGulKUJpLA8bWb#PD+@M##ZbJ5@3VdUJuUx1 z?IW9$KhWwpqeY1L00~k>xP!FDrj-$LkWBm&`2#)2=C+D@4Y!zz9{eMI$m9N{Uv{~t zfc^Kok|*<5nsxWde>D01O%>#ItoMfrbR|E!@#EeA9fu=m1Dg0rO3rK0xpADc>CuCK z#}D23PZGP7i0#E%xhB{_o{x?DUkJs$;I`Lv}cd26n2X=guJe>@m3FP!!yXa5tbz~ zM5cBuDP{>pd@YXF>T>RpO4oLQo|Y!E#2`})OdMJqw2vjS#bIo&{VgrwuJ;j^63v9v zBXY%HQ{;6yf8n;smN|vk05ipGW>+-@%l~yS$8()SzIBYuKsX#=Jye@A{p~bY z%(uT|e+11H$1_3m5GH*GE5;-&Am60d7}ykx5GM2^e^nLh5hH9NtH^p1=eW`)DQ;=e zo(xT2&ylA(?DS|9XRva{* zW*?m@%|5pq7#V%Mb=@xTT zxW&~;3QX(SiZpSpxXu(mL>QJJhTRMue+*>ShD`Qm)7A~lEiyzT! zy7pM_Z)*zLuyg_$LzjBi^$q6bv-cqi=PDTz9v4GBLq! zFmCa5g7$cu6UUKfF1ESFvk8c}f7k8s*%Z$s6eb_>k_Kyw1iHqvrua!$sFoIgv#(`l zBS}s;4#na}+anZc@+Wd*?#57~b1*)kFK0Mq;$d3+V(vjhZoVkXo|{hWlPL=D?O}T6 zgx^7ZO70v>DK-$zZT=0~so=w7{Eae2 z5TDq?cZ)wF0HgS`B|a1sbekbR(Z{A{c9)w_L}Uo7P)>%AqKfc8427fp%H| z9_VA9=ih0G0Es|$zf;VwHq`{(;(s5cZpXE6@`!(mf0^Pl+BrS)Kb&$}LSYUqrk`}! z=bQ=R*vyU*7Ov*Ycj0u1ivL*R3s$G;F^hA&e-qb#Wr?o^1+%i*-+ggYFftyzP@Frs zw|m?kaX_LeDWo0L6U352N@6$ToY1}rVO+`~d%Yv>5&NZKNtdL^*1d9NBY!y{D_0^c zD(<~Y?=5|dL;i?Nv!q9+bKs@dG46~EP8h%XzB7lt*7PwAx6C1dC}J@wTo8;D){w$zs^sKcj#~~UdskGuu#mJ^ zFjVN4Lr8P3@rCW9%&ykolz+pzT#lI)47T`vZ5}yP4(GJhwWg$aHa~VRMc=asM)YV2 zy(&i}U0tbNn50VGk@x{bX4h8=i2H5HvP>J86Z!~4dY?33XzG)aX~{Qmk_h4CxGbf} zUs5c5!~ackykFS^gutQaCBFNCfvn&IgU1k79QvqywAsHY;U@dmi+^3QI9ShUcppx* z92GUC1LHx>qVIWeVt~MM33~#H7p+F)n0c{@%TT{(M!oElj|(m z!UtIyO+kN{?M(GX+L~@j+%TQ}!`@1}B~RfSz@9+3iqj>0P9VbvWy2(o49N~=!+L$K zx^Fh0YNuK92iRu6krdC2QG6@Uu;iH>?|W@n8)r=@ z*jjx`N1$E5SVd50Tk;%+8rdCcW_!Ee7xIx0oCJTqJlB%v#qQfL^0Br+WqeQ()7Y$xub}Rd!himfek$7)W0P(wkj%PQ(;6-E z@o}T8)p5C8?Rs>+WDz5S%-!{tJXX%+(l$$0^VDUY+rDt&pxzD7DVWi-?e@_40g zw&X4HRw6>*2_umh+(m&W-drOs^dq>_l(!=sma3gucc&%q;$SO7ztj<&%+mK{1lt+3g*f{%6)wy_7OW?y}^Qyh#QG z+K2#-t!K71&GD1|c$x%Z$)eda7gr~}2UlOsZ-2*4_rSMuw}ol)S-wJjTpw4c<@2;$=}HLNKdWmSiL&#bLJ+L z@vKBW4gEWs(XkzYl?+|!k-wLJFy#ldXH$V&@{jUQB&X!?a_!<^jEe~C4vE`69rFHn z9=pOVKcoexrFP4g*;@UTW9z>mto=>_^?!E?wRPGoHuqF-u=GYfb?k5!+0pK{$}(;3 zK0aO|X&xMCqg9Bo8`M<2o_5=;K%0J-kKau`#5a@q5}(`eRMK{`Q7>$73^uVAFDmZl znRk2S?w!TGd+IR(OyP)h`?-QTvd0m>o(^fl|2;#IHsi+4t25?df#u zG|i(j)BsauB2*k=S4(B7fzI2VYkxZ0_@@mH>*81>u1kxGaPEy18C?~}`KhwC=a7z{NnQGd`n8U}lMV1<&Yd0m= zj;IKoonyEm*zQ-4RQNv4`e z8mf=C|7@StA97B|!*m+i*ViswP|x@84*?IyUg{`IRjO(F zZO()jp9F+3F@+eMgMad%8$!J+=31(jFYcO6fpB|}ESEZ-;?EvecT;Uwe# z61CL%=?UVwk3~=xkFD{jA~k)bI^M+{XpVY0lpTV zSi&$X*FwIKcA1+t6qunHgVO9ka}l$^&^-`*-*LHXYWka9rC3&xVK_n6A&65p@y7;) zRsYSn{Sy?&u)%cBREe@}kA&@us>qcK)MXh}aJkscZOWcaB%rTWTvO6gcdj-O=6>Xr#TN zFT+p(t!}W?jp`;l-B8`OJ`f7F*@wx6#od2XVy(X-34-+fE$TK?-AZm)UvQTCk-D99 zz$!n@b8(0^nt#vvoh%aZ9vzbaruErM7ISr=xySEbbVI=lai^v3ie+4@f-N1bZFcO5 zPpBVT>TdRa1}2??+xy6)?p61j>OL~*J-5(oe@nz?sRz`9@fS`wPGs9Nmi;IWr+n=` zic$EEmd}oKU#}YoQ8fi#^NsyrZqz&)KZK>Um3?srbc* zUJv6bbX9u@hp&mfd3{IuTb9Ld)k_wpsh2rFQqy~W#8f{g?A^nYB+>P#pQ%?Y^~-KQ z9HQ%gWq-ji^%^Ue6zONaNp+KY-GZI!4TL4%DQDET!13PywR+oBZ>8E6NsyL$NB{PO z^9qPt{f6dTMK&}LiIAt%6bv*KMiSuT80~K@^*i>iJdGNzep6dxIz-j)E%gB>5i?@< z2lTqBsxtxH>QAh50?qmz;5wRxKOOH@AMzcy%YQwvO?_mkzpB64Z{o8$FUtYiI`I$YaUm6%Ii|NNJJzuPfwY^~eK zBJM2QK==#WI$BzaJjNjS(loMDWkC3i!hc|k-)-bj;2)=}Fc7x8nnoTe>y){rF2B>~ zH#sa72k+hOH#XfZzSdPuJ|5arucv9h%zrni zOTTeECb=22_(w8GakkqxcfuZHoNjM%0 zv;i)oyqAl+OS6oL>Bbb}DASl4`+qI3E(hY4xCn{{q#2XRDN1=@&M2m3K@mCK#xa&L zR%{$#7&EfiWLdRsB&*tja>g*DOQdZY)d-{e#bnc%6Z^r-UO`DO+rUr+q*Uq8fHV;N z^PE&p1E8{p{?ftH%1@|-hVz6Mp1bf z7XvI|BuY==>g!)Pjwq2k!bp@fQMR2=s>R3re#m#7_Zb7vA*NnsRDWtcM%I>E#6Q8@cyqP`Vwhr8e$ z;@kN|e;v&iU<)YNO#Jx)&G>W}4QId+a3)NJv!Dvjh7;giSPJLC_o+uKY=ez(1GU@; z7s5?&4cttnTL|Z^@ME|Q?uR?z0>U`M<_^JJ1fWa28c6ViXq=0QqkkKr6fS{FY2>qD z1Y8D}6Gwkce^j4qGD{X5{{@}2Owgk{|6G1x_w&qU$*N>$D* zda1lzsa^1khLZB_@PErFyha$_MA&v<2O)hM;b9t1Y0izK83FNj0NhP-b1zBDeK3;d zKZ)jA4G$8*55b94-vm#>T6juxWui^4!<7MW61)TN(qwXB3H%1$Bd&}juKyN(N2^m! zweQ34X|xXrHdo6p!~Y=;|3|80K4pUV2D~QRZo=LBU?#QyDSytQ3Dlp*Ji}(up9g(3 z=x<3Zk~1EGzYqFX6#m@_H8E!Wtx`P#`*y*%4P<$@qaeN@{ol;S^eATVQx<(k@i6M9 znTUB@IdqG}7`L|D+#=-JSVUk6woRt(2=FXT<~f?i^R(4ofI|2QO?(fr^hH<(KZQnk z306~G5MG52_^pp5>e(cf`NJ?3>fLT^7V>?A#tc&zIrrIdJF(g`K;IV|rohZXVF_bQsiNlELD z`P(4F!4k!jlcb=rixiv=1@!qQDdb<1x_yf_&)cK~-XYcVE~%d1&~)CTP4hmSLL1-= zTEX*3q<^o1Kf_k|5O%;vBr|^{S@{_D!ruwYKM3Meg7^&n3IBr6;oqbg{)0o|OB}9O zd>@v=ew+jckgqzbEL_OW$4$^bOd~YtFf7=KLzf`HB@I1 zUAJfna}ibNVgT2Y0gB0*#)j)+*s#TswWA^JTYnhs$l3v_a%<(LA5AQ$BE@QuN&gN% zKwVU#mGL6BVwD%#?1-mfPV9~$rxV}GMj$Zi4Y-No>Xo zs{bKgN7KrLm0IJmeOnY9rtYUBoq>=dK;V>w~ zd>Bh&#B^IWR)=onYq`#d8_3__ISni+Eo7d0U0zetetA5>Ft%KPMH+snjek#6 zrhC&%ci?kTd~q9$q&eGr`e(GKOXE8kAF8yxRuq3BCtHPS*KC7ymXw)f-g4Yq!IYh# z)MSg~wiWVr;ad&PR7efNK@I7wbj=!S@@ijGk5bO3wZYbq` z+wsrb`WtHfh+0W;Q0Z?mxW6aC{eOeu9;4PzW38VhwSLa6Kcv=w$6CKgYW<2^H&W}@ zvDW=bgn!GeE2#B=(<(60S4eI>x-?rTOdT#DoUc5($Wj z4B;b)DHk%c%7j-FnzAG1G3{E~>a`AT`zKrtDo}u4d$R zaU8Y47t}I8M(M&N7N5YaZ+}y3oo=mlbQv3)v%JP*VljU#kBSqm)l)NAx#`Nh3|&oH zt}=6%SZU+SWPCoxcOl_hr5CD{N=>>{M5Wd7Wn2?q#DxmUD8_ zwt`i{c+cwuuh&z_7Ph9uoAHFWgjAZiRA{?Cnz4C3j;hWUSH$Od70(f^SP2GtJ-hL( zN5nNzv9%Kmss6?;^*8H!H`U*!>vNp?+aD2koyl$RF}2;T+lI$*JtFSqHu4#=#RJ+M zdXa!0>Vo)o-T6VPe}5!J{dH9TSoZ;=_JF5S+s>XuLL=4h>e7b@x!vwFhuWUfZPSw{ z3>99_v-rhU7{j$+=+U1c(B1YHi&fflea7o~i1e}K{}_XK&iQ`94xVrud8vS-L6R>y zketSREFr^J3X`#%yw7nk9gl!xaXi$J8@>Q1!U~)WO*j=guzwQH#-rgfoB=oBv2Y*G zg6DBIypA>Sdz=fO;c?`v%)=~Pfcdxx$6+0LE{myVDR}_P@pNp!D{uwgf+ymgcoNxw z@8Og9eSCqQU%^%QE;iwZvyXN=+atT7g!GbZ8-#ti(4F&|&jcJ_4&>B%0(>?~PE$Iep8v9r|b z*jcJ`>@1ZWJ4+?o&QeM2A(z9gOBYZn4J3`jj*EwE^=R>;_$dX1Q#pVYFOjQotdXUi z6pQ{U#DB}=F=pV8piKOXN}2d53=}^XzkmVaZ8%)KB9=jh_=M_yNfczt6JUZ}Cs#wh zQ}+Q360g!|8QPCL9mX9XAI!u4A?{Tso^4{##0Whg)tt}Ouec77KVbC^LO#Q>i1~x_ zv$OO0-#0J?vFIyE8=PO1n?J;xzYi9U-v=j9P=7QhBWGk@-q2C>NB=7YEI{KaDaE?UXCfm?`=x==iy5MyTyLany|9nA-*l8zo=BpI^hPbz@__OG3!>!`iqL zW^hDkdtUM|LR}V>xpC*K6AF@=^SU>eW=robIkZ7-m-%Eu9wxb6h(j=67U=JzWs#H2 zsUb-Oe1#nEUsB6!a1p)^SKu3P6TV40=6~1l6uw2l>Dv?wy@MH~C5GVdumIo3qw)7R z13w_m@<(jOKk2=55=R%fCboAd=CPgh**Hp$q&>kjc;zT6NrJdSjwZQQa32hmhs!Y} z5&L1dUBUtwLhZ$%NZWB~tdrg;1J}S)NE*L|)991M@&JvhLmoWeuA!nV_`WHNhJUiB zD~3Dn_KCE=BnP@BrDf6>z_v^&OK@BFyyo$tgRG>|NJ23k!6 zu?s%D*MZ8Ta$NV3KGq|Z*gfMT4UdmB+!=}MF4YX=F^_P@Je9^|7r!7j=IA^lPaSl6 zpC+Z<3gUwn#0M>i4_d&#s-oFYz<4 z&5Vzm86P(@9?@jRBbv;3M3d=gT9gxF`UL6;hT(_W`|-%q(x{w5&X@hQJSwLxOT=rO z=LP%_Shs4KXhO%0>&hE9m2DAI^Uk+NFWICM2qEz{+t&PVN%b2#lQYlofth@7`m z))|mA?Lo{(VUX3Z$SxQ#SY#xLw>M6!*O@+*7q|xrD@aXZz%DqLObByE}Nac35pZC)Ug9S z)oD@#sneMDPgd#k%XY}MTVYKP{oE@~>XaI7wrnMJy`X##456JHq(G&-o8GorQL5A~ z8EPomE+bL7fftjR!J;BJlDAC{r!ta?@@MfaMnc{t)t&BqpGALLrhlk%`Z|AEX|9UO z3p+`NB*gg=Tb$`@IW=Cc7uHtcXVVgb$O0t>f*}qAOXNVV$c3RI4~oQK7$dw;E{4F7 zVi?R7BcYzY8^qyoiztS>#8~)Ll)^qyhUwx693aMH7CC(dq7sh~({PfQjz^ILc&s=E z=Za%-k(h-`MHQYTW`E-T^?#NlNJC+Uyh?BAB64wglPeel z6ZF>aJb&uCfoua$g8!%_!Nf9Yse%>oCNdawS-UNQn2I?;bO-mi0a9a7T zDBL)|OsAC>bbmr&xr6SlsJ!1skrAsp|DkdR&wKa~QD(w)n6I_)ar%2cEY#n2u5|_s zAbu*6=a;xFb0W9rZfY;rTAOzM){djM}`H z+lkfPHFhwyP0>35LGTZKI|6bd^ihooX3Gp-8@;TC31s*?@wZ~^4@5vYVR4;LaM?Pj0&emf8qP7v7D=0|HAZ!IU zk8P+K`CAX1Rd7Geb^x(AUpqI2`nw30LPPxUZx-hZ#TjIo&Lo9%Hc7}iv|F}79(@;y zi(rnp7#504V5ztiP864sgj@lqi!0$AaW$Mv@P8MIA0|o1#qoshh4MwsAd)}%Q;L5i z%z;7jC4Ja;qI1M&XbBhv?r*?UWNCA>=cmwQcSx_J+`tEZ`HC&=%kpQA&3c4-l2?K+ zm$9NQ%a%Wn%2)QlVk*5x@x&e|cS^hAqo{m+M!ss|WF|S(6!{P2w)`#fzz+Fq@}zBz z{C`fVgC$%3*0vI~-QG_!U1hzQnX-eLt_9_6y0D-h$QU{`!b;V{^7Vx!HIi)kXC0{g zPf-1ZQMtUv9vDeN$#!&TmjI|t8`F;{?iuZM?SVqCO9Kt|x>5ioH1`6?rWL+{WbsBa zez%Y;-UeQAI~lz@VG?;ORpK6!!TZV3J%0%Ii-+KK@i2TW9>po*F+5vD@p7>p?+`oi zF|iY05>F!3xL*M_F|A{-BUuaYjN1^4GJ|e#)iQXl@VUOj29djnws(obf z0^~@4k|E5EkCCgi+0!MYl87sA-KIpWjY?EjGJeuh3ihdE_sPgWlB*k=3@QabcXsjR z)W+*l7mIq8q5U~NPmD#qQRSX5XMdDMl@(QkDh&$IIhSG17^hxO_N&jO7pAse)oDlroBsSDIdP4;% zQM}4)GSJcIlKgeoNdQ-XB%e+-o+#ENaF61IGMj4 zF<4D;0mxPuBHJk53qp}>hoj^vaI{}V>bk46kK;N( z{-#TByR%J|fwoJq53V}^#m;ur^>J@u;sLUUM%M<%)R1tVpz0i3{(lOA^WBd3a}04S zTtMutpUP3sC6#8L>(U)+Svk4ym#)+0?@@XArRy56nCdQnOr7jC>0{N@v^d=IBsl8R ze8p5xo|~Y=;#E`Kc^)n;Up3XkQk&<_OUv`{$*ouAxpcO{;%vhXwTdi2SsKS+d`Cr= zkm_~Wa$1_L*65VmKz}an61ffA)mlEkwd;3_TvEMi-Lf23r&(TCwra^SY~$y3Jroy> z9DB)?tWK>qlRWUOz7aq(}@c=RKf{5U6Dr4%p{${;Qz2-jSA8jwsN*W?t_c>!#GmMBlOy~ zI~was=cKl%q|`~Ss64|_5P4>Lo{Q5fBC1a5<_gN4Nk`X3@rf11Csq`nSW!H`Ql!aL zx^9KeuTV*a^?$^;6rqx-$?I^)yOGFa6+fac@^aiM=zA)$?_flnz7cWyM#SkG5vOlN zoW2op`bNa*8{yE$C0-UX5o$eYaG^HnQH6Mpj0$g!9u6%!jn9Wc_3BC;1J8nLb(Ln}BABAC)-1Fok;0L&rrM1ADBMAQQK=^b zt#=8oh<~bx`MJTy;NySi3;J$sCc(xzmmP05jy^W@~gF(kJUtct@@eNI}^nxw}t z*^d@Inu*5@dUPiqGwCra33>oOCxK`2a}xYOet%9&JP+b$Pl6V2Cl2p2!EIosb;77D z_YQSWx0yebtsbY(sES6_6H~IgOsZQq)oZt$*yQc;^J242u*Th$HCf$wlhutmS>3sl z){Q%!Zrn-l#vQ90cQTT=$Za!6i!ZVq4XFw;9h zjelO{9b)HJuiXYmnELU7k}hLDqJ5` zPff|89cWe#(S)Fk5%RTnNVeJ?RnKjMOfLR}id*52CAm3F-q5^s@6Z>)9Nh_2ut{5W z@#JB78C>noQ;GWJRG-i4VY_;fN75HuOn0g+tsT!td|yd zFR>zb_6fqdmiy~|hUsN%iY1|Mp3N!Tpkm*d?EVdqY(Mt`O+ zwlZ}&4)&eueF3}@_@Z~HU1MJZ@OpBywdKf5AH6Ei%FCdoi`kFNya9Pxc>~$!Rodqr z<{d_U0+KV(3FE12T0eTqSWixHVXb$V?TF+J%2t24_GZXtlz&V*t?EKBD(|poVcS;N z&r|%u>+%lU4clzeJK;l~{#LjriGLENqYom6+ES??ZA1 zGY^M3Zad$-A^8wRj`-z!^Y?(yJ8Tb}59< z_h6m;9kk02V7>eUoF@MS=gJS^8u=HvU48_Q$iKp~@^9qreN4XG-{DgVoqxJwNbcdHz+L*KCi~eH&n5FTb0P)t5W$_RVM$TD&&`HymF}tDt}!asg6(+`Bx>> zv1+mkswrxtnyyY&Gt}Kw^MIPE9#*r|PF1CzQ?u1;s#<-bYScb8$1v1fW1OlrrmN$O zYIVGEyqae$R|^ckT4=PYMaBkIXPluH8yBi2#?5M}ahqCZ+^rgn`_u~K9d)Adfm&&N zs7^M%kZ-!ATJ0LDntxp-YK`j{6>!Z_YhClHZkcLjPXs@JBiJX1c_Oam+W$aZ=N#ry z-Bq?TN2RN^GneT)PG3eaAkQ^ZeE~zr(MQj%l_wg%)Lu*)EC#8a zLl3MoE^$h?!sv)T~7z;rfib`HFL+*4+KA5XhKSRW8 zabtGNzoLEY5Bx7)oSV1L{G-xwSf+Kk&9=U0>0+R0oMjCNrxf?xy3lV*#hq zP;vNv3V&Ac{I9^XA0|OaD;dpa=>5Gt-Z4B69 z3@p>7!>F{&$Zgne3|>%HD&;Q2%dg-VL!-v<@~Ba8Up$T*&hZ(=^Gclp9uF&k&cnmk*D00H!@rKJ7L7H6{M#rcj1aMGG+7s4?b(7nVC){}=X`oa21^o$rwI z{Uwe4ZFueP{|8V@2ME=>^em7)000G!002-+0|XQR2nYxOC<=|A%NmUV8lPkMivb`5 zC<=|AK|zfH8lRx}ivbvaTxFgA{gcVO$>jA)dJQdS(~>)-t+Y*g(KKyS(zH!NY5-d% zlb3YpWM-J72bbKU$Sp!SEeI7vE+M6aOT~f(RCL!}cU4@)b=6(m6?ffr0r&TP@8!)T znWT{gD4F-ocl?jv|NPz@dHOTA`Eyub|wD_J*TYZNf^%(g}UkK2zJ&Vx@M+50ZXgIY(Fr{p$4CNh^t|8WK`H_z)CMKX*kY85b zVPL9YUWREX77e8n2`ieaZE%O{gUKC~#*Y$ADFk6OQ3$^p1xy(5DXoZ6OS-SiO0);N zBGja~ITi{=I)aI?`tD46Qai#)o*JQpV+X1*AsppmYEwLaL}|JA#Ij+44g0DzJ5V+b z*p6z)R;w?TvKn_$VS@SLQ!MYuUn_tgb1>IHDUCFOripntSzzo6M$*=%9>Mgort%!D z4U`kbQ9vv`#g8&nDkE13W|xf$c6mn;YB1kGEny#`u8C8yfDRH*rvyvNnukY5{m7Z} zkyC|Ogi{TFd_piYgHb5f*B6V{I`%cO7)$6-_KA&FG~H%J^eCAO_R?dd$w1v0x-Rfz zDJm7Gv&URUFR|cQi)h3 zVkO+^=|lZ`Z+y_VTR(h{5%`ij(kVuFl-|;7rCNi3-Qi$lZ8%~@gMF4Z%?Oe)4P~;n zZR@%mrfEwh!qHwj&<3JDe0p^{9O$>46G0PQ2$5OBqCg=Ev?iNK14U@F&P!WS2F+;mITTRH zStfeW%gh{%$E|3$pgI?XBc>cnP{uIBuqM7&(b{PuqOkL&V)iZ{=odz})e}rdQhvmd zFmRsWxDnB&Jmw5KW;hjAF_#2!n$R7yl4_xUaZfmz8pXC}7Gf9n7}zZ^vkQuey*QsV zY$tKzh;g3DHEr1|)Z;>C|C(@5j}Pno_%tpxa0!Dc_jVJP;c^y6`p8BrwIfE@T60J@ zo|*FISfaN!zL!*@wW>VVZr9^KMd(VwNOG7Z24nb4AHK*s zo6s3xdykU>ROsDiVjpg&F$mXbsZ=nuqmSu>RsATQ=1?YMJ4gkk}x6iTVF{6V-E!wETP9{))C$0LE3>!P|3AT+Z-;HZeCRumzdn{4ET6Gea zd~^(!HIE2OTdhrTRiTp1_p4Puc0jN=o`|Jlp;)Ar1<9eERf-&5nVQ*ZCF7)^z2QL< z58L8p~shP*pL$f1CO!i8p3~5b{%vIvmcM*2}SFF>w*fTVhRUKTb#|)tY_6t^m z0hbCUhyi0Nk?m-1yk?u84r6a>h@}9{RC%q3Ms4{4+XbDEFpUOctv zg9H$(6cyf@xou4uY%H?wTPudo{k6BO2`-P-dz+ZgW~nB9l>Ms1{;`RFe^3d&h?lDr zi)iw6YpH(v}TT`5Z%m%wwVW4$My(rWu6^(50tqsf8@{$20n;n*-_UV z%XwhM#~{6r2EjzT{j7=DSkw6>&&1pKy-z%}QCDwGD5#T6O{6P-(jHDlth#o_2^~Sa zrWisZMM*2QIT4FniPT=f$>VBQ%R7AHXBFeQKE=H&VvjU&pP2N4u2gi>&bnRUWSHHM zPbM-N+Y@PyCbPiVi}q&qK4(>Ir%$Fb>v5q$Ia?%iaysk6TDF%Q&ZNSb9rp2K82YP1 zdd4TS$ym8vO?NPV6;uPI=y9eTukL`8LJ=#NSi_Yz4L38HoM_5PGKUp|)i<%XO{KG; znU_=brp%Rj>LwHlSt>>rk9;%X*d+U8PdXY>$g9^;$#fr6b1@*LMN%%6hExoBb3rbq zR7o{;>4_y8gX*2!31wpv(=WzSyu}lqlrk(~jcX$)T-X4Agd(x1rL+|+`~VKjoNI@% zQ`vMRUp>xv`52u4R9eb${ytYipDeMRsMTVhpUOB<9l=_)*Gl?inR2&i%q=!e(Rezg zkFKPPI26O~2pZVo1bee4$J z<>d`vkt20o@8UgjEW^GjXDL9>7Hk}UFNWh`*rD#x-h|Z`+hrNT{$uWt&YG0h#z>?=vDwVf9=yCsNP5^SNiV~hy=w<2 z@B*{9mSdTV|KsA?su&rdxu|Zl`VAY%0`BCE->Xn^^Qi}MeRJMW-m77 z({hR3`!}#Wuqg1tnf2x}+fV$mM=nzUU#>2mIbKJOJhDOcm9j^fp+NVJ`qt(usG3XJ zKx5n4cElwrmoln5Psh8nyK_T6p96+7^rj(y4swlL#t$Wp*CvsRsAsi=~pOL@;i@?oImTarwF-PY6!R&^Hx z%2Vo+m6;N}maU?5(k5JL8skFBkZ-bY z8G9?8)!xi3rkNUYnB{P^-`xhA#&+F*o7rCt`3_UgXa^mSw$Bx1eKX`W)|1hHj%9jq z`{cx-6NY?`4tMm@O_oEx8BW)R6M2=)=U)Nx_|Je3;Ik0wWlE7Ao0!V+1We@TB+i_{ z{ds&&t2l_s6$2>gJcwyeVR}X7Q<(XccRr)wUb=!ApMC#eI4_y|Vb0e%yK(6YRl@=xnKe%muwh z+w^rT#&=PN@6!+7z!ms^A#TLq;CB272k>`z2tUEI_$dzK=NhL)HWscyUZJt>BvOlc z>Mq<(Wb1Gp?%^n(wC3SU*iX~mt4*B$J`Nb@)c;@kXXMS|x%=>C*SGH1hWZ)3&fv3g z01tE$iLX@guX>v2ARewO7{H^QlZyfc2l05Fmy1sx#_{UWkEaiRW12Gxc>D4EA$&8> z_ArlDcDfe)SM;!7Gq!$%1^6v}=XYAE^)^FSsYa@Gr*?=&e21evJvxF{wKq26HG<|L zrBevp_el3dloGx-=um51S5o_b!2L?~BFKAKW8eV;k8<&c#CK5VztuX|>No=m=pxe} z8|I*IXE|tr>!3e>qH%1`-k~!DFh?Dp#UML`zt6)yOwD}%$2`1=5F%aaVer4V}? zzjwsBmL~M_Sw4U_J1eUc-|89knSZa-mwMEz1g< zmsE^IYAKcJtHRrhomfz0>8Gh_-*kP1dD{Xpx!dlmO0_S?HD7NXW6cNRGqRG6y%vT--;0iVDxOZOvUgACMaDT543Q(}o(& z*J(qIPGN5M=o1R<0zFb_d-X`6ZP0GFX|#P=QOA?Az)3iM5+;O`9#1ID45|@hA;xgpdk#$5Nfd4hSssk?T$^9l(TfD0itT#Am&B}Xd}xm z+lK9bDapCrv5PX}SlgFow%6-nCahafLIJBWiKxybo+lEGDr&x77Nbp;V4EyOSn3dw zW!Nptaha^ZwXzbo$tv6-tBGF&9+x$ERvPiLY|uKk+Gx49JL1~zh-Y~G|-AM4P;y8!mL14)kzQnacJvMn)p@ptO3tfd4x(Y3H6+P;+g3}AV z4A0|kQI>Pq5)DYGbM`^8TAUq>qaB%M$yWCmC5&8-DRKqN;#ExfSEF1$i#oYRt6X8T za#gN(8>V`vRG0HySk84CAP@4Ukf7|Or`R!moYUp8ZI-@`RZ7e%Tkxuk;9NU@?`0Gf ztu0*aIe;nrnp&&o*bpxE49Fg~hjKpEc!$r6rhDcdluPTpRc;d~R}9yyjzt4w%ut9 z=E5si(wO;}k44U?4Eb`Ee1<50EG1=ov;`${H4*h{d?usdUHA=bnT(0=VM3mVSbgq8 z#p;@oSY0~=tLt)O^&qkODzSQ)SUp0l9wk;!604_(RX?#hNR6H*R)>hyv&8B-V)f!j zfYtSK!)RDd_Q{R3r5y%yvpVUS!#n9^S}?{VkK9btk32G>`CjfG@vE1AB7-fR+^Uau zD9={$Qc-zGZWA`yogCcFf$Z;>`}*a944#@ETcS)ee~dgtY$dCGQ8N##i@$tLb9sb# z>osDXFHg&WJSWdZcdmsbVk6+Vyf`6{2U z^Z8x8Dc|=NN(-NFtP1=dA5cpN2o@5?t6mcT0NyYF08mQ<1QY-W2nYZu3XPvG42%Ii z11JiOpCL?)0Ue*fEsOyXpPUSg0Th3MkTAeNgb@L=5Qa^}1eFjL10lf#gJ3nj%si4Y zlbLbm1&pn&TDRg-x4JLYT4}YmVs!wi6_;x3+E%;SYOU68)^2vyTK@0e_hw5bi~jBZ z7jyS}?m6H2&bjx^Gyi$`n?$r!=~78yIxJzvcZ33F!f(Zm9cI|SS^nv;TUCE5WGZx> zQ;;T6x2DUsU0t@#F59-PF1zaMvTfV8ZQHhOPygq{#KfG5$*auR*SVLTcfC9VtA?)w zVud3+%Ra%_wJOv`a!`0tH5OxlX<5LW!k`r=!p}^h9mjrgqUneDwruqDX~jTz2r(bLCfyYB#3j?g zbn;M`Kn*q?RE7gNV42y^f|L;{CIfk5XDuIpjX;Mn$;kXC(2!7F>6?;f+Nu&oeczoIh+n&lyT510z6lE zlC#qaiZetds2kv>9t9VWIQOt?5jxYD@ufJS(=d=&`gv2Mv85>kYgs21ky>m@4xaz@ zH5aOPRm>_cuec442n--;LW>mS6DH50%FjSEiJqjALc~!9j^CSQd-T$_vM>0pv=4Vh3{}c3IKwp~^-YnTb{*aaZ{Ou^A!h=hHy_f)ilZ z*=TeCjPn}AWjuzA#bZ86Qf2#@*JHfYj(FgBPpuro0-}Ji1ZBS~Wls2l~b1_-)QZ>vCE;@tt^~jHbQa$t^F3HiqFv0zJ%Uq32T7h9|^W$p=4x) zEL(&z7O_W&G0dLDGdkeQd695GFgwxnd+RJ;5{&{d4lLNnq*Vh17_=|Bk`_@f;KhPD z9{ZGGgIPH4?aPKO&4S-XvK<4@K&)Tb+)tW{JI9M(?tY_!g&DV+uNLtgJT6>qn_;+DY&Swcnr2-B zq8E=t6cFxVp>ckd;E9kcbTtf^4DkKI@Z?j2+A2R1bZDW(rU@$O*RL8!VtPu$s4Z$t z;exh~GoAkS)+g};Yq&e9y$T!`wmf9OF*LV4TFY6u1}i%fJFWPZwdggx%}_mp2K%FX z+gOMN&V{KUDd7=tt(8^IRGvW2Zr$k5&X+hs(f|v_ERp=22eo_v{?#=rzL{>x6+wvD zeC6mu+A^1}M8BtyM3U06v-@29$h{kh;4Ot`-h@F4rQ4A+1C;H~^|4fT*}WlP4N?8g zb;$$c1Bg%C%@uPY*;@;jgdkF!4`)V zv}IR9&x0=|#Wi|}6&Z9fj?}~TM+f>HFwt_aDR*R?RvvOg9~YkRo{{NK7m<;CcgJ0G zDCUqNI*NWnb^pCo>44hbOUzNT%f@}pg~bGn*D)UYXc%Px^%zl&>TCy)b0Gr0acK_} z|1;Yb#1Z}y>8H>wLOAsuosiBFy$P}CYGY^fVryx0b6aI?W69g*AsaH>daG_5h4AXH zs84G3=9%Y^gB^zO_!#~xxjt~_oUIbv?s_*tWjizL?8L6ni6X+f>#75HN~HgkNnI5A zg}%&+AZ2~Tc;6vXQ=1PUgQ*=GBksl?Dr~dlfty48iWKJ39$_iAB+-B*Xb`LH!XMRP z5GxX0g|u6deuW%7y;X*+NshWlQR)OPzwFL~GO8fb`6F@=U?f*FO~gOoOL7V&PB#Hp ztnugVm0n_ChGCOC5-<3p2sh@$tV8yo)Bt4z`@+`qREj7U_DmB%YoqlmhD9(HggFd& z@Lj~{Lx7X_^n&AEX4BPZICmF8-?^jpkP)SYFVacnxck?!o(k)BpUMU7YB@@6gQx5c zH;K)!NXSf)@s+?w#zcu<)eJ~dJksLiLA+K(qkE``j#)1eXy9 zbAC|sSqd_RzSuQ@AUwK*=RaVtLU&uhLaP_Y0!BhW$NEvN=EJgYo{EhNf@_U&0_52| zzm&pnMV3udt_n@wIQ1#-JL@x_kxPyx9fRe0%?CS1z(L%)sP&UmC>F2>%}RE? z6ZUC_y~Xt|k0;)wbQoT#i&00$>BN2bu&W98+Eeb?xb-IhIl`>#$jol+PaqkLc*+~C zDlN7fw~EtA{gE3RBdE-%=wj2%1+gsg zp`r%|zP<#ibN6ziEoa^x?*5~jM33L#S$SrR|fUKzwj5*v#@;ow&>v~Ka_s)#h z?oR5eU9b3uGA?5k_5-k*j{67>iP77Ni*GC;iVDU#<_ijK4#HWICL)Hg7p}^71e`-4 zz8szaShV<{G7E)Ak9}519Ee&~)1Qk^`0wKJ7)DtDp$BLd;ZZ=Sbn;(tcN-_xr0y*a ze&ckhgj-}Q!sqebf?}WOZ3r;_^gB)V|_w#daoF3|U zIhM${?xo#U1(EWu+BwJ`5uE4t=^g_c9jlTEex-CaqaQAuQ`op!=rO*Id-@KVhpNZwi$GkbJY^MITYOHp_14P2grKc;=^Hbue{b~G-wvsqzV9scRCVD5GV&5pQT%1Q|eOKnI*ZUiN8T+R@UxsrmMx(;nVdWMyWFU8ivytu1X_CAb@Zq8yyz~=F#Av0|M>#o3M zT|1h;#nZh8iU^-*!X{OtFq5%geQ%n%2wpRJzIp-m@lYhi(FmIl8j4-q-YbFEl3c|U zc45<@OjxzK*w=t#U%?)rW_3GakXtAG%O*itIg8gHL4230_ctbbJh88ecwo;Esc)nL z@dWpGlGzf4Lfb1g!8p1_Mj%eS@S>51c;8NWdKYWkF_7$5drBwb+@nlgeX%{^ly~Uy z;v&Du!}I7;`R&e`O5jg*Fc?jpBguJ%1$$K2&q0vHov!C?D)$wq4t?=l$%EBVrC8P1gw8CEYZw z)WzW`>U?}?_p!4+OW1B#Hv6jQ?umk1!5_?)WnPH|>x9MnoON_=iL9rfd{gVLi+{j* zyj-=q+d`P0%kMrwFl1Rr_o#Ma;V<$>^0J!y{0qAxG8g%|&vuyuM>?<3`~9*Z<)#Ze zqAl&k_6)`@)k;_L1=*16r}pesS?cc(i>kU@t7U=wK}vOtP0?(ZcPB=l z9u{E<7f4eivSexw4+>@4MRMqW70*=ig=_n2=`~}s#z!B>mF8;c(PjYhp2MD}6JoD0 zkb7FPwrgAf$@bfCR{w}YkDD=}isa>x(d`L2dfi$Lhma!nqiH@6DJ2DDO`9zwIs4IXq4F<<=;=Eh)aloFL4f zHiTX2g&el_r7_ZRFAFtj?QzMR=(xiE^u8ScGSjb}f%p8QV^$DX@lOeb>-k8sh?aC{6u>lPK_8bt5xXzy?~-*{qt zh{8Qk5dh57SAKE`b`8xY-EHpq^7ooy2eAI0~s7kTP&U z{iAv!jOp1Q%C_1Yl1Dd5aYJs+bP4Hd(I*?D^Xz3oC^l`-G43Bc8-s zp`p!m8}znZIJQ-&*O%+Eu$|S7JeV*PJs#g%hf_=ZT0c#u97*AM^BwxD32K`*9=Gbq zdHMy|kKA;H`m;=r5KXfg_H!$H`8~-17_D$&q5MYw<|6dQDaBbhkpRHKF1UsztN1L7Q=_h@fkCV2WVTayLhbK05E12vc|N zX~~1R%pV*hXe0Qz=V@0fU;YR%P{j||*Yb*0U##HNH&sKJKc#b)nuzz_WR}G?iJ3rp4B*4;1M1$u}RQkq34D<)u7teUF)w+D&q)wt*&oBfTy6FQVpzNWZs`j8?z>JEekTV-DeC{tFhpn9}I*s&ZC{KG)TCPA&Jz zxwj)EVlTq(9W7<{?bVCv!WlkgzDY-n130F`uh*;9pWu+{ky5_M+ymz;(0o?g8>?%g zp*7X#a&N6OFeX-`RnP=r)X5qIt~XBD(mOZt!F+(H~x1_?w zGiXFT_5##O-2)sT5H)!dSK^K!;6|jMDAn_3bY|ve1S`l2J3j|#WFJduT$Uoa;vP+b ziLaoe zL?KInzgv$yeZi7>rgM@*8?~*fb%~ZUvsn&ba zXKDg@O(Iv!XcUIz2z_oFYXIR1MJ>uh!Y3U?r8jy#Ouu{UvnBPW)8Cx+_LQD2YP3&$ z9_LIQ{l*M6uZYaQ^>y2-6rG1_KA-tOT`S-S()SY|ui`)e0C*3`W&}I!ZT%I9>nSGe zC}YEn1774C_P4q^PmjO8^!?0*Zds;a{80um*KIot^=lR6>&kXM=;!n@PECa?!w=IK zK$0s*x)pFe6u_ZC)Djz^4LroIaVb*1=epjDZ{Og0F2pyOWnV+*OqBz-vM%=GfLGT) z9{z?{!uAee{6VcX*L=rxrm3!a0j{v~xNFVWNm(<4#~*^7yU2gAYzu6KO(FapF{@5G zM;y<=g=*kt2Eq~aO!jn!>li zA5oREQ=W>m)Ly!;uH!9CMWCEkf_ez@Y`oIzuLK_8^?7|U7xm1ad%PL_5Krt&1?lJB%t!|;%- zN?Amp^A_W1AM`E~LsP;(rkto;b6d*g5+goQCjW$Xve-r7Cg&4eLR#XRDn3&-bDwy; zi1-4K87(8+OG~Yeu+TW6YoKAaqIBBhba6e0bz3XJ^YH5rO_iF$|FK+^)q)Lo@gi04 z>93)V$m)^CpVf~l411;h`(;B7=`jUr%+RM>i(G39s+m@M{nvv}GC{18r#MZl7iQMu^C7R}l5?$~;ml>N3-TYLgcy!eXx<w~#j^W=KZw@sMOvr&^1nlPeP;!a9PvOQFl+jC1&juk8fWtZ2rC~w{fPt(Zc<-_FK@? z6&js!I(0JJ>m~bUhYN5*{=4Vh5L$qwSoBat1M5}ws{L5r@{H!&@2GEnHVetPI&>Ca^?7q_Bk%QjK+) zKfisNVGKuo-EI|Gy<2b0Uq7=3znKj0omwIX6){*Ss*L2R^E0r4Zl(M`c<7+4S&b8? z0u)W!{0;pktCw`x3Yh-Hr8=rL9(&GuJw`x_eg|Sn1ABn@bcDxIPQL`W=d%7+mAR;i z5B4)X?2^dT(ujgY4f;~qvtf@MV2R&Ea#t!i@q(Gi4(aDsjtSU+f4&T(W-M);*-%9X zX<*R7#Rs13Ig^E^nQZUv%+lv?4IXs9wv;79mV^0N$V{ES?RGLpPm7&Rc3xhYU*@)WlO6NH*1G;EgY$lH5nqz6|eZ=!29E4 z0p*9hUcck%?%A>HZhGhg-1Unp_*v@xcu;Pb#EI%HFERx#EIP^a02W3483W2qhCQ4C zNzo^&k0qaRIhT-n@vW-HQt>2&CS6MvL~7ut+I@h+l~j;cwT)7mkurFZmNv(yQRTUGstM&yxJY|2#B`t~+6TmFk(e_2+$Z;u`9FX`gnM#yH8?O*OT*N}U>wncDUL(b809x!lmjjz61oSAVi+Nj)roi*w>#z>^R}$Y zv0(nuC+8dt0kPJYSAGl;*MYpf2k`SqX(oUq$3`|$4Qs^{xjBtuMplJS^vFvjiqtES%+Ls2L%Px!<2-bq%Y^t+QJk-Tkb1a3 z@M)fU+KrC(Trt@!`Ntb~m+!Ev`m}5M@g)*Mmn3Wk`c`{20@9-R#kG^MV7(g!T^mr` zir<)>JrWIxbS#z#ei77OJ{|(yEXPX zjD#v&3Matdco{qp14$2^jJ+mDFbz@km4{8azyceWQe(B{1j%7Bza8cB{29%{(lY%bHb>&l5u!_X4?>b2O0e z7-vOshqG+nswMT}kWt>X0`_11QeBnwU{4hTlqLJQ7isEs{YCDD#|i5J-%o(xkF&23 zkosJ(hx5MIqhgx8GW5(IPrVxwhXe4-*g}lSk(;+)&)Bn5yPtmSq;w$G$jW38ZY4xd zy_`$~(sivM*p!()y7r^-y{U|#wFAt@B*Ye%QVX^=e;a1)GMoLiqz39ktd3d()lfzj z!L)hu50iimdp0-B3l*e1ntia3P@U zi0=`^B!n)?DXHlsP%UI7K*{p*j;3UpWm~o`n>#WZ6)hB176H42w-JQAnaac?hy+gs zgrCsg$TN5D<{U*s!|bb0^KCp%H%>Ra50{%?UpG0v5VsiJinURDwIrA6dT7z->sqo{ zR@1ok-!`v_0DrmQ-AJ_s6=9Z%^P~Pq%66D`tY|)Xm-6=XuH?xJvoS5Ggrr%xf?RZS z?DkE|E$AM>u=xx#90RCDR+7$LL&i(l7BPz7^k3o4vzz5~SaQX-dm5_R?OJ*+(e3T! zQ}q@Umz!J~cka>3ikWhe($}&A`VJ|krw*eQt8!{upn2$zlC2i z&3OEeN$-cp^T&WxI?Mhxdf6+db9Kp-K*`fcWfv_kRW+i^s{i9TSV%BYlj$HlZxOat z?b92(e6tVuI%jGZPMWblCNmCeSj#lP5e_NkuE)!E+8}0451eIL}t!#32ro^6CGzfbD2W zsiJFi;9k+N!HM4M5b0?0FYtv}7gd29Qm}>qd6Lj=sYW{Jh$iDvRsp=#X}6pYo+8!q z0IebsgH=+NRbYtY(oRvvcpfN3MPpD=78*HI6AKVI+DB=<@Zbq>9~=$`tzp_C4c8_m z71h?EdFjQt->Skd^M$+(Ja~kHBza0r&=by*)&0pOv(IIiTvERV>9tiV(_`Z;tpgI2 zl1!s5PaowHL&-PFYsRYSA{``OX+!*A0Asl(bH}pg)Ai7MLfTLn^|X6*lQgNuq0L)l zoHnypog2tzRN8Jjir7WgA~dKhURn~g^nVWQd77AO3vKXlubr%#G#RWkQp7th@-6NkT*LXT16G0CW@~ z;y2NU^)2Uj0d9_Cbrof6dwH9Kt5+&aIfU3TJX;z{w~T*3UeotRL-|$PG+nd2P=gvK zs`>xS=%mkYzJJck81*$-9e!aCmxytaS(c#UKRW>0eVQi!@dL- z9Lv0S%Hvc1ELkkn#QLOn%k_SPnePyF+7do>5Hd;}cwh*JfBDf|dg+)WjN3#Ge&Uwf zgr#=N#_`;N>`4*ti=<4hZxCj5&SCPrVfBqb@rm8UtTw1&zm%Was*yWEc3Sz0#%|?V zVerm`XcX2ZY#(!9$D`-BQC=;+T)RBE-#xw{{^#l>FW21#{&#hr!TkTPP6B|Y@`3`| zH+>bD5lmA(R4A>Q1r=L3Zhh(BOK_KUV91dW)~-gsSOG_EJsn^FnQu6AFnmHhpSwQ7 zA@_JS!9F3gc&}@|4YzAIIbQ*L#nCjR<9`xjavyc54FQI1&@*yDIn z5e`|2zuQhwfdkvOKzpGa+}~0G!hmv|d3`YoA6(0q=x0GKbJV!9nbhr(Btono5`eHX z6|?mHy@4a4&kbNMBXshk+|Ms2^zxt`P(E8sRTr~SLHG%F^=O-y)NcfgFCf}3FS#LM zCr;PP4m}OLu7RgZD^eM$aP&tKS4bFqlQe19&sqwhvI`4O;*zK{WRxJCKktY!L1@`T zdF*f~Ks$w%Ram`WOxsm8 zC#R;Orz0a{uz5w3bI)C9WS`eIA(m`UEO-cYjBv-{fP9nI5L|Ts@;p87lF#nJjHOQ& zo5lgwlmx}@PfQ>}Nd5<)-zy(ZnwUlNf=?rg4W%5b9M(Z$xT@659$P5Yu!JE;4q#X( zr7^NApAl?37?o%QPo9Jk9>1|x*@BgBC(b%ycjWW6SJe{fM@K=K+4I}SiaBYFy^qG{yJ1kN)3Fi9W-$sXkfk*j@i`+6CD$Ks?4bL zZVF^cra|Z{i}|`gyYhgp{EV}En&WzQ5Q{Mr+mOl@KWfcEk-?E5u?~^wK4!2W^RQ}6 zf(6Vc$l`tm#IFDlc*#mkyJr`S?o>P03i+Z$&ss61Hq~gjK3#a~jH)NgoNr;KVd1nu zI_o&g>`npKBELpl@G(c8mt^=xOUu0O@RwVObehURab>Y1k+%f!ZcA4LrRBrLjg(+d z$i?U)E=F-(VzoHRu*6>amMj~GaB^C>hlC*QZg0aXvz7$7LsCgk<^C=9oDyl7%DPq- zyuXOeBJP#B;I{0A*e<~2LNfLXnsrH!UspTB*2=S9kF}EgAk@GmCgesCraf?*ib7gV zDAfZ{eWkm9T}qX$%k zIj4AlTK_;6qD+tUO%r=&&qGR;J!`K}?h0Rpj-RfMtMN0de*x2^lai5A4Ha5ZmSMtO z^f6+wKueJt54vXllG4Op+md^bva^Ac0^#rh?&1NU5hXJ+hdpn87aYmKB;vwiIr(9R ztGRIE%|*X&3;hRKEGUW-`({^{dmTd7iYZvvBW|jqykqCOL_Gw_#(vpZks}r|e3bFL!SYvzkGnE~lqsB@b zwoDlynM?#r7Has+NPtWLfT>|x)T%L8RTuhg=N_shSApNiK$)Gs8q7eXKhSR&Vvfvb zx}S&d?LYL`-KPn=eWMso)7SzgeU{N!3mEm6x$$XI-<>j8qFf%XHuPyMu4V__Q61IK za}|crPUp4){0*_-sUBe46pYxa6A075TtNb)w2%gL)&0HTmJ05whQkTIwUt$SrzXa3 zoZW_^T-Ok2kBrc>1Vd!>4yo42WepI?t)vei_@fCS9%Ao^=5rW;Zg0-Ex;>AKM?-ww z4Mz|KKF(lV(ZXAj%Y<9VF{FAu7M6v6A#9K``L?{*@>UHA`!mTZS~u;OwfF zhhB09$LIj^dmk;&9RfPDzz)Bt`U76;m7S8Q2&wBqRSifrUX{?1RhVj!gTQU%_LI?VUK3)w)3Br9qNAfR@*{~2cHg#Wih z04B%aA_W*cCzm4<7z&{6hPs0OJseLLE3OmSCM**QEQtUmB#rtDY-HGAg$aUd7-PsZ z7U4N{E;0=pTNovt-Il(q@FlQVHe*{FmM(9V+(CMw5!!OaYUh11g#WRqC%<9`JIYjZ zIlk9=Dzm`n`FnbMXWKmIZs*@R7kr?YT{|c?m}Q=Rf|Z4S$yPu!JAI@`4#%Tb`&lrO zO0A6w?g~n<83ILgHa5DYx}baH@1TtW(;)xgYp$R|>x<)CesIABZEX_`%c&(g<-TG& zLxhWBiPio($L7shN!aga*Yz#Af>4%XUB(Vra@>v+=LI!(>$I@K#ar4^{hRYMr~a#^ zvu=S5I4&18`vH-iaX2jgd*J9}RBWJ3jVU&a(cJWE*IOGFOmnG5m?})ND@zt%+aIQx@PLGboNIgo zCGtH`OesJkaEQp;zeq1Hvwt;;Z~k2wj!~;h&Ag9L8Ck3=^Gdl6ZsO?D0UiEr4V7B$ zS3j-X?b)tV+zgr8+3n?;W#sU9R(32)MQuGCS3S%*G?SYGJ8JRyS-IP>3`RnQ9XjM3 zwK*Sk_T-GGYGYnfko;@+{=m@sMIzBtnS!Z=bS3~L=$CY;uc*bUwgtkxk%B1Q`QaYD z-dL%6!HEf7assiG z9S8s+tD(9yJy^j3I#4$I))=$PW@*u;Q0NDolf-xh-PWn|CD7=Yb4%41u@%ogY*la}J_v zLzs6cai0X_|KLj+^TO_kN?jh7(8E}bzd zHI8Y*)s*#5*(Ze9>m<^2&@x;Z}5&nbnCvRZRl=&(RF*=~9 zmq9aS-&>9)GoGGJ`=JcUcj#I_?~UUI=773-Y`o_h|4<53w6cewXNZSrQ(@Md!7V8~ z;}w5G!`%pD>)ePT=0rw$dB5A6BuAwV#~Le4xf;Qw&($M~^lWY|Z-Q8jM^<^&Hu#v+ zpY(DGJR`nAnAdB#HfILAE)4ddt^ttjb)DvSc^g_svEuYB(r&!FdO9~DzM1Ld=-$g$ zNa&ni32ckJeUQ@6hkxxu2$mC#u8aT%_XUx;4ydJw{=5i>uxjm^sUWJ%8P%?8fis1C}n_9!=&>djDa@;*_ zLcO+*adW}nUBb46xz!8>*v~4u8!Oca*l{Ah{RItst5I4SmqK997SH$R(B(9$v#~3# zC5Yobq7T;t)5|#EkNU+$)$J3G4;K&ph)ZVOoqf;Krwfwc^xxoDI@X!pbAx}_r7vbr zSszdK6#EQ?JSadc@j#8=uo?iA686Eqk}cK~p<8Xu$EL2)pFM+)|pwfQxhH#^(vL% zUbMJ03|_rmR8eD}6Q$Fmlf3@5RQAQO^Jl-!5!~^}7lu^q5}*{{zXz^Cmw;6osmg(P z0dK@7JBEDU%~-0-Q4WA$>wBsD$MX%3oks?~UiZuGa896sb5%zn7Pr0#C%m$T982;J z8BUN!PlIF3&|rWhG^imm|E{2#1le|l&;EvlUIwIlXebZ9$Hq4W>Aiu) zk#58p@Ulh0x7_uTrb};_nDjB76Tgn=_(WV#+@&##K3F`3^9;UF!6g}=&W$TB%|x76 z41V*FQSc5bi9?k0)Cd0Y-A0eJh8b?DR%hEjyTg8n+M&?AFSbG)RQBt8-5pDIr^aGn zoYI}GzkutJZ$!O zq9XrzM^8(PG!JPjCCpwM4ZsZ=3_y137c)&ZSIO^fqG?uc)Jo0<%}4&B5uq`c{)(*e z|6Kj1;n|XoRHHJ1yY2W0|H-3?5`)4cv;EYyk_`b+@{~QcDUAN zc6K@;Yw^k8W#KA(=*?^*K0K%boyP48ZwtyPZDee$ zER9nhBOohmC3w@bv^32-O;Ph0$737fy`at36T)y=X&!NF4#BUv>c?~j8YTh*AoxtA z@QuHQkR~Vv>J2(RRTQ%J^U>}sXxx*}A~X8cPJ*4Typ!5J!&GI!s-ufEstvJ)M|kZ) zX=>vQ!)8qDP$bR(x8K+cuK7ZDlP0b@N1CPvP5yM*0q8O zbWqn`ehTFtd$q3~5&ujf9s=M=()0Q8KW0k|e+xhN1i<0-3YJTCit*{cB{71o-9dc) z!9;KK1qH<-O})Y_qO!`4-6NsEEv*BGH_pvBhN57DW2sC-wHZy)3C$(F&hqA}6d$j~%hY#psg%au}x>haVj~;wa&^ zhqkaW*5%o65V6i^*L5Qo=T0$mlP2+RyLCO146$y2mN*0c`D$9J@gK1B=-t4J&}ySO zRebU6T(+nJXL-?uI@V}$Gijm~<&iL`uQPE*T;`sr4pJM`_0S?gg8gtN+B_eoDrFNU zPj!$#buezVz$jbp5}@yJJeK$GWj+*RI0Gb^L#jHxjynBx?wpah?o!A%_A!pUxp*<9 z47mUWP`-HxFG-%FsO*eW59kAQEpy?oGYM z-rFew%S^0#^C!-9HQHRZq&{J|dT32>&~`^M5!MK9SN4sT`Jeh{ZR$?4 zsdy@PGd(XQw-UZQ^1^mS7V|Sb!BlKGTqjyUQ+Ul4iFE<0xi<-4*-=ul4b6&Er+J!q z&H#&9*vOncF8ag7yX3?H*R{mxx^c0o=Lk0Ykh&-7zg3&(4J@LDRYhOol2yi5c` zkfD;HlHl5NN|3>bLqOaD1 zvsO0WGR+QU?b}J@`9*fvE5zAP;s~Zrpt;Zn{`v9XT?GQus0 z!uZ+V8DYHl9a{O+UrEAIwg!3w&}L>G2)IRt;AqPc0=cCQEz02V??lF39n<+Ma2Iqk znCNs-RfCwdqi5q?8JkN88tn65!3MS=GxGYuP2;4V$1!R-NXvwjD8sqJHRGvq>SoyOx3eMq!0B>=;pcyT568&YWb4p*Se8uci-DKjZVnWQMD0P~DU0bXN zrn+m5quiZP`x0et?{?JD!Wv&Y_f4!m9M-4GQRH4U|0b>>c%jJv9J)CCyd{NuQcj?D z1l@B`pN}W01iq+K^(UMSH2+4n*$R4Oy~FT^B7%RH}*IVS@LJl*UC+I za8Jt;-en6vxVr^!LQ2h%x4Er0c(#SCH&D9kLud5FD+_FqYtU4yq(d3@hr+Z`EIGQ| z=4sOdej6epNf1l>oN@YWi8>|-m|@n&MHxC30(%k5vL0^$UgZov_>5?6%y0JI7xBIS zv|1w{e~Wtm(EH*EDz0f(qh%Ghq}+yd{4ct`Il8iU+pW`gXq_`erwLT=4wNF_^Wy0R{gxxytjUEU`qC88_^xl zPqzA|EZVRw^Y?qF*q>KmLB?W1%14U*&#+VGXPC`2ca!MuZ}>(rOz-FpU^H{(Xq@L` zZgvjIfXW_bM#?^$5}B_wi0#8{ z9c>=r@bmwu@#;9Am1zXn*1`<@6$1E&amWCOOU5`bDw*4)ugSFw1-K-zC<-kVEJhc= zo%QeeY%kL@i-ElB?l|ie`!dz7v+7u$KGIvL%Ct~j=*-aXIj^6hEOf0g&zB?P4{Twl zeJ6;M7*LaDV>S{{#dYB?AuueHWGs_H>hz<3Iz7Yb;#sy}He=6nNn>Sog9FDXK=mWj zH?UG|r6Z!_^{FXPRs*?PL{0r;3?Muug5IkyEjwdEq=7%zkk#$9_FlVckfzReIXSiw zrql-7(Xgpt7fBAWyYmJu0>|cEnWGxLBzADMP|H68FRqiz=FcMQibU-tb{Gwm1Cx`` zKt9F!WQr2(N?F|Edo~g%uZ^YbrKA0u-+&Z>EdrL1K~J_b@?c+ksMy|*djGi~P&=TB z-9mo*hUD=-Uc%Xc>gOJ+8fc%Ff=5%b@I=MI-W5&7az@DIDwbJu#Y>^5-%!Yt;-MoV zS{zwi(y`JvvbKCE1W~C~-)1VChandVtF;%X(TY`+?Mjvc#}9!!+Wt?SfIjei{SJ~-bL2)aM$e^fsgg>nyYORT8?+ml@fYV3;5JSD5gkgM&o zLJxyWgGQ2(rf|&3Hw63@OLgJ+2h6R^ol61hbM-JS%8E;h<_r`QLpmLYU0<=F@GC?0fGBVm}*oa_)RX@jEJm` zc?uCFB*MuGh=8^4C1n|_Lq#HByTbLTN50jPUeaP0Eo}nfBXHWJVgLX^5)q$}KMF8TD!jv4;M~3mABdq0QJaa!wu70?)ZD z*^5jVFvro^)IzFGXRtf?sU4Y02irb?fl7HR`5@>7Yuee znZzGpP6+s@&rRI)syDRrhjr3AO#CD_jNWa(G7=_qYG~${@ix&THIy00keFCDWms1t z!uv?Voz-c&OK=HY8F$EzWI)}CON}sm+M7_m1G`ry;koCkrSsqx`IC2>r^za^PE=lU z2u}(^oYjo55m)wC$5dC9qKo?wpPZ4)q?gZC3oJ7bhSQ}#kOHQSo0O~mAYFAUReM*$ z*wYhinQ>}qG&8#IxOl1#9@n2;So6sm9|MY6qh0708NucZ zff(;x8f&38tHEq+7A9ugG`|STh{pNc={0r;;hhHA50P4WxLFkdtg;LF*DU1gg)okw zcXeRoDc=PQ-s%zkCQkGcpMAA@}JFBhN{v!4&3vV7*fkNxn;@AQRB6(#2Un zf8Tw=Ic|)cXA0Q&6c*!PfNR8!cUE`M0+x%>EwqP%at2VaWgq-y9Q8f(b_?~ndjYXh zIN)W8?Mu5w^PlzJyY&N|?eEcK#yVFZh0Z!kJrL&RlqSOUtb!=2wgsBYf0_ch! z`dX||l)Tz}pWZ#!eaLPt9Yk1<7pps(WpA~3?=@W;{r*heQ?lzd@Db&uWZ!e|1thuo zu1~swjTQX_xWtRTih7_3^)`+;F}$1*(ddkq?eWBaSj!)k>qUb~UnGeABm5G2oMn2dgS0*_6mCoWXD z!ismb5j7lBe9HAC<19kwLQIZ4+4rtwO5{elv+wr*Tom;8S_K&Fdvqo69y)$|(Lk`a zR(7F}yLNkrCH%Djv1Mn{QwYW*&e08hi;m6U$voKwlWGM2_ea+AC$&SZ>GnPme}C7a z<*vh$vd4G+pWjYmVrT1RzI3eu2kN~R{w;g@y{SvGIkKi!bf;ysjd``{gSUl|vgNo~ zwAsxPwq75sYqVR%G=o2rSD*`Mrn8rm*DOX5JZFr`qFur#wS#O62AH$wHot=0IOROt zJGcAn8(c5lbl0U_+CUgW3U>qe1mJlDTC*k!awBYji>ReKhFx`ukh$C zhd1D}7`Q9)itutm%$6usbxNfzgSRlU5i_wWMlg%nt-#e06svyoM`}%IdT#sF>-C3z zp~?fy{U7K z7rM^D|4$4TUEYLBGzc`%#^uYg;V%!hYVMO?0ws+^g*{%1p&>|zY)@3$%qA7^VBDQ& zt1u6`-k7l|ch2}1vG)ZhyZ;;a{*HzK_g?@oXumV7Bm~)-xzT6K?>g<6@8y2m00`-b z6dQm#m?8MO{yQN6@6}juO=h-p>+sMVP>dCN9bsqGDa>&>Ji-S&4TfL_s3>!!q_!}C z)?P|{MY=!v%7yae0zYdu?u50rQn^ik1!qzJ>Q(@uffS{U-%~45^UN`t;8tYm9f+s* zI%kFrCBcP&ki{K9lt3Q@g#DB>Di@|&TGN3$Wrzr+!4jv=CD}mRtvcZ`%H^X}whwLC z%Mz~bylZj1lBon9#j4%Dm(pnutR_FD&JDQp8YsgC3VN;O{yEdDoYASB-CBv~uh@)? zXv1uL?d{8UGLlzvV{{5FMKT_WqD_@^r z(?o-Jlhp}?z|l86uH22DNj-Qyl}QkzVc}#PmtY@8XeG*zl*9`pNlyy-V0A+FYqJ69 za<0Lyek3lC!?BU4nLcl~tGSLRw)^oC8`9m+&Av5T2k?@{hHDU6C$~vMHq>adixQee zw++iT>T+pVmNC&lkEa}oq=BZ*3jH$PaUz;dUJ4(KV$>-ON|+IW94d>-gt2?65~{LP zRj)Geebk~{(Qg5aO!x7JwnaA#!P_#uutbarQY#h^{`#33`>{E<=<3wI2+zZajX68U zs)Oov3rbiGsKs0dzV^eLH$)3fPgBI~vQ0nVwUK&I&LPJHEe|C$xs*LPiZ1MG_{XlU zvJ8)EjUHO{K+p8a+U~u!Oz%M?VYsX(qO^sHR;YkyEOsBpTb)5!%FHB2U0&T6X8OVj zt%?JuL1Vdlh=q|ypf4YAA#m_xudH6*q-Ouva0(q0`hAGr0df{2!gk`EtQ&$F@w#~K z4o!UT!IG$WheP1$CyP;DL?*IjJrq47jUPFZm+%X8v(5}tZA*F5fq~XARRW_%;wOCK zS7Tf~!%l=>Zu9SYXY^KhB;Ksj0eJm{oq-liPaO31y^4JTU^N6zi3e5W@4$WBKBY!ENf{qb^VW5d3rI zdjwX;hQBDc@~?CM|FYV2K=%JKYN^@%GdSdLA5E)ePd03gwmnnYwp*f8FSbs}J|b8k zr5L36>ffk4aMqBu+8q!(|2elkgN4(abGlOdp_G%`sU^fTXKJ3*c>KY8+|Kd&{x)jx z&3p$_k|{gNv~8c8xj~JRy|}xu_gqiUen~Ks=uPngY8}NNIInNdn;gr`*vClrQF<=J zldLoY?-od!)UBCh%>hNQnYJE~c!+mO6AIFNDBd1dVR#rH3GUpr`&yG}g4qcFI8n=7 zEYlx4@naVc9yEwN)-atUh;|T3h6kWgKCJE2Ni>KydqX-XN#+>bN-eC>OYs{vOzroi zvWBnBGfr+7kS1Fqv9#SnEwIiiD%G*2xcl;Tz&%hA8BFN_qNf{kp;Nh_)u5=mol3;H z6A$*5(fq|iq6HOP3__j>cRS2)+SnM?0xsK#(?xO=_t-JlNRiVt&Y1-;{~2UvrqkA= zr$d=m-WeFdq|5A>FygN^eGB3Y$S74Mn~rJKzQ73s`jYKNp@fOMbAT^mhnej#4@Ts| z<9f*=a;maQ4Ko@YzR~dnQ~8=2W*T+%Lc!wwRE1WI?eJr0`l-0p(Y^MsYd8h5-6IPU1m;rdwU@TBWH?V5Fo8N`OiNigoJ z@Zg6ZuJYkF)|VRo`RECGU(-_)I^MGno^Z}lrECX|gKP7giFxn}7Nl*@U{7XmGAQ)lQLzu$xkcQ*{W~PJsc+$Qh+8kiID11bS|Z%oG0}L2@Kb78|NXt9vz6F zzlZNXyxG&*Z1*z7ODA0NW#@b39BTY#7VKS&pxBvq^lk`(#q;I7yJUI4!A+v->PvyI z(U+lkqG)qx-W1vek6aW`(gsF4+f@cxc|~Si8QyYLQvJN-U=}~6@|u&>=)mA8D|tI8 z$--HrtGmZEhB2w2ttpi+i076;&FPnFD5Ki*``v_m`~i(%yh*8Ej~_R(7ya<^FBkLr zXlh%}*Lg4f|D1QW|2AgoXyB-!{*{LUK$nFmN47MlQqPfsmsJy2E27QKKqM(*(+}gw zlZP=felhJRmi4ds2!HYQ*zDZss%!tk5coRNeSq+{ZCIFt!GI(+GrLUjzxDKXPrtuT zBM5-BMKYj?VotRWtg^c9R^}F^gm5$D4gX;0tOOGNo@uPHv#zYrLUU_rqIXpgf*h=? zqYfogm1uL{On?!Vvu+{mqFY~Wqp576V9px2!{qK_8^r69g>aG3#HAR49%SzFz=S}S za3;sVDzxgPH8$iNDadDuWp{NMni-r)jR$OUIoB)JrUtXrrpWfsWHq`?>Mr1lT#4+x z6ai`BViPrdTC>R+pja=~v8uJ=2~j!f4Yn-&)B~vRPrgV$ zE~@P!t|#~21Vva}ofjS@#8>Tzg(h`cZF5EJ0`!#~Q}=EZ=myox@I8%}s9?kParH}e z4;t?8+b5(;9a(s^3{S@KO!4AOzSUB;^#K`IB7<;ijpGY8QwIPj5$4=U)x*?s2u`}9 zfd!4`ouPneqKscH<$^+yMn8{Ma;w)%&+OGyH(8;~#0r-2c9-dEwX{QmNg+7ImQWUX z(SjwNNN4E?NN{UK%uXty7=E}tl_F$iaMtX=foot*;e)`&axh6FS#sxe1`YAu2>^dg zs<90!!?rS8MMlmshMvRJAhkTracx2D(uwPreB@)2>p>##iHbYJjjU zR+Iv8uZ*G^vFo0BBowgNEWn7m@(j03fC;7J#2&m`$fZo!uxHI-P?F*Ya4~Y9 z{s;~AkNhw5Xk1uLz!};M7CpJSJ4`(f9;lH99sTAS^Z|bVU&62}s7VsSs#8a#8<`pZ zzFQ)G;+YN~Asn)xC@0!ol!#ok(D{hLg!teQr9gRp6~j<-?Dgc>A*02uZJ=+%66ymr zH7k4zt_b>-`1}ByTC4US5}m}r`M=(}Em{5bv2dBzQ}Vs?>#^JX%z4$ODzP)EI3ayY z+HC;aQ0$_UtQ__Ov)P<_*QAkDwJ}(SNqQGfM`*)Pv6lyP8}3c1rd~wyk}Isz%w_BS zx0X4B+-BO{V!27T5-1P80$?pY)OA5MPEPr?O$4!9q?%U^nQ&qt!(Lll*g>`UryV@3 zP7@-lwN>eCFW%2GiLC_JM+wXAFqMa^!p%Ha@(P2p(B8pQh$)0twwtv$NqT{i5{S^z z!aw){0{v!dU5kC9*GDM4o{<$$xx4P5EGBprJMTz$A9!#Re1pngyPO#SaSswWn)W*; ziMUof^JSD0@!I4ODSA}K88(J?r#jp1`rh#I^9RT+PRLLiE8|7vmY!JIp9JE6qK8?=}gamnPrEUX7aJ z$<^+8;CnW~-F^&tbLZVJV4!$!KKKaf32Y#>c+1W!I2*w+Ld z2lnlo^Zzr$_Ky%x2W0*45~lYxzJ}>v3b#p)XGKMz4ML?o-cn3Y{Cy6cj;NYSN?OW_ zvXFCAc0T0Ner2<%sW5!+cvhgGb*mgvaQb$KOW*4pcssYxla+$5ZS5@2e%*6F@iy_s z^>UwQ;1BAEX<%b%ymBt%Fw0!x0G3NBWg^W7>!vpiM1o@qjioVG!fbK;Ju-BGW(9$* zjhQ${r4!4_d)ld{fE7-QmC*%A)xAFBYTtoi?xxK7Q9zd7`kpHyn!XwA6#qjc)dZXZ ztK(5F!EYW=pRAMU#K=2XP{0;o-sCbg+duP@M$jiUHoca9LfS!kVlAt^L> zvSI6HFYgV;g9cN;67k@sqW*pDz{WGy=*@bCpnB+*_sMca&Of*+_7J-)6_jf?rFgU+ zgF%tDA)}(g_SKmi$jy>yv67&NfG3-e!(hDvoSvEg1;V8-j4+6@wqju4yE0hFq+W=5*K}&s-92}lWi^&`Tw7!aOf;r(0JHd@&y4yqTc!E*@ z%Z0;PnTKa;1;}*It=1WXldwavym8k1Z^^faMkPIo`wzIG=vyxTt2IBb8E!DVCg+5EsO1RAldQ z#+`C+YVC%I%~f&yau3+G9CiU+cC{Ncpq406j3;*r2G2r?rBo4#){0_2=62?i&?1rh zF4j~v%7dGBLocEurL0P8q(h_3rdiY|x!N{y%MUile)pA$E}wx*rxie8PM6dNB$bU# z9I#cJBz%8?%71lFxi>1NUFhU9I%_S)f%a`J;+}91I z|2W-L8DfJ+Xrk*GG5WB=yDJ{86sW|F(kz^(^GcoV-nXQj51GA@ z&7ZTpNCrf6lPW>kSS%?2QTJH`GTCM3%X3i#d9@DRBH1frXu*dNrI)9>@+m7mN%W|K zjP9q~cj0E1XX{!G9Ks=q*1m6i4(pkxH(M&pBypWQu-H^mpz6|I|H>BF;-G z$YW~vAFs&wt_y1!0VQDR=homaiailbj<{sz#f;h`5dgO(LuJN+ro&#;&b-6c9Tfg;lC|@6a0}@Hq zH1awm(I1R9q_fvAM1vn36;^+JhyACA<3{Yx+WabrDF2#FgZ)3JdjDM!S^ixSQ#7PyvW8;513Fdm%LfoN;8z)Tt@8+I$`dxs6(*WWDC{?>JwX7 z<6DYDu|w8vRyTFTHk`%u;u!TpeOt#JrO}fHZ#eO*q#T=#u&+P?_d)y8sm;s>i`qy^ zP@(IbsHkA^QDe9vl*Yf{qyxr`VCtE$t`Xg%mXJ^Y!$va8K;!C6yI{t`rdTgNF(WcvvWx;ea&TRK#xb{UA78KH553liA*dW+3k6%5K`iF$*osl0ns?Tl8ZJ zUUR$MU~>$wYz~jMaBIlX9A|m6)j%4Kd=VJu)BS_fM|DSMyRAE@xZ?$j~V-h zd_8~Gc}zMxTMX0OoKksh@?@9id;Ra*#Z+t6N`DsSG)kzbx zVL<;%fAcaffJ$hQWQVw{-3;==;M+}cAcf>pD0nQ$1x4E|-F%6ZJ9|VA5*PN>0v>Z+ z85jHx)|rCy3h71L?jw(vE;?=z#hf^Ffpu5~pv0Q1W!i~14&xodX3iFYMS8S>t)thJ zH;hw1`OJBt<|REm?ItoX4Qt^O3wgB46BrXX%cio0T1C}Y_ulS>H&p*s3u|mqd z`kUh7NOK8H($R1cvILHv!6+ybqwlFbSsd}a45chTqW4{Vg)BU4?Ig2xS;*yMt$;Nw zryx>Us=C*+uJ5LPdx~Xd7-XPTW&1^|Mi;J6q9l0Wn1wM`59i0v*k$2} zuAszUMqjYHLSiqs5*#mhKZQY8Zw0Uw5N#ULD}fXWCYlhhly<5OKYX)G3&mMYeYFhX zL#mrbP2Ge6Ke%<8TEhWD9W|ILjf2@Wkzs*cF>9!E7f0w_RBVldw70#oI-r@jKg>G4 zk%b8aO`PUs6-!4nljpvQ5$kXb}|8}O{mJ! zQN*^bWv9X&I_?~Y#E}|(G{oVNkr;}i8BS-0`Fot4+@SkO3_Z{J2vg5TjSgo(_ER!D z%2V0K&(FM1f1cxGVDAThAF{5pVjtr=l6&vJ@TwXpQ(k??ky@HUr=&Q8 zU6sY{0lTTTV^NN5zQGt`4Ld5mrYt0$v^GQg^$~VkM4dG2Ds3~!ruAPxVal%>Gh^oT z8M86fu*(kmr5o9M3Qt9{hZb^I$)E=9!o!0H5W*-8C`D5NLX5@~k;yQ!lDcyS>=(IF z0tH<>z*76n|PUF1QDiERNLMjTF<>2p^2O67E)o zm8SJ2h=y%LXYeEw&e!;3AzXF!>}$^Bqzw?qIuol@Vzf~mk_qD;ZNh|dd{ij*O>tzW zv6yl2%#l6^?d6M+NOPeTOedPL;QC@D3Wzu2TLYz4sWg8v+5|Q@(GGx`3eBHxQ0WZR zov_29T`mGt?DP!`B-F=#8!LVaNH!D59cxCK0fwD+m&gFM%{F)Tp^=v6maYm5O2B#Q zUrR7QmA~A?;_?u&VTc9rL`7I?fRtUGVwO1z9NzPQXmU06bHP= z`L9R?SRQNJ_19hNuOO*?E>|5({qJYYf|&y0dNYRrH>ThLlt~c|30yv_GHurNtfo6h zef}}<`YaO!WRm;dY@^l7qiq`LIX2`oh{;o@!%e{s*$1k+&?l!SrcwPFen7m(Q$Ttb zR%xijIT7+>LXPsidT-K zfa)pf@pLyE^hGxHkDRuFR=2AsGW~Trpx02O!ZYke{{czIPh&H9K#FA*Ezn3Ts zczzlCXkMSMb{!vYA*9_Sx7@KTlzf@<7wuAh-FmUh(6Jncg;Y{32*7J>FZalOy6n>6 zv((eM@9yGug;?z)jy#j@Jva&4RJ~+4$=(J7vdW(8P zB-I|w(SCwGR>^w86S%}a6_4tRHDvJ|_`N{L43cYWxC{)cBcuZH;TklHS&TpLL`_rh z*>xiSnpBwkC~QBU@B_Mg85Hf@%1j$7K70m zRBjUfF={$=WJ2P<@e2OQ@t+Wp5Sl}I=*-F|cwlPzB!#+tk@3t>(mQUrv0z6b--A3; z&7!lpgEA6t0!eYn+=gC|tI1xwemfrZW)<=J6n!JwexmL21LM&W)XGs}3sq!|9}^*E zOop01JS6&51m39a*Y_!A&ix#;^m+TCk+1xkBNI~8u;U_2LJQX|S0W>Fjkv5zoF~Nf z@mk)L)qe{q%y<&=jB&K1(4pc#N=>Z>7h8}~Q-aqdZkt`Irzn~1jw^v9zr!*23OiN! z{rHAvst6Lp5h>^yW;@|Q?p+c$O>+O+U-C79a#Q~IA)t9-X7vzT3k-c#fhxN()p@>z z5H5ulvd=2g8Y9bCBk|p{{3|+%BqAH`DJ|)CfT7vwfJ0xc;hp4!?ubP8X?mG=-N6Tl ze<7N3Q{p}G);+7no}aIzBGoMXK8f!h!_&d(HSixCdO}y=Rr*Wi+aMc3ai~8H+Xm6(XMr;zRo=0w=x24l@Ze2L^x(~as?p}c(#*^hHAv-s;XkMg zEUr*AHk!h2!8RDU75P7|Oh%J1GwNXxe_!Va#rHvvbjhN|22`t4A|rkepemwe|DAQW`Cu{@4ny%YYI zrYfNz0Yrf`fkXzJ??s7qihN}Vz+4$y>cs}(>dgFBv>2ZR@aeYzz$l z@W*b>UCEhxD4v8;N{`PSeF?zQDSC;|-$wN>vPcp&a<=DDZ?nxct@j*Rg=alD_P!Cr zctiK5xW)#BCt?V#jr$zC3H4F6zP0`?kqP6%7qy)#$=Tj6OP(h=(Lk)lWnTn1k}~$q z042wuPXHcaZ)MP&!`bm?}lb!Yq%s~~8le^JU)d4?PLse!~2?2fVq7c;Ln{9)Dt` zbLr`{V-0pnhatyQpK{u7Njdx#kgXP(sf7rNg{{$`dT-|Yd54>npV6`^W ziJpY2D0h{`!5{cj0}$muIoGi8)E!uftVrok9I{hLsSr-Z%{$<)(ZM|9GJ*Jf5I)K9F(>Xh~=`*wKLT z=ekZu@N5|BCAUZcyF8jV0F}$-yG>YrU`Z{nIOtGB zdgl3Wx@_VFmeG(ub=5d^?LZt^*y7(WijyF#Jp)c{_;Z4Z0v=iR;(fZ|H z{Ii(m#9lPKT&`(N&Q}V$nW7c=-5-s{!Z*X*+c}X4err_QyY_Zj`N^PMBEj>#F1JSt z_AQYTrrQKhV@7#k_I46Iu_23)*(SN20 z?e{q}`#0pF|3|KDvZJp8T?J3>hRU+Cj_}>qYby7r+Q8`%hsAB0&5Xtl@?D~iPaDchQA?{mCy%8Z<9q#WPT{p9nV3ETn|Aj2-X!!RiZ&FAI=I`?s zSMBEydbP*6Zd0Zl$iQEoSAsCfnV+%RO8H$|v4T^}#jh1VETK$2QpyVX0-PV|I+bix zE~&Ta2_W=d8QzyyiU<&GWzcml+<9?>6H7{Q?x)gc2M4Q!!*2j7oW*=&@jCbWv zW2?T(9l)lJYQsArZ5wVIA5kYTOYCS`t49t0G8kb-Pc%+I)mhF%zh*gF9V>rMw+yXP zt5;~b@JaWm(^pxouuM`nrkD~JPGwJ>n8W@@{PUJeF$@x$K)!t={L<_H)0-po@36+Nw+xr3==-${6S!`Vtc0ou zNvTpAq$qtG*tA#jT}{gOrUVXwmB~uD5?a#E7u!&{G$7-P>bhlk2l?!S%vwn=zXkPu zLV1VZ=LS`^7xv|RyXb!6x4CYddbxcY_xPr8t0^RCxXzaC(rDEt)@p%XRSO>{S7r7G z;o>U84lA{ckQ7m1ar)6%0@%7Xj1i+!bP65Z)oKy?gA&#<^@`K|v*hYTPlHhDw#p}W zm1;@LhR5f7Lgi|UYwhvP#FT8m|Di)r<#D>YPwkM1^|mb*$=XeiRffJ4Vfy&;>Sv!l z7Ik2_%?zSiJZ22nNR=_(Efg3#8>ME-mK&UnCR(_f>^SF{8&0UoJP-#@WXg`?QC`nO z77L-@)+~Y_SH%iPe^Mi;D8(#^4vq$jWj~g=Kvzp1&*XGASbI#@KUcq<>qbB|vVA@~ zt6fWal}{jQ`Y^d!N#2{69Jr7Zy;!;Fk~!j{Qb`Km?pg!i(B&WhNfZ7fIa?`M=^OR( znyPHf3C$4x9{s-15fHz|i2)gHLjxu+{`G{ye$E;cv9oRX143g(B6r3dBat*MsjH|v z4pM`ZhhHi}UvLT4ogtyC%~%Rg)0luxi-FR?{_I?f>i!7g|#k&$CH1VK+Nz)F)6+>y4t@)ga7=nkRW3Jt9+mW zHQs=zi)f$n4P*A~DBr09L;OM3QP~Y?jZ2yqU-PfE#dO~01PUK~EX>0;FUYk7?qmdBE+%q(uDOnL z?>}-~?DapdWh_8whbZJtrP7hrAMJ#Iz1UBoMM4hi5C#^C=Wuo&14Kr9=w?}amnuy^ zT1zaV&f+A0!M#21e1jB=(Li4(_EvWMmQ9P- zyE^?96r90qipt5vGt~ozu#q0ZTz?A7OrAdz;e~vpzj}aR^|!nRMZ%$)Pq!+VgXO3F z1e+L*DeA6^u_{^73a%c72{p_nt{#I42s(435!;+OQa7g@BQKuu9}F{E;DGU5dZ&); z-ZafLDOhQhjM+gy9V%T?y)I>@pxAls!4FMssv>NT3>moy=v_*V?^-L8CX=&&@zoqO zykAulFo~GkL}r8b)-!3bLPSKnXSU0zy>pP2)}ldq>a_==otTGXxRWDBwXyhFB^~d4 zFM~iw`mIGh&t@o#peI=ofr=!Pku_m0t<)XFzqr~rk}|u$Z>nP%jCeN)onGQ0y?CB< zXkl4asUg6Xdz;Qcc~NW46E6kC$h(rKu(_y-W0Z4H@XlaF7cZZzCUa9{zeh&b!cf4T zm|E0n#B`=BAc)F}IoCVi+Ef=lK0(JWq`oP;EfzzVK5!HNxSo(52SzT)Et*)P8{I_} zlYZkm%mUC_?6PBl*pe>>A*pGUr^S#!i{`QQ@)GFG91p1@Gr6gW3$QASs(6SZTgF4x z#S_Fk@mLPDYe941=xE`0Y=#?Vp(sHoDO(puU#;oIs-)(zTOg6xk&aJldl`0Pkwac7$8;-f=!__mB-;K266Up; zsVuZAj~=D&J&*b>!LGLmb~jaVc;^ZhLyz|Mg$$uAl(|te&RyeA7}93;`Ue%Pm)nx! zC2_{H$w=)ipyRGiVyTs>dl3y3g-zt2l%b!i-T zWqgV19XDx6oN<|}KeGusZ}I<%)Z#SRd8d4;^EK6Qbod-*_SN8H&@*`?9`Vup{;Kga z3G1M_01j-6k%xJ=K(yGO*}Lx&G}YX+YK_c4(?C)ei2`4G4e=X>;L;6HUQ$Ak|9Z-_ z^itf9>a;V_%cp5DoDoX4H49~jHEXYdLHAvNwY=- zyKQFsDJqk!#*5Z@m5bbJzR70U4lTRKJP*r*oV5LJE78Ng8YUQL^{8~7G0aS?F1=XQ zK%)J3{V5ndu7NwJ^>SNzZE+2({&>JIQryA&)cc45hG>SaB!$0&3Gg8(CPh2a!n^cm z{)sHpdybhwyc~ap@Q+*=t{Q_89K(XHM~pVM)wo=swyi5q&iJACZVcUKA&2TOSbJ~= z|AgLZig_%L)D-qQ*+U6XM(u`)5nyo&0Fee&hVChnkr~}%gKKBq%Vt9rqH|kzI!E%) zyImbQtbn=7^b5?I=Zq8G$G5QOKdY+qI+A%=h14NtSa zBj&a4sAoY(D$>#AkMa5ww4}=(xwro^VODEXm6or?5tm5YH%ki=`bBR;Agth906fVP z$JCa_V=9-+!KsSP?`S*&1R^6WD?QlrV(D67@JxQ`tMqOeV>7mv=?-Q=_dADiRG5i% zpLbP($;N62ArfsmnJy4PtCEs&)+Ekhb{+^iSD8h+B$!9KEo{`RGw4M;5nWK@#znun z#`sj)D(|#pq)#;iUNol{I`Fzlf!DShlh=@r=y8axBAOyJ7|6(HX;iA&0{mz)aI{w~ zDI52|0I|cxQDX&Ubi0jv5RIUrJxr5Vr1~~d+9%{FZsYniqE1m-d@}Uap*_~>Y*y)e zNq{-806oO={R_?e8uFH9iKdhopjIJjm*ZITYtD!;?&agDeyYoagt>YM=-x_7G#?2V z%~T@1>=!-dEtQmLSDu7tZg}4uX#;aGGC|Y|*s8E(k1_1NAFZ|Yi!_q!xK11#T?rjo0kPG1sTTRK1{;P4 z;@F3#_@&!MI|SUj53XFa3e6UA34U=%*5%Yk^kTaXGEeJ$CC3%|`q7>h++ZEEl64L)pB;-@a5{W zsP@aco0r=?iT13vK66elsho?HQFGRvK$)sj;3V12WD7a^7BhT}uYb8k*rt{q>tEB8 z{vrLcKVhZ+yh+x zdaAtmriAW^dJE8zWvA?i-4iYYEiPU;{2fp`Xt#7o--$R7fCq2WRnq^C#gSZ5!a?{l zo}6R--*?Gc?*G0^!sT&AM1vp#^%PK)5c%fmHm@3%w80KVz^K;Hn*yH~r2DibMLht5@xq-f8L(kWnIfUe7+6ru3*)Z7&8lb9g+avRPb?|2{t+0{VzkRiB}f zY8>IKD;<;U$EDGw+ci?Vm!C1|xYeu4anbyREw_1DlicQO$Qs?xf8Y%Rb2eVR-H+`~ z52F^1Qw67?UkQ$%#5F|C-Dr{~Q6L(1N+vD6*bIK7L(MzfeICmp1)f@OHdG%m3q=f% zg8@tHDOeF}aAxvl&O-x0z>3*S1^HS-;lPk~%Dc>>s+am}93zkH^$>|)#20_2$&Dty z#j?a-#YYd_rMaPJ#+oeymD@eF!UCN@TbZQO&uY0HEthl#$R>vN{Gt|^LVT!8p}$HP zNh=jRV1iJ3Ms}1bt}+HeB3QJw?{d>m$*$CyPnTsA^GT8%ws`R9Zx&!7wwtzdY_vCPB$E^b8a#U7>GcLOeI2H-B`|8Rzxln0 zR9PLQ_kV z_4}FXYKq{VNN)gmo3q>4wjIF0l<{zeB%Qt2&oOh02Eq-id4k@D6^QvDZx(8S&j+hG z<+Tn~VHZ58jgwHfH8Pn53xY(iced<@EzBBCv`rXQF&$Fq|4a&_+`$l+&| zcIBhho;+{|swR8Uw@l+aMuVsrL+$ifK31F6r{IUlRmKx&jpG#79Ogu>)5{(4Y+#ID z?(O2{w4joD0@H(ZBRAgt?#>k;0$_`@WU`W zm}RBa$>^Z4$i4{6LcNx9i>Zgqg~1*4gOD-ttOhXoc4}@XF#W;E;%F-;(rnL z&B2-UTemZliEZ1qZCexDHYZQ`#I}=(&53Q>wr%I;J?Fdn&aJvtzv`~8>i>GH_ugwQ z!25?QoIb1-7Z4&m%Q^bI@Qz7$apG62=qZsdh4dscZS(wd(=2x!7g69fhyx9i&2~K# zXpz@YsAG36fNc{EOKZMe%q3kwwC7jHu6u|5Tbj9B!NA`T29J9a;!cfWbg7d#*1q24 zd;j@jmH9|93|bY}QRu(pGq&AC`5TE~%ITyLducYSHSaF|Niy>gvEGO65&rgreHa6f z$fT>Wi5J@)&Tf4^TD4J1MU*S7+bdKTJuHNr zO&!}tthmwD88~gUAn;cbgTg{IBn5}hH&cB^JcJ@ar(wEvPIJWhz5Zpd;I+qQ;q3Wg zmOP$0MK69at+|tPTTrYtX(@w9Urlg|O|-1!_R#0j5_cBh{Beuy^MKlJw5IDQqR-;~ z?WvU=z$u_q(@d@Ih+_uUSVDe~x#tcrHL|FFHG=sGVO9tI@fNB2kWg#&6Eeaug;-}9 z%hXy7GjbAg4QgMUBMN935KEjQ5W(EYS%*^nJ#WQLA;04h^ji5Id7G{Z3`Bqo=B1CM zF6A^ptvS%2l#f_6DOn!=ELNT2mSj=x=>YvSnima=lweu zWWDT-rS94mC{tT7CNSZY9@O0L8*e+$BkH4ERksUpGH`n>0BC$=iCUsBZ^TK_r`!*f zWk>SyWnIqPbd^GWVym=+9 zUB?vy`tpoV0V*)pFz?vYwn=D;X&H-9&9Xfi62UfAqK716rIMWbyqEXbF0{Q+1)&0H zz7Tj>>coyg?>ZV`b~ZZ5nS1H^3JRdsV$Lz>>BC(k9eadC=U0=5he(xa=mf`1834h3 zge<`ekwX{}Muxu*i9zU~=ZaiV430S!t+>D)68lwc3!!1j;Q3SeUBKO`7rO5EjztPH zV}M6b*#=cXA%uUAtVtDCP_Q9KMZ;!{oet}L;O>PNk@agE;5TjK68a2OG7ErqGTx_; z00cKYF!WO*QIWoX1nQHZ&I=T9fepmfUz&f_=PP{Mb?4L*K0HZ$V9JZX}v=3ZLC%@Ntx_ ztb5a~%HU%Zz=}t|>6Xa)@Yh%QEj*ezAI>jO^CI_KIi0J2E^a56dOesSBDV5Pk_0Sn zrTK(fi5&e$fTRk)kpQd(A<<}^NCl>G9!wUI<1bCwPtbqN%*?b?Rp86aO#j2obiSjWiy<3f|6n0qR?v)}0S*iyg)w+^jo?0VOa4;5NYcAx;g$AkoxeZ*BZW!t1FXZg=Pws3PlT<>S zM-WE|&_1TBW@y4YDh)QArLt{{w(qChPG_u4N-cTv^mKT@CX*Ms`U#K)yJF1Rf%_cv zpk$l^_c4Wo=e|RaP~$Mlm??6MN3IPa~ca-Q9OrA93 z=Sci6>L?h`Ff^5foI!m-5Mx-$r4KaL|HWECLKQ0B<0VCWWLZ( zc|;4Eih<7`|5%+@LovDFm(|(*ht+K-M0{uZFQh!2Y%2@z3iXtx0^MH{(&_{yde}cK zf&YjbBqVv}+OiiN_qeiO*lPMi{c#t@;eP^ugLWZ6!OV2X@WbqUncv)b%37aNTbc7_ zU{3!%>9z6d^7-_7sP{di%MHqv!MV9dgXs%IXFIJ>hpx1|wZ@!7&^P6%p*5od_(vLK zY0V_p3knOvuxA82Ndb3zMRd>%u4zt1%zd=M$wY`|B};-1a@5HD3Js?5kb_cMeHxAY zk2282y$JI`tW-&~2tx>x`yZZgm|*`*gSp()JVaU;7evXa46<3K{(jDF8B3=^eRJv6 z7E?KkD8flpV>eb>UJzqgy(vI>2IT3=T@*tS+0XjzU- zfGK!ewKVU%wb_SQFM)fD_Y9Y{P`LN)Q5_kZ>%rfz$P#Du>VmHC1purt8@RM@`cmSN z;RgA5N9$m?9#r;fRHU zGL`jF2Mk1DCg>__z7fo{M5)+!s22=46r9yMmsOSZ{kE|rJuS>t<^x!rc%t5rKN=sn z`y612xs>D-{a*mF#lSgrtFO+Tj~p(O0MkuRI$L>0d&bB!XcCkW0zI{RsDXUqj~#c= zDka^8U%}FG&01W5Hx_9Dgk+&zoT4kNeu>%8uFK>jwu%_tIT-2j2omHyP)K)NGn6*L z#8$*f#)zN7#Hn!%u$`EbbJ`=*&IRKx+4HI(i22l^h@giUt~Qcg*JMg6oB8!bVY&25 zq|52^QrC7)`HWZ?e3hIX+wHNe0Skvw=kTQJ<8skIZz<^jb?gI-bajKF>s9f?N`irm zev+UXz;!J%zuh0j^xPrG+S4;8vareCuBjcrh8 zp6I@HvabTIexLMY?5`}Id{ZCS3uB6&^lLW3{b7F!tWaX(Gm|nbYE!j24obpNgVUrB-j-ifOZY$ic2W zXZE3J3NM6b|3X>3S>I!%HZY!nbup1f7F(&mi^Y>iQB;zjaZf$_J5aNK zDwauZ5+(>Qw}e_{K*K|oJhu_z86!6lqsC-}gP&RD6C$|fq*bUaC2E@Zy3C#5*V!{M zHoH=R{)>VwPLqhF8^jw!D90%k<|X78{?;x4H%0e)-6HSveUFUO&u$t{C1-MI`rAuJ zu_j~|QKR1}N(i4l)BxRDA$?5nQIL2FcZk6^VGc>;7x0K2WTSdlG6|uik$WVcT#dP? zbdqhj$jeK}TjGyCowuO%Knr8~8s_l-dGa7VC@f^XflzmHvsM zlz{)*2hLQ}QO5pPt7K`bq}G+E`Vf-UHmdUv zBo^to{T$2-3YcbAt26&%YSiG`>QCO5-Ea3QF~U1=LH14E5-_uyIC_ zfwK(j@50o<{s$CTQv=ifu0XJPb#rOtdYR@XnoNxvYboGFeFe0W90#zo3V@fzO(pe6 zkh=|PurI?&d&eq?xu!PT5WgrQc?4R53M*~iaxNjY>H@nuqvXn_O$xWDMORfW5j-ar zAQ~gV;-QyJ8XchxYKAE{C)G}F(H+iFwS}{fAVJ%^AjZzixxbg+>+qdk5qG9!dD;0! zm&u8lHO_z|m9IE0WCuxC4Pc*|+luFlQcHgQl^II5*}kGP2HiXjT8e`0L8!(#PbXXMji_psne z@Efh51h?$Z^i{XC2*(eO}sjeS$cZ}Fk1c+|*X+Z%)OkXEC zZGDRu2#lW(;)&FFRC4+lLdiyT`&k$=&S0*d;NjP)pd{Ix((WmIA`+7LaU zNH45d&LGXWM_ZdN?OKUYX`K0rFC;K7!(#T=b!b$pnLarLmLw;o12gQm3FW@cCrU2$ zs>arHng7PExLeCzYv{g4-JciG+t9hw_q#a7soZ9V*+$1=>m)kW^LmS-ANpX?5FJ{@ z^lT)MQl#$05;p!Fu`%7z|6$kdb|nN04{s=5=Fa8+x9XKR?FxKZ!|wp?tm{@aVGE3l zraG_l-_59H4a400ugb9NKVZs&*%99v02OMhPT2F9pP9cNMn)ueQtT18(JVvumUM)) z(pHZ9(TLPyOa>hdWmda9AAf0j{VhAIJR1rHsh^sGUUYP7s@Im%lG1`H(I0^UIhW!3 z0?LCQDVx2_9e#jj`k1LVpc*63mY6y}WZbS#KE8H1eY|Azw}Ee&wiW0@3$Gzx05VFT zw`|9CQF+9>?sON9ec9f z)|MF+9lc|-kQ*ka4$x(*PRW>(*1I(M8F5)`W639y8r zUG3}h0&+i(io&I*3_5{7otsVC_IUxrm&u5#?>0c1OZACg=>hIS(qeKl`8jRFL9q zxa3MAT|>~+#Wn2hsf-9kM%{j9T=T_slyG!5!tYfRR#=f4XF{h49)_Kn@m^!R6H>kM z0FJUta1Y8ZO(M)Y{{c0Z1^7TA)RB(Y&#&b=hn?Lw?m|C(;rx+ou^u^XyOSve4Vqju zfL4ohzy!}V>JgJRz3n5AZF?)hr`s9-uVxvV6n*$6lsV|2j^ZvF$XBu)owH zg8*BjM~hX`B7t*1R^Ux!0)Y!?)E}M>I7e?8=Hg#sJ#5ImFf^cbFv%746N>(_nV~HO zs7M$SWNCTt5#09(pN*N-qX}g`u`kvN>v{8F8A+USU9b*V0I+mNs+*ZyP0R#Ud5d!W zDE}|CWgrgBAaZ(1fb2C3p}T@>xeWCWS-3q;5ht1hS>TrM zrE)U$yedn!TkZ1^iT}lZ6Z|G2dzf55afd3zxki9OW$qPS2Y&bKPo<2aX}mrVcka|r zc3HEr5WiO*g~z9xnj+tUhj6q$(w1`kk2~8tPtKan#RyT?0f?Ci!CkTBYRmpmJT96F zB-o$^k91d#50N$?zkD_?V8RR_&P9g9cU-^oBgoyc1CuUUbT%yz&_3^w<#w$_QwVL9AH3iBz8dkG#V&2-D!jKpZgbP_|grCI51klU5v;i%&iC#;JQ&x~-C{G$Fy!6S@9@xjM~`~{ zl=3*GMp8XrYpEdroj_3JU-Os$y1;+kolLSh^S`S5e^L7Xdr%1Ydd3GJGooZ9H)vq} zDEKZlDvoUqzb~xm*Y{ls^-pn#6m_6PVryMZOo0xzb&+ph_D*1*AAVQrW`H|eE+nrn zTlwDaU9(Adv5ohK-BI;#@YR_)VoT05cxBoxbM1(i&MS{SWo`KOi&C-rvDH4Flb5PO zzvV6VA0gk@Wlk2QM(3meW&>;&6Qq-RXhPDP!-el_2?f*IVM398)mv(AM{TIhmzj55 zjo^X(S(w9MXw_?dNGE}b5z+39bip%tK{|nIrjCj*fvN_477cZsgC__LAKS_HowX)H zhIf7sGe}uyY6X`f2i-Mue85e2)&<=}$DE9v{mKQhe1;Xo2IdDq3h*ZxZE#OByhUz? z*(cj?y1U|-r1i7+XwVLAxLaM1o(~+26pl!x=LfT=Krw!$>=OIGz>{H_KDyJ!sq0YsV0y%qdUNe;S)0cjWnapd;wEnJgvTA7aEK!GDKs(R3~v zg2-6>K&~Ii2g~EKQs06oLtcYYDc=%eZ4L(v{pKNUL~)4WHg4>8aXh?epX6XhwfVHn z4gqtf3j=k|asz!9<9Xp8hrKek&;S^aYc}o9CXoy1IVIv8OL9n;ADR#R2gmWv43+U6*@N|RN)Kh!~Wu(oTHE4>VbSfEBBJdOk z#{83H2uvq#f4>9{LWF>TK%@@XjcMw4$$a#Yo&OW{Oi2;tdfv(^N^eI&FDhqqwX z_&N$CoWIU8aiXo)Xr7jVqS$-~M zv3p!%Cc3$<+`g+zU=sT3`_I~JJ_*SUlC)*1%22G};A*Irslx>-_^itOdAH8p(v#Do z@Vr%1LH?F|VW1A6l(swZQ;a$dN(Ky`e%>KWNYUb^wxWf3P5@mYF-(u)!vcaJ9+n)1 z>;%JtglGfBpTjw_hM+VF{(GWg=l&wO40-VnXIOc3UJpol$`95N)6C8T!u0rRLj9sI zM_l*NdFq&%d2IQFr6%(QhGe;DJBGv#*qnRTiRdgfu3aDI>$SbVYw9i4Nb0yb2&n6F zekP$Mhd87umH|RyF;(YyyERQ63_$)iC1@_W60Pi??DSXUd2>f%iAviGHa%_EDk-k| zZpco0zYyA{X~!F+;1evfIgG;y?}h#W$rLKpN< zOiObmRo#qeKE=0})G$*t7OuQme=>cQ)3dX|GhOkA!}APo0cm?( z1lI&7Ti);flg7?!IAy)XO1Y5wUWZR0(Jo`9{${f9-0R;o2{pPqYkTwr13W)dB;d_hiA9BbQ&x?YCmE!%f`7;xWuDT4bqZ;|lp7B`c+J_n;3L;7s(ixzZP;2|;bd z@|X4i;^Rz^$3_9$k!Cv99#)7-LIP!%I$Vdz2lg23nX!l_vjevw_JRrFiwWKsE2YD- zi-~OE9sJzgw;Ch%0U>O+^hIIp@!b1JkP|PdNunzGV<;??$|;6Op(=$0G*WU6NB&U! z8(s^nrdB7IS^^igwM>BTTE(XMZY0Z!*^@&fe z4bFTyz9%CCKn5EmKaj|5HXis1$I2+1e;FByCKe1+5t{+ZBT3wSRWHJUrN%*Vga;>) zk9gHQ1Z_^9M-tZ^;W!WrW6Y%QK1W+L8s%vO+*M7X)=;*LMBnx@$c=)C*~?^cSn%7YBZ)`4 zM+x`HZ1+EGlhe-LIweJYax}aE|H`ZzuIN|GPhY9E@jp`QzX2k=l@Z_Z0J3(-j0nH$ zX#cCIQrB7$evVNiaPU*nR~@{<1>PrqwKNVP!$r($z`C@)&J^UaG&xYGV_eCJ3MMl?vPPwO-l z$VlFT#8vV;H{}w3DgZ4qu?;Jefg2sCj~)cA4teImZ7B`)xU^z%?hurm3-f8jkd9s4 zDGvq$n%BGnTa9l48eNXyFS+Lsw>+l!gP}{J`dKRUegTaAT?a>M-a+-?ifrPPtNaF2 zA?;(3^L)a#wF>D?$gu$A5*_=_4}<(ns(k^C{;#Sk5m`=k1%T9`ypZA!uBv3(vof2n zuu$U@--hb>OQP5E;Y0k#CSCe-IgSAUj$S51v*hy`7vOg2#}N&gVpsTE{||nRel%VS#IRsd-zCs+Rhu?w0Br>zP0n5nadl^O%+#n zPqy2H5&ztAt!iqBD7#nD<<7eq#Y{xB1wQjFxZ5ym4%)2kpYZCk3j+SNT>+TFYMlT2 z{zL!$`~RQycJ}%gBn&QFzdGVOCO`wyTiK-HGdtfVX+ug{OKRCTk*-@wpbsrpNz+_5 zcV;F|t)kIlC9qI(SV-DL5nR*^Cs}b#)LF$D3>8HwrG?=nBW56 z?opS0xsjfp51RnhNpk2js`0V8+_9?uc^&_S=g84Z*C&vHYx$ARE2myf0$8Gce3ruM za|_@y6@nsk%4^f0yB_JNjQe|ztuui@*nbS)1Yx%1WgJ~)JYHHV)DDFJW|JzTCyWg>*pCD0y&?;bnhlo%A`KUh?1}6=akDhrNK};PK9(C)ycQ;$TIC zmw#@-gRv%b_x|V;KlJ5wBfzVzQcPXGN*%8GS0-vN=)jmI1Sn5O<;^zFDbgp?FQ zd41I`{ENt4ZC2BXhiz??15AGpoX!2sFuNbp(o@H-E`jZp-*QQ!GG{NHfFR$K=~ZTO zDvpXz+&Fs)0Rr4!8<`DrySIT!h_z5i@-5Y&zjJ0bw`+Sscp#TkBmfL(C~T<=q4sJ@ zoQYh`ns6=4c+@wsX5S4;ep%5&AyoFTaVM0RFCj=K8 zLWQ`h9`K97=PnrtECD!DPjokv(U9$B8ixjwazwZ1jiM?A2>$%mYACo}okJln&N;zu zKuI0LL2Q6YN07o>o;;Ss$OqYKRqt@1;3tKw#_$?jhotr=41VMA#O#?<5zZkscP&uW zJF5uB1lbZ|nehVE`V=iUAGItt8IF4)MPcxPjH5H~Z?PHvDJ-Dwh!m8VG#W?pPZon+ zW*`^~l8h~9lUPk4Zlh>E^@4|NQ_(uAdBSSDxB2e5Ptlo890=ZZIjo#)nuj5y(*Z?j z1g!FdYOQo>YIOmDq<%C;Nrl=cE6R#d#(S7XH&W3+Imw7>ojS*2KN4Mcfpzu;KXpTS ztkLzP6DG+#3$O1)M0e$c zxwnx)J)$mh%dQED7DX;N-$Z!1XMM^zZLzGO3(5-cK(z(5JtH~J_wvS5n(A3v$1DgL zhf0vaDzv|k^e!VX$7-h^$C1oBYT=iOd*<2c)#EQju`B?pmVGlM2;}Vv8>CiEq!Hs0 zradK|HnHnjj6G;rWF!Y`w1+W_UQA2G2Hg! zlMuAJW)1WvD(aS(Ha*mmpeW)KABanw4SEn}xbNidqlN>oEef}tVNk!^236EGIFfC5 z1x(h?d?nzBaXqt7%S!wdORnNo^3X_%3_8TP(g8d7s(yDSY`saiC$mZVUPM)Epj^NH z3i)Y`_^LU1Duc!@!}HYw%SlhkNQh>zm$N!wk$CPNZ7mu`X* z^BDl)-%?_evPsjZjPla%V3Vb)1Sb)es1oJ7D`bTGDS_EglxnJBzi2ty3ARPwBGMrb z=DO|`W%=g~2OS{kcTuNZT7=4UvgjJ)d`nefb>pu*=cW>~Cgh@-&tPp3SAFQV(cP6< zS=fjhDiO5Yc9W4d2DoYB(3f=5b#xgQb7}#<<$GSA1XRV-ja;z$=ERZs&@|k6V!oAlCSW8EI21Al0RDQ%Dw6K;P(O0 z6iwWpRre+FHuWH0h^rR9g zB4wz=PLAiDA?Qm~r%1y^)C`)28p;4Vwd{LxS{aRD?^$QVFQR87(R@#?lGI zWGahMQF1X9^tK*B%=vSF*AwWc^N$=|64J5Lh^AH21_UwA9^BhqKH%EhQ&Ft!u#gT% zDp)d2)6BsPc7_)uSi()~&Lb?GfeMNYKrx4Wbw^JoM7_pZm)zQ-{6B?4Eck$)o*$u5 zB@(<*o`5N0YmzY@QP5e-%EW`1$Wgv=Vr%U9s65o$n)MSDKt59FfpQ7fveZ(umv+Zg zaW3|)MT2RsNca&B>m<2r{f`*M4Js5i$Vm?MKcvoC`rF5lw;TZ_uLB7jn;3kf=1H^9 zWINQG`SDddDa0N9=$UHus_KBo5Z_hNQPNU^4#+f-<-G?ri+gb!0IK%;Q)?4nq(F?o z-?!sKc~$@z(#uQ!)m3R)jc%;vfU77`Y5dkVz3+?J4JkDe1T2|sn~duh5RpZr?$#kH zvs|HAA{{dON0r-npE#QIipZ?u%*C3kvrv{PF83I|*m=Lv`pNsWXoUceORMYCOkh^X z+3SHBQ1^0T=+WMcSf7sLQWef6A~t^tYQrW14yhJZH6_T3LZ57TNXhDi4<1z7cp#F@ zb#g>-iQvjnBO_50(bdYU)kE3tzbIs52SvPJGn1Uz8-xGM!rp#Fp7<2VBg7ki8eHE; zhH}6jlCerttW!^u<<c#4pCvs%ja`I~M;{bIgOnw*`y4u? z6tqY*Wy=CHMoCwwbkR*Iiz^-OMddSJua5IFF&2rd^e!Z1kOZl91l3cIMvlBlJDL)m zZ~WstIrmIkjbGq$c|t$y$-KTZ#eu%|&J*kD_H{m`>R1+J)=L8fhSU#^iQ{~Fq=^(+ zJERxWkGzOc&?)ib#D;fVkv)}2PA5jpDDIg;}>PLhWZ<gCVbnZR@K7K4iWd*v3s?~D_zM{z zq9cFw5K*6_6Bt_(9C;=B7zKK0@5W^Ygl3V9g?D;C-dzEB$BrL8d2uZt%I1!xIckL% z^W=8zM1o|GDT<0j*&oNMTYb(7``)*lkZ|*|9itA3Lm>%h=rHP(b~14`D@@4kASbdW z%~+%?v9AH>-C&|wL((`DtbEzj3de~7g0bhxP2Aq+$)HmHd~S`Cbu~r$t*!09we-cC z>ZUI7A#9u;TF)}kT~xuWga!3f?J|pIl-qxoc1p6%O80JXlapOO5hAZ!7N{SopIxqB zR0?sfO|v2_ZEIgTxPc3sdPdsozW2-0Vq4y-RapVFGysxn!a6pqKuz(o;f{ui5|c!2 z4fd&n%KQ3COIT}&#fxH{R!^hV1yA+DGkxBTts`?-cxz3c=2d!io9vq9cGCKSQnU1; zQtGKXVw59>S^B49&j8$q(G~DBZvSloz@~r41FmE7x{TfRyNhCXv#Dn~_O^}VBb(mj z!3DtnzU#ox=di)_i|Xm4!W${wORc$Q-PAK#|JUCEnM{HFGC~$W0FYX`Aa-TTkC^5xhx&r{1>V=&Rn1Cl_Tz-wGVPEDaX1WW`c>ZID zNhE-hM{(EcIzZEiD|`^gnGkSzGix-)8vt+$53^yuQM#SEkx^>NBUNu96?y;} zSs?qs(;sLH=@6)M3^xl?V+yA*nJT6dwGgZ@Wc{O(CYS0wQm%}aS$m?=A~s*Ub`OAp z5nAB%4u2x#9hyPOJ0k24M9V@|B1gmRxg+#!TB_+*T(iW^7mwNzB2I%pQIk<$JXVvL zt3a5GcAxj$hXvI#VjzgFRLEJ$5p-b(A>B(tfjVY-!Eu5 zC=e}Xq?hfUPWZNK3F@n)dwS`4&MfWN!&6W>FA&ggUg}Fu_DczzwYz4#ijr;4D&20zIwkvC10|gGEJQUj ztac#nPCp%nmZ0O2DLQBB)VM|PUd1yOt&)3=6Qx3xt$Ma>(< z1`H=)*47KMaA#K{4`f^=iLux5G&3c?^db$>?-1iHsusp%qZk%lyxIc7V36SDC#E3a z=PGg22}WfDj6rfm(7Pt@xS%$B;3=-h0grSREB$W-b`kqq#xvJBTr+)m^EW{4@e`tF zB5NzJe`~aXyoRQO&r19fc6VZXG%NkII}b26qTMu!1MnG}gs(j0s5I{NrjX(fX#FX>9p>8; zzkl;+%gRpB2&+3zenwNfk`)DHBfn+JUQ*nlBfgo!Gu_aRJ+Uu}T%mq`&~47RlHdG9 z?OtRvx#%Q%n&p!*to%&ooF4CeM$-y+Pw9dOj5LZ|nWaB{X!)d71o6ut6D9QQ^8CUf zyxpmXZ9d>#%1(Dhf7nk`elYwESFoz7_55m>{xp$TYai*Q4rk)bZ5INVYBHGI4dy+B z^U7+1m;ZYA(GY;PZfs?-Zx>t<)H&~xs`hBYrF?JT{U&Vt26B5c!nzrbDzthVe-q9a z?hsa^=rLBy=~$4Y4J1kKwZy3!?LoEG&Hs>5*&6d!xOOAsVoG0+>bKDFXov3^+YFyY zSGMuq@t4^og9*6JH4OTpU0I+CL(<(=VP+&PY0e}Rc^CoSh@eO?N#))cK;rYwb8W?WWNsF{+Wc) zA+U6Xs>|RVPzDPaU^Jp?z@Ak!9_tGq(4b&XG8p<5Ngc`h%e>ww=vs+}sbL$0GRT6Bm=@@Do534b~ve0IEX4fKgz9+Jd`=4z{n`an7b1=j0v zW*dJIv8+*37L|j`tLyOhchP>@LLzZ103tg$GB8GOZbS^u@Ww!9n>;bCPR}h8oUAPWr^xN{|G0t+xxA^SQI1_%X7)Q9!{&h__G&9Nw(Uh9luBi>&{(bexJqp}I*RohP1y&zbIUm9Gc+@~qmV^PT$d91&X&== zBV3254aCDET0oRf=%}LhD9&Q1-iY~HGEC%Ta9)ji&UII#EUR~PfsqVg+&o`Di4fHZ zw%HrgTX9KJZ)WnzjZDeB$dLGm9PZq$>Y-Kd{T=E>$PgvGJu4@P;l>bt*pBW+GD8EB)~n8x)Pz8P8jp~d#}Apyuk%cZsJSV z{;<8ECzGae3d^geTm>@>>YHpVST7-no&K*u0yyj``#^&!6)-7OsJ-C}1Pzz-ynKKF%dmev|M^ zK4=kqv31Erfmvb|8nh3=jYV6qBrGz_fNrzjc)+Wmm#wE(5!>n=2Sqiw|>pQM-DYJ=n{i}taOM>?<| z**naZOgf^C1^P=Yk09-Z#sxP59EhTO;HqWQ5tbchoO9Gxf0xw?YJ5duvuAN0+5vuG z9bL&Pn>|tckn4aqfUe8(y;xxsx7vt|Hec$@omZ+SW_bKZeAmREto`35V@j z{5c54&uQfQ?RJ2E)Yrhvv`l=l8rm_}G4}RMN2Gsi-5YZ5T3-@wd>m5?t+zhg>&r3d{ER)5_>=k((P- zKHe%43^#jL54~Q;KiIu432`K|G@Qbn|8D#DE!Wcde{q8O|35Xn{=HFwoSixJkK1m# zA*&*M*lPZ7xApyUTZBY&%Yr}!C_-9m%0E1JrcUYF6Q=AJ(L%gKoB4P&TLC*|c5lKs zX6%FmEQP^NL!8T*+{}-yx8q}(@2~ThfNvbpUQkFdgWlUV($Y`B%^i50-iRzyt>ke^ z43m_O$;RewiN&S31_pr4vi0%~R4DdLvfn9V1SssW*(8#t2ZXjC4thRufG802ck$sF zSg-kXMJNgeoVh!=5tW#|LV&+846)}PgKkn(ao~9A)q=-78cb@fm4jD+7n7!2!fdbH z$N@#^oT~_lVV}bM=x0IeK!8}T{9r&={5%7~0O^G^^-A-d<~{)3^tG+Eq=oct3hqeY z@7)wqg+NPG)fPnWwmZmkRk*nDCBb6j+ z(M9AS6uzDae+#e*^{QsU|I+I z5iD!j{A&*s1<_&|c132+HWyIzFVli6S0M^ob@7%}OE5r~TcMY|N#dEdQf)zE~AM5(-hix-GDj6U)jQ6D5| zjZXP-9cQ#$DPPb`Sp0((b}`S-dC1kHVyvL?tl40+XtjQaqlbEB?Gco=Xl-!3nh?7g zmmUV6cMULR!?)t7-AD!^F24iT8~Xj7G3OD*yUGxDa~dK88lT)DTyCY*R=28Uqd$9Z zB7kHekFtrpA0}cpTa2}}aGOp|5+Nm5J94Vgw_tWUkko>tU8IDX$PcBWGLE&j%;}as zhWBsyDE};#9}BP93ffwCtAO|lL0f}!Xxo4!UO0diVBnvXN75;72Pzpy^u}XAV))j2 z+bQ@P>O7gQW1&CnYS4%i(I~P8-8k=u+n={s!)U|dNnXDf81d|_Uxha??1$OA%D}@E zQnUDl)Y(=BrbfvVj*FdJ?#@3`la!nLD3a0+IL~-;4mf9|vPt}2?vXoE5x2BSyN{~n zeGL?n+QMH1(uO22?;!tVTobM?8Q}lNb#eZu#IAD7aP1O;B`r~dWuPoHjaq`V<=?<> z{V`|_3E|#H!v`#!P0NvH>_KXSoB42RR{0v;pT7LgwW!xS+>`*QWaC z+cUba2G1NrpFIzPr7#y!wLcl)OvClAezona9B2R>7WWSLC)K+AlWHRYh18Wu%~T+m zFJT5G<)Z{%NmEiFTQ~U}Q`ruht- zaak0NSg5&b?)|7Rsd1O~Zi&>GncQQ;g6t+{!)0?~C=w|DO1123CU^_CygYb7DK*X9 zYPwqiuGsw^IO?H8PeA>b$I|*IVb274UWXE=<=(Xm^m6pZF8SV}C$}KsBD?GLDguo_ z-q`J7@EJ&&g>U}tu_fLAq*_$y4y0!kzP<#YB$yHVW|#O=%C^E5#WDV8hM96en=8s@%=co2@s4tWNkfuN7XQ#=bjw9K(O%vOPP(G-{oH+QRvS!i%Gu`W zpW?>`quW73P1T&XfyO93(9L1rqfy0!BqxdXR;^1*H&}n93AQw$wR07r95c}ERc8qX z;hq9?Ej|Hnw0==l(Ij1>`)iW4I}P^!bZ-+=bo#8u5t0Og)35<8~c-EkCOX3;h`?x?!}w0+CH6H=o^ zG1kqiSL9#(#XeKg&_r|4i(&eI(k$<|Ek;u`DbdeD3Ps2lglcCl%_Gda87ku}27yrxL{i~qsbKZREoE?uB- zcZ?Nt#kOtRw(X>2uh_P2JL#xnTOHfByZdDCee?g{d7g7M_0GGhIjY_{YK*^OpNwX_ zpb$3x@^!9`=s}@yor13QCG!Owakf#>$Iomi4da*!;|0(3ZJZ>rQj;sOnqtMB{5Sk} zLMH#KZQ~(N?~}OSo{Y=`S!a+@)pL;-JcVQ?DVbPfdFvyo28vI0Y991pg(oa`0#J`F^D;=>HRCh35WS9Dj|beHF(A zc1>GpFcDU@1!e3)7ik*y>{_MPIu*o5qSlp;n|2I)|EZ1P=}8wA{U5PjX_qRs{_Iv9 zP=ZnperA)8B!r#CWR6e&JjwakbjfqM9ybL2yQd9^uCS3}%6SfLC#B!Z_74_xnrhOS zl-IYA5EUGJ#oXB|Bh?4Fh^`ONO?nSva!To?_5$?cjfqxM{Exv3F?{-t#(rq-kUR>WY_tnGsq^^f~4>O}towW&g}O~ z>)-V&un2UDP^5m}vB$6gB%#MZ#+ByWam?K%d*T!4PC`%$d*)$gyJ=@SFb{U?&X zLC-zB2?@^HA=RUbrfe+Rtsp7UoZA{%l|7^jP%`T=-DRm`vdXhs)!TCZQ(428TI=BE ziPVf!abLV;%5f`js(!lExU?;OD zs<+4_sn~A0h%19@ik5M8ymw@Ednoc z;elY$AAX!7)xBb}>qXqkNyeMy-@kOQx>Csm)J-3e_r4%F-GaZ%JfK)Es1Jhqw==PW z%1MsqEXjr`U+%8A2ycZc8GYytQq&@x*K7}tO72Yz4^ThQkk&ZuKOYY?LR#bEi*`sb zNp+#f=_KhIU}6RS{g+RZ`>jjsKjygbF#oq7{-3P!e>gNy`9e!E-_bxS`nHQk=>FSm z_HAreI$aKJtut?HWg zd54lYt@Z7-)~4S)x4&|ICi(OAOA{@C*NQp;+vfXA{FMMw%y~7E^X~4?wrJ5-ZEJ* zOHuOMB~ehn)0#;YilIvv`VP=G8lnoQ-LPzdYpkloaqY*C^pY=rR4 zE6PP0X}0~*K>s{M7zznofQP`hmcJ+$H|1(N5F=_B!k8qE;|9a6A;<9nJD@Be^S}QWOeWq3mj0u-`}u#FTKWIsagycNKc#=gRI18G z)S?o)e!2V&aAW;Uk0&nffL=Z{;Pse^>MN$+=L*3O7OnYH0Ma~Ux$BZ&L4{0+P8Sr> z8`b*`>mS}RD_ye!HQ9Z+vF3Bts(Jr(60Z2op)gf6%9s+pfAuVS4o>maWvA&UnyZ;B zQ8!w8yci;m=ut-e&m(7$5&szoKl*Qk@$doKvK4QhD7P)^DTDk!0y8ehf53|vuu;NI z<1wE&$LK~U^D)XF8Cx#CmMyal#w}Ro>sJ=(!d-&C6j4&eHN_!tqU%=f@CE!lEMpT^ z>XL|Fz}hn^u~r0paWmjV+d=ebxq%`CboU93|Db?J7oU?E0hY&=dDI*TB{dM6KkHZi zSOQq8)1ELZ`Ugwws>^*1&NNxz#NMx1H`7K%kuf(ia`&v~u#oV) z7!Lr{zrrWU)U*5n2-KAn;?$Md_o1uFZHJ{5znvm4;mkkO6ccB&bXAvjs(PW;S}UR` z+5)&H7N#hM#h;#IpIa(G&ZI!wKXh7X1MhOF_-^4tO=GP0zz2LAM++rywU|Nm`N_4Fn1^(0a+V zimjKrYf|W`egZsIC3L(KP}T{CQGytzIAqXcKz1* zk-hfk&(7~(-(HaotzcmB9!k1QFiI>zo{CfDZHdY^)|y#3Bw)}4*|cTKELTN8IR9y3 z`Uak&DUgTuwzNd2(IaSjD-0uupp%`z2lj{b2^gkXU&$)&D)GRm-_<51niGwxLjkL; zvi*ls!ARwylF#0+fjh02`$OotBoy^=%prRYepMS}e`d9Mm3=ki{tJH}1OixGl{E$zV?+AEOUG*fPi)45zi{ZTie%Nz!j7FEJF>#C7=%+L? z|K6io{@7xqUCEJr$*hM>Y%ouNycQqwfNyZJk5deriFuZo(Kq>T-S2>g28am8`XZbdG#CpjN{p*G?e`whWckSpkNE1AL zh(Nc3Rye<@3~SE>j>eEsn(Lr^C-~IO!&Oa@BvpS();pbAx|Ta5IoCV6B8;ve8>*HH zr0R?+;roD=tUA-Q2=xcosfbZM_}`6Nw&RwaJPy6c3Z?`RQlt|f z9(Oj?r9FZ+Qy#q<9M$1Ck*mTDl1}z)|E^3m2rx9KOtnYTzlH!E9Q)1ntmhZeu6*7( zcd+j6C`1|A1=4Q^x@1>>mWKFk7R#L(>^{H%X>q{{5H8e)0m28u#@X z^M(IEbyr^3f7H9qzaSDWU-3EpI})f?3*Hl56XP$XoqN;dT-fcVke8}EXGm*7Dh0|E zS`e!_oWLbbptU;$Xb-||6xUhh}7Oqt%zZNN_ZM`c0 zMzi&4`T19K^0cieSk}!(kH^iy=0pBNzRUG=ay@|$M4w4FMX}I;tE{Zs`47-^l$P$Y zy#!g+d1c0_dO4eVnB>5cFs*YlsxNGvK_bhdF8NgCapK_=yX|-_?D7f?d5mmD+7*n| zN^%y2b!vzR@lcWy>Q<3^RbopmB?-OGCWq?gZuA*`m`%B=o*svpu=-AB)is{h)urx8 z?l#TV+?6@%LVtyY>uDIKv^6L#Q-K?2g#E8UvJ%2{UCeXr=(O3F3l$lvch`E_u991} zdHGU@el~739?-f%Jg9ud?)N8l@EzPpp_s_!zdEUkVQ5%1j4`StW^Iu>BltIFSk>XT z@35vpYfp>lue(@1(dg&{w0i?otvb01ZPt|*#9CZ~G1ZZn?4{8=*Snw?-#!=Df@#aR zZ%PB?Co#%F3x#X*0!7pCVG^S3!#EAL{!Xq258TNn3Ijz(g7(vG^et4a6l(pWQnedD zH#2uF1P8RJieoG()wd#Q43rIR%h(`~w8)I8SMU_I<-4R4iA?GLBBLUpT{_T>DvtJhKyIB50#TS*#&qwe+l_6c3drjeIes zR^%6Jeb(lHBS*Fb;=;-7G-j-iysu2I%Fyk@wV zv$Mr`=ETS8*X}ykBsvAwma4ew(OrI#8lBbzvGHW8BiMIs#UCQ-Zy~1$GbP`rK?t@PhX>i-IbafVIyH5XrKqkb zZL=uxx>6KKHE;Ytx;x+xy8L}Y{=t;}$u{wU-c879_8uToB4LAzRZC;SlgDtW2G(QO|P7i+IgZ?qM98XHL@ zIkla@nFMgDWY7(wn4YOQEPzq86QCuewN0YIjK}U zRCEPT$|MABt=8`*@0%I7QMmc2T`ZxRe5%3;5Ac)eIxaff{ApTW4Wo5gpQvhHX*8pj2}%WD)SAy zm+qh=BBoszNKdOc*mETvTo$tt^9qbh|`5ZN2aZvAG}kPRbpbJXh2aTyJRkP!Hvn z#jvV(HV44?w6^Ns@D@w&*P=Bg|sVIJn8r^JBy3BAPXy(FAJ zU6Hlj`l)4!OKf6S&D*8vX9rEqR|{hyA(hS-?6>;z>12@~%%YNUby?gKZ#~^HBb!p7!jI*52l`p_`zUz z0jBjre4{xlC!2PoJbrh2$xhh7XU4-Zc{})32I`Cc!P@!c+jRc0EC+M~9Zh#I_S*TR z^!R;4AfI!TsOf+?kZ)%8_W+RZ#~2ETD|simndH`S%Gu$r=*6CZHTX}o7ZFoqL54ne#pVK8!UebgCZ6`GL^khqs}nQ zQj>T$;|~>ajw-7@cAND9B!Ao$>4?|=8WYX$W4kCT+46lY2zQ-4@px%`E zut3(H4s)lO-IezV&5he<(eV!gaiB~(?);t%JWs+Pr)9OWtG&$$I++_FU{gnj;tL$O z4FlAT?M?)Q?{nB)24)F=7~7o*TSJYnz`Yqv!H*#w=%Y?G{s@nvvF zQom;y#ybOFI79c)TKXLb-2mlZK)+pO#EUQNui+*=HuS?H;{k9|i9uNZ{1L@1t5wld zNX2t(1VOZUCIhiS11NE**<3sdD!pLK+kv{s*QdNcRL)6#yU3N3%&L$6tVFMhs@ce8 zyFiH7rR+#>vxio;U6lcuV$2sLxa6I^7luu9v*t0I?OVBb%iBz&?aj<0&BMGikK-t- z*lcc=e4fXNiDNLw4m%;UqvRueqRE09+|`fZ<`cnJ(hZe!HvnkBu;bpk4P@>E1sdET z?m_&|e<)~`Tz=*+VImBS|5I`0hn>WH=licL!~gcYcD}B0K$9w8GQIq{MBw8P5Ql{k z0aV9UsI0bN226b5_2*GAyS!WP$2x))6*;bcOwaDmyK>7z67H;Q3z#M>K zYS{32ICy-ORX;hu+@&5gzYTg85)aLt!M2;3hgx=sbjC5)uY@`)h$0Lg$s6pCV75Pu zY`&L`$sn`>K(NLq^tyB8v(%mE-jJhXQ*b{II&RA79J41cp+x0Zen5%_YwxDnPxWTy zmAtTt*6beEv}>fvPB!wJu=rIKwX^{i@5%5h4IAz`(#73CWDWc_P$ibWSFGv_Ma8qJ2ITuCY zc3l_Jmy6mXARWxPQ zdUE96#wDu40hs4~oNs;Vbe zW*t+j0`>1Aj;Y)$Y-F;+(>bmp3IpoX=sX!)~yPd?!(^!-X=#0fc`)dB|7% z)+*udsJ95DU!?`Ei6b3dEiOYCN;kPL68!f^n5EWYaa-Kqsyn&V=PPM*$x3-cjtaov zBf)7p^?wlU-ykRzcT%%n?_|Eh|0i95%SMO4U%xh6UcP3r|NrN(kuGAspZzyqa%sMr z6)0zO7e_beeB;Qd??fOfxLC3OU+EL7|4N@YyIY%@yDh+((kZ;?|j~rC+ONPw9D&&USA>5eZ2# zAh?f;Wo$Q!1t1|dq>r8oGS)->Qrk^cc3l$IgUa0b*?xYtyv4}zZ+2%k+?D=i)2H_& z&*%E9 zaj##J#j3|?i;Tj>gUOx&2Nrg+2se9fvF!+=OEvt-4zPus)c0+rxOEmpU)-5SJuSK_ zzJjb<9&yw|ZwHCvJ2wbW{W3C$L!zO1NFf-nD4b!}66+)A!9_2WLLHL&0;@`<8G zP)CgJs06icqZvqS>G`j%GJI8`?dc3zBnAe(TyTzqP@wHO0RdMr)QriXyV&w&#D-M1 zb)?B^kM_XDe1%nq$7KIwkMv}NJUfF1AGnd*Y^QecVn5rkrL7mKxsDwd0Dp&3qHkO0 zZrO&T2v=FWeL4&43W~OZXHxg5>bIEq1fhyJPAqR|NbUA{$&l)dg^Z!)SUfDhHFAr(mzuEyewC!m^! zrXj6JQmy!Yk3|{nv5JybWS5~*jYjS5wx+?r?H7qj@E@|aP6j7a{d(V~r8$JwDj4i7 zj%u4Gtw~Uox|?=XY_-l2+WYR36AJ$0hFOZdRguyoq361nMc(h(u*ASO6NJ?dj$3as z9L(AUB|LM|qrHyh;?R4~tQNqju-^2VMXWo_7`Y4I4)5rL?1`s8u)_MxXha7sW*r4_ zn9v#da;DN5%ZhzO^c4jXn}?~QbIq#UxFH~fhXWKz&^Ufy>`vu`jS(3oa)y#!RY;rMJon>UVr%QdCSe;#XcQsn$1)G02Hl~B_XYErnBp=kJQg^s z0zf}78NCr*VO$$Od4`dzb7|9vSGY9!L~GpY z#KN>r^u_^=+dox+Cc!QkCK0hS>LJ84Kk8h=RuA=tvG?^(-~erFKbwI2d?z&h$htYz z=%P6{dgj>sU?()A$n`FDaDc|;pWghUb|9C!?J?wy+-gqdA;gn&dO+jiPj6b$OXn}o zD&(%*>UP$l(3#~O<{|N!WnQ33yvx%I;76m&6B3~D_fKyuQN3fmt#RaZUd?}F$eLW5 zH^vdPxz#T$L+V4zr|0?DCWQS3)i2CL{`=oL-z~#BMt*t=it1hH`6Uq7xzq_vA%pyb z97qX>1db^M;P%=U6oLD~`-TPo%;&3eyr&xT7?M_d{6?Mdu>vy2oolE&V+u!mwr(i@ zVn_&Yxt>!BD4=fOBvqo>9qgOoFe9>A%qTWNwUYNw*zx1NMnVvyppK!KuQPS|?F~#;_?VA0^ITMe=sEiivVS42ru-~dc8gV3#-aI zPFSwbhl&20c7j1qc%q-sLCXNv`tNNz8~}y`F~4-|I_#A|d%5PYsOzn8EC8cieBs~l zNP@>%MeP0Zp;@Ddj3eR&Pc&~B;l5y5T&p*LMyJOD9CR{JFAW^>A9df*aD8pV^@35FOLRm;X z-61gNyZ@|~fS+Q7z1r$C^O)A5M^!U9f9X z>5TP^u#>c*lO%NkIfX+%gahOC#uKW?nvFNb?QbipX>eV^X8*oZ@}3j+cT3e7kF_51 z6kOI2J%$a#$W5~&s-{Tx$T%2{#TxXi!)yL&E~nt}fg0uMDu*ifQ9hFgcrnoQm@5#T z5}e`#FQF)fhG$L3=qp}FxT9Y@_JgpP4lk7YJBKJjf49Zy!lT`IqMx1vhtu7ZZ2@%VGZ;O+L@& zQO5|AXk0;1_6ZdiH~WtcpYvOYw%^#Iam52zQ;_y1PR=$R9?wgCMo5?$Mq}e|5Mlkj z;5}&Ofr9|Yri_78x9W7L8Vaw#*=D{(%IF zNU3O$6?UmQP<@9L@u3K^xp++C`D2_*x~4Lht;>#`E9 zV}QfyNh;cl5jmfB&1X-#BhkC1xUDzUQDqMrOlT)k*^MufG)7oudP5BJrSzheE1z?! z$CRv=pW$or`l4?lMETIj7_~Z@j)90A852jSgO}wnKVZ3Dp5Kn{N))&I6FibUxUV!L zecB9_O#~PIZdtMTAxY!qfpBtzi)Rf5PbGWPKPd&hkRCsM$$|F{JM_Ssvy=k<&#ZRK*2wZEUls}`iGng#rKA#G_M2?o1kRxZ^qa6 zEkgAt(X1TbsouoHK2hJyDHk3!%lMhR-1>brQM@R%Td2IoEPlMpqmFie!i0nPHjrOj zyRe2kTqGDcS0x0b{kIhT5hyOhHjKs`6BH96NHxiHt=ylqi@-(kt z)(bFsIkod2@W^$hKL`8)DSpA0G8`L7I_wktjfHGg`n4WO`cEYBzZg({NuuCCM$ul8 zzo}$1C_@c6k{9?mQo2ylY-fwH(i;)cR*+sFMut0a0y}{Zzc!A`BdXX}U^UPlrEuRs z5KMXhinFjMBn#U zDeO@CT=Ns4HE{iu%ayzt9KW4259_;dAqVr)&x+@Xtj$n_bH1?kpzYSlR#~Qk0Z70T z&wX&~gYkT*T*2fLN7#CtZ*}uNzS<&WKw5NVO>F;STvs02?>*jthvQDck6`j15PIcdQn=v zMTOrseX+U3`8QGhgFo*okMBHT=LI}H28I%-&9N8!o?%g<c#a z-z&cxg(-xVlFxx$CZj`VaN8+mE<%=sZB`W#`i1h_i9}-yxQ#0ZhiEMP>=n&6p3PdG7`R@{Um$(TNo0IY-6N<2%X9_Ro^C@()>ue@b zaixLoA-ZV>e)|-WGXREoVkv^WQIT~M3yHKcOvVhR{gDQov}+Etd<`#D1ER&9s>@~3 z%$vgv-wlW%_XHm>>i#%WaX;b$K#8Fo8J0Ps5R+yTLvXvizIs5KqLD*}Gz&h8n(b6k zpx9a?+Q`_@pVOLQR?B-u*|x3FS&|e!^$z>|_9l#uw%w=XC>ALejorNF^!6!XzG3BE zq0*f5SYP8Gc!H61dVi>Cd3qaO+0L>gFU6VV@d_ec>bCXI6X*lW75bp@ya)g7$1A!O z^y=EB_v=ux2R~1?iX!ESa7gcF7g!}D5S1}rykrk}LRz|F8XUK}hfsB>H{7I@K1U4e zOzw;((;2*ln61co!VlSVpKCpZ36V6C6z32@m7ERP%&&Y`RJk#)@QEVzT1d+2-3pN$ zHUp_024NC4(XTS7I2?@lyG+McM-EDO$G$__B>N5{~TVbm@M+ti; zd#X@fE*ZWrbdZvw8)}4(=OHIBtx!xhnm0eH#DvqazzV{WIG zEf@NUhcV?1GwZ}OvK6wTP+R%vd^z;T41FmV)hO$mUK?C_zw)rL*`GLozgTv~dG@%W zg(Q#*!p!t1_iRsoNuIf`EnPQbkDxIp#%1oN%elL{Jmb20%aVsVxnC@N0-ZI~97TkI zWqG8LM|W)53Y5dH(3THpW-;&!OAp9LA3=>qN{xGn7WCdK@iHj*TYoxK$P!TyBoE7_ zLSk(d3iCBFo9O2!c10M43JK`ztUBfx=Ro$k+TY{t+!HXwvJP9&BP!( z!bDWZU2+ax=_AAtJ=D3QPddyH492#|wLJX~X-CksC8 z0DZ|IEt<7TU?S&?=Y& zeki5uB4mIaA8Nc5%$kN$p6tZFXIA=PP*%9)Mt`rQnt1=rVoS3YS_Q#Ea>0c|!i^kc zXaoW$7RFI(H*%!O8z@@17mG|qi-5`kSC5Jkg1#c#6-{aMI8G`fc#<}%38y7j9bRcm zooEBWexno8<0H!6rE}mMX88LOt&Y}UkF))qTL^;l?ux4_bT8AkCqdsi5ZYDe#xa?&{WK01Bn(iV z@c43}z!993T>~^``~JvP($7!H@VSo^kI`9d0w3i^C&?dMboa?T1__{QkFyXtxgdFSCcM zK04Y=u<9@bKM7b0HI4K_NU7u*9GKGO0A%Vf*?1KtV{}PYWqBiU<0ySBgmRvwP$LFl ztLU8qX+AvM5Be#nJ@zRvS&6})W4g~Kz?)gM!pqP+2Mc4O< zSRgEE(I5iTuzJ++OhF^I5=j|H^wg|~ET@PPb~>szSe;{4wY-d^)^dO*r>MQ8FcWG( zwyu;3J*bMlD!kQ+$t3V%dZ@M{Wl`Mo1M#%a^n2#AIK3$(*haWg{8kje4pL9CW4ahj zHg&2dH;CAomn9R2bFdB0!=pn6Hq(qJQxQ@mbHItHfQ0{Aq?n^hV()&7pp=c(F2Z$j zOUWh$$;HVlUb3qQ=eKhXO!1L{)k_17HOfp_7wE(2Fa7NuGk2!6xwEx_w8bbLZP-5S zmaAZfsZ4}+;q%@9`EvkTvEdpE=@U;t0J*Z4PZAxC8%MTSZlOq0anplU+iu?oZX*?+$JN);-%L6Y3fp{z^r9b#O`t-D24}fXt9*e8$#V`O=u~Abz z|LH_Q0=8OT04uTYB|H@TXPig2G=_`vM;xf#uLoOzi_(`*y%wXH*`dqe3LK^=_?D2H`00e{>2z&pmJ(0g0lq$F4js> z1vk70B(|>M*^U>&3>@m}mqyRHFb~E1^^JcfyX#1#J=E3@mJx=Ad^!%fq}@I7Zu|T{$XJmUB$GU&IgsB`HpqOTdAdeu$*d{>()t z53^ed$g{%Hh-qyHyZvtXSh%DASVCr`TRG)+(3Y_Sf;-kS zl#F!<4MIufS?kDXP4B>r<3Jb4~JELrUyS@TH?ht8d<_K9XsG(`rW-!fwT>l+T z;l^M*=7d1!{4*osxEVG%9$E#wvkqHxPQWNhRv}EZ2u~wP=+%0M2~HPfMlJ{1QIbD| zq1^AFl*Ng4Px+W-ol~6#oO6-DoT1c@_3Ng~Qt_0*x<|Jf6v#orJLPA{Go+09ZrB5r z3-cA)*BO-O;o4h>k(oqH2ac4~9twN8ncMen6s{v}Qg0p%Ds=bQb4(USC7FN5`tu?` zJdt9Y?GvEW;83CvD%@qJwZScTa#YPd;d7j&u}1Sat4i(*$pE2Ni2_;{6K!_Hqq3&% z!sFpYhEKo<5J{+88bY%+NAd{zc)0s2OA~Vni!(DTGC`DC(HSyyX`lha8A4N4j@> zkna$5P7{Bhs7aa4X2*D_IEJ$cp_6Rqpr6b~fI?jg9jj(T(RZo!$=2_!dW0tdoiH@B zvmtW)Z1&|M+73f%`@mE0-E{lK(?4zgXwDWpxX8L`pd~Z+6ZWo=VJ7Io+pxE)Z?m2* z(ueCsW3dmB0mYkYs6XqdoF9Bib~)Qq#Oi3Gx=jU8oQid2Ni?y<9kLZ6y3e1J#(Im! z@V}NPZ>giM8KQsp?qu$lylSX$+O(US3zDocV;V)ueq(|_IK?!ooDzeeP&0o}BZ>&Z zPgq6(?U_l*9!{%O(Uz?@?p0tbZ0ywqS&Djkli54e4TtUMLSj_)+xd|3(53(~p(1RWh=sgeSp0B}(I zv+#;$hm~CL960)_U_wf40^&`cM5BnpH+8ftfLR5LOsC(Dn5=M8lvWo~$2E(-Gy%$y z(R!AJHsl?;QP*^CAro}^tOmP|RFxk3bV(Cmj9wt9fFK+_&n5I$JvF6QCj}X>dN3Uy4G&^^=z9?w zIu|@X@4_kxZI&P^bnsexU}950jNY$^xLfHT1;2t)^8%U2X?RMo1$LVs8*nVSw?cTu zENShAFxW7*hlL1E?KY6H7CqVfij?0~Qft{b@)oUkCaL-X!pA}%0TT@L?V})AV$U#4 zL}&<1+9$S)_6Y+E;@z@6UG7vfC>>HJa z=*EO@vH~aHB|}0;&Yczws>MJ$M_L-?+4G(I1qjIudiBo4Y3EIA-?jjHZD&&03@a-u z#NwtLTZq=;@Kt zpsal5fJ%!X?nnnHg04d?uHrIAK9okTY=`Z0G9zKBsy@-|z}`Ii3=xnX-d>Cn16K|+ z0`T|+FJLEffiZUyhHi4;>N<mpnI8be+5&{Qc@d#7tqN1umA3@? zvSf#h3Mrj2kQeN#cUtV0Ov1?!C*>1M1?8wGSwR*7 zsmwP*&{avZ>PXAK>-;347=AsK6Pck6)m9DS`%viwdXoF8a1d3BJ$YKwYC}V4*`SZV z7%UV%MJ%YPzrelbU;07kV&&>-X46t!%;9abb{HG6}1 zo^>slmrH=h!v*4A-Pr-+QE-`=MV#ih0uxamh~Qw}@1s!bg$_TA2l98ZC_7>NBfO zPv<33JQ<%FJN&KV^6$Qwi@Zbm8?r+FC|q8&m>rIx9tU#BJ_Og((Gc0IO}1HTD%1>& zyU8in-hiUX-SuIFu=;)K^+|!*z6}wM> z=EC&21OVj1rh-S8z-4!Vf02EfC#?_@6H5R*yS`p7R{-Q=3vjy?X=dc$adZE$3CoU) z5xx;MXzZFncAtrvwO|+3>=>}qx=4ez;8}vL<6VVE{02LE4jY@wjszWGb}%rXm$()v z?b23X{^GgQ*H^*hbGoGL(|uv)F?(9FHD8JZs{yi#;KjIB_YvOUWUCPR#aHSP;$3*- zaLY0pIXJ2?QuZGA?19IJdT|CH3t6Ni*#RE)Yi$w_O|l&EC?0`;0Q(|$90>sq-&+_M zy4~B@-#Of91nv4NZ&17-`X+h~@%T24pkaWG7AMlavru3jH>N5Rz75&t8~*#Xxk-^T;%m;iI6*w@j9Q#to{g@PoKt$3sj(qUQ9d zs~#_Ic;AL@)Y6?0gY}He^V^}OkHouVJYuY5{PXim?m0dVPGYTQ6CEl!G?0+Pon?aM_ky`X=?nrej&)=RAX$y9l@QDkDJ3h_ww?ZXN8-CV=O-> zkJ}jUEcfb+AcrLmUqb=1^BGr1vj84qyQkpEvP^XJZKm2p1ln_83*k3ooRt19{0p7c zCrO0#6PM>;4+5tWwz9>SO1AB)O!!f;O!_u>S`SE=FzUFgmblf=T_bC`tB;b%s~coy za;$W-l(FsOYSDIZy0j$L`|H`ue-3YNG#I}hTd*ca?fnrbbUV*F zZ%OjoerEm4F_lnnP77oD#}*zO9TJG%ss@bH2;dSfl3QrifSYr;_r=D>$Mo)3RA9s= zrIZX!4xGn}i9KL_r|Xy?wOokd#^ZzBzCX=et)=~KKRsg6zZp-@N#8!#>4a_TZtSfm0 z8SZJYB38ls0j?{_1}atLhXtxcM*_SF(UXCC6!U1Zhx-~)`~-8_On+4kOv*4)`o|P~ z&VVr?A=tR!*a>O%dk<}WC!k~v!CM2O_f6{1WD-awoWnC*SJKkcuv9#mCTfQ1GBuZO zq6;0h#y-1*X2z>H;d)WXKzm7b6ae)2#|SEqz;x*?*#j>vbp*8`ab4bafaK8h|K-iZhw z_FegQQ5gz)e~jSEing+Pe~ggC&ZkIeF6$|KI-&$+X~DoqU&^nLvLoLWoF)WT3tPz4 z3nn*%AU)`*SCWjz=w#P%p=^aXASk#OqAcw7AcsmyPiA~W@|BCsNt++3_D@?cPc()o zB*u~VFG*_kR;u)U7SQc6d5Q?N@HGTu1WUde{E90Rq=nB<1CdyGAk$ht5$o~d_^B3M zUV~}BoY;Ay2usEV;}eMm-&jzkLFI3GqhTjvm2bm_;;@c&3D^;%MG|~T2u)kU3Q8{N z3-l1(P2eV3gv?s>Xo#*uavBrii>O;7iDE8}ONd#n(MaBcMj*+j*BCqVmK47XO>_n6 z;z2Qb`d0QK7iTIg=?zzSgt6)&u1wkf2M*VujVS9#?Qw+*XQD!5 zIH0|p(ZjvbSJRJPC@B?zv$bHLyQvn`E#6*Ju`D_9bIos(rlFeHg?q1nzH%*LlTg7W z5uj!41~g0v1u3Ux!B&B#!&&qJY>8#uphT6&*Ecg+#T!Pv8{Bfz{~waB0;;X1+Y;Qh zxI-x}h2q7vP~3vM7k9n56mOA2aVzd_fda)^T#9>fcL?O=``=nw>&~$~nUmz?&Lp!( zGjs|pK))*-^p0r8$guTORV5pPhrbAN?qoyxO7Qf~wC28ydoIwA#A~FbA|n0b$CoU@;t< zMVw8rHsL6S307oPYK@Zc+PBzB5Etpk5PL4fW@ar`#@>>u_Zhr*w5l;|tL|^Hm%|9& zK5FT5lwP!CrfDhZu`svyw^-NOcE8o1zA8Zew$0lF`DS}1e80=^mK9F;hxVq-MOzoitQ9FYEcP2i$Vtu3 zY66C#niJPjwEmrmtBHw!$6)46*(+pZ=muSG;Q6YcN-<#T#^j}a&>eG=Ma-3OLjN41t4aDGf} z;t4zWExV!?bE<6ZHEd29P~Hx3lwAw`Rc~x47k2WUZd_}?K|+XCmUmL4bT^X`u>2+V ziNzO=m)aY3lOQ6X{T{`b5>>33a~c1{XsP43-?BQAWyG;3*NP60)(5E%yEt+xY4&o; zuPl@@3eVqa5qN2BdIO1#fry1Upjn2BdQA&mb)gBa~*l`mRbYjkt87EZw6@ z*D^U}LTthrB=6=!@NLM*cBYkActa2aMNI$Owe z#(Ah7mwwdk^&f~JLbLi-dDmKILMfj+OHN#5*a1VcT|3AL7%9rf*9q$*S5a~25ey|> z|43NP=T6rIKcYyArHddhi+IM;NF?+9xBBg>G^yotPC=cKN_UeC>0vU#ZJ8lfdtPpg zpG~h(Ui9`{tva7FYHK`8K30=+7s5jp1{>%kobwj-+2m8!dk7 z>hCKkP8v351_DaTb)Q0$E%%GeWBL8MISYj#rHIFbE7+>Aef#sc}vM^wb7`GmsxL$y-X?gJ!M{=gk zr+$DodD}5K=0yTiPYYb!+Hb{g&>Ys*r)n5$j8GTQH@`ru9Bn62c>1=hL|uiaN9|AC8wW>^xo<87|F5aisWq zCs1<)5j^~53D=&j)!Jy+%XPzr@iGq0Q+m7ogLqlncM{GCZ9M{&dK>vah)uRrHXrmO zh=j>=rP-QhF@)T5wwc2i=z?oHiYZ=Mg+Si}OAY3IFEbwmsDyDjaCu;59cAR${}8T| zD!tH)KL=fCHPL@f8r+o+V$`m;PedVW6Pn(>qk>VTarFSCR_Kc%G5t!NEby~XiHHui#u0Nr>ov!Df z0lLhDZfo(Rmy8F#;+1&H`XGIb%d9k`cN9cbU|ugCQf2E@dL|tChwf->X$5? z=7iV^H>bU|7i=0Uj%1p=UC$tK*P43Y zZZ2z<<#ykmSHpgG?g1Fa=8;nNL02Z=d4#S&np7(Z;cglC!b7_pDeM;>u+MA(s5mLs zV{l&GfTrlrF0C{Xts6gH=5$o8kUh$^BZ(ds{I&Jn8DNhUJ%8W_B^Wbbx&T$~g|8?D zv5#e6RA_h;i5>*?gi~h7ycu95c=SWDP*PtzFg#+OjTsX(g!3wA7}AXipU!WQaB(X< z_~#zQk2tyA9?rvBK8a?&(+POuk&2{$twZ z`0!9$#;X#l!WF*g-0wtqfAQ%B-7 z^i=S3hbY51^fWrqid9!mX}{z1o)6H~QOpN<`YI>N%9@^*^RSv%!*%%k?B!E4ZV6oA zHejRQy&Bnqol4h{`QEhjG_m`f1S zx_b6PJe`Gxid2tk@$I~-^c3r*CdKA-L>4M~#}5><5EJe+)qvCB%bRkL8tKCv?xo$n zLSuJ%j_gqn9dEy~nwkb<8m@|*&&x_&oN34I9e`a%6E)thR-t2t!r^GAw_lT8h9+a8 zF-;|r>&c~Wj;?iQV2fQwK8y9cIj-g1t3g2l?u#yC0)i>O5v?qe7;vXQ1DiJDhvCJ{ zcw$;JB6)^BUDScv*;!587&Q{}IGdGsgBFqzsaE=Q`3i4l%=xKQML`$kSq;vTvI?y1 z?0^sAmY^eMC+K3CKPwe!i%%}xAp5tQE-Rh5;X9U$KeGMApo=G#_0V|MMkjSVX_N`# z%ESXq)3W&J2|YcH#Ape&iqn|33w+J5CE%|tR$6|{G%rmZ#guq}$vZ7^y67V3_kjf+ zWpG))T1J?r2mJ1pp<dGmy|@+-)X%w(w|)nEzBr{Wsq6H_cEX~VgHu%Mf>bro8by~BbNK-Cd1p{@P^C_ zF6rDbjN`uQ?l5VchF?fvbc}EC20qP?+bt>K^AxVo3M zmZ!J4f;6VMyWp;IaXLS+xr~pjlWjPtcL}9gO7#nzr~}cfeDv!@RGJvQoW13OysQN~ zEA~Ow8Vi4JiB~_8R=Gxgr!LEIT|HhZ{Jy)T*)#n|813N z?h4$OJ1QOFJ3%Gzwwp57CYiZ zOM7=YZbiRMuH7(P%ez>tpgs~X+Ag*0|4RFi0`LkOrF@UFn(rR|qh&Y$(&iP4C(|*t zwzDjW!ZiPjyVi&)m_}Q{6idyTFH!_(FH!0_=4LsBCg9Vfn)A80a zKxW{Z@(9MNz+mpmUiEg;oQ_R7fhtTsb9QUu9emQ-_g*sVd&VyIj`2OT)FI`yKNl&A zG)~Pur0EJ{8VN-0;Rm7SxvH*C(q5)}w*1;p%GVN12j$u%TKgvG73zQYQiGdrNW9=C zH29scQ^FKpftFwCDR%LW(b6=B3){ zIt%`#VETSeUtmj2n@pOY*A&r}mQiXbRQfHfD=m>I{(kGH=1o{)Qrcu*HRlNxdjUO> zKG!#Ij_(bqnkd~Ha0LWxxB~YD+I91$>j@v(_qScA+B6iIqox;KTYRe`fZ&Fot3rKdH3S)K_qwjfqr#NK>;H+9gS_3K=T^Eo>@xe@MjR$y*l zlK!G0w|9j}$pJQUgA0J0+n2orNuf-|T}CaTI55Fhk0)G(_k&ES{ zq$!DCNy9%>;#Xr^vIZnx55MCES%*lr>=Wi>D*A1MwYWDgGuKJ>RE4=%^!YMI+XDaH z-7s+F`IVcr^5*%q56dFHHJJb(1hx#=zGxSt*f1=af42~K+U)~`k~iLYxr4HTOUm9e z*GJ#iX~qM!x})U6YabVR1PfryEhQyeR1>l1*qRim>^M0BG!fwS!%B`wam|X!YRn{^X{&12Q*r%K+Eu!=nbja zCT8gBdp$xdYG&>b}rtQ@AT}_OhF?tfc z8r|ju%03c;+gpmwNGFi>9lt00Ys6Vq-^QT6q^g|VV5@4tYcEXhz(PY2J#hKnaTBu) za14#BGwAR@cjh*!ODq`_xh*^?t)ku@2&-<~&F&=L2MnX%TusT!j%Ruv5!=Om$Y=w< z=de!roZWd-amc15>~kdU8CA=%wX;$!d6R*vM7#~REFFGP9ba7veSs+;IlRu>(&5{K z+l}Ys;JkpH%|8sHHR0CimR(G@@U(^t9=+e~hG-RIq?%vIMC@Yg^FG?E zAG!WH+dy=eU%(__5n0+u;y~T`5Y*vH_WGCDh^~o^R|&$E`jIR#eacQMobTp5aFp+g zeN07Nb@9xzQFv)jE*mDmnZ=`ttZ_V(UG=wpFz)hyTeYIzVB=R;Ww>;uZQj1zs1t2D z3b6eXQwvSot*I3W)JP8q-^1u?Si#Xj(;jtqxfN&8InAc5#1l`gU*Boowo~}oMHT+K z?ZzglA7NLud(d&AngfcPq_WX)Uaj+k+22D7$70N>c`s}X*EirswLNEnKHRRm$XTst zWi#2B5=fB5UJEXH6PUgn*dP*^-VF2C zx#yrfD?j7`llXRU)nJy|8Gwk^fS^XMn)LO#)0$MTfM0xp=}&iy73cc87f-pHjU0DI z@SriVGjj1UcZmwjJnMGafanSLJ!lgg(&^Tt_T0YoXJl9uoQ8{LvvH*yat-&{Bo+H< ztA8)poYHXY2&s;X-5q}nGCpUA1eA;4rzwn&ne^3G9p`n0n=VEq16Q9a9@N$9@bN+z z^!Y4okdnumrA3;cV5yzyUxUx~s>-LdNo4dLH**dZ;0EzW*jcqj6w`!b(V+xQ5xQFo zPp%?sY%nTJf(ME`TjM5CH%6mZK^JN0-HUoR#f0E z)XPt+FShY}qO79&&HwtKI6VPz_fV@*M{w@x=B`$Xjb}4h@G1@STsCl796M;aky{-5 z_eD|F?VzW!y2Jl!S53?TinuY0f3(^;*P)s6I!)1>!`5_ zceH>n$5&bsqK$fTPLtb;~ z2RGl<(D?^xzeGzW3}^ak!+?k+L#gFyu=kz0)E{T8ebDoCeYumTAs%Ay;9SI?3xY^N z>0}Aabh6*yJSnYwj~K|sDkAypv7{qXhJSeU1)9X$+2t1`tql@lh-2m8e_)AX(DzH0 zh9%)}SnUB)i3Kkyk6dmv@iy1hr#4&CVGJz<>>K{%QoT1y_jd+c2t8|t7f{XnGcTQ8 z7K@;{XUxJhyZ!~z+0v6oY-PG9QjM*+Q$obFJ zmE-9|c{`-;U$DZT=gX|8#+Z_lC-3{S&lK+i9L@owy{$D(tqD2)J4c7p+NyFNpFdAb zH8}#aO+E?BYvWm$-yKi6Ys&%4KTj(BceV>Frn-!fihs|y6x}rpHNO^)DsscsG+h`a z&=&479{dX9=!V^XqCJ1WUx&VO^Svb+NSR8|yBBDAI-@tpsyROi{ML5!?%`rFi1UnD z+|vp$9%KGsR++~{o3pymwfXMhZ_dDat)sX~@aCs=u>nJ={chQ(j&!W4BDBP=JVpLZ z|62*!!#swQ#k5(zB=z+tSa zLIpPgt;CtifUTKXF!`uN_iM6EcVV*z3=}1&12eL`vzG#2=OEk7|;h`>6z|=R(|2ao?Ok^EB)r%+C z(uaK8;U4QGmFFk17l~bH@`Xd>x!IFmt_dqN)}_( zX0ZP;0F3!mx9sbw$oRtx!2>CQyU-1?8~zcmd4ea#cA_#=@-afY1IoSrE~NIq&Vp3 z-DGDzGsmcO8pIk`t|=I;-oCZ)9P~r>Ikk?s?qDf!rebcYz9V@14^1{OQufuiRw9?B zN7XG(x~uU&z#GNOXW822q0SA7S&9d4rZh5Wh^vltLSdd5(f3oNzKMBUsV&@v509T^ z>Z}}H6LRKiHnBU?%m^;ADC?J>fVyQ;<1JAy=XE{akESChPi!l}Vh-OI}z8YAeyulW)z9< zv#FtQ{FAL*-ww%27s<73vu1UC-EeB1k?;J{*>q!jV6~I>J+A>K4Qvw`Z&Je(5iOo7 zzZW@zU#XlzN-gy_ir!B1DLRFm+YPjTV7kOH250Z&wSd#2vQb?{Mw{({g&Ak z)<6N18iB&RLquDEaEkaHurP45_Z->gx5sk7))~{eAf_6)ff#;&etU**DneQHfvG(8 zNaCxR?yQF6FhR)M2iC2EMVvgkv>B`Y#)1Au#%7s7l@ERV&Hw{SMj@MbU}pX}Ow{7$ z&|~A^Yfbo<47^@sq%YjvkE~^9L<0csnUP$}iAc+5U$4EIBGK>O0JT`lm&XyMLkS;h z;}6gH2|`;#_v?Av0PN`9#g@!~iy9GkGxwrjRnUlKbE{ze7JZd*vxR}Flnyb991r@*8ha5o)rr}f&Iq?MRmQY``uG6cI3 zfF*UgJF$-|0a^FJcK<-ok62hx#B0^BocE@v$MeVp9t-yFgX8+Hxkawc9q6q=vEdh_ zT)*=Egip;iJ-^n~MwFXkVrhPLlsV*2k(euwVLHM#Hlkd=5rZze$^<$-z3UHEM%3^Q`O+sMRecZ6!Wn=q~pHAwUvHVjCg&7uGqW;+GCw zq+sL^44w%0AZ(#ighXx%*Q>DAr**D1Q^Al7?fQ9J^J<;=JMyaL_~x}eyY2}jZZFRC zF5(Y`j%e9%CQA~IhaiQ^r?_9s4RmWTw~Ln=f-Xp(0UFQRx>@y|dDnz_^_h25&ob5- zY2D7m+cj>$Y~;+ctCex2)Up2cOQTTN3(CdI)ZkMz>bd5fSvBo1gYV#@&ieUnu;b`d z)@AQ<6ZwZi;QIvxo+}A?&7YT z#=jfBKTM{&HmN+YW_T%nFf%{_nVk`HMD!(8{ci^a&i8lH6 zR%0QGkD+uGr=W|)%)PwVr5vKZyaAs~SoQ*L2(S{=qedZc^^o*gpEN8ne9k}K>t~-x zy>FEhmWA=Dh4DQ4e8Agz3Cm{ws#}Of6#)ElFx@H(ie32R`4%;P2=t&#weX$C>^&}v zE!BoZ9CDYHRIhDkh@JrAJy5@tVb)CB9|AmU zhFb{V6#Ra`8cTYmrQyH}9oTwEkQqR(K=EM1_7Hx+WoCf%Be7k`Cp-9r&91ib1xQup z^t(fRc7h?k`6p?Twp}5o?xCl4A>bRv9BvL~*;j?#CmEJGkez)f6L%Fva#g7d3F`%f zwHDHm=6VTnq{@TXT-ask)hVjg1sK(l3P^K{$HQ4EU6;et#ADNd9vb%5Q4VF%hP z3+?d=9M$ylr}JSZx3H-MCdjU0u;WFD9vAw(66yJF0)oI>Gv-qHw;Qx(&3cy2XFjt% z>yDTPp&&fV5j`GYAx*U&dhspCHepojQe90km(*`Pie}7H?6MWfJ0u~TyCEOfLs~W ztML>?{0_(sT)CA{8&-E%eS|Z6nW(Y5jg#Xe7*`kxifFx2A}wt_W}bB zkU@fE-nNmS&uCrjK z!&!VN41nkO6DyMZ|McYzq?~$luvqp*r)*$wu!wF4KW{yG8<+3}go*8hQ9D}U%9pEj zCZ^F0C_yM$SL4!XJSTgO`Kg;Nn$`!yd@TC*&Sh`kaQOW|^6|fLUEoH)tHbhXAZT0f zcaVsg8#il)#GK35&66t}b({FwUQ8Otp+KUdftuPd^PoQ|U0xTyf*dhE^Me7!DT{V! zzn(;^Zjs2&;=m_BuY<%!S+yVN1pzfaTKGl}+gC6hDv%DXWPF(20=ZP>r{?;qwfQFT zhY3bDuf;XL(9io5&p*z9k7z{<06SdO2WE~yQrwAe$pR|on|iLkYugcfErT-RwteD& zjq&dv6n#+Qs+QO}lf*gkkhvFD-GKJ+hdmRbbA)s#DBY^wie$oS9Qn6M$P)>k?@U;T z94XKGFme}3Wx^eCR!993qVD%T2Om)fmkY$>stxCXFF+F0S^t-Q@Z}lxh#&{ec{>)O zu5qtBV+b+!Js#MJvNDKI_ldWv<)jP~$Jr&L`f@O-e`6N)%6pd)q1l_4uu+`o-#v6!t)dE~D7J zl?5rC={LD8ro?~VT|sfW{Lp*Q>glmfVfRZ`IF=oPP}f&qLN)6JvjU0yTsgIuTT85y zy$t^=vaD$2+LzyL&zTOz5*MSa4B_L1@LmcozP77!(zWbNALf8h<+CY2T3Q6HT|0W( z6g-D14c#CcxQ70th#y3_UI4(Gmf+21vi;g0d+)15(z%WDSvl@FIechQv$BE{#@U)6 z&Qkdu~QXPpah`G@VC=1{Us{*kYDHm%cwjSoKF z%Gdp>A4jVncj*%uf;Xsh;6;!-wN6~OQ!6C5OP=T;5he7cf3y^$Ai3^mLv(O@7(44I zicIb2VVf#i_nQ=eZ=RZbfiJ(F!K-o(*FbyH3;*hYMW9}hBhNjVk%y=W^Xsb;4>vos zg6@*;!27~?Rkdt`g^lNvJr#irxK6bBWss-!cGOd(^)H-B zR+7r+Ap3I$#t4(lP+ly|cX?{)DmEZM))Na9PZ@W^hl6MwHg z`xXEv|MTYNdN?qw`+a4X;Dn7OCh^?Lb;}S)s;5cu?;zaH{w4I5Xke_P_Rrzz8j4%+=-|VMyz7<>?G9ibd1n#19!!2r{g;1%XPVX`q4^+- zconGNiPIz@Jr1bf*CIP^249ySpk#PbVl`&yFwf+!KBACb>``Ruiq!q`-NdS14f}Op z%xW@JZ7^Of`M5|powrH09JM>`OI+sk*laM;9Vi70`ib&bA|JAaL^b<^XEM(+((N{h z)MXFc@8rOZ=(H3WdTZW3LuR*r?bsX^FbIT6LjEB>J1|ND5yWrCUPpBivv*nhk2k|l zD#ftF9_udnh_6OxLLH@EPuKwpU*gUW!G7ytJ(A|HWf4LM*SyCc& zmuBeWAp^(VJsjL3K*yT*1moI}YZ7ol-oF8FwpvD>{lsiFk37rD4XADz2!D}S2C$|=?euG)_mmJ#MLcu&IU9gl3#gHm4wk=51VrIDBS53 z?sTcYM8{pCC44O91e?}0NiPJu4K6xe@|p0su=jc1uAQrq$8^?ZUumH_3~jlcn&R&P z9YT9g^u`|!w1_{9(c-HXU9Jcm0FhS-9?jGBQC=8gkT2fio4>$;eho3ohuB%U>n9S^ z{K7Pi4SlJ<%x+m2p^}X@$~WzEzuzN&EzYsDGyS;ENweQf9I%=z1e|OEP#s30aPWF( zT~8x;Jt*x*Bg7!hX+oD%3|jumPtWqguujM%)Ww|&a?s%CmoGTYM&Y{}*8M0-dIAWB z-C~iQaMyL%S2>eZ9zoR$VlT4HaMR2%!KaqsQ&RA_+f(VlRzS0*R6gJu`l80jSKcU^ zp!R|PnNjzi4{ScD;S2o6+K*O}r2XlBkH*3>KYc$e{^eYqSWUFCPR)tSp%+s6PkPqwRQ8#sy>+n>qX`(r~Gf4e~wvZ!t zAef#snxIqjp-3Xwv(%Y@tdspM8x2{I3a&hDJCA(R@yg1YDIm_(TG>Uinv@2oGCJT^ zQUo+ac=otT+Z?CwlW1vc43Xz^-EWN}JxeB%L@sJObsw{iq~?#E&$65M#F%v!nc?;+k7?m7pNvv(` zywjfcW9vz3OV1}9V-Ng0>xsU;QUjv8k1g~AwW371IwoJs?@z<7IHUY=FM9~l`kokP zYp1SPBTI5XQXNQzJ{sx@Yz0at>fD|Mr+`C<^B=kn{_q>QypQ%nXx<<8n5E&byvwKA ziT;vR+`YXMm3_XqC*wazUp5qBeJMTW8g>e#vH`Ji-fE0k&g*^8SJd%$#KrXd~)Y}=1p{7A+2c+>mXHa z>9<_5pk}PwQThGotAJIEssq2aTIYeF=J|ulW>wSfAxB;l)2#Rf%L^hfv=a;!SAdG6 zv9y=fh&ScCm~Jzyt)p8&iFB`B0IW4;gf!YgHU;XmBHS%nU;1D@jEl~?drG&37K;l# zD)?hyffMs$AS_1IcwmA5r$iL{{N7Kpi`u$TH6b>M&9bgFM+*ZT_kTKIC=%I4@bT|) zAKU-(aInLGuf`SAwjj5%ioV51-9;QjDjG;B_g+Wptr!TeBjky4lLiO^Z;Mx5FvGuJ zo(o4lAZ2C0LwNo){nf&MItiw*nlm)_tpyK3Vq)>Gx$*2tNwMKogEc!_v7AAZLb-Yh z;R$Q%Cpi|(64}_)&sK5L!#!tDJ+NN{{arcR@#|f+|MK+3^D-xl)=&Sn*E|L19(9P` zhr!13f>+)f$eHJ2 z0}#fTAkl$&S9EYGTH!OBEVI=^tu$3Irkh=Kydd)Bj!mYDG!@PVUH$sGu$87-B2 z=HB!?pFdU`b_`0sgoW%wJN|hPl)r4Qe!f!E8~j1NZH-=fqpZm4&$IM4P~>eZ;H6^} zjG3tviW(SoPu_$CHCK(7zx(l7;*9KR$dv8l4KMS_rw&2>(2`Nh^!biNBy8jyQ>v^2>yGj_|P7XTmeHo$k)46Q!ExA{%soR`~0e* zjrxl-0y57tp(~#kD zMkf-V-~!Y+77{|ezqzNNi=+GJ&+wyx4HAzUtDY(cH-@Uul1#&V_DAgR_U&+l#1W?!C2-00U{Qy=})SeD3j_rI>z19ZN zA6W|K-Cj_nnWPrG6cB;;mW7#&1hD$wDpum~s}FuuYyo`Ko{yyv-n8Ay_N zanU}WXmFyjLgTcl#e%5Tg9N=Pp5{w?QBmF5=bsz2{I1odnTTSyi$z7u82Fw|B)Gr< z@biW3p{t%ZP!9VDBfG$5`+3l{V%1eTX)`*9U1K7b|HK9V`gzCpaMc~afPMfUNKbm3VhbmC>AfY|hB&?HSw zqCnOeZS)de__cFls2ad%)PE-S&9e9F?uSkph47CG61M_561NlE(=REs0kac;sYw%B zP0?macrWB>?OFnH!Q=L(6*2GWs(1ZALug4+@6Zu$;GV=Q-|Gn^*d$FGkQkMkh&VAx zeIEzBaV2E=_ami043=&XAXU&Dr(dnVk69p2StTDMR!@+xtTa#^}Sur!(z7 z|Lw%N3-yQsmb!^mt~y*1i2}C&sY4S81GL)2LXs~qukEW zV6hhziG;ja8c5<(X7I2wK>g<#N~C_Xjxg~2O412!zs==fXke+&$p>-^EAI=rKf^12 zK~%5I)^Sj<6+-z1<&Z36<>{aqyn|8q%K|^Bp4cAoq<*Spge>_D z-6b!R&WuHjP?=C}9|BarC5~fCLNh$i9||5MjG|J{fTW)QGF?*$*9ijkGa-aB`B99n zfl>0#J0y`LW*rB7FJ`8yfG`6W1)|n*6rX5#S{Wtt;NpA)T!e||40FVW^xcX9aZDSZvA`9(e(KHNXI&Oou$pr{rk&n85ubMKck&G9FWHd8C$Qtx z0&wL*lz#YO=p=&c1eyBo9O^AS@58OZAo|MF1t8r&|*t^Xyac)wPx5&Vp67_5MB}c8IK;Qp;@22(fXjmKtI*%;~L@QtN^HFBpU; zdY7x3{VlUqNPu<}%~N=;faWoek<0h_dCUPTo;9P6C(90s*<8sJov2w7drwYj7{& z!7~{xkRX>*c+xbQi0BS)N={tXv+W5wmNozhi@ctu=aWu8PU)fMA2|s1rgw1g1t6XB z!fDKSR=8yaIBsbEhAMVIdCMQL0GQxYw>BVV(JpU6KHATCFWE6Z*>|c0*g_XJy|Y{> z_PJ{(L1G6~w>O>dIF*KQs&WYC%52qepR(4P%aC9+vr=N2G`IXyjv5`Myq?mt^kSK` zxBM558qqMZvVK7PCb$gA%rp)G;8a|wik-+m>p&GvIE=}iM!0R}og7Vk4oE*N%hd$k zHfv56dai6OlWVB>E1~^e7?p~f=4US^Doi{O289HPA^c~SS|QgM!eM0{50*cmNW9cb z^-kuzwk@5Y#fG+i`~!$T|Abu~ER?JkIoc^b&8SsB77-2zJ%7AaYXh(;dSwusq4(o* zdO8Jz#`g;x^B6LpF{?i;)O{Pb6|q-TDd0DLSoo%TAZ&E6t81syVYBTiu2o5o5;^a= zZE7jeHd6OAOk3UR>)Jq!+sakF1$Y$g#M_#Zleh;n_hFfhw0?N!=)?zFS#{y z1b4EfE2sIKwj>9HApgi1cHzf3Zp zv8oUMKoq?elP~`Zy{hD^s3CJVE6@qLCoQj`aJMMXImiOs=gD;zM1r5*J{sCz=p&Eu!WBKR2Iwxw-fjHS`{u~6w}ZLH2}?{Kjh~Y7V6Z)TS1&M<{mTk99oaD zkfK;_GUM%I5rTg$pvZnw?3ydf)4;o%_(b>3IJt%Fo;O1KxlOBf?5Trf@U=$cOO9PoE}15d-P@nzNq!EB z{P}}1aL7#14>UNWyfqxs0|^(W$80Bu_G%00w9TsFm2}j28Mn>q%g%_>Ml?vONh!^- zb21^<#ISp7EF$r*nLbVOZi39X(I5bda^<9ZEur}r8u}!fEf|%JVJF=2rq!Em+)zdp zrHN_=K-ydNQR6p`4ACueWIIvghxNWRu3BxpTsdx)0*U8gjmt!Ebx&ecgM=Etk*N3UFQDYj z01X7_wu!c0q}h!=zjpL!6JIsKKr*J(7&#n85~my=j!jf3N{nVRtPclycG>8~5$2q9 z_f&zLYEwmkT=1GGmQClNe87ZYxRjzy1yZ%*g58;Fvp5U9&8e`EeWp4nMX5;*A6;pX z4;${UWRL&UJ8*R$g}Xb?0iVLctMj#-*l@lL&M^2;vu@!-J?dr+5iC2~j8j?&IZsy%cj1^Wy#XlI@(ZbcGPzE$AjlB$+2-;1 zX+2mGgpO1G-!su#7A01&QuNB--OpNID;Ki(f3UABaJ7Y^(|_s%xLOlwjopr)98&Q> z8{7|65|6wb)6S5f;SwoJ(czPM9wbRvNFktKLmB)#NnNS-|1jPY4Gc-%GC;w}{N4|hM{XVLlz&=5l;69EW zY6#jKl6*cV0+u$WtCU*^**j8K7V4A0)0Y&Cuoi zxn8tn3^GItWcg74u=;##9`XT%BxJepj4;#?!7%TTILXBg-elG`!dDn;XiG@WhzTfp z58;;xI~c*J6ga_1?kEtnU8&xD1Vz(HKSe4Q)CTNStPv0a-I0`3vb4J3u($e~VhZ4O z=)15{dQ!VXb6FZ4|bsafC=|BFXv5$b92T>`BahOnmArG-;VQ zDT{s8NrQcjN&0;Zb@6MCVO)QjRNQV%3RKI`U%g$DAOCVB6LDa^!v2o;<>wbkfx3^A zVt*aXXsZwuBTqmry@#RHb>Y2)e+f1KpPOdbf!I8Fr??>-;*#WnY#~w6h%=j0 z2*|nUJN+35M;nx(X1)YG=q9MC{bN!tn>vzAP!t|Aa||o`<4`no1v6v|-pQDA#CUvq zNp=e^SMn6}F1Z~98GQKEUzVPSq#lKiu?18b)7eW_%sLt0gy@hwkAP*5w;~6KATFes zPdN%*9QNo{PQ|{)oumAlaERwy7=`eDR*?>y zAM`iI9cf$r#SE2=;H$pTG z^0izNs%jxK!qh%OK8hH%C#@KO1x`#vt|_z(X$E#|DY21x`qV?q$pk`%&_glfsnjh$ zhNzKY(UDl982xMuX(z)od;g1cxDPob*Sr*oohP!_^|wd9APMg8A&WkI4)Tvbc_nM> z2t(rL5T5Hxd##Sm%y7M_c!-XW+bo$uiC{GzqE5`eA>AlD=IbH)f7N;cT`KJT&;1B& zR7m$BUlG2$8HcK`nDvqfB9`?hfc|YAhZwfS_EN4eY>1sw)#2PBe2WS|_1#=Uc(=k# zhm!>2xX`AfnLuMW7Xy*^aMw{w;9t{7ka<$VXFMQU%)kLXq?`Ng5VCblx{JL~(0!#O z)eAijHjKho9s%hI!;=p9+KWPkZqb`Xhopo~u|eHO{G0I;vI!AepL_&`8LPPj0wWbF zE|F^Z8h#CeTtt8w1p%@U!KNgL04w_qVTg__o0%LHhQF*4rZ2uA;!unnLL?Y9o}$Lvp7uvW~9#HxLyQdtYIcw zBy@LB2$Ks^M{;F|%8tzj>%%)Tl^%rO45p|y$u5YuuV~a&E|755ZIJX>t`K;bKy6a` z=>Dqupi=dDBq}9Mc1SeCg@w5MYXTydR| z>o%{F^_B@?gNTROaN#UA7TuH0;MB8)To<+)Y0Vx;H(?JWrm#l~FzhkxTkP>-XZ9jB zfqhP?WJB%A`-r;-hUFfE4(FcY_TipGT;X1!61fj3rrcMAVjjSM!J~;Sc^qyWPbAyKlfu21>s`;Bw-G3v#=0cBP`=o3LB}`!X_13 zc#<$ec$$?cydV;Z2nsLJL_&thANE=ljC?Md$(=5mL)s)tMCOT>aCV5YVY5Z0>_MUm z%qYm!|Q1eVUj&6JkOj!HkV+GHfob{U;Ok#Sj2nHa*98B^0_eQ>q1 z!LVA{L?~V6%9YEeaNT4+$T-6q*`ZG`MC2P6kkLgaAVayeFkkuz`%xkw7g zH3Ws+5{;HyA$G{Ev18<8Niz8aOszbY-cx^mSl}SPKsYbIMo*OAkq?$XqRo}R!$&Eg z(!mO;;D$oYd#UJ-U#{qhj#ilSC5j-$B}F;DNl~RXRn&3mibl~$MH6p~q7C;@ag7(C zgt8DyG|y8>L~K@4a1qmSmh?(L1l^29Ay>8O1Yo!qr88~ zc2(YI=O~}Ds+BKT0_6uNTxG(Wq>98)RWaZts(7S_Dpi%GS^_aut(NDg3aPhL)d&;S zKG;gtA=(nvQM5#L0&l8D@|@KU5~BI5pGL#Q=86(c<;;6XXWg1e_ zC5)EYC6YU*OO%k@Wj@xg%Xa+2E+24~T?wj}U8$T?UD>z|U4>%fu3ZFox|)B<&|NJF zJ-SYSVY<4&Hgxr%`*roAob4Kb7~3_QceLvb^}DXGIDTC}Xz<1mb$~HSebkuBT58N! zVvUu82gdzX5ynG^eT+v+y^XDr8;tEK#l~@vN5)O!WyY7m7maT+&luk~x?}tlankrB zL)8sVSlA5@&g~|KHFi^yw|9RtW~X=Sfq-`FCpPL9q?UH8X0>!X$TseFOxB~@DS1h^ zi@4x!ck!ZbFBuKpLBhM;sbY)nY{B&ILe!A%5-z*Dik;luMYXnjJ`LZ!f_bX@9we@N zJ)7PAAay|ZQ`m{!FX3->zr)(w{i6`n1IirO1C6Kjz`^W#P{c=i4CQ}%_DCbjdgSse zdTii(_t-+D^w-{U1Cwa0t5xk*=)mB}o) zg-McVj!C+Bm&sD{1Cvz*u*pV(pGhe=-DEeUhskkBqDiY@smXa+lgTAoh{+9QQcpTP zp{JYjNzV}M+@9ew|DJzyrCB`}Fc$Y*gumExCE``jJoTlXmDH6zYbXzU?iU>I*(hQ4 zY~qbK1+ha+M;L{hI`eR*?kt+A4=LC*m^{FAj=Ih?UU1)Z5hLF;pRmkyGx)7(DSeIU zb|}+y7wf#~UEMnMoNXf#>!sznxI+T%R|_|SD=6Ta<7?$)xA>4*}WDc zrM;GcC-+*(r}oOFjP2FTX)p1wtT&iQ?QKL7^=1*S_ZILM^p+|2_3pv4>TM2H^&ZAd z=vM>0sYhVrt*> z_-lP{;Lr7aLYUt79rjQ^7-D%p7JWoN0U@cMjJCL+5@FWQSZdbK9ooI$CT?24D(2OG zbwXUfM)=EqP0-|iZIn;_u8ZsYJyf}vL+EOA6n?Wgf%V3m%zkOkAlx(`iCbiz!4aG1 zizb+FR+xX7mnxv<6?i-IdigT*qnyj;r>T+V_i^UtPtn%qubG?8-yz;v01|?Q33Qgl z9M~y~GpKl)}a095vVC3O2#wI{TBwT~2g= zIu+jEO-$$?0*&k+j#Kxai-PxGK*IK4q?+G-AT@PYRDZ37+gg##xGG6#C8x(y7Wd>l9z`*C0*an8UTTIs;` zShs(Hg^>OOw;+xW+{WuU@E$b8vKQFLa=0+w(nf-?9EayxI*}YLy*0ZmgB3xRk*vd( z>B=3JOT{S5RkSCTt5pvy^NboSFEFr!6ug*0eHF(C4P=!J8phf(XtYW>Xd-IYAP&(bclMxP)AtA(8{jn!Zl-)e;5iPdP#b}Ku=0IN8) zztu6G-0F&eXmv}_)9L}l*y@>Jgw-ce^l%jE#c&F_WVk|UHM}cz=NGiie&PUD(1$KKAP<#OQ`oo{;}g9Sw(y^vQBYxWTR&G$Wz$YBd@?;kG#jaI|@XY zI||M}J_-xA7)4+Y8%33!8D)RNv>CMmZaQi+?Bl3Xa-UHZdcFMq=t3jo(OWTxM(^g_ z9=)IOVe~N>fAn>Ti$B@P&00EZsUC?`(g)lvHEAinrBz zt*F4dNb$(JLYQJ*OC4+7$~Ln;&%|0^l}xd|p*UxK4|B&xLYQO|#4NO#M|xzFKs#i! z5Io2xgL2Jg4P%~70kXwrn{1!W0q|g(ql~9ECpci6R^%0%^9=hj4Dz@!o{ZUJX2`S0 z%r<&8W*%efm<0CjF&Tg0@-aEQ_%RzXiDRk+m&epm3&u1e9mgCdZyM8V)O*Z5Rj;uc zj_KI`a_ZP2n5Sb$a>--Iii5|xa81T~Lo>$)v$l?nlNFCmLB)+-OuIBTlM_64rTE;~ z?S%NTFX$Pz2;>J_9CnW_1zcgvq+Ya@lA3LeRa^Qs=U(nAr)-<8qT!?E5q#Qm{)dORv$aDWSN}| zGS^OnRoV?>n%gBv_t~wWGVIm}4%_AP33i*s`|K(>9J^X zYwUNh{p@$r_S;uO2HT&J%oxWcg^rUGlg4$y=Z!N%t{7(t9W%}vdT*QqA#9wxial;7 zOgU~2&1zgMedoA1c;vVg6m(p^q<-8@(Y9ld zRf28f2hjVEAF7dzAEogfZ$pxgA14IH$FmQPZ`KrzzecVce+OJY{*iR&_!qbf69CM# z3254}32MCAgzmhx6U=0;6Z&GNPZ%U=nh>chnNZI;KH(thz=UID%L%9CdncU3+D*8H zyFTHupu&HFM4I717hQGWGAkVfgeV6EYm>u7%3_B#k|PfJB7cX?+yf4!uwsV_`A3I( zLZibGe5u0&Y+r|G=)(?gxa%F>D=Q~LnU5#-M!lUF4SzK;4$*UBie~7<#prnxmocp- zuIIj)Si}sRSVt?H*eDw~v5C`dVl(dX#M9^nj&Ohc5y$aRh@%g&z;UXq(J_?s)Gq&Bj0>Mok)WJWyY zG?+|xvZmNOO=F#P3WJwAMXKDLqM+xU;@Ib$)?yl*F5|+SZsLwQ-Iv{RddhKddaX%t zhLV4tIO8P?of$X_=Pt|x&L(`2b06YVXLEXi^B}O)*_n02IU8}rxmcFzyqz+@c^Cbi z^ImM6^AXfJ=T`Mx=gY_x=NG8^&hOOSTmUNF1^ZIYdgG0BxMZj!GNWKxJ^&!hyI)1-yasgp9Od6Tjj>65Z0BPNxrD<-|- z4|YZIXs!gQpDUH&<;sRuxyl7GuH95!UHek5xQ@Y}aUD+{^~%9w$x?vL;Re{&()ce zUr_@le;}#dD1udP;}jFzy!qSR0tJ7uZXrZRw{X=9w*|C;ZfQhMx8*XXTM_2DTNy9h zt&*c~tKw~NtE2h3osmYkGe!N~)z}s8-Nl~nW)zOQ1=iJl1lQT!-iYcx3F71)BE`6e zG=1E27-jAk#W?rJqI2#q#f#kEbHhEr%5V=n<*5fl@z#GsgxKj} zM)vWrkR9+C%!uzo0`|b;f~>{k zmTH;Dd#;x!n9SfP38QU|RT;#cm;pmwU zCwOiJPxsu15qln@=6D`QR(XG(5IyreOK9AQ-mLdwLEXSozSuKH1*)Cl*<%M#m7Xs<$g%bsMQAn9y zOj?4MlyK0?7~$g8M>gHdMsmYz9H+mRlkADtBzA$9C&SMxf@9;gi+6v+>xd-NtA(KU zI>XKNy2xMZbr*Tp>p7*&>m&KBH${2Xn+fyr=4;k^i=Z@b1vtsOKdaC?8eQYPSar*L z8DpS#4syNsdg?Imt;+Y_mBbkDdR~+F8TAbBixh9~>jIAVE%I>h2Xc+~MGg_@!Sd@XZkuHcMN~nXDX8FGYi$#XCBVZClgBaSt%LrlMCPFvtA1EDHM=>4!}x% zvFuI0JhqRoguwSzX(D~Q;jq5uupYic6-wVRxV^qp_#9t<=~drg_9)*_g`IDN66%{q zHu7x&m-=2nC;483T=BgFqxwEoB>H|7?eIfzRDKEw!LKX&nO}cT!VNz&`eDBTFe|_D z2rs`Sq)C3u6@GrJQG5OJ=mY&WA%%YB;4OZ8nK%5dklp-lAuszq;KlhpW{vTCt-Rxp zr^fh?5-;($6@2t}Ak_I!Vzv5vat8PZsmJ+;D|`E|5Nz;YLp$T2Pd4!{Fna7?B7W_E zfOjDP`uR{_*(-m5$mRZ{glr6OrPu_xb5{iTvHJzY zh=vC2VbB8VY4HIE5!nI9cr^j1$W8%QxTt`;;8B4XwPhfQR2WDX1_!c)7XwAAHGzFF znSnEnyaMNdg92l@g1|(He_$Gu6Sz`L3S1Af4crGA8hC$*92s~VGbZo^rc2;CqXmIa zS#zfv^A=4tRbHIh4<9+zQs_O^iZFJnz3BN=S8n{&P-)`S2<)<{(O}=HvGV;>6J_V7 zt|7Wjy+m`E`h>7y>MO~}sUO%5(;$eLX+%ZXG?vlKY5gGMrdi4-O|zn=PaBEKon|Lu zP4k1Unzny|aB12W8Ftz>Lcz41jN#L&xu9u>cn7APAf-)vPFgqZEjc6zWRw*I!KVaa zI5UDovV}pD*|Z=pgfJ+8`#NYk^;ys?P4A%j^jSfv>W4u^VE>>pmO7|XVjNV3z8bVo zwJ+!#9v{r0xdroNyMravPr)iaJh&TYU9dUcFL-|_#w*xcf(;IY*anB7Hw4dsse+>j z4+5Edf17q&orJuF#tJ!}!FZ&;RQci4Jv->@R$k+2F3A?%2eFswyc z5OzjT5_S$;9d?DM3VSXi%rHSso-vfub;c;x^BK09pcxMQn=_{1d}d6ehs_8V4xfLq z1YA60x%|kC)hhmswV1&(Hd0$=6cNm4lu=MK8n_uVVJ!cd6youjOvcffGUVc!-QaCA z`$E>w97BkkIbJnyrnBVUOjk5^<`jbS%vq>|Gs}?=XEx&MXEsSqW}ajR%xpuio_P!U zVdfM0+?nqXnps4Y-z*v_c@~G3HH&{wO_(Kxoz2c4CK$IeP;U}i04w9Q(j zbeUCP1e;aDT{x?faADQ~>E&71VaI3PrLLLvfa*8v1$kaL8ZQsGLKDKRp@+lmm7;J* zWO(>wqle*vkXPa1a7K76Nf^G2*FQW*$p~LBFb&_Jv=83`3kv7PD2iwX z4~RI;N{YC^NsPFL%#C;~*&6W{8yE?N?~7!j-$e4!A0nmVm5~a@mdLJhpGZsAvB(&7 zK;#mXN#t@YCvvr5a%3L$U}S$Oc2wkU&E&}aqDhf$sG!KplGezZ_->JRh%J$ic-gbT z+}X1&nNMchbMDM`R0YnSOo^E7r4-H%Q5w&l!#+AYUNdR-DthkhwW4jaH>#UwZ-UI9 zUBaI>yPo}c4jA`wjuBlnhh?;3j({6EM`qN2j)|gejs<(>94i!WjthTt)*KJzg*m?P zBXa_{jdP|$7tUFrES^&j+cM`U;m({^Ox>L8g7b6kN_Nh9#gIn<@>@|Ds6~_jcO*(C zy%nV)_m48hHbj}q-$xA>)kY_lTm*!N$2LG(DJ#%jpTEkXdmagQ8aVCiQVT0s;AG5K<%G9AG&ew zLX64WbzIim0_3o{#e&?qrINO}71ENqhm@_47 zko!j4korV>N=eav6nJzHQ578`pht%@21KV2Mn)eJypKLleiVOwRj7`>tqO^LD9DL^ zC(Mh1F{Z>2An#(Nw1Y8ferim2_>`EQ`1>(^MO|ZTMEznG;$Fn8AtuD+i`K_%hG}9- znQbxEg0z@MnQ2UmIyL4tH9qDcloRuudm`qQ>U7KpQRqC9tYY3+Bg=Un=xOtODc19* zFuLR$9Ub*ndyh_BDc{R{p^G>r?#d7g6v2rpc zwu>Y_)&wDsHP;YhM;P^pwHF+Sog}^(8;Tkf8zCx-jb;gBVZMm z+xe?i`1vKgOY_U&koi^cCG+d(==sOko9CYuo}7P;bZPz@oag*cVEF==tnUJ(^7;Zi z;>-dOwt0a&z3YNdUetmJ9&AB0=IVkt8FIlANcDnjMD&6U>hJ|ss$C1}1iS@}$mt6X z^Byl~=D2?^xPiGFCowt@*9$!|&fJI+H;7RZHyjcbHy-^dZZb<6=ZB-mMT;)P#Yv~c zrASia(r~!AOcXJ$z$h*5mhwp48|jL;PrQtH7|bOe1Kt(Sz_Q{+@?mXnFi_ z&B}NiaY4K-Ej!+Uk{cg@eigq7Pm8Y-SH;)KBjSG>1%>fV#M1b4s_OV_icj(P;ZE^y zDLWGwgqI0C(vAcnabkiJM@z88PDz+cosh6Vx-20X4oXow4G9;7;R)9uq=YxT{KVeW%EXbZsKl{|@Wct2D~T?2`$Rwd`@~Rm zaAJRyCO>hBU_#<@>GZ_a8gSxT^612k%r}X9po+xz3T6^sIy1=#**}RzOH2~5SV>** z{gcdy-I6S^X-N|VrAaP``$-;Bc#@YaC@FyXGHD(uCTTA@FsX&`HtCG~e9}c3Ch0nE zZPF8#Ea{yDlMKVdl37@CvVb=&Sw>lztdxIKl8uqClZTQ_k{2KYle1V6$=T$jfxIp$5u&px^I?jVg?w_#I^yJ%0@C`FVp)DlDOZwGfpJecicU<$vP)8Fv>tz{ zd>${g3k#QO!cI*cC|sU8k~JuG9M(A14>2`0h-j5MgXEeTE{;f@3r|nYq#CE5;1s9c zK)p)6#~zUSgjksRNbZFXC<;t{BL~B|Eg`XBp+L)F~f1Q@a?V6SgUYoWa|6+FpEV8m@$iv;xLQaG@?b^(~g1i?$Hd5k3=G~F`@@`-;LRFp7-EgPR9 z6u!^sN^r{Pt=^U~NO3V^qAV%H)#y;h6w%dStL|s+6or3h)`_QQ9$|)LUKJ5DZ_E8NAJXzNpAcx7uf&+8IBfpX(QxTf zS3$zkDNNE*f3WA$VDQ+bQL5KV6EK3Mi;3fwZdA-$T7*wqT86v2v>XOqT7~yn+Jc{w zMZy$kiB-;7O7PMwW5Tm6Q+z?zAfa2~Oav`m)*DS<)*oZHYzXu8GAo|z zGHXQfGEdywW$PFL%eE_SEZfCnE!&H^zpR0?b=e7_*Rl)f_seb(A20jBd$=3|8MPe6 zELx6b%~(!WeO!O8kOwUH;on;xp}M&|n(=;l9MNTY3Nd;4a^>>n>xfRvx2Vy}>!2RX z8_9Odo2a*!H*@66Pm3&GXD||@qE2eY8 zRwT&OD;AQ8D>4)_S7hO2E3#qUE4K00taw6Rvl4=eUWtDa7p)}VaVx1z#7Yt0ccq5) zYGp56*2>Yebt~;ysFf4tH&;6I_pNm2-(EROb#Y}mGiYTaXZOk`G-c&U{*GaCvs&K}H-${x=(%XXHW z&UUAt%l45}Wrrc>XV2y0vlE5v?A3}_*?G8{>`gR}>>|Or>@vZS?1Pk(IY^Bxhedmk zBOtEIkqN0e8m2O*4{vDBVCK;rYZfHO6MH(xPjP=YCy2Z(CqyjI30Ifrq@hpc93`6O zT;eUxxj}Wvxkr)aJW<}u`N%)J8mVkrO=gZ?t>8JX?uyyCx~FW+YBK_MwFR>8YJ1ZB z)k|POtMgP1t2fD{t4r{^R+n?jR@Y;8tUe0qx%xDJ&FTk;N2{N4Ls!2M+*o39q<-V=7oeIcEe`;LF`vPYsU)g)=rSVUK^;sxpuSc<=Q>Gu50V5Th<;#j9Yt*TfX+ZQnL0YVe{I@ zq66#T&_3(1j5F)V+=O*hC~O@Y9=5JK?ftr7j^nym1bhTOwsKu2r*Pd`4RwFr zX7$i@JNR+y4r2$bYXrLtD>#bzR*IQ$q*4y(y>mAX{ z*LxGEuMeg+tdCSxtzU$qtj|K*tj}hZuU~_WU!O0xSihU~Wc^#t!8|NQm`5hP&SOx! z=kWy1d1~avJX3Z>-T-xE-gw&aJZFE6CeK~|E^mt9b)G-{bY2WWnO8%7nAa>Hly@3q zlXro7KJOZ%SKeczy?JkWNAjUcc0NmBk}qJK%$GrL8iW@Pdu*gsB??h>;s(jIM5shsidkqTM#8tIlm) zsv5tsT0FN6kJ-taWbypD$b?gHgZ70L&W)l=g@{iKytkh!&4Sg*{y{t?D@iOvZBIX zkl?~Te6PX*bl*ZZzENSmx~i}OR#LbJS5{b$zFv4xa1obGDU;8>>#vmc?+#8!ouGbk%LO6pcL0Q;_J9ILd*iEdTohA=AfWLp>cVQ59kJZgW@F?ipiE0~C)Te9Uv z4`e-yp7Gp^LFl8!XwHdZBQ>vB3HwxRj0F{&8g(u1jksCdpQ9|Etc)toWA!dBmzfk- ziF}Lel;q+@D5m%nwMX$K>AK=OxIx7qDREn&sFbZ}*|V)UBy%f8<+Ig9lD0J*ziw+X zxck;c%u8FdB#(c#W{Zhi3q=iEOKH%pm16PMCh`8QCpp`;wm}`YUQj&PdJ{3A1Sc3& zVz10CaYaUzOu>1T_(PVJgeo_e#7MT4q(U#1WWmBpHq#!Jlq!TJ74o!_UBs}Gy@;xk z%h=VWQWm4sjPa?|LfEZzFnmPm2vln61p1{?H%?2bKgEBzG#dM~G>%9rO`$_e)7bY) zGYM&>+Yv3LZ)A_RVaOAN}RH6sldg4Lb`V)+|*^5oKISOxXn~WlF z^N@Al=1ZNiEs+V{c9d4R?UE#B+YQ0kZTB?%ZBJm?+deXelp$%)%E*kWGC8=VtPB2j znF(W4SucMWsmz?WuFOT*TDF#_E-S-Q%PQ%rvKnq-*?#)PvKCSIvhy-}*-hlUvUiYk z+X2MW?Fjge?Py}#cA_A8dpB{w_8CSI+Y`7iwl5^V+nzzBZC@d1+rEK}++M6q++L1o z+)D}BD7&mwL3fp!}r&jHlE8M*! zSt{L;iMQWTh%DN%71y|9hhWE!osdgAs>KI(Ttw2!#TZJtDfwx6KgG~;OU$!!D_V2; zIC0-{S8j8;FE6<~3gJ;cU!W*YVyr7qh0ZKrLU~rcjoY*Q73_Tl3Z7O$fG(+^vNRQJ zUT%Md0vTD+LwK#iTx3yUE2C97XuK;X@med~*cKJuB2`5qer&~2a9+hF)clGY!rF>^ z(Bl)k9w5#Jc-MA$>aJb%ZoBqyd+&d$ zXE^P;fgG}1MSHi~oFA}z5dX>U;hNIjHoRTCohg{zUhI_JLAV{e7l5bkPR6(GUPOPp zJA;_Ndj;n5?%l}LDv&y=icH{CF(__TJmkqL3AebayEMA0A7)Zso}tPIdwf_I_G}?^-%~9*v1cD|_?|h|1{LiaqO zPO66E%B!(_aW$DPtfp#aRkN9X)fSMw)v?Hr)tUUm)hnU+>RjlB>J2PPb(w$ArFu8I zp}HRGU44fBruw2XrusS=Qhf{lqWZBYv&Kk$p~g{)tqCBZYNqqX*39CV*F^CL)Ffl} z)?~`B)vTtN)RaLyYAQ*+Yic;xYU&8?HH|EB%{Bgpy)x;py}faWz5NmW_6~ui?H!4I zzt@59zSmv;aBqODb#Dx9``&+e#^JrGgmrt<+0ea9G331^n2UR#v5wcmaDKHIuCkVd z^{AyoB5Ng_N3~rM^xEF!+*)hmyjpuXr`C~GQ0pS}sr4Z5sg1%hkGPb(={Eb*1Wlb=9hhx<+boT?=wT-7R^3-2={$x@U~rbuSf5>)u1K^>pZidMA2t zeITZyJ_Ko5AFj5kpDW|3Zd+Lys@*_TCrvM*b< zV_yX#ecxN!^!-@W;r(Rdq5TZzi~T%Q`F^#Cu-}wdy?=n@-2QQV$bKhU$$mFR|NWjy z)_y-WWB&rO$NmH8lKp3iz4l)cl<&WRtJ{B1aB%-?v|R&Ov9o^xOW4yO#HR!9Jn4Z@%*z82ZH`YU409rE#=^(P$?e-8h+cv(cAQ z-xvY~H70Q48yCWFH)c?}HfCu&8nca-H149;HGX7fA0!GN9i)N14{}6T4vJ{^4|bzB z9yG^qJva=y>7cX7`k*@mbkIjte$b!BIv5PKI+!9hJ=lMQO+R>X6%p=zP^dt5}@DWFL;Sq1qjE#pd;z5aYvTY6h~IcosX=h-8quSoO7fG zx$h_#xBjRR>h)0;6@65o_BtvP4LNE;YdLC;?Q(x~80O4TXR7y6cSfJ1KFqSC{+dBY zgK;;Grm5YIHdBD3*Wg!=-a$S-`iSIx^abNu6PRj!$G1A9uwj9}ghFj?aLa9*?H_ z9M9wy9A8P#I-V;lJHDPSIbJ9TJKliW(u{v1*EX}28O=gUNwb{2rn!q^WpiKds^%dw zi)I^YW3wl1WV0W0Lvs*eOmhfoQgb*G)Vx$JZ$87^-Fz2Y(fk@1Ec&W}WCG9&%!i!umuS|Imp{ocP2_ zmGOyOVd9A*LDY!~@$M6~?79=J0-qD-iKkCoB|DtB!Sp_HkJ0rcQk;KslyJ$(N!Z&b zJ>gwW`k^9E1__3qoC7vJ84qQgT%>=ZpUhWoKe-tmd$LpUfQzy4h zlqgzfa3WfF;`g;4(%7~hr!Q-5ex8SFqz6F7wejwqV zekN->{gPgJ`n~MM874mVj0=A(^2{{Oyfa~-*?%+jO^7}7c%^;H@Ed{ zFs<%v94g~%3Vztx#j;UnGch;LuEbwDTS4TQ0@UN2?^Pkh4nfd-^Zm;iazW36p?z<=F ze4gj2&oMgOnyv16>$HEc->uum1GnyzG`DI@%v(=1@LTUCy>FvLLANQ2;@e8Wn%jCp ztIO?6y3*Tshy!jv zV^!RKLqXmCD7tnB#u$GGqgr!EW4wPShFg9onT5MEgM0H%hG>8KodtsWJ4Kl4J7r?g zoz2+5JIBd|cTV$8-nl@oy>m&`_s$Ka=FThfo4fYRjd#5<^>_Od58NHZBHRrX8}G(& ziFd~_AKaaWvACNnesi}#cIs}iXz|@u^t8L>^fh;XlnXhL|)p^ajsw;oYi&eLX5mhzPfmP2q)m0y4q-vV6 zTQ!GzvRWjFu9ng}SF4%P)$aIx)w5{X)k}nLtC!Q=s!MTWtJfj+Rqqz0Rv$GSs{WZg zq`Fe)UHuTbpt@c*r}`;sRrO1{|3f<0|KUJ=(!&wx2@glpQXVEseI8C?5FXA#X&+{B zmp*?iV0C@CNw(qP4kY8@KJAEy2W4>&f51$7_&^JPq%jP8WRIaga%BfR@{lilQyUpS;DNXxAW=UIQ&L~@ul(TsI9>3V9-NqSAqP3FCtN=E0J zhs4;LdiBYgw`x-@0$o{4!g$uorRB9+_WRmSk^!}rn60&Ttg*ENaGACF_`KS+iZ`{J zQBAcw^`C3^tB2H{WLnlmrs~pw^IDFZau=I?g;W}-3isvx-;D9y7L0Jx+~;vbRy`hJ2SHlqIf`(EWwPBZRX2Sv6=7wV;tA>*_e8Ux^bwdSyY(p*UK*N7WA^8bX zO?!gp4SYgk@t-hQ)1P#ft$vayD0-5vIR9iWI_OEZV#Lzx3I)FRuX)spuG(yt#>2Qtj(?mM;=~Uy; zr?XK9o-XBvJzYhyd0I|tdb)p}R`PVK%<<_t#-~Oa;&Y>dG^bIA&1kg1lr`GmFEzTE z_BMJmG8zXGqZ(sS9*yzzQH>L@$i_+X4~;2?!p35mQ)3N%TH|vhq46y`tnm|Jb`zE- zY+|t!nq-LpKZ!?UHN zzRy;P2RKVO1}J>SSCKHn}0dA^q)_xyk^=lLu6;2A@!& z)91X{WSH`z3AN}Yf*JV|C+PB$LTP--LULZp@m*gUh;v@rpecVZdy9U2*^f5(Wq^L& z%OKOnm*LopFH`W(U;ee#({g*GO+?O9^mM}Q{B>WT%4s(aW z;OQ_F4BgTnVB8Hq{S%C_9e#m{$!qCEfX_v43^WFZFfmJjKVEWeeMXDg4Zqg*m$!Dq zEB3;xU1>^JQ}cgEc-;Kolb!Hqtq*T@!{2)_;h&VFJPyD=2k$|^o8K3Ka1qZAwns4$ zn7HN#<*2qd@tfZ?dz6Pb*bYTgmcpnQ@ksP&JCvv#Mn|$yG*&4LhZc`){tGs$48|3q z*{G4FFtU<~z>W&`D2HK)9!g?fF^sJwLF3N6pz+nSH6Xnr0C6T)EhelRSO2V>$LVH^b-ro_3xEHp=8uB3RF8z&DI zM3@B&H|>JO;)JlVBnd2uNQY$_ro!eUg|HlLEo`|U2Ue!<0b9pThi$<>fbBuV!VV*g zV8@vKV8?%zr(qX_)vznf>9E^Ke;6Dw5x%i?M4JCYH2)6WP(0XruA+cDu_#{_*l zCJ5}9k>8FP33kkgZ^w)PJ7(y&V}^nq6ZP$wD6nIOd^=_c*fFEN9Wx5-n7D7p#DN_% z`r9$1!HyY={PVv_Z0B!U{sQR|*!<5+k8J6|{PHQAzlWPY*maBI&R?Mu)yXw?uB9belP;(Jd7sp0}~O$U=AiBtUGHMEQ~)87A1c? z3!9-*z%u3QVXKJ**hb+=*lEgL*e|@juqT`cu$SC=IGv`2^N?D&tyBniW}SxzOE1HR z5NqJmxU=Eu_=E6O%24=P%@Ftr)p+<>6&-$E{S;n-T@J4kNZ?J{Y48t%)d&PD5kY2s zMle{T5CVx0!XEh+;nMuvL(&)Ft>%9qVvV;DW1F8R8Rdv+d4*E z8jy3EA9GMUk!z`z$Suu}dnmEU^TNHzYt4@p`aI+-Ry^`oeI5$MOhO46mr;Mp=0_vV z59O|Si1KcJ^v7RA#c;Qx5}F?;GpbR`_-9aSdH0*M!FKqL=C3}rWengufh*F?=0CS& z1g8VAfZ#o_Kwn@ao5$S|RSuH|@=>ir58of$SGXH~un>kfb!xe8HNT+ddM zPG2u!EzcajT*3q}3=D=G48wns_QDi|1el(<9oD(|xr08t`Gu{8ulxGKBwcfOT;J2* z*tTt}F&i6=8yk($@TN&)+qN1vw(T^w(KL4Q?)UfpH+RpR&+zQC&)qXKOHgc8t~W1D zU)yF`*sRYUws_cYn=dmC(bishTiz!Btk_FVrJkLiAD)@slm@kuTKn(#ptt&USIiu+ zOOcbkX&x-Us#woD3}Bw@793s*E@+wGtm&C}3cisZKI1ICBG=tEvxfulA$yKL80y$e zaH}NJ+;3d1+RC27T-jB&d3rTP`&(GZ4rc3rA68se6m;QAK+d{NZfy^{zta0c44t_SyLnC~b7Yvj^E2bdauKEj443!je?9P(q64pHM zsKPHzPZ9^R`Yf}ZmgfeDL1rnD{Fq0OhokOUnZw}2-C~68whMS&{eV~f-SqiMiGecg zsK&GJodUs>&i?39(4;qm9O6$*47+5Cs(b;&)UTMHy1)b!&{PhX2vNsGak_VhR>q^B z1#J@_!xLw2x%CCo1W~bMd?QU{g>)Gj-ii&j4@e5UM;Yh<ldw!dD&XZ=-WeFYs^ z%51mzWr_oyz{!XA4jg^+T0ZpeP2NE&X674`PSFb4u)V_u>R0fws4{~A@ zgdBz%ivabsZej4{s9uA5%1`05a#T4Xdc2k~_&UkgKOxR6yc$e)^F=#!9+duhXnuuO zfWKp@5J1=DRb3SAuKQy|oWH4h4H4jF`i}2Ne*)?OxHCkD;Kuqu0bZ8xX(FmAu%HQ~ zo8d=^7F}#(ue%54kK0eVK>R$OJS9lTaRRV^79WKI9cDk7J%5%16G2aAuX$A%ptRV- z*sIW5`GDYNW04?ZflM^Z9>*ywatu(daXc`6E!xs_WRw|%`s$C0m;kM(WPL-H3xb!+ z1GgUL0Vc@76iyH?ph*6+>4z5b>??;jx{DZ7i2Zxo_Ey%sn5kH0@N@ID%?H$!QJQCn zujnPT98@)J+f(ecF}zJ4PCqxGNT0;r^R2g5oc-@%5JFHb{yIU1g=QfI2IK-Jbm*BNh4t7S$nn{3da1>h$w16GV0W@j3u5I{L-fp#zYbdx z|7U=Arl_URe}wM@85hKV(yzdJOM^7_rL8!KIqhu$2d? zjCx98I)!61d>5+BK0Yd;+{YRLt%Dtm?HxeyV5Z|P%`16McrkA z)RVNJrs&$!Oy6~Y7{L8>nb>pK1Hi#L;|e{z=(1b?23e1iSTr7rBjN_w=*e(Qh9)tB zG;C!!SgfsPclAp^idR}9v7BnM?U!n!Pv1Su!|TF{ppfjGwIYQp!^if*YNxvSX8ac762)~lNrQ8MY5Qzt3 zu7QePO7OsxcGB+weNhmItH|rbK~mQr(OKOSm^0Ll5M0Kzlvc?D3hthhhQ#tVEEMGvBwK-3scyA}l|BRf(vtZclnt_wZiJeH~ zD(B7hAzLpWABv*iUm)Uo^o}N@zpQVHfOn~bsA~_sT&b$99m@k3aOpvFZKx7@E1U8# zn=bs4mPO9jHvDHSQY+5CV8JEx20;-1q_0dq~y-1zR<-|~}Iaa;nl z7-VH3FRwa55j9v2gTu`H#i9Od=a4pBGXiuK(Cdz-(TEYotb0(BzPI zr5~=dAEzB~1WmZ=5uh)|EO&>Wl+OV2V)y{JqM*2?&+-@`gevc?by=d-wZD&qR3J
jtdKltHZhV0yqn*B)OG)`c}I?VzJy2E_g!RgLc-TnL-+;= zfQEGui#6JF@g<^`C*li7QkB~9Ni6=Rs!bmJ7*LS)^m`-V1*ko|t3Xts(2Rx6d znf@z=>(6i50y$nVh%Xi-6yls7=EUDy?)nHK77!Q`qk_Gzm#`@)B<>vF?F1^Nu!TP? z1-)ru=@TL!T!%sYq64UsOe^(Ye4?FLqf^pHkh-OSwUO!(=I`qL3d|Ud3pJta{;@f< z$cN*z2h>$xQIfAno*(1Y@GfOOoYm5#J!4uNJr3s{ua>BkE?M-RRmq73QtR)HSM7sZ zqAD>b*If6}(?%uS4<}4Cna5|tZrt~$?8Y+$=8@X<$C<}}E-h?q5HShG5Pxqh=Tvgg z@YA;AMUrvKJ4H4%nad{5Xr)!bx~p-63uCT;rwYz(IIBT0AYp_qb}NeE>^f&&AdWHdm=)UHTElB%qSZax4-~71s#?z%k}u*^B7_&Z!bjM7eck$+-bdh@T(a>J~){{ zo#MN9HHCtY6rOZ7g?0f*Gk-RBG&k|qH2*+e7`Sog=*)y$kt^*=^bnVoExTD; zJHKTS<#-7Dn~c!nGw?|=e>|81*>$%a#Yo!t*ge_Z{W{}$?O40Rl9cm5Egide(EZ%; zR2N=j0Gud|w9IAoD0DJ9rrperTJ?KKdF^{x8qwXHUjFFE{CWNId3(p`$*?o8=V4$@ z%U{@tXYgTS#s_4qQs3#W@&ojzph#HtE*9iA%>2TyDRil2wHja+ctxBJ0%pF&&c{6x z)2yF>vKDhQgeKqGMZUj{&*=Oy`c2eluj%%MQy?st5)Sy-9(caBYh|rrdhdq%n(kx% zDLhOn(0eFfFw_**RalUc_86Mb^K(aXht%fQv;ehP^II%%660c5>91;d@=o1s>V4Ys zk?>!tVMv6ST$IyyCG2l)5-a;W1_BZEkL?;In5n5MBL*!)Rbn>tFzV1zW%`V%nUtu0 znW;89`ktBVjMwX(T~QIB9trv<;~k6$Q16?GK${*Uw7AVoHv8u9gSCUP->(mYN*{K; z3rV`Boa9fHM`iUm>z~;U%j`B1ucwbB-1SA{N$Z%ALn{yql}TyJ%);dgL3wzpjYSTr z42v=o9G^tviyd`$ly%Ls^Cy;P&yH|;<+ZL;DQ+4pttS9@aT*qJ_N>r{V+MGTy-3I~ z_a<|B3FIMg;)-LG93`|l^E0BFx|w8^^5BDpuNY6MwH#hX5FaanQL$?7@5=-tOxXd0 zGih}XC@Z#>zQe)_XyEBU&?D?t6w&AlKhKc6Jq!$h`M_T0yYp-t0==OQmHFv;_x zVFDojJ>gUWT}l`h3&3)xDVt0l*#@{LJG8_nv`B9s(9jcXBkE~fhp@wbxH)u6i4g&);$w+fpW=sLA zX5ayv13pY_T6(dj0H%*@^*)~N8l=G<1p&+Z*+j%UCZ_a#?H>A*a?=PpexOjM92PS< zc^aut_F@Yf*m*z=#AJJcVW-dH+G?XVu31!Xb>aHWIOPebgxl7tkJI9n7_<^ztXP>B zSuk`idoRKct%xOG!Npln@0x=We{ziJ2k_7+Dh|Yh?pIkZUzY|Dp zRvGnAQ$MU&h;DLJ&{_d>1-O7rci`g{n?=x2a^Uqf$EOuz89v#SxBY0GyKX$Ad+tYO zKhHG^Lfrm*b1L38-;URg@nOe~w?FU8Y0x#X%-?5m04uSK;<5+v*V-iKbNIxkDU}~ zT3%J`@=mK!akmy6dcg~x{^>Y_+OC6zX{W2hotp|1AhqlJA{uoHoad_;HkO{#m!;9} zU|cgmFEVCpa*hiL9KACy?Ly#d@|>O;O>4CZfR zJ7PSYvdKZESPg5fD4Q6Ib_IG>-Fm?Q`&?;Of2jV5QSY+4iNK zcL-L{0_sKwy%FMb)m}jp(kRMFi8VqS={WfyhJa`whq&X1!H2O(BgLwlH1CT&$-JOwNb~}cfTnK-0T9TYET3=CZ|sE!Ear` zi6NM(5!vofNmghwP`{gHu7dMR5q(yq*E9_AOLf~ykI;Sh;#GO7k;T{1mx68wV=arq z0iajdEeIllp?Bw5HBL|q+;l=L!(I0ysXR@}&H)Mt9tp%nT*c{Tkp~gbu*{jW+(Fvd z;Z-EW(&}SL1c|L|Oq()ry0Bvw_%nZNJfgAM(IE^Hx`$-;8K||*4z9Xn+vA=S!R~fW z=>PhBkR?U>^)xReL$NVoKCVy#4V)^CmM)!RC#T7I&T{1R`n z?mDr?zmC1q-mZ15IRmoVVXMY(?y2QS$l1lOW>-MuK8W+T&GrRSmk-k1__fi;@=>MM z+Hb-B_Uzz@&D1ubL9$4O<;tZFaQNCBx(aIxU@zVGRA<@K?&Z^A!TuxT*lCeo-^2z_ zo&Fi#g9C}93?CG++Z^1cuEU5jpFU<-p9RV+R}&^ExOgJY!~=~PCi)%sr!aKF=^KR_ zvYd@r8zJ#D0#h)N%yDh*nb!NdxS>v_k&Hs}iz3;&<1zeiLZkCsAik+a@J9wDeTpGd zh)lJ<54myav;S!m0R0yI^#R^8bt8)7p}I6k-LAY*Br17^Zoa_K`e(VYjrePD0~+&K zUDlLClU3$=Xdm@;Pbmw8;!l?A1)OWfXg5z%MT*dk6!VA7_v!VQtgrhIo5aEpYlGxS zXy9n-wQ385nlp~LkmEF?kIINjw^&H5;Jt)t&XFe4Rj7I}kN64b?#@73uFwV%+zhe? z{#HcLCnWgI3U!I^*})X6WZz3|S>c0UbI_J*kK!-(=W|rxIor`mIFIThT~xe-d}JNH zKQQxtapSWQ*H%+3hdg_|u1GsrO^i@?e%9I`)~U+gSYrq5xiEp1eCn*%5ec`g%J$nOmdT$ zJHyHNEFv<6fOs$gNlYe7c`DhI4dsy%nb=RVo4bzBD?~bYCM9?Ohpl%CuPbV!g`38< z)!4Qh+h$|i-rlwr&3TzH`p=9Q?OyUat9$`D%>O71kOjFrMbEr8G)P zBU@zJZFCOUviV6rofUTB8KB;`dUs?B_F+hqNRd6zD15|QT-r}v)Tpv6%A1=@%i)Y) zJm^jA;y3>IcY4T}Sk}+9+vNEZAv6J@yLNnM-ks;lH(b6C$8JGD?K?5n)zRaBu}n7| zGe+m@{vrMU??dNFeogsk0RM|~kfKR9Y z&(l|#D$QjpL)ahVvMd+eIsVT_889c2yOk4F4MUp0^4<^w_?~}*^S+@h!%iwqU1X8} zz=flSFSS9+t&jTLNzhv({SPSx0j+FT;YO<@_$7|1Q>B{57e+nZpY%-a6GRMbcK$i+ zFvP$EC$bzGgX)6k!2&lF7z&FmE{9fGo{(yT@V3xuIc(a^Wmk;FCGPqoaoYDW*d>_n zmdgu??wA@HP;)gnXwx^|^BtSbQ&7ddgjGwo;q8k+n<$R zX5LuM2!6Rrgpo})ju+J`tjn<>3o7VRD9#0e9vwVU=eW)W1N10Y{Pikbc05g_dXuS7 zcL^L=uQx9z*CQ*4gZ5kN`OYb@rO$RD*}%BNv(lw(HH2$?ao)W(c)15`F^*^?QL zL4}&_^__iHrDK|KqODnhN9HV=uUzrRRJREddo!|<<)dr(Lq?9P(H^=sLg+&drtLMSp zASTKWSo93bf`~l1H|4=Ycl_Vv0rK9zCjBmWraA=_0q-9#gg@ajL%x9mD)=zTYTCogi-2fGqT5Tss)%xxb;u}r;3h{;ZJRJpm z{S(tW=lJ%%kwp#gjk5^Op;^~@%gpdVbyF$p()mWh>J=?@?9*U8Xgm81HhPe*p_V2i z>I?EpKc}ebAmb4UvzVEbC1#-ws|ZXOs#s|>OdC#6ButF8>r2``DEq?pI=hU`)zUpT z3$VJz(%*rEq@QibFFuqY6DtqK2ud%=X+M_O$l|M@$^bf{zoXf+-2IYb+U118(eX04 zieh4OTaKY%-vl$8V*cl5AQQ$C!iNUL1u`khOAwGDBotiy3;5c;_+?`hO+q4UWGTdv zZmuhiyDK$|8BaL+GDsv^TBo77O-@PJ3m{j6^}t>EkWm=KxJdX}cE&PJyVAWOpC^fS zNaED@%1Xq}3K$?TA^FRW z?T*7Jl6*{48TW0yvvNf*?xb@^w8Vhrx3+lNHdE$D8j}vFAJM-kgn?Hj-7Us2fO?6v zst&7mvA@+mukONwE=EtBa|fXkjq$SkmEt$JN$u4Ns)M-S`NM?EQ-5?$!1Nmz_y%Z& zQ4_sDL&98&6F1ti`$SQS1Y}$*S_%!um|_MG;mBY3_llwLsTYY{ZWIP@9p{CU)6i-R z6z-kU9+Z2&%p9KPHQm)3%C7KrnTgjFHV z!2#4~@r%5o8t2V8(f;^u)ynw864bSaOnO{gHRituU#YYy#?cyCNep`PyL>B9w&4F8*#2jZ_P@5b)a?F4;P7XZ*4B2A{{82VRzit8`ZT=8tFdnxqLfLR5+Y=f z-?h0*7JdD)nLC%)Xq0OEuG^>U1R{0zYcapj)k2 z4T&uChaD|dd3nZeF+snVQ=8~$Z(S&OlPW(W&sVlNfL6O4?hn=nX}Gf#HTh6ISDZt- zM{!-O1b9ftQbyq>-#`d7WI^U~tLiBV?bUA-+8)%2MsxK=_4IyxypQP?NU>y;9qtGgnYyw*v6?ll?DuS=(c!F7I~ABd&A`QLGH68H(KZCNsR7$d zt@&%lL5^&5<_)#5T?9(BZkLOab02%%RuT~Rb7Myn3_&rcf1N4yLdsI;k6%35|E>f< zOTyf-$c9S907qWovAaw)Zxe>@%EAB|#3TShDH1*Y5KlIhn-wZ)ZpI=fpTi*fBCMSx z{cy~Vk=$+&5clMs2y7^ezZlgdNf^Uc-yYD#j4J*%3X^R}m zO8$-6(KCYNqZaMslj$K`wN;A@c*CzzC&D~sC%t58hR*u8SNhW8QV{?q z@K5zP)lWh$<}sGAEClfR#YB@K27wRXSc(@ z?4p5{UjC}Xh*pismaEkmGvb)SK`3T5VGKyq!;o1z-dTDpmmx#ZkyAt8FcHkl1$@e zJJgBAUb1%)4rQo8WdL4M!jEw6IHO^*fpoKfXO@K3kAHuLK${^-=(J_5s-0zj&I# zb?CcyCG7H}X3?{=NoNP%&=C>_w>YuT2JOCAGrzr^<&6yKmW>R>HBkpBYboui<>Sr? zMo(v{N@2iUY{SfW90{R9#crYu!C= z1fTp6J|fQ+;2Bxl^^VBFJ~)2dcT3;fM<+i4Ei*L+nx6y*YqjG1KmQxMusj1&kzems zW3C@GR{mv$~>gIqv2mZA^%9KwF1{jx^Gs9bLfg z42T>;(8b(T$g^B_n(~?gWCfJW=;=3ME=J&9ABuf+2^nl;%oZ?^P60ezHpRH+cUqW| zACNlYG}-mjC@GDG7a5+#GOJi7w}vU3EVpTR=UfTuJzn^r4&$l#M2|vhMLqm2USGK2 zx|O`i_kPQ{TRjDF(0?OilI`&NQcVUYiXS8_d;fhzmDO##OsDZGJFNk}q;(U8xFtU8 znHTYP#-qV+NA_rnT{c}iLr8X~Q+XxAZfvr{xU8Pl_(A-igyfcVbF<+qAz}W15|T@- z7%*YLlp?+)#s?86Jw3kvJ{1F)i2pq2v|S=6jZGFS*<6V!Pk6q6P6Cc-) zOx@qPgA0I^B7JEak#^FXu7_#GnCV;vG?%b|eR#TBeGZCbt>j!FcfO5wCCnVE^ttHR0VRUzFM|>&DfE>}jy&Ln!2 zo!yI|c~sHTKzCPE;|SAy#PNv$;DV!D&rf_;5sL*4=QfqhG=nagMygYtJ{p)Qq;4C) z;5^;vhbFE$@hz>)5dP8Jm3gqtGlgO#B)H^^qU8f2&6pe~O9uTBPJcYmB&4urJuh&V zTX?CNI=EcG<`pcTFJWB5j5hE*U9}+Feu##gy<=brDlCv(h5jhgk#?4fz$%=;gHTeU zeH((zQx`-nd(YYphJJ~nbNuyx^1wUhMJV9zvsT9c|~X z%`#GyE#~M@#7VSHm>Rh&y42`sTFu|!G@tSh!|T-&YjYc#ysMVi-HpT_LyY! zikqTZaK_XsJWu74|5_IqXMN$V_eGAd--4?~<9+(}kS$;o->Pdr5{=|Gfffj8rJoQ8 zZ-})Swro*2@*$k;G1bzle-Cmz3uUIYF{HIM&e@f5kJnYzpguta=OQ~wyeiceB4iu3 z8Ag3MB{j#OJ69hK)N5(89&v8$w=im(th1>2femwtwTOIKoEs&URSSxx61LRI8Di<8 zXYtRP=||qg{m^F*ZKlp_4V(rH>fkh@}c)GAI|FFP>6*kp%m3^|UhV;zmmf9pvds{oSf8lv>?cv#&C=|f?7_tPnrgkK=jHCdPO_+oT- z)Zr5r(-k4X*Zi8}iG?e_$RpX=W_SZa8G^<-2kk#~8!;xm<7l|! z`yZ3Leh+UWBl50}7HDK}%BfSI|6T1xbWDH^{EE`K|0jhS!;1mq1^;iuOZZDdJn!f= z4GaTNrE#uFpo#mbzX7CI6|wxGv|7?Yeo1#<==5C)th`u2^|$7{?&AOoJGu%}3AwSmShzD-hgb&I zu|K=+62R&3RkyQ2gD*ynsfK8CPj4I4j@b7pBt$?J?Y`W$8cX+&9IEJ0g1NP_y2LCF0#!fg@r}$i z$R|TMdo~6}@3~O+LN~~lK6SIo7qyI5f@;PChVU5O+;JI;76reGD>s<~JH=cr^Y2`9q)`wLpMi26r_6WBP(la}gjlgd6U@go3pNZ56F`9tA%4`4IBhG`Qb=qUt${?D!1hXwF4+2tlxrUsZ(k0%PZ5vMKVI0!z)SOd*O4S$-f+te1zfqr#`F^o$Bg%8dV;M7J+@u}NY=kSliuwE;o2PBYLbNQqWh zSV((&Hk?}pEW{(f(;(2y~` zbN-1Kct}CzaxrlufO7>p5_uu=?D$(i^3pGzVR_fiF!*f`BWc^VxgH-(XmEd58vIif zZq|gHGQO<9=rZd*fd-(zSeHn%)7ePa_5aA7`5P2<_G>N)2^n2dzCda~iV*n;WcTzv z_urK`WtF@75QT39bS$qlE=;YV6%S$U<` zA9hvc~Kulj;00F@l1Y$pjC7@dP3dUTM!53+^C93Mu0v(A+D*Ap4t5et><%~@h2zl$K5{G;}5 z!D8g*%w%h5De;svNWg+I{?=y_ezFu81y4@t+7b3EDgJ0Tr#zwCTo8X=KgJdRauIR* zc~^a`)a!XicfA{Fr|^yO9L5BB^R|nAn$Qn9;Sp7L2mmSzZ??Esd-x^1~Zuo$7k@|#7o0? zY|KFM^uV#t-`RuByL?TN#fY1feDD#IQ-~Z1hXBgsqtJP!TeJQ{?<|L{+aNxLQcBJ1 z{a679BS%7}qLzIdJ6~TH#7$|$My0b?Xag^F!r)H99Ib&dQF)msw?HoYkJjd68TGat z=e5Wer}zsHJ%9R+z!R71hvMDzZTl6Y>S%=;f$LmIecO^>W}P2D36l#(;;Xx>g_g*sCHAW7KN z`VkBSHn``bB(#cR-97K(496Ck@1|SmBcDq9g5#mvS$AxgHTPrMx~iJZmO*n|R`>0y zF_qxZMoglRR7A7ibH!82W<}7V$LD3Y62Vt;Yr(p^dHq$jq$2+xQ~$5Y(01~FhW`I~ zD3S62q%mM{fd9#R{iWMy)tjngQ}IAH3lX&1prb2V@e^EvD-aD%yz1W61qMEAy`}xj z#%4Pv?E~metHrnb2b*^{W;f+?@LGWC?+^0yanmWEjmyj1*G-`}m@PO`aD9YQQCwTz zCWMLdKN()ibetF04S__!e7C!6DjGM9nV<=)1yUjinV#;131=| zo8TBo?R&C}^<;zoY3wQLE`W3A)l(~?vAtnQ`KB7r)gaVjr)lL7}>zEAcNx*4i z8J>wF0bYa{<1`F6igfBE_7+gLCT_RvulDJq1r}b&?`61a>{#6ZYhY{6M!k$2q$0Nz z0DU*Xku=tQ21(}su0yO|1B+@w)7JuQhuHW^B^Uibf764MTPq_nohq1{y8#4rfMe z6ENa%PoZ4)3&%!d zt(HZ(?TLS>#NS7md2zl+VrQcsx|g50FHj zG##=_Yse(CvYDB-{qsYY>$(dJuOf*7ms_xh{GJrouG|<$zJX?3xL)R+eaOxfKXxkW zC!b)V=l1kP?A85u*omDR+piXtnFa13QpH&if{p920Oq8VZ%AC$gQecQFH%zH`ZbM2 z;I2Ard8AkD_XBtM6pd{{73!)YA^=adND`2b8c)lx2?hLwARafrO2J21qg{@<<5)HKR9C5=NtjSX&eI zp#SgUkY_5Xw}GxtDT29o`u>ktRN|=Or$KE#$$i_5=(_l)e?JW0&uO;;IyqZcv$HQI zD1lFL7Km)E8U#mU^_z| zSw!yGW4CEPdJuhsVb=y2Oe1a>IOaq<~G+qih-NH?w|CG_) z8q5*wUjt~k|A)BxKd6t7lrdmf0Cjx_bV&?>UGCF3x$m&)->js+W1Q`Sd{df8?dV2VCM1vOH1?y>JgtHkum%00JWS2m}cKVl=<>TU4HbZc&y z**vB?AICHJ7I(WpUUwk_=$=@C;XN~L`m1hZ?gH&*b{3b~t6x^m)-C^J0AJFT!HSjo zbnRB^*=Nqj5&HHp-C(_pCiK2;;u4ear?bgIRZ9#{V4$mc z4lh=D+&MXvqnI&57z7eV2B52U2EftcUmtsBiTF2glETIBNY z?XwklZau9Jy)c|KZZ<3PcT)qIc^#hlb*zC6WaB$qk-I1Ph^Yq@uk;D zvde9&2swDb?*JFHukFv2C42e?Spxajf;zOcWS@|Wf0Go{iWT6BLX<*Ka} zH`H?|uz2VLhwUSp#{t1t9@vs%%5#y_PTnaWqs}KO;xni5-F5EXgfmVirY|VOPJ-h# z^qReH)4s78zucCTCuhO0A!D5g51H9-xGXpm^7x02!f!H4ADAC?`Ch}rUY2uE@1ron~dCbYwINL1xHyMOw9&R@2ki;8tFmJ3rn^PbQ?`*I`_Dp!2|1E zeGpwBSS$y;Prwd)W1d;j$T0j0+}O zBc#jvGV&suvtO0NMf{Xoqu+T)F_QXaqYnhvmm=7#Cd^q@`?g;jYao@L{8SJzr8&j6`IZSQ@kcuU;rQqB0}a%j zs!e*5Ps_$9hQuO``G`JAUAfD`=6_cK7}trB3%<&2y8k<(#r`(~xo@cdyMvsigPV($ zy+xjrOC%WKf9vrY-qTD$oa*su;IS(&#*9ANl0o~8H9043_@+2jOGgyFg3v>OYP%4cfPF?6weg6RgC(n6y zf&>u};e)d4acXu%gNuK;k!^)PZD3}OcxcjT@AV&YIIXH#D;HR@5Lf)V)#jX=7_uN_ z5|9wDJ7=tT#U%++$3>GIfw68z^O*&5tlLXq9z!fyp>RpMcFv`b6Tzw5t}EpFuspUQ zW6J>3Y0sJ;xN-*(fjz5(r~*x42{5^dmW1gH%9ik}Ck@5+?)q1sb!JW3_k>)E&LG>2 z$&w&j&Y&M57%rHQ5q1?MYW*ywMsTGV{q?OfcyJqw%)p`sEcPP)(@G$^l?7-m>Mj&o1|aOx+0J!5hXg(?vxr(iNc2 zm5EtsH~Q)4Sa!FWBuYpbEn#Bw(-|_Y5CS*fvf3Gq*n}Ze@hM1js?dlqPo=C7iRy6l zMCP<1AVMIeB`6uj>jF%@n=D37wQiarV_w*G74wl6dOSb`uI^sm)d1T}^eLOuSmz6V_WyB%EBM&jySdtG+`WMBFozD>SVAG105zBqkbsSLj3S<^n7#o-BONIm%$OWW7?a+H+Am%COH47Izc%eCcnG`&K_Rtk0P;($ zsF$F9^PwN|qgJXBdjx{fem=->{W z)l4Z2D#+}Gp=q^xK`L4iziH{~tbZUIt)6XEOD$odi<1yA)F^P^6C|dk&ju1{?0xH_ zC35~bqyx!s`7;aL#xMtJf%NLQ9dJ`i#2N3Xm!LF^>P|%-S8Me^9YL}}=O+`2#Mz65 zXsfVja!|%^8#*S{Qm}O`tt>1TO?pPBN8MKtim%B-o?lfj__s2sEW&jY1D*%+@A@_Z zT05OQY8siPTe#pu?$KJZHevlYG8H;$*B~jMAw9Vfb2Oo#s%duk%J6939e@OeDM7L( z6&@S`9jjc-te0=Uh?h@6Lb{IWKVh1)>7TeHo-=$`N=SUL5kw?9gmu=>ZCDv->cb1HQr@X0E9t1%09Xlqtdi zvX)iV)x(nttK*{ZTEq4ffxiVLq>wTorJX&c6w*w8I%BGO;JaG>7625sO$DP7RZd6L zhL~pF;lp^5PeS6;gW#+vMGbKjvr-k>X^g}BP$kZ~8er1ux*BpmJL6B9r{ ztt7n3m3YCovu}}h>MyNZ1#mMFW01{+)1lF)N$~GCx>QzC967?0h)}S#htRuiK_DX= zP=X6Mk<&3u$e#8f`U4IKz+s@Vi@Om72S>-r`$cg`VR%=HV>r`Dl;whA!*iX7euMTg zM@7483$q81BbjcZolVGDnuDBJ`-5RHxSgfY1SO}jOVP1&<3iXtnSX?f<;&Q|e;6|t z1R9~e>@@8eVMwKDlNH1T?np_fn~`&%BoWF|>1t6mk36PyKmwT3ydItj2>S-3LPeZ8 zgXP|7n12v_a<#7W))~^dxM<#7A$d||MAeb*?{ki`Rz#B*@tmHnY|#=`18p$c)g)p# z>cH*hdm9})p{hl-JcL>K*S>Ml`s*D_E*UJP_sTPd)IxnEIW{^1by3##O~p-umZ+kd zYk=PAu$@_9x_~VKxEA>YOE21yyeQ>Iy zZ0zh|5Ol`1b+~5|89Dx44*weDr+AQsffkF8hl^*fstjJ~nXOPiX#L6v?jA16wWnx2 zGJGa95hwXDxm1w?C$^vc{|_hcLjTpNmMk4y)aTcCit>a0%%%Hu3AuD^A17uk5uUq@sfj%>$5@}k0;Ba z7)>Oq^QtF1IsXArNRWy5-x}KjJFHh%_V_F1YcNrYY9zxm2C~5U zlUn3x0&uN|dE-V_?BRh_L=5@@`8qbd<7l^W?%cg?nkRmW+&Tt$X>ot%;2V6Vpx&q) zQ&ec}qFz4|lW}*-0%b2&dYan|muEEOUqA~j?=AR&;eiUpv*=g10q*r%jV-=|leTA8PmIW$!Iw$uvn44r z)S=Pw+4}Zl>8VUG90;gW*H@zEXVGGAa*+}ukt0ILLNh&ahiVRRBt-sjLWL-lh-eKN z;N!LGk9~rOZ$T;@&+Bz)5D9jVbVLRLzmnDw`GQ#Ty|#8Dbx;Em?!j$gFgegIIf`V1jm|a`qb{e z7ccy__-l0mle4S7hqLDmBlPEh1-=aD7l3wRK#{W8d^$8`X8I-_1W}u9S-ZrMb+8^H z>$#WFK4Nb5yER4r*Wj-6crl~&h00sKoFzq^H)ma7^T`S%*gTcXeff2g5{*i zCMFGoD0-L5V!t>r;blgwUEW{qBBf^ONDSCV#%_&XYLgA~x&GEl+L2A}PgGW{ZxFxqMVVhP z9QZzXdX(0`i&_-l7snk0wlKp8R}{O_Cr6NpRo(nTjet7JmMawoRXJ;D=4^q-&bb)d z79wo!&aYA5Ua=oco@j~B1N;(vH*`YLrl~LmIc07drd(;`9`mwEV*uDe*xVpW z5aC~^8xu;-z7RIr^p7>rGoPzp`3W5BF>@2y;KshOQ>?&uxYZI?iW z*nUNfc$`T>k#I(mOB8BA(!aGT^Ydjkbkz`pmhnRxRqq4YObMQ@ z-5&!U1O;L-eIs6lo>KaP*1bN3N{Mf%O{V0?R1Hz36D%?K7 zkZEV95Zq0X6)|mUe@|5Yv$^ec&w%+q!*v5Jspdx!DEZZEFn}I3tJJQYPX3J{U#PL3 za>B%B9gJZIDLh|8)YbFF?f0i2d^c2|>V<975yS=%@F53bOA+^@5xU2J^7o`Uo{mVV z^{PRt-0~$`DOFAKt#-mNZ&~&;lZTx`6T8}P(TTlOq4|!+!x-RLQ~333A)eG>;e$mX zo>~Pj1pj+us>lEb&tL!mK6W9tg@{s&IVhTmaLKCoF9?Us7sij2ILJ9Z@FNc?+>%fGGS(*-~yxt%`5}k3; zJgmPN4e8GCCY{MZa?(p_Km|K%^sD6ks&{?t)~2x?*ScwDnQ7j>^z==j5F1Ml3Ez)0 z;-RqyVIh7b$fQP@xAVC@LA#IghbG{WP>Y3XYoL7g?T%?lRw@y)ZlR01SXf>;L@kFV zo^BLceG(nm0Ce;LtNjkWAv)MhyzdEs{<=Wcq{_S^{ZclCakCAFsLic+$iajZ>O zRci1}Dx~$JDHRFtuG%kAF#y*)c@-FZL?EHvFxur%rAOvC^pN@@m$`G^h9|6O z;2imz$|3#`fvEW1wQfSg z?=7Y*uV;%+&sM-`N^Y^VW=7IcwBK;S?a7A=jyB5z@U6mmbn2#+3hnB0#AQm0L=Iq$ z+cM62ikmXsu@}qrl76n6NnEEb3~Oe1_BP&(LKZYrcDqgWdj8WaXbKzLjr6o>4wXp` z9RO^%_EAg*31(zgbr`90F_YkvEicNsNrX$*3#VFIF*M}-MJAdoFvM#beeI#q{o)1huLWwSe% zD-b2cvHV(faw|+mklM|%xw3Bz>)+L5nRQL~S|ysOJtj%<#9CZG(6HhrP@5eL<)9{X zVc0%*(i{&AGd-&_Y>ZHcPEiOMA0h;gO%}#=^zS=*;RqK;8*N%RWdbJoA`W?%!T>@B z&ubcdGDAsAZ3?-kJGP@Kay$40ueq7mP+bX$0@YcEd)?N*4P{-w-H!4L18UkfZvNU1>tawptG9P>OY>ZG^`4ZiCkF4 zD(Up{r;amtR;LOf`cW;qIiEv8ZJb`JsYhs*G2692G@uC+$(3SRQ!jKUeE_H;lXjC? zlumqNPccux0{@y)n-#WwjD9ClUQ(;ph$ujWtUnt4oid*p>y}PFj%lWP@{j+PK@DxWPP^19 zz)VlO!GvOyqTTjq7lJe#<{V$$89czXzX{ljY&E6Wv}Q^3<3k=UN#VL}h>WfhA%%aTCb(9+rMdxc+dqw4ReU=yuiBRgK+k=S-$^Mwe^62Mb0cZ>1zzi0U=-h&Z zFkHl%G;#);b$ppq@t7Ys>Tu3Cs5Le;;P9RABIZ<81r3z#E5v_E&H3g!m6~QHmr&%f zqo%|ngufS1Lm3xxc5`1ixZAWMo0Bj3S2oXX%+6Sn1f38533cyEnrze_OMs>~kn)&k zyFk|q22W&O-@nBL2V8Gs)mSYlj0w8VJcB7#xVV3Wq1H8V_s@o>zEX=Q7cEZDdyfk) z**C8sKEx9FrA|XRA_L1=6sqe^}Ab zZudq&R8eefE^8{O5&rWaQ|Naw`X{ETElsI4o+He`&~TRX3~)bK(*9P!qOtp@wDpng zla)hhcLUc0sV$o*@rsK2s98Mh&%Jcy35!LCK0%6D*}TwxPHdd&Bj^m7xhP=9qX@(y zhu|M6bA$&_8WWJ=E(z30n>uzT`r9go$1l&#!kuFj$M<`mh)jt%Dq70SU%EV2PPUy_ z1WftJBep>i8DQO755wof%o4QGJ+t`wp!$@6u1w%@zplo3yRYjHa(ogifpDhJb zd@Xi8?IWl0qkVz-Tbv`HwXfX4|4!6W4?A&h0k46qUw# zG7hoV@WDeVy+YONvaK(D!hi|vJFC`Gm{)ug-K^k5u{y6zF%+`Rt@whOpQ72mX{oQI z`|7(%CP@h+o_dy7FeHjV=J6`Im!*hsgz` z3W}PVDS&;I4VTBwAe4_}UN7PCt!~&V6`y28Jyj8`9phH-XND_JN8( z@P;9|+?nq?>B3Hu!~o~cK^DyFE5k&J00-gRI$=}n0g{i+5T2-yzK>6PYn4aaziFLS z3ta05ZK>i-%1?fkMKe3wikr;x%<{JK@kVuDbwEw4TU&E`RUM^{O%og;`o;`ro>8s& zJpM7fJ37;*_)=#)HVx~xb>ve{@ZXiAkkWO#Cfpo-(G-@#38D)4`5E`k(powNWDaP_ zf}IT$1rn4ar_i!bp1ME0s_n&^WAEW8TAC*F&O%){HVi3Wf8aFtA;$gLW~jsXUr|o% zCqVTEOt*1uYNVNvvhc}F!m5FN_0&g~ujIu#i*KB;8tKdFIdaJpZ2JJn632vI_yYDsx4v3jM zNar#S{|C!au$*#kAIZt79hM<2*F@B1yh@mG0?Cj#u?ytsY+ML{xFk zI2C~L7^?>K6_w1?e^1mXHU{W$rsW|W21pV-A~qutvb1HhQ$=lg{j8W(0#HBRA+uj}keU69Y!%_<=MY%t=bdF*K*bbbssB|mN~J8>Ve)tDiJj-D%#YCmP_dO4jni4Z z9V{OdwPYaP7{SF#0Yxd%2}s)c!q%;0N8rxJ?oKsS*iUpg7(e02vV@t4t);8IkIC)7 zj?~P&dw9pVQAkieVPO$z9Jid-aRZ`8mn}=g=P_|o3FgLDghqOfEe+*}u6=*zPRR($ zIF*l^82CFT_E#~EiQ!)Ks|&WDeop`E_FECn)oBdvH;p3>M~*?d1R#n9`%n#$iGqT~ z_E?>_L14z5cu}$KLq*D&9XW3w0nC^W@`|t@WlK12mJosIg-K)y^O(;!S9yOpQ5P=H{iecC3HNj6y z;+a*8`whoq@P;%=)Df!NsnblcrYiG@SKoog1I4(8;*IjyaVq?YP zw85N9<+&EXp_IkeaY;%G8r8tDF|*wJv3Q>u zT-V4)3dQ8ifn)QOaa{|;q|8axrY#Qp06xRS+`W1#maN16wM4LVx#UIs2@JN~X=QaK znb0BqvpPOl@Dxq`R!jztHIL&cLH$diO&8z7a`d`Bax`rAosl zxN&HGG<|S0ZG+zwlmW8=f3nNKtza-^El^9@opd(gz;hAq;x8E zDy$j0R7I(*CP&5kv82iRmTAXQ%xhcf9(nC`gIS-Cz`ZrQ+3#;o20+^2Pfx9j-Km8xF>1P|OrjDnCAibh$v?U9tJ$&4Aj zfJsqp3h#@TAo}*)b|CNlS|jTW(M#2IhjPC5Zw>0%X#_!gwuvotkHFl852`F=p*lj9 z3iqs~#5qsob52JPf&>PV?E|i_Gl27c-{Kc~lYVa1Q0dzp*{tG|^F;X>zOyFuqm8EW z=ivbUgGJ5k(Y4hl;wwkAPT&i|TjIkaz~wTP>qWmS73Q?{k$j_Wzxk13gZ*Z;>Z=FH zH}e~`+;&9XOhZMZ40JYUW)A-436aMG>jkOJ?#~x<`sa~IYlg;SE#XKB!YQq;!xbto z#e*kfg#uYTv-ogw*qFcgkSGBkc~nf$ApW0zd~tk>Pc{ARl?}}av2@vmbjHgNVD=9n z*nGx@$e)hmy=(psh|5k>FbTRW8YGsA0Wk4AiH1hz`cM~dx1MJ-Jd~z9XnX#1$NMm1 zJ8qpC7SPg*7Z>Jzfk8^k9yqicD7~g)dqRTLgw$s96g>p7+BeT##)R03l%L>Wi~=}C z8P;UDHC_g-7C2A3q9z6kYY}Py!1It>LQjH+ow4a~MN#4|Pcdqkg8{ z#cPWB-3rfW-3hB!zct!wv?)jPwUOm3FNGd^#%TN&naEo=KQcNK81Rick3&Y@bA#t(&o3rKmcpdCjB6)VPf@zfba5@)c2{2}wPJ z|GN;?9vFX`AAf?YOVoG^#i+K}nxaW~=YVC;7!{i8IfZD{^T+^n{#4bGD7ll%$bCh- z)gBSX?2N}H$?0~38aW$LNSoY>WWUn~Tb5Imz8k6H7A2;fDQ&REkwIs0D^H;?VM97S z_JFPox$HH&GFbv^tc4CT49MET;fFUz>4E?EBM^pV3E?t8um#n=a3&4}ZM7-6h4+Nk z&`Z2knhxGQ$o~X@un+!)HrgG|P>Xc#h_`;F?hCyZxflrN0Bj67Ve|YRIedEg+s|xG zIGvk}F<)uQFU9J;{;FeT!3}Cm-olBAt?&IHahA=q_I6uAbp(OPFMUB@=AjuE5!UMJ zY)>gY9*S?ZSWYnH3{y$&yp#R4(=~`BvlA~K-m$lTLxKmu306rh9mmb4ca)#}he?@| zT%4hK(28eOVrUTVGPL-)SWH8Puq@;_m$xA_*16q!wX`Sgm7( z^f!Wh_0KQsYtufyAa|q3?E}Tk~B8I8Cuc;k7d?QkxLB4Al zi6NinQ_wU3#?+#|oyXbiUF6B#pV-H8$Yu9y$mknt`o@YabM<=p#&iQ_#b5q?&gIUZ z{~%B5^>EA5=@g%r6A|pOHsqu~CyKICUK8yf;Lvh;FIAOP)V{yo5KPy7K#0MA!fBeT z_r|DguQwTS_?p_V@F#nq33gu7JiQ(GKWY0jc63|-tUXOuznUzJqXTGdbkNDi7A#hR z?1}*G+k5CDPrc9z^r-cIMiWmqaTS#{wmNdo>|o7fEqt@x4cG5=|BzkFiPAm#C(6j| z6$q8Boa&W=eXKYG<0>fi==hMPt?O*H_^2#cPg@UaCdii zcM0z9PH>k1p@J3e?!f~DcXxLW?hxE1!KU)Qd-v?w{dM=u@zu}zy`FQ)weD+uw*Zx= zvrIOWb}UlAfY#(9+^7nGI?w2gtB=roPF)C#j1=+CcQ~6jG^IiWuSG(s9f&EVuB66q z1UhxCvG?Sp#2-e#;be$Qs!2a+*+xV9lCxKS9_(5KXXyhTmCxcSWB4yscBmXY?j;d21II3r&m#* zrU~C33>{>iz70}}B=%6cB~pLN(B~T>ze$&>Z2c;=BSU{1MY&D?K((-pSPm!ds8jqI zz0s*Wgoy8<*XTUf#6TZKs09tz@YN&j$LW`H*WcUHooG30ov{9LXPXB~W+?}W&1NU> zDtAFOAIId@)PD|905gqxD(_-VO(Kaxwa>^3+W7W4OVE{W?mkU-d#QK667vgpHhuB$ zaDv_3>@t3-;vX@dk{EVMkkfXZj{G&gS=0a&(H1+1V#c^&OkPN=Vit&gOIA}k(rwR# z8HhFbVcwa;-n68CzIVs@!kN$mkqR}|OjR8rerw6u^CcIO2Y5`101SoqQQBR1hC=Rr zUyUHFfcrxE9Mszcr)AH~QN9Acwi`oO2K?sqCnrioVN(!hf1hZ06G`P!rlVF8LFIu@T@|2s`-C*y zOFq2IEyl(ia&m>b7BjYOe%p>yvaR|k`|St8yWLTDNCHiD3<0@%f7qq%GEDUecQ$nCMQVylA#$H7%lM4*(brL zlrY}|UQmMPYVec}h@6DiY<+2c6U{7Q>HdqZU`$zHi+$PSl{jVRJt<0;=+zmnwHz;- z9O7PNN2(Fab7Wtk!eNIR(R+|7AVnrn7CUV1&4B%|kT1K_C8&BkKiP zBdOH$M3W$~s--CEO@99Rn)s8w+aTKqJc^sdJ)H}f;pW4H}XBm#9!`*x}AOo zV4YlqDt?-)4)ujBTM~v%F(bNV;Sr|=z8}b$a5h{lcV2BJYqlQv>@0WV;B9+Wa5+IW zwAEJD)jjrmXuDz7P9^&d^QOdoRm{;mUKym7>wv0QTMB#YGz=Y}8lWWU_~Sku6ns z5zK71Naid^`o2E=D?uV%YmKI0XC7 zMy9<;B{uWQYuQBF6ehC`FxBNS*otm}$pV%o`$|Q1EpzdK_RAdAblc4Rox=nR3~cikfHNFA|{BvJ0JtZ3FiQp0;X{LbtbSog~i6;5cn7LmPqn zB7x^wO3jw(c*KnOLCQ>Y0W7vaXc4{7kVg46z{>P)&0~_Cl!}Y)>nyVGTUEU)`DFG+ zE1=GWJKmbRsmDsfGT|$AI%_YI?Xdm3Go0c0gajKoDyE`?odgX(UQOz;qFc^M170y3 zbT zrLn5omjF+Jp9%sErh!|B=5W2{-C6H z!t(GY(Efo-s*ug$=-tw@1D4H90eP@1*}v)xJR@bY99UGxeLK6x6t9N#FphvY^q22c zebTy9Nk1e52h-a*yL#11wrjOj z@>zs$_quK?vnGo_gjR9KI@EhjgrE2HjN>scDZDe~_cZjA8V?tVfE3JcONK?_2mVWR zA^Sv5+NR5#Cj{0+-6WXro$-OjthE#4wBxrbrY#1+3YmE^&2O)u{qQVTE=t7`Q_8+ic!TJI+FkPCC7 zmb;lvm?KOeT&Npp$&g9|n<&G3^NbI@VbDE`#JAe!VIR;)wq>G2cVG1KKLa%4JGe|m ze$)`cUc!Z43Z(Ul^tG`PC>T?7Cgwb&jyxy+nVJ`&L*+e5-eOY^1O#s2p((m&FVm%P#wVhz!tr~5Z+xX5 zmaU;n!e>HPxL|Gr2o$xo_)FHb85kOsK+QcAcMXaColsLm;ddmxc;28LbcRRA{!LXB zan<9-YuyM!Mo$@Fsj_O(Kh;b3WwMdAEi!-F>)ElStmglP6n3c&E z=i~S&tXKx?Bd#Q$4r)?SlBFEoSki2NqwcHBdC5JU+|^PaF}e)bt*F47BKhtxzf)ck zFpfa3=sDl7zu>m-=k7BSSp%8fk=iDydpJ_E6KZVyr`$mx2mB{pj2f+>(PnnFH}e~I zo#~=)$7(~?edf}#IlscKcPtEacRo?pIFesE%CsA2dT*qAZ)AIKK9dW zZJ+P}|K8i}gXSXp2b<6GFss{kkwqDoFQ7{!)Zd9jSo$}oqenaCqg$3(-z-8*lH2mF zdEi_0nwf4$vsg_{zJ6hhpuVO>tF=U;<)@E3sptSjaZC242Ak5{26xes7rhCLraNu` zzf;9bdgFxv!r>oAV*nWn4jyzlemVWEVs<%k~FoX{WV+amnIvPGOzd7p0!ug)|lQ{w>)mj3`vNwv0hvy|kod zXG&TANx@{ao3iIw)5#2DNOLXgUi!mN(L0xMAJpM*2a&ufH39m;GhMOdrk72olw!l}KwFc9 z57c8$B;Pb<6Z^EqL7RdI--#@2;?MNdzX@jgzQ2J2Z4{@OzGg(3BA%NBFC~_KuQ7g9 zdmL<3=bd;fpz~+6^qsWlGm=k+N+WSOc!zUXdtplCqP235Y^`5b=wHv7dTn<^&q3r< zXoz`)WLH@v=;e~VL^uUjUI^28XcO6gmZ0#sw28by{R!6t^v$h5R+4Z3w37S}C&~Xd zTzUT)uKMa=gUQzvaS5<18C+NdoQ4A(Za0DJjT)i`6fdT!bZ+ArGE%T)B4+4&;}?<1 zcl^SWp}dWi{*=YvArW+^e&F;GbGVlonUaZS$?cEFK>0|J=nF*)UqBO*|HO`)gD^5M1dAmQm&@(EJXSe*7k z>iT67B@~(v*9;C~$fh){jG4l&R9$6%{ro|>!yZNDE>_K$mo1&6pI&M^494{LU3*|B{ucf~tpU$;6^N=7Z z?5-bA${V?HZ2sg(kSf)34M<$>9jFRoy|d>M2W0;q(b|ah!!=J+5taJk5)&37tI{Ne zP<$2wP6o%ECuI|J@Rv#=&(7s}fRt-T%JO;v+vd1D^G_Cty+uavpub!k5;M z3X?db_{kWd)Lujt)Zg4!73L{Npg%g{{RF;|H3SVK=Wn7t9UwN&86(VcZF~*7=hibd z9&q9WA1+v$mOVV_d|VZJKq>*#6esftPNH`>yT2J(ba zwR46krpPghEBK`|C$cx69-m|HI$e)Ivt0G`YXg(6#v218ilY@957{?c##_dlE^@ox zHAh=Qffp7j`y}>9hc^)Q;;%D-_XXS)O?Qh40f4+}unG4WyfAR>N2;U!*Id@m_Jj>d zhCsb_)mO*M6|+im!78#foZwe)WvNBTP}kOedJb=?U-U*)Is=tImmS25(N9Mi;j9&K zafivG+rt?Vg56c2u4Aq(D?Fy-wo^WOC$OGES6((seXCznopg`1Vsh~W4vw*!$Vhst zxEF3(EP2uve8sZuBc)TYSn^t2<)YWlF0`-E`E<|C5XdUaudl6W++Ps~we&hS6X7-+ z??dRCzpv?;(}z2VWI(Rq-Vzr+)+~;TTG<(YK4peN<%Jx4eYWyjj|$F`FA`n>FO4#- z>sV3292B>k_Y)U=FiXT5xL-0wSh)=fI0>EsiYj2T$>X|qkR}YNOVi$K2^hMT<4^{a z`3NggYDx^x~>R)+K^!ml<0xu_hL~AEguYW!IDyh+~w*@DF_y5Ub<-ZMB?tcWVmIL^B zGN!*HoIM<3zf7r)tpfoW*;b>TD*Ql7lITacBvDp}nsv&h>bTR{bw$jg`p)^(i{B`O zT>^7|-A;}qc}9E1AeveazGnVt#r<&Fa=6dO^04-@dyxx-xr7CFCU2SX+PT!_?>84Q z;#tbiA&yEqC@wq(h`~F;Zr19lCg;mN%`IEz)KPJ=W%*XxCv#D8kr+?kwqL1!`SwkZ z(Q080K_aoEP&WW^kKQG?3NFY%H8Q|nm*F6M0#zw(jeWFunvJk4rM96wYB3z2RLv28 z(S3s0G!2>f=vV}Zi(G`arb;oD*)z>75%@ucW%wg#DH67wwg83*fFwq?k~8g|!KeoSExBhiWX@~o3`Z>puq4HUxGb&qO%KMqGGAf zKyPD)TMX63SA^xhz?`|q`%44~iKfw))G`yAlU;m}D$5E8cgB;<(Xy)&z8Ici%F^m0 zJy^~=Hm$YgsnL)kLteFuf?e`OVr~FFnZt8 z#|Q1JK-xxcj;ZQuN%V7+C~AQmHxaFmSE8I&X}LC9O^r!))g4;mNl`wGBWrEUQ+%%& z2cwxeMtTR;z=kY7i7gtBzy0`_e(46V-iFvVW+4guIF1mF+1D+`{if+=B(2wfP!nA- z_;c`yoxNGM!ZiMAKEv{67Bic-K~&6(c*{&WV3=CinlOvVZ(SpqK}~3|2V+OM!GuW4iR$AK5#}w!O{oG zbxdbneTnDc@Bs&74X?zcZV1x1`?9ID7az&WvQp_3_tn*4sRfUzEMz_NJ7wT|&XW4&IQ&aiuRdp0xh_-HmH z>EqMsvY6eB9m!&p>sck~EA)djsiQrC3AeE#jc-S=P%u>RF$+7n$Ad+_zc8xmk`65k zmNgp32Y>te*MJo4qu-7#*oYtJ%2*tyfm?(ut#$6?Mq{>nQLed zeerWHT2lmpVSmT=TmHS;fPn-SV&P_ExPELN=&0c`5vo4%^$CtTpg)xte!dhPMx($z zp-dGv1Q_^}7=hS6TiBZZrx`tS4S*bYsvOnQ8fPK0g9g5++#*S?N18|!A2F5`2CKLF z^yIjKAR@Mk@tD)wg(U7t*tjGH$73{f<@C|CMAl;=-Y?j>U6p~m zHc{0bIAiPqDlCjpRE(~*WP)ZLJqLm3Hib(xk+jDJkx_3)0a2;C0qV0)Ynz`o+@lwfW{4GCKN~@tpF3ab#@U zrVGhE$ZekFc%j)c1Rxu8vyz5}l)G;m?sJVE==%bh-{A^4kJRMPpvjLU3BmmuQAINi z&#WA|Qhn#>q+--=ZGe1mI5CWFb6|O}*!EGx?F-}WjH{RNw{Bfy-+4F+T^8^OTUcuN z#VQ}fxiqpgK}NNc2j`n9|W-QMay{aOyYcth95QOfEIDg6BW zjmz$b0^VEUwV z>XEnylNJY@#r&ld;nVW;rnU8*F*WgDk@02|uS`H}fi5mBxTe%N zAGF);6QoEX2(u{T;NhX;Z*Q|Gv)x-mJ0&sDRlGWOD$kE=H!dCo5Q3l`f zy)2qtqqVP9-3u#Sj>V)rB+tiy>zH$laQ>`@n}G&bCn8|1N>`c3wQzhot`Qhw{;5&2 z*3T)+!iKA*ffm{k-NLfm@%Wq?WOxNbB=Z8hC&?lq^IHc7v`>i8tJWG;fPhA4IPL=B z4UMHUQUge3)#%?ZKCX9+P;z2qI3?z?Q;DjnFDjL;vOT%(c)Yp}X|Gt7nW6i%N{$tp z$CrbBfGS2aWisE%@^nVWB= zHoP0_yQNH$giYfm67_0?_&dU${bq47qP}C8okN{iB!H=AB77X6&1V~dX4bsSky^mZ z-mcDmMlA#yA9EgK=)nK*qa=nz@JGY7VU37 zwk&KK#=^W1z5!P`aEDOI;IWfc@3!_u1fvNQET0uwf_`-4+aM)2#>Ygc@uA0fc=x93 zHzSTGbcGHbklW3^N6VIiD;LKq#&n^DdUAPz+^gQrzR#0B$_^$Hz;$)aRJa)MMX5E^I~ckok`WkLwr_wIXDB z#~NOEziwgUcOniAxiBEBxg~x^7)XNFCCH^=i=qB0q(X*B&j|z61&#SHV8sv)o1Q<^ z&?e_Q<)|^5IL9ZG;}48+xh5@{Wh0Mj;k>sjruZ2+$rd>Cg~evfqc!BzIX8wgR2>aq z7S)$TKL(ZTNS@~y$!6M`;QT2@qS|JGY{QzGP&>+F`m1Uv?J?F(aEoT64G--}&iCIi z(0XOfoSp>bP99Qkf&c!4NS|5sT-qobB=!Z z*rz^z;5+ZmhNip{5^(aKBy`{}-+3j(>o?|mrB*JmENmX2lGmNWim7);8R}?eaTXf( zEnDZQR!`W0h%xt$yWbDqU0IYY-OGDaf^R3W`E`Rj)b~gOJX3SyWaMVF?H+->=%pZx z9etOtq}y|h9Yj7gQ`;8}@*do*F-#4$z2jD&G=V%rJ+DsQ^@dbV82QqF&B+pda4z*p zc{gHEjx|qd7CAd_5 z8gPHgsp{)hIdweS=bde;*y1THkaKoTE#*H=oW0oV4RkXaw-HjV&%*5UjkPV9B!21M znDFuCj%qp*|HjV9C%GGbw#OTQBZE3$(a-z43lnQ5t=$u1=39Hh3MydABK@t2VLTeAEL)?H+>>8_0rVcS2dVX83MT!=aAFaxVPRmVs|pHPO02K)Y_({nB~VCEpLc zoe1zp8_T?(=)}3K8vLOjUBeU6C`ZkJZ+?+vAp#^woplltXUFiy0ltfv?V_^_z$B{> z3Nmc&Z??Tf023L3Xyy!o-<*RU>HevPlpsE?~?U7sN{-B ziBUIV?$pR{eD*QnbM#w{z$KSJl+zVPr?vGZlpFkKJZ8#O4GQ}rIk_p@jN_+=sxl|u zke_OF{YrTUoLX6TIZru@m>sFFFvLI*tsO<|+pb+_=+IBReEox6?});*smQHOwd?cc z(X!mXtd<>GdSL(9EK?x;Kh4YkaS$R~!%lh51k-<#TT6>RGmLbjS(8YDDGUc(c~S2q zL=2Ki?xuRJXPynr+OC>DpOdin$UmFxXun0g^?0u+s?6Be$ofwDPP#E)wA`LNDCa^L z^wokeP5G00a$GGwHavR*zqJ>8R7uzowX_tHNzk5#37NJ8-k}@|%!YGXz;nDGG}YH_ z7+P@H=X%zrcEj3k_1G4qu_#DEn1DgHdo-2t#Y%bg;H+?2Sg_0Ua0}(Bu?Dr(0MZ7F9Gq)_GB#16} z3&(JRXD0IB&&#}ZuI-Gn5SI2kqxAgyx*@UQ3zSHuC@+Rt5uTT_4kczRZVNhV>tpFD z&MS6~>bct#aPT*WzWL+;=quqQ@NAovaG#!-(Lw&J(&)j!`7!=tZ|m7-=58lEF4<`e!iFS)CcW)VsUzTbrcp_t=_i*yj|PLJVOTqT`VQV#1kk8<|O zn_Q6~+ouENPIs)|$v4MOy!LGxOtj$F&i&R81OCl~;YQ60g%M5A_3R@f}4fES#n349S4d${9OK zWDGj>(PXE*Ysh*x-9{Hvfq*8RZ|r5#b&6fY|MLs13ECLGT5!7P@6a+jD7&Rd$o+Gj zsg?ST#mvYXeD>hp9A3;63f#;58k)>J(5dbTshZY{rH6hC(?#}(ffTQj1m`Ad?RF)? z_^00bbt)ZTdJn^><~Dr~qo>rABN{ta6_p#Q0sGfH;}7_sp!hK1j?4hVtE0&cAG^q2 z6la_%O@G{H^e&@!M(oGTo?=HM_8i%~?;J||a#{aT-YfL8ekY)PIF_lSkUc2kcY2go*FC_(7PxVxH!0AJUvGP-cA>K;6X6dw3R|+VM zX0e|*6OYm^LD)XuS~^&g>=w8e>2p}d_!P|a`Y?NV%XwIX^r5p$^37#%o8E|1%yao2 zcPl{xe@1?QKO;YTej`%l!6=o}3Qw1j38OgZvOy@-I(0@s+; zGdR=jNSRfH60H2BtQ_j}T7K;Vhi_)4jk!i<+fWWDZOMG1UwJPyRcEwDLAKCRIJU;; zXkqOGZZ4ZQexJE+IbsnTAb)Y$# z^yih7>{?uOMKwZT3dffil*z}@Sl9MU%u6?f;>3-%Oy8*%uZL4&zqe~FQM_1AN?d8k z?TcX$+;_z)ESV-7pisC2Qx4AI-?A#RM#_uyTG_9$U$EV+F z*3w{z^GZ*H32Hy%YOWjnTsn9*QlmtbVQDMtd*X|U&Z>Z8FJ{@&`@8OX*DpS_`uD80={{3agW6`FlPze{>lhY_Ii@{eSK-;Mq%T?{U9q5 zZ@NW7#!u~>NVe+SE=pLMk>_075UD*d%N9<@&xd4usX_}wv?C~jHc7{2n**H~pqWhm z76)Hp#5AgxB$v|yqs^r(aHSEPxdDoKUzXb0oH|4fg!_B}RWZ)7QTVarxV5*6R}fC} zYe4t!H-9$P+gDdE*2y?;Z5qqztGp%x_&yaH0PFR!-;7l9*I$UZl)h~EhP`;T$O*Sl zpa>SP_?M_W!>E+jd)2S1rOk-uBu&E7S1-55QRZx+5MR%d;d$;I)iqAn^XMlNbE(QJ zWuPMaflcE6EbbB7<8B&7zcVsvJADjSBs@_DY4&1AZsB;BsMVd*!?p+l2vv^PXp$d#^Bp5p;Sn8z4oLpPzy-`4ZBhSu1yuz4th?&lZgSEKb)@QMg5!841YLn z^AAqT{~M=c5XND8qrjX_?->JQ8sRTYJD~rKX#oE8bQMK(djKI=nqh<8bJ!o%t6z$H z1%2dAU^Vkq+_pzB9&r6&;~6;^vUOYkdDC1$6zHv2U(`0y$z%*`v^SJuq?X=Y=2X!X zsZqHiyPmJYw@A$(C^EvYt-V?aN0CeMN1CbqJe%P2)2( zL;uF<;=egv{D;%6|KRkM9xQgX46b9T$tD=n?SEl<=xsNNsH z{uR>)e=rUF-<(El9(HGpAN&taOMp4;5@vVvH>bg6#>%00uBGm$+EWWC#`)<0HKpw#tgWAsU5)#l$0`MdOLP(izq_|bTfw@DFM&3@)OBtLSx%kcbC7&DFNfe^<+;hSXoM*< zx~;JfdF`qxO@i2%|62BX<%S-)0VuC|?4jk%4N}nI6oG|1PN-AhSZ4LJ(Pq3Dho4=% z#%|~4)&>K}ek~=wVVL#g)=!eei!rgJsnHSg_qCbq#;*i*5P zN#**wH7siHd5ytqr64Vl2@hb$I>Y!lXx5LnQUPcbkwMokyT@$Prdvz;w97d|NwM(Mm ziJG>&DbsYGicwBjGZD8Uqggo6w0$C|n8lzcdC3SxQwZBvgMJD&VwTS)>d28QxujzO z!$;*aaUC(V_<|p?6gj(dtm*Zwl?Cpv0wO$XnGPEhPzJT4Iox-h`3{LH@d#<;PqQ&` z^$MO9BicrceqVmU7hGVBGjE{n|ygHt=G9j`Jsoi#8d1{)mf^|JN7>{#WHP+dm}o3N3wgb#2VoMtDN>7<8~@ zxmtT6Hw2p*i^lXKI(ih67+hdLhHJuULeL1G^F4f++1Wtjea+mM!qaq#r{8&$^y(z< zeQEY9=>Gj}>DyP&v&65YF5OBTiCG?t8+Krl>sT>2lq&Z5qCVpFbY zqnT8B1RQyD$=0>`4_*(n&K!?c4KPd^(;xestx~KVVD8E*q-0U3rUt0pDXf`)%Oco? zh)a(dS$u1{X}u(|{6Vt0RV@tbA;$2?LDdmQ!6jk6w$sa~J3Ht;iItbUpaRtV_Kw^f zSjE}MWd~YqP;}_6vPKZ()WRapSj?S9TKA9Mb~TYmQVuwxV}%~VTQlVt5;FNwDJ~Y2 zl%u*GpeFg&%#FpmfIFnD?^?@o-82DZE!Xzo(NF4t%T7oFH!pCuzG`+0EsG(ify^pshm;c@k;P&2UFCJ6x^K{HGW1g(ovtl8Zv^ODg7Em z)_k;A#v8?4ro+!@b(0@<5~$<=552@ePIi$b@ zWk4`0wy!kSoC(q{H30bA+{N4No>t(EV~kEk?(*jCP=14HRFm9JsGcwrXSg1E(dHmS zQY!V9zz1*TOk&R8q87$T!_nKdVO54*_n%k1i(mvvXy`2_x2O^ zHQM)JK5tj_q5fF=8h}`?bz5n@GKBnmo0{ zF@JggJFwaIg}GjTD;xS^2L<`k@OBlV2|D`Z2a-n7CxmKp-THEJ`23>iJ=#Vn-}CM{ z{*bers_OC=%2uz>F*%FAKiBVJlv-Z9op*C_XEj7^;-FErh2iOh|+rXU3{A!y_M6U3-z2B+*v$RBm z9J~t;D_DLpB5hCVyTWhFP;#H&TJUV;{EPlIBWB zz6%+z(5@mbD>bl?Z{CxeUy5FPz0mPY=hNh$l_hXptlric zwo3M4<5~Gb`MIpTt;=wF%F>UPaCieY=XBPEU1{vf9eh(2&f94BAnd1aEp04G7xs?d zwF6aB+|qiZ0)RGw9(qou*h}!#%2G>ltlO`Aj9q>i%>nwbj_8AL5H%|Ogr?2gF!6%K z9O5-yD@O@`PyASwW9oQKfyE&(jOfz(y-q$+SDB8e0}DFm zH-&;146+ZWrsEZwg4vT=U=j4r<9pe~SoKagZ2~YpfU5V$rdK>z1?5g4E!CZa5xgDVP%|Lcn4zbq*JDc)WB`P9SWoTV1F!%3 zP9%gVR3L$1RkoY&k?>RH`R<(8#aheF&?bvNlrv&XAY30;Y@2WXpisq8y`U*i{nNG{ z@?CoRDndTs$iZ!Do-vVdv3#}tfFbM-DDBIXmrQb`-&-lLX(dCSo}$TRXUx(6Tztvy z#G!x-C9Gw^+h(nYw|ztO*=1pEor*wW6i#^KI;1E*q227J7yFe6B<@Li5Wi&*LZ;_> zEQl)Hy05ju3tUH&m@) zXTI{IJ6SGy3=f&7jp463qBb75PT91u&%z^|*z8yAR}V^cg!+YG#t>Y_rb_j3zof_; z8$IQU-bj0W80(Z*i1dOJ1owYsTX(4f8yI;zND3;3_-od@xeIQCGdZ;MX{UC{sJsC@ zY(-oAnk{y-4!JzM0ao$mxXWBX!`MV6auVy5IVx$R0i?A;dbQa4$KUFpD}QXFaWiy$ zD@>KK?4wn`^d2VA$@1>FvcdroXr^+-*@7OXz1$4@Vuo3#@S6<1SlxF@*3eHd^%L6f zIfEi#RBmF@xRwFeAIAabyID2n2>SZ^M)Z8lEQ42M!fMW`VrL8Gw5IXEYh?Ye81hlA zmw82rd-9ji=i8lumLP_=qi^Cv2t`UlsK&i~C0DFIz`bDT z^nn6B@Y#cUH2tDN0kZiG+upr6F^VqB7~Y?_lr9Kjs$Y7^i(cMk(h~@m1~5yyVnqvXB2g;FMy-5r?girCn@JI;sj0B1%-s` zLr+teJ>K=vMNopnz^0lN>0i^;$uv`D(p}owKCZ8LJbP!gcGU}$~&U@ z=Z7>Ee^FCcY&UhFILT|c;4wrcl9FAL)v`KV!l29$>MN)Qi2?iV{hyo%?Xx1g1YXLO z_;=sx|J+Lh|A(nP+dnrd!1t;##8CYknS?5{>hlA?wfor89Yf@!%gfZ0bMswEV2SUf zo_R1uE(vttJVU*bVfcmrNqe#ElSay--AUdf8F7nL-YFh6JU>v& za-Fv-p0}G0e^_PbJj5+NC7vvUHcH8f(!w2gRlXgEm8d*u3PuKTz;fQ=#7WJ3i9wfW z{Qgc#-^WbooKxyDkjJox)#3@+i^m&Cy1=iQ(b29-PAhoku!TWw;jPjbvPA93fSO10 zesoru9YZgAqQNnt%tK&ApHOybg*1eOQuPFB`Q97z{obcP&os`07;GdVr1T8Qt|6se zbo;14;lwoT&M@YHmo-%yH5^W0MAj-1vyk0qhlYdq`DNyi>iE=nQGGs8bIrg}m9J$o zNO;m`1q0Wibzkh7^S1f>hDAtWN7GDk-3>%ApDYJegbmL%MknS-@pQneOEvNZb)4ws zG-{giE(_{^n(6S5t4?@neS&>yyS`PH)1Md((85D2^sVq0l_W2cKcp?0;m|yf^V17!Zn@vJ&YN-1_eRpgvitA^S{g!wuZlo>eqkd5}>S zb@7YiY(md@YF2cM$>`1JLFvzw#hqUY6==>}0{-=Q!xBcS#t)nf(f|J^!++|jKuvw{ zLNDPPk$4?y3OYq&W5g}GJbE|Nyj{?I!YrqU?1BpI{Hm23KJq%^xuYofwb2l?dj$Dbt$pr9d%9d*U0U_sSXcQS7Ut_f==h- zm5QI=B_D75v0&B#Bbw&x(~Lp5z;g}l7ChQ8l9YP_@$xk$CWMj$$3l2|TyP#74+UJA zNIf2n0S@nw2d@Fgt)@lgNTv&L6Rc&vYhDC7NiGs?osAzBtTIIRP~m9`tJ}7ntEP?S zZ=2CL1uL;Kx;sDm$?=k>Sv^wE&5W5px&ugR5drHkO@qEYmw^Z{Lg+p~RVfy9bRStM zl6hz|-imw@7LI;)wU44W$Sgdk^bZHoWdnF>t#a0ML8L&hZHjy7I;Sx*y0@7#9qGVK}d+*u!XC%=$ z6XReRm<$uQpwiEJXSbFECxg_w9gK1OyIIpl8hvuR;c5}seT9Hw#pI!?AYwGgL!n`L2@&4n&8`Y8g`+;&p$#X>XNmciyYh`uHedwxi_K7U!ga81rRo@ zaL-lDu`YImBDz^EqxV&m+|M7rI}-HHj1DXZo?Q8{Tzeb$U>4l~S&arbE7@*8baGpc z6hPgf72)mXTtinDd^G`?{uIH}T0RWOXgv7-b%gz|>q557+Y>xEwRR zw)v8R@rde%aN7tEoUAUR-9=U`oyyj;1Z&6{1@8DB%mVohcGk6s>^3CjkI-0p>h+8d zH*V5z56D8p$%3RTz_1 zj*H_MtV|Z;D^-Tw1a(~O=sSbOLbwbM11?Vq)^;Ge9Cf$hl+=y`SuN$$&A*SBGaBRN z>bdT@nc#I!eTLzpS9#)z%)3a}wtLL^@ncWlbEY22x397ixPnuj0@oPP!1S=%z*P4h z1(&&j&a)A#s9RCAJ5NxJzqPXr-B~{*8Vizla>g}w<^tMmBx&vHU3UH5k;16gmyHwV z{H_Qxeq%(ZKHRT2H12aaw14QQ0&QBAoFZYs5i_<@v%Kw=yjS(xZg?7 zA`+Ln{Sfz1E^pzC*%*e9OVSZ(^8O#@{j(@_j~)P0R9q-Ahbb4a`_f)D|W=cD&Hg z@7~@1&#Ci&%AEfpA)YAx%NrNbb{CfgwRxC!GP{{0T*IeLu0SZy5(Z7-C7gyTF_RIQhTCYo;kXSu%W}K8GOhU{FE?F za`A0Ag950)XPA|Y*Iwv{#e(tOOdFg$$<*N+EwFZZ1C2`H;7Lke$_78 za$7VrHI3dgN36;n4UANG_7p(^|_>W9(9oL=`B0&`)5fft)9uV7>i8Vjw@#$eBC z$@nP18hO;~XMFget_ccw@na9DL_sba|0mIqKw{!fY_(@_d4EPKA8EgoVQ{p3>YGNw zcFWuYxLL9Q=sUkJ@fJ!S#(zq_2mv_toja}-|p7lKkb38TkX1=~V ziL0A$^x|DrqXSQ(m%)?hrL?1Niq9W%+^Lr^a@v}E>_8>m2lB|{nR2+dbD^2d>$xxR ze=0x?bL%X7aHfR%pE4!zf85((WBZ2`u4xC(l(_!Lg^aRIRMBYPXUl6G(VdI#r{{xlti?JnHx;SDD+~y@FP1ehWOK_#Y|A3h?val>>`8ULayFmXWY!`17o&58J_O zNS`)NegU6yH(#Nh(U9Oj0}h4G9W!Ac=0S6}3T>4}h!1MsIT>kjsHS0?3r!viv*FuT zcg#F~@KC-*9mS<7DUl4thHjnmXqwYZD*|&l*v$^=D1(zK>BjZ?*^8p zvzR#~p$BPkm4@S3X}|GUNTOlPXR^nL$K;Vvu*YmOf&8W5kZg)4a56JB&zX-jBmERU z#^mY$FVepGIkWEHvXkzhW81c^?%1|%+j%-fJ(IuCw>Mzc9_i((eP;;u>^>~DFc)VF5Pu=9G>9qLWnjkRq#NA*V2Anb)C5o{8fEs0kSF)4Sq<~5z@;=Ov34L}3gT4p+2tYnZ6L zb~u};dIxwebf2zB@M)Lx)KYD6xuy-Hf7F5}?A2V0y(YI)9`r_wm_a01*2_MDr9-66 zkedj(kiw@JH9~N?qnJ0Kj&8CF%VAYD8gX$E;Tmu9UgB0A2szeYg`G#s zI0&!A_RV)Q8*Mg9bePRce?O&e3ndx2QImYX$8xcmlFnhhTdzcM)P)>u6mgKka)o@0 z%Knjwbc+=-*k4x2PfWqi5A=2U5vE+1h0rl!5b~feNg>pl=nJfc-Ax$``O*J8s8I8E zN)Pav>Jgu0dgi?;m1h!73dLY(RIo67$4o~WGp-}kZo0NGrMn(iRw1Qd^FccTq%Fu4 z<3etLt*C@L1gbzEBhG3}0D_kaQ>Za*)gd3F9Bg!Jy z%i-tF)YK*%H*rVW6f}Ywro{3K{fSUUz6yX2jGQ{r4`B^1V}MF$kGG6ccquoCEEYj3 zzjFU}+Qf?V_V3M>E>uI;&F7I)`Trjm|3?S*4=w`!HGj60eI6;PM*3ByOBp=K6Qh$M ztB1ovKXqV$!t;E59XD6^@TgtZm^jOtGCVf-c{VC_=RV)bjF!4RBmHM4zzwgFJXfYcSKMEaO&=sMN=qDne=ZZC z+L*8jx3M(#35)ZhyX1ykcBMmlWMj>~0iURt>w{j2awepI*Msqiim5EHJ>Ov=#bokh zYNJInqZurIPN;UQ9i1(hHc_8sl0~!%3VUdisAyeKpZiTWA*E+t)4*Y&B41$Y95*gC zqK;4<1+K72(4cbHpWoZXjHq&!XagwKGHd(8h-7Le7F0$t9Vz#Qa6gVM`uS}n=@GbR zZ)kWqnS*X2Cy>qlt_}6DF(8SF2yaSoeqPU}wzdjAPkc%l|FwT&k6|a1Ylz=t95{v= z+^F2aeOJE7>b)5)`m~H%ZNV7c5F)`s&>;=r{DX?jq-c=;pdvqXEa0aqKha?7fO`qK z8e&3b;#z8@@^%Yfq9d<`mPQ{6ZbQ)KU4CiqlmDTrar5Z!8<%Xn_1$1*ceQH=o;3bK zsQJd~KOKy{VU)QNVvu&I6z?5jfzz9bG2cFGK|z{&DQp1YY#%*)gwF5OiSoN}v!NoX zeN?lU5u;4wn2(0OJ%D9j9lC-aU4BUh1J9jH{DZpb;9fd0zOKzEc`a+~4=%Bu%GO8p zPHf{!iKd@ObK5+S+J9K^SS4U|#so}wV)bT5XxpOwA-uVK;T6ypj4Q+129D6_U@)p; zR0I%i3gYcu&iV%t=gHXw|IruxhmaBcvnlxhY5e?e^eb2WFXJaej!n%vhRkuAlr(wb zm(N~RTXtxnR17PeXa$;%2Qz0$49?ck3yOrKkvqT>X`QmAwK?9)JmJ2_1w|iPZZ+$H z@I~|C8{gqtE#UR})cy-YuliKKLpP=#V4N+mGAZMa{R+8nh2O#HYhPf19q{(FZNPQa z<&J$8#cQLiDX~d#FYGwYf0z00o9V2)4oTE90)uispXG`fQ-8FC+Z=(W;gKA#DDu}{ zMR@V4Jdyxo95g)h5V8Ux`-M8u3N31A`xH#NZlp;b$VRm$^AYdg+;h}gMgcY9fO!+e z8Xlk!%Zt--I3HCJ!j%V-hgl8|v~S`|Au+xAgQlO=-Y+-Q2J&t7@?YS8QZC`QAq$O_ zmF1Yzq2VO}emT^k+i-g74v9I8@mlGzllFi8i!D69+M}Szu^VuutaIw!$?y(AWo{+J z2ROqOX~R+Twz6rnm*-xoz!@m?06hK2aPJ!|6rn&y(Dt+vNM*s(Qx3?zbE&b=%%j&Z z+ioK5e9^Hy~99;0roc73}PHES7PDMZm{pi za$EcmN!moVf}*`IH75NDbfapH5Q}I!1(ugg$$)tjpXn|gm{eEuP`_}nx^ZUz`&mt zpVW)$$@j&bnaz8(p;^<5{eCgkrM;`HC)?>av_^E3lGXFt+2~&INKSr{QU(L62J9;J zJvQ;aYpIr2?09@_PH0|VfMYFj*f#4PIvq3I>*?xjRRr(c(4CN-r+_=9aQWqv#>?tB zJNz~6`8S}qE$|(nOG{He%E;E|7{C+l{wI_8gqA*$Qkaq{Xl{EvPyYBr;sqD;3*MIBbS$$CZ&!W z=%OrR19m&U{uR`80HHUq5$hp(t(VukiR~}eiL%cXR*6Rn+R2Q0a!gwM#q~13PL#F? zJKCee=>;j>yGUm1l=#Q*d#b8yoT<;a)i@s4q&lxq0Rk)jL2kZ26!5#*^0Yd+nGzzY z__1dkOV{ZVPzC4>{Qi4gR+?koRMASvEbffbBgDMG3a4;_8epT?2h=7a#Aw`U91^C( zpIp8&rlyooc=%@HEi@6HNY{F8deqykzWvPJ@!eGYir&LwTnP8?+rLeL4T(S8P(P22 z-Tw)XSqn6gV0`~Jg-#3qQ%KH8`%iP=i!<&#`g=vbiLK{wFBx$+vnSHe*mIZ}qim3| z175^W$1iD5(@=VnnC7US`)3vLOF4HjY(a^E;-jQf96t#yrFl@zA}m(0Db8J_Mr8oo zh+9b*?-4VX7Zv2AN)biEgL(7o&Xc>mhdz%w&%Gb7*S=p`uf5@k{W-)}$XRIt8G9suAl-5@kTjot-AnVEztFVB8)9M5 z%C{epd89)~P7HZK3!h$t5((4~Kx7xrRt*Lgn%Q(wz~e&P^%wHkb(#5}zE%ltfUnLZ z)I9MDUib^iqj4IQ0y+F2OwnEIb}3r2Vk;Qs(?F$HgR^>?;T0+J1WaaLT2=VG>}T0_ z<3Lbab$CirgpVQ*c$zicBl?Xe4?8Rd{#sZvaP=Dp+sY!cxKQ@6OMxw*2}0XIIkHHF zs3=R$M^YH`RIRg=G;~$dN;=a30~dpjjzl~PxDL*Hx>P;2ustoP&m6{kg^ur@tDPOR zj~z41>e-thy^he@U@2R@<-S{rb5XLL*IASY<*h;DS!S`PnHyQ{rE>ipes6r7b}J=! zteqznS+(G3u^RC!_=+K*7yG7$qMQOPi(1%gP_!n#1lt zDoCD^L5?z4T_(1}6L@fPrxs-${Kuvl_kE|2r_kLeHeHLZK3_Khci7vHCfWMgtP5R& z6AqCP+e1Vp{#yxl6fx5V(0yuFd8FZZu*2Ce<*}BSWtNuAv*!_M^fHtgZSkzNn!U0F zF~g!b5%b}cE;9bgcJ2BF$g5R&y}Zugyhfv|rOovmvJt}l#}Ren5i*(ItYk53#NML~ z(@yx28j6yz=h7nqt!hd}7z^UZ*sxfUTFn6m3*I0`obB){PxKumUPw7S-<%SGl2zkt zNarjDen0W;-29xOTNhb!{6WWn-67_~e0L`0k+7m2vXo6Ec{JyzL{L%uGEI-9XY6G$ z?rtmivBn8(=^!!0emrQ_iX$jeNAA9UBH@?BbDuVw|2I2;wMMF#y3uVFw<)%rqHfjt zD7woeJ5F7rxuWr3bLBqIJRF?JdQV#w*UM288%-AYtW$jWCKp?^v29O$#^UYHLx3)ZIla2D zA9bG~efS38{(CoLeudU^xRj?9GwJ9|6OGKY*-2_8Qfxa`Un~lxnf5Vh?%UGpZNK+j zkrcg`-rK}>ZW=9~xqn`7X4Z==yM`P7gytt$adWFDk6qBn2@uz^8dtD--|aP#Mw!a< zj0gGUeeXnSsy7Ti6~SQ;y|!+XwR46JcEV;Ln7an>zJ|eu;-3j7XQ@J8M=jC;B7k#@ zY<`Uj?<{)Tw>%yEa_vZ+t0=anZ9JLpxLTy4o_7g~M^wAsc}ZfuNqoDcK6W>%*SL5P z0rS{AEbZ;8J{^-p%s{L?`3}~l9&4p7^C#}}%Vitl*K6Z)m@M{`Ia2Ra^;PTnW+%>$a{+AT5tO)#Dq`)$>AkdYk&%z-ytXjAUV% zlzI~O#*sz8QBm^|SWWUOkamBo>-#O(N!DBsAVA$9&~fkQ$1 z4@pkeD9$H1X8mG`1S9%CAhZ4R9|r*Ifv1Z8Zm(CnEVoj{meUZQlyhN*ny7ABy+2)O zx$c&hn9n9l9Y1_Qmg2(Nnvo)li-bf4Lq$Vmby}LOFAX#VmZWFk2+MM*DQ$$a4HFqTK3oAr2J4;vZt?hEqsT>%tpXyXT@WPq&fJtIe`d zNDj=HPd7>WDam4d46cmIpK3Uen#j&^E+hnO1@g!C$+ZJ5T+=AQj9QG zQ6VBzzyp=3GG*k6Cu$oX^CZFTXy7R$`0uL3lTsCM7AqhrFi9H}5`s)trerA#xN*); zH1g_;N&pmQ(r=W|DnYRDQDq6Fa!QUYa>&I;bNH3Uj{1D$3aB7)6hItprDi$yLI9B! zlX!OtI3g%Ut5!Yum|DVha6yW0(qF^)7Py^TZ1Dd5X|?Xl>ZA z=tvh~%xsE|1kk>Y9DqaUF+@x+ttA#gE;2sMKN^AkcOm}P6E>DZdoqIsu;=;#1u!@e zApDf&CiW6@@_JRexVF^9g2p~oX*(@rOG(|CjB4wV`?}M_aL`Yx7)h(+`c%^)`%Xu< z9j0SRfT)ff9W*U(a$D)Qx#{#r2lr|PDmF|077|Bs)kkE21VIs2t8`!XoCp{d3n5FSDV1d(3T^Ctr zh(EOqNR)yfTmnpwp$QXLQKe&TdkpMhZfuLu*+>CR7>C(Urg!q0@)hpmDI;4zbZX zoh@IodfbnM-;vTO-@$2%6u3805);=KL@TANB4r47xC6L~B%RQ=Q_hw~DKj3o$o9i~ z@G7&VFyq&3xWVeof74`)sTk_5qRKdEYFLE0nMS8GMOu;`g15%wWK ztU}09Q2~ynBkTN_<0d|5n%Xt7p-v_R2doTvDNrEM50ngXf zKGAc3@9cw*HaRl`@;AEnE^P0B)9Pz3os)iQ)sQTU>_jtn2sA?RQ<%&>i?6es^eRhl z2jI_+^-SkT4BTycbRS>w4iW(gv*e+hZD2Ab2x;~-ls$r=tBXItp5_Vial02m<(hs? zBGoF9fHP_DuCDHm89i$E`=vS10E85L#9-kw^Am$3^LgMb=Q)s}U1`kYF;bm3WA-RC6 zUtrp>=DHbot!;T+a9tLNLVX*%@*sjpuWNGeZTk?MG6>O|AU+0mNtc^4VY$Z&9WWJ( zXR(-mae)||q2a)8?dTh`pAkINWO6Ml*BsLJjhoQgQ67hV8}4m-n7rOATpR`thjFYP*xPnc=!}cfDyxsf&}feciO) z<%-+7vJG1;UFZ68uiECeQ<~i#SpaSN&YG##7eJ9=$%V`U!j`FjuBj~8Yj_aJF5NLl z$qjmD1bYMTIa*?AE;L}TJ-qa`5>51VKN8fqOX4|byo#otIE{JpG;qk)z}8IauW;^L z47%vO7hM9?#J(@=___O}Pg>c3tCSf9)0c91*QS!+_aZ7oUjj<44J{Bq0;pX(Lr@wY zQ;!6xT!R(V);4kQ`(#6T1k@Ik*4prut)A;WgU{$TqO@0p09ZX)k30NlzV=6z@y`T( zFTgAR^JH;S^R-~aR^!~9q_vF<+tA<19us}w;vI3xLCx%k98<5u5o=G=uhfSvr!i5^iY`?=Y6s+0-z587 z5K0HGDc56;r~#o?^E2DIkgfHbfDVnrmvdV4`Ey~ZFmuFQXUf8xT5UfuH%#X#3V-}c z0qn2~g5aOV8xGXvSIET_D_i9E-*lvAFMFEfF?X3C-oc4C%ZjZj03VPyG^&kY9a1I5 zGJYY4&t*hq8-3!-G;hZt3k|w8mUq#*M6s)kK zKjNa3sPsg{c{gI*0XkA(o7b$zUmf@@JCJ6Z?FoW;=B`-K$hB^-+3cIOr+Y3(ufARC zAqr6%p+vp-ZeCF0k`Z#u1-&1$Sbhl7#lDge6Jqrxxf@V)640%ODy)OudF3i`S9Z?l zZ7=5O-S)1oFYJsQzq#fBT2l$gw=eq}VVfI?FNcAAkNJ1}fGlt4Xz|kc>3p3 zx3Ec|KW=t=fMiSXA6FV{l^r)_Epv*>xw(kpxxasD%1JRrR{lJWQhaK=s-_EdAMjfcm@?{+8ir*4Y_@8iJ zE;_*zU*UF`JGsGUbru}B>CFMu)h5~}-#p>}A&dFT2JY291>+GI|Fc7dgoge?^+^^J z%lyOQ{IexR$@2CGfqe(4yeXrKWBEOR-grNRw+n7cJ8#Xv?D_a`y1N}k2QN9>3i928UU&<+-#4%ls;EZNPrs_ z?vaMmNVw4Xx9xEBYIG{a6^ss}BV}Bc)K?&$n%tEJ(U$G8v}=+fpEC(d>&TQc9FEZ! zxFXx+qsHi->`1VDY^4+|CXE~<%vEhyWPw9hc_uh@@Fee2zWD17XOCkt`8dz8k&P|C zUewVwU*aS7NdQX%kqu8<|2q7(jbs+D9TH3~QJBOmHPpNa4PI1fDHeD3TW@60ZIgjfyy0D7h^qh-RZ)usqZpnsu)sQgKpz)@L#^LK^s9Wkws1~wf_=yl5 zQd%1|9bnIKbih5Ce1&S^&4q?W3C7015epbXj_;@~IhjM6`xnwLWcBxnCzgXSxOX3CLik?hYeEaDaAM1!9c7PSxuL=Fxfg$W21w(vyxfIKhNd&3xG$z2e^e~4 z@&wguILeLQ6<37EfS+B6&Lya3G;(84hIYqZdI1E{lp!L(VM~-Ks-y1VCT<+4G55C!H6E>(%U*7eSntK^ zS^>N~j?vW~9M0Kqt`#TkF6`GdNT^t!NGN51P949V(u zx@Q)P`oaY#K$l_jac#8p()ZZ&3;bO+5Wpv-suL9% z1n#xQipO=bynlXK-@%TCG=lJV@HMmQ2g}(p0Z%a$9K2{C4nGTC*imLOK@^2i&D_DZ z<>gFd-tA-u?}Qa)f|vus z>41UMxGBC(Uq#*Dk5GqnM`f27JT7#p6Aq(kZBtKz1G1XPT^=jsId16j`__g9n~a4+{bHN^3#?T= z47tKgsWMf+=uE4WAmDc%R@zjyA**1)X|@A<1Jiil%z;P~AAF={v@$NYBYlJAl2nt6 zza85TVVg6}*FE9{l`HSlT?W*+Q1lRO6^ zjf`x6E{&~e>#`Gi3mWHF*XL)XH8NIlN}grOmxA2jTfg65jsk38ydA!F$H4gX$X3*G zok)t1?BvLLV=M!h?JcDxG+6&+z-F&(i9orb_54*%KH(B=76|fPlBbfFT(PMO0v&e~ zbao4ErfVPRr_6nYmGG@ceZxZ2Z;EkPe(f;O{4fjBmYH>Ha6dn_KA(431#fHQa-@Y+ z{z*5R&B*kOLkS4Lnq#WzO1I9y$}~-;M2Vyk5y=fmG$Zs*JwSvc_jQD8J&C4@~Z1iBIV2N(O$*VI%!PiwBVfOAc4pt%%$yNO;J1n(8exSB22%+>)ldjyX%7 z!NUxy?|EkkYQ45jzeS+r%5U7?iurx26Py2tNV^sug#=h|%pDRS{F@8>VMB;y#?eV< zesgrbNq(3F)IT)#9;O5VQPT?#GjI3`y&uGck@Ir;Lth*^Jr)L`gDM(0{GYi9&_?W$ zI9hlx^fpYi4>%o@fSV*`>GE!1JH$bo-Mz41s(H~4+nDXZtKIa7Pz*^;a;`(ka}1r) zi3wFb-~g1%f9U*6)@N)y@UqlA@H$74AbJXS7tAFZmxeF%JoUq9p*xriUv>uXS)63Q1N#`$svMb7`KlN4mi11NW zMP)JxVR?SWea^lXO`?c_VsC~GXS5!wy;;aKPLZ^)-0uOkDkLa}VKRspkHM&32yW-d z!T`brGtL#q zdXCdi19RmEm5(@v#WmWw>uVm6lZ62`aTx7gvc@XLk8B%pu;2Mzb6cM*uY4SN$g;v9 z`0WwhkI0W>^K7{|Y1y9UHEm3fe~^}y8(^OJ(coNtz1qz80EI}g19a_UV>k{;k*==x z*53XB!Aq{1*|>Svj`-+p z#o5@t){Jw%iAq9be#2U{yxayqotrtay|lSlTC0j=^v35d3gbj^JX72d5_!| zs$>^W-Bln1d_)+i%LFXL@KE5Kc9XwfsSlMD2ck{lC)_!6@!1{Jrz5ifwx&eG62B+q z8d%Vgy|fEq(rVeUfGB|x$v=o%w{b}%3v$s_`eXad$%s7;*YDoQ4tG_`k5ED(`xAyE z5=1jc(R3MZ_HMs)*OTd6aVq1L0~G5LpB7YHBnU4Pb}4QJM)C_$S^_w%>WK3|+hC&V zvC=zhQ^tNE_zp4CGTX-EvFyYXHYaDMF?>}Od38sekg7=ToF*p%Tah$0zd%CRB1lnn z)XfC8hhGfN$VEwlqmSOJ55TuwuL#!t8#qlKF0ZtFp%DtZthD~w33}~c0DM^--(S)f z%LU`r$pD=NUQ65sp6bvB+P_5C`*mUc76@25%o+HcJ*Cf0A!#Yu3+(bK=NZQrW<`m) z-IBb=UXiKKcls+ZqIy<_pDpY?kwyD<&IOz}2->k#^ecVItxCcIHJ%E==Lb7S@yOxri_N4f{^p*DLtee&2mVyx32+ z)2s`-m*yR1#57?$Aj`FVtSMcmf01P6N3vkFjobfOvA%M1ye`H?UngUP5@q&f;~7|P ziZ6BIH*+CGa0m#MPDr{JiM!YA4UjPzmjnb!;-_=d0LvQ72ok%d0NR6PNy+;B;vL>G zS>QPErYhb3M@JTHJJslFXnoodJr!Nk1il)tjp9Fc^1rg>PCJ|k#4-SLk?{9I*xD;! zevt({q~gt3q3LZ&HOxx}Gf~NlE?*jgo+Nsp#iE?n_phKlEMLQ9VFftHe3hijS7nx( zr&!v4-n2(YMCzHNu&M`9hl3#kk>!!tKHo%~c?Am)O zdw8TaJWnVZ1A>{PmEtOI$y<~1PYa6^wyf!rfBFJkyV2&6^zzp`D#*^CY1D4=`So)u z1|4FwTa@cK5f9iN*5WYrO1+o)!NmR6M;V)nild%gn;0Yytfv{OQa;+&7ZGO$x(cs;x! zTfta^X;07_{co>tNZeR+SpCkww5qv^5w96%uzP^L+@GAu6t@d`7D}>kS2Fe>;9B8I4tUBl10(65qml=h*~W# zdy;As0ZJb)3nkPTCokIjbBK5JNCKu?eJp(N)u(4IOe0&Lynp!-(QFMS!g!AJMSTs) zG<{pAdy*ze=Ox$9Sm(~{E5Zpcybi0Z*%EP8MEP(e(enS`aUu9{hV0yGHOfwO(#r zRZ4jK@r@SNkAZxpom;fkMR8hBVEjXmYaG&jD(()g_YKWgQEOGPLBeCUmRg+IyD)F5 z9nhAd*Rk#$t}Cr`pf!<^J(zrHS9X}|Xs#z90LfzE4jeBqH?n zC&)8D(mZH~DW!MMWdPwh_8(gN{=Qhjg|&j3G#vLV%Mux9yRr8DD)62e=#6r3zF$ch zYE7Z&s0K{)slRZ3%D#njlglYbs;8*$1?0P_X19V9vIKjvdl&2POdPfy!`VsYZP2Iy zAb>STf;ogknf!Ef3J?e^{5CUCkdS7*c0mQ>GE0(^-7PSB!WzS!1!dQ;=?xvjSa^G6 z07!Laf=G?u_-kI(h~CWLgpG|`l9|;6igxgAVcu8D>01wiUf@wPj8|NZ@(Ng!fGPgu zy@yd3s7thdLtd53L)407=FFP6-?amheS5|@yBC6}tGtB{<^onw<9Wvfk8GfqLdUGi zz+eHb*vU>rvg>Ow=etJFJ7oQGe%4TVEki$qqF9d}68ZR9-?PG5kC8!+r>}*GCNG64 zEug~(4gEaQ(8GzHGoUzEyXxp504SMW-cWp43X`m3<)?}+v(t80SPGMJROY6FPH`Qe zpeMH@ANQnXI!#Ti?sV}?OAIJg;tiUWnTmaSnSG-cYeE-%7_B ztiR_@(8umz&NsBpK#g9h$FWcfDLo9)b0|tk$ro|rH;Wl zOV66nUw&Z7)#bD=J=A16Ic0k&nN=tpfflJ1GI`Q5kjjp#w6=SjYUbrxNFj&%`$Nn$ z^S3(|>*F&OKD)dhyzIjV`f=5&Uu*lk-ETKu8+M)gG=Sf~l6!&=0TKp;FJI0G|MRTr zZx9JaofY|>1O^3&RJFEWRl)L;o0*V4nVxZr*TupO+-3u7gjlF{`8H2W9sMv6Vqy?tNbeyZE9GtbupR=(PO`$t^fY^;T#&VSKL zFHiMYRvd(axKi=x5XZUp%N(%@l_?$ef&K@x_(UDpMxunpvQya>Kd^M9@AI9JMdn`mEgrSkR42h9$O*a`wEw4c^PA6jsk8imbd#9t)Th5$>%p(V zrLs!ND0x9HoT1+lzfz*9I~t4PCw3)CH`57>DbN(KPnR~l?Sx)oKjMK8)B9X_s!hTS z%vZvi`4#vXsVqAQuhUzv+G+d8Gp~JERTe`8_zS)7z zMt&!GP#XmU%M5Z17}0o*P>_S$cZ&*}bMHU+uu+pW_! z6d>Its9FD%?J&Z<7T&OB3$Qg2+dWw|$6g9Sv$K6f0RPHP2M0t%T{(8nIg@mm$Md95 zsu?U>DcURj;zom@nG%qpp-j%5<}UjTe5U~P18h{{1urc2JG(H7% zFsdX^AURqG5(J*PLm@7dIzey zZ>lum8KWn1H?;rh z9Q&`yfTt4qNh9kzqkg(;02} z+;$)v)|`wsnw55GkFMPT;S8Q|qg0Fah_kfEYc^fptcvVX`7#Z;C(u{~C~yWN|74nD zAG;l93=5DK#T!KD8)b6(Nd!Xm0Oja&N?_h)y+$q6eQ8d$*D7i2$PfsO<0{`myI(HY z@&IE*(MsE?&AlqA5-Fk#9lC|nQ*vk+jYGrx9-+wnnJBjIu47d(%DEV;{L4{>CfP#1 zR(jMCfjTvS-cI=;?;IMRPlC2-N;E3>GSy9$;|{8R6v3YShpejjVR z(t*iDM>+3|rygUdAi3^j%(Vb%Ed98stUi9y#xzF1p8HFaj;cw_<9^1ujavC$IV{$0 zJ_N9~_~~v9H}sg~ldp_0e)+~LP5?2&pEbUB zp)Tpv*|0Fg9NMRl?V(KdhX&#X-`Q$zwS9m)f0HcJlc+u?N0RP3Q3aFNoYB+}yRshI zZ_PA|J!CDT?4GyfIu9|=)l$2CCy_4YPs1y35 zK>|!_CKZjRz&}&iLK8H$70x!ss6|ICFtex-;r)C4;+*w-grX4}!AJ4A3DY>T7e)Y& zU=Cuq=`_xuD#yTu-n%==@7g49600d0#Fm7|1mvAxJA;kk`6j2jsD#M@n49sGI1((M zk!@O|25tT&NZ;k$G$zC@axp;SD-A(!4RPh;F8Hho%NF=ar0z_ZMdP@xV}peq1O0ox zCcD!KBjY1e1N=6=;cE;Sr%j3*gfsvG+iWy3%|dO%r;{v33azvm5Qp9%6tCbe;uY<6 zHfoqSzCt=|s(zp41MkflrN)`O&%}FI(i1E%S*v^tRF2{602?1%(2(&LE7(iy9(}1f z6Vq4kD_y>JLYI2dIGm+-p^q4h=W>Wdgm2}@e@UOQPW@$_1MXh_wb$$jVcvV+eGZ9; z|BI>quNk4M@z0EqRQ|_F%JUsAqFe+6`4NKoyR<_$#2P6H4hariPdWAq6PA}l;qTGz zn?D3|;ZRX}T*?I&d>UT&2mQ7Ch>DwJf~aW9^S64PZ@!lWKR!G@z`6w2n2-!CZu46W zv}eN2%XzPJ`aD`(>@Qi7jG!mOAdn}&Cq(L}q$VVCD2xK8p2WTAE8~+#B!OD|#@^@c zXe`ZQV_+;ihP2vQMoSo)voxuO(B$csnux%AJjfH7Z_{0hQB1;2JGg9Qw&cps&D6)B zgd0u@eCa)wp87X$%_i4!x^rI@*{N~bxLBJVi+kZl8R^jkXQg9F@!>kRf{_z!RNEyh z16bixoNfSDgCVbQMwNtmAJIeBL#*iC&B{c-c;9Om&sm?{*Vf`i8i+xHGx9#WVQ#+~<%kxyrpC6;FACcp^19+)9f@dBXrN^TH*a^ySf?nfKqqegG4$ z76q7Qp6&n3u=LKr0Y^jonZ`L4GRHbm*Evc0t`q0nqjo(vWzgd&eL5MO5Nk(5$tSPm zU%ykB(f*N*psog{0^SCbT{F~G6>5!D#PdzKD~03$MI2JSI-Em5q6m@>@8LuD4)5vF zEbzD$WapS0VIg})uay|`Jv*kOjjRtVH3VRnuY4-K#OHX=G&(UzrSYp6JMGBl>pKRn znm7|JNwVmw{N0~6l8Srx@0-VJ!grcy>`%Nl30=e!a%UpjE zj!p4=LS>elYJZV}DP5FZogmWZQZ8X=T}ziYoHMY#<(Q^lolh{ey*?L|j`8VBxiRSO zzA9D!7Wa^mR$QK~4a?+#hG)X`)&N_l^Z)(;4l6bW&z(^J2FV`Z=Sr*iPit(}zbg&!-+?EQs=CUk=4gH!WK~sd;GgB| zigmekA~>Q}5OV=wGfQ6*6-bsU$vtr~l4RG`iLA6wBUsxnMH#(jk41}EK^fEyke22= zZiVXa=pVwXw{}0lWwBUlU;NS!efSUe&PD-#AE-YW323gE>v($fIFx$6n=85ZOiQo; z6#3lmsG*tI7*0mLmgdT3Je>R#^K~HR;bgTNl|4si4rRL)&Ka=e1~pl*D-E2ZewSr|!GJ-9Hw>zr) z7MO)Q4GuM)+F><%p3t$JV=i1YoBd(%f4G9=Ad0Z%F2E*oa>8@?Np+&2j>DG#RE6%k z(KY*^Q*I!t7WZSQi3^{73#8zXBQ!tE1QXsm`p`8+j|#lg@Kkxf`vcy7v#14`b*hWG zNqIL0+v6eO|HaNJ=8AAoMXHN6>y3{s3> zrZTaafIZAsOEu}Kho=>ua(9#!jL0d7<(8cBhAW~?GUv74h0|S~-5|$Cca(9`8GM1G z32Jftj2{+j&2NR>E)_Eq$&Vmkzl)WYh_tjP=~Efo0tS$gYamQA)5ZYUf%_9jW_l9$ zX?TP?q)tciTzq+vXYD#Q-U8cCXgmJDRbTvqZ&mKN&0sR?E080%59U zb5;6Gzj#1;WjZ+9BB(xko+g&>?W=9AH5U)=`^%B+S#6H{QiHhdw3~Cd@Tt6aKN4-|DBIHH$&KO0*Hr67NaSM3&t z{%#F_sF^XTjPl*r#_{6OnxMx&Op_r66T4LwU^tL|F4Jtdb~ zDut)!&G{p??YaKu8D&3lJwBZMq#!Ip(H0-^nOvvx=A2?^7Zgm5lehWr*`eE_D9ZEG zR|Nl`t!@7fD`tS2raP`E#`_=B(sDO=H#{OsH&kI0Uas!BsBsOa-#!y*6PuZ&j%+jt)S&QDNXUsuZ`#MY;Xh*gaDhvx2d5mSQvj`vElL8<+;*XXpZj@<*o@9Uw%}PKn<#KRiv0b{ zDLQ$v(p5#HrC6se$hsnOwu-#~k=H+m*a9*nZ!ImZN1#3WDKVgF(jtYz#pB2!oPklq zAH{1cJw>85_RTb>mEiPR9s3YTe1wB*qTds3ZT)Xw_JtDo?}F4ik<`QA0hkQ4`S2iE z2Vy`sv(Eao&ML7{{P6?&!f;pr5}EO?4|)8#lTH9M^HMIAg4Y3k{2bEr1vPEC4;i|R z7~>$u9kSP3OPQG&6`(tBUR%6>nQ=EHH%lTNt%$ESR)>6Y6-x`B-`G6k8B4qdl&4)0 zQhR~c)Tvu!JF3d`Ym~d9izp`O6)h24Z4y9ejeOk_G?0MTD@6JehqNUI&mAJz&7qG; zYFqaEd*S$ZU~ND`q)PpIL@C!hMcEVT00C)EctNML4r!u~776izF`grt2m!sj25W80 zBJ1C8_?7z-Mr}h}B%dNNEOof}^ZqE28ej_aeV93MK8#y;e07@PI7=V5QWaJzH5)*> zFT;XP%Y^*PZ_@UFH<+0wnE}`MFe?@kbZi7nP2ftCz&@o$14aAak;__BaTk#f3fvW(UpW|j&7E;EWJJ7U@XDrh``uw*t8t3Q4 z;s@|&H_bj&Xi^#`=8n;Ad6ONo+fkEe{61Ddo6TdSKUQ}rw|VzWeIssJZjZCz1%B)B zO=-J2M=`C#Wq#GLCkn4#woUxJG2VT>u}!$VoOqn%VMf9A;~69esTWYjr@fGNx?T*T zM-Xju{7;lup2dmM&=MP7PA_t=>&9%=pf@mT14ycg)kwY12(|bezEEmtOF{j#3`ors z*Vg_4vz|e2haY4fH$SNr`$-zMc>L?22*{{oR@5Fj|66q`PLf>k%o@8eVP0pGD`vm+ zSW*l_@TVWz=dc{U_S~PVnk|vns=q0|c?)#ZDaL>6`M6>*3PT!z(A3Ct!UpVNe|3P1 zuk7i(!JLa$NUNYuQc8ddtvD8d3XKwilBo}fv^io0U_VcY3_PSjPIF_ zdOkgR_2^x+FsFBWGlvj~3}6iy4D_L^;xE+9i!?oQ>htrj>iL5N{W2*n2xcnCw3Sn?>OT z$$L+Mq0W<3meA#M54vk_)^Q@>pd44s#W{k%Zv@XPvZ^eI8hvzCjoR+S#Z8V@fT5#Z zz7vUYf&N*GFSxFl99AZeoXR(%t@tV-!LQ%%gt|J>k4hpxwFDC%1Z{(g9wVn;{qB2h zP1w{%Ab4$obE{-=^JrohPy|BsNU@2l

fHgjwAj7?Vf}mUMVGSqPYlN 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

2M@M>j03#GlM6tFG)(VyH&<#Vujc!Dq%v$BGp3l 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

~f`iNN6=Z^UVk1qJ>-7@21 zD5K~8&l+bS{3i0l4bdsNiYy-o$3U+ugiCrexws$D&kSUMN<@~TyReAkjex+zS|hf& zk6U`185$dD@1H*Wr#*IHZbzC8-{)oBMYYNYX1nSKc(N*Y0AE|xY!ny zI=*9X!{4`^a9OIlYj$YoCHb6OO>A^&@rXc)Wy>!a8P6Glp}RX)-2fmmyKJM4qNAP7 z85{wIGWTGMx`P|MA%vnl#ZF~tRCSIX6XANpcFDXMn`mnnJ!qIDZH4-|WS*u3-|o2Ncht=Xr9kiDs7nB?MkTW&fj!%ym*nT!y@~Oeqq`~7g*!`s zP#SbTf_mjW+I|it*hnF2Px`_8B6VYcuwhd6HpjQsFRd!(&41mMO5HV3s+a31fgK=9 zu?nl8soBkCj+#nhzhe0^_gx$!z=Hsf5U+8!v-86K1SdzN4PHM3c5-lE2cz&M3#foG zR(Ey?*?Us(LsagVfQ62wn&10evdWWRJb)r2)N^PKd+h`;k*P?GQP z@Qqximsx(Nk2QcK!n#6vQknu90s_leI%9?%iMYW^+#veNl~whjDwsx`j9}GRZm*SV zvJyDf3hD_m=v*?xVhs?nEvuRVc#6DZwYGH7#7T)3HQ^wZ5Z~-_0+wqmemX;=scJ=P z7aHf>>*iC#2qD;SYh7D%y8MBS@wdvc4aRnq z!p{0BVOdVYDF{uH4j~)f`&zg%B}y2cHc~paBq#KE%k#7$C3VA=nB@x?b`QosSB}eS z^MV9XAz+|WW-9iN8F52?mD*(5`u~=Vwn=h{?n-W(ylj%T2yyyWqZ4hHiyXzO;vU#4 zwCfV2LXgQiKznM2v#Soo`6gOnv&|z9P-$~&l{iQOqbxqeMTK_UPbAfpQlhou?5?L^ z33q1q89S&bYQ>0KW0g!3hQdW6jW(%}5p+*gIlje|aQc0&qm;M5B(nq4uSf(H1;ZiH zkA;ndW5&gTsDQ@imx0q2rQPmFFoo7solg9KiJ-@AVst{{LV6C&w!B`vb`TCVLhCO6g2 z0pDL4XJ_!J))|c^$102JYS=8xlr)8(z|J@vDcWWa--URA5=T{Z7iqxi&D$Mif5k00 ztIZZpvi!n}yBQ92n>>6Y>8l&8DaEROP)^G3qb8L<+TM61LcN%B;qMv|2)P)1P$ZHp z{#z(Q_#K(;k0tg!lTPR3o%GEsq3MggGT3G)G0N3jViC5O$)n&aipx#s3DwCBOGEW$ zrskDz2=Qmeo?U`vVxsA0tV2Gr$s$EDH>S~K%4-vgxnJB}k-nDei0=0e`{$Qvy`vax_q92w zr1$^oh#N6L14BS&9*de($m4=ixYY5+D9WkREU$cSm|lQl%la^O6PpaLVZH~~HV&KT z82D~Ky?kIbgqMhSeDNx`cFY*Yt!iVHKVXvL+C)Q;_z|PO1~gv`UUE^upG~<5#NOt- z%pemGo?o0h|BmYmZ^6}oT!fKLQ8SME3%(YqWO99OigPK|%9kT#%ivMBP%(ONVWcv$ zPSYj>h~>8ff_@}N1#)%RrAPN%4nLw>EdlhrjDRYmPZtQCs#ygJ=%>L$dc>|_4Dt}^|l(M?o&N!d!SY_1{9(BHkYHFA;kHO(*NBNs28!zl{jLs~^&cMV1B zVGi6R|1gMHR1A?yvq-Z;MF(AGOB61LPp93yDOFdA_FnX12O0gn63>WXZ*Fc`cF%g0 zCrgfkW{ux>*ojoJfqD^6h`S}?nK1^;f-wBHphV(lQ`2F%An~~2T|5AJMeNh9XviVt z{X`}DyXp^lq#r*>_Av++f^Mx)wPs01J%NFv_x}0-mSQN(l5Mj61S2U10Mp$ZxojZh z+w5$1-KYpjs$y23a2M z&&``GQ$oyZx8S#&0X^l!-<2M7Z)*mpN;?hwMQFAv^xqKuoptkJRESy`A!5)&)Vp2< zM*Tj!pbBBhqVFtAijEq6M*r`E4_;Vn&9UEJk1{AKW!q2Ws+Jc@h{fXxA)N% zv(4|ml)^RUJ?&I@QeQol_q51Xa}=I;vct_u0NLp>q0%ZYBE-l@%r>H#0(vNh&K zjvCC$rSJ{BQg<)C7RR<0#Ibyg*U)TGkpj$`p7T#Vk<$NLKb( zm`#QxP6JKV^sAc_u#>YeR|d-S5%!mqq>d{uwc_38KEx<(?CL6S@3>kx(p5z)$ruv? z<7UerK)ad%*^r0#o2U;Cu@Rz!y69Y-%6G#2yM!6d`)3U8 zmOg1t!^aT3(#Yow-Ih*&K!h2{rw(u&FzhV;0FimVCAK`GoRVOK3|iU0vpIydwZA^} zzI-8>(GzGrv;nKCCglR|(w#B9;M6+Rz6zq7VfwK4k%rl0L;w%HDD^U0bHJg^ziJ~| z9j2AGF3o##`#CLEH*9~?S2h#Q22X|iUE8f~YE1ZfH?w665i`FPelr7V#t%-MMiJ{Pc)fjDAG2z zbq!u7o6H-A>IPv%?d=;o=hYjHT<|rl+jmf%qkd}=P!Q*U?JTIyHNOYlpojV9m?>3a z293Ksr%RA3a^Ee z?=5Du)5a8}yInFt_OjOrzb%~0k__pN{ZEht#5)f$eeH4ESLoNbeSsDYioY2>z)ga# zp|k|iULCA9ZVZMYgFoz{ubBjD48i>ogItxF``crqdFHeP5m>vmrs=|ha!7;HAcamG z=m&P_WMD#ndy&0H3r;BFJV7!h?;o2BKbLuxcm6%t!Kr1uRQ1dph>1y!OuGPG?w)n1 zK_+yaUl0?R8any`nn-}}J}hj#t&KNB_y>O9P)h+KzqsvM{(5&rce_mc ztm#tduweh`@rFpj)nLyejtI(1j;TvEgVa$6IRhhYOZ@TIr#9yE!nK)pFtbF3U_sga zS&76WR8Yw{t!q8MJ2s}6Y$YLTil=YftNfSoH7xX9I{cfUmbL~HaF(!OO-$2Qvt*T@ z8s=2qqhJs*nfh!!|1#;@I+^IhkN(|ZP1CD7vpw*z?%s>?=S-gBk$lQbU`O$Bd)GYW z008;mkH$PCs+C$IsXMqOUJgjPrEdG87pVf@`2jCf=>GISzXlfbUcPmHLN^SjM{Ne0@;@TBS{(RV=nbx9+8u`+T#L}$ zYhuq?8SG`g2;KpTw*PXkc(DV;>>S(>^(=bG@347v_a9gz0L|(9v90fL8iH&8d<&?sZrLelez~Nb>(^Raz635eUx4J# zJTARnJ`FEstke7GN4gg|gXlNF^BMK!!M$>TKJu>YJy*=?y!)&`IR2SizHK-3MZqvK;d|HmmEx=aE~!Cae-AIAe7_z+_fYAsW@rBu zACb!|x*q9jP*Oh3ba)C#(1AB5JX8UV{_4dravRH~Q=MS=A)FK5YLF8Iv9o3$>rR~< z@c`-`c)60iV(^vd^hi#>;ba<+rW)h`Y&_eCFv22{$4bU28ZnH zoLV%7cc!&%f(0j=fouG8i#JLybgw!v(cKM=AuLW{;SDV*=L$uHvV+>le}na7ax%?KzTpPOrTW!d-hPknA8+S z7)2mm{0+&e7ut0;-<{W~Uj*-!(KOD|MT$e`%GZB#ai$!E|1<5OxFacQVdegu_UIN^ zodS~4)1qjAMD&ci0~$N~4KlcdZZdW;=^y)dCF0`7Y4@uTTT)GLw0YsXxePtB{!I=3 zA0DV&ZifEQ2ji1zUcPR2DgxnJ+SFyEiA3jd_-TTEjQ)2;^RRW%ghbtQG7iuQK@V}T zr|j)ruVu;>oz&Em-4mUl+5(P0YIF?@$e)QO_B{GP{!PLhc$7QOE|qs_cx$~uj`yF2 zCzv^8#8-d5S6%-;BkbX?1cPs!5_EEo)TECZ+f?p#>5`7JbFUbqN%5J&gM3#b_VIp& z1gYzA&m;R7yX1B6I843urlStqxSIy8{q#V0vtM=^$cK7``bQOM)Pp!X|IgQl`;VjK zf6sc}qKB&AF+gr)mr~1o!r_*L5(NxXtvsT{nn|^!}o0vF|_yO zFMG$8uTqMJvL0_8;T*!GN0@=tBa*kQFhaH*TmPHB2D5Mgv!CTxlSjqzPaFzD@7J^x z2F$s2JfO-Pk6Ed7YI!~~Z8Fup^nlm$()@}T)+qPj$YH0v;!Wl&7p`2Y+P88HOpf6K z$Vr9#atjB?&1R1Iu%Su+>vA8LE@unxOzi>J1>M%_uZHraorg1&+I<@c__kp0Z<1fM zFO6Uy06|NQ>O;R*#>zJE0zNvu=I9~TY4Xh2j0WsFYkn?4CCi{mh%ji;_?s#gcV4^f(9cuyk;vkz za3Fw%J$M%r?w7qEnM$L~u!=0drMy|nHttUHH-UKrV;a31$)cW@C*$xnxi2rM7_m8H zTrgvkF1T`_MGW1HJt3zeT54m0b3onXUrQPv&$XTKa&YN5iL z^c0^+m@!-iL1fgiqhWa`YIA2MIIYTaRltSX`1*2OZF?ax@3wLuFunjH*zh$im8XCx z3eU2v!$hFmlnt!IcR9l!LLXy=M;yg{TI0YfrN{yDeAkOM3w9%0g6r*2`0gyg=y7W+Llj%$_S%rSsBHHjs( zVWBlyRf0>$z@oaJJ2M3^UE5GEM-AMieT~8!Z!F?2JiK%i9v611YG(cED0Pd6h262v zf$2Jkn2b<4K@KJ63JJBYxlt58iXDYpF6T2oa&J#`lv^PIRUiarS*B0+wnRF;F|J-EeJZ%rpByOz-`4og#--g_tQmtzvIZDjpaF5B3UG z18~kdjCHe{#+c~*)}XwYZrC8k!s$EbP@FX3Anv0QdGus$x2iT=iC#2J{;p)1KaIyS zlvpL^XtsWyk-C!9L~TRtE1o4gZh17zK3!_cV^fTA7L+CXa_Nx)a!AZGi))TBm{2XVE+kJ7n{;<7HymZxs0mu&e_djPV?OF|)2ru?z(EdXiRkxbB_|-1e~+cZ`z>Ws63Y#OL%c zd)^ds{H^jDRV~!*-T!s4zfbpVruY&Hw!K|OL3e|)&I|qhm;%>$(=P$eL%Z6D4ma;@ zLfpL`u74S(j^)_x=dr7(+FsYVIi~^zOfO~QctuVmOlyT6N=g{8$Ao>(Da?=@{rN)- zMh`Vu!0wXybO>Ta*oQ0RW5(Pg^8_Tufz~q%-uE?gh<}x#bb7GS6`3?D>Ki4+wSDBzsavTG~|I*LoTw?xnj~cCZ z;`9lS``Gw4S`4zZ$}{}&Q;USQO8P1oQS@kDKV3*!I}*8bW1VWv)^&bE7XDF8^c`$? zIZBT=rhq)A5YsgEDzd`@HjWQ$e#5Z4=99Sb7LrZm|P40{CL{Q?v02VVrzjdqkUX`n;B6N zQ?q+`RC$|1=w=|4OrVFvEV*VD_9!}k!Y8wA^6fXXsOhlG+HEY`soeS?6Zaqrp7V7* zB*KG(dDzfQlv)f{BMUoqqM%jC`nZ}@!(0|dL$a~?G*?J%agbH{UAyD*KJdZ$K3=?& z=CqSi9@a=uiJ%1i6Q6pR&k&WrAYIJp-0wgMdErrPbYelRo}hGhW=ikmG)LLs{{u!S z95IK@_)m#&c1S2r^CsEreoP1`Piq*5v6ZRF;ACPo->G zgEZ{IK67?n#aq@Nr2JD?U$c!5X(YajCz0Kt_x(z!S7{ECPhCSBod8x1?0GLY!vF1? zcNgoQ{cusVi7h}@(NpZN^D$T@Y7*P|_C+;{J4sO+^ED0U`Kl7?IO?(ZZtRLc4kaI8 z&S~Df>vonu5rXwCQz<+`Lv_Biar8wH!3xK4#R*wC1~rP+ys$_H6`zn!+U4+2Jbjnq zXX_r-)tVP4Cue@9Og3;9FjV_CmE|8{q3BOLH_R;uV)tmIsEi=UG2*i4?PwBAE01pY#bfn=rVAS$Fci!K(-X5u_Th^j7`hGB9m=2_XD}svf{NNW0Q7`XNUZQp{IYm!JI!nFQ7hWO#dRx%^@>cNP|e&4`iv$+|cRzO$oFnZuCj9Sf&( zcf;dQKD{*AJ|{p274P}EVG(YZVI?0j_toYiUUS%KWpT2|!Kb-CYYe+h#pMhv4XJ){ zmd-$Fgj0Qti&<#^JEL-NeF6dTjtv@x4^C;~5o};nQ`rUGn}T_MNw63RqGEi^T-V${ zyD5?`q~740I(UZb^Yo|~;`l>d(kAlP`uaCmRJbfL3Lc=jER8i0sSxygYs}*WovW#) zUg?V$pUxn;(UpRm6J~h!IbC~+`sJwe3#bdgAD2xR)7bqLK2vzHO>2v7wi-H77zv3%f%-q55||6w?rsl zw_=*r1)`;g*IXfX_3O1t-7nkYcI(4*&tLdK!*X(nwAfHHCkN>G`0f2zj&*V;A3=lf z%%g&{uh^sNGBGI1-SK3?R>XQa7}Qwm{*{;fdqq)O-LqbjwlRZ zZ=_89N-?ALV~?thBE#CP|D1}E4Tmhr99He^LJj)H~8)6>~Y;jjQ z5To>H(mtC%wWC}!KAL|Rqr8$*LZyc1k=E^fM0Hpthy#=K_x z9aE)59rx9ufgymTS%n5hf;OKF81^esOcj9)BLLZmPNj2dJ5sU$RB0OK?NmThiQicY zUq6~oSzY5Oo$xXR8X!6nISBh243mqW0n%ZhkAm}%aTR8+ta9!#t+(aQh$*I44=&so zBxW$j?3axo{U9b}GVg%S_-YC3;>goIf?@DZ{0(NMoy7(j z|a&~c!XT>C#iIXHXwijCsDE7GHj!~&l6eax#bae2(U0_&?B9<${)WhSojKCqn6JC z`8rc01CTAGIy(WRIz9Oj>`bUuNgI_}r<$kL3Uh-|10DH0tgH(ds4up_EG6{kF6Jtdbo~K(e zN@4!{4}`)^#%fapVGWC{wdPvP$}SksWdt*vb&kQ8agGK9=*!V@_&M&+h){cc)sQ@s z3fpF);)pv|&hf!70+is)K+;Dwqo3Fu3Cp)iUvlOH*PV|uJeAoYwlV69tTK=xXcQIA z*WBdc)Kye|EE)#@(}Sd>w|pP_P`P!$v;xoZk|9#xH=YlD(d=eCS2hTHQL4I)zW8c& zM*u_PMxN2vEp{i(xZ(=ldUap!c$Ie9c&?gQDD5r;QpCwb<2CVNdF;sl4Dp^k*|9Wz zd%?J13C!dG1Ey~NFjQWFiHc>>UHzGDn`!(?bd}q3HZ6>x}>++x2P5# zO397_BG$&&-7>FISae9gzNdYV z)sYuOPYu~^WQS8Xvvfws*$})E)tr$iZ5$R5im;lFh+d)h32&i9WL9_}duYA2M#MS< z7KV+tJsb^_%T^+O{rHz#@VLyT_T`gcX8Fkh`Omxf=$wBl12X^GsTv&_3`|q{v~z?8d4SEguo#7$O0r1i?iBV zo8ZgQ36vJ}%kvPypU)35H7$TBLydFATwt|M3wMC?WcT3n72;%D8U$#vOahd&p23By zcq@59S?ogj*C@IO^h50A)+eS*(5VN!$m!lEMK#H;j2U_S2JpjlD|6G=?%cDDjO;D? zk>-`gk3qEY<0G9mdyL@JhF&hpZVznhO4vrtK%7Vugbsw|5fWh%Qxg$>94#)41xYIo zasGfgt^V0BOjRxf(c6M5Mi9er*2bl3Chp2YoT5O|6tsI5MiZDmNezohoCRy$CFy8< ztTcOf>>|lL48_>~T5(wzHtDe0Ye@=u0=n54YCZ=HosBRgxHiD1%yEL}(rxkZ%*S_s z;60V8ONw*RkM?_XcN7C_^;#RP6elt+*B?dJ#=+w#O1p6bLVK>X<{8xH#9U!We3iKg z27A`(>&~KTDCQUx+wGmEyaB5ej@%6rd=ec;ERY@MMRW%#yAFJUKeV){G;HBq6wgG_ zxMevD-a+roW_(WN=*QREJfxi)=eZNW9A!L{-zGct-E$Izhi8aIE<4-x_ z3wI*;!C4l1eJDP}wz2ELM$Qx`MqBk;kS{V2&J*X`+lc}}sD0`J0Aiq4_$-=16j|_= zEN{EbLwe3eGh{|4M&LF<%|aS`pvNOUl!x7|O4>Ha;j1_%pM2;dFm@zvfJLg99Jmfq zT~QS3)OY)s%GZ3oJIRRj!JnY{)E;UA_=Z zA1GKuTueLh%&o?obX~8!NLgm1|+tQi9xrKf}P%KJNz81xTPB z5_VlW1z%=K7yh>HM(7X|8f&SIAZiGRv~39?e?_!ef*~y=UdBO-5Ru_4rlXO(lnm0k8rpT3$8epP`Lx1Ktx_Kl%5m9l zBbQGuQTy*H8KKH9UPuH634sxlQ5qg4NI40epUCpysu+uG{PU5LQzzczOG?;MexIVO zsSf(&z4SO9Z_%R#obsuX(Zjt*q?})*mn8gzCCFhgAX-_TD{qH)fh+QFgzN zOr*71IvFHS7`2MjE*#|OXMcfj#S6904$0lI-v^)T>+f!HRlNHvHW8_7+imYJQN7}{ zM!iIzVLUZ+Znn6Gj(sucj6@!>%=-rQp)S1q5!!V3@mY6up z9U16SKHXTN3n8>|O(@-dJ^g<>po%<75dB9ydJy>9-c zl9%1JltK{8@bWl%=2$}{52+-CXeL{3Sb|~tg)#58cDHfJ)Zgi$k+<2{ zhbL^wT^a!fC`2?rR9|v{fS7TiaOmqHkz=Kh#Y}Gwe@jqnAp1*K<1VBKOK@K0a8!PA z4tfNVe!Y$yP+p4%^AHNboj;GG3A=-@x_<7DNfc2WwvaLB>Ib+ucltMQ4FgorXMfY| z$o;1Ej<;TIe8^CVNlY#Zcyrs5;+fhF2r1L!e-oyM@X(Dq-PW$|Rl_f%K}jQ`@*5QG3arIvWCpgFSrnmkyzvI)U1-iSPq=q*Ub zSaMuG%>NKCwQQ@~neSop;zNMElYu92yPG_b`d(QedPZc?S~M@)E?KYyhgb9LkmTpkAt zh5m%^kK)$I(L0|o9qKCh*}CGgQt)vyQG$DYb2}E6_5cf;@W-ivHfex`e4ZZ})8K%H zOmcS4KeD8P1naf_Q2t1ge9Qqj z^$4Qv4nJ75t26I#(Wq3MmSLqB9Xp4M)ga_|SYXhW>{mSjoVOilV4}nMsssj%{pjYz z`NS04&BSTVmR>hl>OfS;S7AL8m3|iyeg3P*5QV+{Wf4t713g8km;PGePVG&!`BoS3~WFle6R>ciPN3a~qebPjVL6b)I( z)WOQqA32_xLA4NfaVE7uwaDb)1*;-f&+mI z-M7S{6DRUwW5{j-6=U9S)bu3ms>*|Bzs4OZ4wMpMM`Mar$Hg^Np0 zPfDhw`MMfPX-r%w7RZH;7^3?Z&dfRMuCk#6@D^s;{!ou!lOY+&l-_=ZeQQR^h-f&;WnAD9zHo{3X53N0(-%jO-PzJ}UfM|}($ai9(Plf5I)D~(witZ1^7D;bfCT$Kloy$ftJRpGWFMH;$KsUb9Z4f&n zih7l$Z)bwnR=D~hM!%MxJyEW@FWsK0Y_FJjBrvxR=hi$K5rE**iEdIBE~+F+ z(Nb|l7N_@fA{EPxvd}bmTWx5@S{tdV1b4It$PP6v2WeDD#$3hZE<{Sp_T2ATSPFCE zGVQCCOaBZDJ9mWo&|Xwj!Q9?Fys6F{fnl0?NCj@ZvCn zvOZQnH}0HY)Md7d_SOSITg14v8ZDqM9q39LW z()0loOAMM40H43&IrpfgB0Oh1{dmWA79Wr1dKVGKtC4b%!$?V6=$IqD5{!8}gmMBakpR&LGFWC#qMt+hWH*G)9LV@b= z?gXls?-$l<8`dq1vU&=ZlEmyClDkSY(W!I8R2l4NRC$sKjTU)nSy>xdJ`>iauACXx z@l{QHDk>2|dHE!zkeHAR7SfQY1LCR*9^=Z2-u@RYSp04YlGGN@uv=zb7gO&K-3OUo z=WPesUQRnz&_v+&q#1^xJ%Hg~cfd-r(U2Cospe>X-eN!|CVE3YCuupVoiu<-+Jd*3 z#od@AzqDRG1(C79sY%ht&Zr^teDT&j%dl{u5yK>v%%Xh)!1fCRb8&5byQat&vA?k? zqP%dKWx_R<_}clGQWaKwR;@t@JZ0*rzLOV^)Q|U8{m?)IHNSnkDT=`QE}$#|m3hFN zA60lblA^jhFfkK5)!2aj30zoBxJgkFyQs19g;k1-;>6}G8sW3>EtEIz#3R-ejvMk6 zjBl140b-yE($|!9{VdpH*%|!+S*q5FuiCORmH{j|Zt40du2S*TCq|nzzTk-T#^mkHrm9Q@^Scx889G4k`56}aXvKj1 zI%eZ_Y%Fy17WmPPfW`K*+l}CcR1(@|foVf_!o{0TtMxpX9EEpFD_6b^o|tB5Bo4A} zhRolSy&RI@)pzm6kXSJC`O^Plc(fBdl0YQoSY4s=3QW|xUza7@%_m8SEa^VdR2P)m zS=m^dU$&gv{^{$Xk*}eCNl?k#tH@l5jlFqxh3J=iC`>w*0akcHbBxV{2Ef*>hh-6N zs5uY%1ib_JN;Is|78Qh+aMP*Q)b;cYe@y=cISMrylA&T0xz7d*dd~&RgVe@I7%3}^ z0uT<`ryHew(N($viH5;lw2p8_FiFf@|)(*zNN+24@SotLNWG);+e9qqT$X_d)R=??;egG zR6j?jns-F*;JSHqqs!?|nqX%E#{DrJxXJGqRi>!|)n>%}_!!eaxVUkokp@_i*86Mw zd^}w}rcb6q{CQ<0aayABnOso-stHn2)X(IZh^(n zDXMx3zpW=%kEPnao11SGem0l+^l{Sre03^xvuwXkk$LPhE1#7{zk1w~w0-tm#XESg zz-Y2M(aACC47PZYw;JW|C>R_KA2cS3%!$mUpmU9y!ch@^F?H{b&5Q^H#;ZXuAy&>C zMmRBDU~TuWN=rqN;IIn?g^WU5mp^LUItl>;-YE==R-_zib;^kM*o;0o3^wq?gJF%v zR(yP=L1A72cG2-OH+wc(ZY>bs3l~rEMkJ*M){??SZyXswJqfoFD@pM;KA^ls!ZLGP z0GiH58Y_W&I@O=`l-Rpar=%_&R*`X^WWFnLpi&4`(jxK@rD1l-Op|n+IV)W`L|P$Q z()yhvpFBD9@Vle=079{;L@C@ zkH_2DHb(iLp3&RG-lU?~^%^Xj@9z-ypq%SJoI-+SL6zymW0d3u7K6p^Dntxh)gl<& zz_|*pOL(ch$vA5+{6xuTbv1JBq{{pUW649#L`*gE=-$r6*nN&b9j^qHB{#(4>t5;d zwdi#PSzWu3^(R7I8mp%=7(uu=}=m~XYYK0n8rJA{d7A3GqxmYB_xS27wmOHp#GEtPX;663q9K=7$5 z@$f65xV`I5{4Mkz7}Z@D420T^6L}+*fBT%q?~`1Vfbl8bCI$&VZ0N@5g~uAam#n3mHDw z6Mtl!m>i!iX|w$f^b%z)zX+$pvp7~8mK>i6X|v-_nnMJlNQ=WWcccz4wXZcP5BJp$ z*I=5+#rEwuR$Er4`=XG}RCtaS<`w&F2lpFWWadctGGov{xL%BMXRvwNe0TGRDA!d; zumacBnnMKItb^RgCRxf~-~cgW&`|jISmjDC=W8jvBM>>TDGV?3@ulo<0fZM$T3OKt zMfvU4ZCSZ-(USoJJK^w8o-Z%1>?vKMw}9$O4Ga3W9-qe9a6Hd||ISFD0;cpg&ZtmGXfFho7i5EHJIV0qSH z@8C_&bBm}SolDSFFPHNW-~2OlvEOu_^4iuDwpxhzX12dQn&~&peglqi^6*brM$11o zGk*w64MSP7_(O_LJ%UyuZ-aaih|29iPdqK^8x_JM6NiOw(1guWZs9hQ`QTLzK~jSf z{uLz>FrCgSYR-iIC%zLrm_<+I9{+8g z)T0mWOE$cmml$1nNcy}@k;Xgd3|Twz%glYe)lS9SrnE8R0KW&#fF+hNaP<3gcOM{*{SdGft%-VUQ_>F&h?ysUpw92*VFiyXQSv} zUC*E(eLNDx=*&OLVNm;FBGC&3Xi!7VA;=63<7$S3> zo%preG?A-oG8@=Xv=$=r;YBp@Vf z(xIno>mD4Vj4 zGanvs=OJm+m2>TX5dP+0Stg{I18PhQD6-56FC4Em5(c^o!CRRIt%xh?um(Y|3q!Mp z2InV6icK(1bNboCqr*JA_R}*%y9E+ao=A*rd&-^`!9oWL`Sjz#X!+YRi{;x|{{?41 zS8)*{79xu4Zenc%zv<&~0@Fb$*4Mx-vHwx~@FxOC$F8_K3YJ4?uEmaN4;b)hgpQmI zqaXqh$%jG~UkqXJK@UQAweHAHl{#?P3#>81*O3h24MACevPV6{AsT>v;NF0Y-2{Ej z5Q^br4+q}%fh7Fcfkzd{8nQ;zan6K63XzVFg&`#qo}=RVrhAm~8$&1D_WejGI&9dt zZj+}9kJ~iTw>ARK#oHiSRIxC15`!{(`O{EZfS3BMHfTKq~`! z7k9PPC&SwaOs>$N!0|z*E1G4?G!xpQ&(0$U!C~P*m~&E0U)Drg6c~2Gpl1Zhg>D36 z^To?&BwLk8Oo}ensfrKn1_q7H1sZ7=r7D2;2g-Pb!M*fhA2&iM{ibA^C$Y6S3!1Ml z+74HSu3^RXQ~3 zw|k|yc0f-i$K@iM571I^V6DuVV2VW;EGSIW<8PpMeZWP+e6&`~@GU`uSGtytMmei6 zt>s8QDsm*N-_A+yh{=dlkgC_N+6`f|>W@5;Kh=2>>qf?S8TqW?Nw}P{L5tqI2u_p} zaaMEr;f+KNYepVxfB2k`UKsDB*yw#M$GMCdv;JzaQ*t@>ssRN}#K)H=L63tfAM)V6 zcYSu>tPbu_S$L9j7yAq377eGs1wqpCcjdzsxx`crSdB}hC)(Qak2L&$)V!PT!cn#p zEK`IVLK3y3>4lQ6+BBJ4w8XfdXG#IGlRjO4zRv#n$IGTDklOn(PL(G^_en<74!RkU z?N+zXQAjJ$iugA6a-3UJ!kmOL(Z!_1ppKU-b=cLJVS&$R75^fDl*HH2oL`~89&;Vu^ADjw2-}LpI3WS!=2H27N zo%$2Kn0KPB1B$BiLhnF|{`T-CJYR&K-T>2~{UM2jw|mQ{wjt(zGl5>Hx|w|$P{Z@V z`AGmqQ2Kn8S zao~v(fdp(M|AT0!Asi|?l&kIy#y1SEc-_+O@vY*s`OmMtD-@w`Dg60rVg}Y@F*3aL zI+z*A&q^d_APmC1G#CneCCI1rw_2hkq&*}To&-i446xXVPW0s3yW%iBu2_7~dM2zZ zE`5^-Y6}heiQbxg#yO)}yXr6quJfTnW1X1sz{Mp!GgtE62UA^<^wF!$i-zO^H6tks z#Q2xDwi9fNi$&0^!33Q9vi-`0B_2$Tf753j9r-*GOfLtZ&Q`__mllp=6JT{k^(_)L zPsJ1{sZfREp$V#@;$*0t@ZEu}IUP6@p2?uxgt8-|_f*OaCsuq%kJBB{9}4GuGhmJd zzL2Qr;E(dlC<&T%q7hwRE{T#Dpx9&3SS7le3&V0a9%_LO| z%$=*5HAP12e%hE}>-Ab^k?ZIYVV2hJ4hjL4=CkeNB61ENohr`X$^n)VWzHg0IXrjO z%-3<6P`UHSp*MY2&6IKj&68y^VEY#-{`Fe>Z=bDKM3@60O7+GLl51T0aJ+r=$N-~d zesr-(GlZhp(gO~+(Sq?$x@5e@MkO}Tqt^pPE!X$gOZu@jXtZJ}>_a!7&T1U_@Ce9F zxaFu3Kel8usChMvc z6Q<2fm=uYAAW@Xw(K=!M{UN(f;GZmLg^1YU?7I|3`|HM{g8~O8GAD;){S@gmXpjW6 z0)UtRm-lO-P?;~K2Z?3k5=bUOiAnP`PK|puElF3Wq&Tk%SpV}4o*-5&H|KFJ(FFkb z&l6oJ&0lW=(}zg#lMa5Sg)J43P=x1>R;vNX2H9kfl%a&LN!SW$egyFRca;4{gDR8D(NmFhu0{y8OCnzEVa{EuvajqX@Vq^dMwp&1>Q?wiDl^?{IG{r zKo>YB=%EQRWz>@<&qmUbga|6gx8sLjDKzn$NOPJ{W#e(KE*L1Lj0{Ix@>)A~MgEcS zIvAMU7Ze)~@ux3nIviYkG^i#VLb$TE$SU8tcj^FPk$x=_O&8Q7q2b-QQC53@J+!Cs!_n70QCP(m_2<;WULzt3Lg~S;5#~%2}2(W^7-+ddKQN& zXTK7v9_K4-JA%gy}2j`Lt#mm%Ql?>3!Ji1Fyi{tTd}$stF=PN zAI&@2_z8lw5ArJ(#R_Sr5hX5xF)>9=g5B6$YMEWO!iwR_4S{q+wUwl8q#~a!ef+59 z4_VV5)I$kNhX&1a z>iCD6mW{d{!=(J1KW;G>dGsk$4E(w>l zjfQc?TnyrPwM&olIv-hsf^`Y)Ws0#Lzg{t6W;(GUvy^)+i7#uV0s<9->)pRdjc`;Fyz`4qHiLh7EyTEs+)FYzh#1skERac+`zXni2uARKNrA%3u}<9ph2kA%`P-rZ43v57biJnkACp(_7@@ z5vL}T!5cnTly!kNbCEvHE4L}JnayL)k@5<7FlnJqr8+$h5aq!}C+VwUH%6bkb{L*R z^+*%pO5s102>H6E7nRGpWRKLunwv?>4XTqaT)vZy*CY|Tnu{08hNnZKW9Ix)(D!1i zhnn@da@|H67m2nsM+nt~{iI}({teB5)Ch&<6Xc;FesB89Q)jBLFkS2NVN?U>E3<0^ z9F}JE*)#|F&Lz%U+Iow>(RLb{v2~?}l66J=ySDI3z$&H%coQQWGg@b65U1kFo!-Pm z06;-3B|D;=Yfpq%(fj0k<#mEQS89UkoXm*$T;z5&v(lk(bUGx0X)wha0w;Q+7zVMR z8TuOph(Q(}+y_(M8#6mbTt)iq6J%5f37?>QDsNaHKIeS|4$N~!#8HM2?pj6M;Irfr zRd5dNu{_q2lM^vg3)PKvo`(uCQj}r^1Rw-TwfRoLo|a}@z3KR_R*I96*3leDgE>S7 zW4SYu>PN9)HMwPluwA39LhPJrd#H*MNBG2HG1VzL#}pbCtAu6nRI5waP56FoKEM`+ z7vk3-O_g(uDmqP*W2mk2&l?!k>Ui0C1zf@-4e7T7QpV3wdJIclQwr~Ky%AK9{PYO{k5&Aeg+|3Y9tO(bKf z8R9b;-fWv3Ah+b!PnWHdr9oPd6sTcl{f@G0)6r_kI)%SbiK&ySGMX9@J7WCLt~VE8 zN}x*9k&?19REG9b#3rW+0aX;wKO|jdoRMRg=XEjW-TNoRmu3jg@-~IFho<#8 z5O!vOocvlg$%-?FoMi@S5FoI{02(a11_mb;QkDQeebkOKQJ_l@o&z~>%GCLfePS*( zt*)K{aU@b;pwJLn6YuH}I8eB*u5G8PsR;~k>S9jr^!+3E^Ay$1!{e=kifa@7x3N!i z8aaxZ3+~$oNws2(QDr`^{UIuS*G?Wn;Dgg2VTnp+11;mc5ll)<2G@xxiDNc}`Qa=l zla!@7eT=XK1^!m)bp(Udt-PGS){>2F2XN83OZy9Yyh9@&wqXDbJfNrIw9`uBMPFd# z?!%^CU%D-{!KKJhTclYsTRS22jfQE`)t=bxucEf3>y~HJiaDxtT zo3LwQ>FEHP8lEz!kKmgsg+f_0-w{aWopghQ2$879OTp_npp7*sS*Gz; z`FB&VY=@_Ykr6K0%#*8%rb0!9jgdYiaJ}q3+z=Xi>y;>)gQJrWO(BqDL0y7Fup$>D zC!@wAUk=nTQQ~?usgbY7OHVpK0_Rf+E3egoq@|U89CQRG%WyKVS4b9r(l585a6O=v z$O(+#sh_dSnmHGuQo!J((V)Y*49sMwW{VUvh{QJH}xidocYO>pnH}Jc0V>5#kLdT>1(yhE__&F4M*80?v-Z4%u;&+1Pc%E^*HZ|4=xcvzok=H`*H=;%E5ASqWC= zaSc+|vVxJwM6wipyQo1oAU$FOwqVMda@s(>kgI?)mT0`)d*);gS8@#WIN#E1hTC)h zm$K%<=`B=jpaN5(Ma%4+mU!G}qDAY_7Pj3k^fIx74xA$u)tr2AL3ec&P9q4N0^~hde>aN+QO^ zasr7i)Z|cN9&Y-UEa%v9sjQrjBkQh}f+0&Q=pO42@;wr3p0}1|CJl=xqHL*`Cts50 zbEzmGbo99Kz%Y_(ErZqIr}+3)>d2OA%BCN=uCEfN2BgG5rJip04Ziqz4;@l>8FdHn zFyNU^Zm~h;dLg!`IJo43P(P=;&{-wkcXk4i~3kO{h!4h#*7g@E0tFu z)Q5JXCCN<$dob-VgsY1ZJ?;f@0>4|M2tPl60j|3A-r9rQSDz@=#siJF6W@==Q+@wv zo^rS+XlQistWuSqU9@;Ga>x&}FT=0W|E6A=)k;?Xl`Zk4HtcX&5jfdWE+>sI1$Ztz z&y8zPnD`^QJ=W%X8uDBo9IYvQ@xCJ@LOH$A^#JIwxnObdX(XyF_rbH^nm=hUJ@BFyfMk zG@xT3eP4AQ3EMX2NWvfur@vpMu^ORCY5c|%U&R#+`S=2+=Oxx7aHlEDmM|YP#)T&% z7VRcyuH0d0%~OUiTebCUB~2fId`H&={Z6z2b2|aM#RW76A=2t497wn^gJh-@s%N+* z3PkF3VVD%6BmVX#B89is-`Bz_b1Q!_M=2a%^jowlT;X2GKqGRZCTNa`8UemNerK*o zZ!(x?CKNk9kzlRSQyv?Pz)#Geg@SU^WSr4zSeq&mYuGuMyB>mQwyJcXhIL7^2!A0K z&Ipv7bCcHfvd^>u0%vg;`{2t-w~6reB;&$PLL(X;veAy(6F3aVG~SfyL8DEDx5oq@ zfPdaB0SWnu&P3&3OtKLmb&s{10mUr;dgd<;*x^ zw=yJIWn+j}AWF7Z$hibCOV4xK>SzG^Oe^WakV%L^>Oe!kSwk zAX;4X_h&sEyfW=isAQ<{K_VBBrjTg4rWdx{54@9mQ;~fp;aApCO{ZoClMNAxAc3sp zxbPv44Eb$N1th3N#~^D_3lTI9s4W59y&smte-FTDiu8zwU$uIPzUCJMUr*$Z5$3ho=^1u{>`EZ?Wkn59vwB&72( zk=|(|9Cy4NsOU-S*gt^y4V)jN&%we|@%BaUY?a}`6*oU9`(L}lXjp1Sf(6{Yu+l=q ztm-x})ZeBon%_);78CpV$r;zsxG|}HgHkrL&#^JSFys#5t5MKDKMdLy&q@9G{blDG z2k~Rt>50BX)ND@Mq<$i72SzNMJyRDgYIqxwi|jQy4nv`%^WI76s;HAiWeNyicn zS~OTU;Ww!$Yih7yLC8dpUb#?)xO%`lw3&$AXY*beIL0#pwYK6q#=5s_T<9|8Jq`x~ zY-d=Q9o?+ajv%vKmq?2?9g2M1#`c~@f~Pgm`kggEWAK0J?1v%_XfUB=J=}OsVlz4?@^8$A&P9F4Fs-AgPP^MgdXg+~Kxi z3t<=!)z)~x(c38ioP>E?ky(^Ze%v6|egr9IOa%>LiFMvU^R2KU9C1wS3&!|q`>=7} zkhHe1ncdj&ee8z50O{!@0R`?dx51*;3TwNiUuHflpK0y@vt3dnFX{M{cbak+YXpw? zycSl&rxEuI9wqvNNW?bre4(q&yp3EKKNhY%x#Sb@kW0ce&Jzj{ZCsG!dWx<0WQb6e zyEJ!D0K0z9$xS6^;fpof4H&Z$&^qfQt@UC%jlas{ajMb9#)VHORWqC5Ce%;j(Lu(7 z4A07RpNe$RSv$dD-)qO5l@R8I*u;&`a`MV%xh5DfaU-G!h+`8V#jrx> zd(8m_qR-`cHbcfMjMeJPt&_D+Sv&M7>8|>kGNd6un??HSHBR3Rk#2ObQi+l(HiZ;Rq z@L?uROKpb~!vy%s>VT5Z3OC}9D=zj@Kn7%7d4eUGO4UlTZaLB=Igq!JEIUZL@B%@^ z^L}tgRJ&p&xqv|QimC*v?U8YZsCA%@8-twfh`K;1mmPD03Z2&_WQ*Oolb0pDb0!IZ ztk3CzgiZx=1rS%Pgqb0XUv7D8M!a+hjpLbhUhJz!w$VntVCaJE66Hi~-v++CFgX)?6z-iG-LzbZG961{zmc&rNy>V4ey) zR+ccXpnfmn7_J&VJ}&YCLaNz}OV!)khBr58jjwI7u5DegvT(IJFJ>dEpel%bV8~mx z%!!{AQhE%ZkY3+B9RFmU82m(|A{*a8R1ht^*otwmEXe}ytiE$?Y(l?{qXE~ZLt)xV znZdKM99J=j;2+9l3o>9bxLGm+ElLYAB$51xxmJC#xqtxp)5qD!?M7fJtQLh|S3l&= z1|lQRQd#Ev_SWt~=KI5bF(m6($w6t!(}#(&uD!hfdS^0p=JQ!~p`cvVLtTu_>V+!X z;=5vN29#mc$MRkMWGz4W3vkt^|5+IRhaTmVd-woWUw6;0Yz=7ur0f=w_B?&Sl-%n1 zVzS^hMpso;l}!<}c5H{ur@yp91HDk3Bm`?` zU}(!nDseBhTS|qS0j@8W-w}5YUn_5Hp`}yPqHr7W{ov1Q@$!OF11dNW}6bn zJBpese_p6xV5=6#TOmcX6}M{kv0k&rdm=^jNet^DWqa*m%VtBgOblz18q`M3-0NZ6 zWJB~!4C|5_)JMe|G{D0GgB06PoTI6x=!rhD=qV zizI)y#qZYi-By-iNqpT!BF1n<;!=?cKENX0pTNg@ctHQ^=YSMyPz8Whp$irGfu_*p zYH)@9IM`asNAMB)m_z+Mo28GA+!|Z8arApC0&6m&)YK#i*F;L?hsh zWgh7J4O|fPD*?Q5ikwV+YnU;}L3zD83z_r&7Jyx?0ORNAE^<=13|m0_7ok8_lPBZ} zK7X?J1EkZ%9qi<688+YcTS%>L4#?~LmZTB^A@?E+h9oEBB+K(JYajSFvh?@(w9EAG z2`B$EyTgB_DE_DKz6oe<`D9x7r{iMEUyjZ5@6?57t((Pn)&ADwW%wNbw}j^!1(*+) zZwdY162dj9LWs0;P=2ym!hCp?h+6f6{CwX)&flp~0O4=p0ezS{gP6P4qzcIGeS?WA zBD2)-cUDX8eF(fF##)}>JKOr&jt*~sUhseZwe4+wJ0rRaJYK)LFg;(rQV_&^7w^1I z$_38M-%n@r?|g@x?=U@o|B=oAm0NTi&h6u$U35(K9XgvWTMq=E-8X3hPB{rV?w>QN z!g|Zz2s5s#x5rgho4WdQy85@e`u(gDKtAaJX7Bl?GVR<@AIDC?FFncT$QOb~RfDmo z;@?kRo4~2naNJ~55d<#`bd$e?|3YveB?U;J?x`t<1TtZr<4r`wC0Ppgi_(=&=jEiF zFwiTxqF~htheK@QEJWPDhr+&x7WYPAkO&rC+F7!}N1F*9S*wH5dHao-;Xl+lNz}Z(t`>l_Gd};h5?`dI^4)XSz8`0PpnTx$Nf9iWXIjgXS@fq z=zO$$eVmj#e?G-#2Gkr28N8ayZ1;HE0_vo(0tEwTcOf2kF@Hd`1sL1_tiS{VA=Y3C zcS%m5rEwsR`&9e=Zg>O2j)PtIAb)_=LDP6qt%2r=Ut;&G-zb9E%NxP`hID%I%m)S% z2jK4t_TS&Q-q02bWPl2@1jAE9A?r<*Ls$YT`*dRt`eYHfjR0=>*~U;7VThYE`2oM2 zvD(v|`P;Ld;mb`fzz9Zy^FwYS+T(7qyn=2q+gX^1WBy_W!{6ETcXlJ?&+>xG{gn4QiKyRlTg4WGChJC&hwetcQ5RQ-seC{ms$#;;L#*zDw?~e;uzv#7c zfs9MXdC;NzU zbBVpfDb@TSZ`yaHdp!xFd%hdUdzH1mZUhI*ZP0HE&_3@YTjqgxx@K0vFpHzK8+WV_ z&W6fe#A=2ZonIKAF(sk4+7fHinW2Ua**6>-Xkl8bgT^cNH=5P@K<4pR3g5Ixe6GQt zP@id!NbitYh<+EWQuXIX6kUY5vj*UAfAIHk?GR&{KI)SR!@JhXg1#Di;kQi<5w-?)9Vnto6b`%hGa#=Eo*MsvGx&EN*<#NmEs2lv+y za26%H!o4TC(!3KM18r`YW)N?TXY6mvvJIJOxu5%BXGCu-W*qmTv&;5Uv(x%Vvo&`C z*|P-!x{%A87EsX}kUK}UrfSY@eO(&*Ekm>fkWg1n(6Zc!|$LSy8Ve5mP4( zaz>Yu6rEtaD9m&3HWfzW1Qk~8vWs&LycTZkF^KnujTENs*@`;`)J1QHGGY2b5Q=|= zC}MnIE8O4j0+W4_^k$hL4e#)Gx!)zIj~q>IUMRhIci^yJ7}sWy`yqftxx<2l>o1xj zykEjzXkRQZ7+=rzDPOF`FOGu;|A>W@S-?l4c=tw!{dS3msRkH^KW@^7X>X((Kr^GH zrLgj#XBmG(9AO)R8`Av7{jJxHKCtg&EPLCer2dY30i^zf^Vd)rE2pCg15#InJ*PD@ zr&DAVl$b$1rE=}Iq6xm}N)!02xX`}zCS4B@|H?+*X7~qM)bW=VO8btip!@GilB}%9 z?F?;4@-U5eYog&DtY!J%9mI2)`?WX~17}Zb@&5ag*lNSn+Uu0m%(b=@9bDqn&a=ak z0<=oET%f+;&!1H-4>CuxCCH5oCGodvCB4`yslTU?e*K>A>U;n{nw`M8d}>sXD6X!n zslE_Ptg7xkjAq3&)U+t~u8*M?=(y<4U7TbzHqiBur)j%5YLz$V4Q2YZHQCX7@n^(m zLZE7#?yd5#XVAc}^8EBB110^hi2M>`nfk~QOgW%N&X4+3U(H?nBREp`YdDodPnelA z8m#yFD#`k2_nh7BAkh9nJ8G}$3Y{A{pSIoj!&Nu~TYs^eG>z!p>&I2t-{rlsHxzG4 zE}-}KcaQQL6K%@|Y64ofLLIq4=MI|dWf$93*hA&L+B>@FUdG;nQ=daY^TX6@i(bP| zqe0;4Vf-Q8grOr>MNq$QQ;@E*iZbJx()^rd3`adSk&wAiT$^>x}c&gxWj)u3QX8xU~c-X{Fq(ZH) zYJJZgyg~C_)%$qm`|E6FyE%T z^C(X{b;?vThsLY!Y~buq<>WtXHGM;U19#5zmP*a6(yDFi?wYfrJGEu(80aeD4}ReC zg@b~-YD1%rijPK1sfqogmaXk$OhmZ{hN0S}rJshMglPWj%7Sjywb7Q6pWyw!Gs*Mo zYX457+E?+~&ey?i;8F^!zpkq8Y=t#CpVH!nkHmBsmi_col%&mw_vq?WOWaa6WoOAz zchq*K?E06kt2|ZH(b2ZrwEg9FrXeuGU)NP}gP$Fl)a~e9Mj8RMM?gHvm6@DEGs=ZYX)mlI$PSq^K zMMI#vwdF_bX88Gam5$+;PeJkL z@PygNc{XsRchIo>D_>OQ%Nlsk`}pPX-VJ)kWNYNCf_PXc$f@>VXT?=pP-)z*zRWyd z?%0>bWPgL#=fafZspa!n;b^92DJA2UDUm&zSo0zy>yTFx%lE` zs`}5jsQfr-LV8QCsPrjNqPn%?HfCXc1pW>lpUF1cp&J;dJMTqz@D}Uo zX1MU;wH-Es+;wgDuIJ@`u!?!j(U4BXmWrh}uQqAz$W!b3+d8GUz`E19aeRAwUhKA& zWB4pAOTk!h)6Lr2ana8^E6abYtLU_%RgnFo;pU=Lkh45<+ZK)egUM0T)%y^Bx@GH_ zqiqQ|PhZJodsWrj;0-k07@gj@6P;F>_ntnxlFS;_E}1S}>Bfl_tG*s7_&{aIq6R5OyDb8Tkj?^se(_X1WN*0@+t?qrBE(rgsw{1^!Ry@YF(&=7f zZ*IR@P3P$l(*b)QagX3@fYnzHel6pK5%CyV@V7;|yE*|0uBSUYbc;c2$YZ5lwZKf9&r^J;}<#Z`7eIwHWGS+4fc( z$IP@WAGZo_e>EG%aE(A1Q?cQRi~%IR&jMO@d_ zaR4UEVytcaZ5ghbsMeDL;rhvgECG zsJm=$omsmr>NFZvoG=x!H&q^8Y)K{TWqS1NR%$Ie7@oN2-M0D^@{)Lr&57BU<%P%j zx-wJOUj&Xb{1dk1{^HER=hfj+JbQ0+wY^5>^=uyH!Q^*@>81ZPF6+9eR3NS@0`#R{ z7T;fA=%FCE8<4ek-oMJ&AIEOZ&t#qFo@{D+28}T|xeGAexPLbI`W?%%U(9H7kIZ;_ zEf?bBL5EHy!I6|Tt81yfV;f7a)`haSxa_UGI{^3MG6A9B%gP1SXHW&-@DugzM){LE z@ByXI;{ljw9pi2(QofdBlm1}t5x>LN9=b+qb2BOVg9t6=I-N1Qh zUE3zLZ<9LByY8Rm!ot!zF^a82QsG1P!iiS)!qO*Xu@B5H@r6e2#B3_Giq6(Zgp&B^ z0pNR^ILjwpVaI*|wRQ>3DyziydqC7>PNL{@(DKLar9M{x9o$?-fYd{`ZQX~arux>ge#?7eEyrGoe&Z`=CkAFDqx<{{qu;c>zUU>q ze%#YOqvvs!J_+N>K2Y;!M(p?(X`iHJmdO$x$kf9)bV}W6Zu-UL zRR?;?ChWu&#Gz;4gkKq%!7F))is_S^TJk>dt6mx%^w2v~7hd@EB#xLUk&xMAWL}iSi2LZ`)`X3UBSRNWw94KzyQgA#dCJ^3N z*BtW;Xun>3dU>=kr-UV!3XALD?bg;FFxSwP|*~2FHVm zAshvqpMtv{|eYhM&DNGz;c>6VwH9-*U!ikywiu7&k)JtjM6*!bH0;Q*K zBc%oaeS*E`YiDT>Ea|ga3P;s05`g^S8(NP2%&ZW5eB!s_S1u5kY-V5I+31( z`%r;?c-$j<$Z3Iv3XThsy;y+u)B>26y}DuR=)&01Bd; za1wSRro6ZW!`^dbLPK3y3RqE1DHVu~=&=N7hmVD~8iIogua?a$uflUS38MtI<~?Kw z0xoY*H(ezmv&FN67)UOQ_1j(X?#34FM!69tkLpJu!cExL5>5Zmn*7;>C6PyaY^MCD z(-g$L6`9JV*~jZl1eq|$Rsuqgp{PzRvaAZgz-48W?jci%@o*S&-MGYjt;4D795d> zy+OK}_{HTNxxrmJZ}YMFxXUYuWqHe}83zYA*pX|}AmAmg7Fs{D$-h}3pb9fd)DdRk z@ZHOyepk220Kl5UfpRjhnYRv!*S!@9#IBy%aMDX0X&kOh(2xiuLQW+jnc3MhCGQB+ z#3aO$^}}(~DPp5bj7D^fBrxNui-Q?Mlbt6a5ebC-xXX+?xdF^p4aqhUCP>U?a2JmZ zPiBMsZDqe@mkWRYZ6{Ji7clt#ub~Zxs;4~WF=U~(vwfSw2pootF^Q3?DIM=QkgI7t zJ11!p`=+6Cm1t!T@NAT^TWiD0W}?HX8K|tfT6cjU4%MizWTc=Ohb_WGc@pVQ>xt_K zg$-WMsk_ca=B$~Ia*3LQUPI_jbl5B2F;etbJrM+V|0c>(L^$*w@1JYR=W=ho?*-G# z$;#nF-k~r8172IKJz%9UDe;4!7aQ_&-U~P!!G&#uS@3*G@_KaV?fv~%uSNqQZ?B*i zS;a*rAjNm%G7avbH>kur+Zeq_x|{()h^L?zi+rC-ToCXRu`Fi5D<{D3g&LE&NK3Zk z$Cj2;@F>zl_h9MueVih%b~y)TR9g_f7prfKaYfs`7BIzez#o)z|6oY?eC??X_gIdK z_#-4B%Uk4TUVtW7Z4BL?&rhb0;f0Oq91us9<=O6^zB;N4>5Bz@a-%qY%f>*uQ-jyR zRwpq-M3E*Czj5&bHVAt^i*_Tvsh|*LJaHEWnWJ=h`4>0-I1Q3uh!DYi#s444YKM?f z)(xh^J8&)tdBk{~N!vz!2?BJ7G0aSS#hj+aVv`(lP#Y3sI$!>CIn=O%dT-+Aq18Y; z3p2v+e80*Os+S2YW$j*+0q{NltZ>Fo8mH}ZTE6#T`MZk?!epw1@# zSFIyrHJa4eGvICS%C#>3oevgMSTWs&7B}cpH5w2sQAG|urD2Tg5`wLSP1F(=J zL|abv6P?v-qeDEQ0hwBDq8eueUKx9Z0zeUCwKK#kX_-B-=r#s)TN(C}HgS^%Ed5y8 z$kxMi3Sc>V3)cm*XQ@O`?v#?5Y2k z-S%#UjD>NP$5rTNr<_AqhlvfljcQ(YCUWy?XK#c#>CNxRZsysCL!Hfy`~+L&i@;(* zmTZkS{RPEkF>|(75rp&Ybe2xOOdQ$fV#*N{)5~?6%zxOV{vUUXuVlCsg&|@;C3EF_ zfTmX6^mF{pojzqiqhg-}9mQKB;Odytac9lIuN983Od)g2Zic^_wEH!<$P6#g`iiR* zBg<1SBe2T2I~B{>fRwS2tl@_l3m{F7LO8(-wl-XR+;~yLNdkd7y0ZIo2>92`c@JAB z084`mqg#`P#U!yD12+C~cr?g3>dMv|9n+f>hY*wO0mQ=Us;5|xdEe7fe~Xh9RWQdPZ1$t$I77;^{y{TYr`)sk;oWxW7?z^=~Xh3N}A zf29AO-HIhvFy7j{CN%4S0W!YA{YCcfw<|CHl08`kq4LWshHi*g*sygH=z&^QeluCu zkGLvlB?_0B-DK~q@ z$(TQwn7+5BFMHF)!aeLP&S|w4uBh(QJg)I0DSlgR(c}&IAnQOS0Y}{8%>!h+Vrw!~ zlr`3EaSj%IsJXZ+mXa=h{jD!%m37fk>Dc>OVZ4XpcUq9){txc#aD@jCOv0&?nu}jQ zjBEF2;%?bf{W%4i*G+lDrGi+T2yDB*v|o7Q?t!Y5f^gnIT>l>&4=vq`F^5Fn{h-+2 ztA${*1-aXZm+d=!x4_0~)m4a-pB1qGWQDucN#ylwJrUvyk^M3ollU5-&-5;F{ zC|g(&4)9`akcGVP`)o$Y^UrS@lxz#}&y9bI#fWI8Luc``ItTQ$mc;I{=BqUT@STl_3)aOw0sF~|hN%Ro>C%J|(1t{7zbJsnYD zRYuBQc2gBV=(&C`Ck7>rfb=S{{2v4~UM)S%~iHJWhA@jTpVU@>b=>#W5=ADw&C=%TZca^t_7J+qwC^W3VcMxA{cCgJLw_cy?j% zA3x1hxjosydmw?fo&k$P+=fH;a~w3WBLO<}OPe)7DHcF;=3{@f6U-(IXE_t{v*qS@ zEi9&BGb#0W!Pa<%*6P-&Og|Xm@)8+qNY*7lZH{RykO9y1y#9zw@c)KaExxaBIOsxz z`Zi+Z1J=%(Y-$l{sT9fWNv$ex;&a8kak3HhgRA}OLN>Cyd3bMpZ;?hoJ>u;6G|hi~ z{NS3j`s7^IvtTovWvBCQN@8i^k3^sLXqfl+6`asas3?o-tHC++-HAF~OUK;(NhjFR zOr;C@3siGG~5(wTQ=C|U}&(g!xDs=No;p6#CZrMBhy8rP>c!G9RgR5x-GU>+u` zsEhlLZ8~#itmMHjtj>(W@jp~4BAsqUI(QHe1nmDgY3Kd7=r9Z?{k!O}Mho6oPd(>T z!GJSklf!@8rIb9wEOc{f)65}xO8zP*gKwSfq_B|m zH;6qZM2LpxEovH)nnwY3P-o{@=h;=zxqz0ZzWG*K;g3@y>L4A5My`W1DfF+OZJBAmM^aOW^4pi5Fv}{6;@} zrY|_*F!XK3Vouz_=xiIyy0`R}?84lT?;7O9VSmB@UG?gc74lI7Qd2Yb(^hLJG3Hw^ zsy9GkZqi!C#absSEg%O@ZY&~EmYroaiQ(~Ug>%xBW2||BDr2S@^$2B@Ame+ewIwxy zX|6Ui4OP z+is-Ep<&VkNVB7W9&ymPfUIpw#7Obj`B(6DFH;50k+$MVoH(ob^r@*+f`7JvcdJ;j zN8>FUyI!LK<1BIZCQJl?HIlMMqsKuCmDC2JlXM+rft}6Igl< z?=H*>@&p&lOp_5SskY*owsNb0kQ6o+3(4sQB>R|Gjm0T(IDRiW51MwyX!1>N%&rDW zp-9^zmL6B2R6gxuz8XrJ%0COX$tXt>8U}U6EftfzsE_tsgu>YP^Tvm>U-UhzH;aFY z<%ba$=J(4_6=Wp1^9#Xq9=4}VGX*#pQ*wEeAB+O|9K_OsM8VR2*XBnJwvSKu@-iyv zFCOXZ!O{>UQYAI0%#qc5Hw@K_h04Oz7DI2rl%I$K1-+Revpn>R4p`wGtpF7V_OuQo z42)<`!OJ}vPN~q9&H+3 z=~7!Zh~t0AXeIvIS@S5>Fu3^2iHpV6N!8hKm=>c$cOKAE3K46raVKwP3wyx*!o-RU6J&%{I(p(Px0H#M^TeXou>xQoz1$49oFmjknjMaTgA9sL6fbe_^_ z7>y3gJhQQimAX!xDo_mPpay%;d;7|yTQvaMRy(YgV=+Q%)2Ma06fB0$SY{hM4l~l3+=5wHp-^jRfyX z#hLSpM5#rIIy^|l#gCPhSk+m?L4&n4_QZ$s8x=%Jkf@rcuB=UuyrF(%7M69cm7;d`_l0E27l5CMu+EHNK=oXVVbG+WtoO2WW zF+1F=a;xtf&xo+l^H8DH;6%&85W_i9|K1YSn^9N+4r}WX4t{}&RafZjS73+v4wwywtiEWV zx7Pt12~N9Zx&ynfyK_hjY_f25OVMR^SJ3|*qspozsC>J)6!~lADwmgOe@Fct;cIVK z@rtqRN&9F`#OUcGu1&XMzC+Uzm_ruEf6{Gv#w6jB*QSf5ti(DqtNt#+8h5syLrTcx zU$L+0QmB@6B#$~>A|LpreyjK*>TUO~Gwew2$#@`2X_K)?V}r63_B8}dRPQ2)e!{(z zZ@#iHE&OT5C7=ZynmekD%g{(A5D42_LyUm$}U<^XE~WP zS@=6BIGBr}M}3OsxhE0UUd3+8^-VaehYM5Yw>g=uURc9QKE~{v zJf0@V(AT9Js1H6?*z5p60WErsB$Lq?mLjd2;i`~w3l)o+zSj>O zK7x2ov1aG3IEb);Rowm;#5h-Y0f$wGEW91hJO2o4t?~rVX7lawx3S0 zilwz{yAA#QHKSzfR&N((_nQfXQKM1AB?#u~_eJf$e6UfAbJ`|Hs%nHbxd`-MSsycE`3m>e#kzJDpTgaXPkb+a25P*tS(k2RD1) zb3VN1o)35ZhB0f+xyGpRl!($fU_o7+wq_nA$3CY6B#82y+k#rFJ&p^!5~YwrMPZ8}8ud&9Ma+%7BrP zdQBS8GdMNyUq65Ip)o`cJxF%Sgq{n0Y>Du>>u)-J@WH;k)>N3GKXVm&)804BU$s(e zPo_E=gWJ!}Jwj4D#@2IgYXvhfYwsxJ7kn_awolspecUdhyVgyIn%E_m4m3`P+rpGH zv$LMLfvHoq4KI&C$nN$t=IeHxbCnn+P0FF3nX#VB_#cF+)03rHKFfiwsjPJzjF(w< zUD=@>)x0v&+?6NTUY~|xsddDyCODf5N})XKt$R#0xP3mi>NVsfZ4Srw=2B@itUuXX zQ#RbuL+%A?0xn%B0)hf!EO*O&@HbtUdaeln@R_}y;Zhv|Yx4c04Yp~kbb#O!^a#^? zJ>mXgPC%m6PepU#_R;6Z#bnT{=H}5k{Vfza?xPi48r&d8n!=72IEmuU;)uAiANYEr zGUJcv(D4Gd69Ra=3h3g76S&THl~aTVnG3ypo*G|7`NM)VTa1;=pOuw;;hXI4%}Ko1 zMJ_uO4zhoMV!Db{H^BS(>AwnL*w<>h+FDHf8x=K0D*1gPbdNfwG>)2GX8B`M|#H>QZtXdcN!**_X8kSFi8!B@cj_<5IhsR z-|wCTde{Sr#IN^zwqA-_F$Ct&k_DUsvZV)|LJauajEA|7oXnX z&P@S+<3w+LhjcLfqGlv%2M4_n;_snlj5`=WBXtF}!&v-ce50yl%54V_HlLUas_RWn zSiqpXGHv1ft4nlzW2t-;7n~Fdk`^q8y%&4~D(DSJnlswA#a|b-x*i~B_4#^%YwlWe z+;(?B%(xE8ZroZ{eQ5If5a;&R9)7ytMlhikQED3fO1J~e|9sJAF?5HH<1ob6KZqJl zO69R*!r2lQOt$OjSX$Qnhx?bE?Sy_}h^`cK`88|$Y*Ino!ZLgP^m5Aldeb^Ev3k!8 zxWaYA0H$#F@5ku5Ayjwh)JlXsj~w+njXT~<4u3<(-qfioINS5#7lICaMi!4*9nB_gxSO4Y#iFuAj)zN9cDcr)gxFVaUfmEz^n(e22V~ zC^1Jmza5Y}#^mG|XXxy8^G%oQh{AfLskDdKk^pT^I%c2mgHS6$zcv(zuKS*yxczz) zJ(#s$bpgtnb%D&sR*eJW!~p#ylf;$KxRnsyK?8u?hJS}RjG%nxR{Zdarj|E)?h|?^ zEv?nEB^ibZ`mL9xL-*I(zkDv1pnuG7nd0e#tGE7RTV}R$Q;ze zsHJN0TUtYjMi(*?r-4O72!#!3YL?lrI5sVJ7L}hBoovfb-nDfa$hg;~rej`< zyOe2(Mnc4rv}Qp=Z`4Le-akYaQ8rYTH?3snEmAFsvoS>tVZ9wGOox}^O@($EP&fWB za%T-sB%1M$DnGV&+ITA&Zwkk_U!@5pkg;RMAbY<^aadEnc$GUau~2VwKa48cKI z*gX2B`#0khn`2e7QiB!owxK$}-4T!-@fh2}%S+H+w}+_t4kRN#3h$#YX=&sTU#A*1fzKZboPN@o`N_9F0trL^c>syGcSN^hgf@A>^ ztrO!kAeOK^bpIlmT0PhMrSR3+pWn#ITicjOSmB2dXkv&0%KD)pynFPyidtkFs(7O( zyaQ#fXihen`L@#P;?Rhx_F8R8;`qD-cn5g%F<=MdO*`HjWw7rVnt;ApLk;5R*7lU6 z4W_Mb|FXKDe5>xnYQDD#KK}xXI$g$Pmi4v{fCl<)NO(@msycBWEJX^Q>h{eI^Q&z# zUjpUm!%n1_OVIZ_4lf}^X528td=KdLWF>UI5f?%PGgji|4(V+_wO9u!-Xr_Y|$

W0hC3tf`1 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
W~ozpXGqVjRMrDGDjTy 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�OBDoKECb0unIacJxQ=;cbhWg;-mqBIi7 zmVi}Dt{i=9&a;+YixvG$*i~j1)|gT?U+v85u`T)qp2uquM6~Gcd4O&E zW}$9QsW*=QIr=(-sNEsf7MXY)=RwBr6pW0;Ihx5<`cCqyR#dOp5~tA;G8IiPCHqz# zv7cMVnGtQ3G;VXAqUEey}ttzW>9IX?}26# zW7qE@#MzhBiXbd$7~d6h3fYObQJw;}Vu*h~MkYQnOOF;0=wTKkGCun2>$NfBX5_0D zOO*Ll?J|uY9rw!6gBlV=zj8sxQoX=?Zx+$NfLU6zMy82kODc(@;-&?L)B>Eq0H(OD zH!%JbXIuiKhEF)XdkiB^h=^39$ao0UgI!bdn?HUrl8}PlM?kYXvle8v(OolSyG3>* zVdhJ@{bAOkHzXCPMM({m6b|2cB>ug%u|HKqFqrqaAd7a7q8*-xWBe_89-^oB7xzQb z9b?%XHu;Z`54QI1^`3lIaTkCGO?q!axMjg}bYbYNCV`0|6e_-)N8HJd5Y!^?MQ$P( z$A+V!l`%>_IXQPe#)a)okG=|qd)f#l6LSpX$%nwO|7Jg%cuv3I(3>M#HO<|R>wn<{ zw=$5A*)QsC_y3aH|Iu%7faG2({nK!mo4UK0tGO7P{r~x-$*NyKgD~1hNm5FRxDY5r zQfHfevN)2sFdCJWGg!E|%6$Ocg%W0pe#4f?{W7KDJAOu9fKAl=5as^WHRY2XU!(4% z__ssjnRM<{$CQ#s8IUW@Bi}mz?!JUV!*BNT* zoS6;3-zzM9(1L?b+6F_2aM%?tn^R7_$d*Q|@Wz>??mZ_kf!?muO)YXNka+bGZh*-tQc&%m{$c(Lj3j-r0~nw zIs4$I$BZx}B$X-I>P-j$`u8l_vyO6V>&ZV8F8<~r8!`hKPK>1SAxt>V0$~)u92Y(^ zJt5Y^?86wFbZyS%bS5kva=jt)2-4APvvMPUZwbHtIfi`EGFz#4FGEn@$;d?FCPrTE zn4}|$gigAAOwF?B3}dBw{8pZD7EqBeA`G!4p5_XBn}~AVi6J;Z=pUbv_Dc zK3<9wu4kEg(Y+3OzC}_dhd3qiF>$nXTd0H0pNM=%rO?J#UcE&ARV8L@MJwvfaVgk5 zY8Z9s`Mm?a=uQTJKR2}oSyt1nM~32=$)$E+%*c+et|%q9#@vc#A7$6cAJp)6zGD|q z{uqk_ly0;H*1hC;{HQM1>C-To93<8Dh|-gTMXijNvpq ztSLsK3VUOzT3O6E;Q(F!fFfEp%8w_eW_HZ_v{970HQo#dQASH(mUg`(^65q^987C_ z6Q)3Yq@85N7-c$Pu1UgF5zdM#FU0CABKD8KhD!M$VN;3#QtQkflsq`S2;43v=qJ&u zKvP_faUkqtZGF|!>eB`)?kn(E^w;UU;XgI^YSg-!;p^Ca`@hF7*LdK68SitE1W;@M zs_>ViYH)Bc#5W+(ggBZLYSP~UbtN)Aw(@GFVfiw?V+w2zS^Ca$bJCF79$kSaVk_w; zx=F-q%s0%*9P*zKd}4+cGg%jxi(8A0f&joP=nm)t@e`KBWX#1n#D?0#gZuEz)pa1R zqi&69CWU88_gzi`i`~}zL~+nx7iCv~H#8`4yo1kLP?3d=K({m!o^Eh%&n9MO>rj;? zOK{%QO4GCHSB8mAN=;QqjPc1Ld_VRe%jTC?f(wP~JW+i=Qd(;y-#0-WGO@Xdom5m@ zW2Po)D(`j`UqA;y!kZKQ znV?ju4SYR%=Y6H`J=G}A-{0s})0b_GUa1q85 zJyQ*rIS3|l18r3FS~YFfljuuD!PI;v(8$H>DGU+QOZW*c3D;O`Ysx;zXDP~g)B-)w zz&5|}vLh9dzvaQ)MaLde$;8x0DxXTjfx+VUbBSvl(JZ27%QajOJ!XI~WlNkOMaKMG zmAgg2AY!hUK(OE5xEC)!$rW6CLAXY^Lg!F;E<so~EcF%Ok|JWEesIJ9K?)jxJ@j zGLJ;@Cq8s|yK5`XK;Rg|t_dSSOfn=J>2tZ9!{*(aEwVyq`!zgs-j*?yI;Odf}iM za3_WGMG^0Bjn-aegQ?O^!A{vELnD!J= zWUE>4fw$o2zj-rg3jcJWc4BFuIA03M3x%(G!!If;J1GK+j3y3C z;t<&pF(FArp=8})1{TgCKTl}Uk-e92p`h;}`~z~oF)!XG>ZbK3Kgu%&GVG-=jpA{C zD%(}?j|1T2P<=D30O`9FD0;{6IB3=8oa8g|`dJkKG6$?GA+R7J3R!hYv>|bq$n+-+BS2 z)3Of1HBc;s(AuI`D(t1rB4723bzM00-Y(u5g{e`+3Z1D#|C?U!{5 z0N9Wvm{enPPMD8a3EiYFRY@fGTk79jI}%1^Wnl zk^Lgp{bx(m=h?ZKIPQTRYGaNHGFOo@K$R(p`QN$n0)hxBjqy*3Ca7bm(zHn|+fr{y z7}06V|VTL?`7lZKGYjTItX^1P6>wKqyLoi^52J`Y%Unrsy-+$uGx8T=fzQt@Q8 zjpcHgk^=5&QxM2QfMTPb2tnw5Y;z!lm)4-b7I)6(fa5=xb&7->nf=$NIRpM*>(tv{ zT@hz4uJo5a2{5uUnDDC}-y{eoh8ZTDEYyyP3^v|5%uraQ9*nk^dEAOU)BD0|NCPoA!t+~ zjwICJq0Wx%_Je-ohxPLPo>P%U54tI)eCoZ)%IxJ3IHZl31 z)XBVjWpL&ie`?NNa}NC^ET(vpk_eWh7K-h3?CeG#X(!a}25#`U$C;97&~n_(v`@%^ zV@-z0(f~J;J|RI!Y#!B66V#xmRz6USnC^@jFP#i$4tUrdWoEkH#ZdMT!uO_Ts(MfU| zxY^MGaiTVlSV2+i>?@nbTja3rPc(IV`KJVWs!OmqJ*$ClJBLPej~c36t%JXj%s_Od zkG)Hr-ZMlqS+^tdnastDHwNZZl2-_l!a0aSIy!l}c!qh~0v={_$PG_*iBMl<_GY>q zN(Dd%jt;>Wqz%k5=~1JZ`JJ7eJHDM|$))b6!Cq?8W4@z*fL+jo!Yo(xq1bqFdT^Z+ zP#{CEv61YpNHgCR0I_KtmRNRNIZ|3ac_G5$XVfPWJ`$4ix8P{?KJ0oM(#sNagBELD3}U&knH|9XIY5nBcNFAF%DcC+DrP?gmuerjJ5c^t z`Fuv>y+)?%Qm5$>`3N@8#0FMzh14-kJ0Rg-9ahD!8i!=l{Ta4yIPqeL(k8l zD=#VNTvKGjJ;i~u(eXNXK~xRQc{{Sk2Ydx(ECjw>>@dWy@Bq>I`6(X@v!M0mz7t3w zZr(~Xhm(invyU6q`cS1Wxar&n3w4}ETcQtm1JsW(;Kk+-^aTTZO=cTH!|-uM`4fl;chNU}9zH{Dd*JHdZ$6{Kx{aM~}}MeM&| z7oocUZ2|ek(?GFvC*>1B;Q(Oya|;RsqJ%)~h;g>%tIP(aW+yO;!ros5C3js3ZZ|D{Q&_1vG`ic`wt-Me`e9# z<*!CS4)8w_1E`^TQN&18sTfrB&?sJY;EdIQaUkUh#n1#ll?d<~!3Rfhxnq$0AacJU z7DKE1fe?nI+0jY8nyJ&qTF#tv^IA5~GR7)`tklJcM_hNKS4erwtY1t5t51&xB0bcQ zLS$r+FHbt`2_Z29I^f&r~zyEzt*d!mZ#|5 zIqX^weJlqYUIJ`=Y0x~nU43XoHk3Db%9CsnyT@Bqu6yL5pH5C|$-HC5P z@Uh-T!US9T=Xbh(BFA{ww8ZT}9B67>F~7hidg>K14LKM5G72{)nkh-QaCSKTjp6b% zI40>Aak$dN7st9VDoDuW`dVV~_gYJ&x-x!#3_;RgmKl)!>9dr)&2;rajCddK3r0s8 zO?o+fmThSGueqlIE>~L7Kd64H#P|Cbm_{9iRwBb zFknMWB3DCN?DWg#R9-@vwiGs~7t`H6S_GkKh{D1X@|cmrc9$_x$H{YK)enNI#ih~Z86q&DE3@nkB zp8)E^xcTxa&bLa8bxUe0HB$9TNw)U?xOEC_6wa&~pfR%@x(%`YK=adlZ> zBZ1;AaO-drlO=aIZ?WW%maIVA(x4ZuZ>CQ6D?#;GN6CQ`x;X)Urm?w`HTL8=_slh(|xId_~`AapZz#~7QR%>EyazTT; z7imvCVM16;EYa(yQm=&S>*WC+V2?-sJ(=RWpbUghL{Onz9!89d<)d}Xp@K-xu2zJK zvL1Ue3a>t|@RUe@n{~8!Qc(hyCMh5>BY)031qWLpHl{*@%tC_P3WHrcGq?P>=NT@r zU&(*;?O13kvKv16kusJfUUK8%D!f@mN&P0IWEw#7$3F%X zenHj>7Co8fiDC?eA&AviGGyVDHoXpX60NkAf?7$t*)Gp-^CZiAl<3*GY+FOjKiz>Ttdu)qJ9 zgo}*Z0HnAn_y?S!>!!dc;hq&7vET6>esP$iN?PqBY3?S6Eo{WU+J{HGlNrr&qvN`c&F^BKodTQcgcxu^qdxf7C z1IE~!ok>6K(Qbd0iGu?wosezoz=Su2_;u=#AzSvUikg@6hacjKrACzUNcfc0R27;g zzGYb@uRNWcz#+~57Yfj3R zW>eN}-l0Dqh&5vk;@Iprh@gnMnhQ}ZPcT0o1c!7^#A-^2UZjdnpfC2w@n}{flGM%H zGGnOmJa#NOBIpq5pkgWub_>*p*%mpVsZp1pN)7&HHt!#Gz(Xu3@<#F9V*VE)F&a6)Yv#Od@7<2?IONZ(JIwAC#qlax#IV#C=^SEr z^%M+dqPIkRe1G*M)zoIF7_DhbM*rI-O;1*mjG0>Z9q>i|R2OM<$RW5uGyBDYJz-0h zEzr~~dJ2uwy({j^cLmfsCG#BeTx|AZ`$^#6($l?(B_46w_2n+D0Oo1mIVGG@dx{A3 zj1SvJQugs%U|ZKDx<*@w#xmymJ@)t_3)0-@T3KQoJV1IINS^}A=T^Z#j4*y%mR|Gn zh8nJ#Q|J+WKO!%L`~275@#5#v>*v?#pZMhl{h!4`^^56N2WY&y>bawTZk|(Q+VwP% zpO6w$7dO+t5;0)dFWn4J940fhxc%YR^TlmH=iG5yUcG*LpV@=>Ui%_e zu;Hc2>$ae`0uu74Zp6kixJ-sF9B9o;tIZaq9(iBosIsy%U@fN)isCPGR#aj3**pAO8bC^&qB`~kWbTXQI_VZfEN9mhHWd#| zY1elYy&~H?g|P+()3cVg-1#{q{sO{9QSA*mAkfp$z@oME&~B%k%zo0z2E`_V2?310v9? zr*&^00Bd}WILRtd;sn;!uwJZ`YPeOAx3jDyXl(}HLt>q?2lv)fmaOna)$$A22U|=f z5k%-(lYZ$jsZ2t$AufE7#WJBaRDhG zfeZBBgZKdr!WJylVVRZkF$2S9<+ZgRkaH2@=%Y^Rk!Ca0%D^Y!#=(%zu}U%DFp537 zQ#tAHjz0qD54YPctUio-wxVlorq464ADR>n{~ulF{GR8#z3DcMZM#8Z+qUh-w)r%+ zZQFLz*tTsOO_RxI@9%NU%-%EaFYiCFo_pz9=auH~vYG(dRL!d9K1(vvAg|jj6cJ4s z;R_U29`9@`Fr}W)k>aL%jSU<~d~=iEaU6ISRve0e)gyY=4-5viCE1Lxi)^T@*PPX- zN}LcUmHE-%v)pn&GQ#-hCBXIhWbkr})?1JP73 z*4Mds#bdc`OKh7E(V(C_o?y>cc+s|3%(P>N8Tgxhi9p-!bnG%3U-j-T$+&VKOGIEx z^%=fP3Za0$zG=bHKvhm=^pAmM&22+36LL=4O2s{%Z(%z%9@C6m6qN{Fa&< zl4Ak&g9uwk5a>Jqj`6ijvx<)r^<`m4c^!d8W7Cl29bH^Df6N{?F6TyBw=M*qWyMSE|T~r>IkTic8^Vt z%OPah*e$Z%X6uY-ctSJbWHBwF?c?BjeRqBy>$gX7&Fn8{Ujo&n)qnN-?#eVY;f{J` zfFrNIplC|9q=+1Xto#1ytDvgz@;o|9&T(6xqsSgzMVbK=U0{STb3!3& z@z`;(F@w_@-mx%)85rgpCfm=EHfaBFEVqxL@X+kum6q zIj-Lyi|;x(mF;4VF$2t=PYMvMta?25bteoRTTzJCF+ww7yAa=^dQN?Z{f(=Md2;d0 zW-~xA9Ykc3lT2_)m!H1p{Y(Y^lFuD=_olc$6&2?<5$1&p^u}BDPEEh#-Y_+kjvTp@ z%Hrw46mRO65Rl%o`iyyZ`FAOqFtrp+Qm$xs_aAyTxJQWxbpaUGCdoH>2XA2=&&6|K zHWXMZmzeHJOA>z`**rmNCl=Pe?X4v}fhne-^}M(CKXKt1d=j7kz-ZG}X&0&}*zf>C z{kiEJ{yIi@o)T1!&5<0dzDVc2TM`?dW`;!up3AKco-M;SB(iAB1Vn!}gsW|jiFrt6 zIk?}Z(YRm9@PVD4rze$hYWSFsee`AU)dEYfO32Y=2>Af|IJXp zE5xIgC3+P}!HYBaDl|YPCLz2PmxBFf7PsxToFM99B7b7R1&wb}Jjqwcy63kwM@L*= zEAA$w!%I=hw%5o^cNi7+A@AES5!XuYlO>G6{OA$zGffj1e8btf{XYaNnWr71uW4*8Ao-Vuz%EJeBwwvP} zTjOsgn`_zcK5wAEv09+9F=lS-9#)>Ms)j>((giwDr{FKXIx$)%N8b zzokUhDDA;?gV@e^yyQo6mR+eY`yF7dqHh!)Nss zf{H@)u`WRY{~-c(gKOCpj!Sf8#nMlJOvrqZ+y_4RG71zbVPO9>cz zAMuKkWovwFt}UA-;-=>sMVyp{eKbFh6=p)nh#pGi%Vwo0(`JYZ1kfl~LlSW5?8^q3 zdGjPe-disASvpHh*;-WTsWbi9wZ{^cmRj=%&Pz~%UgFNVhgQY2N3iQZ-yZPpc9`Fw zb&Zd?#eKuR_%RCvjp1cJ!VW<>Pf@AP1#5jmdDRf}n(&&+rmw*t)^`b}nQ=D+=$)zb z&Xm=Au!4L)4%dQ_B0h`oJJ<{6>A8*sXIOKtkTfT}zELG(r$}Y(e#`|?avOEgq{Au; zv_@Qj7g;?rOp};$P++di>bNjKI{naPAXq{eP1^*sELa0gDTVCOX|6!Q#dyxpnY9p1 z?K;VC1y7KsZ!wRc&1-W6Y8&&|pn1SBJp3kAiz)PE`2f@&k?$NEonuHv`x^)Is^9?P z4c}P(rG09@Gn#GqY+9Hxn@Ou+qH=8rPCq74y4#e)ww>)61*NSTE0|VPKvJB190j$k zf_Ak{b^)czFM1Y)+e3q9IeoILa8`W=-@K0_KCGZWQ8w(WR=EIGt`SdcqdNc&Yk@x? zW3wCuo8<)`wuus&4lD3s@s~rcS5eqv_U9X z=BGv~Cu6blKozH2Filnd8jGwhjByA+Ucg9hbDywqen1D6CDy_&&`k1Pa39DN6XU-| zKoI10`zf6;TzO|`U*7lx>jzyi#2s6bInpcltU%LpYiNZ-;_wtay}#sNA<^>umIhOs z3#Db1@BI>%K5BS$ z_$A6mH~YD|21tXQ<&uSVAwxq)idXtg94MD1t>(+8{e~FUZ}sbCYhN#m8!Be80W+0S z#3ng}o-b(cpRt{PX>SouD}N45dGjr5h@|Z$lji;v9{ddY?KuPc745wry=%~Lour!X zhUx?$fBfj3a)9Nuh<8d-MQUbNVD>)aXN>$4cQf+xngVX`XLThtHQW8q({(Bs6&CwB zsbz%ve?48S+1*C}tm)M)e<}~4y_?iah%@@~BNLAHxw5tQ(+GfltqmYaV}`PzpQ5yh z8#B?bXFIo^tKQV#*fYV!lT^{yiW%`QZ7`w4mwfl!_k~ z^zc(2hK_9z$yOzKsyfj!_7|UWxd<_?Q7=W!Pwn1wF($A&E?8z7?FAyjGB7e>Z~bm` zl|Cr4IASJGLCaB(eC(wJD0VJy-ytdOAx1MMDJN(1l;)Ib@V0FaGbUDGW z^OU~pv^)h5NtS?4mwd2j7W3ekTIFo7MG9NN0Apu46`~6DjG&9B97&n0`A*@*g=TY4 zRtM$r-IAF1%<3<`^Kb_k-%x80G224?%Q8I_NbsY$+R>$|$e$7F3Y;EbSQ?og^3}() z3rLX*Qu*8pT5`(a{RpclaG;%V4I%i40`;e*wREc}MZ&;I3Rt*hucq)7RI??LEf+#z zaEHo){kVt}Bz-7GQ83EW$f6+LVkfi_HGBZb3~572d5bTrUXiQWig@1)a_}Bx*b=Cq zrjDFiI=b$TC5(lnOy>rM)pg)E3o8b>iWfefaBP#7vhwn9oI1ko*py$eB8lP!=?QAY zC|DpI9Xvo}I{3FE$36qKNc=}n?~SfU*@-nY$QQF;HHX$`3e6XlvtzIZ3id**hda;G zpT6GnZX_hKzrEUsJL^ReUf}waO_iciNYVXH4}}|!Z(GJVbrufM$t9?JMz|v#&gAD~ z$`u`?NJkU2X%9yC^m9x`NhyO6)zoita%5xK(VT!IW(U{|#>Uq(WR{YH2m6OqA^TmY z#L^3}B&m#`xf7KH4Qz7+&~bSrb#`5$NI0fIExK9|(^>rW2j%bhFgk{6X`IZG%%zQ3 zML}T;#4};G^vEM+1n{cG<)f$^S_Xw_Q+r<42G?a0*}~~*8O+S)B6VqJG1E1YgnT_^ zefq$KQ)9|=CbDm?@t9~}YntA7BxNn>L$8&PXVrQlC~vbS2jQCXl}2QJtrbNUoW$eW zM4E~IR_^O#`N=^}+|1BBFcVzrqWYQee3d(zP?%uaqRFK~ilJ8ZU1YCxibPp?ta_&QDj ziArzAeZyh|>}xZu;sZ&Tu@b1FkW^Y7X|Pghh>>PPBg({Xk_i|-Op zMjyPQ#3wSo3?YB?k{69s!m5qKvhv24D|u1gVDT2CXLgBa=F&46g)`1$AlE16df4;t zN*Vu16phT}m|zYNN)Vbrfd?pNYkVPe(O{j@C6maxZ5`kG7S?g$y3y6ipjN zR_!qV$923-G2OZFkOBqyHAdZllmc@n_-5(ap7q?m!#A2hD>+WGbP2dd{YdE*zW5d! z768#OS`fN-?(waWF(+%Fmwfwp@g<=s`-ZFH3;aV0>4E&o$T8M{C|}R6T=U>uMb^ml zajJbJ?}nzD*$vi)aJKn${WDeFzDe}1T1MKAi->D);;X8HUOjm?VqOBO2#h%B zaH^GCeN!m99gE;JM}pPp)g^nauJUDO4@HWNk63J#NjONz12YjiQbmO$69H45ZZZLUWX%9+EBsQx#P> zGk0nBF!&LvF8~|9k(H#{%<+~s^EutKZ*I61b1{ZpV3;4U3z}hNRtR89AVw0ZpUEgx zRzjd*%yZ`gB(MC({K{w?JPt_+3t@zU%V7)dQ`5npTEjCKwD)XS)wKCeC511h6EWwb zE2&njuCq*Sd?J!##>fXOc-5M2HBD|j7*B3oZ-KHS1Byw5ywwN~gGM`JP&Fn!+`;M# zoEQBL4A*Vv^+>Jfzsup)9Jnz!Zlg&ohyBQOgouk#tZc?Jz3%vz44kdVXwWhOMDZ7e2++_jXxvCrGZiA)UZK z>;MY-*;`REq}?)x>?P3~jGh%7r9X|4%70~~*YrSFHoFH`EW(TFLhzjWyctp1gzh|I zH;Zw2!n!hV2Gg(+ZOw77*yrs$y0SeIRVzeds2i$487`kP^zGV2OL|yTNH(6A%J?kd?0gf)A+ul5qDB)ovT7zAYZhW_}*(!Oai`dt4pwsxPTMi7IK9zpQ*1XyZom0W+!@;o+8zSbg zRsVP-m&f|ySk*%uqL?OKEW>wqD;Rx4n`t9XNd64t{AzTn&4QyarKNT+?miuH@M_okcuG??P&b%A9>T)}&O%}EiU3b=2mR8xhA%(Yz%0uUOyl50PEIph1VL(Oh^}T=B z{3AKr0Epjs9Z+N?F@Uq)&&w~H-f7B{4!wwKz#}>73;`G-6kHFYPxKpEqiQtq-YGi> z>GZPxv@O9RQLX+_iSJF=(#xKCd3Z2=%Dy$+Z(u<>Zoe>#ToDm~;E-Snp@ zU&GfQcrMwKnrUCk9%p@aQi4}9@pgMZ{jpdNM2`RsBB8a=MqPuSRQ-$Ra9i~oj6%`1 zrd=#7Lr!C>p;lQ$33WPadOt(Tsg52(X@a(i=`<8Tr*jGYWP^UCEr>hf(BKThJTBDD z=U1bXCkhcinIqO<^Cx~&wfHk&=by08OX#Uqv88H&QpV|%n87kKEgfnePB$-h#(lvb z;t7Hm+FEC>tFE_{^6-evU1GQ8q;u%1=I;Z(1*y^s!%{pDj}>{c`cZ(*NE4f`HF)`0Hy6#;qn0CxHdu;vS7bA!3GNq zZg7%0h`Pqa=0%OzE4nP**l`oEe;1cKELgL`D^*)7aQAUaiy{`PVx2{jfR*p#FP{;k zVvj%&{~4vb{2ki`nsYP$Z{Gdn`@dp4#H4Ym`cvWP^IziIe+wM(oZ`MBe=2WK6h0A$ zYMS5_7*vGBl08j1{y)MR^3cs@O%#y{hYxzB*S>-Wb4<{S5OuwL<9#-IgJfyKCh%f? z#qkNY&ps*mgi3g`*DvYTPpu}O-~C-muKr?DgBuX6-)3N+p4>u2z_S+be#1|-629I* zV}qI2xce-2n`Tp;0!I!>0Q6}~H4nebFxDJ7)j7!?XE1_Frs?mG?(bu9Vk`E-6*wz3 zV}yj8)~|T+*7j^`?Hkj;(h(z*+|#@5g+?M`zLGp6As%-G{QRa9Gd;uak1PlYaW zB|Wmd$g`=m_S4AFs=B(eNKM{Ed{fNp3|$n&5(G#>hEOVXU<`4W{8D~~G$PY|(ko>2 zSYXp4E*j!28B`$STk!i)BOmyARE?F691i;zRV(TcyS}F8N{v)jQ;o?b!AP}=fd%;- zY{?fNrX$mw(SY+|0H{Ko@7=?!LG)BRQD!vqrK=os=<^u?o++k~$c1)}a?I(rLX0#! zy!}=Vv5Z!+4APt)Jxx#h!BI@p`louE~*9J-(UvqB^p=ti4nn<&cA5O>=3q8Y6G#v}n;s;wyacBoEbl;Nj z*Wx%N3j}$j9;*8tFqOaH{sr6-+4GxhitS;a1dwKCva`6Y!IW z^P<+`N1`#y_Vh3Jqn;u#5kXfrITd>!+gT+aZw|=eNZY0tiN9>n?x_;VB0-RX!8BK&Qf$^uwe3%GU~cze_LutxzdMU&B$qTKl- zg6VB24T*f{!WPM&q^jm6kwwymQ~k>^`cG#<=0ZZ=^ODCWUpHh&T48LWX!+(Zuw7pA zf;f6{{F-8G$<6~}p-hm$k31_APOMHXKFS~3$()92WH{IGPi_#D4d52tYgPN40U+o1 zLrLCQeByMC?oY5Xl4d|+8$3`>Vx3MteIOl-mC{RdmkoMe;*E^i-M&7^StK&PLIxyJ zW03}=xoj>k?q3@wIQ1l2cE;y}(fIa@TIv$z)~(KcmY`Gr4&2 zRv5#FI^FZwjX}bdO7)=EUlFx4GjLn3@kc6Gf?NIjO@%#7f-Z{TF1Z&mr57GfmlL~j z9BHIWZ##S2FaaezB`V;Z^qP>fUIR^5i*v(VGflus!yT}B_IfXz*)NQSECmk4JS{*IaN@n?3tt(I&O@gJt?*et0suNe-dj)aJf1OJ73SwC2Dgk zuiKCKJ?9pLw-kp+wX9}##Hj75y3KK-`SRRfh?tGS9*yyg9I!7XZt9t2zb^$sw}&Pg z?)4P<)&*QM!n?_AJ9qS8Z-0$jYlXek06F@h*>3to-N8)LOIS|p zeq*%UGBsXc8wY{h&{h?8X{s1P9Xws#qGS_0D$iN$WufO;RBE@z4*>1yZYVyiqS6AoA<` z3m>P~s}$x`|0?&wk!~*yavARvr>cES3GWA`#o`hH{>3Ig(xzSDPyxcpgHcK_j$J>e z*CAjv#6pg->O?qI^b7i2tYOE5ceK;#(b~sI?b_cX>E;D&tp=TF-5;}U#2b=ayZvK` zJW+v1#gz;00~rB`8ZxoxM6cxPeW9LYWx~Fwck6NoN?{TvX{-|4JkaSzCCcZM$+WaL zjxDmwwY2d@ttauHPP=-}x2QKeYJN{CxdT2yse->Dq^G&;NM&cs8J}mwsz0RolK5mRgfXmiH19=Z;)1dy{8G>&VHu-RT^z1ap2AcPTp`Gl*$R4q!w_#<23$4Oc zN-S$lqbSSW9)^TnGtR#TIQ-AdHep$(JFq}M|NWfw!PCvT|K>e8CfTTh%_P+;N7<+$ zCFEO=B5;(+>xe~-Y7EatlX-liln3YEu+(nc7q?+quiew_eGxW#;$^J#)#i>xa>=G! zGRUr}4zm1Yeyeprc?r483E+5*)$VAGdV}5BTi$r#7OqF(aX3gst-nhs+=`BFfOXnZ zU;ZUInDpD1x4*?66&G-jv%jrRfJkW%A9+GUScWyW?Mc@P+oC?G^4nkBrQJ_V*Z>>Z z+1+Otb)BzzdI$X{Y1KujhXsD}aSi|L2IXJ(QJ=nG`VLP2!2|g>2qaTk=bsy09-(eC zjU2+fXRuEgSV{R0=mvuy2D2tg$dZV?{wp>R>UHPy7wCD_?{I(rhXf|`2Jw!zmuZfc z&)Z-U?|GHc`ZUht>iT&1^hEGgde;XQ50*(q540D(N?{GyVia}{UhDC@2GMJweM+8h zGf4m$LkLqzcX@2ls|OKtV+g=1(xN2)ARk7&DRb%S{S6J987bKsVS+aWb!etXhpJc( zy91`M0~L^Cek{x;BraDu*fU*D6jT!N$}EgX+V8}zTXB`t+HH`iGdXPwz2=}svlV+r zmcsC%iQfUeW!Dv92O_tt1M*f z2e|l`lqwTR?a+@5*@x&CCA)%PFpEaCs-(U{CnR`_yj-e#Chc(a4)ef0 z$LYoP8@7y3TOX>ajt>ll4?w)U5cmChaVZMx4>I?R%P|#>r zLb%h#OgqDY+tBwzG6pu24xq2*WX#*aG@ENG>#d^u5JE{>Bd*WbVa(lMAp2HKG%9eF z6ZsRhL8ezJ8H*@r5Ep+<5` z-!^aKv&6HX+I=Wt0aQ%aLD7+QBN>3V>CqH{YG~} zjUFsmotHBIbwd-iwIGl28AO?%+u8qHHTv(P(T-pLun_rCdG<)0<5OnAe?$wK=O*-1 zd>+JwwGkrslIAIvf&?V)Nu&7hh2n~dheZE`+4_Pk&MZ#-`~|(@8MN!0{kgCL6b!M^ z3-3`z>YwMwvoWe^6_RUEnht6& zvo0#~=2XB`BIhg!Td|*#95|RsaPdXauVr*`PopApnDO;T5V}=laWp9w6Us6QNAaBy zUup*pNL-ef9%(BY%xQ)(@dcQDf1hHaKAz$oDPKXA)+jwkLApn=o{3XnshuL`LZa?v zQ;HESys!*fD{0Poy{UmycU!#*x^Ut6Q*1n4w*X}J6H;#_1pg}Bb!t(h31(t1Hw-`c8F%M(zLUttv;*>H?ZODb0YQb&=|G1rE6onHp=*kAcxwegPYGBME-NfEpLxcrd4?Jj}gUB z-=^Q-Nn#b~u?%E}KE3OIpz_9v@^%h96Ub}WL2TuR6lAe;Kt8L#6iG2oD_@so z?4kHuh6xR4IM()C{#V*AflX=zyO-!y^k9i!NH^1z@l`SVj0x2%((9*?Jv9OxuX3K}(dauaU}zc?daI z+xeIusjAGsMH(fJK915qyq0bG_y90^5T-E1KDQAJ-ed!$xxN@Tvxt7{Xw%VX~tsVk{9mloQ1< zhG{Ioz z{O-LsHs=?oMYJbsRScWG{jpkLmO_%AJF_C#jL|O^nsppXLh#58PvYo35^c62GDI77 znP-Wyah2demzi&rCS1!8%(p;dy-oyLYFo+CikczZ0G*TxG!4Ci5W1hYF*A{D0dny^ z1h1AmUb%LH!XoXPHMfK>Uv(PRO<0qQlX&H5jPlJbV4pve?luL-tG zK;x(+z1#epEUv6YQWe!B0`RA+{nofVDJ&@Q6h2|ISp~0OtAF(4k(fCI-5{eZ3uAA^ z7Itb3iXh%5^eQ>UUP@$?6*3lCft<_zjiUJC`4GQuj+|^$=IkY9Dmt?D=U?+h4(H8P zsLwO7f6S2n?{}KaKklm(prU1^WQ_ZfnQ477s=vJ)z=0@_YaNUp1X*Wq-VP64h;yND z_$}4+Vr6kAQ%P2?)w7%D2VEDIp|lsV!gtJ1BihI`%stYr&R7@74_pUj{ z$-!}SFLu3;?vJN#y)GZuv-qj64SOsIWh7R#>P6Nj<6b3h7R*NQK=c_Fmj!l{@!?(D z!rr#Q4+~joGf`HPj2|bY8~zqhYv={TTPxB~QnNfWZtM)Ga%Hv3j2SV61EkbNKW7$U z+vUcRom&4EC#54NIN7SB)y;J3t8|r80+MD9cSVuIM|4I$vD;EZ3%O3z3m8%(YUv*~ ziSl#lrxJtvQ?$z7fN%{TRye8A$>`ZGS!GbX&h5ZcR937!j_QJ)Q@7X6q8{(7iqeiz z8&^_TdF?lcBR-ug$TC*68JqnuD= zJ%PP&;g+%IFT{$O$^nkDu}myJ`1`T9x?+kfS!_COO6oV|mmu zGgN4mv1Tj*fdWkV2Y;BU$n64KjrB_>G8Dk;<_Nl<@<3mO3o@bc1uAn~C?N@d=qsqw zox;*(bB#@dya$*^1~vF4Va*Ala0tN|OG_cZC5wtWQK7PZhZnHq6`nr$iqmRCgbi(Q zeE6$o4{8q6IjmK#zgDd${~E^f59&FDYq6?ypgtEdU{4gMJgo`erq<)}%p+dwSg!{qF23FnQnOK& z?JOo(!jGl=aJ+-us1!`TEM>4uHU|m}`yUs?pH& zd1+xRYS?@aJkw^{d4fPMqC7PW7fkLa9Ka|UP_5h9Nu?VwsLQJwGC;C7PHi6*r|HJm zF@886AIgs>`iMRYFn^vaU2km=r!JU*ZwIRF*VvMh%Yhr*Ya=fpyv0#MJxx6n0pzu&(Dt*| zJw2?7@yB+P-zIesPVoNr$l2TdG?sbzy;Ex`u4M6ROUZZ;H7iT7Y3Ie#?S%4PB0}d< z?%L&zaRZFw?c4eirIjPL8tMA3F*lSl@FQMPO9BE571IgN$7ENJA<&-eh5^Pa&=r5R z)mNY++K@Uv;LfcmPCBF;8L;$Iqjwn@QEO2g9S-u? z&k{6%pMu~`QR5hl2cppqHcDJt9;9&m{ncty12g)Q#_B8P+bia|cq|PmU}Yx&i_Pp* zrs%AfyWu#2=1@FWMop!pbepc6QFJi0 zf_YU_VGB1|I|SHEWfa$anakiy^ zjM6+mqW3py4Fg1xYm{z8h82vXuU5^29g43Le&Hz^2@y}FjRoM(m3C) z3p;fOJz~|Ef2f%by(4!9Y(Fs_D(;TVo$*$qU{y}gj;4qkb~6{2G7uk^%WyaBVUSvN za4?~b$*$WKo!hi^lVKN=tI1}9X%RF4qNWhZgN@pch0Pc>R6lUwjxVisN1M#t+q8~F zWw+mUem?aE#1xv|L%ntHj%fUiS8}5GI-hc@o(S z`FTh((D3vPDt^<`5&p1}S;1I42l;tJq(k~}pD#n3Kx_kssBZ&ogBg1i3amZ!ev)tv z(kKP{K#i>@mr6sP%%@oTo5HYTK&mF(OZCK5USZ#N$+GClB+6$@QQk`n4Hf|+;M~!)+P6M8|Hf!4LT&_?fhZae10xp8wW2^ zVC!@pfgD8AMB$@ADe$+ATVGLa28*ddEp51@&{?Z0wo0u-%-iQ|z{qSiasyw=duOV_ z#JhQLrhY8c;OCu!7;ohBJddH114(A&cbSEA@Rbuq`T}DAcICtY`9|UNT6?(omdH6L z+J$>hqGoQ~v;niMUiuYIP3P%hvkC*-LJ=Mf>pp+#M^P$7S-_)hc(Y#|%RDKzwx7$% z8e+)hm*?;-p8LG&vFswa+G3uqraT1g$+hC?LqQbLgI!f~Zw zDFd~U^~>mq<;zg4QTw31^=}o!?mkoQ9QBEicL@v-x>cR^17@F za{X0&p6w;?xGsbh&)&2KsD*5Yr(9^dcbJH9L%T<|m zz=Zgt8>d0EEG9+sT9ft=t4tr3{GC;SnCk!^{^}!xb<~0>|DYiDlC>0@GwFFw?N_PpzNAolvM=veSIahmeD3T==P_X zx_|W=K2w=OlqD#3t%8saw;|Twx%m7brh@3SprD|Z%-IS3jgjG22$ums_MVHm-_O2J z@~$Gp(CEUP+}P;*NZMarCu_T~bl5qW8v2$8>V{}R3Am!1O`DE9V}op&jsd5b-o!tCcl&Is;sYJ8l* zHTUPb%Pf+&q#PbAaXgk(bb-|n5E3C99gQPPVsfP_EoRn&-PuC^Wplk~K^*c8y5rfm zVQ0{qs`64jd;Z4Km;Lej)}GX))q;qO2M@6YIniN^*VmI_xOX?H#Qf|ap;y5lZGExg$$?>RRTTszF6aoFUo|* zuGIpMY#`kO0<4YpOnsYbKwmktyxH8X0o-A`G2TjloGw-DKD3b$SRG*Am*jz-R+~YV zEGvdyq}VYH9a$UDw&mZY<2Ccf)fMmsugwcfb_EWgy4wR35+O0`ag z@iz_zyx^*tE?4s5;}2mT13bL4vvUl&?tBC!yJ)VXRtt;ID}bRuINL0FS~Y~SL9~fs zSCKiEgjA*F-arT1r99~*?pDT?>ILsC~Nv4HFWG@)!PAhy*(7hCgv5{r;N;QkP{TJ+bks9PjkzcY|cM zu-qd(C9j7;P+7ooyH0;6j?-O(vA3uZNK!1%q zd7=wZ$B=XZ0h4%Gyt-m5_$E8ox9@1=FSSldg+(Jt3M2*Ag?BgjCpJ!=y&u0t(PnS# z?!@7FFpTeC)B3(=(B@BQw}kkJtSzVp*i zk?+^OqFZEShbDA9iU-`ROviUEp#s@rO#ZylS}7^+>pcndrsFh@O?D2+7W+DZsNy!o zb)pVHdjeWqxw2fq{#(Nd#ALMPBeqg&@;okYf%N3t05B$ zpYHu+kmS~ir}&3FqEEIN*pPo+6Ib5|?&STU9W7<={yt#vHc#5|rd>Co=6GnlPL!L* zRGl9?-kMflo!3;l6B)W$NitK34eak`!p_kE}JAHp(m?On6q9GGOmWJA_32D@wv#!yI?%^PGy&$|nky(J! zefrg8|K%CvSkr`#Q{Np+O||WQIUG-2A?WV%`euj5g%K5j00KmCltyVoJ7S^Pa-n9 z@f&PzA^pXlWwEHeRq)AMVdl88Vog^!xgJjw!S}W z;uh*O)sJqAOiCPj8d|h1(G?X2P6spj+%v&8^(NE*s%M5! zSvpCyDo&IRFZ9FguOSe+@5eb!qQps~D9&E->Y;?*xeH-xphztwHNL!Af6J7%$Qmqo zlX1SxNTBzFfz?&wZ>R%q`clN)0;G_QX40y)8$WFUKk1x*k(MyuKq-n8kS9!{2{|bB zVLKaAEZbCz(0H327Fdm@DKmUbgqUINZr)+daY5#&w5mE2f6L zYzq5@Tj-Ch92g$d%-TN0CDD-#=vEWsfNC7vr1FM|WjQqll(XN69mMq8;1C zD<~C~zJs{f+Y1k0?%s+|c0ve)5z~2jLC<3D=19QEiF1` zdkLfHAbd}V_x{87&n6eQ&&yWR%XN*9nv^@@iSkWfU$|D!hU7RwCxsaU(UkM{ngO&A3P|!)t zPX=IRJ-DLxS%&XT*F&8zQ~{W*RusAAMxXbI?b@Fzql`lACZOH$Pn53MB%0+sbS1PA zC*$(l74P0k8G5E!%joxu11lS+UFHM2(+O;l_=@}j#if@xr`C$Xw~hWCSvz^(&?97{QrD6i=DOkH7!-Cs*iHVg81CmyXLZj4Es3Ks zrDQb`QWPoNtpLQM(Aqt&aZ(nj!h-7-#?LYaHJ!eZNK*H5KoT8QQ><;|??SIO*%%=b)i)g1Coj!rRmXmMObCjr zo3vr+3NU;OqAZX5RBLR6ZoY|ucCs1tWoX!{KFx4@ zbQW!PpYv3yU4|M;N8EViz?|4kIyFzKycuGx{iSV%)opnjt~Vk z@US0gDre}ZWBMfX*_AfayN-t{!VmN7m3L$nX_1>A>vyNn3L=qp{=7qO+tV^H=x}-h z9!WleE?tXUd!KS!V0TI(boMKz3D+BXDUSuWMcz(K8Kgx~TtxaIsd%@#Ad?Zz?o%#z zjyaPnNtf@vW#=o|=JC!qeOnp&xtYFaXja8vPT!oEJWkUWk#aaQEq$r6o-U%o%(&Ce zub28_k|OVNRg;nFesQoqB%MH1`6hIU{$?8A=Is)P0~SOM0hi&LzDKl>E@+AoG$t zz|olm=t%MgV7dyAWA+ctAR8x?9cRlO4(fkA`tsIflHmUN@lZsUO~`~W3-bwP?jdsR zCH5jRdKKPVi0JvlpTk;=<5BDP{*;sXhf%X$(|=w1>}Auzv4J@nx}NComSzf>?Do8R za@Hgw!YC}*N5mq~DwU-eQi#}D)6>Lh$3NI}SaaZ#;FQFKyH7$G{U!H%!jS8+zEIG} z>OE~orIj!~BK}5l&&yyBWf%EnJZXM$fWVK_1xGET@0CC~Rq%xZy3tHA?p4mXT&B)CpL_jS{3?ogM8uIuOOyH9oWm5UMpkD_0N@0nkrkYz1a4=DMec{`;QY`5 zt=%D3P)STF#F1Dn0bq=xu^`7-T88Z*==zqsg>|%basXOReMS;f7X7)>$@k}5m;rb0 zA%%ijyGL#~=}xjWrddgOd6Hi4A|R~B&e^+@pQVR^$C@%*oSzl1+lGIC2oLlNL0C#F z${i3O1C$+QhgVPoLAuTTLd)%e0S!<%ATLtQ;uCsQhf;{4lmtd5M;@WE)8yk**r81$ z1zS|&-iumjy&i=^PeXKj`bSf^=n@?<@22{1Qh+K~=Xp@=7EFvy@_j`i}KNX*i z^9SU_j!w(*u$bPoSt0FVx(Ls>SHfhWwUA~<7iVTiBc$ESatDS01PAJqad(t|Scy;@ zq%f0;tZA^zW;#iwPe^eCDwk7DGR~V>{n!&;G|#^+6LmX8M`TVaugvbK?WymcpBW}O z0RclBViyM#3$xiM%x+;>q8fX}PKv1N(n$2>jF3vgs3qlJJ-J7=`Xnm!=v8vP0)~|) z_-BxFRNGATdZALM>F5%b`RwU_Rsb-G9s9^3`%SYGo#1%~L`Dwr`Q3?B`4iDgq~uDa zs$18k{Hc~}nZH+?Ki4BbU$&B7ww7uD%O3t;l= z_cS!d4rc3rp8NL6=rDjm z&_w;q;30P^UxNKmUUCSL^->h!Ph(qWMEsf0_78}B#HK`o#R^T3xa%TFuRyaMc)?y= zy&TEST2)zO3}I=UUjp=X&!$;KZ2Aq?JAWn4IkJ@+^A3k$z#HB`U7`AbJ}c z*2u;iMRh)tjL#?Xwde$?-H}VleNmagV>XrIvITZ_{4&+`=^OB`Ay{&(YM#)0Z@S@c z64w6-!um^+c=OiYOD-ZXB|NEd*^YpiG8Phc z@veWxs=>5+Nj@sxYa96zG*7iTn^Rm5 z7}~?Q4ea|evQc{G(zj=xV@@QJ4m%{gji>M!xsW*<;2Qj5X}@%Lh?6*Cl8#=X z4mt|9x&-2oa(^+!Ap<0s*|?(sig=L<40ZN+LHTU`@}%_c&9>`wx*VU!eu!_lXfRBr zo)B`||K2)?zjape%a2#tIu+#6}^@>%l; z=zwMh-$Ikb04mKM3I_4_{Q$~1n2K%Z?fRZRrMWf;*UpLhv??)8{$gjZq`)~yqnJpaHKsn@=C4!dJ6;aLE1|o6i=C^ z{g~po{bT`Lb07>$@U#b)b|E@0rX`RB@Ap14WvUxbWYZ@HgCbKqwym zE2bUFUJ$+)@%lyM?~LA@0w?opo}dw8I;@MZwuImC=t8?{ChR);NgmjWR4~JvFWa0d zT*hwBH8$rajfv^RZpa?oPl(|9<7P+835*tO2}b(L{6fa0=+!VtCs5JuSF}9UXC{=1 z$Iyk}y4#g1%{-mieLvhP-U%Eq0nOP|^*e=sr|@YRx85xgWiZkjt}_MKpmojA1=~%sTcDGh$9Gfm$d_<8T>$5580bb#~6L>Ccyi@ZtHc% zbEm`ajBELS8Q1@9A%F?L_Ys_2@+{uX0m=S122cKdUS(|g?>SY8+R2~9fZrfe*%O%_ z1X|i%#1>4w3ob?zRCi}<;rQ^E=>mZJh)3DVhRr2O^jpkDzE~y8;MQQ;rF^ty=`S?L z3YM(#Y#!H1&q>dN?AM3KGheVWX3P9A<8ri7EvynpNno5zvz`v-fR`SOGqt~AD71g< zsb7iI=x5SsuhS7D88K8QILK-Mb|ysrt0je~@5ZXOg;5efS~~`Tj)!pC`z!vtn|)tl z_-P@1nz<2n*CrB6Bcg8*b{y-ib`r2*e4MQ@cFa6M1VUGie5NP9mi0!O*)4N9l#{}q z!#F>O1bF5XG^{x$OPakW+m(;6iPa`FC90T%KZ<%U6e+RdXn>VKEVktGE^9VutwS$2kR=!Q3jCDI6lAiRM9(Tl0=A* z@VL93T5-+LKRcxxqa%xUNidn1W4Xc?ZuKi`0q0@Y?<*$jYCv;l&C+HpM%y?7v$VkB zv+g7h2L`M#CvEYM{mvkU8aA#&h4rjqL-(2=xXm5kGm$Ff-rwyJs>y}#v3ABMo~iOn zb;y=-+3NGFvz!>TZV(ont5|Q7G?rr<7tH56>f~qFQSU+t)P?sQgRIZU!e+v(mg%$ zknHVi0ee=x1IZ>;Y5_|38Jbqm=yOLT1CbZ%I4TY83pL(0%{Z1;5gN{cgRH`D6bPLno#da~rKf9GqS23w2edbox>##t4ar6>y#KU`;Y-hnfdivLK zI|%-S3jO`85&gFn@$XKAbHShd-Ty3(KWP0Bg@>TcFSl35Qbxg4rp9Pq`4kKVO*HP& zvEA!Yrrn%B$n_S;ay4LBFsQK?G9`hY`wIRW>3w+|JVdb3Ki&7>c9YHZV!dMv2z-P$ z!Z?Qgi37SJyl)#JaJO_+-OpecyG{DHu$BCt@2CIPk~I&=YL$um;n>c~&#&~LdO3K$H_R{jnoy~hysn)R>; zMn0scE;g$9rI4im(5^xSZ=|u3;1earGPDO1{Tz(a3*k;1o^Oz^3XeCc7Z*Ip%3GZe z2QM1s(6ML&BuT65#3b9(0-W)3AzCh6+SPrHC-bpa@0^%UZt|cU`*UzyYDq)2jXvx3N4MZ`B)JrEa~+IVlqTT(lLUr;nyL|zMR>FA!;_u2-u?R^pm zmEM-rH@($*IP@%GorPKC27e!Fi=qx&opi2)r3W${FS&xUPz=Jx#C}x&wsM}fg&a8j#+|JM##d;kBfZEUG z0ZJ#p4@Y|_B01?$BJL)f#fa+k@-dC==lYi_gC3 zCwbF4{UfA>;%=BT`eGNpG|s7uG&FpH(6`{27?f?Sl~i9L8NI?qFpE(HMIXNK&ws)< zD1c;|4r@6g*=KtQ3-BXry21IP=bXn#$Nstqr0Z$=oaej)36g1TFKvOw4yQJ@qrO6& zL8Al_Leq+gtx8`FN!JN&LrT7{x~=&~Uoh-!hJ4=D>^<%1`+}KKU^t@lgIU2GigG40 z?P!p3{~i(!Fyr~e%Arpr5P)PYRu{dbHKb^EiQ%nX5%6e7+QL$STw8SQAp`MwAM@xV zZCe!CnE7UzyTOy~zgVe|p4!l#MK=6@9GK1GL~zx=G3TF@0pc=$B3PfFA4%3qQ0=c|`4lQSa zH)45?tmL6?EL@iYb(a%F-N(-blO|2=M^!#!M+WNdp0Wg2?O0zJnofCbI?R7z$*Xd> z5tY%%Z@J`Xl)nYtT;x;JP5IROyLIWY_jfkhsSBL4l-Z=BQ)-p+tCaeu5&}o+Ue*9t zGj*(@x)FpFzYpy1)bRjAJZMsbLQ?~VR;T+?s8|Mf$s9;djp&;b-w}$SW7&7o7A&9f zK6A5%@+Eb6$5`^jqMl>ROmW0IIrT0HVFy@$JUk+9?0S8ubPg^`a&mOOY#AK;s7;Pr zFPmC)?zl)ds+)$XE7X^0D+BDH7m#%|qqOWxVGZAdA7XFEwMhN_Hq|;1ukFeupgN)3 zPM-v*1BH-eQY#4QgBD9tj#3x*!ZITp1!gCuyo(7EC`sidGvPQSQmplOp%a8hrO@{- zSQ^klWk)|gP}c0x9+UfzOh0~-@6Z`>I0Bz5r23?g4I7W`5B@YT0%j1hs}?x7D;H?& z%-HSCf@dVB2kWG)2XAzwK~K-G;0g{of6B6PK9dT;6P=G7r_?P9*yEFM{(w%cGT7wQ zj}QE7r{60tWGM9BHconn-~Ycu`Nu%sdps!*48JmD&qMH>El5I2!MucN1DzN7hiX^VYYDByfAVduq#J^F1jr^#RBwJw_2`O7zW9FY${V+VH6 z!Xo+yDf&^$OxXMK9k>}CWwO9X$emfj;cWI}o2y1j9Y$`D3A!xOpk$Ncae+Q+6ltp1 zMD#VKDQ)T?@L%^;4wPvWc*|9QoK$9(ViREd<9in)%?VOfO{e;*NbyRmSw1k{6<-Y zEI|H2m#a3KEU-*J-)m&ym0T!cT@*XFfGBQ66ybDd?ACI3q2D(YC?dm9^noT2qQ*S? z2Px<-#NXgjx7gr?W0{;MSedC+P9x!7Y%5Uc`!8@)$9St<6@y=gH+H)6da@D@oGdw= zOto3*8{}&*Rich^AH7WD4WPPET$92{C7&}2)V&n$t%$yHSw`6Qco4I^AXW4MVD4}+ zbh=HMPoHwpp4hch*VBEs{=)x_<285m9sY^`&v*w4dB=A2#?GicdjDH1t7Xfb%h7pC~bfoGCB9*4{ z^WD50Oq_ZJyu3UicI&UR#GAAV&C@EyUOya}=kevzz2?*8)TJ^ow7V!i6f$wd1ru=K z_^`(Ny0DYZe*zV}0CfXyMv5NDL>=aSZ5Tz7*sI^;vhr2ZAxM!ql16>(`*QYF&qC-{ z><|$vi7T$l)4PVfinxcf-l({>1JmcG8A}f5b8d@PrPDm?&j{+}N%q@*3g(lM-Ne23 zDOT2O8eW0LH;|SvAI_sT(q1sLhRz<~fusQKll!3~P_xOw0jG*^p=Z>8!pZJCgQo%X ziou1jnV|0V2W-DWJZgE0?u@neGMg^xGWg!FIP3}gcl0RLzm-Y|FlDxaC_rD}NuC52 zzo);kghob~ujf}G4hi2V9TRuzuoZlI@@07CRI8Iy>jU4HDmni^(&(^Dd0>6zlgnpD z&Ay<;cU^$b2*gAO&@2q0SqY#DT3=f+jNoB7^Wx^LG)<*HNh!e3nN5(Pw2VN)-yV>f zrJQ~|*!#iB+W&#pwM6cD8zC~!DImDYo^Q^9NY2Us)!NxSSlwkw@P$O5heV$ocbfq2 zyD;uWT{y$;__mzhfk84t?cQ%JQn0$=1TNXzJ%yH$O_Iomm%sFOHI20$?j195{}6Ia zwEW5K8m;~#4@z8fnEQkRdYh<|-hd=w{}cp4Q@sIJx=-B{xhfJx+P2fHEY&KEZ<&Or z_uk4NMp5ilRbqq?3IA~9digQD4qc2#56alubIA3{#LFFS*Uz}h>{nE=!B=iv% zR|UV>_JcX7wQ>O$?cQA13{_G>7>x#m+vg$P1e`_-h-vv4IgC5ItB~{T@gSt)fcKWR z&)a9FdkZB@@XP_uu@E1ic}UoD7ZzaDq1RH(bgS`wjzmG+L9(}9W6A`pja`A6J{G-T zoBSGp4%A0Yf1X7y9GyU6Ez1v_n@3|+UoR-=tz|bL1!R~WS5Uu@9oxkHefVP!9l*9q8K5DQuTo_+Kh%%^Q29#=l zNbC)JEy2(oPJQX=bLw(apRrjs$$>!G;50tz%P#p0_grqNP>zCxrOQ4fC6aWwaiWKL zc|Sp7Abqu3v3BVz{efhUJozvY_2dEi#GquhZ(I~4Jx7dK!wQa3$t}63KUhwGljnE6 zf~cWso?bA=^28Q)cXRq}x<@%PEadn!@4`dI(fTxNAz}#|2DVFCQ6yJH zR~SGr>COYg^Pca|l*lFBt(5;AXd3?j+8@P`a$eQ@tOy5Ynv<5Sw4tB)ID?w?gzD(QNr@zs=RJCnf-XjxApk$ zO}cl34d&@g6$RDznyZm;t-gJ0=t&?HPa4g?gWOndyNRXfHQXV>hge{KxQ&DMDrl@- zj3e`1+;TX+KMi- zZ$}`uTj7BJwg8Oc%(N4cOMJ1sdE5(CXjERdt|G91x>Mw=Z<3+pr9pi`C~0vyv_Ui1?(ER*q8 zK+jq*9ffoz=}nBu_=(vQ!W<|94-CE}vqKZGRzw6G?>Vulq_hJ3Wpcidl>{;L3hqLF zRXGk%p@K{B!_Td&ZmJUp=O{~>dDy8SElSV**RSLn^lF3@EVIyw;F}4Ty2(!A-gYQd z1ZC{jAKT^SeD=vGV}GN_HT))+fHt z6jlBfCxI;6q;`3@0%&*)DeE&B=44snYFZVm1PXM*k71$Mjn14E3AU24kPufSuvg&x z5Xj&p{U0s~{63g0N{hGgL(!j|pJrt2u{GTMdM;xE({Lt>!RgcCx)gm+6a04HShQ9{ z);W#lA%wCJ*wQa>eiaLQ>oSMjOF|0t5eS}@Vjh1@v=eCMb73v!eAkF^;qF#ym`bhR z>5@iqv%)7zvHXx5LQnZ^pbDkF=|)55_{8aH%kT8VA8M2RO?C6VFv;FR)wNB!n#`)r zA@lNHxcF)w`Nj^puOWwSp0=!s89nGG)YUB1rwa?lhytSa%&57eA^OB5Ll=RJ72z_? zgBJl;fYdiHmC4da7Y&-o6t z_ms{5c{2PNUMm9S9p5iL|156lr1nO{f}M`!t(%Z(fJq?VKF;G>~XO9YGoe zF3Ce5n0(i-^o~Cx9s`=}Y-SSTLYaJ2ZuF0dV!(NDP!fS5JxagD*SxNodCZ0#+Pm-_ zSc)slcV3m6JWpr#fX;l9a+b~ANBEwko;i+go+}XvEJ*GssSgy(Q{B z0<1c6@ofCM;J3du$ra`c3-miw!2bc2KU7H*IHs`n2?O*doedSNOT2EadQKe_MnSGY z9Qvs+(x#n72CgH54UP;~k-aV~)GJ(2W(DkLA#!)7=Qi9j=_HP74+c%QN%~XN&g(-a4DR*X`$dK%+N@H|ruAG&5jku!ErIktNzw%E`uZ(mJcV;X zR#LZ(9t!8!T2EHEF1>!IX~6;M6iR{<4kJKl(ACTmeD-Vu(q^;ax(sRRa8I;uP%6lu zQJ9PYzO5S4_HAduq{uXVuO}U3R_^8o_PGc>a#FGkFn5OpcBv+J%A67DOf07lP(iru z4fCnxftDX!;K1x7Ky5oAdb%DD}ykbWuX7GxmbV*Sr@2fH;&)W$>;|q)qDVUQ& zCi*Rvg_AUotn|Pr+aIQqUL~^B_a4gU{EsfepOV0p_o@BQt)u#1tGA%Y{B1<>^yVWk zaTGD|glJsm0>rcjBc!=GR_<~3IT|QazbhuW7f7OhD-OX2@UBPffH3DgYZ6#W4I+!F zuIwg@vu{&=&yV|bfhXyaWc|!4cY0eK`npwiY3y^&p?im++P}m$_n=v(2n^72IW6rY zyqAEed^d$E1#%xzLAhJCZToE!2_z0ag+`BvpSGV#=On(PEPBfU<#Wx|H=-Zt=#dUh)HW} zV{DWk+sQok5z(!}iV9uYIPS((WTHqA(fkM;!iC8crsfWE0Hr2gx}MY=ejqp`ACZPG zo0cugPduMT@IeEVVP^MegC-*{&9PHeGgq?o#TNEEVX{=m;<=}bDoe9Mq}{PG0o!PB zht2XK_aV5)@@VADp>7{(?d?MxohRz_?0tr?feQ{Q>uLVq^sH};d-~Q4S&belfgTTfe(a- zEvDrU#L$G3Qbz5;Q%)ZFjrfjpiyp1OJVj8*eJ2%9jO?U- zJPh#*E+icw@j>=1PgqEqYP}>3;Q#=?;wi)1wr0w2eA&^slRkiy7|||W&+&8<4CSnc zuS3DQccKpubl8QAX@T^<-A3K$;8J1{IXr^l?BbEOdYsTIy&#kDykBWQS%J~rh(eXP zrVLr7GubKxyv`sp#%!vHvfsdsY>4(2eh3{19!FX6K-2v2Zq+wkTF>D&JC`JrPzvfw z=_^!uE-dz}A)yubGRmT-5@wo?SW;_?+9cbx@^O5lb%;JSbNcz4=?|;{zBw}$@8wJQ zAKiifQYzfMZl(X*97Fm>&oDL+xs7-g+zM^h1TRG_QEAkyeI=P?(ueHYE})-E@0)q1 zQ50vg%UAxVH3senkvGU~X&v4|G$3SY*_H8lkTr7JLX`I%g4#&E53EmyE;+%i*s(dU zqjb-gG<>x8IJ6M$8syavc^)}U55I(fggWB@L@y>8VSdzg_C7Rb8fKN89ZiSdsrT;}K_DUu0h8{eSi^N;i5T08D}IIhiZ zt%myrWiN!SHg9Dw9H0V_6@tmlx3vCbE<4*22pCkqeep0LJY?koD@hAaHP^ zJIUfooSg78qPQPi8ZOAbN~Mk~&%r^cma`dm@a(&)=>!{ZjY%pA1!jM(!wcOFjx4j= z4;IOyCSGN4MNk4>^*WVsp%R^+CjF8-kiHVSBw_%b6nbOY866rXhFBM-W|x6LblILj zHa(xt;mIJ1L^m~O8dW#9U1|^)X5D|4fPmxG@<&A!C7p0HNZ5z%hdl}IP{W*S2T{Un z;7-dAM5E|UxF;1TI&SdWFYF63i2`Vv8)U!`uPzjy$ZKSttkBBQu(~U=vk@veU{{|S zwx*3oKAVT7`nkuDagcH_lrKl0{*_|mXdVYzSet@Ig0J^Z(4zr7pLE1W)di6a zZ(C1%S;O&W39MG;3&}jiiQnnhXW;>Nb0J`%2?{*dwOTD*U;IJ66iaeI5j)`qkvyvz z=Q|3UaS}be<4BsSd0FGgU9e_{ndSHlh)+WL{t~efWv67i7l8tS8v$C4oVSfbm_9Q} zP-1P@ePq1(nsWP)xMAyuL?WM{?V5KY_F;oD!KMP$^DFGh zVTptGoo}%YluXi5x)gIFcZ=o+^=Lo4w#E;5+uW#L>0NfKc0REtBD)O*GVP-EC9B$U z=HyWE{px6v$tgH`VTif!G}>Xs!hLt2!Qngu(kM=c{&C5Xkvu^z91NOG;L$Oa`*i*M za)&Qk$B--^!YWn)oj_Bq+X@6}w+HBNov{7Dx5?M{o?_FCf&+;?0HX3`;cv)kvU=zT z=>41GMS=%QGE6F)-f+X>xcU11#-y8co<;SvfqGiFCMmN`_vErhiG|`8_1iG!pK>=L zj00Ps0%FiMjlp$`3xGzAfU+5{S=&73s~u#eCmd>YO${1_o%vxuKDI^3(_wCGY-ZNq zqovXTq2)@QgeQ-Re`=ZWUE~b*VuQ_M!jO^LgIe?>oN0u?O0)(C(Dni!g(^6P%tF`=S-+VtftrhKsRG z$Ce+Jz_V5RWBdV)F@U+JIt=&}4LP*JX~dUJ{fHQdkxjb>h`EAb zy){4Ltb*>2RJXNQIz&SlgDuC=?n_eD{BDo|fVYuuSPu)uJSf6@$h{Xjh((}f@;S9L zRn8RfnL|z#o!btzW%j~B=DUTX$1sJhw|qwf(BV0jcWAU~v5NdFn)S#hw937gPwCkX z-T`a1z8*JS?Cr6(_?2LT7C_smnbH;<`A&p!;N|rs8z##B&PG}4r*X68!Sfy#u92hi-i)KEFJY+zmkwYU}{_HGF z1T7M?Ot3B=bjJT|0z`D@pr0dui4JJTYuj>~XA)V4h%iVK9gyC2bOpdgn+A6PLusuV z6PcGV1h|coKYQuqmtE%#=Xpo(8R+r;i_MZ0I= znU7$>c*Shtdq=WCcB*d0Wo`7RcObAhU`dYxsq+$##h;d}+G1>?4NJwvE#V(ydQI0q z=HGps%pkC9%8IUI>!Z(j-Rge=hUokbG}Q~K+UCs#29L9G+m}c0SQI*y(5U}nW=UA)O%5;~4JS*PQU$Q6RSh;)GzS$l!_ToPI4!q?d1a1HlSa<=qe6e=Q|8Tc#kZMcnfbiBv~cq_Gy2kczKEK2n? z)9Dt>4FW&qchye4XoWPP5u(IXsc*nacJQu^C=T*|p;|NrW)|Tz7vaG{RFh6WDx41? zk9xu4LywL$$;wxJwk-Tf&cj4?2TplT1)V3Tdb$IlIb<9v;X6v}W1+N zM~H;4l=0yPYp!@G+AP6@%1De9J(z~e(*dhkour5&u!{xZ3+r8BS~ucZZG#ucM}ji^ zQ$y%){wnXH{jv={Vlt3$5d7%Z1%)G@#eTVS!hxq9PR5=1Xk&g!ZzVYB;Gmsmh^%gF zex^Mz1C;ndb-tghr7i$xd6%`fN zmSl2UpkZ>tF3x`Yx1rfGYwX$>1`r^LLA_l7yZ4+$g)MtYcyesFf|i{GD08+9wrNTZs0(MGHfdQ+wb;=BMRm-tSDE2iMc#Qh zq{}Vp8A_|fE@Db-C8fBB0f)zlg8d#VE`BR3*+n-)@yQWc+omov*Sxqh41N(SMStKG z*DhR*;@eeE)v_BLBCcJmr>1n{q>*m<(+D6lI88aDM|DQY6y~fk7O~!mu;ZwtKg+KH zxQtizOJB65`~JxGdhto5=O@?K-7~A7U{v2V=^QJM zQnEu+yz>;L|<0*V^v541-)FDfZ?S1vxxvYqAF)*7w@H!ikz_g=9aD7I! zNh1ozS%%eMdF~*I^?bMxe!^D+0uyUmw8sAE3}%KT#X*0a*k3 zb!KH+rB8(Fh=4n6FR}@ab8n1v&Kh?8Ooa&!$7hY35m_Pydp=-!@Q^gl@MQy^%Tcjw zh5eA^{X#sPb0$N!ob=a4G9K`yuaJ>2F!#tt3ow44wvs7i1-6LqXKpKrUdj$@DtSYX zb*0OC`!8n8^3Y+r;_6j|cD4c*WG`oLsH>+?Pmxwdf$@rnDdhMTSy3Ot`MNo3AY8lY zt4TdUV=&9|Q(Ss)o^O9E`tUy3YUukj(&rzG=YK0Y)Srr;_q{#|oB;T5xsM93J@>ka zE(!{R$Otr!_@|PRW||U(jM9|;W^46q1*&5sUUUn}X$`20djxocw62HUSt<-Xd?G!; zcE3x_huysQ^+V}|W_nG(4A;qAN8t16$>Z7Ay!VX@*gRQS7PsV&YYpxl)E(IH^@2s- zE=2yIYVbb3<8&a1M@kkE;YDFvGNseRT-nI_OcjUY`W z>N-fTm8t0g+hMtIQM0W#PrrNnagNr_BT2@zqI?1$sZVf$MX%%Z2t>E0YKgevy1$*r zzsuCu6|c59_lrRO9w3=vVH5(87iW!U!5*ep4R080lmmXvB0;T6Viz2pp0-rPM-6qx z9-?ey4mG`+fnBYY@6`Z(b7yg0k2!N22;PB)*bh}?Uj~43KA!YI?=!~wIurGQdR-nu z(j`o<7L+j~J9rigoCWUkMSBfEF?1{+pHav@=m|lX$)n1^#Ud_Kdpz@Gq8cw3XQn1F zPAT9jXaKWl(Kstt+ciEed{oW0?M>G)tP59@!>*E3c?91V{C$r-9?2%R>fTmIrPF9Dvxe7N!ZijGJ6Oxc5KbhDT%xUBuMKQ^lLJ15&SqIyDKCk<@|AHveZp** z#3BXNEa$|(k-<{&z+7^-Y0&y+;I3VT+Gg;=^#U2`4bbV!xYbbeB}|m*6~kvgzT4Er zOBJtb2wx&Cj?lqBvP;5fx2H?{fAQwzS!*tQNXg8eF2YG;ZvME93FL7}&!26H=5eVu z&j9x1u{Ld{USc3tE%Z@|_+J5raQS7=#PpX>ewO0CpmAyQec4T-*}2E~jD*K$e60&e zA5q&_88(%GsJqdgX#8>e2}rcVEtic512SpLwK!Ju&l-ta6Yg?JFvY^+fD(STqjN-C zaDc$m2wK(o?a6=qTal+b-Uco<)D_V28y`5b(~EGFwm0ou#{C5|!Y}u*HIS$B!(1lk z0q6!$UDwnWP6yG^eZ|kH0vJi|rtuuk9DbsR9rH@ywq)lzqe{0}3mxtq`}j3HVM(oC ze~!&w7S?dji@;Io#wxaGLRGonhR0X-$Ekg0NHRmoW*1iEg-hq>zW!vUObVahtO3Av zg-jC}(2&AC`wk>rp7o!enkzaSP7?jOf!okf>ja|)yfKarsitwlZ=mo zR+QmE!jk@)LI?va;ZdX>+2TUYEal{!^F)xg6ZvelktX+pGASa$Y*$i@&Pu;O7XDmY z>{-51(^;sGbT>*W;3DZ`v7>H2C=N&h*_2}y2-&!$026dE+!;*mV1yqIF*F@S5b6bn zyckV%wF1_hiPd5?aIO@i;Y9*q;ScQthh7s7s3x;^M+mSVj$zsvMn3wI&sD}bTNnJ> zOs&F*Iir>4BOaP<_GBaZ$amUYBdNGJq6e5F(+`zii96VGXf~ui=5R#nmu^649T(O* zsG{J*!X>{9g7An!e<0>QN-Sq|l&GyJ<_(E33K-N50>JR)l_A52#xwg|B1^N+?Q0HZ zXNIaPW+$7+YwF3m=T{w9eeQMn2ne5%83YVb#15x06R(76;PfSbIGmX?lHm?oz>s>P zf5iP2$2UGMCj!}95Hl~rog&fizneKk=-XCL?{C%if5clNX+;1190Zk zkN2Fw9QHIH!-}2rv06>>Fy?zr)90&iA6Uo44AJx^{Eg#2krb5f-z1E?pm*>&;~loZ znSWm)QM*%9TvP@f8pCt+%F!w8_s!JO{UV!@*Q%URNs!_d8KPuNJgJ7WSf`Y`H>1qR z=>M9&aH}hG59v%@7z6-0(*{df;{x3zKYUR6P_WuG>CvD%1g%%OOKNP72KuZ$j#~P} z>WG{?d3LudVYb-^f#toW2S4Xb@+HV=Koqm)s>a7@8;z3^KX&RSj^Q!DRV8zX?DVZG zA`>o3x3XnHO7hylZZZ|B;Fh!peoEuOQh7H{vMJZJx-Z3*drIr@2=`FN4jb4kSlDxN zy?CH%Drhvad!1xDCNRd$cisO3Sx(wz=8UZ zjmidA4GWKki3SrQuY`tMohWIQ*qrH5IVYFO2kdS#3`!Ln4U@%w!gqLu9((3RRo3bk z-xRnw*mN!Pd_I{{%mcqACF|*%ZZg)5O=$v@)aIzxd!JLo@g`dI?3A*VV8Zj4@o4l; zbIc_u4NL>?(j#e+0S<{lrY9B-;les^_L}C`?#6_3@*8ba z%s9Lbh7pwfvU+f~>ImIYyto1LY+j-}+Cn&Z=4yRZN)3RDP#v@R?xE@YpQWj*dWJKn z07Dk`gu0adLHZVVXC^w|`8R8%6s?X*O!h+N+ce-0LZph+9MuPysRIskeXh2|COdiU z6+PWKI|}Oo{q58l?F^cbH>p4+YP}3yFl;C3Uh$u!-{q5?aW$>5Ko$qtooiiYU<60W zPB8^VXg;`0s3zq*AYpm8_0c3uivvk0eY8S$a4t60mgI+;BKftd;8uJAfV&NAlJZb) zTnSJjiHs(*&}ZFE>W81`p!_YXn(ljEGD41-w(}J4G*uB%OGRUhJXKDMon&%qO?)?g zmj9h-Enu{j4(|t9YVk4D5y_z0I^?$(A0I)ourD=fpq^=;UfR&K-Czr?LD*e(l0xI~ z(9~T_&0c0&Q#mNR;y^`t0a;m96YOzxRzhH5j)(QcG#3tpwe8%b&0hO5_{I9T6C&kt zSZ?x)b4sWim}_D(MvLw0tGP?VrA(QA${95x=Q-H5wlkP$6eZq;7yk zkj0TWw7bIW_1lRbcehdHis6F3)x34Dzwk#~32=32@S2ZCy7aKGO63+BQu(`qg%SQF zeyWuWiB)EjH@n0eTMiC#To%TD%o)sZk$+_*>fR(kYiWm1j*vZ~&xk@1gF(Ii4F7Nu z3E~txcXLI4<4yufV!49S$ufn)*)sSnzP3m5Xkx;Cv3dG&Faf^Bau3l_^BFm1Uogk} zClrVX4BlBkL4la;rT^mVcAIm-e{sbG{QZC)X#1cijNNC;v4y}t=i2xrEY9ZXoqv2g z+$zmg>j$iAJoi?I766#OL0H^W*=l^7q{HfSHQRSh+O{?*xi6R}+&awc)9;1uI@377 zN%rYu9|;b^1^5fj;8B2b1*SZtHO-V9&7*HU?rLhN8njIo1X>84xQ3m}jNMg-jl2v@ zG*YAIJ$M`Ji(LmLRQ&LWN4?jYLZCsiGahdsWnlJ50@nteHmaMc*Z{EvZhH}18}pTc z%1o3X$+vtFVJWFJ^-xrkBgK`P6bCg=dSJ)}H>>c}4~5w0W-lRS18H|9Y1;m>8 z*}Ct)yDYrMRMOFB6g^?gVe_0(VkX@zuzJ`F z;eiHa5^8N{HpdIa3f!1%;mY%vbj)T#a-;;rvkk=7*-BS1H7a|s?V|+0w~cK-g5cH{ z<6$@ZIiMX;mw?|ZyzrMQ@?!Tjg7sI($bz*ytF{S16$**USA?7I%8#J}1?c)oiO=q^ zri2Lag87_d!+L9TsYEaugG_L{$aPXQrNHQz7&RBZj4o^X5}E-uJ~xH_&MzWE@*o4n za-4&rLlVC8_t&-Bmt8WM>P6W4j$ESf`Fet~K_^*pDC}M-l4_$E%B_~427P5!(wqyG zhc+3R(k;a`q-3SQT6>T<4pEgBHs*N|Gk`1H2$Bcd6PL2w+D*TaQ^Q|hGhv7_2B=as z5hO_qN^o_kI^q&l9>5YbZk4)eRO7Pm_?2RO%b!$jj=E$?+w2@?0opYQ7jH>@leG6# zOHVIkQ1&>*6D6l()2bUdJO4g$|Nr=U$M86}wtu*dF|pa$Mq}HyZJX2BW@DpKV>U@M zvDKt8CTxsGP11L|_kNz|f8YB!-tY5ij&-edo3!()KD4ee5Fm9^sbjfnJAL2YH{8r3pS#2J}e8ajA% zJ6qKtk+iKEOM}$YZ+(CHttszG>&YNfT;0Eb%(or?0c5H;OSm{YTUmIDd7D8xNB*AU zGX9z4(s+rM%`jX1F@|z(8XWg z1b=vE3Q{3E@4#S4ifG&u@Hx-(IG4DeNK&bML%JIh1Ayo*)Elog`+@KcUF#VG9VbGloVWYPjfcE77xzn8dkXesg6TRc zDaH&y$}-YD72cRO62RrQRMc@*-mLyM#$#J4!vQO-W`Kg-C4{@O&PEp#1xKf8+tX{{ zxZ*4;8J6nxVvmGI_3jEZSajmGwqByFTXt+O<|x_R4>`ZMIdxC7ojju`*%!3C5+MWl z$|V4~cYVna!L<~!f^Nmq6R2ZOL#@`pp$vNzQURyZ8tYUHEP+p_&Ctg`neB?`&Mqc7 zfe9`w{;modO;ZW{BBID<`6R^j0b)R&NaaZ&XrkFL#2=mQrq)VXmTU|AiKe__j=gb_^F_7_1POkbt95hBJ5U>d{XWK; z(nyq@n?2~Jdra)#h=15CWyBU* zC7Mtvn;%51o6`B^?jEgPVobEN!;|JQiv9F?@R1(%3 zCw@B+c`U;jTUnc?!a=g+lH?zG?ApngeamvXm=afz`JU505>N)F0Mfxg{p)u|ExTgd zo+#$ry)jm`l~i5&b3ejZAT5%Sgu+(GqkZY6;$L`WNn`V;Qtld8W_++F)7~lCm?XZ7M zjxMlxTZZyNef&O5uL;i2sR@x^$0lAAJSMZZ1-?bcBlON$C&!(5+$XQkEUX}0HL6bQ zd`-MWR7~ZTi|A-^p~>faLTu>)z%EN7mCC26PDpPTy4CszINVhll_OJLg64fTTZrwXj0 zR}|%%um_X&B#`yR2GO>oFlQ`BVAtT6qw@H&9`m1P%z|H^?x6cE9#Ax4NJ%ZbW{Z_A zgYm~)tB^WD2e8zdv!qsjd3fo#-RXx6C2;moj6m`YA7F!{nyGWyE)_mP^oKATH$uEM zD6PJ4SXF07Z~3asze+*hK*iL-h;%5;SgERG2lbU31tEDu-i1a-0Az-cj8 zX!2ffG%}9=04A@V)Q0>^{8U8*W>q{w`=fY9A%e^SZh+UFOU5IO4B7*Bp!Q%&Bk#yk zzUAkb8!MOt#RCij(v{S;z*2MjvsPAJk%IY&v|3;}ZNZMxyUJQ2D-@Z$&M>Vt1$~^K zcQ&;^e(JJd=~1k<=hNwalO5vUSa;u9c0(h!inQ&o&kIds`ZC(sX>|jD{uD0!DOb*` zF@gsn7mjFp$pe_e?)%PTo4-*0+%I0&JfBw}0=B~czF#E&Qdkt4bEm$=|K~u+q`k#2 zEL=~61chjy`4DRn{N9+d=2 zh3bXP=UkAr@33=bEng()c4_U6^PtNB0s<9s;u&zYD_;Tk-YV^><$&f_rz1~ZiJm9Q z#D+a~oc(q*mVE_$#a=5A$~&-0~6t}ru**J*hyO9fGZBO-a>!HxXG*AvNMvB zEb;;3!#(Hr)G1nF_iQ$u&l4RHc4{-t&0IU|$`Q_|ZKRt$0A(0*W+^UkhH@um>nV6B zpaSbQT0VTCH!AC{aK?V&O!#JY=S(AMn`Za%+&U!E*0ECb^Hu=|g{^4R;E*kHY1(-p z()uCqYOQ#ZDJ*{uxofo~a#{b7-2z8j#&udG=O?9u9`IUM=2|sh#Zx`{awRLaE=@O-r8tixDV8haFvs(#2T9!F0ia|R!YayXA^(iH}=7TLmy+dk8dR-?II zjoVEqm8*E)Jw9P#!H|$7wj3|zRLgr=0rwaWmXI6An}(KfEkiv%m-;?h$dF(ogYZf56lO^VeaMMnY%+)^;v`N>N_E>iMz{=yLJA~gvX?(M zG}O>fGT!<&gND#VyCi)nAJZq~Wwsw7U`Hw93MYgyi(v<$tw`dnV_FB%+RG`*f#Z}6 zfg=s1wF#!wG1LC@@JaxwP35323N5g-iXbM2@JBd@Yr~+<6}LANN|_Vm$&QQKbvHE^ z7rmb}$n{s$FC49`Z1HHm=9ZpfgaE3hY-@~TX%-$&_@K*{d-?S!Vvotp&)+m<=|54M zm5Q1v`AiYO87j8)hY-QRi#a%zDx|YX__S14!^U*3Uk5)jr7z(YG8o;U!`?qiiwOtmRK>!+fBuX< zbF)8qgRV+ZF7TaGo)qkskWwGeWpU0k@?v#Ag95C$bKti?Luh1;b0fIohtfnrSaX5S z&03gYtLar-##pJdS18ZL*fcpU@Wq@sEn0J*u~Bmmk80r4QI~AJ3o@=;z_*ac`=Lnw zT@II+`dyps<7k$a66cfz*37pjtOYXQWB1#FxaJ~+!so%rX!0FCDzkK7ls%ieNIh-}) z;hiNzo! z^^z*KCA4M4EBsLbJzi1mi5jL^GkTm+4LZc-x9&#yAc%CoK~o!8_cMIjv?(5bgr6v>n7&xKBHjm1=OTCq zeCIoS(;9za=&Oq6JC}1&6RQ64`a=)r41D!bpY}K4x!sWw_+5!a zu0Hv$2kSdVt=$V?uqeG2t5q!+;wQnk3L!QBvL3oNwuOWY9t9f@m2F@H%mzY)n?L-W8AmHE#K`%@>V!2%eYhHAMP~ zwMXT`WSG@<#HA3+IL+~ZrO2PGAY0=8_{L~{U!&&m-n+^DHF`u~gw#Jf9q;PqCY$ve zxAFaa!aaQbbAFxY*&EQODw3;aTahRn8<701)!EQEmM zx((k;eCm58 z`P|*YG6e-9I>ZoOB_h1#kktfm_`G9Y!k2IU%c~nLFy!H)h8V84)Km~#Ei^otz2V?n zs$}#~i6KO1*X@A_WIPtK%}M8cu9(3mwwr^qfUWyi>t|4(Nigg-HZBN(jkwOB!Xi`2 zsLe%t&t1!HPfj0r?a)@b#8TZ>r@6=`4*2zsZ4!^w_Z`9A>h!puk`79_bmjD^*M20$ zNvxQ5VmU#ES|r=Yy}`reGdfi0iR7jwN!_K>uKHS>r5~Q=c9Bc$Q?q$)kp&ORJ)Y*7 zA84kmxMRughqR4&^LzppW)ru8cHdceJx6`sLuTQV} zWVis3V#&>9V6CgKt;)<}Ul7ONUwLH ztEKi+5gU{Y1o3`#okZ&iA8}1JODZ{8gq5)@xFXPlNdhb4S5`+*a7b|O-{zD~>rN2+ z!ldjvY(on^}_2OAH-8ZT>8 z%;2NySWy`cdMr|@U#ZUbdYE-kkw+2ae2D#F$j&u=q1=D&!_k<05YOs5JOLPc2n9Bo zVN)4?B{TYgV^rgDR}#)Qy{UYP<*f&Kpq&L+&EB%k--yXsDUqsB1kcgpNpP_;Ol&dw z+hIonKWKw6%mMSI-$UQ@)l$JeXyFKaAu~_%x9RF=i5e|MIcxErt(G)i?*ps43upAi zeTVCMKl{?@$}4*E;THkxj#+=2{@6+eg=K5uo^mKG#Q&=ka~Bl)jy9Llcd(R?^72g^ z;yNX^EtJPG-A51JtnJ$9mgO+t{84?|i!)Se;Nh>xoE_42(Ji>AcL+}{4l9G_PH<=P zZ&hNW_YCQ&vIC^*dTBSYqKiMU5XO=Qit28Q?1 z#{y@kp?tHX+>*S^KcMWsAM(_a^ga8ldvU9X%%20Yk69!9x48^s^nckMG-k*M4*W;3 z+CJ4bK|iP(r;EXekjwS?!?un?v7Ca@I-K3S3yyMo7VSu}Gt6N=%Ih;EWcElwrbz53=9Mbe za3P_A(YR^=n5+P$->*HpT=By5Jwsjj1Cp0a4J(vW}7|+-= z?=|g2~70eYgvjTSOET->x^tA2k=3 zN$hz2l|-53v1nuh2mIEN={fq|bf+W{8BiG@7rC$>SZJpDApDbF`G@1ZZWOuU*C>AB zA{yEhSYun9^O0-omhxzkfsynQ3mt~(^|Q|TS|N=R?0n~=vRJ=V3#390K)C!6n-yvJ zX{Q8ky}Ka@P~Nr>Kheq-t7X4Wir8{EUDzCJm1&`jLnp=L4MZpMTt4IzhDP~j_G42K z^s~pC6JL4?n#QiQ$X58!^|L4m1z}`fr`i!8R%9-*30;((dk3~J%am2F5j(4Ux?AY5 z*V?@|e!TnlctgJp4U398CS#&O%qfsqidT(ippz+%$y_Np{uAjs^$y%fmM*!Nd7k;) z5#PdWrSY58C*a~UZFj*bAvu7!Bx7NW)=A`y^3eU{v2p!r27gn^AMc}4yr5id;#`h{ z#pgtx4~b<3>22v0i@jxL>3eF|hzQp=SdmvG^SVJn zoiRaX%w~2IGs)Vj<&?vz^LB`GZW+C}&O*T-8C2%|zsqS+dlbaN_7sV~M929ma&k&l z!+7ci_hX)`<@A9-FgaYuTMH9kU5Q=1Q+rY`p-v0+6KRloYRglH5$X-gF%NO{84-iQ zE`L^L0w-5>HXq2ooc}M%=r2s}?`>HP{Kxr~p{d|OB!&LERHNG@=p7E`eQQqkHk2xk z2?h|JjlQBCAIb#3*7!^oer3<3qI<^B%qT*~>$aT<6^pE?M%?L&fQ=got?35CV)y}B zi0kw7Xc#DaStw&08}v(LEkRErd- zYr&=1X(4|psu*C*9UC1Y;j?WmkCirX?GJ- zg=e;W@LShqSm282VYH`}>u|s6bzk1i<05f6{>?ZAD%KZ(+bNGJjfRI2n=2Yf*wg;_ zjRZD3Gl}Jq_+ewNNbz>ZDt*-SZA?n)wr}0=-?M)(-h=rWztGgo2oHb0UwCcO{U0-yWQs2=x zHSWjyLow_4JNSt^X68m1Vw*pq&sVXz#Kc_SBc_u$h(|2o{1N!SlJqv}?P);)@39_` zOu(5SBmPTKxpr|>dVo|)MN=y%kvwb!Wv~ORx*zu0_3=H=5-hTc^c4(=fh;JafV+zz znqF%uL}izL*Kl-Z8rMC`W9TZdO*Rj?yO{jYEYjwZX+u(_1`tnmFWzQ!jjhZsh{oSc zY67$3zrFw7ex3Q`g?Upd9S(4Oz)_N6Siu(KRrjmc04wTK}K`S-Z zEk?|zDCsuc-@lm@yF-1HB@17l^+Y`%Fz(QoMSzrD<|Ow!G}WQ*Yf$V?Xd7*r zh@6W0Rlmk-`iY}G=>mW=o0{!vmWaTq8e!i0|lbU%&Dk# zQCR7TYx%Nwj+~=U_)U|=j-i1-mNx4=a_9tL*c`3#>GEfQe2r6NllF+LQ0sZDYUhCJ zikTowpuw0vnUD@=CP0S^4D*qtYraCB``FGNRRSk$aY36{uT+!M*l1-pZ}H10lTu;A z*V2N<nDav7)7!S#QW8hr(Pmt~5uG4biCeyh(8b zH!UGPZ6lY+yYWL2@pifIGw6)m`OW3HwX!sI6lvAu7d)5pG+)qxt1RzDXLUG_dsp8- z=MT*$&cYZu!?y$;s&jq*lx00C65v52|H3sB)u#yUVu%*!87(b6RGdoIZ>Enj3q*yt zgJ^{XrA|&3C5))9P?fi7e{e|PSJwN)v=DjDUSQry1b$Gt6cDDJ;&~tynN@oh-zq%% zx)uHm-?t0*S|oT6-0eM3Gv%FBiRtT*vn10jk}9L$P;phN)<`R(@+_R)K-xk7iZJyO zc05EWaXi#8*Bmj3`_wiIWVG*!=_Jrnn6lN6jo`~oC9oze%7y8X@!O<$dPgZna{A_# z0*xnL@AqH9ET*d(J^GN@!Sr9V!=D(ncfkJ<&1+aWTWY%ekqrGqGyPL#zi`14C$%Rb z^@!=V#=sa|h;B|b$5k!-Mtrf-On}LuOTe;wXz+nD@Q&xFHMKZ|+1SWQfk)&A!>z1ncYVM#(Tfb&aUl?A4TCA%DppO~$iT)wZ= z2%w(B@_4ZINEuVQn(v64B=RX+%{|A5Yi%u%+-w493>v*(tylpn30rzz(JKrnlE{@E zq5slt702@|OCj&{rqT&%_p-#Ps+;I?i5W@sr+_3N?6Fi-ktsI_CuV;tVXB}T$UrU9 zQcD)Y_FAn&CoSdH!WS5LHq+%1bt{Y6WtoOj%PcM+-q(L{3VkpXN1~H9T(+}{4Iydq zy`=$SUhRp~L^!H)b=BxTzrzuc8{!c^O7U{VNn*Qqsb55_hu+nv+0#BM+2tsWNsUm^ zeg6Jlv&o{$1RLIs#lEeIg6q>|$-}3RVz_A@*J@o~y|VInMAdQClHbzX7H zH?-v!b4fnQ1y@;jozKWAf70v;D?QbMvdAgstfL$uTurI>3 z?qC1nN+07dJ_keSi1L5AO${OF^Z(Eh5cHWA_}61PoXMlfeX!BuaA%HZ}4{0$OvIDEi#X@{WMg*2gJoZSM5^yAGrW? z?N@Tnsv?`ETAj+PP;-R3q!-AbpcJf`2uB^S^I>wFzR^`>iW>MQanw_J4w1o+%*UH& ziFQ;SjrYa`mk-ucOD$-?zD>c*wyEaH)LJ9R!`JxbSuVR;Ci!XO@^ zUxOl-p=>TqABNG#8Bx0~rIt@-y7>b9ZY8sTW%ntRA_}ghMC^oVKtCw2Q^2WasUuUz zso^!AgWcLbvbi{Nr8SW(r<+^CV+rvzF;90bCP%Z0w88SngJG!v?D>-j<)Rjg4aN~W zvORu+ZI*8I0t_MLTs}F1rz}_T$8t`p&;rj2Nn~-Rx@3gXjPhpcG8-d$_K`Fo1*V6P zgQ9ss`>tWkqpm2GtV86g2@6WiQV~aO%_Ie9!;t`v0=ToGhfGLedVZ%BSM!s;hUXcL zc(n9oQivMX?H5XBVn+$BXRnp>5;dj zH?@u0*v}r_o!b)=>f|gs*PI*rDU!&{%3tUEi?JB-aAJrv`744{Tr^hwG&vsYL{y&I zE%6`Q4s0vFGNK@2EoK-1xnx?gM_M}0kNQ?s$CrIt2cU%L@3_XSb*abkD|I8glHObH zaD{ez8Eh;UF-8Y1`oGo`MtsKOkz0>9ILcI}<(E`Ze3#{#J9yRsq7*B1W?(^l`q4`r z&}gz-PcW;uv`Oi90dPtT+kl|kq-FQ2fF4{DL!~+91VU zH?AA)xry;uTB?FU4au>dPbbw0nm??yMJTVB^p6SEFSwYOh|_t)569HT1Xg*u5mLaM zd`wpq#wA=bINe(t!9RqZ-!`zVm{WZAq(~`zvSq&8tK{Nw3^-W24Q#&RfXTi*0K$uExSASRqMqTZ%*GSW! zikd?`7^1b&e~%97OZ}!KMHQBYx-7Sj+ENrU2c&``3k*9+sW9?HT^4kR6` zSx3?-hR$sSL^XyMv?>QCAq*vg)tU?wkzKKCj<;FL*C<>u#zGmLdEdO|eR!}6=1L}s zRob~_VCgLw2A042;wC6r67I{{I9=0s(KHsvDjn+zCQqSixoPDwYdI#gqiC|@Cs`SN zR>bMvZEQmm8QQz0Iw=Xb#?I`V*3dN`IwyZh8T`O%AttzXM1g9ZSj3Dqb1g1!lZ|Vw zd!Cp1Ld|MM8gn%xN+rnU@yL^K>WMI7kIHJ!QBY?-1JvId<4lKHg5fv|p~QDV3ydU! z?H$;31g`tUUhumhVQH-sR$eIsdvZrqaqh47$lD1qNq?qVY`opN8$k`Fv58_2uH zfFXE#W5BzOoc?HX?=$F;t|vn-TLE?P$#`gjV6)6)G-ZS?>Z5XOV6(%qsH|^-7l{_J zoK2+d6L5NtkeoVA<#`t?)$Rt60`q|B5N#>-xNSCF)_PS`K8jsNM=4AZ3w_8`xzk`)?v`+k7}DneL{kw zmCNUxIN#$uzvk*shQgbUumHjee54oA$oWjtcRfe$-8K<{xdXi>UU?h+IK8Fh)5*UR zmVA5eWdT4qZ5=i$9>XmZ9s+ae;}7J$%p@t&0D2NcDgtYzWju)5#{fpD<}8K6L4NHT zwYFdDkX@JS_u42wD4r57)U)7MEEhE>T`bEWXyP0(c<%|f-HOaN;QMj(hvhx(^xB$U zZAfNNnKCw8{Jdoo*Ys{)Br)ikDv$(ulvB~5Kn7TfP+GG{!;~=qYqS@w!6k3}hg41Cn*h_Qi$|V?OW4eJ!t&O1ERr9d5I zNkKwNda2$;^6VJ<C;Lgdv?*MN^lGXPf)6Pl_~GcfbexDubq1dVMYB z`ur~oyT*x`F9BpgqWPCz!&wv}Ci@$3h_TIn`>s%^JMAq3u!7l%UZEOC>=hfwZH*!> zS_CmXTx2Q-hh5dOEQMLgOz;{(eur-D?1@gf)B%@p6( z<8Ki62FMst`W_SO(Y*VpV9kmeXDhyAFU3DgGfvdhFickQV`)H&N}TP78?@~ z2E3d=J8ugE0yf0ys~O-?1}3d#JDYIA#o4Lwdis&^2)Y#4STqSR8JlQ0qCsrQ(yS8e zOq$(aXKjj*Pl6=ZL> z0+h#K7gFq(cTvulB3ch&*WJr8m%JTpWauU`Cor;s%PNJZ@$%q@x({}^{0bAMFc$Rj z9EzR;Jg%sR1oMzk4jQw?*bTF4XT$z-YzPcocxkhaBxuL{F5Fz=TgxR33+FArclmCu zkgwKDgoY%%QcYrKSQ)@UO#fWRs03 zc4m&g3O8*J^2HT<6X39ibQ->IY<=go4MhH$)^!z1mJK0?(fz*xs_;5sd#17!62T( zk19f$fV5;e2&Vpnom8Zm?;DoR-M7Ag$er4}OmU8Q0m8aO@4lP-Eup^Gp9`#SfCqEh zYy)g-XwReVK{{yfyuG?dD8DF9$ZsPwkmxJpZ=ALJQDMh(Xbik(p* zY4u8o@SP~U;w&4TW6&WHH*||4YN{lM!>;JFnWj#s;=gZ zSU}n|pY`qlAAkEM|Iw9jbC}?|i;-dhneu!^l3%WjH4Jm#gK+b!UlUMyw&}u)m|>I; z3aLRsZV?*esXK&OoP!nZ=i5k4n`9lf3D>9JDTGLLs7LVM%HoODcL%;Q<4_x_UXt>? zZgHaUZ&p^gjd?FB=zrC$j$@_o7eroN0 zJbdVa&~ojeZB)kn6d<75MD23jc$oapicUi-UT2bU7TLlEhmH{HNXp)IbKS{zk;Gjj z2WGZ(V48@ftps}^k!VZXR&qr3a~I$%i=H-jAO%)B4emmmW|wiHy>8eLn^>zMs?&&{ z@hs@v(QF}^OADplHJ3q>3o!ItafOt!o-)pT{90qX@$GYn9U%~(WchfZs+!uVb9a%ChQIA5 z6{Zr=Q^nC9isAylGLZdD&d>$TWtcbD;mnM4xO-{u*|tV6FxD|1QjZ;Y30*(@(9v2@ zafUxpZb&^WZwGA7{w1i!W>K3J>oF6dUBa7O2uW_3k!SyrVBP#^v^(ae&wc&jboZ@s z<%Pp7Zt?u8D6T^G5C_Y)jp2Xj30fF7@eJPl$w4!9r=Q!K$s|Eph7l%-gh1kz8&cAB7+)Z zaK`8g$5dabH~Ra7^obCIPyWKQq3SQ+|LNrG{TH15|E%8;#%XVr(1Z z4`JG`sB*FZL^(FvG1o@u@WDhSDo0AnT(Xs?Mg+?s{R#N_eBS&}5CDgo1O*2Lg|i

CinAo-o$$(uhP)LBoCsSg5 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%0DCBk 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

v;} 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

7?e$}M*>z=DK9N!``#0ABeoA_=` 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 z
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

!y45Ay!7gBQRaJ^)_l1K|Tc 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

?D@>j;h`^VoVC_ezej??xL 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

Y!C3A5tWz| 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ℑ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

  • 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 z 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%0DJUbH4#6_(#3{9A-!lcnAKs4=(XWbGD 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

    dnf!nA%TJbwsdbqW60?@pIxs| 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
    oEbIQv6KsZ0}Z^vxwI+iAg5I(F0ENBjm( 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®kx=%oVn*B$ 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 z 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

    n~#N8V^S!J{QRn&6eaB4Y; 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
  • yy76SYzN=ec(Vx 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 z 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

    )aTH}9<>rnt;7vtO> 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