Merge pull request #475 from CharonInferar/JunkDealer

Junk dealer added
This commit is contained in:
CharonInferar
2014-04-18 21:22:24 +02:00
52 changed files with 1271 additions and 29 deletions
+572
View File
@@ -0,0 +1,572 @@
from resources.common import ConversationOption
from resources.common import OutOfBand
from resources.common import ProsePackage
from resources.common import RadialOptions
from services.sui import SUIWindow
from services.sui.SUIWindow import Trigger
from java.util import Vector
import sys
sellItemListRef = 0
buyItemListRef = 0
coreRef = 0
junkDealerRef = 0
def startConversation(core, actor, npc):
#core.lootService.prepInv(actor)
global coreRef
global junkDealerRef
global sellItemListRef
sellItemListRef = core.lootService.getSellableInventoryItems(actor)
coreRef = core
junkDealerRef = npc
convSvc = core.conversationService
prose = ProsePackage('conversation/junk_dealer_generic', 's_bef51e38')
outOfBand = OutOfBand()
outOfBand.addProsePackage(prose)
convSvc.sendConversationMessage(actor, npc, outOfBand)
prose2 = ProsePackage('conversation/junk_dealer_generic', 's_54fab04f')
outOfBand2 = OutOfBand()
outOfBand2.addProsePackage(prose2)
prose3 = ProsePackage('conversation/junk_dealer_generic', 's_48')
outOfBand3 = OutOfBand()
outOfBand3.addProsePackage(prose3)
prose4 = ProsePackage('conversation/junk_dealer_generic', 's_3aa18b2d')
outOfBand4 = OutOfBand()
outOfBand4.addProsePackage(prose4)
option1 = ConversationOption(outOfBand2, 0)
option2 = ConversationOption(outOfBand3, 1)
option3 = ConversationOption(outOfBand4, 1)
options = Vector()
options.add(option1)
options.add(option2)
options.add(option3)
if len(core.lootService.getBuyHistory(actor,npc))!= 0:
prose5 = ProsePackage('conversation/junk_dealer_generic', 's_43')
outOfBand5 = OutOfBand()
outOfBand5.addProsePackage(prose5)
option4 = ConversationOption(outOfBand5, 1)
options.add(option4)
convSvc.sendConversationOptions(actor, npc, options, handleFirstScreen)
return
def handleFirstScreen(core, actor, npc, selection):
convSvc = core.conversationService
if selection == 0:
# sell items
prose = ProsePackage('conversation/junk_dealer_generic', 's_84a67771')
outOfBand = OutOfBand()
outOfBand.addProsePackage(prose)
convSvc.sendConversationMessage(actor, npc, outOfBand)
sellItemListRef = core.lootService.getSellableInventoryItems(actor)
if len(sellItemListRef) == 0:
actor.sendSystemMessage('@loot_dealer:no_items', 1)
startConversation(coreRef,actor,junkDealerRef)
return # no point
window = core.suiService.createSUIWindow('Script.listBox', actor, npc, 0)
window.setProperty('bg.caption.lblTitle:Text', '@loot_dealer:sell_title')
window.setProperty('Prompt.lblPrompt:Text', '@loot_dealer:sell_prompt')
for item in sellItemListRef:
window.addListBoxMenuItem(item.getCustomName(), 0);
window.setProperty('btnOther:visible', 'True')
window.setProperty('btnCancel:visible', 'True')
window.setProperty('btnOk:visible', 'True')
window.setProperty('btnOther:Text', '@loot_dealer:examine')
window.setProperty('btnCancel:Text', '@cancel')
window.setProperty('btnOk:Text', '@loot_dealer:btn_sell')
returnList = Vector()
returnList.add('List.lstList:SelectedRow')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, sellWindowCallBack)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, sellWindowCallBack)
window.addHandler(2, '', Trigger.TRIGGER_UPDATE, returnList, sellWindowCallBack)
core.suiService.openSUIWindow(window);
return
if selection == 1:
# mark items
window = core.suiService.createSUIWindow('Script.listBox', actor, npc, 0)
window.setProperty('bg.caption.lblTitle:Text', '@loot_dealer:junk_no_sell_title')
window.setProperty('Prompt.lblPrompt:Text', '@loot_dealer:junk_no_sell_desc')
sellItemListRef = core.lootService.getSellableInventoryItems(actor)
for item in sellItemListRef:
nameString = item.getCustomName()
nameString = 'TestJunkItem'
if item.isNoSell():
nameString = '[*No Sell*]' + item.getCustomName()
window.addListBoxMenuItem(nameString, 0)
else:
nameString = '[Sellable]' + item.getCustomName()
window.addListBoxMenuItem(nameString, 0)
window.setProperty('btnOther:visible', 'True')
window.setProperty('btnCancel:visible', 'True')
window.setProperty('btnOk:visible', 'True')
window.setProperty('btnOther:Text', '@loot_dealer:examine')
window.setProperty('btnCancel:Text', '@cancel')
window.setProperty('btnOk:Text', '@loot_dealer:junk_no_sell_button')
returnList = Vector()
returnList.add('List.lstList:SelectedRow')
#window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, noSellWindowCallBack)
#window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, noSellWindowCallBack)
window.addHandler(0, '',9, returnList, noSellWindowCallBack)
window.addHandler(1, '',10, returnList, noSellWindowCallBack)
window.addHandler(2, '',11, returnList, noSellWindowCallBack)
core.suiService.openSUIWindow(window);
return
if selection == 2:
lootKitScreen1(core, actor, npc)
if selection == 3:
# buy back
buyHistory = coreRef.lootService.getBuyHistory(actor,npc)
if len(buyHistory) == 0:
actor.sendSystemMessage('@loot_dealer:no_buy_back_items_found', 1)
startConversation(coreRef,actor,npc)
return
prose = ProsePackage('conversation/junk_dealer_generic', 's_44')
outOfBand = OutOfBand()
outOfBand.addProsePackage(prose)
convSvc.sendConversationMessage(actor, npc, outOfBand)
window = core.suiService.createSUIWindow('Script.listBox', actor, npc, 0)
window.setProperty('bg.caption.lblTitle:Text', '@loot_dealer:buy_back_title')
window.setProperty('Prompt.lblPrompt:Text', '@loot_dealer:buy_back_prompt')
buyHistory = core.lootService.getBuyHistory(actor,junkDealerRef)
if buyHistory==None:
return
for item in buyHistory:
junkDealerPrice = item.getJunkDealerPrice()
if junkDealerPrice == 0:
junkDealerPrice = 20
nameString = '[%s' % junkDealerPrice + ']' + item.getCustomName() #%
window.addListBoxMenuItem(nameString, 0)
window.setProperty('btnOther:visible', 'True')
window.setProperty('btnCancel:visible', 'True')
window.setProperty('btnOk:visible', 'True')
window.setProperty('btnOther:Text', '@loot_dealer:examine')
window.setProperty('btnCancel:Text', '@cancel')
window.setProperty('btnOk:Text', '@loot_dealer:btn_buy_back')
returnList = Vector()
returnList.add('List.lstList:SelectedRow')
window.addHandler(0, '', Trigger.TRIGGER_OK, returnList, buyBackWindowCallBack)
window.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, buyBackWindowCallBack)
window.addHandler(2, '', Trigger.TRIGGER_UPDATE, returnList, buyBackWindowCallBack)
core.suiService.openSUIWindow(window);
return
def handleRespecScreen(core, actor, npc, selection):
if selection == 0:
core.skillService.sendRespecWindow(actor)
core.conversationService.handleEndConversation(actor, npc)
return
def handleResetScreen(core, actor, npc, selection):
if selection == 0:
core.skillService.resetExpertise(actor)
core.conversationService.handleEndConversation(actor, npc)
return
def endConversation(core, actor, npc):
core.conversationService.sendStopConversation(actor, npc, 'conversation/junk_dealer_generic', 's_4bd9d15e')
return
def sellWindowCallBack(owner, window, eventType, returnList):
sellItemListRef = coreRef.lootService.getSellableInventoryItems(owner)
#sell
if eventType == 0:
sellItem = sellItemListRef.get(int(returnList.get(0)))
#if len(sellItemListRef):
#owner.sendSystemMessage('@junk_dealer:no_items', 1)
#return
if sellItem == None:
owner.sendSystemMessage('@junk_dealer:no_items', 1)
return
inventory = owner.getSlottedObject('inventory')
junkDealerPrice = sellItem.getJunkDealerPrice()
if junkDealerPrice == 0:
junkDealerPrice = 20
owner.setCashCredits(owner.getCashCredits()+junkDealerPrice)
# add item to 10-item junk dealer history
coreRef.lootService.addToBuyHistory(owner,junkDealerRef,sellItem)
owner.sendSystemMessage(OutOfBand.ProsePackage("@junk_dealer:prose_sold_junk", "TT", sellItem.getCustomName(),junkDealerPrice), 0)
inventory.remove(sellItem)
coreRef.suiService.closeSUIWindow(owner,window.getWindowId())
handleFirstScreen(coreRef, owner, junkDealerRef, 0)
return
#cancel
if eventType == 1:
owner.sendSystemMessage("cancel ", 1)
coreRef.suiService.closeSUIWindow(owner,window.getWindowId())
startConversation(coreRef,owner,junkDealerRef)
return
#examine
if eventType == 2:
owner.sendSystemMessage("examine ", 1)
#coreRef.suiService.closeSUIWindow(window,window.getWindowId())
#startConversation(coreRef,owner,junkDealerRef)
#owner.sendSystemMessage('Examine', 0)
return
return
def noSellWindowCallBack(owner, window, eventType, returnList):
if returnList.get(0) == 0:
startConversation(coreRef,owner,junkDealerRef)
return
#toggle
if eventType == 0:
owner.sendSystemMessage('Toggle', 0)
toggleItem = sellItemListRef.get(int(returnList.get(0)))
if toggleItem.isNoSell():
toggleItem.setNoSell(0)
else:
toggleItem.setNoSell(1)
#core.suiService.closeSUIWindow(window)
handleFirstScreen(coreRef, owner, junkDealerRef, 1)
return
#cancel
if eventType == 1:
owner.sendSystemMessage('Cancle', 0)
sellItem = returnList.get(0)
startConversation(coreRef,owner,junkDealerRef)
return
#examine
if eventType == 2:
owner.sendSystemMessage('Ex', 0)
sellItem = returnList.get(0)
startConversation(coreRef,owner,junkDealerRef)
owner.sendSystemMessage('Examine', 0)
return
def buyBackWindowCallBack(owner, window, eventType, returnList):
convSvc = coreRef.conversationService
if returnList.get(0) == 0:
startConversation(coreRef,owner,junkDealerRef)
return
#buy
if eventType == 0:
index = int(returnList.get(0))
buyHistory = coreRef.lootService.getBuyHistory(owner,junkDealerRef)
if len(buyHistory) == 0:
owner.sendSystemMessage('@loot_dealer:no_buy_back_items_found', 1)
startConversation(coreRef,owner,junkDealerRef)
return
buyBackItem = buyHistory.get(index)
if buyBackItem == None:
owner.sendSystemMessage('@loot_dealer:no_buy_back_items_found', 0)
startConversation(coreRef,owner,junkDealerRef)
return
if owner.getInventoryItemCount() >= 80:
prose = ProsePackage('conversation/junk_dealer_generic', 's_47')
outOfBand = OutOfBand()
outOfBand.addProsePackage(prose)
convSvc.sendConversationMessage(owner, junkDealerRef, outOfBand)
return
junkDealerPrice = buyBackItem.getJunkDealerPrice()
if junkDealerPrice == 0:
junkDealerPrice = 20
owner.setCashCredits(owner.getCashCredits()+junkDealerPrice)
if owner.getCashCredits()>=junkDealerPrice:
owner.setCashCredits(owner.getCashCredits()-junkDealerPrice)
inventory = owner.getSlottedObject('inventory')
inventory.add(buyBackItem)
owner.sendSystemMessage('You buy back ' + buyBackItem.getCustomName() + ' for %s' % junkDealerPrice + ' credits.', 0)
# remove from junk dealer history
coreRef.lootService.removeBoughtBackItemFromHistory(owner,junkDealerRef,buyBackItem)
else:
owner.sendSystemMessage('@loot_dealer:prose_no_buy_back', 0)
coreRef.suiService.closeSUIWindow(owner,window.getWindowId());
handleFirstScreen(coreRef, owner, junkDealerRef, 3)
return
#cancel
if eventType == 1:
owner.sendSystemMessage('Cancel', 0)
sellItem = returnList.get(0)
startConversation(coreRef,owner,junkDealerRef)
return
#examine
if eventType == 2:
owner.sendSystemMessage('Ex', 0)
sellItem = returnList.get(0)
startConversation(coreRef,owner,junkDealerRef)
owner.sendSystemMessage('Examine', 0)
return
def handleLootScreenSelection1(core, actor, npc, selection):
convSvc = core.conversationService
if selection == 0:
lootKitScreen1(core, actor, npc)
return
def handleLootScreenSelection2(core, actor, npc, selection):
convSvc = core.conversationService
if selection == 0:
lootKitScreen2(core, actor, npc)
return
def handleLootScreenSelection3(core, actor, npc, selection):
convSvc = core.conversationService
if selection == 0:
lootKitScreen3(core, actor, npc)
return
def handleLootScreenSelection4(core, actor, npc, selection):
convSvc = core.conversationService
if selection == 0:
lootKitScreen4(core, actor, npc)
return
def handleLootScreenSelection5(core, actor, npc, selection):
convSvc = core.conversationService
if selection == 0:
lootKitScreen5a(core, actor, npc)
if selection == 1:
lootKitScreen5b(core, actor, npc)
return
def handleLootScreenSelection6(core, actor, npc, selection):
convSvc = core.conversationService
prose = ProsePackage('conversation/junk_dealer_generic', 's_14efaaa2')
outOfBand = OutOfBand()
outOfBand.addProsePackage(prose)
convSvc.sendConversationMessage(actor, npc, outOfBand)
if selection == 0:
template = 'object/tangible/loot/collectible/kits/shared_orange_rug_kit.iff'
addLootKit(core, actor, npc,template)
if selection == 1:
template = 'object/tangible/loot/collectible/kits/shared_blue_rug_kit.iff'
addLootKit(core, actor, npc,template)
if selection == 2:
template = 'object/tangible/loot/collectible/kits/shared_gong_kit.iff'
addLootKit(core, actor, npc,template)
if selection == 3:
template = 'object/tangible/loot/collectible/kits/shared_light_table_kit.iff'
addLootKit(core, actor, npc,template)
if selection == 4:
template = 'object/tangible/loot/collectible/kits/shared_sculpture_kit.iff'
addLootKit(core, actor, npc,template)
return
def addLootKit(core, actor, npc,template):
kit = core.objectService.createObject(template, actor.getPlanet())
inventory = actor.getSlottedObject('inventory')
inventory.add(kit)
return
def lootKitScreen1(core, actor, npc):
convSvc = core.conversationService
prose = ProsePackage('conversation/junk_dealer_generic', 's_d9e6b751')
outOfBand = OutOfBand()
outOfBand.addProsePackage(prose)
convSvc.sendConversationMessage(actor, npc, outOfBand)
prose2 = ProsePackage('conversation/junk_dealer_generic', 's_6d53d062')
outOfBand2 = OutOfBand()
outOfBand2.addProsePackage(prose2)
option1 = ConversationOption(outOfBand2, 0)
options = Vector()
options.add(option1)
convSvc.sendConversationOptions(actor, npc, options, handleLootScreenSelection2)
return
def lootKitScreen2(core, actor, npc):
convSvc = core.conversationService
prose = ProsePackage('conversation/junk_dealer_generic', 's_e29f48dc')
outOfBand = OutOfBand()
outOfBand.addProsePackage(prose)
convSvc.sendConversationMessage(actor, npc, outOfBand)
prose2 = ProsePackage('conversation/junk_dealer_generic', 's_324b9b0f')
outOfBand2 = OutOfBand()
outOfBand2.addProsePackage(prose2)
option1 = ConversationOption(outOfBand2, 0)
options = Vector()
options.add(option1)
convSvc.sendConversationOptions(actor, npc, options, handleLootScreenSelection3)
return
def lootKitScreen3(core, actor, npc):
convSvc = core.conversationService
prose = ProsePackage('conversation/junk_dealer_generic', 's_12fe83a6')
outOfBand = OutOfBand()
outOfBand.addProsePackage(prose)
convSvc.sendConversationMessage(actor, npc, outOfBand)
prose2 = ProsePackage('conversation/junk_dealer_generic', 's_e1a103e5')
outOfBand2 = OutOfBand()
outOfBand2.addProsePackage(prose2)
option1 = ConversationOption(outOfBand2, 0)
options = Vector()
options.add(option1)
convSvc.sendConversationOptions(actor, npc, options, handleLootScreenSelection4)
return
def lootKitScreen4(core, actor, npc):
convSvc = core.conversationService
prose = ProsePackage('conversation/junk_dealer_generic', 's_4d65752')
outOfBand = OutOfBand()
outOfBand.addProsePackage(prose)
convSvc.sendConversationMessage(actor, npc, outOfBand)
prose2 = ProsePackage('conversation/junk_dealer_generic', 's_d347bee3')
outOfBand2 = OutOfBand()
outOfBand2.addProsePackage(prose2)
prose3 = ProsePackage('conversation/junk_dealer_generic', 's_b60b73f8')
outOfBand3 = OutOfBand()
outOfBand3.addProsePackage(prose3)
option1 = ConversationOption(outOfBand2, 0)
option2 = ConversationOption(outOfBand3, 0)
options = Vector()
options.add(option1)
options.add(option2)
convSvc.sendConversationOptions(actor, npc, options, handleLootScreenSelection5)
return
def lootKitScreen5a(core, actor, npc):
convSvc = core.conversationService
prose = ProsePackage('conversation/junk_dealer_generic', 's_3fc7eb45')
outOfBand = OutOfBand()
outOfBand.addProsePackage(prose)
convSvc.sendConversationMessage(actor, npc, outOfBand)
prose2 = ProsePackage('conversation/junk_dealer_generic', 's_ee977dee')
outOfBand2 = OutOfBand()
outOfBand2.addProsePackage(prose2)
prose3 = ProsePackage('conversation/junk_dealer_generic', 's_8f39769')
outOfBand3 = OutOfBand()
outOfBand3.addProsePackage(prose3)
prose4 = ProsePackage('conversation/junk_dealer_generic', 's_fe657cdd')
outOfBand4 = OutOfBand()
outOfBand4.addProsePackage(prose4)
prose5 = ProsePackage('conversation/junk_dealer_generic', 's_9ede4b84')
outOfBand5 = OutOfBand()
outOfBand5.addProsePackage(prose5)
prose6 = ProsePackage('conversation/junk_dealer_generic', 's_87c5851b')
outOfBand6 = OutOfBand()
outOfBand6.addProsePackage(prose6)
option1 = ConversationOption(outOfBand2, 0)
option2 = ConversationOption(outOfBand3, 0)
option3 = ConversationOption(outOfBand4, 0)
option4 = ConversationOption(outOfBand5, 0)
option5 = ConversationOption(outOfBand6, 0)
options = Vector()
options.add(option1)
options.add(option2)
options.add(option3)
options.add(option4)
options.add(option5)
convSvc.sendConversationOptions(actor, npc, options, handleLootScreenSelection6)
return
def lootKitScreen5b(core, actor, npc):
startConversation(core,actor,npc)
return
@@ -5,7 +5,7 @@ def itemTemplate():
def customItemName():
return ''
return 'Composite Armor Left Bicep'
def customItemStackCount():
@@ -5,7 +5,7 @@ def itemTemplate():
def customItemName():
return ''
return 'Composite Armor Right Bicep'
def customItemStackCount():
@@ -5,7 +5,7 @@ def itemTemplate():
def customItemName():
return ''
return 'Composite Armor Boots'
def customItemStackCount():
@@ -5,7 +5,7 @@ def itemTemplate():
def customItemName():
return ''
return 'Composite Armor Bracer Left'
def customItemStackCount():
@@ -5,7 +5,7 @@ def itemTemplate():
def customItemName():
return ''
return 'Composite Armor Bracer Right'
def customItemStackCount():
@@ -5,7 +5,7 @@ def itemTemplate():
def customItemName():
return ''
return 'Composite Armor Chestplate'
def customItemStackCount():
@@ -5,7 +5,7 @@ def itemTemplate():
def customItemName():
return ''
return 'Composite Armor Gloves'
def customItemStackCount():
@@ -5,7 +5,7 @@ def itemTemplate():
def customItemName():
return ''
return 'Composite Armor Helmet'
def customItemStackCount():
@@ -5,7 +5,7 @@ def itemTemplate():
def customItemName():
return ''
return 'Composite Armor Leggings'
def customItemStackCount():
@@ -5,4 +5,4 @@ def itemTemplate():
def customItemName():
return ''
return 'Tusken Raider Bandolier'
@@ -5,4 +5,4 @@ def itemTemplate():
def customItemName():
return ''
return 'Tusken Raider Boots'
@@ -5,4 +5,4 @@ def itemTemplate():
def customItemName():
return ''
return 'Tusken Raider Dress'
@@ -5,4 +5,4 @@ def itemTemplate():
def customItemName():
return ''
return 'Tusken Raider Gloves'
@@ -5,4 +5,4 @@ def itemTemplate():
def customItemName():
return ''
return 'Tusken Raider Helmet'
@@ -2,3 +2,7 @@
def itemTemplate():
return ['object/tangible/loot/creature_loot/generic/shared_generic_antennae.iff']
def customItemName():
return 'Antenna'
@@ -2,3 +2,7 @@
def itemTemplate():
return ['object/tangible/loot/creature_loot/generic/shared_generic_eye.iff']
def customItemName():
return 'Eye'
@@ -2,3 +2,7 @@
def itemTemplate():
return ['object/tangible/loot/creature_loot/generic/shared_generic_heart.iff']
def customItemName():
return 'Heart'
@@ -2,3 +2,7 @@
def itemTemplate():
return ['object/tangible/loot/creature_loot/generic/shared_generic_stomach.iff']
def customItemName():
return 'Stomach'
@@ -2,3 +2,20 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_armor_repair_device_generic.iff']
def customItemName():
return 'Armor Repair Device'
def stackable():
return 1
def junkDealerPrice():
return 28
def junkType():
return 0
@@ -5,4 +5,16 @@ def itemTemplate():
def customItemName():
return 'Chassis Blueprint'
return 'Chassis Blueprint'
def stackable():
return 1
def junkDealerPrice():
return 21
def junkType():
return 0
+13 -1
View File
@@ -5,4 +5,16 @@ def itemTemplate():
def customItemName():
return 'Comlink'
return 'Comlink'
def stackable():
return 1
def junkDealerPrice():
return 15
def junkType():
return 0
@@ -6,4 +6,16 @@ def itemTemplate():
def customItemName():
return 'Damaged Datapad'
def stackable():
return 1
def junkDealerPrice():
return 8
def junkType():
return 0
+4
View File
@@ -2,3 +2,7 @@
def itemTemplate():
return ['/object/tangible/loot/npc_loot/shared_jewelry_ear_s02.iff']
def customItemName():
return 'Ear jewel'
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_firework_dud_s1.iff']
def customItemName():
return 'Explosive Dud'
def stackable():
return 1
def junkDealerPrice():
return 10
def junkType():
return 0
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/misc/shared_hyperdrive_part_s01.iff']
def customItemName():
return 'Hyperdrive Unit'
def stackable():
return 1
def junkDealerPrice():
return 34
def junkType():
return 0
+12
View File
@@ -6,3 +6,15 @@ def itemTemplate():
def customItemName():
return 'ID Chip'
def stackable():
return 1
def junkDealerPrice():
return 14
def junkType():
return 0
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_impulse_detector_01_generic.iff']
def customItemName():
return 'Impulse Detector'
def stackable():
return 1
def junkDealerPrice():
return 17
def junkType():
return 0
+16
View File
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_laser_trap_generic.iff']
def customItemName():
return 'Laser Trap'
def stackable():
return 1
def junkDealerPrice():
return 22
def junkType():
return 0
+13 -1
View File
@@ -5,4 +5,16 @@ def itemTemplate():
def customItemName():
return 'Launcher Tube'
return 'Launcher Tube'
def stackable():
return 1
def junkDealerPrice():
return 16
def junkType():
return 0
+16
View File
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_ledger_generic.iff']
def customItemName():
return 'Ledger'
def stackable():
return 1
def junkDealerPrice():
return 13
def junkType():
return 0
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_magseal_detector_generic.iff']
def customItemName():
return 'MagSeal Detector'
def stackable():
return 1
def junkDealerPrice():
return 15
def junkType():
return 0
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_medical_console_generic.iff']
def customItemName():
return 'Medical Console'
def stackable():
return 1
def junkDealerPrice():
return 24
def junkType():
return 0
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_medical_device_generic.iff']
def customItemName():
return 'Medical Device'
def stackable():
return 1
def junkDealerPrice():
return 17
def junkType():
return 0
+16
View File
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_small_motor_generic.iff']
def customItemName():
return 'Motor'
def stackable():
return 1
def junkDealerPrice():
return 13
def junkType():
return 0
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_power_output_analyzer_generic.iff']
def customItemName():
return 'Power Output Analyzer'
def stackable():
return 1
def junkDealerPrice():
return 21
def junkType():
return 0
+16
View File
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_red_wiring_generic.iff']
def customItemName():
return 'Red Wiring'
def stackable():
return 1
def junkDealerPrice():
return 12
def junkType():
return 0
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_shield_module_generic.iff']
def customItemName():
return 'Shield Module'
def stackable():
return 1
def junkDealerPrice():
return 20
def junkType():
return 0
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_software_module_generic.iff']
def customItemName():
return 'Software Module'
def stackable():
return 1
def junkDealerPrice():
return 12
def junkType():
return 0
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_survival_equipment_generic.iff']
def customItemName():
return 'Survival Gear'
def stackable():
return 1
def junkDealerPrice():
return 11
def junkType():
return 0
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_survey_pad_adv_generic.iff']
def customItemName():
return 'Underpowered Survey Pad'
def stackable():
return 1
def junkDealerPrice():
return 13
def junkType():
return 0
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_serum_vial_generic.iff']
def customItemName():
return 'Unidentified Serum Vial'
def stackable():
return 1
def junkDealerPrice():
return 14
def junkType():
return 0
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_notebook_generic.iff']
def customItemName():
return 'Used Notebook'
def stackable():
return 1
def junkDealerPrice():
return 12
def junkType():
return 0
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/generic/shared_battery_useable_generic.iff']
def customItemName():
return 'Weak Droid Battery'
def stackable():
return 1
def junkDealerPrice():
return 9
def junkType():
return 0
@@ -2,3 +2,19 @@
def itemTemplate():
return ['object/tangible/loot/npc_loot/shared_worklight_generic.iff']
def customItemName():
return 'Generic Worklight'
def stackable():
return 1
def junkDealerPrice():
return 10
def junkType():
return 0
@@ -5,7 +5,7 @@ def itemTemplate():
def customItemName():
return ''
return 'Gaderiffi Baton'
def customItemStackCount():
+6
View File
@@ -0,0 +1,6 @@
object = stcSvc.spawnObject('object/mobile/shared_respec_seller_f_1.iff', 'tatooine', long(0), float(3533.14), float(5), float(-4788.86), float(-0.3327), float(0.9288))
object.setOptionsBitmask(264)
+6 -1
View File
@@ -11,7 +11,12 @@ def addPlanetSpawns(core, planet):
stcSvc.spawnObject('object/tangible/terminal/shared_terminal_character_builder.iff', 'tatooine', long(0), float(3525), float(4), float(-4801), float(0.70), float(0.71))
#object = stcSvc.spawnObject('object/mobile/shared_respec_seller_f_1.iff', 'tatooine', long(0), float(3533.14), float(5), float(-4788.86), float(-0.3327), float(0.9288))
#object.setOptionsBitmask(264)
junkdealer = stcSvc.spawnObject('object/mobile/shared_junk_dealer_m_01.iff', 'tatooine', long(0), float(3525), float(4), float(-4804), float(0.70), float(0.71))
junkdealer.setOptionsBitmask(264)
junkdealer.setCustomName('a Junk Dealer')
junkdealer.setAttachment('radial_filename', 'conversation');
junkdealer.setAttachment('conversationFile','junk_dealer')
return
@@ -53,7 +53,7 @@ import engine.resources.scene.Planet;
import engine.resources.scene.Point3D;
import engine.resources.scene.Quaternion;
@Persistent(version=9)
@Persistent(version=11)
public class TangibleObject extends SWGObject {
// TODO: Thread safety
@@ -89,6 +89,13 @@ public class TangibleObject extends SWGObject {
@NotPersistent
private boolean lootItem = false;
private boolean stackable = false;
private int stackCount = 1;
private boolean noSell = false;
private byte junkType = -1;
private int junkDealerPrice = 0;
private String serialNumber;
@NotPersistent
@@ -499,6 +506,46 @@ public class TangibleObject extends SWGObject {
this.lootItem = lootItem;
}
public boolean isStackable() {
return stackable;
}
public void setStackable(boolean stackable) {
this.stackable = stackable;
}
public int getStackCount() {
return stackCount;
}
public void setStackCount(int stackCount) {
this.stackCount = stackCount;
}
public boolean isNoSell() {
return noSell;
}
public void setNoSell(boolean noSell) {
this.noSell = noSell;
}
public byte getJunkType() {
return junkType;
}
public void setJunkType(byte junkType) {
this.junkType = junkType;
}
public int getJunkDealerPrice() {
return junkDealerPrice;
}
public void setJunkDealerPrice(int junkDealerPrice) {
this.junkDealerPrice = junkDealerPrice;
}
public boolean isCreditRelieved() {
return creditRelieved;
}
+220 -9
View File
@@ -29,14 +29,12 @@ import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.Path;
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.Random;
import java.util.Vector;
import protocol.swg.PlayClientEffectObjectMessage;
import protocol.swg.PlayClientEffectObjectTransformMessage;
import resources.objects.creature.CreatureObject;
import resources.objects.group.GroupObject;
@@ -45,9 +43,7 @@ import resources.objects.loot.LootRollSession;
import resources.objects.tangible.TangibleObject;
import resources.objects.weapon.WeaponObject;
import main.NGECore;
import engine.clientdata.ClientFileManager;
import engine.clientdata.visitors.CrcStringTableVisitor;
import engine.resources.common.CRC;
import engine.resources.container.Traverser;
import engine.resources.objects.SWGObject;
import engine.resources.scene.Planet;
import engine.resources.scene.Point3D;
@@ -62,6 +58,7 @@ import engine.resources.service.INetworkRemoteEvent;
public class LootService implements INetworkDispatch {
private NGECore core;
private static int prepInvCnt = 0;
public LootService(NGECore core) {
this.core = core;
@@ -87,7 +84,7 @@ public class LootService implements INetworkDispatch {
return;
SWGObject lootedObjectInventory = lootedObject.getSlottedObject("inventory");
core.simulationService.openContainer(requester, lootedObjectInventory);
setLooted(lootedObject);
setLooted(requester,lootedObject);
}
}
@@ -245,6 +242,7 @@ public class LootService implements INetworkDispatch {
}
}
@SuppressWarnings("unused")
private void handleLootPoolItems(String itemName,LootRollSession lootRollSession){
List<String> subfolders = new ArrayList<String>(); // Consider all sub-folders
@@ -283,6 +281,9 @@ public class LootService implements INetworkDispatch {
int stackCount = 1;
int biolink = 0;
int requiredCL = 1;
int stackable = -1;
int junkDealerPrice = 0;
byte junkType = -1;
String requiredProfession = "";
String requiredFaction = "";
Vector<String> customizationAttributes = null;
@@ -330,7 +331,15 @@ public class LootService implements INetworkDispatch {
if(core.scriptService.getMethod(itemPath,"","requiredFaction")!=null)
requiredFaction = (String)core.scriptService.fetchString(itemPath,"requiredFaction");
if(core.scriptService.getMethod(itemPath,"","stackable")!=null)
stackable = (Integer)core.scriptService.fetchInteger(itemPath,"stackable");
if(core.scriptService.getMethod(itemPath,"","junkDealerPrice")!=null)
junkDealerPrice = (Integer)core.scriptService.fetchInteger(itemPath,"junkDealerPrice");
if(core.scriptService.getMethod(itemPath,"","junkType")!=null)
junkType = (byte)core.scriptService.fetchInteger(itemPath,"junkType");
System.out.println("itemTemplate " + itemTemplate);
TangibleObject droppedItem = createDroppedItem(itemTemplate,lootRollSession.getSessionPlanet());
@@ -340,6 +349,21 @@ public class LootService implements INetworkDispatch {
if (customName!=null)
handleCustomDropName(droppedItem, customName);
if (stackable!=-1){
if(stackable==1)
droppedItem.setStackable(true);
else
droppedItem.setStackable(false);
}
if (junkDealerPrice!=0){
droppedItem.setJunkDealerPrice(junkDealerPrice);
}
if (junkType!=-1){
droppedItem.setJunkType(junkType);
}
if (itemStats!=null){
if (itemStats.size()%3!=0){
@@ -368,6 +392,7 @@ public class LootService implements INetworkDispatch {
droppedItem.setStringAttribute("required_faction", requiredFaction);
}
lootRollSession.addDroppedItem(droppedItem);
}
@@ -774,13 +799,199 @@ public class LootService implements INetworkDispatch {
return 42%42;
}
public void setLooted(TangibleObject lootedObject){
public void setLooted(TangibleObject lootedObject,TangibleObject requester){
lootedObject.setLooted(true);
float y = -5.0F;
float qz= 1.06535322E9F;
Point3D effectorPosition = new Point3D(0,y,0);
Quaternion effectorOrientation = new Quaternion(0,0,0,qz);
PlayClientEffectObjectTransformMessage lmsg = new PlayClientEffectObjectTransformMessage("",lootedObject.getObjectID(),"",effectorPosition,effectorOrientation);
//((CreatureObject) requester).getClient().getSession().write(lmsg.serialize());
}
// ********* Junk-dealer related *********
public Vector<SWGObject> getSellableInventoryItems(CreatureObject actor){
TangibleObject playerInventory = (TangibleObject) actor.getSlottedObject("inventory");
final Vector<SWGObject> sellableItems = new Vector<SWGObject>();
playerInventory.viewChildren(actor, false, false, new Traverser() {
@Override
public void process(SWGObject obj) {
String itemTemplate = obj.getTemplate();
TangibleObject tano = (TangibleObject) obj;
if (tano.getCustomName()!=null){
if (itemTemplate.contains("loot/")){
sellableItems.add(obj);
}
}
}
});
return sellableItems;
}
public void addToSoldHistory(CreatureObject actor, TangibleObject item){
}
public boolean haveBusinessHistory(CreatureObject actor, CreatureObject dealer){
return true;
}
@SuppressWarnings("unchecked")
public Vector<TangibleObject> getBuyHistory(CreatureObject actor, CreatureObject dealer){
LinkedHashMap<Long,TangibleObject[]> businessHistory = (LinkedHashMap<Long,TangibleObject[]> )dealer.getAttachment("BusinessHistory");
if (businessHistory==null){
businessHistory = new LinkedHashMap<Long,TangibleObject[]>();
dealer.setAttachment("BusinessHistory",businessHistory);
}
TangibleObject[] actorsBuyHistory = businessHistory.get(actor.getObjectID());
if (actorsBuyHistory==null)
return new Vector<TangibleObject>();
Vector<TangibleObject> actorHistory = new Vector<TangibleObject>();
for (TangibleObject item : actorsBuyHistory){
if (item!=null)
actorHistory.add(item);
}
return actorHistory;
}
@SuppressWarnings("unchecked")
public boolean addToBuyHistory(CreatureObject actor, CreatureObject dealer, TangibleObject item){
LinkedHashMap<Long,TangibleObject[]> businessHistory = (LinkedHashMap<Long,TangibleObject[]> )dealer.getAttachment("BusinessHistory");
if (businessHistory==null){
businessHistory = new LinkedHashMap<Long,TangibleObject[]>();
dealer.setAttachment("BusinessHistory",businessHistory);
}
TangibleObject[] actorsBuyHistory = businessHistory.get(actor.getObjectID());
if (actorsBuyHistory==null){
actorsBuyHistory = new TangibleObject[10];
actorsBuyHistory[0] = item;
} else {
// Check Array for zeros
int lastObject=0;
for (int i=0;i<actorsBuyHistory.length;i++){
if (actorsBuyHistory[i]!=null)
lastObject=i;
}
if (lastObject==actorsBuyHistory.length-1){
//>>shift right and add
for (int i = 8; i >= 0; i--) {
actorsBuyHistory[i+1] = actorsBuyHistory[i];
}
actorsBuyHistory[0] = item;
} else {
actorsBuyHistory[lastObject+1] = item;
}
}
businessHistory.put(actor.getObjectID(),actorsBuyHistory);
dealer.setAttachment("BusinessHistory",businessHistory);
//printArrayElements(actorsBuyHistory);
return true;
}
@SuppressWarnings("unchecked")
public boolean removeBoughtBackItemFromHistory(CreatureObject actor, CreatureObject dealer, TangibleObject item){
if (item==null)
return false; // Player has hit the button without selecting an item
LinkedHashMap<Long,TangibleObject[]> businessHistory = (LinkedHashMap<Long,TangibleObject[]> )dealer.getAttachment("BusinessHistory");
if (businessHistory==null){
return false; // something went seriously wrong. At this point the dealer should have a history
}
TangibleObject[] actorsBuyHistory = businessHistory.get(actor.getObjectID());
if (actorsBuyHistory==null)
return false; // Player has no history entry
// Find the element index
int index = -1;
for (int i=0;i<10;i++){
if (actorsBuyHistory[i]!=null){
if (item.getObjectID()==actorsBuyHistory[i].getObjectID()){
index = i;
}
}
}
if (index==-1)
return false;
// Shift everything to the right of the found index to the left
for (int i = index; i < 9; i++) {
actorsBuyHistory[i] = actorsBuyHistory[i+1]; // 0 1 2 3 4 5 6 7 8 9
}
if (index!=-1)
actorsBuyHistory[9]=null;
businessHistory.put(actor.getObjectID(),actorsBuyHistory);
dealer.setAttachment("BusinessHistory",businessHistory);
//printArrayElements(actorsBuyHistory);
return true;
}
// util method
@SuppressWarnings("unused")
private void printArrayElements(TangibleObject[] array){
System.out.print("Array [");
for (int i=0;i<array.length;i++){
if (array[i]!=null){
//System.out.print(array[i].getObjectID() + ", ");
System.out.print(array[i].getCustomName() + ", ");
}
}
System.out.print("]");
}
public void prepInv(CreatureObject player){
if (prepInvCnt>0)
return;
prepInvCnt++;
SWGObject playerInventory = player.getSlottedObject("inventory");
TangibleObject item1 = (TangibleObject)core.objectService.createObject("object/tangible/loot/npc_loot/shared_impulse_detector_01_generic.iff", player.getPlanet());
item1.setCustomName("Impulse Detector");
playerInventory.add(item1);
TangibleObject item2 = (TangibleObject)core.objectService.createObject("object/tangible/loot/misc/shared_damaged_datapad.iff", player.getPlanet());
item2.setCustomName("Damaged Datapad");
playerInventory.add(item2);
TangibleObject item3 = (TangibleObject)core.objectService.createObject("object/tangible/loot/npc_loot/shared_software_module_generic.iff", player.getPlanet());
item3.setCustomName("Software Module");
playerInventory.add(item3);
TangibleObject item4 = (TangibleObject)core.objectService.createObject("object/tangible/loot/npc_loot/shared_survival_equipment_generic.iff", player.getPlanet());
item4.setCustomName("Survival Gear");
playerInventory.add(item4);
TangibleObject item5 = (TangibleObject)core.objectService.createObject("object/tangible/loot/npc_loot/shared_shield_module_generic.iff", player.getPlanet());
item5.setCustomName("Shield Module");
playerInventory.add(item5);
TangibleObject item6 = (TangibleObject)core.objectService.createObject("object/tangible/loot/npc_loot/shared_firework_generic.iff", player.getPlanet());
item6.setCustomName("Explosive Dud");
playerInventory.add(item6);
TangibleObject item7 = (TangibleObject)core.objectService.createObject("object/tangible/loot/npc_loot/shared_launcher_tube_generic.iff", player.getPlanet());
item7.setCustomName("Launcher Tube");
playerInventory.add(item7);
TangibleObject item8 = (TangibleObject)core.objectService.createObject("object/tangible/loot/npc_loot/shared_red_wiring_generic.iff", player.getPlanet());
item8.setCustomName("Red Wiring");
playerInventory.add(item8);
TangibleObject item9 = (TangibleObject)core.objectService.createObject("object/tangible/loot/npc_loot/shared_laser_trap_generic.iff", player.getPlanet());
item9.setCustomName("Laser Trap");
playerInventory.add(item9);
TangibleObject item10 = (TangibleObject)core.objectService.createObject("object/tangible/loot/npc_loot/shared_comlink_civilian_generic.iff", player.getPlanet());
item10.setCustomName("Comlink");
playerInventory.add(item10);
TangibleObject item11 = (TangibleObject)core.objectService.createObject("object/tangible/loot/npc_loot/shared_armor_repair_device_generic.iff", player.getPlanet());
item11.setCustomName("Armor Repair Device");
playerInventory.add(item11);
}