mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-08-02 03:15:52 -04:00
Add buff callbacks (buff effcts can be removed)
If the buff as a callback field, define it as a function in the buff script and do whatever it's supposed to do. It uses the same params as the other functions in there do. For example: def handleClearBuffEffect(core, actor, buff):
This commit is contained in:
@@ -21,29 +21,22 @@
|
||||
******************************************************************************/
|
||||
package services;
|
||||
|
||||
import java.nio.ByteOrder;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.apache.mina.core.buffer.IoBuffer;
|
||||
import org.apache.mina.core.session.IoSession;
|
||||
import org.python.core.Py;
|
||||
import org.python.core.PyObject;
|
||||
|
||||
import protocol.swg.ObjControllerMessage;
|
||||
import protocol.swg.objectControllerObjects.BuffBuilderStartMessage;
|
||||
import resources.common.Console;
|
||||
import resources.common.FileUtilities;
|
||||
import resources.common.ObjControllerOpcodes;
|
||||
import resources.objects.Buff;
|
||||
import resources.objects.BuffItem;
|
||||
import resources.objects.DamageOverTime;
|
||||
import resources.objects.creature.CreatureObject;
|
||||
import resources.objects.group.GroupObject;
|
||||
import resources.objects.player.PlayerObject;
|
||||
import main.NGECore;
|
||||
import engine.clients.Client;
|
||||
import engine.resources.objects.SWGObject;
|
||||
import engine.resources.service.INetworkDispatch;
|
||||
import engine.resources.service.INetworkRemoteEvent;
|
||||
@@ -141,10 +134,21 @@ public class BuffService implements INetworkDispatch {
|
||||
creature.playEffectObject(effect, buff.getBuffName());
|
||||
}
|
||||
|
||||
if (!buff.getCallback().equals("")) {
|
||||
if (FileUtilities.doesFileExist("scripts/buffs/" + buff.getBuffName() + ".py")) {
|
||||
PyObject method = core.scriptService.getMethod("scripts/buffs/", buff.getBuffName(), buff.getCallback());
|
||||
|
||||
if (method != null && method.isCallable()) {
|
||||
method.__call__(Py.java2py(core), Py.java2py(creature), Py.java2py(buff));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return buff;
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public void removeBuffFromCreature(CreatureObject creature, Buff buff) {
|
||||
|
||||
if(!creature.getBuffList().contains(buff))
|
||||
@@ -158,8 +162,8 @@ public class BuffService implements INetworkDispatch {
|
||||
core.scriptService.callScript("scripts/buffs/", "removeBuff", buff.getBuffName(), core, creature, buff);
|
||||
creature.removeBuff(buff);
|
||||
|
||||
for (String effect : buff.getParticleEffect().split(",")) {
|
||||
creature.stopEffectObject(buff.getBuffName());
|
||||
for (String effect : buff.getParticleEffect().split(",")) {
|
||||
creature.stopEffectObject(buff.getBuffName());
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user