From bba4153f475f93cddc1dc5373972c3f838d42d63 Mon Sep 17 00:00:00 2001 From: Ziggeh Date: Sun, 8 Dec 2013 05:51:03 +0100 Subject: [PATCH 1/7] Heal CD reduction is now done through scripts --- scripts/commands/combat/of_sh_0.py | 8 ++++++++ scripts/commands/combat/of_sh_1.py | 8 ++++++++ scripts/commands/combat/of_sh_2.py | 8 ++++++++ scripts/commands/combat/of_sh_3.py | 11 +++++++++++ src/services/combat/CombatService.java | 12 +----------- 5 files changed, 36 insertions(+), 11 deletions(-) create mode 100644 scripts/commands/combat/of_sh_0.py create mode 100644 scripts/commands/combat/of_sh_1.py create mode 100644 scripts/commands/combat/of_sh_2.py create mode 100644 scripts/commands/combat/of_sh_3.py diff --git a/scripts/commands/combat/of_sh_0.py b/scripts/commands/combat/of_sh_0.py new file mode 100644 index 00000000..dcf378ac --- /dev/null +++ b/scripts/commands/combat/of_sh_0.py @@ -0,0 +1,8 @@ +import sys + +def setup(core, actor, target, command): + if actor.getSkillMod('expertise_cooldown_line_of_heal'): + command.setCooldown(command.getCooldown() - actor.getSkillMod('expertise_cooldown_line_of_heal').getBase()) + return +def run(core, actor, target, commandString): + return \ No newline at end of file diff --git a/scripts/commands/combat/of_sh_1.py b/scripts/commands/combat/of_sh_1.py new file mode 100644 index 00000000..dcf378ac --- /dev/null +++ b/scripts/commands/combat/of_sh_1.py @@ -0,0 +1,8 @@ +import sys + +def setup(core, actor, target, command): + if actor.getSkillMod('expertise_cooldown_line_of_heal'): + command.setCooldown(command.getCooldown() - actor.getSkillMod('expertise_cooldown_line_of_heal').getBase()) + return +def run(core, actor, target, commandString): + return \ No newline at end of file diff --git a/scripts/commands/combat/of_sh_2.py b/scripts/commands/combat/of_sh_2.py new file mode 100644 index 00000000..dcf378ac --- /dev/null +++ b/scripts/commands/combat/of_sh_2.py @@ -0,0 +1,8 @@ +import sys + +def setup(core, actor, target, command): + if actor.getSkillMod('expertise_cooldown_line_of_heal'): + command.setCooldown(command.getCooldown() - actor.getSkillMod('expertise_cooldown_line_of_heal').getBase()) + return +def run(core, actor, target, commandString): + return \ No newline at end of file diff --git a/scripts/commands/combat/of_sh_3.py b/scripts/commands/combat/of_sh_3.py new file mode 100644 index 00000000..2ecc4873 --- /dev/null +++ b/scripts/commands/combat/of_sh_3.py @@ -0,0 +1,11 @@ +import sys +import java.util.Random; + +def setup(core, actor, target, command): + if R + else: + if actor.getSkillMod('expertise_cooldown_line_of_heal'): + command.setCooldown(command.getCooldown() - actor.getSkillMod('expertise_cooldown_line_of_heal').getBase()) + return +def run(core, actor, target, commandString): + return \ No newline at end of file diff --git a/src/services/combat/CombatService.java b/src/services/combat/CombatService.java index b943779c..420d7d3b 100644 --- a/src/services/combat/CombatService.java +++ b/src/services/combat/CombatService.java @@ -404,22 +404,12 @@ public class CombatService implements INetworkDispatch { } private void sendHealPackets(CreatureObject attacker, CreatureObject target, WeaponObject weapon, CombatCommand command, int actionCounter) { - - float cooldown = 0; CombatAction combatAction = new CombatAction(CRC.StringtoCRC(command.getDefaultAnimations()[0]), attacker.getObjectID(), weapon.getObjectID(), target.getObjectID(), command.getCommandCRC()); ObjControllerMessage objController = new ObjControllerMessage(0x1B, combatAction); attacker.notifyObserversInRange(objController, true, 125); - cooldown = command.getCooldown(); - System.out.println(cooldown); - - if(attacker.getSkillMod("expertise_cooldown_line_of_heal") != null) - cooldown -= attacker.getSkillMod("expertise_cooldown_line_of_heal").getBase(); - if(attacker.getSkillMod("expertise_cooldown_line_sh") != null) - cooldown -= ((attacker.getSkillMod("expertise_cooldown_line_sh").getBase())/10); - - StartTask startTask = new StartTask(actionCounter, attacker.getObjectID(), command.getCommandCRC(), CRC.StringtoCRC(command.getCooldownGroup()), cooldown); + StartTask startTask = new StartTask(actionCounter, attacker.getObjectID(), command.getCommandCRC(), CRC.StringtoCRC(command.getCooldownGroup()), command.getCooldown()); ObjControllerMessage objController2 = new ObjControllerMessage(0x0B, startTask); attacker.getClient().getSession().write(objController2.serialize()); From 8b21e32f6afb2caadd2bcbd6859eed7b6a10b889 Mon Sep 17 00:00:00 2001 From: Ziggeh Date: Sun, 8 Dec 2013 12:16:26 +0100 Subject: [PATCH 2/7] Added First Aid Training (commando) --- scripts/buffs/co_first_aid_training.py | 10 ++++++++++ scripts/commands/co_first_aid_training.py | 9 +++++++++ scripts/commands/combat/of_sh_3.py | 11 +++++------ src/services/combat/CombatCommands.java | 4 +++- 4 files changed, 27 insertions(+), 7 deletions(-) create mode 100644 scripts/buffs/co_first_aid_training.py create mode 100644 scripts/commands/co_first_aid_training.py diff --git a/scripts/buffs/co_first_aid_training.py b/scripts/buffs/co_first_aid_training.py new file mode 100644 index 00000000..b0ffe0f9 --- /dev/null +++ b/scripts/buffs/co_first_aid_training.py @@ -0,0 +1,10 @@ +import sys + +def setup(core, actor, buff): + core.skillModService.addSkillMod(actor, 'expertise_healing_all', 20) + return + +def removeBuff(core, actor, buff): + core.skillModService.deductSkillMod(actor, 'expertise_healing_all', 20) + return + \ No newline at end of file diff --git a/scripts/commands/co_first_aid_training.py b/scripts/commands/co_first_aid_training.py new file mode 100644 index 00000000..baf4621d --- /dev/null +++ b/scripts/commands/co_first_aid_training.py @@ -0,0 +1,9 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + + core.buffService.addBuffToCreature(actor, 'co_first_aid_training') + return \ No newline at end of file diff --git a/scripts/commands/combat/of_sh_3.py b/scripts/commands/combat/of_sh_3.py index 2ecc4873..e19f3ca1 100644 --- a/scripts/commands/combat/of_sh_3.py +++ b/scripts/commands/combat/of_sh_3.py @@ -1,11 +1,10 @@ import sys -import java.util.Random; def setup(core, actor, target, command): - if R - else: - if actor.getSkillMod('expertise_cooldown_line_of_heal'): - command.setCooldown(command.getCooldown() - actor.getSkillMod('expertise_cooldown_line_of_heal').getBase()) - return + + if actor.getSkillMod('expertise_cooldown_line_of_heal'): + command.setCooldown(command.getCooldown() - actor.getSkillMod('expertise_cooldown_line_of_heal').getBase()) + 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 1544a0ce..e742a16e 100644 --- a/src/services/combat/CombatCommands.java +++ b/src/services/combat/CombatCommands.java @@ -307,6 +307,7 @@ public class CombatCommands { core.commandService.registerCommand("co_hw_dot"); core.commandService.registerCommand("co_ae_hw_dot"); core.commandService.registerCommand("co_position_secured"); + core.commandService.registerCommand("co_first_aid_training"); // Entertainer @@ -424,14 +425,15 @@ public class CombatCommands { core.commandService.registerCombatCommand("me_traumatize_4"); core.commandService.registerCombatCommand("me_traumatize_5"); core.commandService.registerCombatCommand("me_stasis_1"); - core.commandService.registerCommand("me_stasis_self_1"); core.commandService.registerCommand("me_drag_1"); + core.commandService.registerCommand("me_enhance_action_1"); core.commandService.registerCommand("me_reckless_stimulation_1"); core.commandService.registerCommand("me_reckless_stimulation_2"); core.commandService.registerCommand("me_reckless_stimulation_3"); core.commandService.registerCommand("me_reckless_stimulation_4"); core.commandService.registerCommand("me_reckless_stimulation_5"); core.commandService.registerCommand("me_reckless_stimulation_6"); + core.commandService.registerCommand("me_stasis_self_1"); // Officer From 47a2706432b73e9d6325ddc4d0f1208a5d0455eb Mon Sep 17 00:00:00 2001 From: Ziggeh Date: Sun, 8 Dec 2013 15:12:43 +0100 Subject: [PATCH 3/7] Cleaned up waypoint scripts --- scripts/commands/requestwaypointatposition.py | 6 ++---- scripts/commands/waypoint.py | 1 - 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/scripts/commands/requestwaypointatposition.py b/scripts/commands/requestwaypointatposition.py index 60b932ce..2acdedc3 100644 --- a/scripts/commands/requestwaypointatposition.py +++ b/scripts/commands/requestwaypointatposition.py @@ -6,9 +6,7 @@ def setup(): def run(core, actor, target, commandString): commandArgs = commandString.split("(^-,=+_)color_13548(,+-=_^)=1") - newString = commandArgs[0] - print (newString) - cmdService = core.commandService - cmdService.callCommand(actor, 'waypoint', None, newString) # No need to re-create a script + + core.commandService.callCommand(actor, 'waypoint', None, newString) return \ No newline at end of file diff --git a/scripts/commands/waypoint.py b/scripts/commands/waypoint.py index 5e2802c4..029fe3ad 100644 --- a/scripts/commands/waypoint.py +++ b/scripts/commands/waypoint.py @@ -74,7 +74,6 @@ def run(core, actor, target, commandString): waypoint.setActive(True) waypoint.setColor(WaypointObject.BLUE) name = commandString.split(" ", 5) - print (name) if name == "": name = "Waypoint" From 14f75cc1b4bdf0d4a02e22aded2cac8c16d013dc Mon Sep 17 00:00:00 2001 From: darkk1138 Date: Mon, 9 Dec 2013 22:54:21 +0100 Subject: [PATCH 4/7] dancers can now gain experience by performing flourishes (calculations might still be off though. :p) --- scripts/commands/flourish.py | 3 +- scripts/commands/startdance.py | 6 ++- .../creature/CreatureMessageBuilder.java | 6 ++- .../objects/creature/CreatureObject.java | 50 +++++++++++++++++-- src/services/EntertainmentService.java | 39 +++++++++++++-- 5 files changed, 95 insertions(+), 9 deletions(-) diff --git a/scripts/commands/flourish.py b/scripts/commands/flourish.py index 0bb6cb93..37c26077 100644 --- a/scripts/commands/flourish.py +++ b/scripts/commands/flourish.py @@ -22,7 +22,8 @@ def run(core, actor, target, commandString): if actor.getPerformanceId() <= 0: actor.sendSystemMessage('@performance:flourish_not_performing', 0) return - + + actor.incFlourishCount() actor.sendSystemMessage('@performance:flourish_perform', 0) animation = 'skill_action_' + str(flourish) if flourish == 9: diff --git a/scripts/commands/startdance.py b/scripts/commands/startdance.py index 768e8e55..bae424d8 100644 --- a/scripts/commands/startdance.py +++ b/scripts/commands/startdance.py @@ -91,12 +91,16 @@ def startDance(core, actor, danceName, visual): #this should send a CREO3 actor.setPosture(0x09); + playerObject = actor.getSlottedObject('ghost') + if playerObject and playerObject.getProfession() == "entertainer_1a": + entSvc.startPerformanceExperience(actor) + dance = entSvc.getDance(visual) # performanceId > 0 seems to trigger the note bubble stuff, so use 0 here # instead of dance.getLineNumber() # send CREO6 here # second param is some sort of counter or start tick - entSvc.startPerformance(actor, 0, -842249156 , danceVisual, 1) + entSvc.startPerformance(actor, dance.getLineNumber(), -842249156 , danceVisual, 1) return diff --git a/src/resources/objects/creature/CreatureMessageBuilder.java b/src/resources/objects/creature/CreatureMessageBuilder.java index 443deff3..7e10d950 100644 --- a/src/resources/objects/creature/CreatureMessageBuilder.java +++ b/src/resources/objects/creature/CreatureMessageBuilder.java @@ -256,7 +256,11 @@ public class CreatureMessageBuilder extends ObjectMessageBuilder { buffer.putLong(creature.getTargetId()); buffer.put(creature.getMoodId()); buffer.putInt(creature.getPerformanceCounter()); - buffer.putInt(creature.getPerformanceId()); + /* + * minor dilemma: performance ID is needed for XP calculation, but it can't be sent + * in the CREO, otherwise the evul note bubbles appear + */ + buffer.putInt((creature.getPerformanceType()) ? 0 : creature.getPerformanceId()); buffer.putInt(0); // unks buffer.putInt(0); diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index e9ed6d54..924fe231 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -155,8 +155,14 @@ public class CreatureObject extends TangibleObject implements IPersistent { private SWGList dotList = new SWGList(); @NotPersistent private ScheduledFuture incapTask; + @NotPersistent + private ScheduledFuture entertainerExperience; + @NotPersistent + private ScheduledFuture inspirationTick; private boolean staticNPC = false; // temp + @NotPersistent + private int flourishCount = 0; public CreatureObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { super(objectID, planet, Template, position, orientation); @@ -353,10 +359,14 @@ public class CreatureObject extends TangibleObject implements IPersistent { public void stopPerformance() { String type = ""; synchronized(objectMutex) { - setPerformanceId(0); + setPerformanceId(0,true); setPerformanceCounter(0); setCurrentAnimation(""); type = (performanceType) ? "dance" : "music"; + if (entertainerExperience != null) { + entertainerExperience.cancel(true); + entertainerExperience = null; + } } sendSystemMessage("@performance:" + type + "_stop_self",(byte)0); @@ -391,6 +401,22 @@ public class CreatureObject extends TangibleObject implements IPersistent { performanceAudience = new SWGList(); } } + public ScheduledFuture getEntertainerExperience() { + return entertainerExperience; + } + + public void setEntertainerExperience(ScheduledFuture entertainerExperience) { + this.entertainerExperience = entertainerExperience; + } + + public ScheduledFuture getInspirationTick() { + return inspirationTick; + } + + public void setInspirationTick(ScheduledFuture inspirationTick) { + this.inspirationTick = inspirationTick; + } + @Override public void setFaction(String faction) { synchronized(objectMutex) { @@ -974,11 +1000,11 @@ public class CreatureObject extends TangibleObject implements IPersistent { } } - public void setPerformanceId(int performanceId) { + public void setPerformanceId(int performanceId, boolean isDance) { synchronized(objectMutex) { this.performanceId = performanceId; } - getClient().getSession().write(messageBuilder.buildPerformanceId(performanceId)); + getClient().getSession().write(messageBuilder.buildPerformanceId((isDance) ? 0 : performanceId)); } public boolean getAcceptBandflourishes() { @@ -1516,5 +1542,23 @@ public class CreatureObject extends TangibleObject implements IPersistent { return this.performanceType; } } + + public void setFlourishCount(int flourishCount) { + synchronized(objectMutex) { + this.flourishCount = flourishCount; + } + } + + public int getFlourishCount() { + synchronized(objectMutex) { + return this.flourishCount; + } + } + + public void incFlourishCount() { + synchronized(objectMutex) { + this.flourishCount++; + } + } } diff --git a/src/services/EntertainmentService.java b/src/services/EntertainmentService.java index 5236846b..acaf3c71 100644 --- a/src/services/EntertainmentService.java +++ b/src/services/EntertainmentService.java @@ -6,6 +6,10 @@ import java.util.Iterator; 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.ScheduledFuture; +import java.util.concurrent.TimeUnit; import main.NGECore; @@ -34,10 +38,12 @@ import engine.resources.service.INetworkRemoteEvent; public class EntertainmentService implements INetworkDispatch { private NGECore core; + private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); private Vector buffBuilderSkills = new Vector(); //FIXME: create a wrapper class for double key lookup maps private HashMap performances = new HashMap(); + private HashMap performancesByIndex = new HashMap(); private HashMap danceMap = new HashMap(); public EntertainmentService(NGECore core) { @@ -182,6 +188,7 @@ public class EntertainmentService implements INetworkDispatch { danceMap.put(new Integer(p.getDanceVisualId()), p); } performances.put(p.getPerformanceName(), p); + performancesByIndex.put(r, p); } } catch (InstantiationException | IllegalAccessException e) { @@ -293,7 +300,7 @@ public class EntertainmentService implements INetworkDispatch { } public void startPerformance(CreatureObject actor, int performanceId, int performanceCounter, String skillName, boolean isDance) { - actor.setPerformanceId(performanceId); + actor.setPerformanceId(performanceId, isDance); actor.setPerformanceCounter(performanceCounter); actor.setCurrentAnimation(skillName); actor.setPerformanceType(isDance); @@ -301,8 +308,34 @@ public class EntertainmentService implements INetworkDispatch { actor.startPerformance(); } - - + public void startPerformanceExperience(final CreatureObject entertainer) { + final ScheduledFuture experienceTask = scheduler.scheduleAtFixedRate(new Runnable() { + + @Override + public void run() { + + Performance p = performancesByIndex.get(entertainer.getPerformanceId()); + if (p == null) { + entertainer.setFlourishCount(0); + return; + } + + int floXP = (int)( (float) p.getFlourishXpMod() / 6.0f); + int floCount = entertainer.getFlourishCount(); + + int XP = ((floCount > 2) ? 2 : floCount) * floXP; + + entertainer.setFlourishCount(0); + core.playerService.giveExperience(entertainer, XP); + + + } + + },10, 10000, TimeUnit.MILLISECONDS); + + entertainer.setEntertainerExperience(experienceTask); + + } @Override public void shutdown() { From 124473472b9c90e1f5c07e858ebda18258911774 Mon Sep 17 00:00:00 2001 From: Waverunner Date: Mon, 9 Dec 2013 17:15:33 -0500 Subject: [PATCH 5/7] Static shuttle and transports no longer return null errors (ie ACLO Bunker) --- scripts/commands/setgodmode.py | 9 ++++++--- scripts/object/creature/npc/theme_park/player_shuttle.py | 3 ++- .../object/creature/npc/theme_park/player_transport.py | 3 ++- src/services/travel/TravelService.java | 9 ++++++--- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/scripts/commands/setgodmode.py b/scripts/commands/setgodmode.py index d8b9647d..7fc4220c 100644 --- a/scripts/commands/setgodmode.py +++ b/scripts/commands/setgodmode.py @@ -27,13 +27,16 @@ def run(core, actor, target, commandString): if command == 'giveExperience' and arg1: core.playerService.giveExperience(actor, int(arg1)) - if command == 'setSpeed' and arg1: + elif command == 'setSpeed' and arg1: actor.sendSystemMessage('Your speed was ' + str(actor.getSpeedMultiplierBase()) + '. Don\'t forget to set this back or it\'ll permanently imbalance your speed. Default without buffs or mods is 1.', 2) actor.setSpeedMultiplierBase(float(arg1)) actor.sendSystemMessage('Your new speed is ' + str(actor.getSpeedMultiplierBase()) + '.', 2) - if command == 'teleport' and arg2 and arg3 and arg4: + elif command == 'teleport' and arg2 and arg3 and arg4: position = Point3D(float(arg2), float(arg3), float(arg4)) core.simulationService.transferToPlanet(actor, core.terrainService.getPlanetByName(arg1), position, actor.getOrientation(), None) - + + elif command == 'cash' and arg1 is int(arg1): + actor.setCash(actor.getCash() + int(arg1)) + actor.sendSystemMessage('The Galactic Empire has transferred ' + arg1 + ' credits to you for your service.') return diff --git a/scripts/object/creature/npc/theme_park/player_shuttle.py b/scripts/object/creature/npc/theme_park/player_shuttle.py index 57a5dcc3..c2c5b2af 100644 --- a/scripts/object/creature/npc/theme_park/player_shuttle.py +++ b/scripts/object/creature/npc/theme_park/player_shuttle.py @@ -4,7 +4,8 @@ def setup(core, object): object.setPosture(0) # land = 0 : away = 2 object.setOptionsBitmask(256) tp = core.travelService.getNearestTravelPoint(object) - if tp: + + if tp and tp is not None: tp.setShuttle(object) tp.setShuttleAvailable(True) tp.setShuttleLanding(False) diff --git a/scripts/object/creature/npc/theme_park/player_transport.py b/scripts/object/creature/npc/theme_park/player_transport.py index 57a5dcc3..c2c5b2af 100644 --- a/scripts/object/creature/npc/theme_park/player_transport.py +++ b/scripts/object/creature/npc/theme_park/player_transport.py @@ -4,7 +4,8 @@ def setup(core, object): object.setPosture(0) # land = 0 : away = 2 object.setOptionsBitmask(256) tp = core.travelService.getNearestTravelPoint(object) - if tp: + + if tp and tp is not None: tp.setShuttle(object) tp.setShuttleAvailable(True) tp.setShuttleLanding(False) diff --git a/src/services/travel/TravelService.java b/src/services/travel/TravelService.java index 2b37d0f4..b62dd29e 100644 --- a/src/services/travel/TravelService.java +++ b/src/services/travel/TravelService.java @@ -156,9 +156,12 @@ public class TravelService implements INetworkDispatch { } } - if (returnedPoint == null) { - System.out.println("NULL TravelPoint at : " + core.mapService.getClosestCityName(obj)); - } + // Some transport obj's were used as deco (ex: ACLO bunker on Talus shared_player_transport). A null check should be performed before tp is used. + /*if (returnedPoint == null) { + System.out.println("Could not find travel point for " + obj.getTemplate() + " at " + obj.getPlanet().name + " Position: " + obj.getPosition().x + " " + obj.getPosition().z); + //Console.println("Travel Point NULL: " + returnedPoint.getName()); + }*/ + return returnedPoint; } From 64a0e2898da8c061be95db4a6b5957cdab6c8f8e Mon Sep 17 00:00:00 2001 From: darkk1138 Date: Mon, 9 Dec 2013 23:30:16 +0100 Subject: [PATCH 6/7] correct xp, still not right though --- src/services/EntertainmentService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/EntertainmentService.java b/src/services/EntertainmentService.java index acaf3c71..db255217 100644 --- a/src/services/EntertainmentService.java +++ b/src/services/EntertainmentService.java @@ -320,7 +320,7 @@ public class EntertainmentService implements INetworkDispatch { return; } - int floXP = (int)( (float) p.getFlourishXpMod() / 6.0f); + int floXP = p.getFlourishXpMod(); int floCount = entertainer.getFlourishCount(); int XP = ((floCount > 2) ? 2 : floCount) * floXP; From e3d4fd8aaaf35ed957c93bb8f562dad050a00d49 Mon Sep 17 00:00:00 2001 From: Ziggeh Date: Tue, 10 Dec 2013 00:07:39 +0100 Subject: [PATCH 7/7] Added Profession Master Badges --- scripts/collections/master_bounty_hunter_1a.py | 12 ++++++++++++ scripts/collections/master_commando_1a.py | 12 ++++++++++++ scripts/collections/master_entertainer_1a.py | 12 ++++++++++++ scripts/collections/master_force_sensitive_1a.py | 12 ++++++++++++ scripts/collections/master_medic_1a.py | 12 ++++++++++++ scripts/collections/master_officer_1a.py | 12 ++++++++++++ scripts/collections/master_smuggler_1a.py | 12 ++++++++++++ scripts/collections/master_spy_1a.py | 12 ++++++++++++ scripts/collections/master_trader_0a.py | 15 +++++++++++++++ scripts/collections/master_trader_0b.py | 14 ++++++++++++++ scripts/collections/master_trader_0c.py | 15 +++++++++++++++ scripts/collections/master_trader_0d.py | 14 ++++++++++++++ src/services/PlayerService.java | 3 ++- 13 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 scripts/collections/master_bounty_hunter_1a.py create mode 100644 scripts/collections/master_commando_1a.py create mode 100644 scripts/collections/master_entertainer_1a.py create mode 100644 scripts/collections/master_force_sensitive_1a.py create mode 100644 scripts/collections/master_medic_1a.py create mode 100644 scripts/collections/master_officer_1a.py create mode 100644 scripts/collections/master_smuggler_1a.py create mode 100644 scripts/collections/master_spy_1a.py create mode 100644 scripts/collections/master_trader_0a.py create mode 100644 scripts/collections/master_trader_0b.py create mode 100644 scripts/collections/master_trader_0c.py create mode 100644 scripts/collections/master_trader_0d.py diff --git a/scripts/collections/master_bounty_hunter_1a.py b/scripts/collections/master_bounty_hunter_1a.py new file mode 100644 index 00000000..c81bc04a --- /dev/null +++ b/scripts/collections/master_bounty_hunter_1a.py @@ -0,0 +1,12 @@ +import sys + +def setup(): + return + +def run(): + return + +def addMasterBadge(core, actor): + if actor.getLevel() == 90: + core.collectionService.addCollection(actor, "new_prof_bountyhunter_master") + return \ No newline at end of file diff --git a/scripts/collections/master_commando_1a.py b/scripts/collections/master_commando_1a.py new file mode 100644 index 00000000..beb5e848 --- /dev/null +++ b/scripts/collections/master_commando_1a.py @@ -0,0 +1,12 @@ +import sys + +def setup(): + return + +def run(): + return + +def addMasterBadge(core, actor): + if actor.getLevel() == 90: + core.collectionService.addCollection(actor, "new_prof_commando_master") + return \ No newline at end of file diff --git a/scripts/collections/master_entertainer_1a.py b/scripts/collections/master_entertainer_1a.py new file mode 100644 index 00000000..e2dc3c3c --- /dev/null +++ b/scripts/collections/master_entertainer_1a.py @@ -0,0 +1,12 @@ +import sys + +def setup(): + return + +def run(): + return + +def addMasterBadge(core, actor): + if actor.getLevel() == 90: + core.collectionService.addCollection(actor, "new_prof_social_entertainer_master") + return \ No newline at end of file diff --git a/scripts/collections/master_force_sensitive_1a.py b/scripts/collections/master_force_sensitive_1a.py new file mode 100644 index 00000000..b2ae17a5 --- /dev/null +++ b/scripts/collections/master_force_sensitive_1a.py @@ -0,0 +1,12 @@ +import sys + +def setup(): + return + +def run(): + return + +def addMasterBadge(core, actor): + if actor.getLevel() == 90: + core.collectionService.addCollection(actor, "new_prof_jedi_master") + return \ No newline at end of file diff --git a/scripts/collections/master_medic_1a.py b/scripts/collections/master_medic_1a.py new file mode 100644 index 00000000..d19ba11b --- /dev/null +++ b/scripts/collections/master_medic_1a.py @@ -0,0 +1,12 @@ +import sys + +def setup(): + return + +def run(): + return + +def addMasterBadge(core, actor): + if actor.getLevel() == 90: + core.collectionService.addCollection(actor, "new_prof_medic_master") + return \ No newline at end of file diff --git a/scripts/collections/master_officer_1a.py b/scripts/collections/master_officer_1a.py new file mode 100644 index 00000000..589869ae --- /dev/null +++ b/scripts/collections/master_officer_1a.py @@ -0,0 +1,12 @@ +import sys + +def setup(): + return + +def run(): + return + +def addMasterBadge(core, actor): + if actor.getLevel() == 90: + core.collectionService.addCollection(actor, "new_prof_officer_master") + return \ No newline at end of file diff --git a/scripts/collections/master_smuggler_1a.py b/scripts/collections/master_smuggler_1a.py new file mode 100644 index 00000000..f7d741f1 --- /dev/null +++ b/scripts/collections/master_smuggler_1a.py @@ -0,0 +1,12 @@ +import sys + +def setup(): + return + +def run(): + return + +def addMasterBadge(core, actor): + if actor.getLevel() == 90: + core.collectionService.addCollection(actor, "new_prof_smuggler_master") + return \ No newline at end of file diff --git a/scripts/collections/master_spy_1a.py b/scripts/collections/master_spy_1a.py new file mode 100644 index 00000000..1ff5be54 --- /dev/null +++ b/scripts/collections/master_spy_1a.py @@ -0,0 +1,12 @@ +import sys + +def setup(): + return + +def run(): + return + +def addMasterBadge(core, actor): + if actor.getLevel() == 90: + core.collectionService.addCollection(actor, "new_prof_spy_master") + return \ No newline at end of file diff --git a/scripts/collections/master_trader_0a.py b/scripts/collections/master_trader_0a.py new file mode 100644 index 00000000..bff48590 --- /dev/null +++ b/scripts/collections/master_trader_0a.py @@ -0,0 +1,15 @@ +import sys + +def setup(): + return + +def run(): + return + +def addMasterBadge(core, actor): + if actor.getLevel() == 90: + core.collectionService.addCollection(actor, "new_prof_crafting_merchant_master") + core.collectionService.addCollection(actor, "new_prof_crafting_artisan_master") + core.collectionService.addCollection(actor, "new_prof_crafting_chef_master") + core.collectionService.addCollection(actor, "new_prof_crafting_tailor_master") + return \ No newline at end of file diff --git a/scripts/collections/master_trader_0b.py b/scripts/collections/master_trader_0b.py new file mode 100644 index 00000000..55a1c3d3 --- /dev/null +++ b/scripts/collections/master_trader_0b.py @@ -0,0 +1,14 @@ +import sys + +def setup(): + return + +def run(): + return + +def addMasterBadge(core, actor): + if actor.getLevel() == 90: + core.collectionService.addCollection(actor, "new_prof_crafting_merchant_master") + core.collectionService.addCollection(actor, "new_prof_crafting_artisan_master") + core.collectionService.addCollection(actor, "new_prof_crafting_architect_master") + return \ No newline at end of file diff --git a/scripts/collections/master_trader_0c.py b/scripts/collections/master_trader_0c.py new file mode 100644 index 00000000..018141b4 --- /dev/null +++ b/scripts/collections/master_trader_0c.py @@ -0,0 +1,15 @@ +import sys + +def setup(): + return + +def run(): + return + +def addMasterBadge(core, actor): + if actor.getLevel() == 90: + core.collectionService.addCollection(actor, "new_prof_crafting_merchant_master") + core.collectionService.addCollection(actor, "new_prof_crafting_artisan_master") + core.collectionService.addCollection(actor, "new_prof_crafting_armorsmith_master") + core.collectionService.addCollection(actor, "new_prof_crafting_weaponsmith_master") + return \ No newline at end of file diff --git a/scripts/collections/master_trader_0d.py b/scripts/collections/master_trader_0d.py new file mode 100644 index 00000000..a9223ac6 --- /dev/null +++ b/scripts/collections/master_trader_0d.py @@ -0,0 +1,14 @@ +import sys + +def setup(): + return + +def run(): + return + +def addMasterBadge(core, actor): + if actor.getLevel() == 90: + core.collectionService.addCollection(actor, "new_prof_crafting_merchant_master") + core.collectionService.addCollection(actor, "new_prof_crafting_artisan_master") + core.collectionService.addCollection(actor, "new_prof_crafting_droidengineer_master") + return \ No newline at end of file diff --git a/src/services/PlayerService.java b/src/services/PlayerService.java index 8a986c22..55d8d2ee 100644 --- a/src/services/PlayerService.java +++ b/src/services/PlayerService.java @@ -338,6 +338,7 @@ public class PlayerService implements INetworkDispatch { creature.playEffectObject("clienteffect/level_granted.cef", ""); creature.getClient().getSession().write((new ClientMfdStatusUpdateMessage((float) ((creature.getLevel() == 90) ? 90 : (creature.getLevel() + 1)), "/GroundHUD.MFDStatus.vsp.role.targetLevel")).serialize()); creature.setLevel(((Integer) experienceTable.getObject(i, 0)).shortValue()); + core.scriptService.callScript("scripts/collections/", "addMasterBadge", "master_" + player.getProfession(), core, creature); // 3. Add the relevant health/action and expertise points. float luck = (((((float) (core.scriptService.getMethod("scripts/roadmap/", player.getProfession(), "getLuck").__call__().asInt()) + (core.scriptService.getMethod("scripts/roadmap/", creature.getStfName(), "getLuck").__call__().asInt())) / ((float) 90)) * ((float) creature.getLevel())) - ((float) creature.getSkillModBase("luck"))); @@ -470,7 +471,7 @@ public class PlayerService implements INetworkDispatch { } } } - } + } } } } catch (InstantiationException | IllegalAccessException e) {