Merge pull request #1 from ProjectSWGCore/master

merged from main
This commit is contained in:
xbang21
2014-03-14 20:31:28 -04:00
196 changed files with 2990 additions and 11192 deletions
Binary file not shown.
View File
+3 -6
View File
@@ -11,6 +11,9 @@ def run(core, actor, target, commandString):
if not playerObject:
return
if target is not None:
print ('has target!')
commandArgs = commandString.split(' ')
command = commandArgs[0]
if len(commandArgs) > 1:
@@ -45,10 +48,4 @@ def run(core, actor, target, commandString):
actor.addAbility(str(arg1))
actor.sendSystemMessage('You have learned ' + arg1 + '')
elif command == 'anim' and arg1:
actor.setCurrentAnimation(arg1)
actor.sendSystemMessage('Performed ' + arg1 ,0)
elif command == 'changeBio' and arg1:
actor.getSlottedObject('ghost').setBiography(arg1)
return
@@ -3,7 +3,11 @@ from services.spawn import LairSpawnTemplate
from java.util import Vector
def addLairGroup(core):
spawnTemplate = LairSpawnTemplate(-1, 'tatooine_kreetle_lair_neutral_small', 5, 20)
spawnTemplate1 = LairSpawnTemplate(-1, 'tatooine_kreetle_lair_neutral_small', 5, 20)
spawnTemplate2 = LairSpawnTemplate(-1, 'tatooine_womprat_lair_neutral_small', 5, 15)
spawnTemplates = Vector()
spawnTemplates.add(spawnTemplate)
#spawnTemplates.add(spawnTemplate1)
spawnTemplates.add(spawnTemplate2)
core.spawnService.addLairGroup('tatooine_starter', spawnTemplates)
@@ -0,0 +1,4 @@
import sys
def addTemplate(core):
core.spawnService.addLairTemplate('tatooine_womprat_lair_neutral_small', 'womprat', 15, 'object/tangible/lair/base/shared_poi_all_lair_brambles_small.iff')
+15
View File
@@ -0,0 +1,15 @@
import sys
from services.spawn import MobileTemplate
from java.util import Vector
def addTemplate(core):
mobileTemplate = MobileTemplate()
templates = Vector()
templates.add('object/mobile/shared_kreetle.iff')
mobileTemplate.setTemplates(templates)
mobileTemplate.setLevel(5)
attacks = Vector()
mobileTemplate.setDefaultAttack('creatureMeleeAttack')
mobileTemplate.setAttacks(attacks)
core.spawnService.addMobileTemplate('kreetle', mobileTemplate)
+15
View File
@@ -0,0 +1,15 @@
import sys
from services.spawn import MobileTemplate
from java.util import Vector
def addTemplate(core):
mobileTemplate = MobileTemplate()
templates = Vector()
templates.add('object/mobile/shared_womp_rat.iff')
mobileTemplate.setTemplates(templates)
mobileTemplate.setLevel(5)
attacks = Vector()
mobileTemplate.setDefaultAttack('creatureMeleeAttack')
mobileTemplate.setAttacks(attacks)
core.spawnService.addMobileTemplate('womprat', mobileTemplate)
@@ -0,0 +1,6 @@
import sys
def setup(core, object):
object.setStringAttribute('crystal_owner', '\#FFFF00UNTUNED')
object.setStringAttribute('quality', 'Poor')
return
@@ -0,0 +1,9 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('item_bounty_hunter_clicky_01_02')
object.setDetailFilename('static_item_d')
object.setDetailName('item_bounty_hunter_clicky_01_02')
object.setStringAttribute('class_required', 'Bounty Hunter')
return
@@ -0,0 +1,9 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('item_force_sensitive_clicky_01_02')
object.setDetailFilename('static_item_d')
object.setDetailName('item_force_sensitive_clicky_01_02')
object.setStringAttribute('class_required', 'Jedi')
return
@@ -1,7 +1,7 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'bank')
object.setAttachment('radial_filename', 'terminal/bank')
core.mapService.addLocation(object.getPlanet(), 'Bank Terminal', object.getPosition().x, object.getPosition().z, 41, 42, 0)
return
@@ -1,6 +1,6 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'cloning_terminal')
object.setAttachment('radial_filename', 'terminal/cloning_terminal')
return
@@ -1,5 +1,5 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'travel_terminal')
object.setAttachment('radial_filename', 'terminal/travel_terminal')
return
@@ -1,5 +1,5 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'npc_ticket_collector')
object.setAttachment('radial_filename', 'npc/npc_ticket_collector')
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_bounty_hunter_roadmap_bicep_l_02_01')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_bounty_hunter_roadmap_bicep_l_02_01')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_bounty_hunter_roadmap_bicep_r_02_01')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_bounty_hunter_roadmap_bicep_r_02_01')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,10 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_bounty_hunter_roadmap_boots_02_01')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_bounty_hunter_roadmap_boots_02_01')
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_bounty_hunter_roadmap_bracer_l_02_01')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_bounty_hunter_roadmap_bracer_l_02_01')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_bounty_hunter_roadmap_bracer_r_02_01')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_bounty_hunter_roadmap_bracer_r_02_01')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_bounty_hunter_roadmap_chest_02_01')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_bounty_hunter_roadmap_chest_02_01')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,10 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_bounty_hunter_roadmap_gloves_02_01')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_bounty_hunter_roadmap_gloves_02_01')
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_bounty_hunter_roadmap_helmet_02_01')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_bounty_hunter_roadmap_helmet_02_01')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_bounty_hunter_roadmap_leggings_02_01')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_bounty_hunter_roadmap_leggings_02_01')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_ithorian_roadmap_bicep_l_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_ithorian_roadmap_bicep_l_02_03')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_ithorian_roadmap_bicep_r_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_ithorian_roadmap_bicep_r_02_03')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,10 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_ithorian_roadmap_boots_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_ithorian_roadmap_boots_02_03')
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_ithorian_roadmap_bracer_l_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_ithorian_roadmap_bracer_l_02_03')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_ithorian_roadmap_bracer_r_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_ithorian_roadmap_bracer_r_02_03')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_ithorian_roadmap_chest_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_ithorian_roadmap_chest_02_03')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,10 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_ithorian_roadmap_gloves_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_ithorian_roadmap_gloves_02_03')
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_ithorian_roadmap_helmet_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_ithorian_roadmap_helmet_02_03')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_ithorian_roadmap_leggings_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_ithorian_roadmap_leggings_02_03')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_wookiee_roadmap_bicep_l_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_wookiee_roadmap_bicep_l_02_03')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_wookiee_roadmap_bicep_r_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_wookiee_roadmap_bicep_r_02_03')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_wookiee_roadmap_bracer_l_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_wookiee_roadmap_bracer_l_02_03')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_wookiee_roadmap_bracer_r_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_wookiee_roadmap_bracer_r_02_03')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_wookiee_roadmap_chest_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_wookiee_roadmap_chest_02_03')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('armor_wookiee_roadmap_leggings_02_03')
object.setDetailFilename('static_item_d')
object.setDetailName('armor_wookiee_roadmap_leggings_02_03')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 3)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setStringAttribute('armor_category', 'Assault')
object.setIntAttribute('cat_armor_standard_protection.kinetic', 2640)
object.setIntAttribute('cat_armor_standard_protection.energy', 640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_heat', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_cold', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_acid', 1640)
object.setIntAttribute('cat_armor_special_protection.special_protection_type_electricity', 1640)
return
@@ -0,0 +1,13 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('item_roadmap_belt_bounty_hunter_01_02')
object.setDetailFilename('static_item_d')
object.setDetailName('item_roadmap_belt_bounty_hunter_01_02')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:agility_modified', 15)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 20)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:precision_modified', 15)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setIntAttribute('required_combat_level', 90)
return
@@ -0,0 +1,13 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('item_roadmap_belt_force_sensitive_01_02')
object.setDetailFilename('static_item_d')
object.setDetailName('item_roadmap_belt_force_sensitive_01_02')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:agility_modified', 15)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 20)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:strength_modified', 15)
object.setStringAttribute('class_required', 'Jedi')
object.setIntAttribute('required_combat_level', 90)
return
@@ -0,0 +1,11 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('item_bounty_hunter_backpack_01_02')
object.setDetailFilename('static_item_d')
object.setDetailName('item_bounty_hunter_backpack_01_02')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:agility_modified', 5)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:precision_modified', 5)
object.setStringAttribute('class_required', 'Bounty Hunter')
return
@@ -0,0 +1,11 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('item_bounty_hunter_pendant_01_02')
object.setDetailFilename('static_item_d')
object.setDetailName('item_bounty_hunter_pendant_01_02')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:agility_modified', 12)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:precision_modified', 12)
object.setStringAttribute('class_required', 'Bounty Hunter')
return
@@ -0,0 +1,11 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('item_force_sensitive_pendant_01_02')
object.setDetailFilename('static_item_d')
object.setDetailName('item_force_sensitive_pendant_01_02')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:agility_modified', 12)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:strength_modified', 12)
object.setStringAttribute('class_required', 'Jedi')
return
@@ -1,4 +1,6 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'ring/unity')
object.setAttachment('objType', 'ring')
return
@@ -0,0 +1,13 @@
import sys
def setup(core, object):
object.setAttachment('objType', 'ring')
object.setStfFilename('static_item_n')
object.setStfName('item_bounty_hunter_ring_01_02')
object.setDetailFilename('static_item_d')
object.setDetailName('item_bounty_hunter_ring_01_02')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 6)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:precision_modified', 6)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setAttachment('radial_filename', 'ring/unity')
return
@@ -0,0 +1,13 @@
import sys
def setup(core, object):
object.setAttachment('objType', 'ring')
object.setStfFilename('static_item_n')
object.setStfName('item_force_sensitive_ring_01_02')
object.setDetailFilename('static_item_d')
object.setDetailName('item_force_sensitive_ring_01_02')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 6)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:strength_modified', 6)
object.setStringAttribute('class_required', 'Jedi')
object.setAttachment('radial_filename', 'ring/unity')
return
@@ -0,0 +1,13 @@
import sys
def setup(core, object):
object.setAttachment('objType', 'ring')
object.setStfFilename('static_item_n')
object.setStfName('item_force_sensitive_ring_02_01')
object.setDetailFilename('static_item_d')
object.setDetailName('item_force_sensitive_ring_02_01')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:agility_modified', 5)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:strength_modified', 5)
object.setStringAttribute('class_required', 'Jedi')
object.setAttachment('radial_filename', 'ring/unity')
return
@@ -1,4 +1,6 @@
import sys
def setup(core, object):
object.setAttachment('objType', 'ring')
object.setAttachment('radial_filename', 'ring/unity')
return
@@ -1,4 +1,6 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'ring/unity')
object.setAttachment('objType', 'ring')
return
@@ -1,4 +1,6 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'ring/unity')
object.setAttachment('objType', 'ring')
return
@@ -1,4 +1,6 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'ring/unity')
object.setAttachment('objType', 'ring')
return
@@ -1,4 +1,6 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'ring/unity')
object.setAttachment('objType', 'ring')
return
@@ -1,6 +1,8 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'ring/unity')
object.setAttachment('objType', 'ring')
return
def equip(core, actor, object):
@@ -1,6 +1,8 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'ring/unity')
object.setAttachment('objType', 'ring')
return
def equip(core, actor, object):
@@ -1,6 +1,8 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'ring/unity')
object.setAttachment('objType', 'ring')
return
def equip(core, actor, object):
@@ -1,4 +1,6 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'ring/unity')
object.setAttachment('objType', 'ring')
return
@@ -1,6 +1,8 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'ring/unity')
object.setAttachment('objType', 'ring')
return
def equip(core, actor, object):
@@ -1,7 +1,6 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('item_npe_fs_robe_02_02')
object.setDetailFilename('static_item_d')
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('weapon_carbine_bh_roadmap_01_02')
object.setDetailFilename('static_item_d')
object.setDetailName('weapon_carbine_bh_roadmap_01_02')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:precision_modified', 5)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setIntAttribute('required_combat_level', 30)
object.setFloatAttribute('cat_wpn_damage.wpn_attack_speed', 0.6)
object.setStringAttribute('cat_wpn_damage.wpn_damage_type', 'Energy')
object.setStringAttribute('cat_wpn_damage.damage', '109-218')
object.setStringAttribute('cat_wpn_damage.range', '0-55m')
object.setStringAttribute('cat_wpn_damage.wpn_category', 'Carbine')
object.setIntAttribute('cat_wpn_damage.dps', object.getDamagePerSecond())
return
@@ -0,0 +1,17 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('weapon_rifle_bh_roadmap_01_02')
object.setDetailFilename('static_item_d')
object.setDetailName('weapon_rifle_bh_roadmap_01_02')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:precision_modified', 5)
object.setStringAttribute('class_required', 'Bounty Hunter')
object.setIntAttribute('required_combat_level', 50)
object.setFloatAttribute('cat_wpn_damage.wpn_attack_speed', 0.8)
object.setStringAttribute('cat_wpn_damage.wpn_damage_type', 'Energy')
object.setStringAttribute('cat_wpn_damage.damage', '261-522')
object.setStringAttribute('cat_wpn_damage.range', '0-64m')
object.setStringAttribute('cat_wpn_damage.wpn_category', 'Rifle')
object.setIntAttribute('cat_wpn_damage.dps', object.getDamagePerSecond())
return
+16
View File
@@ -0,0 +1,16 @@
from resources.common import RadialOptions
import sys
def createRadial(core, owner, target, radials):
radials.add(RadialOptions(0, 21, 1, ''))
radials.add(RadialOptions(0, 7, 1, ''))
radials.add(RadialOptions(0, 15, 1, ''))
return
def handleSelection(core, owner, target, option):
if option == 21 and target:
core.objectService.useObject(owner, target)
if option == 15 and target:
core.objectService.destroyObject(target)
return
+16
View File
@@ -0,0 +1,16 @@
from resources.common import RadialOptions
import sys
def createRadial(core, owner, target, radials):
radials.add(RadialOptions(0, 7, 1, ''))
radials.add(RadialOptions(0, 15, 1, ''))
radials.add(RadialOptions(0, 61, 1, ''))
return
def handleSelection(core, owner, target, option):
if option == 61 and target:
core.objectService.useObject(owner, target)
if option == 15 and target:
core.objectService.destroyObject(target)
return
+106
View File
@@ -0,0 +1,106 @@
from resources.common import RadialOptions
from services.sui.SUIWindow import Trigger
from java.util import Vector
from main import NGECore
from engine.resources.objects import SWGObject
import sys
def createRadial(core, owner, target, radials):
ghost = owner.getSlottedObject('ghost')
if ghost is None:
return
if ghost.getSpouseName() is None or ghost.getSpouseName() is "":
targetPlayer = core.objectService.getObject(owner.getTargetId())
if targetPlayer is not None and targetPlayer.getSlottedObject('ghost') is not None:
radials.add(RadialOptions(0, 69, 1, '@unity:mnu_propose'))
return
else:
radials.add(RadialOptions(0, 70, 1, '@unity:mnu_divorce'))
return
return
def handleSelection(core, owner, target, option):
if option == 69 and target:
player = core.objectService.getObject(owner.getTargetId())
tGhost = player.getSlottedObject('ghost')
suiSvc = core.suiService
if tGhost.getPosition().getDistance2D(owner.getWorldPosition()) < 50:
owner.sendSystemMessage('@unity:out_of_range', 0)
return
if tGhost.getSpouseName() is not None:
owner.sendSystemMessage('@unity:target_married', 0)
return
if player.getAttachment("proposer") is not None:
owner.sendSystemMessage('@unity:target_proposed', 0)
return
else:
owner.sendSystemMessage('You propose unity to ' + player.getCustomName() + '.', 0)
targetWindow = suiSvc.createMessageBox(3, '@unity:accept_title', owner.getCustomName() + ' is proposing unity to you. Do you wish to accept?', tGhost.getContainer(), owner, 15)
returnList = Vector()
targetWindow.addHandler(0, '', Trigger.TRIGGER_OK, returnList, handlePropose)
targetWindow.addHandler(1, '', Trigger.TRIGGER_CANCEL, returnList, handlePropose)
player.setAttachment("proposer", owner.getCustomName())
suiSvc.openSUIWindow(targetWindow)
target.setAttachment("unity", True)
core.equipmentService.equip(owner, target)
core.commandService.callCommand(owner, 'kneel', None, '')
return
return
if option == 70:
married = owner.getSlottedObject('ghost').getSpouseName()
myGhost = owner.getSlottedObject('ghost')
otherPlayer = NGECore.getInstance().objectService.getObjectByCustomName(married)
if otherPlayer is None:
return
ghost = otherPlayer.getSlottedObject('ghost')
if ghost is None:
return
owner.sendSystemMessage('Your union with ' + married + ' has ended.', 0)
otherPlayer.sendSystemMessage('Your union with ' + owner.getCustomName() + ' has ended.', 0)
myGhost.setSpouseName(None)
ghost.setSpouseName(None)
target.setAttachment("unity", None)
#TODO: Divorce offline players
return
return
def handlePropose(owner, window, eventType, returnList):
core = NGECore.getInstance()
if owner is None:
return
if eventType == 0:
proposer = core.objectService.getObjectByCustomName(owner.getAttachment("proposer"))
if proposer is None:
return
core.playerService.performUnity(owner, proposer)
return
if eventType == 1:
proposer = core.objectService.getObjectByCustomName(owner.getAttachment("proposer"))
proposer.sendSystemMessage('@unity:declined', 0)
for SWGObject in proposer.getEquipmentList():
if SWGObject.getAttachment("unity") is not None:
SWGObject.setAttachment("unity", None)
break
owner.setAttachment("proposer", None)
return
return
+2 -2
View File
@@ -2,7 +2,7 @@ from resources.common import RadialOptions
import sys
def createRadial(core, owner, target, radials):
radials.clear
radials.clear()
radials.add(RadialOptions(0, 21, 1, 'Use Travel Ticket'))
#radials.add(RadialOptions(0, 7, 1, ''))
@@ -31,7 +31,7 @@ def handleSelection(core, owner, target, option):
return
if option == 15 and target:
core.commandService.callCommand(owner, 'serverdestroyobject', target, None)
core.objectService.destroyObject(target)
return
return
+16
View File
@@ -0,0 +1,16 @@
from resources.common import RadialOptions
import sys
def createRadial(core, owner, target, radials):
radials.add(RadialOptions(0, 21, 1, ''))
radials.add(RadialOptions(0, 7, 1, ''))
radials.add(RadialOptions(0, 15, 1, ''))
return
def handleSelection(core, owner, target, option):
if option == 21 and target:
core.objectService.useObject(owner, target)
if option == 15 and target:
core.objectService.destroyObject(target)
return
+114 -1
View File
@@ -1,9 +1,122 @@
import sys
def get(name):
# Jedi #
if name == 'item_force_sensitive_ring_02_01':
return "object/tangible/wearables/ring/shared_ring_s02.iff"
if name == 'item_npe_fs_robe_02_02':
return "object/tangible/wearables/robe/shared_robe_jedi_padawan.iff"
if name == 'weapon_roadmap_lightsaber_02_02':
return "object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_s1.iff"
return "object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_s1.iff"
if name == 'item_force_sensitive_ring_01_02':
return "object/tangible/wearables/ring/shared_ring_s01.iff"
if name == 'item_krayt_pearl_04_01':
return "object/tangible/component/weapon/lightsaber/shared_lightsaber_module_krayt_dragon_pearl.iff"
if name == 'item_force_sensitive_pendant_01_02':
return "object/tangible/wearables/necklace/shared_necklace_s12.iff"
if name == 'item_force_sensitive_clicky_01_02':
return "object/tangible/loot/generic_usable/shared_generic_crystal.iff"
if name == 'item_roadmap_belt_force_sensitive_01_02':
return "object/tangible/wearables/armor/zam/shared_armor_zam_wesell_belt.iff"
# Bounty Hunter #
if name == 'item_bounty_hunter_backpack_01_02':
return "object/tangible/wearables/backpack/shared_backpack_s05.iff"
if name == 'armor_bounty_hunter_roadmap_bicep_l_02_01':
return "object/tangible/wearables/armor/composite/shared_armor_composite_bicep_l.iff"
if name == 'armor_bounty_hunter_roadmap_bicep_r_02_01':
return "object/tangible/wearables/armor/composite/shared_armor_composite_bicep_r.iff"
if name == 'armor_bounty_hunter_roadmap_bracer_l_02_01':
return "object/tangible/wearables/armor/composite/shared_armor_composite_bracer_l.iff"
if name == 'armor_bounty_hunter_roadmap_bracer_r_02_01':
return "object/tangible/wearables/armor/composite/shared_armor_composite_bracer_r.iff"
if name == 'armor_bounty_hunter_roadmap_boots_02_01':
return "object/tangible/wearables/armor/composite/shared_armor_composite_boots.iff"
if name == 'armor_bounty_hunter_roadmap_chest_02_01':
return "object/tangible/wearables/armor/composite/shared_armor_composite_chest_plate.iff"
if name == 'armor_bounty_hunter_roadmap_gloves_02_01':
return "object/tangible/wearables/armor/composite/shared_armor_composite_gloves.iff"
if name == 'armor_bounty_hunter_roadmap_helmet_02_01':
return "object/tangible/wearables/armor/composite/shared_armor_composite_helmet.iff"
if name == 'armor_bounty_hunter_roadmap_leggings_02_01':
return "object/tangible/wearables/armor/composite/shared_armor_composite_leggings.iff"
if name == 'armor_wookiee_roadmap_chest_02_03':
return "object/tangible/wearables/armor/kashyyykian_hunting/shared_armor_kashyyykian_hunting_chestplate.iff"
if name == 'armor_wookiee_roadmap_leggings_02_03':
return "object/tangible/wearables/armor/kashyyykian_hunting/shared_armor_kashyyykian_hunting_leggings.iff"
if name == 'armor_wookiee_roadmap_bicep_l_02_03':
return "object/tangible/wearables/armor/kashyyykian_hunting/shared_armor_kashyyykian_hunting_bicep_l.iff"
if name == 'armor_wookiee_roadmap_bicep_r_02_03':
return "object/tangible/wearables/armor/kashyyykian_hunting/shared_armor_kashyyykian_hunting_bicep_r.iff"
if name == 'armor_wookiee_roadmap_bracer_l_02_03':
return "object/tangible/wearables/armor/kashyyykian_hunting/shared_armor_kashyyykian_hunting_bracer_l.iff"
if name == 'armor_wookiee_roadmap_bracer_r_02_03':
return "object/tangible/wearables/armor/kashyyykian_hunting/shared_armor_kashyyykian_hunting_bracer_r.iff"
if name == 'armor_ithorian_roadmap_chest_02_03':
return "object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_chest_plate.iff"
if name == 'armor_ithorian_roadmap_leggings_02_03':
return "object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_leggings.iff"
if name == 'armor_ithorian_roadmap_helmet_02_03':
return "object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_helmet.iff"
if name == 'armor_ithorian_roadmap_bicep_l_02_03':
return "object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_bicep_l.iff"
if name == 'armor_ithorian_roadmap_bicep_r_02_03':
return "object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_bicep_r.iff"
if name == 'armor_ithorian_roadmap_bracer_l_02_03':
return "object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_bracer_l.iff"
if name == 'armor_ithorian_roadmap_bracer_r_02_03':
return "object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_bracer_r.iff"
if name == 'armor_ithorian_roadmap_boots_02_03':
return "object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_boots.iff"
if name == 'armor_ithorian_roadmap_gloves_02_03':
return "object/tangible/wearables/armor/ithorian_sentinel/shared_ith_armor_s03_gloves.iff"
if name == 'weapon_carbine_bh_roadmap_01_02':
return "object/weapon/ranged/carbine/shared_carbine_ee3.iff"
if name == 'item_bounty_hunter_ring_01_02':
return "object/tangible/wearables/ring/shared_ring_s02.iff"
if name == 'weapon_rifle_bh_roadmap_01_02':
return "object/weapon/ranged/rifle/shared_rifle_lightning.iff"
if name == 'item_bounty_hunter_pendant_01_02':
return "object/tangible/wearables/necklace/shared_necklace_s02.iff"
if name == 'item_bounty_hunter_clicky_01_02':
return "object/tangible/loot/generic_usable/shared_survey_pad_adv_generic.iff"
if name == 'item_roadmap_belt_bounty_hunter_01_02':
return "object/tangible/wearables/armor/zam/shared_armor_zam_wesell_belt.iff"
@@ -1,6 +1,6 @@
import sys
def CombatBrawlerTrandoshanFemale(core, object):
def CombatBrawlerOutdoorScoutTrandoshanFemale(core, object):
shirt = core.objectService.createObject('object/tangible/wearables/shirt/shared_shirt_s24.iff', object.getPlanet())
jacket = core.objectService.createObject('object/tangible/wearables/jacket/shared_jacket_s24.iff', object.getPlanet())
pants = core.objectService.createObject('object/tangible/wearables/pants/shared_pants_s25.iff', object.getPlanet())
@@ -8,4 +8,4 @@ def CombatBrawlerTrandoshanFemale(core, object):
object._add(shirt)
object._add(jacket)
object._add(pants)
object._add(necklace)
object._add(necklace)
+2 -43
View File
@@ -4,48 +4,7 @@ from resources.datatables import Options
from resources.datatables import StateStatus
def addPlanetSpawns(core, planet):
#This Script is no longer to be used for NPC Scripting. - Levarris
stcSvc = core.staticService
#Nym's Stronghold -Fingies
#Outside
nymtech = stcSvc.spawnObject('object/mobile/shared_dressed_nym_technician_2.iff', 'lok', long(0), float(372.87), float(11.99), float(4984.83), float(0.97), float(-0.21))
nymtech.setCustomName2('Nym\'s Fuel Technician')
disgrunt1 = stcSvc.spawnObject('object/mobile/shared_nym_themepark_d_townsperson_lead.iff', 'lok', long(0), float(473.28), float(23.00), float(4945.03), float(0.043), float(0.99))
disgrunt1.setCustomName2('a disgruntled townsperson')
guard1 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_guard_weak_nikto_m.iff', 'lok', long(0), float(472.82), float(22.57), float(4920.00), float(0), float(0))
guard1.setCustomName2('Nym\'s Guard')
guard2 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_guard_weak_hum_m.iff', 'lok', long(0), float(480.74), float(22.64), float(4920.02), float(0), float(0))
guard2.setCustomName2('Nym\'s Guard')
#Nym's Palace - Interior
brawl1 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_brawler_hum_f.iff', 'lok', long(6595511), float(5.7), float(1.3), float(-6.1), float(0.90), float(-0.42))
brawl1.setCustomName2('Nym\'s Brawler')
surv1 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_surveyer_rod_m.iff', 'lok', long(6595511), float(4.5), float(1.3), float(-4.1), float(0.078), float(-0.99))
surv1.setCustomName2('Nym\'s Surveyor')
bodyg1 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_bodyguard_hum_m.iff', 'lok', long(6595511), float(7.8), float(1.3), float(-6.8), float(0.782), float(0.622))
bodyg1.setCustomName2('Nym\'s Bodyguard')
mako = stcSvc.spawnObject('object/mobile/shared_nym_themepark_mako_ghast.iff', 'lok', long(6595511), float(5.5), float(4.1), float(-13.9), float(0.309), float(0.951))
mako.setCustomName2('Mako Ghast')
bodyg2 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_bodyguard_rod_m.iff', 'lok', long(6595511), float(0.3), float(1.3), float(3.2), float(0.707), float(0.707))
bodyg2.setCustomName2('Nym\'s Bodyguard')
bodyg3 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_bodyguard_rod_m.iff', 'lok', long(6595511), float(-1.6), float(1.3), float(3.0), float(0.707), float(-0.707))
bodyg3.setCustomName2('Nym\'s Bodyguard')
surv2 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_surveyer_rod_m.iff', 'lok', long(6595511), float(-9.1), float(1.3), float(-5.9), float(1), float(0))
surv2.setCustomName2('Nym\'s Surveyor')
brawl2 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_brawler_tran_m.iff', 'lok', long(6595511), float(-9.1), float(1.3), float(-3.1), float(0.0087), float(0.999))
brawl2.setCustomName2('Nym\'s Brawler')
guard3 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_guard_weak_hum_m.iff', 'lok', long(6595511), float(-19.7), float(2.3), float(-17.6), float(0.999), float(0.0087))
guard3.setCustomName2('Nym\'s Guard')
creep1 = stcSvc.spawnObject('object/mobile/shared_slicer_kelson_sharphorn.iff', 'lok', long(6595511), float(-4.2), float(2.3), float(7.6), float(0.0174), float(0.9998))
creep1.setCustomName2('Kelson Sharphorn')
guard4 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_guard_weak_hum_m.iff', 'lok', long(6595511), float(24.8), float(2.3), float(7.9), float(0.0174), float(0.9998))
guard4.setCustomName2('Nym\'s Guard')
guard5 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_guard_weak_hum_m.iff', 'lok', long(6595511), float(3.7), float(4.1), float(-9.5), float(0.9998), float(0.0174))
guard5.setCustomName2('Nym\'s Guard')
guard6 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_guard_weak_rod_m.iff', 'lok', long(6595511), float(-3.7), float(4.1), float(-9.5), float(1), float(0))
guard6.setCustomName2('Nym\'s Guard')
return
+1 -140
View File
@@ -3,145 +3,6 @@ import sys
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
# Theed Spawns
# OutSide
loruna = stcSvc.spawnObject('object/mobile/shared_loruna_scathe.iff', 'naboo', long(0), float(-5149), float(6), float(4286), float(0.34), float(0.93))
loruna.setCustomName2('Loruna Scathe')
pooja = stcSvc.spawnObject('object/mobile/shared_dressed_pooja_naberrie.iff', 'naboo', long(0), float(-5479.1), float(14), float(4467.3), float(-0.96), float(0.25))
pooja.setCustomName2('Pooja Naberrie')
vaikannaSilverlight = stcSvc.spawnObject('object/mobile/shared_dressed_herald_naboo_01.iff', 'naboo', long(0), float(-5484), float(10), float(4424), float(-0.93), float(0.34))
vaikannaSilverlight.setCustomName2('Vaik\'anna Silverlight')
hannaSkiyah = stcSvc.spawnObject('object/mobile/shared_dressed_herald_noble_twk_female_01.iff', 'naboo', long(0), float(-5480), float(-0.5), float(4398), float(0.44), float(0.89))
hannaSkiyah.setCustomName2('Hanna S\'kiyah')
# Keren Spawns
# Cantina interior
lergoBrazee = stcSvc.spawnObject('object/mobile/shared_dressed_lergo_brazee.iff', 'naboo', long(5), float(2.8), float(-0.9), float(-5.3), float(0.25), float(0.96))
lergoBrazee.setCustomName2('Lergo Brazee')
# Starport interior
gavynSykes = stcSvc.spawnObject('object/mobile/shared_dressed_gavyn_sykes.iff', 'naboo', long(2125382), float(9.3), float(0.6), float(66.6), float(-0.90), float(0.42))
gavynSykes.setCustomName2('Capt. Gavyn Sykes')
#Miscellaneous Building Interiors
kritusMorven = stcSvc.spawnObject('object/mobile/shared_dressed_kritus_morven.iff', 'naboo', long(1685077), float(-3.9), float(-4.9), float(-7.5), float(-0.57), float(0.81))
kritusMorven.setCustomName2('Kritus Morven')
Raev = stcSvc.spawnObject('object/mobile/ep3/shared_ep3_clone_relics_major_raev.iff', 'naboo', long(1393881), float(-10), float(1.7), float(-9.5), float(0.38), float(0.92))
Raev.setCustomName2('Major Raev')
# Outside
brennis = stcSvc.spawnObject('object/mobile/shared_dressed_brennis_doore.iff', 'naboo', long(0), float(1740), float(12), float(2657), float(-0.99), float(0))
brennis.setCustomName2('Brennis Doore')
demitri = stcSvc.spawnObject('object/mobile/shared_dressed_herald_servant_naboo_human_male.iff', 'naboo', long(0), float(1673), float(12), float(2582), float(0.31), float(0.94))
demitri.setCustomName2('Demitri Firewatcher')
ogden = stcSvc.spawnObject('object/mobile/shared_smuggler_broker_ogden.iff', 'naboo', long(0), float(1907), float(12), float(2352), float(0.97), float(0.22))
ogden.setCustomName2('Ogden')
# Kaadara Spawns
#Miscellaneous Building Interiors
barnSinkko = stcSvc.spawnObject('object/mobile/shared_dressed_imperial_trainer_space_03.iff', 'naboo', long(1741494), float(-1.3), float(1.8), float(-14), float(-0.34), float(0.93))
barnSinkko.setCustomName2('Lt. Barn Sinkko')
# OutSide
dakk = stcSvc.spawnObject('object/mobile/shared_dressed_acklay_dakk.iff', 'naboo', long(0), float(5167), float(-192), float(6674), float(-0.99), float(0.04))
dakk.setCustomName2('Dakk')
panaka = stcSvc.spawnObject('object/mobile/shared_panaka.iff', 'naboo', long(0), float(5196.6), float(-192), float(6712.8), float(0.99), float(0.04))
# Dejaa Peak Spawns
# OutSide
arvenWendik = stcSvc.spawnObject('object/mobile/shared_dressed_arven_wendik.iff', 'naboo', long(0), float(4710), float(330), float(-1432), float(-0.70), float(0.70))
arvenWendik.setCustomName2('Arven Wendik')
damaliaKorde = stcSvc.spawnObject('object/mobile/shared_dressed_damalia_korde.iff', 'naboo', long(0), float(5139), float(346.5), float(-1530.9), float(0.34), float(0.93))
damaliaKorde.setCustomName2('Damalia Korde')
hermanPate = stcSvc.spawnObject('object/mobile/shared_naboo_herman_pate.iff', 'naboo', long(0), float(4871.1), float(360.6), float(-1442.1), float(0), float(1))
hermanPate.setCustomName2('Herman Pate')
kimaNazith = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_female_03.iff', 'naboo', long(0), float(4972), float(360), float(-1583), float(-0.95), float(0.28))
kimaNazith.setCustomName2('Kima Nazith')
kippyMartin = stcSvc.spawnObject('object/mobile/shared_naboo_kippy_martin.iff', 'naboo', long(0), float(4324), float(295.1), float(-1250), float(0.55), float(0.82))
kippyMartin.setCustomName2('Kippy Martin')
ruab = stcSvc.spawnObject('object/mobile/shared_smuggler_fence_ruab.iff', 'naboo', long(0), float(4998), float(360), float(-1485), float(-0.34), float(0.93))
ruab.setCustomName2('Ruab')
tanoaVills = stcSvc.spawnObject('object/mobile/shared_naboo_tanoa_vills.iff', 'naboo', long(0), float(4740), float(330), float(-1322), float(-0.96), float(0.27))
tanoaVills.setCustomName2('Tanoa Vills')
vanceGroten = stcSvc.spawnObject('object/mobile/shared_naboo_vance_groten.iff', 'naboo', long(0), float(5144), float(346.5), float(-1530), float(-0.17), float(0.98))
vanceGroten.setCustomName2('Vance Groten')
walker = stcSvc.spawnObject('object/mobile/shared_naboo_walker_luskeske.iff', 'naboo', long(0), float(4994), float(360), float(-1506), float(-0.97), float(0.21))
walker.setCustomName2('Walker Luskeske')
zanier = stcSvc.spawnObject('object/mobile/shared_naboo_professor_hudmasse.iff', 'naboo', long(0), float(4690), float(330.2), float(-1391), float(0.52), float(0.84))
zanier.setCustomName2('Professor Zanier Hudmasse')
# Moenia Spawns
# Cantina interior
borvo = stcSvc.spawnObject('object/mobile/shared_borvo.iff', 'naboo', long(121), float(-29), float(-0.5), float(7.9), float(0.44), float(0.89))
borvo.setCustomName2('Borvo The Hutt')
# OutSide
c3tc = stcSvc.spawnObject('object/mobile/shared_3po_protocol_droid_silver.iff', 'naboo', long(0), float(4723), float(3.8), float(-4935), float(-0.99), float(0))
c3tc.setCustomName2('C-3TC')
dilvin = stcSvc.spawnObject('object/mobile/shared_dressed_noble_human_male_03.iff', 'naboo', long(0), float(4893), float(3.8), float(-4998), float(0.96), float(0.27))
dilvin.setCustomName2('Dilvin Lormurojo')
ebenn = stcSvc.spawnObject('object/mobile/shared_dressed_noble_human_male_02.iff', 'naboo', long(0), float(4869), float(3.8), float(-4875), float(-0.70), float(0.70))
ebenn.setCustomName2('Ebenn Q3 Baobab')
v3fx = stcSvc.spawnObject('object/mobile/shared_space_rebel_tier1_naboo_v3fx.iff', 'naboo', long(0), float(4764.2), float(6.1), float(-4795), float(0.99), float(0.08))
v3fx.setCustomName2('V3-FX')
roninLightrunner = stcSvc.spawnObject('object/mobile/shared_dressed_herald_naboo_02.iff', 'naboo', long(0), float(4810), float(6.3), float(-4977), float(0), float(1))
roninLightrunner.setCustomName2('Ronin Lightrunner')
dagorel = stcSvc.spawnObject('object/mobile/shared_dressed_gendra.iff', 'naboo', long(0), float(4471), float(4), float(-4714), float(-0.64), float(0.76))
dagorel.setCustomName2('Dagorel')
# Emperor's Retreat interior
kaja = stcSvc.spawnObject('object/mobile/shared_kaja_orzee.iff', 'naboo', long(1418872), float(1.9), float(0.2), float(-13.4), float(0), float(1))
kaja.setCustomName2('Kaja Or\'Zee')
ltVelso = stcSvc.spawnObject('object/mobile/shared_dressed_corvette_imperial_velso.iff', 'naboo', long(1418874), float(23.6), float(0.2), float(-19), float(-0.93), float(0.34))
ltVelso.setCustomName2('Lt. Velso')
royalGuard1 = stcSvc.spawnObject('object/mobile/shared_royal_guard.iff', 'naboo', long(1418874), float(17), float(0.2), float(-31), float(0), float(1))
royalGuard2 = stcSvc.spawnObject('object/mobile/shared_royal_guard.iff', 'naboo', long(1418874), float(9), float(0.2), float(-31), float(0), float(1))
vrke = stcSvc.spawnObject('object/mobile/shared_space_imperial_tier3_naboo_vrke.iff', 'naboo', long(1418875), float(24.3), float(0.2), float(-39.6), float(0), float(1))
vrke.setCustomName2('Inquisitor Vrke')
loamRedge = stcSvc.spawnObject('object/mobile/shared_loam_redge.iff', 'naboo', long(1418875), float(18.6), float(0.2), float(-42), float(0.34), float(0.93))
loamRedge.setCustomName2('Loam Redge')
hethrir = stcSvc.spawnObject('object/mobile/shared_lord_hethrir.iff', 'naboo', long(1418876), float(4.6), float(0.2), float(-41.3), float(0), float(1))
hethrir.setCustomName2('Lord Hethrir')
jaceYiaso = stcSvc.spawnObject('object/mobile/shared_space_imperial_tier4_naboo_inquisitor.iff', 'naboo', long(1418884), float(-44), float(0.2), float(-31.9), float(0), float(1))
jaceYiaso.setCustomName2('Grand Inquisitor Ja\'ce Yiaso')
vader = stcSvc.spawnObject('object/mobile/shared_darth_vader.iff', 'naboo', long(1418884), float(-57), float(0.2), float(-24), float(0.70), float(0.70))
# Outside Emperor's Retreat
veers = stcSvc.spawnObject('object/mobile/naboo_npc/shared_veers.iff', 'naboo', long(0), float(2368), float(291), float(-3921), float(0.64), float(0.76))
veers.setCustomName2('Colonel Veers')
thrawn = stcSvc.spawnObject('object/mobile/naboo_npc/shared_thrawn.iff', 'naboo', long(0), float(2369), float(291), float(-3922), float(0.34), float(0.93))
thrawn.setCustomName2('Captain Thrawn')
fazoll = stcSvc.spawnObject('object/mobile/shared_space_imperial_tier2_naboo.iff', 'naboo', long(0), float(2444), float(292), float(-3896), float(-0.996194), float(0.087155))
fazoll.setCustomName2('Inquisitor Fa\'Zoll')
#this script is no longer for NPC spawning - Levarris
return
+2 -452
View File
@@ -5,460 +5,10 @@ from resources.datatables import StateStatus
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
#this script is no longer for NPC spawning usage. - Levarris
# Wayfar Life Day, by Wefi, modified by Fingies
# stcSvc.spawnObject('object/mobile/shared_lifeday_saun_dann.iff', 'tatooine', long(0), float(-5037.00), float(75), float(-6561), float(-0.75), float(0)) # Life Day
# figlife = stcSvc.spawnObject('object/mobile/shared_lifeday_figrin_dan.iff', 'tatooine', long(0), float(-5046.00), float(75), float(-6560), float(-0.75), float(0)) # LD Figrin
# figlife.setCustomName2('Figrin D\'an')
# bandtat1 = stcSvc.spawnObject('object/mobile/shared_lifeday_figrin_dan_band.iff', 'tatooine', long(0), float(-5040.00), float(75), float(-6557), float(-0.75), float(0)) # LD Band 1
# bandtat1.setCustomName2('Doikk Nats')
# bandtat2 = stcSvc.spawnObject('object/mobile/shared_lifeday_figrin_dan_band.iff', 'tatooine', long(0), float(-5043.00), float(75), float(-6559), float(-0.75), float(0)) # LD band 2
# bandtat2.setCustomName2('Tech Mor')
# bandtat3 = stcSvc.spawnObject('object/mobile/shared_lifeday_figrin_dan_band.iff', 'tatooine', long(0), float(-5048.00), float(75), float(-6557), float(-0.75), float(0)) # LD Band 3
# bandtat3.setCustomName2('Nalan Cheel')
# bandtat4 = stcSvc.spawnObject('object/mobile/shared_lifeday_figrin_dan_band.iff', 'tatooine', long(0), float(-5045.00), float(75), float(-6555), float(-0.75), float(0)) # LD band 4
# bandtat4.setCustomName2('Sunil Eide')
# reblifevendor = stcSvc.spawnObject('object/mobile/shared_life_day_rebel_vendor.iff', 'tatooine', long(0), float(-5212.2), float(75.0), float(-6571.7), float(0.656), float(-0.7547)) #Rebel Wookiee Vendor
# reblifevendor.setCustomName2('Oolovv \(Wookiee Freedom Fighter)')
# reblifesold1 = stcSvc.spawnObject('object/mobile/shared_rebel_snow_m_01.iff', 'tatooine', long(0), float(-5208.8), float(75.0), float(-6569.6), float(0.669), float(-0.743)) #Rebel Vendor Guard 1
# reblifesold1.setCustomName2('a Rebel Soldier')
# reblifesold2 = stcSvc.spawnObject('object/mobile/shared_rebel_snow_m_01.iff', 'tatooine', long(0), float(-5208.8), float(75.0), float(-6573.1), float(0.669), float(-0.743)) #Rebel Vendor Guard 2
# reblifesold2.setCustomName2('a Rebel Soldier')
# implifevendor = stcSvc.spawnObject('object/mobile/shared_life_day_imperial_vendor.iff', 'tatooine', long(0), float(-5097.1), float(75.0), float(-6570.7), float(0.0087), float(-0.9999)) #Imp Vendor
# implifevendor.setCustomName2('Sstrigge \(Trandoshan \'Trader\')')
# implifesold1 = stcSvc.spawnObject('object/mobile/shared_snowtrooper_s01.iff', 'tatooine', long(0), float(-5092.2), float(75.0), float(-6569.0), float(0.0087), float(-0.9999)) #Imp Vendor Guard 1
# implifesold1.setCustomName2('a Stormtrooper')
# implifesold2 = stcSvc.spawnObject('object/mobile/shared_snowtrooper_s01.iff', 'tatooine', long(0), float(-5100.8), float(75.0), float(-6569.4), float(0.0087), float(-0.9999)) #Imp Vendor Guard 2
# implifesold2.setCustomName2('a Stormtrooper')
# stcSvc.spawnObject('object/tangible/instrument/shared_nalargon.iff', 'tatooine', long(0), float(-5045.00), float(75), float(-6555), float(0.999132931232), float(-0.0416347384453)) # Drums
# stcSvc.spawnObject('object/tangible/instrument/shared_ommni_box.iff', 'tatooine', long(0), float(-5043.00), float(75), float(-6559), float(0.999132931232), float(-0.0416347384453)) # Box
#stcSvc.spawnObject('object/mobile/shared_3po_protocol_droid_red.iff', 'tatooine', long(26582), float(-14.3), float(2.0), float(47.4), float(0.70), float(0.71))
# Mos Eisley Spawns: WORK IN PROGRESS by Levarris
#Cantina Interior
wuher = stcSvc.spawnObject('object/mobile/shared_wuher.iff', 'tatooine', long(1082877), float(8.6), float(-0.9), float(0.4), float(0.71), float(0.71))
wuher.setCustomName2('Wuher')
wuher.addOption(Options.INVULNERABLE)
wuher.setStateBitmask(StateStatus.SittingOnChair)
chadraFanFemale = stcSvc.spawnObject('object/mobile/shared_chadra_fan_female.iff', 'tatooine', long(1082877), float(10.6), float(-0.9), float(-1.5), float(0.42), float(0.90))
chadraFanFemale.setCustomName2('a Chadra Fan Female')
chadraFanMale = stcSvc.spawnObject('object/mobile/shared_chadra_fan_male.iff', 'tatooine', long(1082877), float(10.7), float(-0.9), float(-0.3), float(0.64), float(0.77))
chadraFanMale.setCustomName2('a Chadra Fan Male')
muftak = stcSvc.spawnObject('object/mobile/shared_muftak.iff', 'tatooine', long(1082877), float(20.3), float(-0.9), float(4.9), float(0.82), float(0.57))
muftak.setCustomName2('Muftak')
chissMale1 = stcSvc.spawnObject('object/mobile/ep3/shared_ep3_etyyy_chiss_poacher_01.iff', 'tatooine', long(1082877), float(1.7), float(-0.9), float(-5.0), float(0.71), float(0.71))
chissMale1.setCustomName2('a Chiss Male')
chissMale2 = stcSvc.spawnObject('object/mobile/ep3/shared_ep3_etyyy_chiss_poacher_02.iff', 'tatooine', long(1082877), float(3.4), float(-0.9), float(-4.8), float(0), float(0))
chissMale2.setCustomName2('a Chiss Male')
cantinaStorm = stcSvc.spawnObject('object/mobile/shared_stormtrooper.iff', 'tatooine', long(1082877), float(2.9), float(-0.9), float(-6.5), float(0.71), float(0.71))
cantinaStorm.setCustomName2('a Stormtrooper')
cantinaStormL = stcSvc.spawnObject('object/mobile/shared_stormtrooper_groupleader.iff', 'tatooine', long(1082877), float(3.6), float(-0.9), float(-7.9), float(0.71), float(0.71))
cantinaStormL.setCustomName2('a Stormtrooper Squad Leader')
figrinDan = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(3.7), float(-0.9), float(-14.4), float(0.42), float(0.91))
figrinDan.setCustomName2('Figrin D\'an')
techMor = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(4.0), float(-0.9), float(-17.0), float(0.42), float(0.91))
techMor.setCustomName2('Tech M\'or')
doikkNats = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(2.2), float(-0.9), float(-16.4), float(0.42), float(0.91))
doikkNats.setCustomName2('Doikk Na\'ts')
tednDahai = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(1.3), float(-0.9), float(-15.2), float(0.42), float(0.91))
tednDahai.setCustomName2('Tedn Dahai')
nalanCheel = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(0.5), float(-0.9), float(-17.1), float(0.42), float(0.91))
nalanCheel.setCustomName2('Nalan Cheel')
businessman1 = stcSvc.spawnObject('object/mobile/shared_dressed_businessman_human_male_01.iff', 'tatooine', long(1082877), float(11.0), float(-0.9), float(2.1), float(0.38), float(-0.92))
businessman1.setCustomName2('a Businessman')
commoner1 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_aqualish_male_01.iff', 'tatooine', long(1082877), float(10.3), float(-0.9), float(2.7), float(0.82), float(0.57))
commoner1.setCustomName2('a Commoner')
entertainer1 = stcSvc.spawnObject('object/mobile/shared_dressed_entertainer_trainer_twk_female_01.iff', 'tatooine', long(1082877), float(9.4), float(-0.9), float(3.9), float(0.38), float(-0.92))
entertainer1.setCustomName2('an Entertainer')
noble1 = stcSvc.spawnObject('object/mobile/shared_dressed_noble_trandoshan_male_01.iff', 'tatooine', long(1082877), float(8.6), float(-0.9), float(4.8), float(0.82), float(0.57))
noble1.setCustomName2('a Noble')
commoner2 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_trandoshan_female_01.iff', 'tatooine', long(1082877), float(4.1), float(-0.9), float(5.7), float(1), float(0))
commoner2.setCustomName2('a Commoner')
commoner3 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_bothan_female_01.iff', 'tatooine', long(1082877), float(3.1), float(-0.9), float(5.9), float(1), float(0))
commoner3.setCustomName2('a Commoner')
commoner4 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_fat_twilek_male_01.iff', 'tatooine', long(1082877), float(1.7), float(-0.9), float(6.0), float(1), float(0))
commoner4.setCustomName2('a Commoner')
commoner5 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_bothan_male_01.iff', 'tatooine', long(1082877), float(-0.4), float(-0.9), float(5.9), float(1), float(0))
commoner5.setCustomName2('a Commoner')
commoner6 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_05.iff', 'tatooine', long(1082877), float(16.0), float(-0.9), float(4.1), float(0), float(0))
commoner6.setCustomName2('a Commoner')
commoner7 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_fat_zabrak_male_01.iff', 'tatooine', long(1082877), float(8.8), float(-0.9), float(-6.0), float(0.98), float(-0.22))
commoner7.setCustomName2('a Patron')
commoner8 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_08.iff', 'tatooine', long(1082877), float(6.8), float(-0.9), float(-6.5), float(0.98), float(-0.22))
commoner8.setCustomName2('a Patron')
commoner9 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_aqualish_male_09.iff', 'tatooine', long(1082877), float(1.1), float(-0.9), float(-7.7), float(0.42), float(0.91))
commoner9.setCustomName2('a Commoner')
commoner10 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_nikto_male_04.iff', 'tatooine', long(1082877), float(2.1), float(-0.9), float(-8.4), float(0.42), float(0.91))
commoner10.setCustomName2('a Commoner')
anetiaKahryn = stcSvc.spawnObject('object/mobile/shared_dressed_twk_entertainer.iff', 'tatooine', long(1082878), float(19.8), float(-0.9), float(-21), float(-0.03), float(0.99))
anetiaKahryn.setCustomName2('Anetia Kah\'ryn')
dravis = stcSvc.spawnObject('object/mobile/shared_space_privateer_tier1_tatooine.iff', 'tatooine', long(1082886), float(-21.7), float(-0.9), float(25.5), float(0.99), float(0.03))
dravis.setCustomName2('Dravis')
talonKarrde = stcSvc.spawnObject('object/mobile/shared_dressed_talon_karrde.iff', 'tatooine', long(1082887), float(-25.7), float(-0.5), float(8.8), float(0.21), float(0.97))
talonKarrde.setCustomName2('Talon Karrde')
#Starport Interior
bartender1 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_nikto_male_04.iff', 'tatooine', long(1106380), float(-59.1), float(2.6), float(39.5), float(0), float(0))
bartender1.setCustomName2('a Bartender')
#City Hall Interior
#Lucky Despot Interior
hansolo1 = stcSvc.spawnObject('object/mobile/shared_han_solo.iff', 'tatooine', long(26949), float(32.3), float(7.0), float(1.6), float(0), float(0))
hansolo1.setCustomName2('Han Solo')
#Medical Center Interior
#Theater Interior
#Miscellaneous Building Interiors
#Outside
businessman2 = stcSvc.spawnObject('object/mobile/shared_dressed_businessman_human_male_01.iff', 'tatooine', long(0), float(3663.3), float(4.0), float(-4738.6), float(0), float(0))
businessman2.setCustomName2('a Businessman')
noble2 = stcSvc.spawnObject('object/mobile/shared_dressed_noble_human_female_01.iff', 'tatooine', long(0), float(3542.3), float(5.0), float(-4826.0), float(0.42), float(0.91))
noble2.setCustomName2('a Noble')
commoner11 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_06.iff', 'tatooine', long(0), float(3529.1), float(5.0), float(-4900.4), float(0.42), float(0.91))
commoner11.setCustomName2('a Commoner')
businessman3 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_trandoshan_male_02.iff', 'tatooine', long(0), float(3595.7), float(5.0), float(-4740.1), float(0), float(0))
businessman3.setCustomName2('a Businessman')
jawa1 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3663.3), float(5.0), float(-4858.6), float(0), float(0))
jawa1.setCustomName2('a Jawa')
commoner12 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_moncal_male_01.iff', 'tatooine', long(0), float(3490.3), float(5.0), float(-4799.4), float(0), float(0))
commoner12.setCustomName2('a Scientist')
commoner13 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_zabrak_female_02.iff', 'tatooine', long(0), float(3559.7), float(5.0), float(-4725.9), float(0), float(0))
commoner13.setCustomName2('a Commoner')
commoner14 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_devaronian_male_01.iff', 'tatooine', long(0), float(3527.7), float(5.0), float(-4721.1), float(0.71), float(0.71))
commoner14.setCustomName2('a Commoner')
commoner15 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_aqualish_female_01.iff', 'tatooine', long(0), float(3514.9), float(5.0), float(-4737.8), float(0), float(0))
commoner15.setCustomName2('a Commoner')
jawa2 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3485.2), float(4.9), float(-4859.2), float(0), float(0))
jawa2.setCustomName2('a Jawa')
jawa3 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3465.3), float(5.0), float(-4860.1), float(0.71), float(-0.71))
jawa3.setCustomName2('a Jawa')
jawa4 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3486.8), float(5.0), float(-4884.7), float(0.43051), float(-0.9025))
jawa4.setCustomName2('a Jawa')
jawa5 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3487.1), float(5.0), float(-4886.0), float(0.95105), float(0.3090))
jawa5.setCustomName2('a Jawa')
jawa6 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3488.8), float(5.0), float(-4884.4), float(0.3255), float(-0.9455))
jawa6.setCustomName2('a Jawa')
jawa7 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3472.2), float(5.0), float(-4918.4), float(0), float(0))
jawa7.setCustomName2('a Jawa')
jawa8 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3471.4), float(5.0), float(-4919.5), float(0), float(0))
jawa8.setCustomName2('a Jawa')
jawa9 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3470.3), float(5.0), float(-4918.7), float(0), float(0))
jawa9.setCustomName2('a Jawa')
bib = stcSvc.spawnObject('object/mobile/shared_bib_fortuna.iff', 'tatooine', long(0), float(3552.4), float(5.0), float(-4933.2), float(0.31730), float(-0.9483))
bib.setCustomName2('Bib Fortuna')
commoner16 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_06.iff', 'tatooine', long(0), float(3398.2), float(4.0), float(-4654.2), float(0.42), float(0.91))
commoner16.setCustomName2('a Commoner')
noble3 = stcSvc.spawnObject('object/mobile/shared_dressed_noble_human_female_01.iff', 'tatooine', long(0), float(3396.3), float(4.0), float(-4774.1), float(0.42), float(0.91))
noble3.setCustomName2('a Noble')
entertainer1 = stcSvc.spawnObject('object/mobile/shared_dressed_entertainer_trainer_twk_female_01.iff', 'tatooine', long(0), float(3305.7), float(5.6), float(-4771.7), float(0), float(0))
entertainer1.setCustomName2('an Entertainer')
r3m6 = stcSvc.spawnObject('object/mobile/shared_r3.iff', 'tatooine', long(0), float(3460.1), float(4.0), float(-4898.2), float(0.38), float(-0.92))
r3m6.setCustomName2('R3-M6')
eg1 = stcSvc.spawnObject('object/mobile/shared_eg6_power_droid.iff', 'tatooine', long(0), float(3463.8), float(4.0), float(-4882.6), float(-0.38), float(0.92))
eg1.setCustomName2('an EG-6 Power Droid')
commoner17 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_zabrak_female_02.iff', 'tatooine', long(0), float(3452.6), float(4.0), float(-4937.1), float(0), float(0))
commoner17.setCustomName2('a Commoner')
lifter1 = stcSvc.spawnObject('object/mobile/shared_cll8_binary_load_lifter.iff', 'tatooine', long(0), float(3547), float(5.0), float(-4768.9), float(0), float(0))
lifter1.setCustomName2('a CLL-8 Binary Load Lifter')
r3j7 = stcSvc.spawnObject('object/mobile/shared_r3.iff', 'tatooine', long(0), float(3311.1), float(4.0), float(-4820.2), float(0.38), float(-0.92))
r3j7.setCustomName2('R3-J7')
noble4 = stcSvc.spawnObject('object/mobile/shared_dressed_noble_human_female_03.iff', 'tatooine', long(0), float(3255.3), float(4.0), float(-4848.1), float(0.42), float(0.91))
noble4.setCustomName2('a Noble')
byxlePedette = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_opening_byxle.iff', 'tatooine', long(0), float(3365), float(5), float(-4639), float(0.99), float(0.12))
byxlePedette.setCustomName2('Byxle Pedette')
errikDarksider = stcSvc.spawnObject('object/mobile/shared_dressed_herald_tatooine_01.iff', 'tatooine', long(0), float(3381), float(4.6), float(-4498), float(0.91), float(0.40))
errikDarksider.setCustomName2('Errik Darksider')
gendra = stcSvc.spawnObject('object/mobile/shared_dressed_gendra.iff', 'tatooine', long(0), float(3308), float(5.6), float(-4785), float(0.84), float(0.53))
gendra.setCustomName2('Gendra')
lurval = stcSvc.spawnObject('object/mobile/shared_lurval.iff', 'tatooine', long(0), float(3387), float(5), float(-4791), float(-0.4), float(0.91))
lurval.setCustomName2('Lurval')
matildaCarson = stcSvc.spawnObject('object/mobile/shared_dressed_noble_human_female_02.iff', 'tatooine', long(0), float(3490.2), float(5), float(-4778), float(0.87), float(0.48))
matildaCarson.setCustomName2('Matilda Carson')
vanvi = stcSvc.spawnObject('object/mobile/shared_dressed_bestine_artist01.iff', 'tatooine', long(0), float(3312), float(5), float(-4655), float(0.95), float(-0.28))
vanvi.setCustomName2('Vanvi Hotn')
#Eisley Legacy Quest NPCs
vourk = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_opening_santos.iff', 'tatooine', long(0), float(3520.0), float(5.0), float(-4821.0), float(0.42), float(0.91))
vourk.setCustomName2('Vourk Ver\'Zremp')
mayor = stcSvc.spawnObject('object/mobile/shared_dressed_mayor_mikdanyell_guhrantt.iff', 'tatooine', long(1279960), float(1.2), float(2.5), float(5.4), float(0), float(0))
mayor.setCustomName2('Mayor Mikdanyell Guh\'rantt')
enthaKandela = stcSvc.spawnObject('object/mobile/shared_dressed_entha_kandela.iff', 'tatooine', long(0), float(3511), float(5.0), float(-4785), float(0.70), float(0.71))
enthaKandela.setCustomName2('Entha Kandela')
purvis = stcSvc.spawnObject('object/mobile/shared_dressed_purvis_arrison.iff', 'tatooine', long(0), float(3512.4), float(5.0), float(-4764.9), float(0.38), float(-0.92))
purvis.setCustomName2('Purvis Arrison')
peawpRdawc = stcSvc.spawnObject('object/mobile/shared_peawp_bodyguard_trainer.iff', 'tatooine', long(1189639), float(-11.8), float(1.1), float(-10.1), float(0), float(0))
peawpRdawc.setCustomName2('Peawp R\'dawc')
peawpRdawc = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_opening_niko.iff', 'tatooine', long(0), float(3506.7), float(5.0), float(-4795.8), float(0.70), float(0.71))
peawpRdawc.setCustomName2('Niko Brehe')
dunir = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_opening_dunir.iff', 'tatooine', long(0), float(3520.7), float(5.0), float(-4683.7), float(0.99), float(-0.08))
dunir.setCustomName2('Dunir')
#Eisley Ship Controller
stcSvc.spawnObject('object/mobile/shared_distant_ship_controller.iff', 'tatooine', long(0), float(3542.3), float(5.0), float(-4826.0), float(0.42), float(0.91))
# Mos Espa NPC Spawns
# Cantina Interior
dalaSocuna = stcSvc.spawnObject('object/mobile/shared_space_rebel_tier1_tatooine_socuna.iff', 'tatooine', long(1256068), float(-28.4), float(-0.5), float(9.4), float(0.33), float(0.94))
dalaSocuna.setCustomName2('Commander Da\'la Socuna')
watto = stcSvc.spawnObject('object/mobile/shared_watto.iff', 'tatooine', long(26670), float(4.7), float(-0.5), float(2.4), float(0.70), float(-0.71))
watto.setCustomName2('Watto')
#Exterior Uninteractables
commoner18 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_zabrak_female_02.iff', 'tatooine', long(0), float(-2915.3), float(5.0), float(2148.5), float(0), float(0))
commoner18.setCustomName2('a Commoner')
jawa10 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(-2966.3), float(5.0), float(2196.9), float(0), float(0))
jawa10.setCustomName2('a Jawa')
commoner19 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_06.iff', 'tatooine', long(0), float(-2960.4), float(5.0), float(2271.3), float(0), float(0))
commoner19.setCustomName2('a Commoner')
commoner20 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_devaronian_male_01.iff', 'tatooine', long(0), float(-2934.3), float(5.0), float(2298.9), float(0.71), float(0.71))
commoner20.setCustomName2('a Commoner')
commoner21 = stcSvc.spawnObject('object/mobile/shared_dressed_noble_human_female_01.iff', 'tatooine', long(0), float(-2897.7), float(5.0), float(2345.4), float(0.71), float(0.71))
commoner21.setCustomName2('a Commoner')
commoner22 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_fat_twilek_male_01.iff', 'tatooine', long(0), float(-2763.8), float(5.0), float(2305.2), float(0.71), float(0.71))
commoner22.setCustomName2('a Commoner')
jawa11 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(-2936.8), float(5.0), float(2078.4), float(0.95105), float(0.3090))
jawa11.setCustomName2('a Jawa')
businessman4 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_trandoshan_male_02.iff', 'tatooine', long(0), float(-2914.2), float(5.0), float(2022.4), float(0), float(0))
businessman4.setCustomName2('a Businessman')
commoner23 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_moncal_male_01.iff', 'tatooine', long(0), float(-2904.1), float(5.0), float(1965.3), float(0.71), float(0.71))
commoner23.setCustomName2('a Commoner')
# Mos Entha NPC Spawns
#Outside
ankwee = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_entha_ankwee.iff', 'tatooine', long(0), float(1351), float(5.0), float(3108), float(0.42), float(0.91))
ankwee.setCustomName2('An\'kwee')
# Bestine NPC Spawns
# City hall
indigoSiyan = stcSvc.spawnObject('object/mobile/shared_dressed_indigo_siyan.iff', 'tatooine', long(926483), float(24.7), float(3.2), float(-30.7), float(-0.06), float(0.99))
indigoSiyan.setCustomName2('Indigo Siyan')
keanna = stcSvc.spawnObject('object/mobile/shared_dressed_keanna_likyna.iff', 'tatooine', long(926480), float(-18.7), float(3.2), float(20.6), float(-0.97), float(0.2))
keanna.setCustomName2('Keanna Li\'kyna')
oberhaur = stcSvc.spawnObject('object/mobile/shared_space_imperial_tier2_tatooine_oberhaur.iff', 'tatooine', long(926480), float(-21.9), float(3.2), float(26.9), float(0.99), float(0.01))
oberhaur.setCustomName2('Commander Oberhaur')
seanTrenwell = stcSvc.spawnObject('object/mobile/shared_dressed_sean_trenwell.iff', 'tatooine', long(926483), float(19.4), float(3.2), float(-36), float(-0.06), float(0.99))
seanTrenwell.setCustomName2('Sean Trenwell ')
talmont = stcSvc.spawnObject('object/mobile/shared_prefect_talmont.iff', 'tatooine', long(926475), float(-1.9), float(3.1), float(-10.3), float(0.99), float(0))
tourAryon = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_tour_aryon.iff', 'tatooine', long(926479), float(-36.8), float(1.3), float(0.3), float(0.8), float(0.59))
tourAryon.setCustomName2('Tour Aryon')
victorVisalis = stcSvc.spawnObject('object/mobile/shared_dressed_victor_visalis.iff', 'tatooine', long(926480), float(-26.7), float(3.2), float(20.8), float(0.96), float(0.24))
victorVisalis.setCustomName2('Victor Visalis')
wilhalmSkrim = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_wilhalm_skrim.iff', 'tatooine', long(926482), float(28.9), float(1.3), float(-6.0), float(0.23), float(0.97))
#Miscellaneous Building Interiors
akalColzet = stcSvc.spawnObject('object/mobile/shared_dressed_imperial_trainer_space_01.iff', 'tatooine', long(1212359), float(0.7), float(1.8), float(-14), float(0), float(0.99))
akalColzet.setCustomName2('lt. Akal Colzet')
fariousGletch = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_farious_gletch.iff', 'tatooine', long(1278989), float(2.0), float(-0.4), float(-5.7), float(-0.15), float(0.98))
pfilbeeJhorn = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_pfilbee_jhorn.iff', 'tatooine', long(1279923), float(5.1), float(0.1), float(-3.8), float(-0.7), float(0.71))
pfilbeeJhorn.setCustomName2('Pfilbee Jhorn')
#Hotel interior
gilBurtin = stcSvc.spawnObject('object/mobile/shared_dressed_industrialist_trainer_01.iff', 'tatooine', long(1223850), float(20.3), float(1.6), float(12.8), float(0.99), float(0))
gilBurtin.setCustomName2('Gil Burtin')
# Outside
barak = stcSvc.spawnObject('object/mobile/shared_smuggler_broker_barak.iff', 'tatooine', long(0), float(-1049), float(5.0), float(-3537), float(0.97), float(0.23))
barak.setCustomName2('Barak')
barrezz = stcSvc.spawnObject('object/mobile/shared_dressed_dressed_legacy_barrezz.iff', 'tatooine', long(0), float(-1146.8), float(98.0), float(-3892.1), float(0.75), float(0.65))
barrezz.setCustomName2('Commander Barrezz')
jasha = stcSvc.spawnObject('object/mobile/shared_dressed_bestinejobs_jasha.iff', 'tatooine', long(0), float(-1128), float(98.0), float(-3900), float(-0.42), float(0.90))
jasha.setCustomName2('Captain Jasha')
dkrn = stcSvc.spawnObject('object/mobile/shared_dressed_imperial_general_m.iff', 'tatooine', long(0), float(-1160), float(5.0), float(-3525), float(0.90), float(-0.41))
dkrn.setCustomName2('Commander D\'krn')
gunham = stcSvc.spawnObject('object/mobile/shared_dressed_imperial_lieutenant_m.iff', 'tatooine', long(0), float(-1125), float(12.2), float(-3620), float(0.9), float(0.42))
gunham.setCustomName2('Commander Gunham')
kormundThrylle = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_kormund_thrylle.iff', 'tatooine', long(0), float(-1043), float(10.0), float(-3530), float(0.99), float(0.06))
kormundThrylle.setCustomName2('Kormund Thrylle')
calebKnolar = stcSvc.spawnObject('object/mobile/shared_dressed_imperial_major_cold_m.iff', 'tatooine', long(0), float(-1149), float(98.0), float(-3903), float(0.42), float(0.91))
calebKnolar.setCustomName2('Major Caleb Knolar')
# Anchorhead NPC Spawns
# Cantina Interior
borraSetas = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_rodian_female_03.iff', 'tatooine', long(1213345), float(9.8), float(0.4), float(-1.2), float(-0.65), float(0.75))
borraSetas.setCustomName2('Borra Setas')
# Outside
aaphKoden = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_aaph_koden.iff', 'tatooine', long(0), float(129), float(5.0), float(-5399), float(-0.67), float(0.73))
aaphKoden.setCustomName2('Aaph Koden')
Alger = stcSvc.spawnObject('object/mobile/shared_smuggler_fence_alger.iff', 'tatooine', long(0), float(107), float(5.0), float(-5315), float(0.96), float(0.26))
Alger.setCustomName2('Alger')
carhlaBastra = stcSvc.spawnObject('object/mobile/shared_dressed_legacy_bastra.iff', 'tatooine', long(0), float(128), float(5.0), float(-5428), float(-0.26), float(0.96))
carhlaBastra.setCustomName2('Carh\'la Bastra')
cuanTalon = stcSvc.spawnObject('object/mobile/shared_dressed_legacy_cuan.iff', 'tatooine', long(0), float(-161.7), float(65.0), float(-5322.8), float(0), float(0))
cuanTalon.setCustomName2('Cuan Talon')
dromaOrdo = stcSvc.spawnObject('object/mobile/shared_dressed_anchorjobs_ordo.iff', 'tatooine', long(0), float(110), float(52.0), float(-5431), float(0.36), float(0.93))
dromaOrdo.setCustomName2('Droma Ordo')
Sorna = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_tosche_sorna.iff', 'tatooine', long(0), float(-135), float(52.0), float(-5331), float(0.36), float(0.93))
Sorna.setCustomName2('Sorna')
# Lars Homestead
zefAndo = stcSvc.spawnObject('object/mobile/shared_dressed_legacy_zef.iff', 'tatooine', long(0), float(-2574.9), float(0), float(-5516.7), float(0), float(0))
zefAndo.setCustomName2('Zef Ando')
# Jawa Sandcrawler (legacy quest)
fa2po = stcSvc.spawnObject('object/mobile/shared_3po_protocol_droid.iff', 'tatooine', long(0), float(-3805.7), float(30.4), float(-4721.6), float(0), float(0))
fa2po.setCustomName2('FA-2PO')
# Darklighter Cache Cave (tat -260 -6930 not spawning from buildout)
# Mos Taike NPC Spawns
# Wayfar NPC Spawns
# Jabba's Palace Theme Park Spawns
reelo = stcSvc.spawnObject('object/mobile/shared_reelo_baruk.iff', 'tatooine', long(26560), float(-3.5), float(0.2), float(113.5), float(0), float(0))
reelo.setCustomName2('Reelo Baruk')
reeyees = stcSvc.spawnObject('object/mobile/shared_dressed_gran_thug_male_01.iff', 'tatooine', long(26560), float(5.8), float(0.2), float(115.7), float(0.70), float(-0.71))
reeyees.setCustomName2('Ree-Yees')
ephant = stcSvc.spawnObject('object/mobile/shared_ephant_mon.iff', 'tatooine', long(26564), float(-6.1), float(5.8), float(86.1), float(0), float(0))
ephant.setCustomName2('Ephant Mon')
porcellus = stcSvc.spawnObject('object/mobile/shared_dressed_porcellus.iff', 'tatooine', long(26572), float(-44.0), float(3.0), float(63.4), float(0), float(0))
porcellus.setCustomName2('Porcellus')
barada = stcSvc.spawnObject('object/mobile/shared_barada.iff', 'tatooine', long(26596), float(31.2), float(0.2), float(-1.0), float(0.98), float(-0.17))
barada.setCustomName2('Barada')
bibMain = stcSvc.spawnObject('object/mobile/shared_bib_fortuna.iff', 'tatooine', long(26582), float(-11.1), float(2.0), float(49.5), float(0.70), float(0.71))
bibMain.setCustomName2('Bib Fortuna')
jabba = stcSvc.spawnObject('object/mobile/shared_jabba_the_hutt.iff', 'tatooine', long(26582), float(-17.0), float(2.8), float(44.9), float(0.70), float(0.71))
jabba.setCustomName2('Jabba the Hutt')
oola = stcSvc.spawnObject('object/mobile/shared_oola.iff', 'tatooine', long(26582), float(-10.3), float(2.0), float(43.9), float(0.70), float(-0.71))
oola.setCustomName2('Oola')
oola.setCurrentAnimation('wave1')
bobaFett = stcSvc.spawnObject('object/mobile/shared_boba_fett.iff', 'tatooine', long(26582), float(-1.0), float(3.0), float(33.1), float(0), float(0))
bobaFett.setCustomName2('Boba Fett')
ev9d9 = stcSvc.spawnObject('object/mobile/shared_ev_9d9.iff', 'tatooine', long(26574), float(18.8), float(0.2), float(78.7), float(1.0), float(0))
ev9d9.setCustomName2('EV-9D9')
malakili = stcSvc.spawnObject('object/mobile/shared_malakili.iff', 'tatooine', long(26599), float(17.3), float(-11.0), float(43.8), float(0), float(0))
malakili.setCustomName2('Malakili')
#Need to somehow get the cellID for the Rancor Pit or it will NEVER be spawned.
maxRebo = stcSvc.spawnObject('object/mobile/shared_max_rebo.iff', 'tatooine', long(26582), float(-1.4), float(3.0), float(26.9), float(0.42), float(-0.9))
maxRebo.setCustomName2('Max Rebo')
droopy = stcSvc.spawnObject('object/mobile/shared_droopy_mccool.iff', 'tatooine', long(26582), float(-3.9), float(3.0), float(26.1), float(0.42), float(-0.9))
droopy.setCustomName2('Droopy McCool')
sySnootles = stcSvc.spawnObject('object/mobile/shared_sy_snootles.iff', 'tatooine', long(26582), float(-1.4), float(3.0), float(29.8), float(0.42), float(-0.))
sySnootles.setCustomName2('Sy Snootles')
g5po = stcSvc.spawnObject('object/mobile/shared_3po_protocol_droid_red.iff', 'tatooine', long(26582), float(-14.3), float(2.0), float(47.4), float(0.70), float(0.71))
g5po.setCustomName2('G5-PO')
return
+19 -5
View File
@@ -24,7 +24,10 @@ package main;
import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import java.util.concurrent.ConcurrentHashMap;
@@ -37,6 +40,9 @@ import java.util.concurrent.TimeUnit;
import org.apache.mina.core.service.IoHandler;
import org.apache.mina.core.session.IoSession;
import com.sleepycat.je.Transaction;
import com.sleepycat.persist.EntityCursor;
import protocol.swg.ChatSystemMessage;
import net.engio.mbassy.bus.config.BusConfiguration;
import resources.common.RadialOptions;
@@ -91,6 +97,7 @@ import engine.resources.common.CRC;
import engine.resources.common.PHPBB3Auth;
import engine.resources.config.Config;
import engine.resources.config.DefaultConfig;
import engine.resources.container.Traverser;
import engine.resources.database.DatabaseConnection;
import engine.resources.database.ObjectDatabase;
import engine.resources.objects.SWGObject;
@@ -172,6 +179,7 @@ public class NGECore {
private ObjectDatabase creatureODB;
private ObjectDatabase mailODB;
private ObjectDatabase guildODB;
private ObjectDatabase objectIdODB;
private BusConfiguration eventBusConfig = BusConfiguration.Default(1, new ThreadPoolExecutor(1, 4, 1, TimeUnit.MINUTES, new LinkedBlockingQueue<Runnable>()));
@@ -185,7 +193,6 @@ public class NGECore {
public void start() {
instance = this;
final ThreadMonitor deadlockDetector = new ThreadMonitor();
Thread deadlockMonitor = new Thread(new Runnable() {
@Override
@@ -221,6 +228,8 @@ public class NGECore {
buildingODB = new ObjectDatabase("building", true, false, true);
mailODB = new ObjectDatabase("mails", true, false, true);
guildODB = new ObjectDatabase("guild", true, false, true);
objectIdODB = new ObjectDatabase("oids", true, false, false);
// Services
loginService = new LoginService(this);
retroService = new RetroService(this);
@@ -347,9 +356,10 @@ public class NGECore {
weatherService = new WeatherService(this);
weatherService.loadPlanetSettings();
// spawnService.loadLairTemplates();
// spawnService.loadLairGroups();
// spawnService.loadSpawnAreas();
/*spawnService.loadMobileTemplates();
spawnService.loadLairTemplates();
spawnService.loadLairGroups();
spawnService.loadSpawnAreas();*/
retroService.run();
@@ -457,6 +467,10 @@ public class NGECore {
return buildingODB;
}
public ObjectDatabase getObjectIdODB() {
return objectIdODB;
}
public int getActiveClients() {
int connections = 0;
for (Map.Entry<IoSession, Client> c : clients.entrySet()) {
@@ -535,7 +549,7 @@ public class NGECore {
synchronized(getActiveConnectionsMap()) {
for(Client client : getActiveConnectionsMap().values()) {
client.getSession().close(true);
connectionService.disconnect(client.getSession());
connectionService.disconnect(client);
}
}
@@ -0,0 +1,109 @@
/*******************************************************************************
* Copyright (c) 2013 <Project SWG>
*
* This File is part of NGECore2.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Using NGEngine to work with NGECore2 is making a combined work based on NGEngine.
* Therefore all terms and conditions of the GNU Lesser General Public License cover the combination.
******************************************************************************/
package protocol.swg;
import java.nio.ByteOrder;
import main.NGECore;
import org.apache.mina.core.buffer.IoBuffer;
import resources.objects.creature.CreatureObject;
import resources.objects.player.PlayerObject;
import engine.resources.common.CRC;
import engine.resources.objects.SWGObject;
import engine.resources.scene.Point3D;
public class CharacterSheetResponseMessage extends SWGMessage {
private PlayerObject player;
public CharacterSheetResponseMessage(PlayerObject player) {
this.player = player;
}
@Override
public void deserialize(IoBuffer data) {
}
@Override
public IoBuffer serialize() {
CreatureObject creature = (CreatureObject) player.getContainer();
if (creature != null) {
SWGObject desCloner = null;
if (creature.getAttachment("preDesignatedCloner") != null)
desCloner = NGECore.getInstance().objectService.getObject((long) creature.getAttachment("preDesignatedCloner"));
String clonerPlanet = "";
String spouse = "";
if (desCloner != null)
clonerPlanet = desCloner.getPlanet().getName();
if (player.getSpouseName() != null)
spouse = player.getSpouseName();
IoBuffer buffer = IoBuffer.allocate(82 + clonerPlanet.length() + (spouse.length() * 2)).order(ByteOrder.LITTLE_ENDIAN);
buffer.putShort((short) 12);
buffer.putInt(CRC.StringtoCRC("CharacterSheetResponseMessage"));
buffer.putInt(0);
buffer.putInt(0);
if (desCloner != null) {
Point3D loc = desCloner.getPosition();
buffer.putFloat(loc.x); // bind x
buffer.putFloat(loc.y); // bind z
buffer.putFloat(loc.z); // bind y
buffer.put(getAsciiString(clonerPlanet)); // bind planet
} else {
buffer.putFloat(0); // bind x
buffer.putFloat(0); // bind z
buffer.putFloat(0); // bind y
buffer.put(getAsciiString("")); // bind planet
}
buffer.putFloat(0); // bank x
buffer.putFloat(0); // bank z
buffer.putFloat(0); // bank y
buffer.put(getAsciiString("tatooine"));
buffer.putFloat(0); // home x
buffer.putFloat(0); // home z
buffer.putFloat(0); // home y
buffer.put(getAsciiString("")); // home planet
buffer.put(getAsciiString("")); // Name of city player resides in
buffer.put(getUnicodeString(spouse));
buffer.putInt(10); // lots remaining
return buffer.flip();
}
return null;
}
}
@@ -6,9 +6,6 @@ import main.NGECore;
import org.apache.mina.core.buffer.IoBuffer;
import engine.resources.config.Config;
import engine.resources.config.DefaultConfig;
public class ChatFriendsListUpdate extends SWGMessage {
private String friendName;
+99
View File
@@ -0,0 +1,99 @@
/*******************************************************************************
* Copyright (c) 2013 <Project SWG>
*
* This File is part of NGECore2.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Using NGEngine to work with NGECore2 is making a combined work based on NGEngine.
* Therefore all terms and conditions of the GNU Lesser General Public License cover the combination.
******************************************************************************/
package protocol.swg;
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import resources.common.Console;
import resources.common.StringUtilities;
import engine.resources.common.CRC;
public class CommPlayerMessage extends SWGMessage {
private long objectId;
public CommPlayerMessage(long objectId) {
this.objectId = objectId;
}
@Override
public void deserialize(IoBuffer data) {
}
@Override
public IoBuffer serialize() {
IoBuffer buffer = IoBuffer.allocate(200).order(ByteOrder.LITTLE_ENDIAN);
buffer.putShort((short) 2);
buffer.putInt(0x594AD258);
buffer.put((byte) 0); // aurebesh borders on comm, space version? Can cause crashes
buffer.putLong(objectId);
/*Seen numbers:
* 52 (Starting Station Comms)
* 54 (Tansarii Comms)
* 57 (Supply Drops)
* 58 (Faction Covert->Overt)
* 68 (Imperial stop)
*
*/
buffer.putInt(57); // unknown, changes for each comm message (counter?)
buffer.putShort((short) 0); // unknonw flag, seems to do nothing
buffer.put((byte) 0); // unknown, always 0 except for imperial stop message
buffer.putInt(0xFFFFFFFF);
buffer.put(getAsciiString("stormtrooper")); // StfFile
buffer.putInt(0); // stf spacer
buffer.put(getAsciiString("u11")); // StfName
buffer.putInt(0); // stf spacer
buffer.putLong(0);
buffer.putLong(0);
buffer.putLong(0);
buffer.putLong(0); // 70 bytes
buffer.putLong(0);
buffer.putLong(0);
buffer.putLong(0);
buffer.putLong(0);
buffer.put((byte) 0);
// Officer Supply Drop: 0x3E894347
// Rebel Faction Dude: 0x528CB3D7
buffer.putInt(0x528CB3D7); // model crc, can be anything w/o crashing
buffer.putInt(0); // sound
buffer.putShort((short) 0); // unk
buffer.putShort((short) 16576); // comm display time, unsure on how it's calculated
buffer.flip();
Console.println("CPM: " + StringUtilities.bytesToHex(buffer.array()));
return buffer;
}
}
@@ -19,52 +19,47 @@
* Using NGEngine to work with NGECore2 is making a combined work based on NGEngine.
* Therefore all terms and conditions of the GNU Lesser General Public License cover the combination.
******************************************************************************/
package resources.z.exp.group;
package protocol.swg;
import java.nio.ByteOrder;
import java.util.List;
import org.apache.mina.core.buffer.IoBuffer;
import com.sleepycat.persist.model.Persistent;
import resources.common.StringUtilities;
import engine.resources.common.CRC;
import engine.resources.scene.Point3D;
import engine.resources.objects.SWGObject;
public class CreateClientPathMessage extends SWGMessage {
import resources.objects.Delta;
@Persistent
public class Member extends Delta {
private List<Point3D> coordinates;
private SWGObject member;
public Member(SWGObject member) {
this.member = member;
public CreateClientPathMessage(List<Point3D> coordinates) {
this.coordinates = coordinates;
}
public Member() {
@Override
public void deserialize(IoBuffer data) {
}
@Override
public IoBuffer serialize() {
IoBuffer buffer = IoBuffer.allocate((coordinates.size() * 12) + 10).order(ByteOrder.LITTLE_ENDIAN);
buffer.putShort((short) 2);
buffer.putInt(CRC.StringtoCRC("CreateClientPathMessage"));
}
public SWGObject getMember() {
synchronized(objectMutex) {
return member;
buffer.putInt(coordinates.size());
for(Point3D point : coordinates) {
buffer.putFloat(point.x);
buffer.putFloat(point.z);
buffer.putFloat(point.y);
}
buffer.flip();
StringUtilities.printBytes(buffer.array());
return buffer;
}
public long getObjectId() {
return member.getObjectID();
}
public String getCustomName() {
return member.getCustomName();
}
public byte[] getBytes() {
synchronized(objectMutex) {
IoBuffer buffer = bufferPool.allocate(8 + getAsciiString(getCustomName()).length, false).order(ByteOrder.LITTLE_ENDIAN);
buffer.putLong(getObjectId());
buffer.put(getAsciiString(getCustomName()));
return buffer.array();
}
}
}
+5 -1
View File
@@ -26,11 +26,13 @@ import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.objectControllerObjects.CommandEnqueue;
import protocol.swg.objectControllerObjects.DataTransform;
import protocol.swg.objectControllerObjects.DataTransformWithParent;
import protocol.swg.objectControllerObjects.ObjControllerObject;
import protocol.swg.objectControllerObjects.UnknownObjController;
import resources.common.StringUtilities;
public class ObjControllerMessage extends SWGMessage {
@@ -55,6 +57,8 @@ public class ObjControllerMessage extends SWGMessage {
public static final int ANIMATION = 0x00F2;
public static final int BUFF_BUILDER_START = 0x025C;
public static final int BUFF_BUILDER_CHANGE = 0x025A;
public static final int UI_PLAY_EFFECT = 0x0401;
public static final int SHOW_LOOT_BOX = 0x04BC;
public ObjControllerMessage() {
@@ -78,7 +82,7 @@ public class ObjControllerMessage extends SWGMessage {
buffer.putInt(0x80CE5E46);
buffer.putInt(update);
buffer.put(objControllerObject.serialize());
//System.out.println("OBJMSG: " + buffer.flip().getHexDump());
//System.out.println("OBJMSG: " + StringUtilities.bytesToHex(buffer.flip().array()));
int size = buffer.position();
return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip();
}
+1 -1
View File
@@ -40,7 +40,7 @@ public class ParametersMessage extends SWGMessage {
IoBuffer packet = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN);
packet.putShort((short) 2);
packet.putInt(0x7102B15F);
packet.putInt(0x487652DA);
packet.putInt(0x00000384);
return packet.flip();
@@ -19,18 +19,39 @@
* Using NGEngine to work with NGECore2 is making a combined work based on NGEngine.
* Therefore all terms and conditions of the GNU Lesser General Public License cover the combination.
******************************************************************************/
package resources.z.exp.objects.universe;
package protocol.swg;
import resources.z.exp.objects.ObjectMessageBuilder;
import java.nio.ByteOrder;
public class UniverseMessageBuilder extends ObjectMessageBuilder {
import org.apache.mina.core.buffer.IoBuffer;
public class PlayerMoneyResponse extends SWGMessage {
int cash;
int bank;
public UniverseMessageBuilder(UniverseObject object) {
super(object);
public PlayerMoneyResponse(int cash, int bank) {
this.cash = cash;
this.bank = bank;
}
public UniverseMessageBuilder() {
super();
@Override
public void deserialize(IoBuffer data) {
}
@Override
public IoBuffer serialize() {
IoBuffer buffer = IoBuffer.allocate(14).order(ByteOrder.LITTLE_ENDIAN);
buffer.putShort((short) 3);
buffer.putInt(0x367E737E);
buffer.putInt(bank);
buffer.putInt(cash);
buffer.flip();
return buffer;
}
}
+1
View File
@@ -45,6 +45,7 @@ public class SceneDestroyObject extends SWGMessage {
result.putInt(0x4D45D504);
result.putLong(objectId);
result.put((byte) 0); // unk
return result.flip();
}
}
-2
View File
@@ -26,8 +26,6 @@ import java.nio.ByteBuffer;
import org.apache.mina.core.buffer.IoBuffer;
import resources.common.StringUtilities;
public class SetWaypointColor extends SWGMessage {
private long objectId;
@@ -26,7 +26,6 @@ import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.ObjControllerMessage;
import protocol.swg.SWGMessage;
public class Animation extends ObjControllerObject {
@@ -21,12 +21,8 @@
******************************************************************************/
package protocol.swg.objectControllerObjects;
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import engine.resources.common.Utilities;
public class ChangeRoleIconChoice extends ObjControllerObject {
private long objectId = 0;
@@ -19,66 +19,52 @@
* Using NGEngine to work with NGECore2 is making a combined work based on NGEngine.
* Therefore all terms and conditions of the GNU Lesser General Public License cover the combination.
******************************************************************************/
package resources.z.exp.manufacture;
package protocol.swg.objectControllerObjects;
import java.nio.ByteOrder;
import java.util.List;
import org.apache.mina.core.buffer.IoBuffer;
import com.sleepycat.persist.model.Persistent;
import engine.resources.objects.SWGObject;
import protocol.swg.ObjControllerMessage;
import resources.common.StringUtilities;
import resources.objects.Delta;
public class ShowLootBox extends ObjControllerObject {
@Persistent
public class Property extends Delta {
private long playerId;
private SWGObject[] rewards;
private int unused = 0;
private String key = "";
private float value = 0;
public Property(String key, float value) {
this.key = key;
this.value = value;
public ShowLootBox(long playerId, SWGObject[] rewards) {
this.playerId = playerId;
this.rewards = rewards;
}
public Property() {
@Override
public void deserialize(IoBuffer data) {
}
@Override
public IoBuffer serialize() {
// Controller Type = 11
IoBuffer buffer = IoBuffer.allocate(20 + (rewards.length * 8)).order(ByteOrder.LITTLE_ENDIAN);
}
public String getKey() {
synchronized(objectMutex) {
return key;
buffer.putInt(ObjControllerMessage.SHOW_LOOT_BOX);
buffer.putLong(playerId);
buffer.putInt(0); // 1 for a black background on icon, 0 or 2 for transparent (default)
if (rewards.length == 1) {
buffer.putInt(1);
buffer.putLong(rewards[0].getObjectId());
} else {
buffer.putInt(rewards.length);
for(SWGObject obj : rewards) {
buffer.putLong(obj.getObjectID());
}
}
return buffer.flip();
}
public Property setKey(String key) {
synchronized(objectMutex) {
this.key = key;
return this;
}
}
public float getValue() {
synchronized(objectMutex) {
return value;
}
}
public Property setValue(float value) {
synchronized(objectMutex) {
this.value = value;
return this;
}
}
public byte[] getBytes() {
synchronized(objectMutex) {
IoBuffer buffer = bufferPool.allocate(8 + getAsciiString(key).length, false).order(ByteOrder.LITTLE_ENDIAN);
buffer.putInt(unused);
buffer.put(getAsciiString(key));
buffer.putFloat(value);
return buffer.array();
}
}
}
@@ -39,7 +39,7 @@ public class TargetUpdate extends ObjControllerObject {
@Override
public IoBuffer serialize() {
// TODO Auto-generated method stub
return null;
}
@@ -19,45 +19,42 @@
* Using NGEngine to work with NGECore2 is making a combined work based on NGEngine.
* Therefore all terms and conditions of the GNU Lesser General Public License cover the combination.
******************************************************************************/
package resources.z.exp.manufacture;
package protocol.swg.objectControllerObjects;
import java.nio.ByteOrder;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import org.apache.mina.core.buffer.IoBuffer;
import com.sleepycat.persist.model.Persistent;
import protocol.swg.ObjControllerMessage;
import resources.objects.Delta;
import resources.z.exp.objects.Baseline;
public class UiPlayEffect extends ObjControllerObject {
private long objectId;
private String uiString;
@Persistent
public class SubList<o> extends Delta {
private List<o> list = new CopyOnWriteArrayList<o>();
public SubList() {
public UiPlayEffect(long objectId, String uiString) {
this.uiString = uiString;
this.objectId = objectId;
}
@Override
public void deserialize(IoBuffer data) {
// TODO Auto-generated method stub
}
public List<o> getList() {
return list;
@Override
public IoBuffer serialize() {
IoBuffer result = IoBuffer.allocate(26 + uiString.length()).order(ByteOrder.LITTLE_ENDIAN);
result.putInt(ObjControllerMessage.UI_PLAY_EFFECT);
result.putLong(objectId);
result.putInt(0);
result.putLong(objectId);
result.put(getAsciiString(uiString));
return result.flip();
}
public byte[] getBytes() {
synchronized(objectMutex) {
int size = 4;
for (o object : list) size += Baseline.toBytes(object).length;
IoBuffer buffer = bufferPool.allocate(size, false).order(ByteOrder.LITTLE_ENDIAN);
buffer.putInt(list.size());
for (o object : list) {
buffer.put(Baseline.toBytes(object));
}
return buffer.array();
}
}
}
@@ -26,6 +26,7 @@ public class ObjControllerOpcodes {
public static final int DATA_TRANSFORM = 0x71000000;
public static final int DATA_TRANSFORM_WITH_PARENT = 0xF1000000;
public static final int COMMAND_QUEUE_ENQUEUE = 0x16010000;
public static final int COMMAND_QUEUE_REMOVE = 0x17010000;
public static final int HOVER_TARGET = 0x26010000; // lookAtTarget
public static final int TARGET_UPDATE = 0xC5040000; // intendedTarget
public static final int OBJECT_MENU_REQUEST = 0x46010000;
+14
View File
@@ -29,8 +29,12 @@ public class Opcodes {
public static int ChatInstantMessageToCharacter = 0x84BB21F7;
public static int ChatPersistentMessageToServer = 0x25A29FA6;
public static int ChatRequestPersistentMessage = 0x07E3559F;
public static int ChatRequestRoomList = 0x4C3D2CFA;
public static int ChatSystemMessage = CRC.StringtoCRC("ChatSystemMessage");
public static int ClientOpenContainerMessage = 0x2D2D6EE1;
public static int CommodotiesItemTypeListRequest = 0x48F493C5;
public static int CommoditiesResourceTypeListRequest = 0xCB1AE82D;
public static int NewbieTutorialResponse = 0xCA88FBAD;
public static int CmdSceneReady = 0x43FD1C22;
public static int ConnectPlayerMessage = 0x2E365218;
public static int ClientCreateCharacter = 0xB97F3074;
@@ -60,5 +64,15 @@ public class Opcodes {
public static int FactionResponseMessage = CRC.StringtoCRC("FactionResponseMessage");
public static int SetWaypointColor = CRC.StringtoCRC("SetWaypointColor");
public static int GuildRequestMessage = CRC.StringtoCRC("GuildRequestMessage");
public static int PlayerMoneyRequest = CRC.StringtoCRC("PlayerMoneyRequest");
public static int LagReport = CRC.StringtoCRC("LagReport");
public static int GetSpecificMapLocationsMessage = CRC.StringtoCRC("GetSpecificMapLocationsMessage");
public static int SetCombatSpamFilter = CRC.StringtoCRC("SetCombatSpamFilter");
public static int SetCombatSpamRangeFilter = CRC.StringtoCRC("SetCombatSpamRangeFilter");
public static int SetLfgInterests = CRC.StringtoCRC("SetLfgInterests");
public static int SetFurnitureRoationDegree = CRC.StringtoCRC("SetFurnitureRotationDegree");
public static int SetJediSlotInfo = CRC.StringtoCRC("SetJediSlotInfo");
public static int CollectionServerFirstListRequest = CRC.StringtoCRC("CollectionServerFirstListRequest");
public static int Unknown = 0x173B91C2; // packet sent to server on every character load-in
}
+1 -2
View File
@@ -23,7 +23,6 @@ package resources.common;
import org.apache.mina.core.buffer.IoBuffer;
import resources.z.exp.objects.Baseline;
import resources.objects.Delta;
import com.sleepycat.persist.model.Persistent;
@@ -85,7 +84,7 @@ public class Stf extends Delta {
synchronized(objectMutex) {
int size = stfFilename.getBytes().length + 4 + stfName.getBytes().length;
IoBuffer buffer = Baseline.createBuffer(size);
IoBuffer buffer = createBuffer(size);
buffer.put(stfFilename.getBytes());
buffer.putInt(spacer);
buffer.put(stfName.getBytes());
+16 -10
View File
@@ -27,6 +27,8 @@ import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import engine.resources.common.Utilities;
public class StringUtilities {
final protected static char[] hexArray = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
@@ -166,16 +168,20 @@ public class StringUtilities {
}
public static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
int v;
for ( int j = 0; j < bytes.length; j++ ) {
v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
char[] hexChars = new char[bytes.length * 2];
int v;
for ( int j = 0; j < bytes.length; j++ ) {
v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
public static void printBytes(byte[] bytes) {
System.out.println(Utilities.getHexString(bytes));
}
}
+1 -4
View File
@@ -22,9 +22,6 @@
package resources.common;
import java.io.UnsupportedEncodingException;
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import com.sleepycat.persist.model.Persistent;
@@ -64,7 +61,7 @@ public final class UString extends Delta {
public byte[] getBytes() {
synchronized(objectMutex) {
try {
return IoBuffer.allocate(4 + string.length(), false).order(ByteOrder.LITTLE_ENDIAN).putInt(string.length()).put(string.getBytes("UTF-16LE")).flip().array();
return createBuffer(4 + (string.length() * 2)).putInt(string.length()).put(string.getBytes("UTF-16LE")).flip().array();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return new byte[] { 0x00, 0x00, 0x00, 0x00 };
@@ -21,15 +21,13 @@
******************************************************************************/
package resources.gcw;
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import com.sleepycat.persist.model.Persistent;
import resources.objects.Delta;
@Persistent
@Persistent(version=0)
public class CurrentServerGCWZoneHistory extends Delta implements Cloneable {
private int lastUpdateTime;
@@ -40,6 +38,10 @@ public class CurrentServerGCWZoneHistory extends Delta implements Cloneable {
this.lastUpdateTime = zone.getLastUpdateTime();
}
public CurrentServerGCWZoneHistory() {
}
public int getLastUpdateTime() {
synchronized(objectMutex) {
return lastUpdateTime;
@@ -54,7 +56,7 @@ public class CurrentServerGCWZoneHistory extends Delta implements Cloneable {
public byte[] getBytes() {
synchronized(objectMutex) {
IoBuffer buffer = bufferPool.allocate((8), false).order(ByteOrder.LITTLE_ENDIAN);
IoBuffer buffer = createBuffer(8);
buffer.putInt(lastUpdateTime);
buffer.putInt(percent);
return buffer.array();
@@ -23,7 +23,6 @@ package resources.gcw;
import java.math.BigDecimal;
import java.math.MathContext;
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
@@ -33,7 +32,7 @@ import engine.resources.scene.Point2D;
import resources.objects.Delta;
@Persistent
@Persistent(version=0)
public class CurrentServerGCWZonePercent extends Delta implements Cloneable {
private Point2D position;
@@ -53,6 +52,10 @@ public class CurrentServerGCWZonePercent extends Delta implements Cloneable {
this.percent = new BigDecimal("50.0", MathContext.DECIMAL128);
}
public CurrentServerGCWZonePercent() {
}
public Point2D getPosition() {
synchronized(objectMutex) {
return position.clone();
@@ -148,7 +151,7 @@ public class CurrentServerGCWZonePercent extends Delta implements Cloneable {
public byte[] getBytes() {
synchronized(objectMutex) {
IoBuffer buffer = bufferPool.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN);
IoBuffer buffer = createBuffer(4);
buffer.putInt(percent.intValue());
return buffer.array();
}
@@ -21,15 +21,13 @@
******************************************************************************/
package resources.gcw;
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import com.sleepycat.persist.model.Persistent;
import resources.objects.Delta;
@Persistent
@Persistent(version=0)
public class OtherServerGCWZonePercent extends Delta implements Cloneable {
private String zone = "";
@@ -39,6 +37,10 @@ public class OtherServerGCWZonePercent extends Delta implements Cloneable {
this.zone = zone;
}
public OtherServerGCWZonePercent() {
}
public String getZone() {
synchronized(objectMutex) {
return zone;
@@ -60,7 +62,7 @@ public class OtherServerGCWZonePercent extends Delta implements Cloneable {
public byte[] getBytes() {
synchronized(objectMutex) {
IoBuffer buffer = bufferPool.allocate((2 + zone.length() + 4), false).order(ByteOrder.LITTLE_ENDIAN);
IoBuffer buffer = createBuffer((2 + zone.length() + 4));
buffer.put(getAsciiString(zone));
buffer.putInt(percent);
return buffer.array();
+15 -7
View File
@@ -21,15 +21,17 @@
******************************************************************************/
package resources.guild;
import java.nio.ByteOrder;
import java.util.List;
import org.apache.mina.core.buffer.IoBuffer;
import com.sleepycat.persist.model.Persistent;
import resources.objects.Delta;
import engine.resources.objects.SWGObject;
@Persistent(version=0)
public class Guild extends Delta {
private int id;
@@ -46,6 +48,10 @@ public class Guild extends Delta {
this.members.add(leader);
}
public Guild() {
}
public int getId() {
synchronized(objectMutex) {
return id;
@@ -83,17 +89,19 @@ public class Guild extends Delta {
}
public String getString() {
synchronized(objectMutex) {
return (Integer.toString(id) + ":" + abbreviation);
}
return (Integer.toString(getId()) + ":" + getAbbreviation());
}
public SWGObject getLeader() {
return leader;
synchronized(objectMutex) {
return leader;
}
}
public void setLeader(SWGObject leader) {
this.leader = leader;
synchronized(objectMutex) {
this.leader = leader;
}
}
public List<SWGObject> getMembers() {
@@ -102,7 +110,7 @@ public class Guild extends Delta {
public byte[] getBytes() {
synchronized(objectMutex) {
IoBuffer buffer = bufferPool.allocate((getString().length() + 2), false).order(ByteOrder.LITTLE_ENDIAN);
IoBuffer buffer = createBuffer((getString().length() + 2));
buffer.put(getAsciiString(getString()));
return buffer.array();
}
+16 -4
View File
@@ -22,19 +22,27 @@
package resources.objects;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.buffer.SimpleBufferAllocator;
import com.sleepycat.persist.model.NotPersistent;
import com.sleepycat.persist.model.Persistent;
import resources.common.StringUtilities;
@Persistent
public abstract class Delta implements IDelta {
public Delta() { }
@NotPersistent
protected final Object objectMutex = new Object();
public SimpleBufferAllocator bufferPool = new SimpleBufferAllocator();
@NotPersistent
private static SimpleBufferAllocator bufferPool = new SimpleBufferAllocator();
public Delta() {
}
protected String getAsciiString(ByteBuffer buffer) {
return StringUtilities.getAsciiString(buffer);
@@ -56,4 +64,8 @@ public abstract class Delta implements IDelta {
return ((byte) ((variable) ? 1 : 0));
}
public static IoBuffer createBuffer(int size) {
return bufferPool.allocate(size, false).order(ByteOrder.LITTLE_ENDIAN);
}
}
@@ -97,7 +97,8 @@ public class CreatureMessageBuilder extends ObjectMessageBuilder {
buffer.put(getAsciiString(creature.getStfName()));
if (creature.getCustomName() == null) { creature.setCustomName(""); }//Not all CreatureObjects have CustomName (Shuttles)
buffer.put(getUnicodeString(creature.getCustomName()));
buffer.putInt(0x000F4240); // volume
// buffer.putInt(0x000F4240); // volume
buffer.putInt(1);
buffer.putInt(CRC.StringtoCRC(creature.getFaction()));
buffer.putInt(creature.getFactionStatus());
@@ -110,11 +111,11 @@ public class CreatureMessageBuilder extends ObjectMessageBuilder {
buffer.putShort((short) customizationData.length);
buffer.put(customizationData);
}
buffer.putInt(1);
//buffer.putInt(1);
buffer.putInt(0); // TANO Data
buffer.putInt(0);
// buffer.putInt(creature.getOptionsBitmask()); // 0x80 = Player, 0x08 = Quest NPC,
buffer.putInt(0x80);
buffer.putInt(creature.getOptionsBitmask()); // 0x80 = Player, 0x08 = Quest NPC,
//buffer.putInt(0x80);
buffer.putInt(creature.getIncapTimer());
buffer.putInt(0);
buffer.putInt(0x3A98);
@@ -126,8 +127,8 @@ public class CreatureMessageBuilder extends ObjectMessageBuilder {
buffer.putLong(creature.getOwnerId());
float height = creature.getHeight();
if (height < 0.7 || height > 1.5)
height = 1;
//if (height < 0.7 || height > 1.5)
// height = 1;
buffer.putFloat(height);
buffer.putInt(0); // battle fatigue
buffer.putLong(creature.getStateBitmask());
@@ -296,7 +297,7 @@ public class CreatureMessageBuilder extends ObjectMessageBuilder {
for(SWGObject obj : creature.getEquipmentList().get()) {
if(obj instanceof TangibleObject) {
if(obj instanceof TangibleObject && !(obj instanceof WeaponObject)) {
TangibleObject tangible = (TangibleObject) obj;
if(tangible.getCustomization() == null || tangible.getCustomization().length == 0) {
buffer.putShort((short) 0);

Some files were not shown because too many files have changed in this diff Show More