From 01a785293677bb5cea2e5f8468933670d70b8b0d Mon Sep 17 00:00:00 2001 From: Seefo Date: Sat, 5 Apr 2014 12:40:51 -0400 Subject: [PATCH] Added the ability to add items to a bonus set via STF Name, added Heroism Bonus Set, added Heroism Jewlery set to frog --- .../equipment/bonus_sets/set_bonus_hero.py | 28 ++++++++++ .../bonus_sets/set_bonus_jedi_robe.py | 30 +++++------ src/services/DevService.java | 51 ++++++++++++++++++- src/services/EquipmentService.java | 26 ++-------- src/services/equipment/BonusSetTemplate.java | 17 +++---- 5 files changed, 101 insertions(+), 51 deletions(-) create mode 100644 scripts/equipment/bonus_sets/set_bonus_hero.py diff --git a/scripts/equipment/bonus_sets/set_bonus_hero.py b/scripts/equipment/bonus_sets/set_bonus_hero.py new file mode 100644 index 00000000..95fbabe4 --- /dev/null +++ b/scripts/equipment/bonus_sets/set_bonus_hero.py @@ -0,0 +1,28 @@ +import sys +from services.equipment import BonusSetTemplate +from java.util import Vector + +def addBonusSet(core): + bonusSet = BonusSetTemplate("set_bonus_hero") + + bonusSet.addRequiredItem("item_band_set_hero_01_01") + bonusSet.addRequiredItem("item_ring_set_hero_01_01") + bonusSet.addRequiredItem("item_necklace_set_hero_01_01") + bonusSet.addRequiredItem("item_bracelet_r_set_hero_01_01") + bonusSet.addRequiredItem("item_bracelet_l_set_hero_01_01") + + core.equipmentService.addBonusSetTemplate(bonusSet) + +def handleChange(core, creature, set): + wornItems = set.getWornTemplateCount(creature) + + if wornItems == 3: + core.buffService.addBuffToCreature(creature, "set_bonus_hero_1", creature) + elif wornItems == 4: + core.buffService.addBuffToCreature(creature, "set_bonus_hero_2", creature) + elif wornItems == 5: + core.buffService.addBuffToCreature(creature, "set_bonus_hero_3", creature) + else: + core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_hero_1") + core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_hero_2") + core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_hero_3") \ No newline at end of file diff --git a/scripts/equipment/bonus_sets/set_bonus_jedi_robe.py b/scripts/equipment/bonus_sets/set_bonus_jedi_robe.py index 1a81f12a..fd45204d 100644 --- a/scripts/equipment/bonus_sets/set_bonus_jedi_robe.py +++ b/scripts/equipment/bonus_sets/set_bonus_jedi_robe.py @@ -6,27 +6,27 @@ def addBonusSet(core): bonusSet = BonusSetTemplate("set_bonus_jedi_robe") # Waistpack - bonusSet.addRequiredTemplate("object/tangible/wearables/backpack/shared_fannypack_s01.iff") + bonusSet.addRequiredItem("object/tangible/wearables/backpack/shared_fannypack_s01.iff") # Jedi Robes - Light - bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_light_s01.iff") - bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_light_s02.iff") - bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_light_s03.iff") - bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_light_s04.iff") - bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_light_s05.iff") + bonusSet.addRequiredItem("object/tangible/wearables/robe/shared_robe_jedi_light_s01.iff") + bonusSet.addRequiredItem("object/tangible/wearables/robe/shared_robe_jedi_light_s02.iff") + bonusSet.addRequiredItem("object/tangible/wearables/robe/shared_robe_jedi_light_s03.iff") + bonusSet.addRequiredItem("object/tangible/wearables/robe/shared_robe_jedi_light_s04.iff") + bonusSet.addRequiredItem("object/tangible/wearables/robe/shared_robe_jedi_light_s05.iff") # Jedi Robes - Dark - bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_dark_s01.iff") - bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_dark_s02.iff") - bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_dark_s03.iff") - bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_dark_s04.iff") - bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_dark_s05.iff") + bonusSet.addRequiredItem("object/tangible/wearables/robe/shared_robe_jedi_dark_s01.iff") + bonusSet.addRequiredItem("object/tangible/wearables/robe/shared_robe_jedi_dark_s02.iff") + bonusSet.addRequiredItem("object/tangible/wearables/robe/shared_robe_jedi_dark_s03.iff") + bonusSet.addRequiredItem("object/tangible/wearables/robe/shared_robe_jedi_dark_s04.iff") + bonusSet.addRequiredItem("object/tangible/wearables/robe/shared_robe_jedi_dark_s05.iff") # Jedi Cloaks - bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_s32.iff") - bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_s32_h1.iff") - bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_s33.iff") - bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_s33_h1.iff") + bonusSet.addRequiredItem("object/tangible/wearables/robe/shared_robe_s32.iff") + bonusSet.addRequiredItem("object/tangible/wearables/robe/shared_robe_s32_h1.iff") + bonusSet.addRequiredItem("object/tangible/wearables/robe/shared_robe_s33.iff") + bonusSet.addRequiredItem("object/tangible/wearables/robe/shared_robe_s33_h1.iff") core.equipmentService.addBonusSetTemplate(bonusSet) diff --git a/src/services/DevService.java b/src/services/DevService.java index efe65147..7a502628 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -92,7 +92,8 @@ public class DevService implements INetworkDispatch { break; case 4: // [Items] Misc Items suiOptions.put((long) 40, "Unity Ring"); - suiOptions.put((long) 41, "Tusken rucksack"); + suiOptions.put((long) 41, "Tusken Rucksack"); + suiOptions.put((long) 42, "Heroism Jewlery Set"); break; case 5: // [Items] Armor suiOptions.put((long) 50, "Assault Armor"); @@ -255,9 +256,55 @@ public class DevService implements INetworkDispatch { backpack.setIntAttribute("cat_stat_mod_bonus.@stat_n:precision_modified", 35); backpack.setIntAttribute("cat_stat_mod_bonus.@stat_n:stamina_modified", 30); backpack.setIntAttribute("cat_stat_mod_bonus.@stat_n:strength_modified", 35); - inventory.add(backpack); return; + case 42: + TangibleObject heroismBand = (TangibleObject) core.objectService.createObject("object/tangible/wearables/ring/shared_ring_s01.iff", planet); + heroismBand.setStfFilename("static_item_n"); + heroismBand.setStfName("item_band_set_hero_01_01"); + heroismBand.setStringAttribute("@set_bonus:piece_bonus_count_3", "@set_bonus:set_bonus_hero_1"); + heroismBand.setStringAttribute("@set_bonus:piece_bonus_count_4", "@set_bonus:set_bonus_hero_2"); + heroismBand.setStringAttribute("@set_bonus:piece_bonus_count_5", "@set_bonus:set_bonus_hero_3"); + heroismBand.setAttachment("setBonus", "set_bonus_hero"); + + TangibleObject heroismRing = (TangibleObject) core.objectService.createObject("object/tangible/wearables/ring/shared_ring_s01.iff", planet); + heroismRing.setStfFilename("static_item_n"); + heroismRing.setStfName("item_ring_set_hero_01_01"); + heroismRing.setStringAttribute("@set_bonus:piece_bonus_count_3", "@set_bonus:set_bonus_hero_1"); + heroismRing.setStringAttribute("@set_bonus:piece_bonus_count_4", "@set_bonus:set_bonus_hero_2"); + heroismRing.setStringAttribute("@set_bonus:piece_bonus_count_5", "@set_bonus:set_bonus_hero_3"); + heroismRing.setAttachment("setBonus", "set_bonus_hero"); + + TangibleObject heroismNecklace = (TangibleObject) core.objectService.createObject("object/tangible/wearables/necklace/shared_necklace_s01.iff", planet); + heroismNecklace.setStfFilename("static_item_n"); + heroismNecklace.setStfName("item_necklace_set_hero_01_01"); + heroismNecklace.setStringAttribute("@set_bonus:piece_bonus_count_3", "@set_bonus:set_bonus_hero_1"); + heroismNecklace.setStringAttribute("@set_bonus:piece_bonus_count_4", "@set_bonus:set_bonus_hero_2"); + heroismNecklace.setStringAttribute("@set_bonus:piece_bonus_count_5", "@set_bonus:set_bonus_hero_3"); + heroismNecklace.setAttachment("setBonus", "set_bonus_hero"); + + TangibleObject heroismBraceletRight = (TangibleObject) core.objectService.createObject("object/tangible/wearables/bracelet/shared_bracelet_s02_r.iff", planet); + heroismBraceletRight.setStfFilename("static_item_n"); + heroismBraceletRight.setStfName("item_bracelet_r_set_hero_01_01"); + heroismBraceletRight.setStringAttribute("@set_bonus:piece_bonus_count_3", "@set_bonus:set_bonus_hero_1"); + heroismBraceletRight.setStringAttribute("@set_bonus:piece_bonus_count_4", "@set_bonus:set_bonus_hero_2"); + heroismBraceletRight.setStringAttribute("@set_bonus:piece_bonus_count_5", "@set_bonus:set_bonus_hero_3"); + heroismBraceletRight.setAttachment("setBonus", "set_bonus_hero"); + + TangibleObject heroismBraceletLeft = (TangibleObject) core.objectService.createObject("object/tangible/wearables/bracelet/shared_bracelet_s02_l.iff", planet); + heroismBraceletLeft.setStfFilename("static_item_n"); + heroismBraceletLeft.setStfName("item_bracelet_l_set_hero_01_01"); + heroismBraceletLeft.setStringAttribute("@set_bonus:piece_bonus_count_3", "@set_bonus:set_bonus_hero_1"); + heroismBraceletLeft.setStringAttribute("@set_bonus:piece_bonus_count_4", "@set_bonus:set_bonus_hero_2"); + heroismBraceletLeft.setStringAttribute("@set_bonus:piece_bonus_count_5", "@set_bonus:set_bonus_hero_3"); + heroismBraceletLeft.setAttachment("setBonus", "set_bonus_hero"); + + inventory.add(heroismBand); + inventory.add(heroismRing); + inventory.add(heroismNecklace); + inventory.add(heroismBraceletRight); + inventory.add(heroismBraceletLeft); + return; case 50: // [Items] Assault Armor sendCharacterBuilderSUI(player, 6); return; diff --git a/src/services/EquipmentService.java b/src/services/EquipmentService.java index a42c09c2..2e21e848 100644 --- a/src/services/EquipmentService.java +++ b/src/services/EquipmentService.java @@ -85,6 +85,9 @@ public class EquipmentService implements INetworkDispatch { } public boolean canEquip(CreatureObject actor, SWGObject item) { + // TODO: Species restrictions + // TODO: Gender restrictions + boolean result = true; if (item == null) @@ -182,11 +185,8 @@ public class EquipmentService implements INetworkDispatch { PyObject func = core.scriptService.getMethod("scripts/" + serverTemplate.split("shared_" , 2)[0].replace("shared_", ""), serverTemplate.split("shared_" , 2)[1], "equip"); if(func != null) func.__call__(Py.java2py(core), Py.java2py(actor), Py.java2py(item)); - // TODO: Species restrictions - // TODO: Gender restrictions // TODO: crit enhancement from crafted weapons // TODO: check for armor category in order to add resistance to certain DoT types - // TODO: Calculate actual armor values (REMINDER: Check if the player is wearing a jedi robe/cloak (look for force protection intensity). If they are, they shouldn't receive any additional protection from other items with armour.) // TODO: bio-link (assign it by objectID with setAttachment and then just display the customName for that objectID). if(!actor.getEquipmentList().contains(item)) @@ -235,16 +235,6 @@ public class EquipmentService implements INetworkDispatch { { core.skillModService.addSkillMod(creature, e.getKey().replace("cat_stat_mod_bonus.@stat_n:", ""), Integer.parseInt((String) e.getValue())); } - - /*if(e.getKey().startsWith("cat_armor_standard_protection")) - { - addArmorProtection(creature, e.getKey().replace("cat_armor_standard_protection.armor_eff_", ""), Float.parseFloat((String) e.getValue()), creature.getSlotNameForObject(item)); - } - - if(e.getKey().startsWith("cat_armor_special_protection")) - { - addArmorProtection(creature, e.getKey().replace("cat_armor_special_protection.special_protection_type_", ""), Float.parseFloat((String) e.getValue()), creature.getSlotNameForObject(item)); - } */ if(e.getKey().startsWith("cat_attrib_mod_bonus.attr_health")) { @@ -275,16 +265,6 @@ public class EquipmentService implements INetworkDispatch { core.skillModService.deductSkillMod(creature, e.getKey().replace("cat_stat_mod_bonus.@stat_n:", ""), Integer.parseInt((String) e.getValue())); } - /*if(e.getKey().startsWith("cat_armor_standard_protection")) - { - deductArmorProtection(creature, e.getKey().replace("cat_armor_standard_protection.armor_eff_", ""), Float.parseFloat((String) e.getValue()), creature.getSlotNameForObject(item)); - } - - if(e.getKey().startsWith("cat_armor_special_protection")) - { - deductArmorProtection(creature, e.getKey().replace("cat_armor_special_protection.special_protection_type_", ""), Float.parseFloat((String) e.getValue()), creature.getSlotNameForObject(item)); - } */ - if(e.getKey().startsWith("cat_attrib_mod_bonus.attr_health")) { creature.setMaxHealth(creature.getMaxHealth() - Integer.parseInt((String) e.getValue())); diff --git a/src/services/equipment/BonusSetTemplate.java b/src/services/equipment/BonusSetTemplate.java index c224c134..cee74c84 100644 --- a/src/services/equipment/BonusSetTemplate.java +++ b/src/services/equipment/BonusSetTemplate.java @@ -34,17 +34,17 @@ import resources.objects.creature.CreatureObject; public class BonusSetTemplate { private String name; - private Vector requiredWornTemplates; + private Vector requiredWornItems; public BonusSetTemplate(String name) { this.name = name; - this.requiredWornTemplates = new Vector(); + this.requiredWornItems = new Vector(); } - public void addRequiredTemplate(String template) + public void addRequiredItem(String item) { - requiredWornTemplates.add(template); + requiredWornItems.add(item); } public String getName() @@ -55,20 +55,15 @@ public class BonusSetTemplate public int getWornTemplateCount(CreatureObject creature) { int wornItems = 0; - for (SWGObject item : creature.getEquipmentList().get()) { - if(requiredWornTemplates.contains(item.getTemplate())) wornItems++; + if(requiredWornItems.contains(item.getTemplate()) || requiredWornItems.contains(item.getStfName())) wornItems++; } - - //System.out.println("[BonusSetTemplate] Worn items: " + wornItems); return wornItems; } public void callScript(CreatureObject creature) - { - //System.out.println("[BonusSetTemplate] Calling script for: " + this.getName()); - + { PyObject func = NGECore.getInstance().scriptService.getMethod("scripts/equipment/bonus_sets/", name, "handleChange"); if(func != null) func.__call__(Py.java2py(NGECore.getInstance()), Py.java2py(creature), Py.java2py(this)); }