diff --git a/scripts/commands/removeBuff.py b/scripts/commands/removeBuff.py new file mode 100644 index 00000000..09eaccd6 --- /dev/null +++ b/scripts/commands/removeBuff.py @@ -0,0 +1,14 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + + buffObj = actor.getBuffByCRC(int(commandString)) + + if buffObj is None: + return + + core.buffService.removeBuffFromCreature(actor, buffObj) + return \ No newline at end of file diff --git a/src/resources/objects/Buff.java b/src/resources/objects/Buff.java index 2b8b4725..9a1c70ee 100644 --- a/src/resources/objects/Buff.java +++ b/src/resources/objects/Buff.java @@ -40,7 +40,7 @@ import engine.clientdata.ClientFileManager; import engine.clientdata.visitors.DatatableVisitor; import engine.resources.common.CRC; -@Persistent(version=9) +@Persistent(version=10) public class Buff implements IDelta { @NotPersistent @@ -69,12 +69,14 @@ public class Buff implements IDelta { private ScheduledFuture removalTask; private int stacks = 1; private long groupBufferId; + private int buffCRC; public Buff(String buffName, long ownerId) { this.buffName = buffName; this.ownerId = ownerId; - + this.buffCRC = CRC.StringtoCRC(buffName); + DatatableVisitor visitor; try { @@ -449,4 +451,8 @@ public class Buff implements IDelta { this.group2 = group2; } + public int getBuffCRC() { + return buffCRC; + } + } diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index bfc09120..d861e5a5 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -1370,6 +1370,17 @@ public class CreatureObject extends TangibleObject implements IPersistent { return null; } + public Buff getBuffByCRC(int crc) { + synchronized(objectMutex) { + for (Buff buff : buffList.get()) { + if (buff.getBuffCRC() == crc) { + return buff; + } + } + } + return null; + } + public void updateGroupInviteInfo() { if(getClient() == null || getClient().getSession() == null) diff --git a/src/services/BuffService.java b/src/services/BuffService.java index 1cb2346b..cfab49c2 100644 --- a/src/services/BuffService.java +++ b/src/services/BuffService.java @@ -48,6 +48,7 @@ public class BuffService implements INetworkDispatch { public BuffService(NGECore core) { this.core = core; + core.commandService.registerCommand("removeBuff"); } @Override