diff --git a/scripts/commands/of_medical_sup_1.py b/scripts/commands/of_medical_sup_1.py index b7186ab6..52ae6c13 100644 --- a/scripts/commands/of_medical_sup_1.py +++ b/scripts/commands/of_medical_sup_1.py @@ -39,6 +39,8 @@ def spawnCrate(core, actor, shuttle): for i in range(0, 8): tactical = core.objectService.createObject('object/tangible/loot/generic_usable/shared_stim_syringe_generic.iff', actor.getPlanet()) #FIXME: Use the correct template tactical.setCustomName('Tactical Serum A') + tactical.setStringAttribute('proc_name', '@ui_buff:of_tactical_drop_6') + tactical.setAttachment("tempUseCount", 1) crate.add(tactical) for i in range(0, 8): diff --git a/scripts/object/tangible/loot/generic_usable/stim_syringe_generic.py b/scripts/object/tangible/loot/generic_usable/stim_syringe_generic.py index ccad8904..15085ba3 100644 --- a/scripts/object/tangible/loot/generic_usable/stim_syringe_generic.py +++ b/scripts/object/tangible/loot/generic_usable/stim_syringe_generic.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'usable') return \ No newline at end of file diff --git a/scripts/object/tangible/wearables/robe/robe_jedi_light_s03.py b/scripts/object/tangible/wearables/robe/robe_jedi_light_s03.py index a40fe4b9..ba7c4c85 100644 --- a/scripts/object/tangible/wearables/robe/robe_jedi_light_s03.py +++ b/scripts/object/tangible/wearables/robe/robe_jedi_light_s03.py @@ -2,9 +2,9 @@ import sys def setup(core, object): object.setStfFilename('static_item_n') - object.setStfName('item_jedi_robe_light_03_03') + object.setStfName('item_jedi_robe_light_04_04') object.setDetailFilename('static_item_d') - object.setDetailName('item_jedi_robe_light_03_03') + object.setDetailName('item_jedi_robe_light_04_04') object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 185) object.setIntAttribute('cat_stat_mod_bonus.@stat_n:strength_modified', 185) object.setIntAttribute('cat_stat_mod_bonus.@stat_n:agility_modified', 185) diff --git a/scripts/object/tangible/wearables/robe/robe_jedi_light_s04.py b/scripts/object/tangible/wearables/robe/robe_jedi_light_s04.py index be022790..07760bd3 100644 --- a/scripts/object/tangible/wearables/robe/robe_jedi_light_s04.py +++ b/scripts/object/tangible/wearables/robe/robe_jedi_light_s04.py @@ -1,31 +1,19 @@ import sys def setup(core, object): + object.setStfFilename('static_item_n') + object.setStfName('item_jedi_robe_light_04_04') + object.setDetailFilename('static_item_d') + object.setDetailName('item_jedi_robe_light_04_04') + object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 250) + object.setIntAttribute('cat_stat_mod_bonus.@stat_n:strength_modified', 250) + object.setIntAttribute('cat_stat_mod_bonus.@stat_n:agility_modified', 250) + object.setStringAttribute('protection_level', 'Radiant') + object.setStringAttribute('class_required', 'Jedi') + object.setIntAttribute('required_combat_level', 90) + object.setAttachment('type', 'jedi_robe') + object.setStringAttribute('proc_name', '@ui_buff:proc_old_light_jedi_gift') + object.setStringAttribute('@set_bonus:piece_bonus_count_2', '@set_bonus:set_bonus_jedi_robe_1') return - -def equip(core, actor, target): - core.skillModService.addSkillMod(actor, 'agility_modified', 250) - core.skillModService.addSkillMod(actor, 'constitution_modified', 250) - core.skillModService.addSkillMod(actor, 'strength_modified', 250) - - Buff = actor.getBuffByName('proc_old_light_jedi_gift') - if actor.getBuffList().contains(Buff): - core.buffService.removeBuffFromCreature(actor, Buff) - return - - if actor: - core.buffService.addBuffToCreature(actor, 'proc_old_light_jedi_gift') - return - return - -def unequip(core, actor, target): - core.skillModService.deductSkillMod(actor, 'agility_modified', 250) - core.skillModService.deductSkillMod(actor, 'constitution_modified', 250) - core.skillModService.deductSkillMod(actor, 'strength_modified', 250) - - Buff = actor.getBuffByName('proc_old_light_jedi_gift') - if actor.getBuffList().contains(Buff): - core.buffService.removeBuffFromCreature(actor, Buff) - return - return + \ No newline at end of file diff --git a/src/services/BuffService.java b/src/services/BuffService.java index 57bd4bd9..917f07e6 100644 --- a/src/services/BuffService.java +++ b/src/services/BuffService.java @@ -245,6 +245,11 @@ public class BuffService implements INetworkDispatch { } } + public void removeBuffFromCreatureByName(CreatureObject creature, String buffName) + { + removeBuffFromCreature(creature, creature.getBuffByName(buffName)); + } + public void clearBuffs(final CreatureObject creature) { // copy to array for thread safety diff --git a/src/services/EquipmentService.java b/src/services/EquipmentService.java index afe5b694..9995f4a7 100644 --- a/src/services/EquipmentService.java +++ b/src/services/EquipmentService.java @@ -215,10 +215,12 @@ public class EquipmentService implements INetworkDispatch { } } + + if(item.getStringAttribute("proc_name") != null) core.buffService.addBuffToCreature(actor, item.getStringAttribute("proc_name").replace("@ui_buff:", ""), actor); + if(!actor.getEquipmentList().contains(item)) actor.addObjectToEquipList(item); - } @@ -268,6 +270,8 @@ public class EquipmentService implements INetworkDispatch { return; } + if(item.getStringAttribute("proc_name") != null) core.buffService.removeBuffFromCreatureByName(actor, item.getStringAttribute("proc_name").replace("@ui_buff:", "")); + if(actor.getEquipmentList().contains(item)) actor.removeObjectFromEquipList(item); diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index 451ab5b5..e117483c 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -530,6 +530,18 @@ public class ObjectService implements INetworkDispatch { return; } + if(object.getStringAttribute("proc_name") != null) + { + if(object.getAttachment("tempUseCount") != null) + { + int useCount = (int)object.getAttachment("tempUseCount"); // Placeholder until delta for stack count/use count + + if(useCount - 1 == 0) destroyObject(object); + else object.setAttachment("tempUseCount", useCount--); + } + core.buffService.addBuffToCreature(creature, object.getStringAttribute("proc_name").replace("@ui_buff:", ""), creature); + } + String filePath = "scripts/" + object.getTemplate().split("shared_" , 2)[0].replace("shared_", "") + object.getTemplate().split("shared_" , 2)[1].replace(".iff", "") + ".py"; if (FileUtilities.doesFileExist(filePath)) {