From 164ed38fc4559a0b85b038fc79b9adc07957eded Mon Sep 17 00:00:00 2001 From: CharonInferar Date: Wed, 21 May 2014 18:50:02 +0200 Subject: [PATCH] Added imperial outpost, fixed visibility issue - Added force crystal hunter's cave - Added imperial outpost NPCs - Fixed creature visibility while mounted - Tweaked some spawn areas - Debugged some spawn issues --- options.cfg | 1 + scripts/commands/kneel.py | 45 +------------------ scripts/mobiles/dantooine/dark_adept.py | 3 -- .../dantooine/dark_force_crystal_hunter.py | 1 - scripts/mobiles/dantooine/dark_jedi_knight.py | 3 -- scripts/mobiles/dantooine/dark_jedi_master.py | 3 -- .../force_sensitive_crypt_crawler.py | 1 - .../dantooine/force_sensitive_renegade.py | 1 - .../untrained_wielder_of_the_dark_side.py | 1 - .../mobiles/dynamicgroups/frenzied_graul_1.py | 6 +-- .../imperial/eow_fbase_imperial_corporal.py | 38 ++++++++++++++++ .../imperial/eow_fbase_stormtrooper.py | 38 ++++++++++++++++ .../spawnareas/dantooine_central_dyn_1.py | 2 +- .../spawnareas/dantooine_central_dyn_2.py | 2 +- .../spawnareas/dantooine_east_dyn_1.py | 2 +- .../spawnareas/dantooine_east_dyn_2.py | 2 +- .../spawnareas/dantooine_east_dyn_3.py | 2 +- .../spawnareas/dantooine_imperial_op_lair.py | 2 +- .../spawnareas/dantooine_mining_lair.py | 2 +- .../spawnareas/dantooine_north_dyn_1.py | 2 +- .../spawnareas/dantooine_north_dyn_2.py | 2 +- .../spawnareas/dantooine_north_dyn_3.py | 2 +- .../mobiles/spawnareas/dantooine_nw_dyn_1.py | 2 +- .../spawnareas/dantooine_pirate_lair.py | 2 +- .../spawnareas/dantooine_south_dyn_1.py | 2 +- .../spawnareas/dantooine_south_dyn_2.py | 2 +- .../mobiles/spawnareas/dantooine_sw_dyn_1.py | 2 +- .../spawnareas/dantooine_west_dyn_1.py | 2 +- .../spawnareas/force_sensitives_dynamic_1.py | 2 +- .../dantooine/force_crystal_hunters_cave.py | 18 +++++--- .../dantooine/imperial_outpost.py | 25 +++++++++-- src/services/DevService.java | 27 +++++------ src/services/LootService.java | 2 +- src/services/SimulationService.java | 27 +++++++++-- src/services/TerrainService.java | 18 ++++++-- src/services/spawn/DynamicSpawnArea.java | 26 +++++++---- src/services/spawn/LairSpawnArea.java | 12 +++-- src/services/spawn/SpawnService.java | 8 +++- 38 files changed, 211 insertions(+), 127 deletions(-) create mode 100644 scripts/mobiles/generic/faction/imperial/eow_fbase_imperial_corporal.py create mode 100644 scripts/mobiles/generic/faction/imperial/eow_fbase_stormtrooper.py diff --git a/options.cfg b/options.cfg index ac85b4ef..03abf4cf 100644 --- a/options.cfg +++ b/options.cfg @@ -1,5 +1,6 @@ LOAD.SNAPSHOT_OBJECTS=1 LOAD.BUILDOUT_OBJECTS=1 +#LOAD.BUILDOUT_ONLY_FOR="dantooine" LOAD.RESOURCE.SYSTEM=1 # Misc diff --git a/scripts/commands/kneel.py b/scripts/commands/kneel.py index 5483c059..77bec3ee 100644 --- a/scripts/commands/kneel.py +++ b/scripts/commands/kneel.py @@ -1,53 +1,10 @@ import sys -from engine.resources.scene import Point3D -from resources.common import MathUtilities def setup(): return def run(core, actor, target, commandString): - - #actor.sendSystemMessage('CellNumber: ' + str(actor.getContainer().getObjectID()), 0) - actor.sendSystemMessage('x: ' + str(actor.getPosition().x) , 0) - actor.sendSystemMessage('y: ' + str(actor.getPosition().y) , 0) - actor.sendSystemMessage('z: ' + str(actor.getPosition().z) , 0) - actor.sendSystemMessage('qy: ' + str(actor.getOrientation().y) , 0) - actor.sendSystemMessage('qw: ' + str(actor.getOrientation().w) , 0) - actor.sendSystemMessage('targetID: ' + str(actor.getTargetId()) , 0) # 200336 - - stcSvc = core.staticService - #hunter1 = stcSvc.spawnObject('force_sensitive_crypt_crawler', 'dantooine', long(8535484), float(26), float(-41), float(-68), float(2.77), float(1.82)) - #hunter2 = stcSvc.spawnObject('untrained_wielder_of_the_dark_side', 'dantooine', long(8535484), float(23), float(-41), float(-65), float(1.52), float(2.94)) - #hunter3 = stcSvc.spawnObject('untrained_wielder_of_the_dark_side', 'dantooine', long(8535484), float(47), float(-48), float(-65), float(0.72), float(-0.68)) - #hunter4 = stcSvc.spawnObject('untrained_wielder_of_the_dark_side', 'dantooine', long(8535484), float(49.12), float(-47.48), float(-13.41), float(1), float(-0.05)) - #hunter5 = stcSvc.spawnObject('dark_force_crystal_hunter', 'dantooine', long(8535485), float(93.10), float(-61.87), float(-14.25), float(-0.7), float(0.7)) - #hunter6 = stcSvc.spawnObject('force_sensitive_crypt_crawler', 'dantooine', long(8535485), float(62.2), float(-69.0), float(-37.8), float(0.68), float(0.72)) - #hunter7 = stcSvc.spawnObject('dark_force_crystal_hunter', 'dantooine', long(8535484), float(52.14), float(-67.8), float(-42.9), float(0.51), float(0.86)) - #hunter8 = stcSvc.spawnObject('force_sensitive_crypt_crawler', 'dantooine', long(8535486), float(84.94), float(-77.09), float(-63.28), float(-0.19), float(0.98)) - #hunter9 = stcSvc.spawnObject('force_sensitive_crypt_crawler', 'dantooine', long(8535486), float(65.30), float(-76.16), float(-70.15), float(0.38), float(0.92)) - #hunter10 = stcSvc.spawnObject('untrained_wielder_of_the_dark_side', 'dantooine', long(8535486), float(65.636), float(-76.87), float(-81.40), float(-0.123), float(0.99)) - #hunter11 = stcSvc.spawnObject('dark_force_crystal_hunter', 'dantooine', long(8535487), float(80.34), float(-77.29), float(-92.77), float(-0.2), float(0.97)) - #hunter12 = stcSvc.spawnObject('dark_force_crystal_hunter', 'dantooine', long(8535487), float(80.34), float(-77.29), float(-92.77), float(-0.2), float(0.97)) - - objSvc = core.objectService - #magSeal1 = objSvc.getObject(200336-1); - magSeal1 = objSvc.getObject(200335); - actor.sendSystemMessage('getTemplate: ' + magSeal1.getTemplate() , 0) # 200336 - lootPoolNames_1 = ['Junk'] - lootPoolChances_1 = [100] - lootGroupChance_1 = 90 - magSeal1.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) - - #magSeal1Inv = magSeal1.getSlottedObject("inventory"); - #lotSvc.getContainerContent() - #magSeal1Inv. - - - - lotSvc = core.lootService - lotSvc.handleContainer(actor,200335,'Junk','dantooine') - - + if actor.getPosture() == 13 or actor.getPosture() == 14: return diff --git a/scripts/mobiles/dantooine/dark_adept.py b/scripts/mobiles/dantooine/dark_adept.py index 411492dc..7598e097 100644 --- a/scripts/mobiles/dantooine/dark_adept.py +++ b/scripts/mobiles/dantooine/dark_adept.py @@ -20,10 +20,7 @@ def addTemplate(core): mobileTemplate.setSocialGroup('dark jedi') mobileTemplate.setAssistRange(12) mobileTemplate.setRespawnTime(300) -<<<<<<< HEAD -======= mobileTemplate.setOptionsBitmask(192) ->>>>>>> origin/master templates = Vector() diff --git a/scripts/mobiles/dantooine/dark_force_crystal_hunter.py b/scripts/mobiles/dantooine/dark_force_crystal_hunter.py index fc3e7538..60cbdde3 100644 --- a/scripts/mobiles/dantooine/dark_force_crystal_hunter.py +++ b/scripts/mobiles/dantooine/dark_force_crystal_hunter.py @@ -7,7 +7,6 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('dark_force_crystal_hunter') - mobileTemplate.setLevel(90) mobileTemplate.setMinLevel(60) mobileTemplate.setMaxLevel(69) mobileTemplate.setDifficulty(0) diff --git a/scripts/mobiles/dantooine/dark_jedi_knight.py b/scripts/mobiles/dantooine/dark_jedi_knight.py index cb97b18e..b083645b 100644 --- a/scripts/mobiles/dantooine/dark_jedi_knight.py +++ b/scripts/mobiles/dantooine/dark_jedi_knight.py @@ -20,10 +20,7 @@ def addTemplate(core): mobileTemplate.setSocialGroup('dark jedi') mobileTemplate.setAssistRange(12) mobileTemplate.setRespawnTime(300) -<<<<<<< HEAD -======= mobileTemplate.setOptionsBitmask(192) ->>>>>>> origin/master templates = Vector() templates.add('object/mobile/shared_dressed_dark_jedi_male_human_01.iff') diff --git a/scripts/mobiles/dantooine/dark_jedi_master.py b/scripts/mobiles/dantooine/dark_jedi_master.py index c9278439..29ca5598 100644 --- a/scripts/mobiles/dantooine/dark_jedi_master.py +++ b/scripts/mobiles/dantooine/dark_jedi_master.py @@ -18,10 +18,7 @@ def addTemplate(core): mobileTemplate.setSocialGroup('dark jedi') mobileTemplate.setAssistRange(12) mobileTemplate.setRespawnTime(300) -<<<<<<< HEAD -======= mobileTemplate.setOptionsBitmask(192) ->>>>>>> origin/master templates = Vector() templates.add('object/mobile/shared_dressed_dark_jedi_master_female_twk_01.iff') diff --git a/scripts/mobiles/dantooine/force_sensitive_crypt_crawler.py b/scripts/mobiles/dantooine/force_sensitive_crypt_crawler.py index edbbf852..2431c898 100644 --- a/scripts/mobiles/dantooine/force_sensitive_crypt_crawler.py +++ b/scripts/mobiles/dantooine/force_sensitive_crypt_crawler.py @@ -7,7 +7,6 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('eow_force_sensitive_crypt_crawler') - mobileTemplate.setLevel(90) mobileTemplate.setMinLevel(60) mobileTemplate.setMaxLevel(70) mobileTemplate.setDifficulty(0) diff --git a/scripts/mobiles/dantooine/force_sensitive_renegade.py b/scripts/mobiles/dantooine/force_sensitive_renegade.py index a01595a7..8005b9d9 100644 --- a/scripts/mobiles/dantooine/force_sensitive_renegade.py +++ b/scripts/mobiles/dantooine/force_sensitive_renegade.py @@ -7,7 +7,6 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('force_sensitive_renegade') - mobileTemplate.setLevel(90) mobileTemplate.setMinLevel(61) mobileTemplate.setMaxLevel(69) mobileTemplate.setDifficulty(0) diff --git a/scripts/mobiles/dantooine/untrained_wielder_of_the_dark_side.py b/scripts/mobiles/dantooine/untrained_wielder_of_the_dark_side.py index a6effdb7..de77e40a 100644 --- a/scripts/mobiles/dantooine/untrained_wielder_of_the_dark_side.py +++ b/scripts/mobiles/dantooine/untrained_wielder_of_the_dark_side.py @@ -7,7 +7,6 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('untrained_wielder_of_the_dark_side') - mobileTemplate.setLevel(90) mobileTemplate.setMinLevel(61) mobileTemplate.setMaxLevel(70) mobileTemplate.setDifficulty(0) diff --git a/scripts/mobiles/dynamicgroups/frenzied_graul_1.py b/scripts/mobiles/dynamicgroups/frenzied_graul_1.py index 87f32125..dfe2dac0 100644 --- a/scripts/mobiles/dynamicgroups/frenzied_graul_1.py +++ b/scripts/mobiles/dynamicgroups/frenzied_graul_1.py @@ -7,13 +7,11 @@ from services.spawn import MobileTemplate def addDynamicGroup(core): dynamicGroup = DynamicSpawnGroup() mobileTemplates = Vector() - mobileTemplates.add('mammoth_thune') - mobileTemplates.add('thune') - mobileTemplates.add('thune_herd_leader') + mobileTemplates.add('frenzied_graul') dynamicGroup.setMobiles(mobileTemplates) dynamicGroup.setGroupMembersNumber(-3) dynamicGroup.setName('thunes_1') dynamicGroup.setMaxSpawns(-1) dynamicGroup.setMinSpawnDistance(150) - core.spawnService.addDynamicGroup('thunes_1', dynamicGroup) + core.spawnService.addDynamicGroup('frenzied_graul', dynamicGroup) return diff --git a/scripts/mobiles/generic/faction/imperial/eow_fbase_imperial_corporal.py b/scripts/mobiles/generic/faction/imperial/eow_fbase_imperial_corporal.py new file mode 100644 index 00000000..abb99e06 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/eow_fbase_imperial_corporal.py @@ -0,0 +1,38 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('eow_fbase_imperial_corporal') + mobileTemplate.setLevel(90) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + #mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_imperial_captain_m.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e11.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + #mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + #mobileTemplate.setDefaultAttack('rangedshot') + #mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('eow_fbase_imperial_corporal', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/eow_fbase_stormtrooper.py b/scripts/mobiles/generic/faction/imperial/eow_fbase_stormtrooper.py new file mode 100644 index 00000000..6e229c03 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/eow_fbase_stormtrooper.py @@ -0,0 +1,38 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('eow_fbase_stormtrooper') + mobileTemplate.setLevel(90) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + #mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_m.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e11.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + #mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + #mobileTemplate.setDefaultAttack('rangedshot') + #mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('eow_fbase_stormtrooper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/spawnareas/dantooine_central_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_central_dyn_1.py index 3b07695b..60f3233e 100644 --- a/scripts/mobiles/spawnareas/dantooine_central_dyn_1.py +++ b/scripts/mobiles/spawnareas/dantooine_central_dyn_1.py @@ -8,5 +8,5 @@ def addSpawnArea(core): dynamicGroups.add('thunes_1') dynamicGroups.add('kunga_central_group_1') dynamicGroups.add('huurton_group_1') - core.spawnService.addDynamicSpawnArea(dynamicGroups, 1567, -1585, 2293, 'dantooine') + core.spawnService.addDynamicSpawnArea(dynamicGroups, 1064, -839, 2273, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_central_dyn_2.py b/scripts/mobiles/spawnareas/dantooine_central_dyn_2.py index 78a77203..30dc142b 100644 --- a/scripts/mobiles/spawnareas/dantooine_central_dyn_2.py +++ b/scripts/mobiles/spawnareas/dantooine_central_dyn_2.py @@ -8,5 +8,5 @@ def addSpawnArea(core): dynamicGroups.add('piket_longhorn_group_1') dynamicGroups.add('huurton_group_2') dynamicGroups.add('kunga_central_group_1') - core.spawnService.addDynamicSpawnArea(dynamicGroups, -1607, 32, 2129, 'dantooine') + core.spawnService.addDynamicSpawnArea(dynamicGroups, -2539, 716, 2109, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_east_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_east_dyn_1.py index 5bd67259..ad103142 100644 --- a/scripts/mobiles/spawnareas/dantooine_east_dyn_1.py +++ b/scripts/mobiles/spawnareas/dantooine_east_dyn_1.py @@ -5,5 +5,5 @@ from java.util import Vector def addSpawnArea(core): dynamicGroups = Vector() dynamicGroups.add('voritors_east_group_1') - core.spawnService.addDynamicSpawnArea(dynamicGroups, 6236, -2015, 2437, 'dantooine') + core.spawnService.addDynamicSpawnArea(dynamicGroups, 5713, -1146, 2416, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_east_dyn_2.py b/scripts/mobiles/spawnareas/dantooine_east_dyn_2.py index 82a7ce51..15e6bece 100644 --- a/scripts/mobiles/spawnareas/dantooine_east_dyn_2.py +++ b/scripts/mobiles/spawnareas/dantooine_east_dyn_2.py @@ -6,5 +6,5 @@ def addSpawnArea(core): dynamicGroups = Vector() dynamicGroups.add('voritors_east_group_1') dynamicGroups.add('jantas_nw_group_1') - core.spawnService.addDynamicSpawnArea(dynamicGroups, 5581, -6603, 2560, 'dantooine') + core.spawnService.addDynamicSpawnArea(dynamicGroups, 5324, -5775, 2560, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_east_dyn_3.py b/scripts/mobiles/spawnareas/dantooine_east_dyn_3.py index 9661ae60..51e027c3 100644 --- a/scripts/mobiles/spawnareas/dantooine_east_dyn_3.py +++ b/scripts/mobiles/spawnareas/dantooine_east_dyn_3.py @@ -7,5 +7,5 @@ def addSpawnArea(core): dynamicGroups.add('piket_plains_walker_group') dynamicGroups.add('quenker_relic_reaper_group') dynamicGroups.add('thune_group_2') - core.spawnService.addDynamicSpawnArea(dynamicGroups, 4106, 646, 2682, 'dantooine') + core.spawnService.addDynamicSpawnArea(dynamicGroups, 3461, 1331, 2662, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_imperial_op_lair.py b/scripts/mobiles/spawnareas/dantooine_imperial_op_lair.py index 40d8b8ee..fa814fba 100644 --- a/scripts/mobiles/spawnareas/dantooine_imperial_op_lair.py +++ b/scripts/mobiles/spawnareas/dantooine_imperial_op_lair.py @@ -2,5 +2,5 @@ import sys def addSpawnArea(core): - core.spawnService.addLairSpawnArea('mixed_lair_group_1', -3450, -2793, 1024, 'dantooine') + core.spawnService.addLairSpawnArea('mixed_lair_group_1', -4014, -1966, 1024, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_mining_lair.py b/scripts/mobiles/spawnareas/dantooine_mining_lair.py index 1ef6d3ef..f3fba3f0 100644 --- a/scripts/mobiles/spawnareas/dantooine_mining_lair.py +++ b/scripts/mobiles/spawnareas/dantooine_mining_lair.py @@ -2,5 +2,5 @@ import sys def addSpawnArea(core): - core.spawnService.addLairSpawnArea('mixed_lair_group_1', 748, 1711, 1024, 'dantooine') + core.spawnService.addLairSpawnArea('mixed_lair_group_1', 0, 2355, 1024, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_north_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_north_dyn_1.py index 07f70f0c..cb16dfb9 100644 --- a/scripts/mobiles/spawnareas/dantooine_north_dyn_1.py +++ b/scripts/mobiles/spawnareas/dantooine_north_dyn_1.py @@ -7,5 +7,5 @@ def addSpawnArea(core): dynamicGroups.add('force_sensitives_wild_1') dynamicGroups.add('graul_mauler_nw_group_1') dynamicGroups.add('voritors_wild_1') - core.spawnService.addDynamicSpawnArea(dynamicGroups, 891, 6135, 1986, 'dantooine') + core.spawnService.addDynamicSpawnArea(dynamicGroups, 61, 6615, 1966, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_north_dyn_2.py b/scripts/mobiles/spawnareas/dantooine_north_dyn_2.py index e0ad6fe4..9a2115ba 100644 --- a/scripts/mobiles/spawnareas/dantooine_north_dyn_2.py +++ b/scripts/mobiles/spawnareas/dantooine_north_dyn_2.py @@ -8,5 +8,5 @@ def addSpawnArea(core): dynamicGroups.add('quenker_group_south_1') dynamicGroups.add('mokk_group_1') dynamicGroups.add('bol_group_1') - core.spawnService.addDynamicSpawnArea(dynamicGroups, -501, 3104, 1085, 'dantooine') + core.spawnService.addDynamicSpawnArea(dynamicGroups, -1433, 3809, 1064, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_north_dyn_3.py b/scripts/mobiles/spawnareas/dantooine_north_dyn_3.py index 1a8df597..89083ea3 100644 --- a/scripts/mobiles/spawnareas/dantooine_north_dyn_3.py +++ b/scripts/mobiles/spawnareas/dantooine_north_dyn_3.py @@ -8,5 +8,5 @@ def addSpawnArea(core): dynamicGroups.add('huurton_group_1') dynamicGroups.add('bol_group_1') dynamicGroups.add('quenker_group_south_1') - core.spawnService.addDynamicSpawnArea(dynamicGroups, 1710, 3739, 1208, 'dantooine') + core.spawnService.addDynamicSpawnArea(dynamicGroups, 778, 4280, 1187, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_nw_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_nw_dyn_1.py index 8f92dba8..2a53c883 100644 --- a/scripts/mobiles/spawnareas/dantooine_nw_dyn_1.py +++ b/scripts/mobiles/spawnareas/dantooine_nw_dyn_1.py @@ -7,5 +7,5 @@ def addSpawnArea(core): dynamicGroups.add('voritor_nw_group_1') dynamicGroups.add('graul_mauler_nw_group_1') dynamicGroups.add('jantas_nw_group_1') - core.spawnService.addDynamicSpawnArea(dynamicGroups, -4064, 4497, 3235, 'dantooine') + core.spawnService.addDynamicSpawnArea(dynamicGroups, -4751, 4935, 3215, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_pirate_lair.py b/scripts/mobiles/spawnareas/dantooine_pirate_lair.py index a9f935e9..ef872c08 100644 --- a/scripts/mobiles/spawnareas/dantooine_pirate_lair.py +++ b/scripts/mobiles/spawnareas/dantooine_pirate_lair.py @@ -2,5 +2,5 @@ import sys def addSpawnArea(core): - core.spawnService.addLairSpawnArea('mixed_lair_group_1', 2017, -6869, 1024, 'dantooine') + core.spawnService.addLairSpawnArea('mixed_lair_group_1', 1699, -6471, 1024, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_south_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_south_dyn_1.py index bea60b2e..a0720f13 100644 --- a/scripts/mobiles/spawnareas/dantooine_south_dyn_1.py +++ b/scripts/mobiles/spawnareas/dantooine_south_dyn_1.py @@ -6,5 +6,5 @@ def addSpawnArea(core): dynamicGroups = Vector() dynamicGroups.add('huurton_group_1') dynamicGroups.add('quenker_group_south_1') - core.spawnService.addDynamicSpawnArea(dynamicGroups, 2079, -4268, 2232, 'dantooine') + core.spawnService.addDynamicSpawnArea(dynamicGroups, 1904, -3624, 2211, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_south_dyn_2.py b/scripts/mobiles/spawnareas/dantooine_south_dyn_2.py index 523d03d2..15810219 100644 --- a/scripts/mobiles/spawnareas/dantooine_south_dyn_2.py +++ b/scripts/mobiles/spawnareas/dantooine_south_dyn_2.py @@ -10,5 +10,5 @@ def addSpawnArea(core): dynamicGroups.add('thune_group_2') dynamicGroups.add('bol_group_1') dynamicGroups.add('voritors_wild_1') - core.spawnService.addDynamicSpawnArea(dynamicGroups, -1586, -7688, 2621, 'dantooine') + core.spawnService.addDynamicSpawnArea(dynamicGroups, -2109, -7045, 2600, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_sw_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_sw_dyn_1.py index 90a299b4..e68d67d8 100644 --- a/scripts/mobiles/spawnareas/dantooine_sw_dyn_1.py +++ b/scripts/mobiles/spawnareas/dantooine_sw_dyn_1.py @@ -8,5 +8,5 @@ def addSpawnArea(core): dynamicGroups.add('voritors_wild_1') dynamicGroups.add('quenker_relic_reaper_group') dynamicGroups.add('graul_mauler_nw_group_1') - core.spawnService.addDynamicSpawnArea(dynamicGroups, -5354, -4759, 2211, 'dantooine') + core.spawnService.addDynamicSpawnArea(dynamicGroups, -5898, -4218, 2191, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_west_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_west_dyn_1.py index dd18bea0..172cdf5e 100644 --- a/scripts/mobiles/spawnareas/dantooine_west_dyn_1.py +++ b/scripts/mobiles/spawnareas/dantooine_west_dyn_1.py @@ -7,5 +7,5 @@ def addSpawnArea(core): dynamicGroups.add('kunga_central_group_1') dynamicGroups.add('piket_longhorn_group_1') dynamicGroups.add('thunes_1') - core.spawnService.addDynamicSpawnArea(dynamicGroups, -5682, -540, 1986, 'dantooine') + core.spawnService.addDynamicSpawnArea(dynamicGroups, -6369, -102, 1966, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/force_sensitives_dynamic_1.py b/scripts/mobiles/spawnareas/force_sensitives_dynamic_1.py index e7528e13..dca3c08d 100644 --- a/scripts/mobiles/spawnareas/force_sensitives_dynamic_1.py +++ b/scripts/mobiles/spawnareas/force_sensitives_dynamic_1.py @@ -6,5 +6,5 @@ def addSpawnArea(core): dynamicGroups = Vector() dynamicGroups.add('force_sensitives_wild_1') dynamicGroups.add('dark_jedi_wild_1') - core.spawnService.addDynamicSpawnArea(dynamicGroups, 5233, 4722, 2580, 'dantooine') + core.spawnService.addDynamicSpawnArea(dynamicGroups, 4362, 5488, 2560, 'dantooine') return diff --git a/scripts/static_spawns/dantooine/force_crystal_hunters_cave.py b/scripts/static_spawns/dantooine/force_crystal_hunters_cave.py index 0183ffd2..e2b6b0e1 100644 --- a/scripts/static_spawns/dantooine/force_crystal_hunters_cave.py +++ b/scripts/static_spawns/dantooine/force_crystal_hunters_cave.py @@ -17,10 +17,14 @@ def addPlanetSpawns(core, planet): hunter11 = stcSvc.spawnObject('dark_force_crystal_hunter', 'dantooine', long(8535487), float(80.34), float(-77.29), float(-92.77), float(-0.2), float(0.97)) hunter12 = stcSvc.spawnObject('dark_force_crystal_hunter', 'dantooine', long(8535487), float(80.34), float(-77.29), float(-92.77), float(-0.2), float(0.97)) objSvc = core.objectService - magSeal1 = objSvc.getObject(200335); #(200336-1) - lootPoolNames_1 = ['Junk'] - lootPoolChances_1 = [100] - lootGroupChance_1 = 90 - magSeal1.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) - lotSvc = core.lootService - lotSvc.handleContainer(actor,200335,'Junk','dantooine') \ No newline at end of file + magSeal1 = objSvc.getObject(200335); #(200336-1) + if magSeal1 != None: + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 90 + magSeal1.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + lotSvc = core.lootService + lotSvc.handleContainer(200335,'Junk','dantooine') + + return + \ No newline at end of file diff --git a/scripts/static_spawns/dantooine/imperial_outpost.py b/scripts/static_spawns/dantooine/imperial_outpost.py index 85ab98ae..3a61692b 100644 --- a/scripts/static_spawns/dantooine/imperial_outpost.py +++ b/scripts/static_spawns/dantooine/imperial_outpost.py @@ -6,7 +6,26 @@ def addPlanetSpawns(core, planet): stcSvc = core.staticService objSvc = core.objectService - 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') - zefAndo.setOptionsBitmask(256) + stormtrooper1 = stcSvc.spawnObject('eow_fbase_stormtrooper', 'dantooine', long(0), float(-4211), float(3), float(-2384), float(0.011), float(0.999)) + stormtrooper2 = stcSvc.spawnObject('eow_fbase_stormtrooper', 'dantooine', long(0), float(-4212), float(3), float(-2384), float(0.011), float(0.999)) + stormtrooper3 = stcSvc.spawnObject('eow_fbase_stormtrooper', 'dantooine', long(0), float(-4211), float(3), float(-2386), float(0.011), float(0.999)) + stormtrooper4 = stcSvc.spawnObject('eow_fbase_stormtrooper', 'dantooine', long(0), float(-4212), float(3), float(-2386), float(0.011), float(0.999)) + stormtrooper5 = stcSvc.spawnObject('eow_fbase_stormtrooper', 'dantooine', long(0), float(-4212), float(3), float(-2388), float(0.011), float(0.999)) + + stormtrooper6 = stcSvc.spawnObject('eow_fbase_stormtrooper', 'dantooine', long(0), float(-4229), float(3), float(-2394), float(0.703), float(0.710)) + corporal1 = stcSvc.spawnObject('eow_fbase_imperial_corporal', 'dantooine', long(0), float(-4228), float(3), float(-2395), float(0.703), float(0.710)) + corporal2 = stcSvc.spawnObject('eow_fbase_imperial_corporal', 'dantooine', long(0), float(-4230), float(3), float(-2394), float(0.703), float(0.710)) + + recruiter1 = stcSvc.spawnObject('object/mobile/shared_dressed_imperial_officer_f.iff', 'dantooine', long(0), float(-4198), float(3), float(-2411), float(0.819), float(-0.572)) + + atst1 = stcSvc.spawnObject('object/mobile/shared_atst.iff', 'dantooine', long(0), float(-4291), float(3), float(-2433), float(0.819), float(-0.572)) + atst2 = stcSvc.spawnObject('object/mobile/shared_atst.iff', 'dantooine', long(0), float(-4154), float(3), float(-2383), float(0.264), float(0.964)) + + r5u0 = stcSvc.spawnObject('object/creature/npc/droid/shared_r4_base.iff', 'dantooine', long(0), float(-4231), float(3), float(-2363), float(0.264), float(0.964)) + r4h3 = stcSvc.spawnObject('object/creature/npc/droid/shared_r5_base.iff', 'dantooine', long(0), float(-4215), float(3), float(-2363), float(0.264), float(0.964)) + + commoner1 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_fat_human_male_01.iff', 'dantooine', long(0), float(-4224), float(3), float(-2366), float(0.264), float(0.964)) + commoner1.setOptionsBitmask(256) + commoner2 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_fat_human_female_01.iff', 'dantooine', long(0), float(-4238), float(3), float(-2365), float(0.264), float(0.964)) + commoner2.setOptionsBitmask(256) return diff --git a/src/services/DevService.java b/src/services/DevService.java index a43fdb5e..eb9db46c 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -88,11 +88,6 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 26, "Installations"); suiOptions.put((long) 110, "Survey Devices"); if(creature.getPlayerObject().getProfession().equals("bounty_hunter_1a")) suiOptions.put((long) 123, "Tracking Droids"); -<<<<<<< HEAD - if(creature.getClient().isGM()) suiOptions.put((long) 120, "House Deeds"); - if(creature.getClient().isGM()) suiOptions.put((long) 125, "Crafting Tools"); - if(creature.getClient().isGM()) suiOptions.put((long) 130, "Vehicle Deeds"); -======= if (creature.getClient().isGM()) { suiOptions.put((long) 120, "House Deeds"); suiOptions.put((long) 125, "Crafting Tools"); @@ -101,7 +96,6 @@ public class DevService implements INetworkDispatch { suiOptions.put((long) 140, "Guild Registry Device (PDA)"); } ->>>>>>> origin/master break; case 3: // [Items] Weapons suiOptions.put((long) 30, "Jedi Weapons"); @@ -148,17 +142,14 @@ public class DevService implements INetworkDispatch { case 11: // Locations suiOptions.put((long) 122, "Teleport to Jedi Ruins"); suiOptions.put((long) 124, "Teleport to Mos Eisley"); -<<<<<<< HEAD - suiOptions.put((long) 153, "Teleport to Force Crystal Hunter's Cave"); - suiOptions.put((long) 121, "Teleport to Sandbox City"); -======= if (creature.getClient().isGM()) { suiOptions.put((long) 164, "Teleport to Mining Outpost"); suiOptions.put((long) 165, "Teleport to Spawn Area #1"); suiOptions.put((long) 166, "Teleport to Imperial Op"); suiOptions.put((long) 167, "Teleport to Rebel Base "); + suiOptions.put((long) 153, "Teleport to Force Crystal Hunter's Cave"); + suiOptions.put((long) 121, "Teleport to Sandbox City"); } ->>>>>>> origin/master break; } @@ -1274,6 +1265,10 @@ public class DevService implements INetworkDispatch { case 166: core.simulationService.transferToPlanet(player, core.terrainService.getPlanetByName("dantooine"), new Point3D(-4211,18,-2349), player.getOrientation(), null); return; + + case 167: + core.simulationService.transferToPlanet(player, core.terrainService.getPlanetByName("dantooine"), new Point3D(-4211,18,-2349), player.getOrientation(), null); + return; case 123: TangibleObject arakydDroids = (TangibleObject) core.objectService.createObject("object/tangible/mission/shared_mission_bounty_droid_probot.iff", planet); @@ -1296,17 +1291,15 @@ public class DevService implements INetworkDispatch { inventory.add(swoopDeed); inventory.add(av21deed); return; -<<<<<<< HEAD - case 153: - Point3D position = new Point3D(-6222,1,7380); - core.simulationService.transferToPlanet(player, core.terrainService.getPlanetByName("dantooine"), position, player.getOrientation(), null); -======= case 140: TangibleObject guildRegistry = (TangibleObject) core.objectService.createObject("object/tangible/furniture/technical/shared_guild_registry_initial.iff", planet); inventory.add(guildRegistry); ->>>>>>> origin/master return; + + case 153: + Point3D position = new Point3D(-6222,1,7380); + core.simulationService.transferToPlanet(player, core.terrainService.getPlanetByName("dantooine"), position, player.getOrientation(), null); } } }); diff --git a/src/services/LootService.java b/src/services/LootService.java index 1cd5d3a3..8ee55da3 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -1310,7 +1310,7 @@ public class LootService implements INetworkDispatch { } - public void handleContainer(SWGObject actor, int containerID, String lootPool, String planetName){ + public void handleContainer(int containerID, String lootPool, String planetName){ long objectId = containerID + 0xFFFFFFFF; TangibleObject containerObject = (TangibleObject) core.objectService.getObject(objectId); diff --git a/src/services/SimulationService.java b/src/services/SimulationService.java index 53a0ddb5..bff3bb41 100644 --- a/src/services/SimulationService.java +++ b/src/services/SimulationService.java @@ -339,6 +339,8 @@ public class SimulationService implements INetworkDispatch { return; } + CreatureObject creature = (CreatureObject) client.getParent(); + CreatureObject object = (CreatureObject) client.getParent(); if (core.mountService.isMounted(object)) { @@ -358,8 +360,11 @@ public class SimulationService implements INetworkDispatch { move(object, oldPos.x, oldPos.z, newPos.x, newPos.z); Quaternion newOrientation = new Quaternion(dataTransform.getWOrientation(), dataTransform.getXOrientation(), dataTransform.getYOrientation(), dataTransform.getZOrientation()); object.setPosition(newPos); + creature.setPosition(newPos); object.setOrientation(newOrientation); + creature.setOrientation(newOrientation); object.setMovementCounter(dataTransform.getMovementCounter()); + creature.setMovementCounter(dataTransform.getMovementCounter()); } if(object.getContainer() != null) { object.getContainer()._remove(object); @@ -400,9 +405,25 @@ public class SimulationService implements INetworkDispatch { if(!updateAwareObjects.contains(obj) && obj != object && !object.getAwareObjects().contains(obj) && obj.getContainer() != object && obj.isInQuadtree()) { if(obj.getAttachment("bigSpawnRange") == null && obj.getWorldPosition().getDistance2D(newPos) > 200) continue; - object.makeAware(obj); - if(obj.getClient() != null) - obj.makeAware(object); + //object.makeAware(obj); + + if (object.getOption(Options.MOUNT)){ + CreatureObject owner = (CreatureObject) core.objectService.getObject(object.getOwnerId()); + owner.makeAware(obj); + } + else { + object.makeAware(obj); + } + + if(obj.getClient() != null){ + if (object.getOption(Options.MOUNT)){ + CreatureObject owner = (CreatureObject) core.objectService.getObject(object.getOwnerId()); + obj.makeAware(owner); + } + else { + obj.makeAware(object); + } + } } } diff --git a/src/services/TerrainService.java b/src/services/TerrainService.java index c8b3aaf5..e930ddd3 100644 --- a/src/services/TerrainService.java +++ b/src/services/TerrainService.java @@ -200,10 +200,20 @@ public class TerrainService { } if (loaded && config.getInt("LOAD.BUILDOUT_OBJECTS") > 0) { - try { - core.objectService.loadBuildoutObjects(planet); - } catch (InstantiationException | IllegalAccessException e) { - e.printStackTrace(); + if (! config.keyExists("LOAD.BUILDOUT_ONLY_FOR")){ + try { + core.objectService.loadBuildoutObjects(planet); + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + } else { + if (planet.getName().equals(config.getString("LOAD.BUILDOUT_ONLY_FOR"))){ + try { + core.objectService.loadBuildoutObjects(planet); + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + } } } diff --git a/src/services/spawn/DynamicSpawnArea.java b/src/services/spawn/DynamicSpawnArea.java index 0a9ed88a..597bc483 100644 --- a/src/services/spawn/DynamicSpawnArea.java +++ b/src/services/spawn/DynamicSpawnArea.java @@ -25,6 +25,7 @@ import java.util.Collections; import java.util.Random; import java.util.Vector; +import resources.datatables.Options; import resources.datatables.Posture; import main.NGECore; import net.engio.mbassy.listener.Handler; @@ -60,14 +61,14 @@ public class DynamicSpawnArea extends SpawnArea { SWGObject object = event.object; // ToDo: Mounted players must be handled too - System.out.println("Entering object " + object.getClass().getName()); + //System.out.println("Entering object " + object.getClass().getName()); if(object == null || !(object instanceof CreatureObject)) return; CreatureObject creature = (CreatureObject) object; - if(creature.getSlottedObject("ghost") == null) + if(creature.getSlottedObject("ghost") == null && !creature.getOption(Options.MOUNT)) return; creature.getEventBus().subscribe(this); @@ -121,7 +122,7 @@ public class DynamicSpawnArea extends SpawnArea { CreatureObject creature = (CreatureObject) object; - if(creature.getSlottedObject("ghost") == null) + if(creature.getSlottedObject("ghost") == null && !creature.getOption(Options.MOUNT)) return; creature.getEventBus().unsubscribe(this); @@ -133,12 +134,15 @@ public class DynamicSpawnArea extends SpawnArea { SWGObject object = event.object; - if(object == null || !(object instanceof CreatureObject) || object.getContainer() != null) + //if(object == null || !(object instanceof CreatureObject) || object.getContainer() != null) + // return; + // Mounts should not be excluded to trigger spawns as it was on live also + if(object == null || !(object instanceof CreatureObject)) return; CreatureObject creature = (CreatureObject) object; - - if(creature.getSlottedObject("ghost") == null) + //System.out.println("MOUNT " + creature.getOption(Options.MOUNT) + " name " + creature.getTemplate()); + if(creature.getSlottedObject("ghost") == null && !creature.getOption(Options.MOUNT)) return; if (spawnGroups==null){ @@ -162,7 +166,8 @@ public class DynamicSpawnArea extends SpawnArea { this.spawnGroup = spawnGroups.get(index); Vector groupMembers = new Vector(); - Point3D randomGroupPosition = getRandomPosition(creature.getWorldPosition(), 32, 100); + //Point3D randomGroupPosition = getRandomPosition(creature.getWorldPosition(), 32, 100); + Point3D randomGroupPosition = getRandomPosition(creature.getWorldPosition(), 32, spawnGroup.getMinSpawnDistance()+10); int spawnCount = spawnGroup.getGroupMembersNumber(); if (spawnCount<0){ int spawnCount2 = 1; @@ -296,6 +301,7 @@ public class DynamicSpawnArea extends SpawnArea { for(CreatureObject mobile : mobiles) { if(mobile.getWorldPosition().getDistance(randomPosition) < spawnGroup.getMinSpawnDistance() && ! groupMembers.contains(mobile)){ minDistViolated = true; // Distance to other nearby groups + //System.out.println("minDistViolated " + mobile.getWorldPosition().getDistance(randomPosition) + "mobile: " + mobile.getTemplate()); } } if (minDistViolated) @@ -318,7 +324,11 @@ public class DynamicSpawnArea extends SpawnArea { CreatureObject spawnedCreature = core.spawnService.spawnCreature(template, getPlanet().getName(), 0, randomPosition.x, randomPosition.y, randomPosition.z); if(spawnedCreature != null){ mobiles.add(spawnedCreature); - } else {System.out.println("Creature not spawned" + template);} + System.err.println("Creature ADDED " + spawnedCreature.getTemplate()); + } else + { + System.out.println("Creature not spawned" + template); + } return spawnedCreature; } diff --git a/src/services/spawn/LairSpawnArea.java b/src/services/spawn/LairSpawnArea.java index c0e7c296..165c53b8 100644 --- a/src/services/spawn/LairSpawnArea.java +++ b/src/services/spawn/LairSpawnArea.java @@ -29,6 +29,7 @@ import net.engio.mbassy.listener.Handler; import resources.common.collidables.AbstractCollidable; import resources.common.collidables.AbstractCollidable.EnterEvent; import resources.common.collidables.AbstractCollidable.ExitEvent; +import resources.datatables.Options; import resources.objects.creature.CreatureObject; import services.SimulationService.MoveEvent; import services.TerrainService; @@ -115,7 +116,7 @@ public class LairSpawnArea extends SpawnArea { CreatureObject creature = (CreatureObject) object; - if(creature.getSlottedObject("ghost") == null) + if(creature.getSlottedObject("ghost") == null && !creature.getOption(Options.MOUNT)) return; spawnLair(creature); @@ -134,7 +135,7 @@ public class LairSpawnArea extends SpawnArea { CreatureObject creature = (CreatureObject) object; - if(creature.getSlottedObject("ghost") == null) + if(creature.getSlottedObject("ghost") == null && !creature.getOption(Options.MOUNT)) return; creature.getEventBus().unsubscribe(this); @@ -146,12 +147,15 @@ public class LairSpawnArea extends SpawnArea { SWGObject object = event.object; - if(object == null || !(object instanceof CreatureObject) || object.getContainer() != null) + //if(object == null || !(object instanceof CreatureObject) || object.getContainer() != null) + // return; + + if(object == null || !(object instanceof CreatureObject)) return; CreatureObject creature = (CreatureObject) object; - if(creature.getSlottedObject("ghost") == null) + if(creature.getSlottedObject("ghost") == null && !creature.getOption(Options.MOUNT)) return; if(new Random().nextFloat() <= 0.05) diff --git a/src/services/spawn/SpawnService.java b/src/services/spawn/SpawnService.java index 0a4ba35c..b3edec85 100644 --- a/src/services/spawn/SpawnService.java +++ b/src/services/spawn/SpawnService.java @@ -116,8 +116,12 @@ public class SpawnService { if(level != -1) creature.setLevel(level); else { - creature.setLevel(mobileTemplate.getLevel()); - level = mobileTemplate.getLevel(); + if (mobileTemplate.getLevel()!=0){ + level = mobileTemplate.getLevel(); + creature.setLevel(level); + } else { + level = -1; + } } if (mobileTemplate.getMinLevel()!=0 && mobileTemplate.getMaxLevel()!=0 && level == -1){