From 1c14d7a70280d63fad4d0b04db754782a46f1111 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Thu, 1 May 2014 21:25:41 +0200 Subject: [PATCH] Random stat jewelry added, loot service further debugged Added stat jewelry --- scripts/loot/lootItems/junk/explosive_dud.py | 2 +- .../randomstatjewelry/random_stat_bracelet.py | 12 + .../randomstatjewelry/random_stat_necklace.py | 13 + .../randomstatjewelry/random_stat_ring.py | 9 + .../randomstatjewelry/randomstatjewelry.py | 0 .../lootItems/weapons/carbine/EE3_carbine.py | 0 .../{ => rifle}/adjusted_cdef_rifle.py | 0 .../lootItems/weapons/rifle/jawa_ion_rifle.py | 0 .../lootItems/weapons/rifle/spraystick.py | 0 scripts/loot/lootPools/random_stat_jewelry.py | 6 + .../object/mobile/dressed_stormtrooper_m.py | 6 + src/services/LootService.java | 262 +++++++++++++++++- 12 files changed, 295 insertions(+), 15 deletions(-) create mode 100644 scripts/loot/lootItems/randomstatjewelry/random_stat_bracelet.py create mode 100644 scripts/loot/lootItems/randomstatjewelry/random_stat_necklace.py create mode 100644 scripts/loot/lootItems/randomstatjewelry/random_stat_ring.py create mode 100644 scripts/loot/lootItems/randomstatjewelry/randomstatjewelry.py create mode 100644 scripts/loot/lootItems/weapons/carbine/EE3_carbine.py rename scripts/loot/lootItems/weapons/{ => rifle}/adjusted_cdef_rifle.py (100%) create mode 100644 scripts/loot/lootItems/weapons/rifle/jawa_ion_rifle.py create mode 100644 scripts/loot/lootItems/weapons/rifle/spraystick.py create mode 100644 scripts/loot/lootPools/random_stat_jewelry.py diff --git a/scripts/loot/lootItems/junk/explosive_dud.py b/scripts/loot/lootItems/junk/explosive_dud.py index 2d0291da..1fdcf7c3 100644 --- a/scripts/loot/lootItems/junk/explosive_dud.py +++ b/scripts/loot/lootItems/junk/explosive_dud.py @@ -1,7 +1,7 @@ def itemTemplate(): - return ['object/tangible/loot/npc_loot/shared_firework_dud_s1.iff'] + return ['object/tangible/loot/npc_loot/shared_firework_generic.iff'] def customItemName(): diff --git a/scripts/loot/lootItems/randomstatjewelry/random_stat_bracelet.py b/scripts/loot/lootItems/randomstatjewelry/random_stat_bracelet.py new file mode 100644 index 00000000..6576cc22 --- /dev/null +++ b/scripts/loot/lootItems/randomstatjewelry/random_stat_bracelet.py @@ -0,0 +1,12 @@ + +def itemTemplate(): + + bracelets = ['object/tangible/wearables/bracelet/shared_bracelet_s02_l.iff','object/tangible/wearables/bracelet/shared_bracelet_s02_r.iff'] + bracelets += ['object/tangible/wearables/bracelet/shared_bracelet_s03_l.iff','object/tangible/wearables/bracelet/shared_bracelet_s03_r.iff'] + bracelets += ['object/tangible/wearables/bracelet/shared_bracelet_s04_l.iff','object/tangible/wearables/bracelet/shared_bracelet_s04_r.iff'] + bracelets += ['object/tangible/wearables/bracelet/shared_bracelet_s05_l.iff','object/tangible/wearables/bracelet/shared_bracelet_s05_r.iff'] + bracelets += ['object/tangible/wearables/bracelet/shared_bracelet_s06_l.iff','object/tangible/wearables/bracelet/shared_bracelet_s06_r.iff'] + return bracelets + +def randomStatJewelry(): + return diff --git a/scripts/loot/lootItems/randomstatjewelry/random_stat_necklace.py b/scripts/loot/lootItems/randomstatjewelry/random_stat_necklace.py new file mode 100644 index 00000000..947af23a --- /dev/null +++ b/scripts/loot/lootItems/randomstatjewelry/random_stat_necklace.py @@ -0,0 +1,13 @@ + +def itemTemplate(): + + necklaces = ['object/tangible/wearables/necklace/shared_necklace_s01.iff','object/tangible/wearables/necklace/shared_necklace_s02.iff'] + necklaces += ['object/tangible/wearables/necklace/shared_necklace_s03.iff','object/tangible/wearables/necklace/shared_necklace_s04.iff'] + necklaces += ['object/tangible/wearables/necklace/shared_necklace_s05.iff','object/tangible/wearables/necklace/shared_necklace_s06.iff'] + necklaces += ['object/tangible/wearables/necklace/shared_necklace_s07.iff','object/tangible/wearables/necklace/shared_necklace_s08.iff'] + necklaces += ['object/tangible/wearables/necklace/shared_necklace_s09.iff','object/tangible/wearables/necklace/shared_necklace_s10.iff'] + necklaces += ['object/tangible/wearables/necklace/shared_necklace_s11.iff','object/tangible/wearables/necklace/shared_necklace_s12.iff'] + return necklaces + +def randomStatJewelry(): + return 1 diff --git a/scripts/loot/lootItems/randomstatjewelry/random_stat_ring.py b/scripts/loot/lootItems/randomstatjewelry/random_stat_ring.py new file mode 100644 index 00000000..8f7d669b --- /dev/null +++ b/scripts/loot/lootItems/randomstatjewelry/random_stat_ring.py @@ -0,0 +1,9 @@ + +def itemTemplate(): + + rings = ['object/tangible/wearables/ring/shared_ring_s01.iff','object/tangible/wearables/ring/shared_ring_s02.iff'] + rings += ['object/tangible/wearables/ring/shared_ring_s03.iff','object/tangible/wearables/ring/shared_ring_s04.iff'] + return rings + +def randomStatJewelry(): + return diff --git a/scripts/loot/lootItems/randomstatjewelry/randomstatjewelry.py b/scripts/loot/lootItems/randomstatjewelry/randomstatjewelry.py new file mode 100644 index 00000000..e69de29b diff --git a/scripts/loot/lootItems/weapons/carbine/EE3_carbine.py b/scripts/loot/lootItems/weapons/carbine/EE3_carbine.py new file mode 100644 index 00000000..e69de29b diff --git a/scripts/loot/lootItems/weapons/adjusted_cdef_rifle.py b/scripts/loot/lootItems/weapons/rifle/adjusted_cdef_rifle.py similarity index 100% rename from scripts/loot/lootItems/weapons/adjusted_cdef_rifle.py rename to scripts/loot/lootItems/weapons/rifle/adjusted_cdef_rifle.py diff --git a/scripts/loot/lootItems/weapons/rifle/jawa_ion_rifle.py b/scripts/loot/lootItems/weapons/rifle/jawa_ion_rifle.py new file mode 100644 index 00000000..e69de29b diff --git a/scripts/loot/lootItems/weapons/rifle/spraystick.py b/scripts/loot/lootItems/weapons/rifle/spraystick.py new file mode 100644 index 00000000..e69de29b diff --git a/scripts/loot/lootPools/random_stat_jewelry.py b/scripts/loot/lootPools/random_stat_jewelry.py new file mode 100644 index 00000000..0e11105e --- /dev/null +++ b/scripts/loot/lootPools/random_stat_jewelry.py @@ -0,0 +1,6 @@ + +def itemNames(): + return ['random_stat_bracelet','random_stat_necklace','random_stat_ring'] + +def itemChances(): + return [50,35,15] #= 100% \ No newline at end of file diff --git a/scripts/object/mobile/dressed_stormtrooper_m.py b/scripts/object/mobile/dressed_stormtrooper_m.py index f0b52957..6b81cf5a 100644 --- a/scripts/object/mobile/dressed_stormtrooper_m.py +++ b/scripts/object/mobile/dressed_stormtrooper_m.py @@ -16,5 +16,11 @@ def setup(core, object): lootPoolChances_3 = [100] lootGroupChance_3 = 6 object.addToLootGroups(lootPoolNames_3,lootPoolChances_3,lootGroupChance_3) + + # just to test + lootPoolNames_4 = ['random_stat_jewelry'] + lootPoolChances_4 = [100] + lootGroupChance_4 = 100 + object.addToLootGroups(lootPoolNames_4,lootPoolChances_4,lootGroupChance_4) return \ No newline at end of file diff --git a/src/services/LootService.java b/src/services/LootService.java index edc0f5c7..8e4f5aad 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -81,18 +81,25 @@ public class LootService implements INetworkDispatch { // security check if (hasAccess(requester,lootedObject) && ! lootedObject.isLooted()){ LootRollSession lootRollSession = (LootRollSession )lootedObject.getAttachment("LootSession"); - if (lootRollSession.getDroppedItems().size()==0) - return; + if (lootRollSession.getDroppedItems().size()==0){ + System.err.println("lootRollSession.getDroppedItems().size()==0"); + return; + } SWGObject lootedObjectInventory = lootedObject.getSlottedObject("inventory"); core.simulationService.openContainer(requester, lootedObjectInventory); setLooted(requester,lootedObject); } + System.err.println("NO ACCESS lootedObject.isLooted(): " + lootedObject.isLooted()); + System.err.println("NO ACCESS hasAccess(requester,lootedObject): " + hasAccess(requester,lootedObject)); } private boolean hasAccess(CreatureObject requester, TangibleObject lootedObject){ LootRollSession lootRollSession = (LootRollSession )lootedObject.getAttachment("LootSession"); + if (lootRollSession==null) + System.err.println("LootSession null: " + lootRollSession); if (lootRollSession!=null){ - if (lootRollSession.getRequester()==requester){ + if (lootRollSession.getRequester()==requester && lootedObject.isLooted()){ + System.err.println("lootRollSession.getRequester()==requester: " + (lootRollSession.getRequester()==requester)); return true; } } @@ -118,6 +125,7 @@ public class LootService implements INetworkDispatch { lootedObject.setLootLock(true); LootRollSession lootRollSession = new LootRollSession(requester,lootedObject); + lootedObject.setAttachment("LootSession", lootRollSession); // preliminarily register session already here handleCreditDrop(requester,lootedObject,lootRollSession); @@ -144,18 +152,18 @@ public class LootService implements INetworkDispatch { } // Rare Loot System Stage (Is in place for all looted creatures) - if (lootRollSession.isAllowRareLoot()){ - int randomRareLoot = new Random().nextInt(100); - int chanceRequirement = 1; - if (lootRollSession.isIncreasedRLSChance()) - chanceRequirement+=3; // RLS chance is at 4% for groupsize >= 4 - if (randomRareLoot <= chanceRequirement){ - handleRareLootChest(lootRollSession); - } - } +//if (lootRollSession.isAllowRareLoot()){ +// int randomRareLoot = new Random().nextInt(100); +// int chanceRequirement = 1; +// if (lootRollSession.isIncreasedRLSChance()) +// chanceRequirement+=3; // RLS chance is at 4% for groupsize >= 4 +// if (randomRareLoot <= chanceRequirement){ +// handleRareLootChest(lootRollSession); +// } +//} // set info above corpse - + System.out.println("lootedObject instanceof CreatureObject " + (lootedObject instanceof CreatureObject)); if (lootedObject instanceof CreatureObject){ float y = 0.5F; // 1.3356977F float qz= 1.06535322E9F; @@ -182,7 +190,7 @@ public class LootService implements INetworkDispatch { // For autoloot //SWGObject requesterInventory = requester.getSlottedObject("inventory"); - + System.out.println("lootRollSession.getDroppedItems() " + (lootRollSession.getDroppedItems())); for (TangibleObject droppedItem : lootRollSession.getDroppedItems()){ //droppedItem.setAttachment("radial_filename", "lootitem"); @@ -219,6 +227,8 @@ public class LootService implements INetworkDispatch { double remainder = 0; // [10,20,30,34,5,1] double span = 100/lootPoolNames.length; + boolean test = false; + for(int i=0;i70 && levelOfDrop<90 && difficultyLevel==1) + statNumber = 2; + + if (levelOfDrop>=90 && difficultyLevel==1) + statNumber = 2; + int statRoll = new Random().nextInt(100); + if (statRoll<30) + statNumber = 3; + + if (levelOfDrop>=90 && difficultyLevel>=2){ + statNumber = 2; + statRoll = new Random().nextInt(100); + if (statRoll<8) + statNumber = 4; + else if (statRoll<50) + statNumber = 3; + } + + int primaryAttribute = new Random().nextInt(6); // 0-6 + int maxValue = 25; + droppedItem.setIntAttribute(getAttributeSTF(primaryAttribute), getStatValue(maxValue)); + maxValue -= 2; //secondary attributes must have less maxValue + String prefix = getJewelryPrefix(droppedItem); + String suffix = getJewelrySuffix(primaryAttribute, statNumber); + String itemName = prefix + suffix; + Vector alreadyUsedStats = new Vector(); + alreadyUsedStats.add(primaryAttribute); + int attribute = primaryAttribute; + + + for (int i=0;i