From 760aea96f2cae523ecf0cbad181d4c8d06258b1c Mon Sep 17 00:00:00 2001 From: darkk1138 Date: Mon, 9 Dec 2013 18:09:40 +0100 Subject: [PATCH] fix SWGList on audience, however, the old field needs removing. depend inspire on watching --- scripts/commands/inspire.py | 26 ++++++++++++++----- scripts/commands/watch.py | 2 +- .../objects/creature/CreatureObject.java | 21 ++++++++++----- 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/scripts/commands/inspire.py b/scripts/commands/inspire.py index 38a789ab..e2924682 100644 --- a/scripts/commands/inspire.py +++ b/scripts/commands/inspire.py @@ -6,16 +6,30 @@ def setup(): return def run(core, actor, target, commandString): - - if (actor.getProfession() != "entertainer_1a"): + playerObject = actor.getSlottedObject('ghost') + print playerObject.getProfession() + if not playerObject or playerObject.getProfession() != "entertainer_1a": + return + + print 'x' + if actor.getPosture() != 0x09: + actor.sendSystemMessage('@performance:insp_buff_must_perform') + return + + if (target.getPerformanceWatchee() != actor): + if actor.getPerformanceType(): + actor.sendSystemMessage('@performance:insp_buff_must_watch') return - + else: + actor.sendSystemMessage('@performance:insp_buff_must_listen') + return + print ('Buffing Player: ' + str(target.getObjectId()) + ' or: ' + target.getCustomName()) openBuffWindow = BuffBuilderStartMessage(actor.getObjectId(), actor.getObjectId(), target.getObjectId()) objController = ObjControllerMessage(11, openBuffWindow) actor.getClient().getSession().write(objController.serialize()) - penBuffWindow = BuffBuilderStartMessage(target.getObjectId(), actor.getObjectId(), target.getObjectId()) - objController2 = ObjControllerMessage(11, penBuffWindow) + openBuffWindow = BuffBuilderStartMessage(target.getObjectId(), actor.getObjectId(), target.getObjectId()) + objController2 = ObjControllerMessage(11, openBuffWindow) target.getClient().getSession().write(objController2.serialize()) - return \ No newline at end of file + return diff --git a/scripts/commands/watch.py b/scripts/commands/watch.py index d93a8194..bc75010d 100644 --- a/scripts/commands/watch.py +++ b/scripts/commands/watch.py @@ -19,7 +19,7 @@ def run(core, actor, target, commandString): return oldWatchee = actor.getPerformanceWatchee() - if oldWatchee: + if oldWatchee and oldWatchee != target: oldWatchee.removeAudience(actor) actor.setPerformanceWatchee(target) diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index c2d1a7da..990b2f92 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -57,7 +57,7 @@ import engine.resources.scene.Quaternion; import resources.objects.tangible.TangibleObject; import resources.objects.weapon.WeaponObject; -@Entity(version=8) +@Entity(version=9) public class CreatureObject extends TangibleObject implements IPersistent { @NotPersistent @@ -126,7 +126,9 @@ public class CreatureObject extends TangibleObject implements IPersistent { private boolean groupDance = true; private CreatureObject performanceWatchee; private CreatureObject performanceListenee; - private List audience = Collections.synchronizedList(new ArrayList()); + private SWGList performanceAudience = new SWGList(); + //FIXME: This one needs to be removed. anyone know how? + private List audience; private int health = 1000; private int action = 300; @NotPersistent @@ -369,7 +371,10 @@ public class CreatureObject extends TangibleObject implements IPersistent { String type = ""; synchronized(objectMutex) { type = (performanceType) ? "dance" : "music"; - Iterator it = audience.iterator(); + if (performanceAudience == null) { + return; + } + Iterator it = performanceAudience.iterator(); while (it.hasNext()) { CreatureObject next = it.next(); if ((performanceType) && (next.getPerformanceWatchee() != this)) { continue; } @@ -385,7 +390,7 @@ public class CreatureObject extends TangibleObject implements IPersistent { next.sendSystemMessage("@performance:" + type + "_stop_other",(byte)0); } //not sure if this behaviour is correct. might need fixing later. - audience = Collections.synchronizedList(new ArrayList()); + performanceAudience = new SWGList(); } } @Override @@ -1430,13 +1435,17 @@ public class CreatureObject extends TangibleObject implements IPersistent { public void addAudience(CreatureObject audienceMember) { synchronized(objectMutex) { - audience.add(audienceMember); + if (performanceAudience == null) { + performanceAudience = new SWGList(); + } + performanceAudience.add(audienceMember); } } public void removeAudience(CreatureObject audienceMember) { synchronized(objectMutex) { - audience.remove(audienceMember); + if (performanceAudience == null) { return; } + performanceAudience.remove(audienceMember); } }