From 4d264f8c8a23736d2631463c70d66ed4d22159f4 Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Wed, 9 Apr 2014 04:57:26 +0200 Subject: [PATCH] Refined the loot system Added more py scripts for krayt pearls and junk Made system more flexible --- scripts/loot/lootItems/colorcrystal.py | 21 +++ scripts/loot/lootItems/damaged_datapad.py | 20 +++ scripts/loot/lootItems/kraytpearl_cracked.py | 8 + scripts/loot/lootItems/kraytpearl_fair.py | 8 + scripts/loot/lootItems/kraytpearl_flawless.py | 8 + scripts/loot/lootItems/kraytpearl_good.py | 8 + scripts/loot/lootItems/kraytpearl_poor.py | 8 + scripts/loot/lootItems/kraytpearl_premium.py | 8 + scripts/loot/lootItems/kraytpearl_quality.py | 8 + .../loot/lootItems/kraytpearl_scratched.py | 8 + scripts/loot/lootItems/kraytpearl_select.py | 8 + scripts/loot/lootItems/red_wiring.py | 20 +++ scripts/loot/lootItems/shared_rifle_cdef.py | 20 +++ scripts/loot/lootItems/worklight_generic.py | 21 +++ scripts/loot/lootPools/colorcrystals.py | 8 + scripts/{ => loot}/lootPools/jediholocrons.py | 0 scripts/loot/lootPools/junk.py | 8 + scripts/loot/lootPools/kraytpearl_lowq.py | 8 + scripts/loot/lootPools/kraytpearls_range.py | 6 + scripts/{ => loot}/lootPools/rareloot.py | 2 +- scripts/loot/lootPools/rifles.py | 8 + scripts/{ => loot}/lootPools/sithholocrons.py | 0 scripts/lootPools/colorcrystals.py | 9 - scripts/lootPools/junk.py | 8 - scripts/lootPools/kraytpearls.py | 8 - scripts/lootPools/rifles.py | 9 - scripts/object/mobile/krayt_dragon.py | 13 +- scripts/object/mobile/tusken_raider.py | 6 +- .../objects/loot/LootRollSession.java | 20 ++- .../objects/tangible/TangibleObject.java | 2 +- src/services/LootService.java | 155 ++++++++++++++---- src/services/ScriptService.java | 10 ++ 32 files changed, 372 insertions(+), 82 deletions(-) create mode 100644 scripts/loot/lootItems/colorcrystal.py create mode 100644 scripts/loot/lootItems/damaged_datapad.py create mode 100644 scripts/loot/lootItems/kraytpearl_cracked.py create mode 100644 scripts/loot/lootItems/kraytpearl_fair.py create mode 100644 scripts/loot/lootItems/kraytpearl_flawless.py create mode 100644 scripts/loot/lootItems/kraytpearl_good.py create mode 100644 scripts/loot/lootItems/kraytpearl_poor.py create mode 100644 scripts/loot/lootItems/kraytpearl_premium.py create mode 100644 scripts/loot/lootItems/kraytpearl_quality.py create mode 100644 scripts/loot/lootItems/kraytpearl_scratched.py create mode 100644 scripts/loot/lootItems/kraytpearl_select.py create mode 100644 scripts/loot/lootItems/red_wiring.py create mode 100644 scripts/loot/lootItems/shared_rifle_cdef.py create mode 100644 scripts/loot/lootItems/worklight_generic.py create mode 100644 scripts/loot/lootPools/colorcrystals.py rename scripts/{ => loot}/lootPools/jediholocrons.py (100%) create mode 100644 scripts/loot/lootPools/junk.py create mode 100644 scripts/loot/lootPools/kraytpearl_lowq.py create mode 100644 scripts/loot/lootPools/kraytpearls_range.py rename scripts/{ => loot}/lootPools/rareloot.py (85%) create mode 100644 scripts/loot/lootPools/rifles.py rename scripts/{ => loot}/lootPools/sithholocrons.py (100%) delete mode 100644 scripts/lootPools/colorcrystals.py delete mode 100644 scripts/lootPools/junk.py delete mode 100644 scripts/lootPools/kraytpearls.py delete mode 100644 scripts/lootPools/rifles.py diff --git a/scripts/loot/lootItems/colorcrystal.py b/scripts/loot/lootItems/colorcrystal.py new file mode 100644 index 00000000..cce04300 --- /dev/null +++ b/scripts/loot/lootItems/colorcrystal.py @@ -0,0 +1,21 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/lightsaber/shared_lightsaber_module_force_crystal.iff' + +def customItemName(): + + return '' + +def customItemStackCount(): + + return 1 + +def customizationAttributes(): + + return [] + +def customizationValues(): + + return [] + diff --git a/scripts/loot/lootItems/damaged_datapad.py b/scripts/loot/lootItems/damaged_datapad.py new file mode 100644 index 00000000..7757a473 --- /dev/null +++ b/scripts/loot/lootItems/damaged_datapad.py @@ -0,0 +1,20 @@ + +def itemTemplate(): + + return 'object/tangible/loot/misc/shared_damaged_datapad.iff' + +def customItemName(): + + return '' + +def customItemStackCount(): + + return 1 + +def customizationAttributes(): + + return [] + +def customizationValues(): + + return [] \ No newline at end of file diff --git a/scripts/loot/lootItems/kraytpearl_cracked.py b/scripts/loot/lootItems/kraytpearl_cracked.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_cracked.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_fair.py b/scripts/loot/lootItems/kraytpearl_fair.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_fair.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_flawless.py b/scripts/loot/lootItems/kraytpearl_flawless.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_flawless.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_good.py b/scripts/loot/lootItems/kraytpearl_good.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_good.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_poor.py b/scripts/loot/lootItems/kraytpearl_poor.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_poor.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_premium.py b/scripts/loot/lootItems/kraytpearl_premium.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_premium.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_quality.py b/scripts/loot/lootItems/kraytpearl_quality.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_quality.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_scratched.py b/scripts/loot/lootItems/kraytpearl_scratched.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_scratched.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/kraytpearl_select.py b/scripts/loot/lootItems/kraytpearl_select.py new file mode 100644 index 00000000..33536979 --- /dev/null +++ b/scripts/loot/lootItems/kraytpearl_select.py @@ -0,0 +1,8 @@ + +def itemTemplate(): + + return 'object/tangible/component/weapon/shared_lightsaber_module_krayt_dragon_pearl.iff' + +def customItemName(): + + return '' diff --git a/scripts/loot/lootItems/red_wiring.py b/scripts/loot/lootItems/red_wiring.py new file mode 100644 index 00000000..483dc8f7 --- /dev/null +++ b/scripts/loot/lootItems/red_wiring.py @@ -0,0 +1,20 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_red_wiring_generic.iff' + +def customItemName(): + + return '' + +def customItemStackCount(): + + return 1 + +def customizationAttributes(): + + return [] + +def customizationValues(): + + return [] diff --git a/scripts/loot/lootItems/shared_rifle_cdef.py b/scripts/loot/lootItems/shared_rifle_cdef.py new file mode 100644 index 00000000..0d683b7f --- /dev/null +++ b/scripts/loot/lootItems/shared_rifle_cdef.py @@ -0,0 +1,20 @@ + +def itemTemplate(): + + return 'object/weapon/ranged/rifle/shared_rifle_cdef.iff' + +def customItemName(): + + return '' + +def customItemStackCount(): + + return 1 + +def customizationAttributes(): + + return [] + +def customizationValues(): + + return [] diff --git a/scripts/loot/lootItems/worklight_generic.py b/scripts/loot/lootItems/worklight_generic.py new file mode 100644 index 00000000..86a9231b --- /dev/null +++ b/scripts/loot/lootItems/worklight_generic.py @@ -0,0 +1,21 @@ + +def itemTemplate(): + + return 'object/tangible/loot/npc_loot/shared_worklight_generic.iff' + +def customItemName(): + + return '' + +def customItemStackCount(): + + return 1 + +def customizationAttributes(): + + return [] + +def customizationValues(): + + return [] + diff --git a/scripts/loot/lootPools/colorcrystals.py b/scripts/loot/lootPools/colorcrystals.py new file mode 100644 index 00000000..d372b968 --- /dev/null +++ b/scripts/loot/lootPools/colorcrystals.py @@ -0,0 +1,8 @@ + +def itemNames(): + + return ['colorCrystal'] + +def itemChances(): + + return [70] \ No newline at end of file diff --git a/scripts/lootPools/jediholocrons.py b/scripts/loot/lootPools/jediholocrons.py similarity index 100% rename from scripts/lootPools/jediholocrons.py rename to scripts/loot/lootPools/jediholocrons.py diff --git a/scripts/loot/lootPools/junk.py b/scripts/loot/lootPools/junk.py new file mode 100644 index 00000000..32ec26c3 --- /dev/null +++ b/scripts/loot/lootPools/junk.py @@ -0,0 +1,8 @@ + +def itemNames(): + + templates=['damaged_datapad','red_wiring','worklight_generic'] + return templates + +def itemChances(): + return [70,50,40] \ No newline at end of file diff --git a/scripts/loot/lootPools/kraytpearl_lowq.py b/scripts/loot/lootPools/kraytpearl_lowq.py new file mode 100644 index 00000000..4fe709c2 --- /dev/null +++ b/scripts/loot/lootPools/kraytpearl_lowq.py @@ -0,0 +1,8 @@ + +def itemNames(): + + return ['kraytpearl_cracked','kraytpearl_scratched','kraytpearl_poor'] + +def itemChances(): + + return [33,33,34] \ No newline at end of file diff --git a/scripts/loot/lootPools/kraytpearls_range.py b/scripts/loot/lootPools/kraytpearls_range.py new file mode 100644 index 00000000..23477840 --- /dev/null +++ b/scripts/loot/lootPools/kraytpearls_range.py @@ -0,0 +1,6 @@ + +def itemTemplates(): + return ['kraytpearl_fair','kraytpearl_good','kraytpearl_quality','kraytpearl_select','kraytpearl_premium','kraytpearl_flawless'] + +def itemChances(): + return [10,20,30,34,5,1] #= 100% \ No newline at end of file diff --git a/scripts/lootPools/rareloot.py b/scripts/loot/lootPools/rareloot.py similarity index 85% rename from scripts/lootPools/rareloot.py rename to scripts/loot/lootPools/rareloot.py index 19ffe37f..4487075d 100644 --- a/scripts/lootPools/rareloot.py +++ b/scripts/loot/lootPools/rareloot.py @@ -1,6 +1,6 @@ -def itemTemplates(): +def itemNames(): templates=['object/tangible/item/shared_rare_loot_chest_3.iff'] return templates diff --git a/scripts/loot/lootPools/rifles.py b/scripts/loot/lootPools/rifles.py new file mode 100644 index 00000000..c24909b7 --- /dev/null +++ b/scripts/loot/lootPools/rifles.py @@ -0,0 +1,8 @@ + +def itemNames(): + + return ['shared_rifle_cdef'] + +def itemChances(): + return [100] + \ No newline at end of file diff --git a/scripts/lootPools/sithholocrons.py b/scripts/loot/lootPools/sithholocrons.py similarity index 100% rename from scripts/lootPools/sithholocrons.py rename to scripts/loot/lootPools/sithholocrons.py diff --git a/scripts/lootPools/colorcrystals.py b/scripts/lootPools/colorcrystals.py deleted file mode 100644 index 714a540c..00000000 --- a/scripts/lootPools/colorcrystals.py +++ /dev/null @@ -1,9 +0,0 @@ - - -def itemTemplates(): - - templates=['object/tangible/component/weapon/lightsaber/lightsaber_module_force_crystal.iff'] - return templates - -def itemChances(): - return [70] \ No newline at end of file diff --git a/scripts/lootPools/junk.py b/scripts/lootPools/junk.py deleted file mode 100644 index 65deb632..00000000 --- a/scripts/lootPools/junk.py +++ /dev/null @@ -1,8 +0,0 @@ - -def itemTemplates(): - - templates=['object/tangible/loot/misc/shared_damaged_datapad.iff','object/tangible/loot/npc_loot/shared_red_wiring_generic.iff','object/tangible/loot/npc_loot/shared_worklight_generic.iff'] - return templates - -def itemChances(): - return [70,50,40] \ No newline at end of file diff --git a/scripts/lootPools/kraytpearls.py b/scripts/lootPools/kraytpearls.py deleted file mode 100644 index 8463ef39..00000000 --- a/scripts/lootPools/kraytpearls.py +++ /dev/null @@ -1,8 +0,0 @@ - -def itemTemplates(): - - templates=['1','2','3','Flawless'] - return templates - -def itemChances(): - return [60,20,10,5] \ No newline at end of file diff --git a/scripts/lootPools/rifles.py b/scripts/lootPools/rifles.py deleted file mode 100644 index c3402805..00000000 --- a/scripts/lootPools/rifles.py +++ /dev/null @@ -1,9 +0,0 @@ - - -def itemTemplates(): - - templates=['object/weapon/ranged/rifle/shared_rifle_cdef.iff'] - return templates - -def itemChances(): - return [70] \ No newline at end of file diff --git a/scripts/object/mobile/krayt_dragon.py b/scripts/object/mobile/krayt_dragon.py index ccad8904..c65d802c 100644 --- a/scripts/object/mobile/krayt_dragon.py +++ b/scripts/object/mobile/krayt_dragon.py @@ -1,4 +1,15 @@ import sys def setup(core, object): - return \ No newline at end of file + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['kraytpearl_loq'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + return \ No newline at end of file diff --git a/scripts/object/mobile/tusken_raider.py b/scripts/object/mobile/tusken_raider.py index d4aa322f..961975a9 100644 --- a/scripts/object/mobile/tusken_raider.py +++ b/scripts/object/mobile/tusken_raider.py @@ -4,12 +4,12 @@ def setup(core, object): lootPoolNames_1 = ['Junk','Rifles'] lootPoolChances_1 = [90,70] - lootGroupChance_1 = 80 + lootGroupChance_1 = 90 object.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) lootPoolNames_2 = ['Colorcrystals'] - lootPoolChances_2 = [50] - lootGroupChance_2 = 60 + lootPoolChances_2 = [100] + lootGroupChance_2 = 20 object.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) lootPoolNames_3 = ['Rareloot'] diff --git a/src/resources/objects/loot/LootRollSession.java b/src/resources/objects/loot/LootRollSession.java index 5d1937b6..62d12077 100644 --- a/src/resources/objects/loot/LootRollSession.java +++ b/src/resources/objects/loot/LootRollSession.java @@ -24,9 +24,11 @@ package resources.objects.loot; import java.util.ArrayList; import java.util.List; +import engine.resources.scene.Planet; import main.NGECore; import resources.objects.creature.CreatureObject; import resources.objects.group.GroupObject; +import resources.objects.tangible.TangibleObject; /** * @author Charon @@ -36,7 +38,8 @@ public class LootRollSession { private String SessionID; // leaderName-SystemTime private GroupObject playerGroup; - private List droppedItemTemplates; + private List droppedItems; + private Planet sessionPlanet; public LootRollSession(){ } @@ -49,15 +52,16 @@ public class LootRollSession { } else { this.SessionID = requester.getCustomName()+"-"+System.currentTimeMillis(); } - droppedItemTemplates = new ArrayList(); + droppedItems = new ArrayList(); + sessionPlanet = requester.getPlanet(); } - public List getDroppedItemTemplates() { - return droppedItemTemplates; + public List getDroppedItems() { + return droppedItems; } - public void addDroppedItemTemplate(String droppedItemTemplate) { - this.droppedItemTemplates.add(droppedItemTemplate); + public void addDroppedItem(TangibleObject droppedItem) { + this.droppedItems.add(droppedItem); } public String getSessionID() { @@ -71,4 +75,8 @@ public class LootRollSession { public void generateSessionID(String sessionID) { SessionID = sessionID; } + + public Planet getSessionPlanet() { + return sessionPlanet; + } } diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index 7ac2c6ea..ee415959 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -60,7 +60,7 @@ import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Persistent(version=2) +@Persistent(version=3) public class TangibleObject extends SWGObject { // TODO: Thread safety diff --git a/src/services/LootService.java b/src/services/LootService.java index a7376d69..b16a125d 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -21,29 +21,18 @@ ******************************************************************************/ package services; -import java.util.ArrayList; -import java.util.HashMap; import java.util.Iterator; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Map.Entry; import java.util.Random; -import java.util.TreeMap; -import java.util.TreeSet; import java.util.Vector; - import resources.objects.creature.CreatureObject; -import resources.objects.group.GroupObject; -import resources.objects.loot.LootDrop; import resources.objects.loot.LootGroup; -import resources.objects.loot.LootPool; import resources.objects.loot.LootRollSession; -import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; -import resources.objects.tool.SurveyTool; import main.NGECore; import engine.resources.objects.SWGObject; +import engine.resources.scene.Planet; import engine.resources.service.INetworkDispatch; import engine.resources.service.INetworkRemoteEvent; @@ -110,27 +99,23 @@ public class LootService implements INetworkDispatch { int lootGroupRoll = new Random().nextInt(100); if (lootGroupRoll <= groupChance){ System.out.println("this lootGroup will drop something"); - handleLootGroup(lootGroup,lootRollSession); //this lootGroup will drop something + handleLootGroup(lootGroup,lootRollSession); //this lootGroup will drop something e.g. {kraytpearl_range,krayt_tissue_rare} } } - for (String s : lootRollSession.getDroppedItemTemplates()){ - System.out.println("lootRollSession template: " + s); - } - // ********** Phase 1 complete, loot items determined ********** // stored in the lootSession // Distribute the loot drops according to group loot rules // For now just spawn items into requester's inventory SWGObject requesterInventory = requester.getSlottedObject("inventory"); - System.out.println("requesterInventory " + requesterInventory); - for (String template : lootRollSession.getDroppedItemTemplates()){ - TangibleObject droppedItem = (TangibleObject) core.objectService.createObject(template, requester.getPlanet()); - System.out.println("droppedItem " + droppedItem); + + for (TangibleObject droppedItem : lootRollSession.getDroppedItems()){ + requesterInventory.add(droppedItem); } + // ToDo: Group loot settings etc. actual loot chance was lootgroupchance*lootchance } @@ -148,33 +133,131 @@ public class LootService implements INetworkDispatch { System.err.println("No Lootpools in Lootgroup!"); return; } + + int randomItemFromGroup = new Random().nextInt(100); + int remainder = 0; // [10,20,30,34,5,1] + for(int i=0;i itemTemplates = (Vector)core.scriptService.fetchStringVector(path,"itemTemplates"); + String path = "scripts/loot/lootPools/"+poolName.toLowerCase(); + Vector itemNames = (Vector)core.scriptService.fetchStringVector(path,"itemNames"); - for (String s : itemTemplates){ + for (String s : itemNames){ System.out.println("template: " + s); } Vector itemChances = (Vector)core.scriptService.fetchIntegerVector(path,"itemChances"); - - // Now here maybe all items in pool have an equal chance to spawn - // or they have percentages assigned to them as well - + int randomItemFromPool = new Random().nextInt(100); - int itemIndex = (int)Math.floor(randomItemFromPool/100*itemTemplates.size()); // 5 Elements,rnd is 83 -> 0.83*5= + int remainder = 0; // [10,20,30,34,5,1] - lootRollSession.addDroppedItemTemplate(itemTemplates.get(itemIndex)); + for (int i=0;i customizationAttributes = (Vector)core.scriptService.fetchStringVector(path,"customizationAttributes"); + Vector customizationValues = (Vector)core.scriptService.fetchIntegerVector(path,"customizationValues"); + + System.out.println("itemTemplate " + itemTemplate); + + /* + craftingValues = { + {"mindamage",25,35,0}, + {"maxdamage",40,50,0}, + {"attackspeed",1,-1,5}, + {"woundchance",4,8,5}, + {"hitpoints",800,1200,0}, + {"attackhealthcost",0,9,0}, + {"attackactioncost",0,9,0}, + {"attackmindcost",0,9,0}, + {"forcecost",0,9.9,0}, + {"color",31,31,0}, + {"quality",6,6,0}, + }, + */ + + + + + + + + + TangibleObject droppedItem = createDroppedItem(itemTemplate,lootRollSession.getSessionPlanet()); + + handleCustomDropName(droppedItem); + handleStats(droppedItem); + setCustomization(droppedItem); + + lootRollSession.addDroppedItem(droppedItem); + } + + + + private void handleCustomDropName(TangibleObject droppedItem) { + String customName = droppedItem.getCustomName(); + + if (customName!=null) { + if (customName.charAt(0) == '@' || customName.contains("_n:")) { + customName = ""; // Look the name up in some tre table + } + } + droppedItem.setCustomName(customName); + } + + private TangibleObject createDroppedItem(String template,Planet planet){ + TangibleObject droppedItem = (TangibleObject) core.objectService.createObject(template, planet); + System.out.println("droppedItem " + droppedItem); + return droppedItem; + } + + + + private void setCustomization(TangibleObject droppedItem) { + + // Example color crystal + droppedItem.setCustomizationVariable("/private/index_color_1", (byte) new Random().nextInt(7)); // 4 blue + + // More general +// String path = "scripts/loot/lootItems/"+droppedItem.getCustomName().toLowerCase(); +// Vector customizationPaths = (Vector)core.scriptService.fetchStringVector(path,"itemCustomizationPaths"); +// Vector customizationValues = (Vector)core.scriptService.fetchIntegerVector(path,"itemCustomizationValues"); +// for (int i=0;i fetchStringVector(String path, String method) { Vector vector = new Vector(); PyObject result = core.scriptService.callScript(path, "", method);