From c3e784f76ff05e62773ccbb124364eab3168960c Mon Sep 17 00:00:00 2001 From: Seefo Date: Mon, 31 Mar 2014 12:26:03 -0400 Subject: [PATCH] Buffs now fallback on ... read extended Buffs now fallback onto buffs.iff if no script currently exists for the buff. --- scripts/commands/setgodmode.py | 3 ++ .../creature/CreatureMessageBuilder.java | 2 +- src/services/BuffService.java | 36 ++++++++++++++----- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/scripts/commands/setgodmode.py b/scripts/commands/setgodmode.py index 1dbe2c3e..eeaf8ae1 100644 --- a/scripts/commands/setgodmode.py +++ b/scripts/commands/setgodmode.py @@ -85,6 +85,9 @@ def run(core, actor, target, commandString): elif command == 'cust' and arg1 and arg2 and arg3: obj = core.objectService.getObject(long(arg1)) obj.setCustomizationVariable(str(arg2), int(arg3)) + + elif command == 'buff' and arg1: + core.buffService.addBuffToCreature(actor, str(arg1), actor) elif command == 'stealth': if (actor.isInStealth()): diff --git a/src/resources/objects/creature/CreatureMessageBuilder.java b/src/resources/objects/creature/CreatureMessageBuilder.java index 5ebafb62..8b96fced 100644 --- a/src/resources/objects/creature/CreatureMessageBuilder.java +++ b/src/resources/objects/creature/CreatureMessageBuilder.java @@ -369,7 +369,7 @@ public class CreatureMessageBuilder extends ObjectMessageBuilder { buff.setTotalPlayTime(0); buffer.put((byte) 1); buffer.putInt(0); - buffer.putInt(CRC.StringtoCRC(buff.getBuffName())); + buffer.putInt(CRC.StringtoCRC(buff.getBuffName().toLowerCase())); if(buff.getDuration() > 0) { buffer.putInt((int) (buff.getTotalPlayTime() + buff.getRemainingDuration())); buffer.putInt(0); diff --git a/src/services/BuffService.java b/src/services/BuffService.java index cfab49c2..158429c3 100644 --- a/src/services/BuffService.java +++ b/src/services/BuffService.java @@ -106,21 +106,24 @@ public class BuffService implements INetworkDispatch { else buff.setTotalPlayTime(0); - if(FileUtilities.doesFileExist("scripts/buffs/" + buffName + ".py")) - core.scriptService.callScript("scripts/buffs/", buffName, "setup", core, buffer, buff); + if(FileUtilities.doesFileExist("scripts/buffs/" + buffName + ".py")) core.scriptService.callScript("scripts/buffs/", buffName, "setup", core, buffer, buff); for (final Buff otherBuff : target.getBuffList()) { if (buff.getGroup1().equals(otherBuff.getGroup1())) if (buff.getPriority() >= otherBuff.getPriority()) { - if (buff.getBuffName().equals(otherBuff.getBuffName())) { + if (buff.getBuffName().equals(otherBuff.getBuffName())) + { - if(otherBuff.getStacks() < otherBuff.getMaxStacks()) { + if(otherBuff.getStacks() < otherBuff.getMaxStacks()) + { buff.setStacks(otherBuff.getStacks() + 1); if(target.getDotByBuff(otherBuff) != null) // reset duration when theres a dot stack target.getDotByBuff(otherBuff).setStartTime(buff.getStartTime()); - } else { + } + else + { buff.setStacks(buff.getMaxStacks()); } if (buff.getDuration() != -1.0) @@ -136,8 +139,16 @@ public class BuffService implements INetworkDispatch { } } - if(FileUtilities.doesFileExist("scripts/buffs/" + buffName + ".py")) - core.scriptService.callScript("scripts/buffs/", buffName, "add", core, target, buff); + if(FileUtilities.doesFileExist("scripts/buffs/" + buffName + ".py")) core.scriptService.callScript("scripts/buffs/", buffName, "add", core, target, buff); + else + { + System.out.println(buff.getEffect1Name().length()); + if(buff.getEffect1Name().length() > 0) core.skillModService.addSkillMod(target, buff.getEffect1Name(), (int) buff.getEffect1Value()); + if(buff.getEffect2Name().length() > 0) core.skillModService.addSkillMod(target, buff.getEffect2Name(), (int) buff.getEffect2Value()); + if(buff.getEffect3Name().length() > 0) core.skillModService.addSkillMod(target, buff.getEffect3Name(), (int) buff.getEffect3Value()); + if(buff.getEffect4Name().length() > 0) core.skillModService.addSkillMod(target, buff.getEffect4Name(), (int) buff.getEffect4Value()); + if(buff.getEffect5Name().length() > 0) core.skillModService.addSkillMod(target, buff.getEffect5Name(), (int) buff.getEffect5Value()); + } target.addBuff(buff); @@ -214,8 +225,15 @@ public class BuffService implements INetworkDispatch { dot.getTask().cancel(true); creature.removeDot(dot); } - if(FileUtilities.doesFileExist("scripts/buffs/" + buff.getBuffName() + ".py")) - core.scriptService.callScript("scripts/buffs/", buff.getBuffName(), "remove", core, creature, buff); + if(FileUtilities.doesFileExist("scripts/buffs/" + buff.getBuffName() + ".py")) core.scriptService.callScript("scripts/buffs/", buff.getBuffName(), "remove", core, creature, buff); + else + { + if(buff.getEffect1Name().length() > 0) core.skillModService.deductSkillMod(creature, buff.getEffect1Name(), (int) buff.getEffect1Value()); + if(buff.getEffect2Name().length() > 0) core.skillModService.deductSkillMod(creature, buff.getEffect2Name(), (int) buff.getEffect2Value()); + if(buff.getEffect1Name().length() > 0) core.skillModService.deductSkillMod(creature, buff.getEffect3Name(), (int) buff.getEffect3Value()); + if(buff.getEffect1Name().length() > 0) core.skillModService.deductSkillMod(creature, buff.getEffect4Name(), (int) buff.getEffect4Value()); + if(buff.getEffect1Name().length() > 0) core.skillModService.deductSkillMod(creature, buff.getEffect5Name(), (int) buff.getEffect5Value()); + } creature.removeBuff(buff); for (String effect : buff.getParticleEffect().split(",")) {