Merge pull request #622 from CharonInferar/TuningProcess

Pearl/Crystal Tuning process
This commit is contained in:
CharonInferar
2014-05-06 16:20:24 +02:00
3 changed files with 191 additions and 27 deletions
+41 -7
View File
@@ -1,11 +1,18 @@
from resources.common import RadialOptions
from services.sui.SUIService import MessageBoxType
import time
from services.sui.SUIWindow import Trigger
from java.util import Vector
import main.NGECore
import sys
def createRadial(core, owner, target, radials):
def createRadial(core, owner, target, radials):
radials.clear()
radials.add(RadialOptions(0, 7, 0, 'Examine'))
radials.add(RadialOptions(0, 15, 0, 'Destroy'))
if target.getAttachment("tunerId") == None or target.getAttachment("tunerId") == 0: radials.add(RadialOptions(0, 19, 0, 'Tune'))
if target.getAttachment("tunerId") == None or target.getAttachment("tunerId") == 0:
if owner.getPlayerObject().getProfession()=='force_sensitive_1a':
radials.add(RadialOptions(0, 19, 0, '@jedi_spam:tune_crystal'))
return
def handleSelection(core, owner, target, option):
@@ -14,13 +21,40 @@ def handleSelection(core, owner, target, option):
#owner.sendSystemMessage('You are not attuned enough with the force yet.',1)
if target.getAttachment("tunerId") == None or target.getAttachment("tunerId") == 0:
target.getAttributes().put("@obj_attr_n:crystal_owner", owner.getCustomName())
target.setAttachment("tunerId", int(owner.getObjectId()))
# Need to change this to generate valid numbers based on the quality and type ... stats found here: http://swg.wikia.com/wiki/Lightsaber_Crystal
if target.getAttributes().get("@obj_attr_n:color") is None:
target.getAttributes().put("@obj_attr_n:componentbonuslow", "23")
target.getAttributes().put("@obj_attr_n:componentbonushigh", "25")
owner.setAttachment("TunableObject", target.getObjectID())
handleSUIWindow(core, owner, target, option)
else:
owner.sendSystemMessage("You cannot tune this crystal.",1)
return
def handleSUIWindow(core, owner, target, option):
suiSvc = core.suiService
suiWindow = suiSvc.createMessageBox(MessageBoxType.MESSAGE_BOX_OK_CANCEL, '@jedi_spam:confirm_tune_title', '@jedi_spam:confirm_tune_prompt', owner, target, 15)
returnParams = Vector()
returnParams.add('btnOk:Text')
returnParams.add('btnCancel:Text')
suiWindow.addHandler(0, '', Trigger.TRIGGER_OK, returnParams, handleSUI)
suiWindow.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnParams, handleSUI)
suiSvc.openSUIWindow(suiWindow)
def handleSUI(owner, window, eventType, returnList):
if eventType == 0:
time.sleep(3)
objectID = long(owner.getAttachment("TunableObject"))
tunableObject = main.NGECore.getInstance().objectService.getObject(objectID)
if tunableObject:
tunableObject.getAttributes().put("@obj_attr_n:crystal_owner", owner.getCustomName())
tunableObject.setAttachment("tunerId", int(owner.getObjectId()))
main.NGECore.getInstance().lootService.tuneProcess(tunableObject)
time.sleep(0.5)
owner.sendSystemMessage('@jedi_spam:crystal_tune_success',1)
return
+11 -4
View File
@@ -1025,18 +1025,25 @@ public class DevService implements INetworkDispatch {
core.lootService.handleSpecialItems(kraytPearl5, "kraytpearl");
inventory.add(kraytPearl5);
TangibleObject kraytPearl6 = (TangibleObject) core.objectService.createObject("object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff", planet);
kraytPearl6.setAttachment("LootItemName", "kraytpearl_premium");
core.lootService.handleSpecialItems(kraytPearl6, "kraytpearl");
inventory.add(kraytPearl6);
TangibleObject colorCrystal = (TangibleObject) core.objectService.createObject("object/tangible/component/weapon/lightsaber/shared_lightsaber_module_force_crystal.iff", planet);
colorCrystal.getAttributes().put("@obj_attr_n:condition", "100/100");
colorCrystal.getAttributes().put("@obj_attr_n:crystal_owner", "\\#D1F56F UNTUNED \\#FFFFFF ");
colorCrystal.setAttachment("radial_filename", "item/tunable");
//colorCrystal.getAttributes().put("@obj_attr_n:crystal_owner", "\\#D1F56F UNTUNED \\#FFFFFF ");
//colorCrystal.setAttachment("radial_filename", "item/tunable");
core.lootService.setCustomization(colorCrystal, "colorcrystal");
inventory.add(colorCrystal);
TangibleObject lavaCrystal = (TangibleObject) core.objectService.createObject("object/tangible/component/weapon/lightsaber/shared_lightsaber_module_lava_crystal.iff", planet);
lavaCrystal.getAttributes().put("@obj_attr_n:condition", "100/100");
lavaCrystal.getAttributes().put("@obj_attr_n:crystal_owner", "\\#D1F56F UNTUNED \\#FFFFFF ");
//lavaCrystal.getAttributes().put("@obj_attr_n:crystal_owner", "\\#D1F56F UNTUNED \\#FFFFFF ");
lavaCrystal.getAttributes().put("@obj_attr_n:color", "Lava");
lavaCrystal.setAttachment("radial_filename", "item/tunable");
//lavaCrystal.setAttachment("radial_filename", "item/tunable");
inventory.add(lavaCrystal);
return;
+139 -16
View File
@@ -542,7 +542,8 @@ public class LootService implements INetworkDispatch {
int crystalColor = new Random().nextInt(11);
droppedItem.setCustomizationVariable("/private/index_color_1", (byte) crystalColor);
droppedItem.getAttributes().put("@obj_attr_n:color", resources.datatables.LightsaberColors.get(crystalColor));
//droppedItem.getAttributes().put("@obj_attr_n:color", resources.datatables.LightsaberColors.get(crystalColor));
droppedItem.getAttributes().put("@obj_attr_n:color", "@jedi_spam:saber_color_" + crystalColor);
}
// Example power crystal
@@ -694,25 +695,25 @@ public class LootService implements INetworkDispatch {
droppedItem.setDetailName("item_junk_imitation_pearl_01_01");
return;
case "kraytpearl_poor":
qualityString="Poor";
qualityString="@jedi_spam:crystal_quality_0";
break;
case "kraytpearl_fair":
qualityString="Fair";
qualityString="@jedi_spam:crystal_quality_1";
break;
case "kraytpearl_good":
qualityString="Good";
qualityString="@jedi_spam:crystal_quality_2";
break;
case "kraytpearl_quality":
qualityString="Quality";
qualityString="@jedi_spam:crystal_quality_3";
break;
case "kraytpearl_select":
qualityString="Select";
qualityString="@jedi_spam:crystal_quality_4";
break;
case "kraytpearl_premium":
qualityString="Premium";
qualityString="@jedi_spam:crystal_quality_5";
break;
case "kraytpearl_flawless":
qualityString="Flawless";
qualityString="@jedi_spam:crystal_quality_6";
break;
default:
qualityString="Undetermined";
@@ -722,6 +723,7 @@ public class LootService implements INetworkDispatch {
droppedItem.getAttributes().put("@obj_attr_n:crystal_owner", "\\#D1F56F UNTUNED \\#FFFFFF ");
droppedItem.getAttributes().put("@obj_attr_n:crystal_quality", qualityString);
droppedItem.setAttachment("radial_filename", "item/tunable");
droppedItem.setAttachment("TuneType", "KraytPearl");
}
private void handlePowerCrystal(TangibleObject droppedItem) {
@@ -731,28 +733,28 @@ public class LootService implements INetworkDispatch {
switch (itemName) {
case "powercrystal_poor":
qualityString="Poor";
qualityString="@jedi_spam:crystal_quality_0";
break;
case "powercrystal_fair":
qualityString="Fair";
qualityString="@jedi_spam:crystal_quality_1";
break;
case "powercrystal_good":
qualityString="Good";
qualityString="@jedi_spam:crystal_quality_2";
break;
case "powercrystal_quality":
qualityString="Quality";
qualityString="@jedi_spam:crystal_quality_3";
break;
case "powercrystal_select":
qualityString="Select";
qualityString="@jedi_spam:crystal_quality_4";
break;
case "powercrystal_premium":
qualityString="Premium";
qualityString="@jedi_spam:crystal_quality_5";
break;
case "powercrystal_flawless":
qualityString="Flawless";
qualityString="@jedi_spam:crystal_quality_6";
break;
case "powercrystal_perfect":
qualityString="Perfect";
qualityString="@jedi_spam:crystal_quality_7";
break;
default:
qualityString="Undetermined";
@@ -762,8 +764,129 @@ public class LootService implements INetworkDispatch {
droppedItem.getAttributes().put("@obj_attr_n:crystal_owner", "\\#D1F56F UNTUNED \\#FFFFFF ");
droppedItem.getAttributes().put("@obj_attr_n:crystal_quality", qualityString);
droppedItem.setAttachment("radial_filename", "item/tunable");
droppedItem.setAttachment("TuneType", "PowerCrystal");
}
public void tuneProcess(SWGObject tunableObject){
String objectType = (String) tunableObject.getAttachment("LootItemName");
if (objectType==null || objectType.length()==0)
return;
int finalMinDmg = 0;
int finalMaxDmg = 0;
String tunableObjectName = "";
if (objectType.contains("powercrystal")){
tunableObjectName = "Power Crystal";
switch (objectType) {
case "powercrystal_poor": // Poor - Up to 3/4 damage
int minValue1 = 1;
int maxValue1 = 3;
finalMinDmg = minValue1+new Random().nextInt(maxValue1+1-minValue1);
finalMaxDmg = finalMinDmg+1;
break;
case "powercrystal_fair": // Fair - Up to 5/6 damage
minValue1 = 3;
maxValue1 = 5;
finalMinDmg = minValue1+new Random().nextInt(maxValue1+1-minValue1);
finalMaxDmg = finalMinDmg+1;
break;
case "powercrystal_good": // Good - Up to 10/11 damage
minValue1 = 6;
maxValue1 = 10;
finalMinDmg = minValue1+new Random().nextInt(maxValue1+1-minValue1);
finalMaxDmg = finalMinDmg+1;
break;
case "powercrystal_quality": // Quality - Up to 12/13 damage
minValue1 = 11;
maxValue1 = 12;
finalMinDmg = minValue1+new Random().nextInt(maxValue1+1-minValue1);
finalMaxDmg = finalMinDmg+1;
break;
case "powercrystal_select": // Select - Up to 14/15 damage
minValue1 = 13;
maxValue1 = 14;
finalMinDmg = minValue1+new Random().nextInt(maxValue1+1-minValue1);
finalMaxDmg = finalMinDmg+1;
break;
case "powercrystal_premium": // Premium - Up to 17/18 damage
minValue1 = 15;
maxValue1 = 17;
finalMinDmg = minValue1+new Random().nextInt(maxValue1+1-minValue1);
finalMaxDmg = finalMinDmg+1;
break;
case "powercrystal_flawless": // Flawless - 20-22 possibly more or less
finalMinDmg = 20;
finalMaxDmg = 22;
break;
case "powercrystal_perfect": // Perfect - Up to 23/25 damage
minValue1 = 21;
maxValue1 = 23;
finalMinDmg = minValue1+new Random().nextInt(maxValue1+1-minValue1);
finalMaxDmg = finalMinDmg+1;
break;
}
}
if (objectType.contains("kraytpearl")){
tunableObjectName = "Krayt Dragon Pearl";
switch (objectType) {
case "kraytpearl_poor": // Poor - Up to 3/4 damage
int minValue1 = 1;
int maxValue1 = 3;
finalMinDmg = minValue1+new Random().nextInt(maxValue1+1-minValue1);
finalMaxDmg = finalMinDmg+1;
break;
case "kraytpearl_fair": // Fair - Up to 5/6 damage
minValue1 = 3;
maxValue1 = 5;
finalMinDmg = minValue1+new Random().nextInt(maxValue1+1-minValue1);
finalMaxDmg = finalMinDmg+1;
break;
case "kraytpearl_good": // Good - Up to 10/11 damage
minValue1 = 6;
maxValue1 = 10;
finalMinDmg = minValue1+new Random().nextInt(maxValue1+1-minValue1);
finalMaxDmg = finalMinDmg+1;
break;
case "kraytpearl_quality": // Quality - Up to 12/13 damage
minValue1 = 11;
maxValue1 = 12;
finalMinDmg = minValue1+new Random().nextInt(maxValue1+1-minValue1);
finalMaxDmg = finalMinDmg+1;
break;
case "kraytpearl_select": // Select - Up to 14/15 damage
minValue1 = 13;
maxValue1 = 14;
finalMinDmg = minValue1+new Random().nextInt(maxValue1+1-minValue1);
finalMaxDmg = finalMinDmg+1;
break;
case "kraytpearl_premium": // Premium - Up to 18/19 damage
minValue1 = 15;
maxValue1 = 17;
finalMinDmg = minValue1+new Random().nextInt(maxValue1+1-minValue1);
finalMaxDmg = finalMinDmg+1;
break;
case "kraytpearl_flawless": // Flawless - 19/20 damage
finalMinDmg = 19;
finalMaxDmg = 20;
break;
case "kraytpearl_ancient": // Ancient - 20/22 damage
finalMinDmg = 20;
finalMaxDmg = 22;
break;
}
}
tunableObject.getAttributes().remove("@obj_attr_n:crystal_quality");
// tunableObject.setIntAttribute("@obj_attr_n:componentbonuslow", finalMinDmg);
// tunableObject.setIntAttribute("@obj_attr_n:componentbonushigh", finalMaxDmg);
tunableObject.setIntAttribute("@obj_attr_n:mindamage", finalMinDmg);
tunableObject.setIntAttribute("@obj_attr_n:maxdamage", finalMaxDmg);
((TangibleObject) tunableObject).setCustomName2(tunableObjectName + " (tuned)");
}
private void setWeaponStat(WeaponObject weapon, String statName, String minValue, String maxValue){
// weapon.setConditionDamage(100); shows 1000/926 ??!!