diff --git a/ngengine_public.jar b/ngengine_public.jar index 96682c15..d64a9419 100644 Binary files a/ngengine_public.jar and b/ngengine_public.jar differ diff --git a/options.cfg b/options.cfg index 5a3a7f8e..ac85b4ef 100644 --- a/options.cfg +++ b/options.cfg @@ -1,3 +1,6 @@ LOAD.SNAPSHOT_OBJECTS=1 LOAD.BUILDOUT_OBJECTS=1 -LOAD.RESOURCE.SYSTEM=1 \ No newline at end of file +LOAD.RESOURCE.SYSTEM=1 + +# Misc +CLEAN.ODB.FOLDERS=0 \ No newline at end of file diff --git a/scripts/buffs/drink_breath_of_heaven.py b/scripts/buffs/drink_breath_of_heaven.py deleted file mode 100644 index 34ee2c0a..00000000 --- a/scripts/buffs/drink_breath_of_heaven.py +++ /dev/null @@ -1,14 +0,0 @@ -import sys - -def setup(core, actor, buff): - return - -def add(core, actor, buff): - core.skillModService.addSkillMod(actor, 'constitution_modified', 80) - core.skillModService.addSkillMod(actor, 'expertise_dodge', 3) - return - -def remove(core, actor, buff): - core.skillModService.deductSkillMod(actor, 'constitution_modified', 80) - core.skillModService.deductSkillMod(actor, 'expertise_dodge', 3) - return diff --git a/scripts/buffs/invis_sp_buff_invis_notrace_1.py b/scripts/buffs/invis_sp_buff_invis_notrace_1.py new file mode 100644 index 00000000..11b5dbd0 --- /dev/null +++ b/scripts/buffs/invis_sp_buff_invis_notrace_1.py @@ -0,0 +1,22 @@ +import sys + +def setup(core, actor, buff): + return + +def add(core, actor, buff): + actor.setInStealth(True) + actor.setRadarVisible(False) + + if actor.getSkillMod('expertise_sp_covert_mastery_1'): + core.skillModService.addSkillMod(actor, 'sp_covert_mastery') + + return + +def remove(core, actor, buff): + actor.setInStealth(False) + actor.setRadarVisible(True) + + if actor.getSkillMod('expertise_sp_covert_mastery_1'): + core.skillModService.deductSkillMod(actor, 'sp_covert_mastery') + + return diff --git a/scripts/buffs/me_stasis_1.py b/scripts/buffs/me_stasis_1.py index 7d4b7fe5..ad96199e 100644 --- a/scripts/buffs/me_stasis_1.py +++ b/scripts/buffs/me_stasis_1.py @@ -5,10 +5,10 @@ def setup(core, actor, buff): def add(core, actor, buff): actor.playEffectObject('clienteffect/medic_stasis.cef', 'me_stasis_1') - actor.setSpeedMultiplierBase(0.2) + core.skillModService.deductSkillMod(actor, 'movement', 8) return def remove(core, actor, buff): - actor.setSpeedMultiplierBase(1) + core.skillModService.addSkillMod(actor, 'movement', 8) return \ No newline at end of file diff --git a/scripts/collections/master_bounty_hunter_1a.py b/scripts/collections/master_bounty_hunter_1a.py deleted file mode 100644 index c81bc04a..00000000 --- a/scripts/collections/master_bounty_hunter_1a.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys - -def setup(): - return - -def run(): - return - -def addMasterBadge(core, actor): - if actor.getLevel() == 90: - core.collectionService.addCollection(actor, "new_prof_bountyhunter_master") - return \ No newline at end of file diff --git a/scripts/collections/master_commando_1a.py b/scripts/collections/master_commando_1a.py deleted file mode 100644 index beb5e848..00000000 --- a/scripts/collections/master_commando_1a.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys - -def setup(): - return - -def run(): - return - -def addMasterBadge(core, actor): - if actor.getLevel() == 90: - core.collectionService.addCollection(actor, "new_prof_commando_master") - return \ No newline at end of file diff --git a/scripts/collections/master_entertainer_1a.py b/scripts/collections/master_entertainer_1a.py deleted file mode 100644 index e2dc3c3c..00000000 --- a/scripts/collections/master_entertainer_1a.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys - -def setup(): - return - -def run(): - return - -def addMasterBadge(core, actor): - if actor.getLevel() == 90: - core.collectionService.addCollection(actor, "new_prof_social_entertainer_master") - return \ No newline at end of file diff --git a/scripts/collections/master_force_sensitive_1a.py b/scripts/collections/master_force_sensitive_1a.py deleted file mode 100644 index b2ae17a5..00000000 --- a/scripts/collections/master_force_sensitive_1a.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys - -def setup(): - return - -def run(): - return - -def addMasterBadge(core, actor): - if actor.getLevel() == 90: - core.collectionService.addCollection(actor, "new_prof_jedi_master") - return \ No newline at end of file diff --git a/scripts/collections/master_medic_1a.py b/scripts/collections/master_medic_1a.py deleted file mode 100644 index d19ba11b..00000000 --- a/scripts/collections/master_medic_1a.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys - -def setup(): - return - -def run(): - return - -def addMasterBadge(core, actor): - if actor.getLevel() == 90: - core.collectionService.addCollection(actor, "new_prof_medic_master") - return \ No newline at end of file diff --git a/scripts/collections/master_officer_1a.py b/scripts/collections/master_officer_1a.py deleted file mode 100644 index 589869ae..00000000 --- a/scripts/collections/master_officer_1a.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys - -def setup(): - return - -def run(): - return - -def addMasterBadge(core, actor): - if actor.getLevel() == 90: - core.collectionService.addCollection(actor, "new_prof_officer_master") - return \ No newline at end of file diff --git a/scripts/collections/master_smuggler_1a.py b/scripts/collections/master_smuggler_1a.py deleted file mode 100644 index f7d741f1..00000000 --- a/scripts/collections/master_smuggler_1a.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys - -def setup(): - return - -def run(): - return - -def addMasterBadge(core, actor): - if actor.getLevel() == 90: - core.collectionService.addCollection(actor, "new_prof_smuggler_master") - return \ No newline at end of file diff --git a/scripts/collections/master_spy_1a.py b/scripts/collections/master_spy_1a.py deleted file mode 100644 index 1ff5be54..00000000 --- a/scripts/collections/master_spy_1a.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys - -def setup(): - return - -def run(): - return - -def addMasterBadge(core, actor): - if actor.getLevel() == 90: - core.collectionService.addCollection(actor, "new_prof_spy_master") - return \ No newline at end of file diff --git a/scripts/collections/master_trader_0a.py b/scripts/collections/master_trader_0a.py deleted file mode 100644 index bff48590..00000000 --- a/scripts/collections/master_trader_0a.py +++ /dev/null @@ -1,15 +0,0 @@ -import sys - -def setup(): - return - -def run(): - return - -def addMasterBadge(core, actor): - if actor.getLevel() == 90: - core.collectionService.addCollection(actor, "new_prof_crafting_merchant_master") - core.collectionService.addCollection(actor, "new_prof_crafting_artisan_master") - core.collectionService.addCollection(actor, "new_prof_crafting_chef_master") - core.collectionService.addCollection(actor, "new_prof_crafting_tailor_master") - return \ No newline at end of file diff --git a/scripts/collections/master_trader_0b.py b/scripts/collections/master_trader_0b.py deleted file mode 100644 index 55a1c3d3..00000000 --- a/scripts/collections/master_trader_0b.py +++ /dev/null @@ -1,14 +0,0 @@ -import sys - -def setup(): - return - -def run(): - return - -def addMasterBadge(core, actor): - if actor.getLevel() == 90: - core.collectionService.addCollection(actor, "new_prof_crafting_merchant_master") - core.collectionService.addCollection(actor, "new_prof_crafting_artisan_master") - core.collectionService.addCollection(actor, "new_prof_crafting_architect_master") - return \ No newline at end of file diff --git a/scripts/collections/master_trader_0c.py b/scripts/collections/master_trader_0c.py deleted file mode 100644 index 018141b4..00000000 --- a/scripts/collections/master_trader_0c.py +++ /dev/null @@ -1,15 +0,0 @@ -import sys - -def setup(): - return - -def run(): - return - -def addMasterBadge(core, actor): - if actor.getLevel() == 90: - core.collectionService.addCollection(actor, "new_prof_crafting_merchant_master") - core.collectionService.addCollection(actor, "new_prof_crafting_artisan_master") - core.collectionService.addCollection(actor, "new_prof_crafting_armorsmith_master") - core.collectionService.addCollection(actor, "new_prof_crafting_weaponsmith_master") - return \ No newline at end of file diff --git a/scripts/collections/master_trader_0d.py b/scripts/collections/master_trader_0d.py deleted file mode 100644 index a9223ac6..00000000 --- a/scripts/collections/master_trader_0d.py +++ /dev/null @@ -1,14 +0,0 @@ -import sys - -def setup(): - return - -def run(): - return - -def addMasterBadge(core, actor): - if actor.getLevel() == 90: - core.collectionService.addCollection(actor, "new_prof_crafting_merchant_master") - core.collectionService.addCollection(actor, "new_prof_crafting_artisan_master") - core.collectionService.addCollection(actor, "new_prof_crafting_droidengineer_master") - return \ No newline at end of file diff --git a/scripts/collections/profession_master.py b/scripts/collections/profession_master.py new file mode 100644 index 00000000..dbd6e1e0 --- /dev/null +++ b/scripts/collections/profession_master.py @@ -0,0 +1,60 @@ +import sys + +def bounty_hunter_1a(core, actor): + core.collectionService.addCollection(actor, "new_prof_bountyhunter_master") + return + +def commando_1a(core, actor): + core.collectionService.addCollection(actor, "new_prof_commando_master") + return + +def entertainer_1a(core, actor): + core.collectionService.addCollection(actor, "new_prof_social_entertainer_master") + return + +def force_sensitive_1a(core, actor): + core.collectionService.addCollection(actor, "new_prof_jedi_master") + return + +def medic_1a(core, actor): + core.collectionService.addCollection(actor, "new_prof_medic_master") + return + +def officer_1a(core, actor): + core.collectionService.addCollection(actor, "new_prof_officer_master") + return + +def smuggler_1a(core, actor): + core.collectionService.addCollection(actor, "new_prof_officer_master") + return + +def spy_1a(core, actor): + core.collectionService.addCollection(actor, "new_prof_spy_master") + return + +def trader_0a(core, actor): + core.collectionService.addCollection(actor, "new_prof_crafting_merchant_master") + core.collectionService.addCollection(actor, "new_prof_crafting_artisan_master") + core.collectionService.addCollection(actor, "new_prof_crafting_chef_master") + core.collectionService.addCollection(actor, "new_prof_crafting_tailor_master") + return + +def trader_0b(core, actor): + core.collectionService.addCollection(actor, "new_prof_crafting_merchant_master") + core.collectionService.addCollection(actor, "new_prof_crafting_artisan_master") + core.collectionService.addCollection(actor, "new_prof_crafting_architect_master") + return + +def trader_0c(core, actor): + core.collectionService.addCollection(actor, "new_prof_crafting_merchant_master") + core.collectionService.addCollection(actor, "new_prof_crafting_artisan_master") + core.collectionService.addCollection(actor, "new_prof_crafting_armorsmith_master") + core.collectionService.addCollection(actor, "new_prof_crafting_weaponsmith_master") + return + +def trader_0d(core, actor): + core.collectionService.addCollection(actor, "new_prof_crafting_merchant_master") + core.collectionService.addCollection(actor, "new_prof_crafting_artisan_master") + core.collectionService.addCollection(actor, "new_prof_crafting_droidengineer_master") + return + \ No newline at end of file diff --git a/scripts/commands/bh_armor_sprint_1.py b/scripts/commands/bh_armor_sprint_1.py index 45376aa9..22439323 100644 --- a/scripts/commands/bh_armor_sprint_1.py +++ b/scripts/commands/bh_armor_sprint_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, buff): - core.buffService.addBuffToCreature(actor, 'bh_power_sprint_1') + core.buffService.addBuffToCreature(actor, 'bh_power_sprint_1', actor) return def run(core, actor, target, commandString): diff --git a/scripts/commands/bh_cover_1.py b/scripts/commands/bh_cover_1.py index f9217c4e..8875a673 100644 --- a/scripts/commands/bh_cover_1.py +++ b/scripts/commands/bh_cover_1.py @@ -4,5 +4,5 @@ def setup(core, actor, buff): return def run(core, actor, target, commandString): - core.buffService.addBuffToCreature(actor, 'bh_cover_1') + core.buffService.addBuffToCreature(actor, 'bh_cover_1', actor) return \ No newline at end of file diff --git a/scripts/commands/bh_shields_1.py b/scripts/commands/bh_shields_1.py index 41e93a6a..1bf27a70 100644 --- a/scripts/commands/bh_shields_1.py +++ b/scripts/commands/bh_shields_1.py @@ -4,7 +4,7 @@ def setup(core, actor, target, command): return def run(core, actor, target, commandString): - core.buffService.addBuffToCreature(actor, 'bh_shields') - core.buffService.addBuffToCreature(actor, 'bh_shields_charged') - core.buffService.addBuffToCreature(actor, 'bh_shields_handler') + core.buffService.addBuffToCreature(actor, 'bh_shields', actor) + core.buffService.addBuffToCreature(actor, 'bh_shields_charged', actor) + core.buffService.addBuffToCreature(actor, 'bh_shields_handler', actor) return \ No newline at end of file diff --git a/scripts/commands/co_first_aid_training.py b/scripts/commands/co_first_aid_training.py index e185f733..18b9aedf 100644 --- a/scripts/commands/co_first_aid_training.py +++ b/scripts/commands/co_first_aid_training.py @@ -4,5 +4,5 @@ def setup(): return def run(core, actor, target, commandString): - core.buffService.addBuffToCreature(actor, 'co_first_aid_training') + core.buffService.addBuffToCreature(actor, 'co_first_aid_training', actor) return \ No newline at end of file diff --git a/scripts/commands/combat/bh_return_fire_command_1.py b/scripts/commands/combat/bh_return_fire_command_1.py index 9542ec56..9fb224c0 100644 --- a/scripts/commands/combat/bh_return_fire_command_1.py +++ b/scripts/commands/combat/bh_return_fire_command_1.py @@ -6,6 +6,6 @@ def setup(core, actor, target, command): return def run(core, actor, target, commandString): - core.buffService.addBuffToCreature(actor, 'bh_return_fire_1') + core.buffService.addBuffToCreature(actor, 'bh_return_fire_1', actor) return \ No newline at end of file diff --git a/scripts/commands/combat/en_spiral_kick_0.py b/scripts/commands/combat/en_spiral_kick_0.py index eee76225..62a7efb2 100644 --- a/scripts/commands/combat/en_spiral_kick_0.py +++ b/scripts/commands/combat/en_spiral_kick_0.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'en_spiral_kick_snare') + core.buffService.addBuffToCreature(target, 'en_spiral_kick_snare', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/en_spiral_kick_1.py b/scripts/commands/combat/en_spiral_kick_1.py index eee76225..62a7efb2 100644 --- a/scripts/commands/combat/en_spiral_kick_1.py +++ b/scripts/commands/combat/en_spiral_kick_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'en_spiral_kick_snare') + core.buffService.addBuffToCreature(target, 'en_spiral_kick_snare', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/en_spiral_kick_2.py b/scripts/commands/combat/en_spiral_kick_2.py index eee76225..62a7efb2 100644 --- a/scripts/commands/combat/en_spiral_kick_2.py +++ b/scripts/commands/combat/en_spiral_kick_2.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'en_spiral_kick_snare') + core.buffService.addBuffToCreature(target, 'en_spiral_kick_snare', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/en_spiral_kick_3.py b/scripts/commands/combat/en_spiral_kick_3.py index eee76225..62a7efb2 100644 --- a/scripts/commands/combat/en_spiral_kick_3.py +++ b/scripts/commands/combat/en_spiral_kick_3.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'en_spiral_kick_snare') + core.buffService.addBuffToCreature(target, 'en_spiral_kick_snare', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/en_spiral_kick_4.py b/scripts/commands/combat/en_spiral_kick_4.py index eee76225..62a7efb2 100644 --- a/scripts/commands/combat/en_spiral_kick_4.py +++ b/scripts/commands/combat/en_spiral_kick_4.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'en_spiral_kick_snare') + core.buffService.addBuffToCreature(target, 'en_spiral_kick_snare', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/en_thrill.py b/scripts/commands/combat/en_thrill.py index 868b6bed..1dbabf6a 100644 --- a/scripts/commands/combat/en_thrill.py +++ b/scripts/commands/combat/en_thrill.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'en_debuff_thrill') + core.buffService.addBuffToCreature(target, 'en_debuff_thrill', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/en_thrill_1.py b/scripts/commands/combat/en_thrill_1.py index c3fd3fc2..41d4b0aa 100644 --- a/scripts/commands/combat/en_thrill_1.py +++ b/scripts/commands/combat/en_thrill_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'en_debuff_thrill_1') + core.buffService.addBuffToCreature(target, 'en_debuff_thrill_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/en_thrill_2.py b/scripts/commands/combat/en_thrill_2.py index c3fd3fc2..41d4b0aa 100644 --- a/scripts/commands/combat/en_thrill_2.py +++ b/scripts/commands/combat/en_thrill_2.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'en_debuff_thrill_1') + core.buffService.addBuffToCreature(target, 'en_debuff_thrill_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/en_thrill_3.py b/scripts/commands/combat/en_thrill_3.py index 2783c9d7..7e1892d5 100644 --- a/scripts/commands/combat/en_thrill_3.py +++ b/scripts/commands/combat/en_thrill_3.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'en_debuff_thrill_2') + core.buffService.addBuffToCreature(target, 'en_debuff_thrill_2', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/en_void_dance_1.py b/scripts/commands/combat/en_void_dance_1.py index cdc97c59..ce94693c 100644 --- a/scripts/commands/combat/en_void_dance_1.py +++ b/scripts/commands/combat/en_void_dance_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'en_void_dance_buff_1') + core.buffService.addBuffToCreature(target, 'en_void_dance_buff_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/en_void_dance_2.py b/scripts/commands/combat/en_void_dance_2.py index 186e477a..b6167823 100644 --- a/scripts/commands/combat/en_void_dance_2.py +++ b/scripts/commands/combat/en_void_dance_2.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'en_void_dance_buff_2') + core.buffService.addBuffToCreature(target, 'en_void_dance_buff_2', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/en_void_dance_3.py b/scripts/commands/combat/en_void_dance_3.py index 77d58c3d..268bbd4e 100644 --- a/scripts/commands/combat/en_void_dance_3.py +++ b/scripts/commands/combat/en_void_dance_3.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'en_void_dance_buff_3') + core.buffService.addBuffToCreature(target, 'en_void_dance_buff_3', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/me_burst_1.py b/scripts/commands/combat/me_burst_1.py index a8c6ccdf..f3944a79 100644 --- a/scripts/commands/combat/me_burst_1.py +++ b/scripts/commands/combat/me_burst_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'me_burst_1') + core.buffService.addBuffToCreature(target, 'me_burst_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/me_cranial_smash_1.py b/scripts/commands/combat/me_cranial_smash_1.py index 4c813179..0325e3b0 100644 --- a/scripts/commands/combat/me_cranial_smash_1.py +++ b/scripts/commands/combat/me_cranial_smash_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'me_cranial_smash_1') + core.buffService.addBuffToCreature(target, 'me_cranial_smash_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/me_doom.py b/scripts/commands/combat/me_doom.py index 9ba8326b..890f1ee4 100644 --- a/scripts/commands/combat/me_doom.py +++ b/scripts/commands/combat/me_doom.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'me_doom') + core.buffService.addBuffToCreature(target, 'me_doom', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/me_electrolyte_drain_1.py b/scripts/commands/combat/me_electrolyte_drain_1.py index 6ba20964..0775e620 100644 --- a/scripts/commands/combat/me_electrolyte_drain_1.py +++ b/scripts/commands/combat/me_electrolyte_drain_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'me_electrolyte_drain_1') + core.buffService.addBuffToCreature(target, 'me_electrolyte_drain_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/me_induce_insanity_1.py b/scripts/commands/combat/me_induce_insanity_1.py index 52fefadb..8b2d04a9 100644 --- a/scripts/commands/combat/me_induce_insanity_1.py +++ b/scripts/commands/combat/me_induce_insanity_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'me_induce_insanity_1') + core.buffService.addBuffToCreature(target, 'me_induce_insanity_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/me_serotonin_purge_1.py b/scripts/commands/combat/me_serotonin_purge_1.py index 7490ade3..c15e6e77 100644 --- a/scripts/commands/combat/me_serotonin_purge_1.py +++ b/scripts/commands/combat/me_serotonin_purge_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'me_serotonin_purge_1') + core.buffService.addBuffToCreature(target, 'me_serotonin_purge_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/me_stasis_1.py b/scripts/commands/combat/me_stasis_1.py index 35ffc3d7..977ff1be 100644 --- a/scripts/commands/combat/me_stasis_1.py +++ b/scripts/commands/combat/me_stasis_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('me_stasis_1') + core.buffService.addBuffToCreature(target, 'me_stasis_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_ae_dm_cc_1.py b/scripts/commands/combat/of_ae_dm_cc_1.py index 8cb29c18..91fcdb26 100644 --- a/scripts/commands/combat/of_ae_dm_cc_1.py +++ b/scripts/commands/combat/of_ae_dm_cc_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_ae_dm_cc_1') + core.buffService.addBuffToCreature(target, 'of_ae_dm_cc_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_ae_dm_cc_2.py b/scripts/commands/combat/of_ae_dm_cc_2.py index 6a6e15d1..21314fd9 100644 --- a/scripts/commands/combat/of_ae_dm_cc_2.py +++ b/scripts/commands/combat/of_ae_dm_cc_2.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_ae_dm_cc_2') + core.buffService.addBuffToCreature(target, 'of_ae_dm_cc_2', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_ae_dm_cc_3.py b/scripts/commands/combat/of_ae_dm_cc_3.py index fe44b74b..1a282584 100644 --- a/scripts/commands/combat/of_ae_dm_cc_3.py +++ b/scripts/commands/combat/of_ae_dm_cc_3.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_ae_dm_cc_3') + core.buffService.addBuffToCreature(target, 'of_ae_dm_cc_3', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_cc_melee_1.py b/scripts/commands/combat/of_cc_melee_1.py index 78feccc6..d6c0b925 100644 --- a/scripts/commands/combat/of_cc_melee_1.py +++ b/scripts/commands/combat/of_cc_melee_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_cc_melee_1') + core.buffService.addBuffToCreature(target, 'of_cc_melee_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_cc_melee_2.py b/scripts/commands/combat/of_cc_melee_2.py index 90462c2e..045fbdaa 100644 --- a/scripts/commands/combat/of_cc_melee_2.py +++ b/scripts/commands/combat/of_cc_melee_2.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_cc_melee_2') + core.buffService.addBuffToCreature(target, 'of_cc_melee_2', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_cc_melee_3.py b/scripts/commands/combat/of_cc_melee_3.py index b23d1da4..cf690edf 100644 --- a/scripts/commands/combat/of_cc_melee_3.py +++ b/scripts/commands/combat/of_cc_melee_3.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_cc_melee_3') + core.buffService.addBuffToCreature(target, 'of_cc_melee_3', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_cc_melee_4.py b/scripts/commands/combat/of_cc_melee_4.py index 7c5fb4ac..46ace711 100644 --- a/scripts/commands/combat/of_cc_melee_4.py +++ b/scripts/commands/combat/of_cc_melee_4.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_cc_melee_4') + core.buffService.addBuffToCreature(target, 'of_cc_melee_4', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_cc_melee_5.py b/scripts/commands/combat/of_cc_melee_5.py index b30529b9..5d476219 100644 --- a/scripts/commands/combat/of_cc_melee_5.py +++ b/scripts/commands/combat/of_cc_melee_5.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_cc_melee_5') + core.buffService.addBuffToCreature(target, 'of_cc_melee_5', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_cc_melee_6.py b/scripts/commands/combat/of_cc_melee_6.py index 8ade5109..1401aebc 100644 --- a/scripts/commands/combat/of_cc_melee_6.py +++ b/scripts/commands/combat/of_cc_melee_6.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_cc_melee_6') + core.buffService.addBuffToCreature(target, 'of_cc_melee_6', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_cc_melee_7.py b/scripts/commands/combat/of_cc_melee_7.py index 8736060a..a31ea5ef 100644 --- a/scripts/commands/combat/of_cc_melee_7.py +++ b/scripts/commands/combat/of_cc_melee_7.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_cc_melee_7') + core.buffService.addBuffToCreature(target, 'of_cc_melee_7', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_deadeye_debuff.py b/scripts/commands/combat/of_deadeye_debuff.py index 5209b851..1b0a0ca8 100644 --- a/scripts/commands/combat/of_deadeye_debuff.py +++ b/scripts/commands/combat/of_deadeye_debuff.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_deadeye_debuff') + core.buffService.addBuffToCreature(target, 'of_deadeye_debuff', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_deb_def_1.py b/scripts/commands/combat/of_deb_def_1.py index 6e9a7fd3..97a9e475 100644 --- a/scripts/commands/combat/of_deb_def_1.py +++ b/scripts/commands/combat/of_deb_def_1.py @@ -1,11 +1,11 @@ def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_deb_def_1') + core.buffService.addBuffToCreature(target, 'of_deb_def_1', actor) if actor.getSkillMod('expertise_of_adv_paint_debuff'): - core.buffService.addBuffToCreature(target, 'of_deb_def_1') - core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_1') + core.buffService.addBuffToCreature(target, 'of_deb_def_1', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_1', actor) if actor.getSkillMod('expertise_of_adv_paint_expose'): - core.buffService.addBuffToCreature(target, 'of_deb_def_1') - core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_1') + core.buffService.addBuffToCreature(target, 'of_deb_def_1', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_deb_def_2.py b/scripts/commands/combat/of_deb_def_2.py index 109e4d2c..3343fc97 100644 --- a/scripts/commands/combat/of_deb_def_2.py +++ b/scripts/commands/combat/of_deb_def_2.py @@ -1,11 +1,11 @@ def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_deb_def_2') + core.buffService.addBuffToCreature(target, 'of_deb_def_2', actor) if actor.getSkillMod('expertise_of_adv_paint_debuff'): - core.buffService.addBuffToCreature(target, 'of_deb_def_2') - core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_2') + core.buffService.addBuffToCreature(target, 'of_deb_def_2', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_2', actor) if actor.getSkillMod('expertise_of_adv_paint_expose'): - core.buffService.addBuffToCreature(target, 'of_deb_def_2') - core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_2') + core.buffService.addBuffToCreature(target, 'of_deb_def_2', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_2', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_deb_def_3.py b/scripts/commands/combat/of_deb_def_3.py index 0060bee0..77e1d3fc 100644 --- a/scripts/commands/combat/of_deb_def_3.py +++ b/scripts/commands/combat/of_deb_def_3.py @@ -1,11 +1,11 @@ def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_deb_def_3') + core.buffService.addBuffToCreature(target, 'of_deb_def_3', actor) if actor.getSkillMod('expertise_of_adv_paint_debuff'): - core.buffService.addBuffToCreature(target, 'of_deb_def_3') - core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_3') + core.buffService.addBuffToCreature(target, 'of_deb_def_3', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_3', actor) if actor.getSkillMod('expertise_of_adv_paint_expose'): - core.buffService.addBuffToCreature(target, 'of_deb_def_3') - core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_3') + core.buffService.addBuffToCreature(target, 'of_deb_def_3', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_3', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_deb_def_4.py b/scripts/commands/combat/of_deb_def_4.py index 32b7d21a..b9aa9a9c 100644 --- a/scripts/commands/combat/of_deb_def_4.py +++ b/scripts/commands/combat/of_deb_def_4.py @@ -1,11 +1,11 @@ def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_deb_def_4') + core.buffService.addBuffToCreature(target, 'of_deb_def_4', actor) if actor.getSkillMod('expertise_of_adv_paint_debuff'): - core.buffService.addBuffToCreature(target, 'of_deb_def_4') - core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_4') + core.buffService.addBuffToCreature(target, 'of_deb_def_4', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_4', actor) if actor.getSkillMod('expertise_of_adv_paint_expose'): - core.buffService.addBuffToCreature(target, 'of_deb_def_4') - core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_4') + core.buffService.addBuffToCreature(target, 'of_deb_def_4', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_4', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_deb_def_5.py b/scripts/commands/combat/of_deb_def_5.py index f880a828..c641d203 100644 --- a/scripts/commands/combat/of_deb_def_5.py +++ b/scripts/commands/combat/of_deb_def_5.py @@ -1,11 +1,11 @@ def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_deb_def_5') + core.buffService.addBuffToCreature(target, 'of_deb_def_5', actor) if actor.getSkillMod('expertise_of_adv_paint_debuff'): - core.buffService.addBuffToCreature(target, 'of_deb_def_5') - core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_5') + core.buffService.addBuffToCreature(target, 'of_deb_def_5', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_5', actor) if actor.getSkillMod('expertise_of_adv_paint_expose'): - core.buffService.addBuffToCreature(target, 'of_deb_def_5') - core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_5') + core.buffService.addBuffToCreature(target, 'of_deb_def_5', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_5', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_deb_def_6.py b/scripts/commands/combat/of_deb_def_6.py index aa1f3f18..0dfde469 100644 --- a/scripts/commands/combat/of_deb_def_6.py +++ b/scripts/commands/combat/of_deb_def_6.py @@ -1,11 +1,11 @@ def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_deb_def_6') + core.buffService.addBuffToCreature(target, 'of_deb_def_6', actor) if actor.getSkillMod('expertise_of_adv_paint_debuff'): - core.buffService.addBuffToCreature(target, 'of_deb_def_6') - core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_6') + core.buffService.addBuffToCreature(target, 'of_deb_def_6', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_6', actor) if actor.getSkillMod('expertise_of_adv_paint_expose'): - core.buffService.addBuffToCreature(target, 'of_deb_def_6') - core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_6') + core.buffService.addBuffToCreature(target, 'of_deb_def_6', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_6', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_deb_def_7.py b/scripts/commands/combat/of_deb_def_7.py index ac8dbaec..a5f19a81 100644 --- a/scripts/commands/combat/of_deb_def_7.py +++ b/scripts/commands/combat/of_deb_def_7.py @@ -1,11 +1,11 @@ def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_deb_def_7') + core.buffService.addBuffToCreature(target, 'of_deb_def_7', actor) if actor.getSkillMod('expertise_of_adv_paint_debuff'): - core.buffService.addBuffToCreature(target, 'of_deb_def_7') - core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_7') + core.buffService.addBuffToCreature(target, 'of_deb_def_7', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_7', actor) if actor.getSkillMod('expertise_of_adv_paint_expose'): - core.buffService.addBuffToCreature(target, 'of_deb_def_7') - core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_7') + core.buffService.addBuffToCreature(target, 'of_deb_def_7', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_7', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_deb_def_8.py b/scripts/commands/combat/of_deb_def_8.py index b2ad7912..5ecc4517 100644 --- a/scripts/commands/combat/of_deb_def_8.py +++ b/scripts/commands/combat/of_deb_def_8.py @@ -1,11 +1,11 @@ def setup(core, actor, target, command): - core.buffService.addBuffToCreature(target, 'of_deb_def_8;) + core.buffService.addBuffToCreature(target, 'of_deb_def_8', actor) if actor.getSkillMod('expertise_of_adv_paint_debuff'): - core.buffService.addBuffToCreature(target, 'of_deb_def_8') - core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_8') + core.buffService.addBuffToCreature(target, 'of_deb_def_8', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_debuff_8', actor) if actor.getSkillMod('expertise_of_adv_paint_expose'): - core.buffService.addBuffToCreature(target, 'of_deb_def_8') - core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_8') + core.buffService.addBuffToCreature(target, 'of_deb_def_8', actor) + core.buffService.addBuffToCreature(target, 'of_adv_paint_expose_8', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_decapitate_1.py b/scripts/commands/combat/of_decapitate_1.py index d32bcc1e..9e6e9440 100644 --- a/scripts/commands/combat/of_decapitate_1.py +++ b/scripts/commands/combat/of_decapitate_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_decap_bleed_1') + core.buffService.addBuffToCreature(target, 'of_decap_bleed_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_decapitate_2.py b/scripts/commands/combat/of_decapitate_2.py index 7202e1e7..fb2cecf3 100644 --- a/scripts/commands/combat/of_decapitate_2.py +++ b/scripts/commands/combat/of_decapitate_2.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_decap_bleed_2') + core.buffService.addBuffToCreature(target, 'of_decap_bleed_2', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_decapitate_3.py b/scripts/commands/combat/of_decapitate_3.py index 53fc24d1..ffe4fa2f 100644 --- a/scripts/commands/combat/of_decapitate_3.py +++ b/scripts/commands/combat/of_decapitate_3.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_decap_bleed_3') + core.buffService.addBuffToCreature(target, 'of_decap_bleed_3', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_decapitate_4.py b/scripts/commands/combat/of_decapitate_4.py index 0ad1f93d..99481e70 100644 --- a/scripts/commands/combat/of_decapitate_4.py +++ b/scripts/commands/combat/of_decapitate_4.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_decap_bleed_4') + core.buffService.addBuffToCreature(target, 'of_decap_bleed_4', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_decapitate_5.py b/scripts/commands/combat/of_decapitate_5.py index fdc3539e..a282c4ae 100644 --- a/scripts/commands/combat/of_decapitate_5.py +++ b/scripts/commands/combat/of_decapitate_5.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_decap_bleed_5') + core.buffService.addBuffToCreature(target, 'of_decap_bleed_5', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_decapitate_6.py b/scripts/commands/combat/of_decapitate_6.py index 7b9fa74a..dae1edb5 100644 --- a/scripts/commands/combat/of_decapitate_6.py +++ b/scripts/commands/combat/of_decapitate_6.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_decap_bleed_6') + core.buffService.addBuffToCreature(target, 'of_decap_bleed_6', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_del_ae_dm_dot_1.py b/scripts/commands/combat/of_del_ae_dm_dot_1.py index a609a9fd..8fa6ed3b 100644 --- a/scripts/commands/combat/of_del_ae_dm_dot_1.py +++ b/scripts/commands/combat/of_del_ae_dm_dot_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_dot_bomb_1') + core.buffService.addBuffToCreature(target, 'of_dot_bomb_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_del_ae_dm_dot_2.py b/scripts/commands/combat/of_del_ae_dm_dot_2.py index a609a9fd..8fa6ed3b 100644 --- a/scripts/commands/combat/of_del_ae_dm_dot_2.py +++ b/scripts/commands/combat/of_del_ae_dm_dot_2.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_dot_bomb_1') + core.buffService.addBuffToCreature(target, 'of_dot_bomb_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_del_ae_dm_dot_3.py b/scripts/commands/combat/of_del_ae_dm_dot_3.py index a609a9fd..8fa6ed3b 100644 --- a/scripts/commands/combat/of_del_ae_dm_dot_3.py +++ b/scripts/commands/combat/of_del_ae_dm_dot_3.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_dot_bomb_1') + core.buffService.addBuffToCreature(target, 'of_dot_bomb_1', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_pistol_bleed_1.py b/scripts/commands/combat/of_pistol_bleed_1.py index ba2f33ba..a31c6c19 100644 --- a/scripts/commands/combat/of_pistol_bleed_1.py +++ b/scripts/commands/combat/of_pistol_bleed_1.py @@ -1,7 +1,7 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_pistol_bleed') + core.buffService.addBuffToCreature(target, 'of_pistol_bleed', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_vortex_1.py b/scripts/commands/combat/of_vortex_1.py index fa9bd5a9..72cf4b13 100644 --- a/scripts/commands/combat/of_vortex_1.py +++ b/scripts/commands/combat/of_vortex_1.py @@ -1,8 +1,8 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_vortex_bleed_1') - command.setBuffNameTarget('of_vortex_root') + core.buffService.addBuffToCreature(target, 'of_vortex_bleed_1', actor) + core.buffService.addBuffToCreature(target, 'of_vortex_root', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_vortex_2.py b/scripts/commands/combat/of_vortex_2.py index 15ea7699..61b586d4 100644 --- a/scripts/commands/combat/of_vortex_2.py +++ b/scripts/commands/combat/of_vortex_2.py @@ -1,8 +1,8 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_vortex_bleed_2') - command.setBuffNameTarget('of_vortex_root') + core.buffService.addBuffToCreature(target, 'of_vortex_bleed_2', actor) + core.buffService.addBuffToCreature(target, 'of_vortex_root', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_vortex_3.py b/scripts/commands/combat/of_vortex_3.py index 6b5a9e0f..4507ec9d 100644 --- a/scripts/commands/combat/of_vortex_3.py +++ b/scripts/commands/combat/of_vortex_3.py @@ -1,8 +1,8 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_vortex_bleed_3') - command.setBuffNameTarget('of_vortex_root') + core.buffService.addBuffToCreature(target, 'of_vortex_bleed_3', actor) + core.buffService.addBuffToCreature(target, 'of_vortex_root', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_vortex_4.py b/scripts/commands/combat/of_vortex_4.py index d185ba6a..ff87ce05 100644 --- a/scripts/commands/combat/of_vortex_4.py +++ b/scripts/commands/combat/of_vortex_4.py @@ -1,8 +1,8 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_vortex_bleed_4') - command.setBuffNameTarget('of_vortex_root') + core.buffService.addBuffToCreature(target, 'of_vortex_bleed_4', actor) + core.buffService.addBuffToCreature(target, 'of_vortex_root', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/combat/of_vortex_5.py b/scripts/commands/combat/of_vortex_5.py index b8b7010c..ae7aacee 100644 --- a/scripts/commands/combat/of_vortex_5.py +++ b/scripts/commands/combat/of_vortex_5.py @@ -1,8 +1,8 @@ import sys def setup(core, actor, target, command): - command.setBuffNameTarget('of_vortex_bleed_5') - command.setBuffNameTarget('of_vortex_root') + core.buffService.addBuffToCreature(target, 'of_vortex_bleed_5', actor) + core.buffService.addBuffToCreature(target, 'of_vortex_root', actor) return def preRun(core, actor, target, command): diff --git a/scripts/commands/dismissgroupmember.py b/scripts/commands/dismissgroupmember.py new file mode 100644 index 00000000..7c384e0a --- /dev/null +++ b/scripts/commands/dismissgroupmember.py @@ -0,0 +1,10 @@ +import sys + +def setup(): + return + +def run(core, actor, target, commandString): + if actor and target: + core.groupService.handleGroupKick(actor, target) + return + \ No newline at end of file diff --git a/scripts/commands/en_action_regen.py b/scripts/commands/en_action_regen.py index c6905572..c4ea6986 100644 --- a/scripts/commands/en_action_regen.py +++ b/scripts/commands/en_action_regen.py @@ -4,5 +4,5 @@ def setup(): return def run(core, actor, target, commandString): - core.buffService.addBuffToCreature(actor, 'en_action_regen') + core.buffService.addBuffToCreature(actor, 'en_action_regen', actor) return \ No newline at end of file diff --git a/scripts/commands/forcerun.py b/scripts/commands/forcerun.py index c4dabf79..69a25ad8 100644 --- a/scripts/commands/forcerun.py +++ b/scripts/commands/forcerun.py @@ -4,6 +4,6 @@ def setup(core, actor, buff): return def run(core, actor, target, commandString): - core.buffService.addBuffToCreature(actor, 'fs_force_run', actor) + core.buffService.addBuffToCreature(target, 'fs_force_run', actor) return \ No newline at end of file diff --git a/scripts/commands/me_cure_affliction_1.py b/scripts/commands/me_cure_affliction_1.py index c03b5879..4b52e823 100644 --- a/scripts/commands/me_cure_affliction_1.py +++ b/scripts/commands/me_cure_affliction_1.py @@ -4,5 +4,5 @@ def setup(core, actor, buff): return def run(core, actor, target, commandString): - core.buffService.addBuffToCreature(actor, 'me_cure_affliction_1', target) + core.buffService.addBuffToCreature(actor, 'me_cure_affliction_1', actor) return \ No newline at end of file diff --git a/scripts/commands/pvp.py b/scripts/commands/pvp.py index c313fbc4..34f6c5ff 100644 --- a/scripts/commands/pvp.py +++ b/scripts/commands/pvp.py @@ -14,6 +14,9 @@ def run(core, actor, target, commandString): if actor.getPvpStatus(PvpStatus.GoingOvert) or actor.getPvpStatus(PvpStatus.GoingCovert): actor.sendSystemMessage('@faction_recruiter:pvp_status_changing', 0) return + if core.gcwService.isInPvpZone(actor): + actor.sendSystemMessage('@gcw:pvp_advanced_region_cannot_go_covert', 0) + return if commandString != '' and commandString != faction: if commandString == 'rebel' or commandString == 'imperial' or commandString == 'neutral': @@ -60,6 +63,8 @@ def run(core, actor, target, commandString): actor.sendSystemMessage('@faction_recruiter:covert_to_overt', 0) actor.setPvpStatus(PvpStatus.GoingOvert, True) time.sleep(30) + if core.gcwService.isInPvpZone(actor): + return actor.setFactionStatus(FactionStatus.SpecialForces) actor.setPvpStatus(PvpStatus.GoingOvert, False) actor.sendSystemMessage('@faction_recruiter:overt_complete', 0) @@ -70,6 +75,8 @@ def run(core, actor, target, commandString): actor.sendSystemMessage('@faction_recruiter:overt_to_covert', 0) actor.setPvpStatus(PvpStatus.GoingCovert, True) time.sleep(300) + if core.gcwService.isInPvpZone(actor): + return actor.setFactionStatus(FactionStatus.Combatant) actor.setPvpStatus(PvpStatus.GoingCovert, False) actor.sendSystemMessage('@faction_recruiter:covert_complete', 0) diff --git a/scripts/commands/transferitemmisc.py b/scripts/commands/transferitemmisc.py index 2bc32e5e..30dd0846 100644 --- a/scripts/commands/transferitemmisc.py +++ b/scripts/commands/transferitemmisc.py @@ -28,7 +28,7 @@ def run(core, actor, target, commandString): if target.isLootItem(): target.setLootItem(0) - actor.sendSystemMessage('You looted ' + target.getTrueName() + ' from corpse.', 0) + actor.sendSystemMessage('You looted ' + target.getObjectName().getStfValue() + ' from corpse.', 0) if actorContainer != None and (container.getTemplate() == "object/cell/shared_cell.iff") & core.housingService.getPermissions(actor, actorContainer): target.getContainer().transferTo(actor, container, target) @@ -95,4 +95,4 @@ def run(core, actor, target, commandString): #core.scriptService.callScript(path, 'unequip', module, core, actor, target) core.equipmentService.unequip(actor, target) - return \ No newline at end of file + return diff --git a/scripts/conversation/respec.py b/scripts/conversation/respec.py index f929002e..1c54294c 100644 --- a/scripts/conversation/respec.py +++ b/scripts/conversation/respec.py @@ -6,91 +6,55 @@ import sys def startConversation(core, actor, npc): convSvc = core.conversationService - prose = ProsePackage('conversation/respecseller', 's_31') - outOfBand = OutOfBand() - outOfBand.addProsePackage(prose) - convSvc.sendConversationMessage(actor, npc, outOfBand) - prose2 = ProsePackage('conversation/respecseller', 's_32') - outOfBand2 = OutOfBand() - outOfBand2.addProsePackage(prose2) - prose3 = ProsePackage('conversation/respecseller', 's_33') - outOfBand3 = OutOfBand() - outOfBand3.addProsePackage(prose3) - option1 = ConversationOption(outOfBand2, 0) - option2 = ConversationOption(outOfBand3, 1) + + convSvc.sendConversationMessage(actor, npc, OutOfBand.ProsePackage('@conversation/respecseller:s_31')) + options = Vector() - options.add(option1) - options.add(option2) + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/respecseller:s_32'), 0)) + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/respecseller:s_33'), 1)) convSvc.sendConversationOptions(actor, npc, options, handleFirstScreen) - return + return + def handleFirstScreen(core, actor, npc, selection): - - if selection == 0: - # respec - # TODO: check for prices - convSvc = core.conversationService - prose = ProsePackage('conversation/respecseller', 's_58') - outOfBand = OutOfBand() - outOfBand.addProsePackage(prose) - convSvc.sendConversationMessage(actor, npc, outOfBand) - prose2 = ProsePackage('conversation/respecseller', 's_60') - outOfBand2 = OutOfBand() - outOfBand2.addProsePackage(prose2) - prose3 = ProsePackage('conversation/respecseller', 's_64') - outOfBand3 = OutOfBand() - outOfBand3.addProsePackage(prose3) - option1 = ConversationOption(outOfBand2, 0) - option2 = ConversationOption(outOfBand3, 1) - options = Vector() - options.add(option1) - options.add(option2) - convSvc.sendConversationOptions(actor, npc, options, handleRespecScreen) - return - if selection == 1: - # expertise reset - # TODO: check for prices - convSvc = core.conversationService - prose = ProsePackage('conversation/respecseller', 's_35') - outOfBand = OutOfBand() - outOfBand.addProsePackage(prose) - convSvc.sendConversationMessage(actor, npc, outOfBand) - prose2 = ProsePackage('conversation/respecseller', 's_71') - outOfBand2 = OutOfBand() - outOfBand2.addProsePackage(prose2) - prose3 = ProsePackage('conversation/respecseller', 's_72') - outOfBand3 = OutOfBand() - outOfBand3.addProsePackage(prose3) - option1 = ConversationOption(outOfBand2, 0) - option2 = ConversationOption(outOfBand3, 1) - options = Vector() - options.add(option1) - options.add(option2) - convSvc.sendConversationOptions(actor, npc, options, handleResetScreen) - - - return + convSvc = core.conversationService -def handleRespecScreen(core, actor, npc, selection): + # TODO: check for prices + + if selection == 0: # respec + convSvc.sendConversationMessage(actor, npc, OutOfBand.ProsePackage('@conversation/respecseller:s_58')) + + options = Vector() + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/respecseller:s_60'), 0)) + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/respecseller:s_64'), 1)) + convSvc.sendConversationOptions(actor, npc, options, handleRespecScreen) + + if selection == 1: # expertise reset + convSvc.sendConversationMessage(actor, npc, OutOfBand.ProsePackage('@conversation/respecseller:s_35')) + + options = Vector() + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/respecseller:s_71'), 0)) + options.add(ConversationOption(OutOfBand.ProsePackage('@conversation/respecseller:s_72'), 1)) + convSvc.sendConversationOptions(actor, npc, options, handleResetScreen) + + return +def handleRespecScreen(core, actor, npc, selection): if selection == 0: core.skillService.sendRespecWindow(actor) - + core.conversationService.handleEndConversation(actor, npc) - + return - def handleResetScreen(core, actor, npc, selection): - if selection == 0: core.skillService.resetExpertise(actor) - - core.conversationService.handleEndConversation(actor, npc) - - return + core.conversationService.handleEndConversation(actor, npc) + + return + def endConversation(core, actor, npc): core.conversationService.sendStopConversation(actor, npc, 'conversation/respecseller', 's_38') return - \ No newline at end of file diff --git a/scripts/loot/lootItems/weapons/knife/janta_knife.py b/scripts/loot/lootItems/weapons/knife/janta_knife.py new file mode 100644 index 00000000..669488b2 --- /dev/null +++ b/scripts/loot/lootItems/weapons/knife/janta_knife.py @@ -0,0 +1,15 @@ + +def itemTemplate(): + + return ['object/weapon/melee/knife/shared_knife_janta.iff'] + +def itemStats(): + + stats = ['mindamage','12','27'] + stats += ['maxdamage','48','95'] + stats += ['attackspeed','1.0','1.0'] + stats += ['maxrange','0','4'] + stats += ['damagetype','kinetic','kinetic'] + stats += ['weapontype','4','4'] + + return stats diff --git a/scripts/loot/lootPools/random_loot_primitives.py b/scripts/loot/lootPools/random_loot_primitives.py new file mode 100644 index 00000000..206888dd --- /dev/null +++ b/scripts/loot/lootPools/random_loot_primitives.py @@ -0,0 +1,8 @@ + +def itemNames(): + + return ['janta_knife'] + +def itemChances(): + return [100] + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/abandoned_rebel_private.py b/scripts/mobiles/dantooine/abandoned_rebel_private.py new file mode 100644 index 00000000..31149e62 --- /dev/null +++ b/scripts/mobiles/dantooine/abandoned_rebel_private.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('abandoned_rebel_private') + mobileTemplate.setLevel(61) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('rebel') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_dark_jedi_male_human_01.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_dh17.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_rebel.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedShot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('abandoned_rebel_private', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/ancient_graul.py b/scripts/mobiles/dantooine/ancient_graul.py new file mode 100644 index 00000000..ad67d937 --- /dev/null +++ b/scripts/mobiles/dantooine/ancient_graul.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('ancient_graul') + mobileTemplate.setLevel(74) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(950) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(875) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(775) + mobileTemplate.setSocialGroup("graul") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_slinking_voritor_hunter.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('ancient_graul', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/bile_drenched_quenker.py b/scripts/mobiles/dantooine/bile_drenched_quenker.py new file mode 100644 index 00000000..573db740 --- /dev/null +++ b/scripts/mobiles/dantooine/bile_drenched_quenker.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('bile_drenched_quenker') + mobileTemplate.setLevel(63) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(0) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(0) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(0) + mobileTemplate.setSocialGroup("quenker") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_quenker_relic_reaper.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('bile_drenched_quenker', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/bol.py b/scripts/mobiles/dantooine/bol.py new file mode 100644 index 00000000..43a654b0 --- /dev/null +++ b/scripts/mobiles/dantooine/bol.py @@ -0,0 +1,42 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('bol') + mobileTemplate.setLevel(60) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(0) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(300) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(180) + mobileTemplate.setSocialGroup("bol") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_bol_hue.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('bol', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/bol_pack_runner.py b/scripts/mobiles/dantooine/bol_pack_runner.py new file mode 100644 index 00000000..bb131bb1 --- /dev/null +++ b/scripts/mobiles/dantooine/bol_pack_runner.py @@ -0,0 +1,42 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('bol_pack_runner') + mobileTemplate.setLevel(60) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(0) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(300) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(180) + mobileTemplate.setSocialGroup("bol") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_bol_hue.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('bol_pack_runner', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/dantari_chief.py b/scripts/mobiles/dantooine/dantari_chief.py new file mode 100644 index 00000000..d8625846 --- /dev/null +++ b/scripts/mobiles/dantooine/dantari_chief.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dantari_chief') + mobileTemplate.setLevel(64) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('dantari raiders') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dantari_chief', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/dantari_raider.py b/scripts/mobiles/dantooine/dantari_raider.py new file mode 100644 index 00000000..9a4b6be3 --- /dev/null +++ b/scripts/mobiles/dantooine/dantari_raider.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dantari_raider') + mobileTemplate.setLevel(61) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('dantari raiders') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dantari_raider', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/dantari_strategist.py b/scripts/mobiles/dantooine/dantari_strategist.py new file mode 100644 index 00000000..cd3e4afd --- /dev/null +++ b/scripts/mobiles/dantooine/dantari_strategist.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dantari_strategist') + mobileTemplate.setLevel(62) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(False) + mobileTemplate.setSocialGroup('dantari raiders') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dantari_strategist', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/dark_adept.py b/scripts/mobiles/dantooine/dark_adept.py index 85529f17..411492dc 100644 --- a/scripts/mobiles/dantooine/dark_adept.py +++ b/scripts/mobiles/dantooine/dark_adept.py @@ -20,6 +20,10 @@ 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_jedi_knight.py b/scripts/mobiles/dantooine/dark_jedi_knight.py index 8af7c2bd..cb97b18e 100644 --- a/scripts/mobiles/dantooine/dark_jedi_knight.py +++ b/scripts/mobiles/dantooine/dark_jedi_knight.py @@ -20,6 +20,10 @@ 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 99c61f86..c9278439 100644 --- a/scripts/mobiles/dantooine/dark_jedi_master.py +++ b/scripts/mobiles/dantooine/dark_jedi_master.py @@ -18,6 +18,10 @@ 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') @@ -42,6 +46,32 @@ def addTemplate(core): attacks = Vector() mobileTemplate.setDefaultAttack('saberHit') mobileTemplate.setAttacks(attacks) + + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['jedi_relic_1'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 85 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + lootPoolNames_3 = ['powercrystals_hiq'] + lootPoolChances_3 = [100] + lootGroupChance_3 = 12 + mobileTemplate.addToLootGroups(lootPoolNames_3,lootPoolChances_3,lootGroupChance_3) + + lootPoolNames_4 = ['random_stat_jewelry'] + lootPoolChances_4 = [100] + lootGroupChance_4 = 8 + mobileTemplate.addToLootGroups(lootPoolNames_4,lootPoolChances_4,lootGroupChance_4) + + lootPoolNames_5 = ['sithholocrons'] + lootPoolChances_5 = [100] + lootGroupChance_5 = 3 + mobileTemplate.addToLootGroups(lootPoolNames_5,lootPoolChances_5,lootGroupChance_5) core.spawnService.addMobileTemplate('dark_jedi_master', mobileTemplate) \ No newline at end of file diff --git a/scripts/mobiles/dantooine/fierce_piket_protector.py b/scripts/mobiles/dantooine/fierce_piket_protector.py new file mode 100644 index 00000000..28bd6d9b --- /dev/null +++ b/scripts/mobiles/dantooine/fierce_piket_protector.py @@ -0,0 +1,42 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('fierce_piket_protector') + mobileTemplate.setLevel(68) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(0) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(0) + mobileTemplate.setBoneType("Avian Bone") + mobileTemplate.setHideAmount(0) + mobileTemplate.setSocialGroup("piket") + mobileTemplate.setAssistRange(1) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_piket_longhorn.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('fierce_piket_protector', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/frenzied_graul.py b/scripts/mobiles/dantooine/frenzied_graul.py new file mode 100644 index 00000000..6136f813 --- /dev/null +++ b/scripts/mobiles/dantooine/frenzied_graul.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('frenzied_graul') + mobileTemplate.setLevel(72) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(1025) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(950) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(855) + mobileTemplate.setSocialGroup("graul") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_slinking_voritor_hunter.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('frenzied_graul', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/grassland_voritor_tracker.py b/scripts/mobiles/dantooine/grassland_voritor_tracker.py new file mode 100644 index 00000000..ead1fdf3 --- /dev/null +++ b/scripts/mobiles/dantooine/grassland_voritor_tracker.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('grassland_voritor_tracker') + mobileTemplate.setLevel(69) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(45) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(35) + mobileTemplate.setBoneType("Avian Bone") + mobileTemplate.setHideAmount(40) + mobileTemplate.setSocialGroup("voritor lizard") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_grassland_voritor_tracker.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('grassland_voritor_tracker', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/graul.py b/scripts/mobiles/dantooine/graul.py new file mode 100644 index 00000000..6376c849 --- /dev/null +++ b/scripts/mobiles/dantooine/graul.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('graul') + mobileTemplate.setLevel(73) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(950) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(875) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(775) + mobileTemplate.setSocialGroup("graul") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_graul.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('graul', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/graul_mangler.py b/scripts/mobiles/dantooine/graul_mangler.py new file mode 100644 index 00000000..03cb6e5f --- /dev/null +++ b/scripts/mobiles/dantooine/graul_mangler.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('graul_mangler') + mobileTemplate.setLevel(70) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(950) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(875) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(775) + mobileTemplate.setSocialGroup("graul") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_graul.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('graul_mangler', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/graul_marauder.py b/scripts/mobiles/dantooine/graul_marauder.py new file mode 100644 index 00000000..a3abb435 --- /dev/null +++ b/scripts/mobiles/dantooine/graul_marauder.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('graul_marauder') + mobileTemplate.setLevel(73) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(950) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(875) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(775) + mobileTemplate.setSocialGroup("graul") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_graul.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('graul_marauder', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/graul_mauler.py b/scripts/mobiles/dantooine/graul_mauler.py new file mode 100644 index 00000000..a7a221bf --- /dev/null +++ b/scripts/mobiles/dantooine/graul_mauler.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('graul_mauler') + mobileTemplate.setLevel(75) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(950) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(875) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(775) + mobileTemplate.setSocialGroup("graul") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_graul.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('graul_mauler', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/horned_voritor_jungle_lizard.py b/scripts/mobiles/dantooine/horned_voritor_jungle_lizard.py new file mode 100644 index 00000000..1c54312e --- /dev/null +++ b/scripts/mobiles/dantooine/horned_voritor_jungle_lizard.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('horned_voritor_jungle_lizard') + mobileTemplate.setLevel(73) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(65) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(40) + mobileTemplate.setBoneType("Avian Bone") + mobileTemplate.setHideAmount(50) + mobileTemplate.setSocialGroup("voritor lizard") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_voritor_lizard.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('horned_voritor_jungle_lizard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/hostile_thune_mother.py b/scripts/mobiles/dantooine/hostile_thune_mother.py new file mode 100644 index 00000000..91953e60 --- /dev/null +++ b/scripts/mobiles/dantooine/hostile_thune_mother.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('hostile_thune_mother') + mobileTemplate.setLevel(69) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(135) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(150) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(0) + mobileTemplate.setSocialGroup("thune") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_thune.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('hostile_thune_mother', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/huurton.py b/scripts/mobiles/dantooine/huurton.py new file mode 100644 index 00000000..ffecdd01 --- /dev/null +++ b/scripts/mobiles/dantooine/huurton.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('huurton') + mobileTemplate.setLevel(60) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(15) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(10) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(15) + mobileTemplate.setSocialGroup("huurton") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_huurton.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('huurton', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/huurton_bloodhunter.py b/scripts/mobiles/dantooine/huurton_bloodhunter.py new file mode 100644 index 00000000..b475e391 --- /dev/null +++ b/scripts/mobiles/dantooine/huurton_bloodhunter.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('huurton_bloodhunter') + mobileTemplate.setLevel(64) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(15) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(10) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(15) + mobileTemplate.setSocialGroup("huurton") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_huurton.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('huurton_bloodhunter', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/huurton_howler.py b/scripts/mobiles/dantooine/huurton_howler.py new file mode 100644 index 00000000..298d084c --- /dev/null +++ b/scripts/mobiles/dantooine/huurton_howler.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('huurton_howler') + mobileTemplate.setLevel(65) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(15) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(10) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(15) + mobileTemplate.setSocialGroup("huurton") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_huurton.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('huurton_howler', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/huurton_huntress.py b/scripts/mobiles/dantooine/huurton_huntress.py new file mode 100644 index 00000000..9e100764 --- /dev/null +++ b/scripts/mobiles/dantooine/huurton_huntress.py @@ -0,0 +1,44 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('huurton_huntress') + mobileTemplate.setLevel(62) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(15) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(10) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(15) + mobileTemplate.setSocialGroup("huurton") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) + + + templates = Vector() + templates.add('object/mobile/shared_huurton.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('huurton_huntress', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/huurton_matron.py b/scripts/mobiles/dantooine/huurton_matron.py new file mode 100644 index 00000000..7a4e8537 --- /dev/null +++ b/scripts/mobiles/dantooine/huurton_matron.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('huurton_matron') + mobileTemplate.setLevel(61) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(15) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(10) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(15) + mobileTemplate.setSocialGroup("huurton") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_huurton.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('huurton_matron', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/huurton_pub.py b/scripts/mobiles/dantooine/huurton_pub.py new file mode 100644 index 00000000..d1d57c75 --- /dev/null +++ b/scripts/mobiles/dantooine/huurton_pub.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('huurton_pub') + mobileTemplate.setLevel(60) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(10) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(5) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(5) + mobileTemplate.setSocialGroup("huurton") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_huurton_pup.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('huurton_pub', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/huurton_reaper.py b/scripts/mobiles/dantooine/huurton_reaper.py new file mode 100644 index 00000000..244538f7 --- /dev/null +++ b/scripts/mobiles/dantooine/huurton_reaper.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('huurton_reaper') + mobileTemplate.setLevel(65) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(25) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(10) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(25) + mobileTemplate.setSocialGroup("huurton") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_huurton.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('huurton_reaper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/huurton_stalker.py b/scripts/mobiles/dantooine/huurton_stalker.py new file mode 100644 index 00000000..381d1716 --- /dev/null +++ b/scripts/mobiles/dantooine/huurton_stalker.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('huurton_stalker') + mobileTemplate.setLevel(60) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(15) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(10) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(15) + mobileTemplate.setSocialGroup("huurton") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_huurton.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('huurton_stalker', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/infant_graul.py b/scripts/mobiles/dantooine/infant_graul.py new file mode 100644 index 00000000..c38fc121 --- /dev/null +++ b/scripts/mobiles/dantooine/infant_graul.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('infant_graul') + mobileTemplate.setLevel(68) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(700) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(750) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(650) + mobileTemplate.setSocialGroup("graul") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_infant_graul.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('infant_graul', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/janta_clan_leader.py b/scripts/mobiles/dantooine/janta_clan_leader.py new file mode 100644 index 00000000..0fcd13a9 --- /dev/null +++ b/scripts/mobiles/dantooine/janta_clan_leader.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('janta_clan_leader') + mobileTemplate.setLevel(74) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(False) + mobileTemplate.setSocialGroup('janta tribe') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('janta_clan_leader', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/janta_harvester.py b/scripts/mobiles/dantooine/janta_harvester.py new file mode 100644 index 00000000..37774060 --- /dev/null +++ b/scripts/mobiles/dantooine/janta_harvester.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('janta_harvester') + mobileTemplate.setLevel(74) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('janta tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('janta_harvester', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/janta_herbalist.py b/scripts/mobiles/dantooine/janta_herbalist.py new file mode 100644 index 00000000..389e2a19 --- /dev/null +++ b/scripts/mobiles/dantooine/janta_herbalist.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('janta_herbalist') + mobileTemplate.setLevel(74) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('janta tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('janta_herbalist', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/janta_hunter.py b/scripts/mobiles/dantooine/janta_hunter.py new file mode 100644 index 00000000..615824ff --- /dev/null +++ b/scripts/mobiles/dantooine/janta_hunter.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('janta_hunter') + mobileTemplate.setLevel(76) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('janta tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('janta_hunter', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/janta_loreweaver.py b/scripts/mobiles/dantooine/janta_loreweaver.py new file mode 100644 index 00000000..978e8d6a --- /dev/null +++ b/scripts/mobiles/dantooine/janta_loreweaver.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('janta_loreweaver') + mobileTemplate.setLevel(74) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('janta tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('janta_loreweaver', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/janta_primalist.py b/scripts/mobiles/dantooine/janta_primalist.py new file mode 100644 index 00000000..5fd402ca --- /dev/null +++ b/scripts/mobiles/dantooine/janta_primalist.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('janta_primalist') + mobileTemplate.setLevel(75) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('janta tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('janta_primalist', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/janta_rockshaper.py b/scripts/mobiles/dantooine/janta_rockshaper.py new file mode 100644 index 00000000..7693c555 --- /dev/null +++ b/scripts/mobiles/dantooine/janta_rockshaper.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('janta_rockshaper') + mobileTemplate.setLevel(76) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('janta tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('janta_rockshaper', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/janta_scout.py b/scripts/mobiles/dantooine/janta_scout.py new file mode 100644 index 00000000..dc58aa98 --- /dev/null +++ b/scripts/mobiles/dantooine/janta_scout.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('janta_scout') + mobileTemplate.setLevel(75) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('janta tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('janta_scout', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/janta_shaman.py b/scripts/mobiles/dantooine/janta_shaman.py new file mode 100644 index 00000000..f7479a02 --- /dev/null +++ b/scripts/mobiles/dantooine/janta_shaman.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('janta_shaman') + mobileTemplate.setLevel(76) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('janta tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('janta_shaman', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/janta_soothsayer.py b/scripts/mobiles/dantooine/janta_soothsayer.py new file mode 100644 index 00000000..f1842636 --- /dev/null +++ b/scripts/mobiles/dantooine/janta_soothsayer.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('janta_soothsayer') + mobileTemplate.setLevel(77) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('janta tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('janta_soothsayer', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/janta_tribesman.py b/scripts/mobiles/dantooine/janta_tribesman.py new file mode 100644 index 00000000..a741208b --- /dev/null +++ b/scripts/mobiles/dantooine/janta_tribesman.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('janta_tribesman') + mobileTemplate.setLevel(77) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('janta tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('janta_tribesman', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/janta_warrior.py b/scripts/mobiles/dantooine/janta_warrior.py new file mode 100644 index 00000000..2f142551 --- /dev/null +++ b/scripts/mobiles/dantooine/janta_warrior.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('janta_warrior') + mobileTemplate.setLevel(77) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('janta tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('janta_warrior', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/kunga_clan_leader.py b/scripts/mobiles/dantooine/kunga_clan_leader.py new file mode 100644 index 00000000..00311d37 --- /dev/null +++ b/scripts/mobiles/dantooine/kunga_clan_leader.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('kunga_clan_leader') + mobileTemplate.setLevel(72) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('kunga tribe') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('kunga_clan_leader', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/kunga_clan_primalist.py b/scripts/mobiles/dantooine/kunga_clan_primalist.py new file mode 100644 index 00000000..ea256156 --- /dev/null +++ b/scripts/mobiles/dantooine/kunga_clan_primalist.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('kunga_clan_primalist') + mobileTemplate.setLevel(71) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(False) + mobileTemplate.setSocialGroup('kunga tribe') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('kunga_clan_primalist', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/kunga_harvester.py b/scripts/mobiles/dantooine/kunga_harvester.py new file mode 100644 index 00000000..c1f95881 --- /dev/null +++ b/scripts/mobiles/dantooine/kunga_harvester.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('kunga_harvester') + mobileTemplate.setLevel(70) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(False) + mobileTemplate.setSocialGroup('kunga tribe') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('kunga_harvester', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/kunga_herbalist.py b/scripts/mobiles/dantooine/kunga_herbalist.py new file mode 100644 index 00000000..7b0e8887 --- /dev/null +++ b/scripts/mobiles/dantooine/kunga_herbalist.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('kunga_herbalist') + mobileTemplate.setLevel(70) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(False) + mobileTemplate.setSocialGroup('kunga tribe') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('kunga_herbalist', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/kunga_hunter.py b/scripts/mobiles/dantooine/kunga_hunter.py new file mode 100644 index 00000000..d5952172 --- /dev/null +++ b/scripts/mobiles/dantooine/kunga_hunter.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('kunga_hunter') + mobileTemplate.setLevel(70) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('kunga tribe') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('kunga_hunter', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/kunga_loreweaver.py b/scripts/mobiles/dantooine/kunga_loreweaver.py new file mode 100644 index 00000000..eab9c3df --- /dev/null +++ b/scripts/mobiles/dantooine/kunga_loreweaver.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('kunga_loreweaver') + mobileTemplate.setLevel(69) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('kunga tribe') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('kunga_loreweaver', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/kunga_rockshaper.py b/scripts/mobiles/dantooine/kunga_rockshaper.py new file mode 100644 index 00000000..a6434514 --- /dev/null +++ b/scripts/mobiles/dantooine/kunga_rockshaper.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('kunga_rockshaper') + mobileTemplate.setLevel(70) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('kunga tribe') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('kunga_rockshaper', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/kunga_scout.py b/scripts/mobiles/dantooine/kunga_scout.py new file mode 100644 index 00000000..d5cd7e5c --- /dev/null +++ b/scripts/mobiles/dantooine/kunga_scout.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('kunga_scout') + mobileTemplate.setLevel(69) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('kunga tribe') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('kunga_scout', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/kunga_shaman.py b/scripts/mobiles/dantooine/kunga_shaman.py new file mode 100644 index 00000000..9dd33ef8 --- /dev/null +++ b/scripts/mobiles/dantooine/kunga_shaman.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('kunga_shaman') + mobileTemplate.setLevel(71) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('kunga tribe') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('kunga_shaman', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/kunga_soothsayer.py b/scripts/mobiles/dantooine/kunga_soothsayer.py new file mode 100644 index 00000000..d1321f7b --- /dev/null +++ b/scripts/mobiles/dantooine/kunga_soothsayer.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('kunga_soothsayer') + mobileTemplate.setLevel(70) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(False) + mobileTemplate.setSocialGroup('kunga tribe') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('kunga_soothsayer', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/kunga_tribe_member.py b/scripts/mobiles/dantooine/kunga_tribe_member.py new file mode 100644 index 00000000..df111848 --- /dev/null +++ b/scripts/mobiles/dantooine/kunga_tribe_member.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('kunga_tribe_member') + mobileTemplate.setLevel(71) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('kunga tribe') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('kunga_tribe_member', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/kunga_warrior.py b/scripts/mobiles/dantooine/kunga_warrior.py new file mode 100644 index 00000000..2bb31e22 --- /dev/null +++ b/scripts/mobiles/dantooine/kunga_warrior.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('kunga_warrior') + mobileTemplate.setLevel(71) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('kunga tribe') + mobileTemplate.setAssistRange(1) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('kunga_warrior', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/lesser_plains_bol.py b/scripts/mobiles/dantooine/lesser_plains_bol.py new file mode 100644 index 00000000..579a0c20 --- /dev/null +++ b/scripts/mobiles/dantooine/lesser_plains_bol.py @@ -0,0 +1,42 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('lesser_plains_bol') + mobileTemplate.setLevel(60) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(0) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(300) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(180) + mobileTemplate.setSocialGroup("bol") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_bol_hue.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('lesser_plains_bol', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/mammoth_thune.py b/scripts/mobiles/dantooine/mammoth_thune.py new file mode 100644 index 00000000..4fd07c82 --- /dev/null +++ b/scripts/mobiles/dantooine/mammoth_thune.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('mammoth_thune') + mobileTemplate.setLevel(70) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(225) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(190) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(0) + mobileTemplate.setSocialGroup("thune") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_thune_hue.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('mammoth_thune', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/mokk_clan_leader.py b/scripts/mobiles/dantooine/mokk_clan_leader.py new file mode 100644 index 00000000..a83c7a32 --- /dev/null +++ b/scripts/mobiles/dantooine/mokk_clan_leader.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mokk_clan_leader') + mobileTemplate.setLevel(68) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('mokk tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('mokk_clan_leader', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/mokk_clan_primalist.py b/scripts/mobiles/dantooine/mokk_clan_primalist.py new file mode 100644 index 00000000..839ed2eb --- /dev/null +++ b/scripts/mobiles/dantooine/mokk_clan_primalist.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mokk_clan_primalist') + mobileTemplate.setLevel(64) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(False) + mobileTemplate.setSocialGroup('mokk tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('mokk_clan_primalist', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/mokk_harvester.py b/scripts/mobiles/dantooine/mokk_harvester.py new file mode 100644 index 00000000..2fd08f45 --- /dev/null +++ b/scripts/mobiles/dantooine/mokk_harvester.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mokk_harvester') + mobileTemplate.setLevel(66) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(False) + mobileTemplate.setSocialGroup('mokk tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('mokk_harvester', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/mokk_herbalist.py b/scripts/mobiles/dantooine/mokk_herbalist.py new file mode 100644 index 00000000..c5cec1b7 --- /dev/null +++ b/scripts/mobiles/dantooine/mokk_herbalist.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mokk_herbalist') + mobileTemplate.setLevel(65) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(False) + mobileTemplate.setSocialGroup('mokk tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('mokk_herbalist', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/mokk_hunter.py b/scripts/mobiles/dantooine/mokk_hunter.py new file mode 100644 index 00000000..f56bac8c --- /dev/null +++ b/scripts/mobiles/dantooine/mokk_hunter.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mokk_hunter') + mobileTemplate.setLevel(66) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('mokk tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('mokk_hunter', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/mokk_loreweaver.py b/scripts/mobiles/dantooine/mokk_loreweaver.py new file mode 100644 index 00000000..c7df5a02 --- /dev/null +++ b/scripts/mobiles/dantooine/mokk_loreweaver.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mokk_loreweaver') + mobileTemplate.setLevel(64) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('mokk tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('mokk_loreweaver', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/mokk_rockshaper.py b/scripts/mobiles/dantooine/mokk_rockshaper.py new file mode 100644 index 00000000..24a5eb6d --- /dev/null +++ b/scripts/mobiles/dantooine/mokk_rockshaper.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mokk_rockshaper') + mobileTemplate.setLevel(66) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(False) + mobileTemplate.setSocialGroup('mokk tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('mokk_rockshaper', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/mokk_scout.py b/scripts/mobiles/dantooine/mokk_scout.py new file mode 100644 index 00000000..dd85d584 --- /dev/null +++ b/scripts/mobiles/dantooine/mokk_scout.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mokk_scout') + mobileTemplate.setLevel(64) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('mokk tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('mokk_scout', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/mokk_shaman.py b/scripts/mobiles/dantooine/mokk_shaman.py new file mode 100644 index 00000000..22df383e --- /dev/null +++ b/scripts/mobiles/dantooine/mokk_shaman.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mokk_shaman') + mobileTemplate.setLevel(65) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('mokk tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('mokk_shaman', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/mokk_soothsayer.py b/scripts/mobiles/dantooine/mokk_soothsayer.py new file mode 100644 index 00000000..866598a1 --- /dev/null +++ b/scripts/mobiles/dantooine/mokk_soothsayer.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mokk_soothsayer') + mobileTemplate.setLevel(67) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('mokk tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('mokk_soothsayer', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/mokk_tribesman.py b/scripts/mobiles/dantooine/mokk_tribesman.py new file mode 100644 index 00000000..530f4286 --- /dev/null +++ b/scripts/mobiles/dantooine/mokk_tribesman.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mokk_tribesman') + mobileTemplate.setLevel(66) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('mokk tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('mokk_tribesman', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/mokk_warrior.py b/scripts/mobiles/dantooine/mokk_warrior.py new file mode 100644 index 00000000..99fc43c8 --- /dev/null +++ b/scripts/mobiles/dantooine/mokk_warrior.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mokk_warrior') + mobileTemplate.setLevel(68) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(False) + mobileTemplate.setSocialGroup('mokk tribe') + mobileTemplate.setAssistRange(12) + + + templates = Vector() + templates.add('object/mobile/shared_dantari_male.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/knife/shared_knife_janta.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_janta.iff', 7, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + lootPoolNames_1 = ['Junk'] + lootPoolChances_1 = [100] + lootGroupChance_1 = 65 + mobileTemplate.addToLootGroups(lootPoolNames_1,lootPoolChances_1,lootGroupChance_1) + + lootPoolNames_2 = ['random_loot_primitives'] + lootPoolChances_2 = [100] + lootGroupChance_2 = 35 + mobileTemplate.addToLootGroups(lootPoolNames_2,lootPoolChances_2,lootGroupChance_2) + + core.spawnService.addMobileTemplate('mokk_warrior', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/piket.py b/scripts/mobiles/dantooine/piket.py new file mode 100644 index 00000000..82cb1618 --- /dev/null +++ b/scripts/mobiles/dantooine/piket.py @@ -0,0 +1,42 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('piket') + mobileTemplate.setLevel(61) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(35) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(25) + mobileTemplate.setBoneType("Avian Bone") + mobileTemplate.setHideAmount(30) + mobileTemplate.setSocialGroup("piket") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_piket.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('piket', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/piket_longhorn.py b/scripts/mobiles/dantooine/piket_longhorn.py new file mode 100644 index 00000000..24188d28 --- /dev/null +++ b/scripts/mobiles/dantooine/piket_longhorn.py @@ -0,0 +1,42 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('piket_longhorn') + mobileTemplate.setLevel(61) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(35) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(25) + mobileTemplate.setBoneType("Avian Bone") + mobileTemplate.setHideAmount(30) + mobileTemplate.setSocialGroup("piket") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_piket_longhorn.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('piket_longhorn', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/piket_longhorn_female.py b/scripts/mobiles/dantooine/piket_longhorn_female.py new file mode 100644 index 00000000..dfddbe58 --- /dev/null +++ b/scripts/mobiles/dantooine/piket_longhorn_female.py @@ -0,0 +1,42 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('piket') + mobileTemplate.setLevel(61) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(35) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(25) + mobileTemplate.setBoneType("Avian Bone") + mobileTemplate.setHideAmount(30) + mobileTemplate.setSocialGroup("piket") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_piket_longhorn.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('piket', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/piket_plains_walker.py b/scripts/mobiles/dantooine/piket_plains_walker.py new file mode 100644 index 00000000..5cdb310c --- /dev/null +++ b/scripts/mobiles/dantooine/piket_plains_walker.py @@ -0,0 +1,42 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('piket_plains_walker') + mobileTemplate.setLevel(61) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(35) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(25) + mobileTemplate.setBoneType("Avian Bone") + mobileTemplate.setHideAmount(30) + mobileTemplate.setSocialGroup("piket") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_piket_plains_walker.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('piket_plains_walker', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/quenker.py b/scripts/mobiles/dantooine/quenker.py new file mode 100644 index 00000000..9f575295 --- /dev/null +++ b/scripts/mobiles/dantooine/quenker.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('quenker') + mobileTemplate.setLevel(61) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(15) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(10) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(15) + mobileTemplate.setSocialGroup("quenker") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_quenker.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('quenker', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/quenker_ravager.py b/scripts/mobiles/dantooine/quenker_ravager.py new file mode 100644 index 00000000..125f1b1b --- /dev/null +++ b/scripts/mobiles/dantooine/quenker_ravager.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('quenker_ravager') + mobileTemplate.setLevel(67) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(15) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(10) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(15) + mobileTemplate.setSocialGroup("quenker") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_quenker_hue.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('quenker_ravager', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/quenker_relic_reaper.py b/scripts/mobiles/dantooine/quenker_relic_reaper.py new file mode 100644 index 00000000..ae6ec1a7 --- /dev/null +++ b/scripts/mobiles/dantooine/quenker_relic_reaper.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('quenker_relic_reaper') + mobileTemplate.setLevel(69) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(15) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(10) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(15) + mobileTemplate.setSocialGroup("quenker") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_quenker_relic_reaper.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('quenker_relic_reaper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/savage_quenker.py b/scripts/mobiles/dantooine/savage_quenker.py new file mode 100644 index 00000000..3f5a26b7 --- /dev/null +++ b/scripts/mobiles/dantooine/savage_quenker.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('savage_quenker') + mobileTemplate.setLevel(63) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(0) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(0) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(0) + mobileTemplate.setSocialGroup("quenker") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_quenker_relic_reaper.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('savage_quenker', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/seething_bol_crusher.py b/scripts/mobiles/dantooine/seething_bol_crusher.py new file mode 100644 index 00000000..61c1b251 --- /dev/null +++ b/scripts/mobiles/dantooine/seething_bol_crusher.py @@ -0,0 +1,42 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('seething_bol_crusher') + mobileTemplate.setLevel(70) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(0) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(300) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(180) + mobileTemplate.setSocialGroup("bol") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_bol.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('seething_bol_crusher', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/slice_hound.py b/scripts/mobiles/dantooine/slice_hound.py new file mode 100644 index 00000000..19175407 --- /dev/null +++ b/scripts/mobiles/dantooine/slice_hound.py @@ -0,0 +1,44 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('slice_hound') + mobileTemplate.setLevel(51) + mobileTemplate.setMinLevel(51) + mobileTemplate.setMaxLevel(51) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(65) + mobileTemplate.setHideType("Bristley Hide") + mobileTemplate.setBoneAmount(35) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(30) + mobileTemplate.setSocialGroup("slice_hound") + mobileTemplate.setAssistRange(1) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dewback.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('slice_hound', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/slinking_voritor_hunter.py b/scripts/mobiles/dantooine/slinking_voritor_hunter.py new file mode 100644 index 00000000..e4b22c92 --- /dev/null +++ b/scripts/mobiles/dantooine/slinking_voritor_hunter.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('slinking_voritor_hunter') + mobileTemplate.setLevel(78) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(90) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(65) + mobileTemplate.setBoneType("Avian Bone") + mobileTemplate.setHideAmount(50) + mobileTemplate.setSocialGroup("voritor lizard") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_slinking_voritor_hunter.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('slinking_voritor_hunter', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/spiked_slasher.py b/scripts/mobiles/dantooine/spiked_slasher.py new file mode 100644 index 00000000..2f3d2330 --- /dev/null +++ b/scripts/mobiles/dantooine/spiked_slasher.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('spiked_slasher') + mobileTemplate.setLevel(70) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(65) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(40) + mobileTemplate.setBoneType("Avian Bone") + mobileTemplate.setHideAmount(50) + mobileTemplate.setSocialGroup("voritor lizard") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_voritor_lizard_hue.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('spiked_slasher', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/stranded_rebel_scout.py b/scripts/mobiles/dantooine/stranded_rebel_scout.py new file mode 100644 index 00000000..af05c180 --- /dev/null +++ b/scripts/mobiles/dantooine/stranded_rebel_scout.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('stranded_rebel_scout') + mobileTemplate.setLevel(62) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(3) + mobileTemplate.setMaxSpawnDistance(5) + mobileTemplate.setDeathblow(True) + mobileTemplate.setSocialGroup('rebel') + mobileTemplate.setAssistRange(1) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_dressed_dark_jedi_male_human_01.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_dh17.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_rebel.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedShot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('stranded_rebel_scout', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/dantooine/swift_charging_bol.py b/scripts/mobiles/dantooine/swift_charging_bol.py new file mode 100644 index 00000000..0533c93c --- /dev/null +++ b/scripts/mobiles/dantooine/swift_charging_bol.py @@ -0,0 +1,42 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('swift_charging_bol') + mobileTemplate.setLevel(39) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(0) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(300) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(180) + mobileTemplate.setSocialGroup("bol") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_bol_hue.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('swift_charging_bol', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/terrible_quenker.py b/scripts/mobiles/dantooine/terrible_quenker.py new file mode 100644 index 00000000..de6a648c --- /dev/null +++ b/scripts/mobiles/dantooine/terrible_quenker.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('terrible_quenker') + mobileTemplate.setLevel(63) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(0) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(0) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(0) + mobileTemplate.setSocialGroup("quenker") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_quenker.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('terrible_quenker', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/thune.py b/scripts/mobiles/dantooine/thune.py new file mode 100644 index 00000000..e8653e89 --- /dev/null +++ b/scripts/mobiles/dantooine/thune.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('thune') + mobileTemplate.setLevel(68) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(115) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(125) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(0) + mobileTemplate.setSocialGroup("thune") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_thune.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('thune', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/thune_grassland_guardian.py b/scripts/mobiles/dantooine/thune_grassland_guardian.py new file mode 100644 index 00000000..9c99c933 --- /dev/null +++ b/scripts/mobiles/dantooine/thune_grassland_guardian.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('thune_grassland_guardian') + mobileTemplate.setLevel(72) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(135) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(150) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(0) + mobileTemplate.setSocialGroup("thune") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_thune_grassland_guardian.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('thune_grassland_guardian', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/thune_herd_leader.py b/scripts/mobiles/dantooine/thune_herd_leader.py new file mode 100644 index 00000000..3ab09c93 --- /dev/null +++ b/scripts/mobiles/dantooine/thune_herd_leader.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('thune_herd_leader') + mobileTemplate.setLevel(71) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(135) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(150) + mobileTemplate.setBoneType("Mammal Bone") + mobileTemplate.setHideAmount(0) + mobileTemplate.setSocialGroup("thune") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_thune_herd_leader.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('thune_herd_leader', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/vexed_voritor_lizard.py b/scripts/mobiles/dantooine/vexed_voritor_lizard.py new file mode 100644 index 00000000..84d6a944 --- /dev/null +++ b/scripts/mobiles/dantooine/vexed_voritor_lizard.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('vexed_voritor_lizard') + mobileTemplate.setLevel(73) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(50) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(50) + mobileTemplate.setBoneType("Avian Bone") + mobileTemplate.setHideAmount(50) + mobileTemplate.setSocialGroup("voritor lizard") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_vexed_voritor_lizard.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('vexed_voritor_lizard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/voritor_dasher.py b/scripts/mobiles/dantooine/voritor_dasher.py new file mode 100644 index 00000000..5b805437 --- /dev/null +++ b/scripts/mobiles/dantooine/voritor_dasher.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('voritor_dasher') + mobileTemplate.setLevel(72) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(40) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(30) + mobileTemplate.setBoneType("Avian Bone") + mobileTemplate.setHideAmount(35) + mobileTemplate.setSocialGroup("voritor lizard") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_voritor_dasher.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('voritor_dasher', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dantooine/voritor_lizard.py b/scripts/mobiles/dantooine/voritor_lizard.py new file mode 100644 index 00000000..b8b72b90 --- /dev/null +++ b/scripts/mobiles/dantooine/voritor_lizard.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + mobileTemplate.setCreatureName('voritor_lizard') + mobileTemplate.setLevel(71) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(5) + mobileTemplate.setMaxSpawnDistance(10) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(35) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(25) + mobileTemplate.setBoneType("Avian Bone") + mobileTemplate.setHideAmount(30) + mobileTemplate.setSocialGroup("voritor lizard") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_voritor_lizard.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('voritor_lizard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/dynamicgroups/bol_group_1.py b/scripts/mobiles/dynamicgroups/bol_group_1.py new file mode 100644 index 00000000..f26dd786 --- /dev/null +++ b/scripts/mobiles/dynamicgroups/bol_group_1.py @@ -0,0 +1,18 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('bol') + mobileTemplates.add('bol_pack_runner') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(2) + dynamicGroup.setName('bol_group_1') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('bol_group_1', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/frenzied_graul_1.py b/scripts/mobiles/dynamicgroups/frenzied_graul_1.py new file mode 100644 index 00000000..87f32125 --- /dev/null +++ b/scripts/mobiles/dynamicgroups/frenzied_graul_1.py @@ -0,0 +1,19 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('mammoth_thune') + mobileTemplates.add('thune') + mobileTemplates.add('thune_herd_leader') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('thunes_1') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('thunes_1', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/graul_mauler_nw_group_1.py b/scripts/mobiles/dynamicgroups/graul_mauler_nw_group_1.py new file mode 100644 index 00000000..288ff2b9 --- /dev/null +++ b/scripts/mobiles/dynamicgroups/graul_mauler_nw_group_1.py @@ -0,0 +1,17 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('graul_mauler') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('graul_mauler_nw_group_1') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('graul_mauler_nw_group_1', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/huurton_group_1.py b/scripts/mobiles/dynamicgroups/huurton_group_1.py new file mode 100644 index 00000000..d6fe32fa --- /dev/null +++ b/scripts/mobiles/dynamicgroups/huurton_group_1.py @@ -0,0 +1,22 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('huurton') + mobileTemplates.add('huurton_bloodhunter') + mobileTemplates.add('huurton_howler') + mobileTemplates.add('huurton_huntress') + mobileTemplates.add('huurton_matron') + mobileTemplates.add('huurton_reaper') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('huurton_group_1') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('huurton_group_1', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/huurton_group_2.py b/scripts/mobiles/dynamicgroups/huurton_group_2.py new file mode 100644 index 00000000..e66380e5 --- /dev/null +++ b/scripts/mobiles/dynamicgroups/huurton_group_2.py @@ -0,0 +1,20 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('huurton_bloodhunter') + mobileTemplates.add('huurton_howler') + mobileTemplates.add('huurton_huntress') + mobileTemplates.add('huurton_reaper') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('huurton_group_2') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('huurton_group_2', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/jantas_nw_group_1.py b/scripts/mobiles/dynamicgroups/jantas_nw_group_1.py new file mode 100644 index 00000000..eca673e4 --- /dev/null +++ b/scripts/mobiles/dynamicgroups/jantas_nw_group_1.py @@ -0,0 +1,28 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('janta_clan_leader') + mobileTemplates.add('janta_harvester') + mobileTemplates.add('janta_herbalist') + mobileTemplates.add('janta_hunter') + mobileTemplates.add('janta_loreweaver') + mobileTemplates.add('janta_primalist') + mobileTemplates.add('janta_rockshaper') + mobileTemplates.add('janta_scout') + mobileTemplates.add('janta_shaman') + mobileTemplates.add('janta_soothsayer') + mobileTemplates.add('janta_tribesman') + mobileTemplates.add('janta_warrior') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('jantas_nw_group_1') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('jantas_nw_group_1', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/kunga_central_group_1.py b/scripts/mobiles/dynamicgroups/kunga_central_group_1.py new file mode 100644 index 00000000..2c59e7c3 --- /dev/null +++ b/scripts/mobiles/dynamicgroups/kunga_central_group_1.py @@ -0,0 +1,28 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('kunga_clan_leader') + mobileTemplates.add('kunga_clan_primalist') + mobileTemplates.add('kunga_harvester') + mobileTemplates.add('kunga_herbalist') + mobileTemplates.add('kunga_hunter') + mobileTemplates.add('kunga_loreweaver') + mobileTemplates.add('kunga_rockshaper') + mobileTemplates.add('kunga_scout') + mobileTemplates.add('kunga_shaman') + mobileTemplates.add('kunga_soothsayer') + mobileTemplates.add('kunga_tribe_member') + mobileTemplates.add('kunga_warrior') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('kunga_central_group_1') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('kunga_central_group_1', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/mokk_group_1.py b/scripts/mobiles/dynamicgroups/mokk_group_1.py new file mode 100644 index 00000000..ceb31446 --- /dev/null +++ b/scripts/mobiles/dynamicgroups/mokk_group_1.py @@ -0,0 +1,28 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('mokk_clan_leader') + mobileTemplates.add('mokk_clan_primalist') + mobileTemplates.add('mokk_harvester') + mobileTemplates.add('mokk_herbalist') + mobileTemplates.add('mokk_hunter') + mobileTemplates.add('mokk_loreweaver') + mobileTemplates.add('mokk_rockshaper') + mobileTemplates.add('mokk_scout') + mobileTemplates.add('mokk_shaman') + mobileTemplates.add('mokk_soothsayer') + mobileTemplates.add('mokk_tribesman') + mobileTemplates.add('mokk_warrior') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('mokk_group_1') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('mokk_group_1', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/piket_longhorn_group_1.py b/scripts/mobiles/dynamicgroups/piket_longhorn_group_1.py new file mode 100644 index 00000000..6e5da709 --- /dev/null +++ b/scripts/mobiles/dynamicgroups/piket_longhorn_group_1.py @@ -0,0 +1,18 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('piket_longhorn') + mobileTemplates.add('piket_longhorn_female') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('piket_longhorn_group_1') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('piket_longhorn_group_1', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/piket_plains_walker_group.py b/scripts/mobiles/dynamicgroups/piket_plains_walker_group.py new file mode 100644 index 00000000..84bdefe0 --- /dev/null +++ b/scripts/mobiles/dynamicgroups/piket_plains_walker_group.py @@ -0,0 +1,17 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('piket_plains_walker') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('piket_plains_walker_group') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('piket_plains_walker_group', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/quenker_group_south_1.py b/scripts/mobiles/dynamicgroups/quenker_group_south_1.py new file mode 100644 index 00000000..c7a7382e --- /dev/null +++ b/scripts/mobiles/dynamicgroups/quenker_group_south_1.py @@ -0,0 +1,18 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('quenker_ravager') + mobileTemplates.add('quenker_relic_reaper') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('quenker_group_south_1') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('quenker_group_south_1', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/quenker_relic_reaper_group.py b/scripts/mobiles/dynamicgroups/quenker_relic_reaper_group.py new file mode 100644 index 00000000..ce21e847 --- /dev/null +++ b/scripts/mobiles/dynamicgroups/quenker_relic_reaper_group.py @@ -0,0 +1,17 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('quenker_relic_reaper') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('quenker_relic_reaper_group') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('quenker_relic_reaper_group', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/thune_group_2.py b/scripts/mobiles/dynamicgroups/thune_group_2.py new file mode 100644 index 00000000..0be9a58f --- /dev/null +++ b/scripts/mobiles/dynamicgroups/thune_group_2.py @@ -0,0 +1,19 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('thune') + mobileTemplates.add('thune_grassland_guardian') + mobileTemplates.add('thune_herd_leader') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('thune_group_2') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('thune_group_2', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/thunes_1.py b/scripts/mobiles/dynamicgroups/thunes_1.py new file mode 100644 index 00000000..87f32125 --- /dev/null +++ b/scripts/mobiles/dynamicgroups/thunes_1.py @@ -0,0 +1,19 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('mammoth_thune') + mobileTemplates.add('thune') + mobileTemplates.add('thune_herd_leader') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('thunes_1') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('thunes_1', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/voritor_nw_group_1.py b/scripts/mobiles/dynamicgroups/voritor_nw_group_1.py new file mode 100644 index 00000000..6e2e927c --- /dev/null +++ b/scripts/mobiles/dynamicgroups/voritor_nw_group_1.py @@ -0,0 +1,17 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('voritor_dasher') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('graul_mauler_nw_group_1') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('voritor_nw_group_1', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/voritors_east_group_1.py b/scripts/mobiles/dynamicgroups/voritors_east_group_1.py new file mode 100644 index 00000000..db34fc32 --- /dev/null +++ b/scripts/mobiles/dynamicgroups/voritors_east_group_1.py @@ -0,0 +1,21 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('horned_voritor_jungle_lizard') + mobileTemplates.add('vexed_voritor_lizard') + mobileTemplates.add('voritor_dasher') + mobileTemplates.add('voritor_lizard') + mobileTemplates.add('spiked_slasher') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(-3) + dynamicGroup.setName('voritors_east_group_1') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('voritors_east_group_1', dynamicGroup) + return diff --git a/scripts/mobiles/dynamicgroups/voritors_wild_1.py b/scripts/mobiles/dynamicgroups/voritors_wild_1.py new file mode 100644 index 00000000..7bd480b2 --- /dev/null +++ b/scripts/mobiles/dynamicgroups/voritors_wild_1.py @@ -0,0 +1,18 @@ +import sys +from services.spawn import DynamicSpawnGroup +from services.spawn import MobileTemplate +from java.util import Vector + +def addDynamicGroup(core): + dynamicGroup = DynamicSpawnGroup() + mobileTemplates = Vector() + mobileTemplates.add('slinking_voritor_hunter') + mobileTemplates.add('horned_voritor_jungle_lizard') + dynamicGroup.setMobiles(mobileTemplates) + dynamicGroup.setGroupMembersNumber(1) + dynamicGroup.setName('voritors_wild_1') + dynamicGroup.setMaxSpawns(-1) + dynamicGroup.setGroupMembersNumber(-5) + dynamicGroup.setMinSpawnDistance(150) + core.spawnService.addDynamicGroup('voritors_wild_1', dynamicGroup) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/ace_imp_bombardier_50.py b/scripts/mobiles/generic/faction/imperial/ace_imp_bombardier_50.py new file mode 100644 index 00000000..363baf48 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/ace_imp_bombardier_50.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_stormtrooper_bombardier') + mobileTemplate.setLevel(50) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_bombardier_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('imp_bombardier_50', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/ace_imp_bombardier_74.py b/scripts/mobiles/generic/faction/imperial/ace_imp_bombardier_74.py new file mode 100644 index 00000000..487d14bb --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/ace_imp_bombardier_74.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_stormtrooper_bombardier') + mobileTemplate.setLevel(74) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_bombardier_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('imp_bombardier_74', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/ace_imp_bombardier_89.py b/scripts/mobiles/generic/faction/imperial/ace_imp_bombardier_89.py new file mode 100644 index 00000000..94e068ea --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/ace_imp_bombardier_89.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_stormtrooper_bombardier') + mobileTemplate.setLevel(89) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_bombardier_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('imp_bombardier_89', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/ace_imp_storm_com_70.py b/scripts/mobiles/generic/faction/imperial/ace_imp_storm_com_70.py new file mode 100644 index 00000000..9d25176c --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/ace_imp_storm_com_70.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_storm_commando_hard') + mobileTemplate.setLevel(50) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_bombardier_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('imp_bombardier_50', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/ace_imp_storm_com_87.py b/scripts/mobiles/generic/faction/imperial/ace_imp_storm_com_87.py new file mode 100644 index 00000000..45c4052e --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/ace_imp_storm_com_87.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_storm_commando_hard') + mobileTemplate.setLevel(87) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_bombardier_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('imp_bombardier_87', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/ace_imp_storm_com_89.py b/scripts/mobiles/generic/faction/imperial/ace_imp_storm_com_89.py new file mode 100644 index 00000000..725d7074 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/ace_imp_storm_com_89.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_storm_commando_hard') + mobileTemplate.setLevel(89) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_bombardier_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('imp_bombardier_89', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/battle_droid_imp.py b/scripts/mobiles/generic/faction/imperial/battle_droid_imp.py new file mode 100644 index 00000000..079daeed --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/battle_droid_imp.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from resources.datatables import FactionStatus +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('imperial_battle_droid') + mobileTemplate.setLevel(83) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_battle_droid.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('battle_droid_imperial', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/battle_shocked_imp_noncom_32.py b/scripts/mobiles/generic/faction/imperial/battle_shocked_imp_noncom_32.py new file mode 100644 index 00000000..2ac09dd9 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/battle_shocked_imp_noncom_32.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_imperial_noncom_hard') + mobileTemplate.setLevel(32) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_black_blue.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('battle-shocked_imp_noncom_32', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/battle_shocked_imp_noncom_77.py b/scripts/mobiles/generic/faction/imperial/battle_shocked_imp_noncom_77.py new file mode 100644 index 00000000..a5ca17e9 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/battle_shocked_imp_noncom_77.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_imperial_noncom_hard') + mobileTemplate.setLevel(77) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_white_black.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('battle-shocked_imp_noncom_77', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/bombardier.py b/scripts/mobiles/generic/faction/imperial/bombardier.py new file mode 100644 index 00000000..03ce4779 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/bombardier.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('bombardier') + mobileTemplate.setLevel(15) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_bombardier_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('imp_bombardier', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/civil_patrol_captain.py b/scripts/mobiles/generic/faction/imperial/civil_patrol_captain.py new file mode 100644 index 00000000..7b11923f --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/civil_patrol_captain.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('imperial_civil_patrol_captain') + mobileTemplate.setLevel(7) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_patrol_member_01.iff') + templates.add('object/mobile/shared_dressed_patrol_member_02.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('civil_partrol_captain', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/civil_patrol_commander.py b/scripts/mobiles/generic/faction/imperial/civil_patrol_commander.py new file mode 100644 index 00000000..813f21c9 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/civil_patrol_commander.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('imperial_civil_patrol_commander') + mobileTemplate.setLevel(8) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_patrol_member_01.iff') + templates.add('object/mobile/shared_dressed_patrol_member_02.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('civil_partrol_commander', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/civil_patrol_corporal.py b/scripts/mobiles/generic/faction/imperial/civil_patrol_corporal.py new file mode 100644 index 00000000..b0bbe443 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/civil_patrol_corporal.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('imperial_civil_patrol_corporal') + mobileTemplate.setLevel(4) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_patrol_member_01.iff') + templates.add('object/mobile/shared_dressed_patrol_member_02.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('civil_partrol_corporal', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/civil_patrol_sergeant.py b/scripts/mobiles/generic/faction/imperial/civil_patrol_sergeant.py new file mode 100644 index 00000000..9ee4ebec --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/civil_patrol_sergeant.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('imperial_civil_patrol_sergeant') + mobileTemplate.setLevel(5) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_patrol_member_01.iff') + templates.add('object/mobile/shared_dressed_patrol_member_02.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('civil_partrol_sergeant', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/civillian_patrolman.py b/scripts/mobiles/generic/faction/imperial/civillian_patrolman.py new file mode 100644 index 00000000..0cad73ad --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/civillian_patrolman.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('imperial_civil_patrolman') + mobileTemplate.setLevel(2) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_patrol_member_01.iff') + templates.add('object/mobile/shared_dressed_patrol_member_02.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('civilian_patrolman', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/comm_operator.py b/scripts/mobiles/generic/faction/imperial/comm_operator.py new file mode 100644 index 00000000..c49bea93 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/comm_operator.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('comm_operator') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_imperial_lieutenant_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('comm_operator', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/command_security_guard.py b/scripts/mobiles/generic/faction/imperial/command_security_guard.py new file mode 100644 index 00000000..595473e7 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/command_security_guard.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('command_security_guard') + mobileTemplate.setLevel(15) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_imp_security_01.iff') + templates.add('object/mobile/shared_imp_security_02.iff') + templates.add('object/mobile/shared_imp_security_03.iff') + templates.add('object/mobile/shared_imp_security_04.iff') + templates.add('object/mobile/shared_imp_security_05.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('command_security_guard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/commander_byrne.py b/scripts/mobiles/generic/faction/imperial/commander_byrne.py new file mode 100644 index 00000000..88be6e1c --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/commander_byrne.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('commander_byrne') + mobileTemplate.setLevel(23) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_lian_byrne.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('commander_byrne', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/crackdown_stormtrooper_captain.py b/scripts/mobiles/generic/faction/imperial/crackdown_stormtrooper_captain.py new file mode 100644 index 00000000..c08459d3 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/crackdown_stormtrooper_captain.py @@ -0,0 +1,41 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_imperial_army_captain_hard') + mobileTemplate.setLevel(60) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_captain_black_black.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_captain_black_gold.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_captain_white_white.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('crackdown_stormtrooper_captain_hard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/dark_nova_trooper.py b/scripts/mobiles/generic/faction/imperial/dark_nova_trooper.py new file mode 100644 index 00000000..9187289b --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/dark_nova_trooper.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('stormtrooper_dark_trooper_novatrooper') + mobileTemplate.setLevel(82) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_dark_trooper_black_hole.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('dark_novatrooper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/dark_trooper.py b/scripts/mobiles/generic/faction/imperial/dark_trooper.py new file mode 100644 index 00000000..733beb8d --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/dark_trooper.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dark_trooper') + mobileTemplate.setLevel(32) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dark_trooper.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('dark_trooper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/decorated_imperial_colonel_50.py b/scripts/mobiles/generic/faction/imperial/decorated_imperial_colonel_50.py new file mode 100644 index 00000000..a97bb9aa --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/decorated_imperial_colonel_50.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_imperial_colonel_hard') + mobileTemplate.setLevel(50) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_imperial_colonel_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('decorated_imperial_col_50', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/decorated_imperial_colonel_87.py b/scripts/mobiles/generic/faction/imperial/decorated_imperial_colonel_87.py new file mode 100644 index 00000000..4152d35a --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/decorated_imperial_colonel_87.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_imperial_colonel_hard') + mobileTemplate.setLevel(87) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_imperial_colonel_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('decorated_imperial_col_87', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/detention_security_guard.py b/scripts/mobiles/generic/faction/imperial/detention_security_guard.py new file mode 100644 index 00000000..7492ad42 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/detention_security_guard.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('detention_security_guard') + mobileTemplate.setLevel(15) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_stormtrooper.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('detention_security_guard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/droid_corps_junior_technican.py b/scripts/mobiles/generic/faction/imperial/droid_corps_junior_technican.py new file mode 100644 index 00000000..c6279dee --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/droid_corps_junior_technican.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('imperial_probot_handler') + mobileTemplate.setLevel(15) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_imperial_mechanic_nils_cridmeen.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_striker.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('droid_corps_junior_technican', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_dark_trooper.py b/scripts/mobiles/generic/faction/imperial/elite_dark_trooper.py new file mode 100644 index 00000000..4848aea0 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_dark_trooper.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dark_trooper') + mobileTemplate.setLevel(64) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dark_trooper.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('dark_trooper_elite', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_exogen_class_dark_trooper.py b/scripts/mobiles/generic/faction/imperial/elite_exogen_class_dark_trooper.py new file mode 100644 index 00000000..d70efda8 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_exogen_class_dark_trooper.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_elite_dark_trooper') + mobileTemplate.setLevel(88) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_assault_trooper_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('exogen_dark_trooper_elite', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_master_sergant_34.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_master_sergant_34.py new file mode 100644 index 00000000..bd539212 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_master_sergant_34.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_imperial_master_sergeant_hard') + mobileTemplate.setLevel(34) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_white_black.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('elite_imperial_master_serg_34', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_master_sergant_79.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_master_sergant_79.py new file mode 100644 index 00000000..a319b48a --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_master_sergant_79.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_imperial_master_sergeant_hard') + mobileTemplate.setLevel(79) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_white_black.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('elite_imperial_master_serg_79', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_sand_trooper_50.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_sand_trooper_50.py new file mode 100644 index 00000000..22a6a550 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_sand_trooper_50.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_sand_trooper_hard') + mobileTemplate.setLevel(50) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_sand_trooper_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('elite_imperial_sand_trooper_50', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_sand_trooper_85.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_sand_trooper_85.py new file mode 100644 index 00000000..474a1cd6 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_sand_trooper_85.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_sand_trooper_hard') + mobileTemplate.setLevel(85) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_sand_trooper_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('elite_imperial_sand_trooper_85', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_scout_trooper_45.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_scout_trooper_45.py new file mode 100644 index 00000000..2546acbc --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_scout_trooper_45.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_scout_trooper_hard') + mobileTemplate.setLevel(45) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_scout_trooper_white_white.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('elite_imperial_scout_trooper_45', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_scout_trooper_84.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_scout_trooper_84.py new file mode 100644 index 00000000..74d1f859 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_scout_trooper_84.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_scout_trooper_hard') + mobileTemplate.setLevel(84) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_scout_trooper_white_white.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('elite_imperial_scout_trooper_84', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_security_guard_25.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_security_guard_25.py new file mode 100644 index 00000000..b79aea15 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_security_guard_25.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_command_security_guard_hard') + mobileTemplate.setLevel(25) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_white_black.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('elite_imperial_secuirty_guard_25', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_security_guard_76.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_security_guard_76.py new file mode 100644 index 00000000..15aced1b --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_security_guard_76.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_command_security_guard_hard') + mobileTemplate.setLevel(76) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_white_black.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('elite_imperial_secuirty_guard_76', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_stormcaptain.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormcaptain.py new file mode 100644 index 00000000..89fbea49 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormcaptain.py @@ -0,0 +1,41 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_stormtrooper_captain') + mobileTemplate.setLevel(89) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_captain_black_gold.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_captain_black_black.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_captain_white_white.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('elite_imperial_stormcaptain', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_stormrifle_50.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormrifle_50.py new file mode 100644 index 00000000..3c3ba47a --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormrifle_50.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_stormtrooper_rifleman_hard') + mobileTemplate.setLevel(50) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_rifleman_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('elite_imperial_stormrifle_50', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_stormrifle_85.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormrifle_85.py new file mode 100644 index 00000000..1dc2a9a3 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormrifle_85.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_stormtrooper_rifleman_hard') + mobileTemplate.setLevel(85) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_rifleman_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('elite_imperial_stormrifle_85', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_stormrifle_88.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormrifle_88.py new file mode 100644 index 00000000..59f88981 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormrifle_88.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_stormtrooper_rifleman_hard') + mobileTemplate.setLevel(88) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_rifleman_m.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_e11.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('elite_imperial_stormrifle_88', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_stormsniper_50.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormsniper_50.py new file mode 100644 index 00000000..fa730f82 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormsniper_50.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_stormtrooper_sniper_hard') + mobileTemplate.setLevel(50) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_sniper_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('elite_imperial_stormsniper_50', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_stormsniper_85.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormsniper_85.py new file mode 100644 index 00000000..b4bc4d49 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormsniper_85.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_stormtrooper_sniper_hard') + mobileTemplate.setLevel(85) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_sniper_m.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_e11.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('elite_imperial_stormsniper_85', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_stormsniper_89.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormsniper_89.py new file mode 100644 index 00000000..5448adaf --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormsniper_89.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_stormtrooper_sniper_hard') + mobileTemplate.setLevel(89) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_sniper_m.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_e11.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('elite_imperial_stormsniper_89', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_stormtrooper_50.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormtrooper_50.py new file mode 100644 index 00000000..ea451405 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormtrooper_50.py @@ -0,0 +1,52 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_stormtrooper_hard') + mobileTemplate.setLevel(50) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_black_black.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_blue.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_gold.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_green.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_grey.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_red.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_white.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_black.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_blue.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_gold.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_green.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_grey.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_red.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_white.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('elite_imperial_stormrifle_50', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_stormtrooper_84.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormtrooper_84.py new file mode 100644 index 00000000..fc39dcfa --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormtrooper_84.py @@ -0,0 +1,52 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_stormtrooper_hard') + mobileTemplate.setLevel(84) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_black_black.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_blue.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_gold.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_green.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_grey.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_red.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_white.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_black.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_blue.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_gold.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_green.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_grey.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_red.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_white.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('elite_imperial_stormrifle_84', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_imperial_stormtrooper_89.py b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormtrooper_89.py new file mode 100644 index 00000000..05374d3e --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_imperial_stormtrooper_89.py @@ -0,0 +1,52 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_stormtrooper_hard') + mobileTemplate.setLevel(89) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_black_black.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_blue.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_gold.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_green.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_grey.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_red.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_black_white.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_black.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_blue.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_gold.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_green.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_grey.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_red.iff') + templates.add('object/mobile/shared_dressed_stormtrooper_white_white.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('elite_imperial_stormrifle_89', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_novatrooper.py b/scripts/mobiles/generic/faction/imperial/elite_novatrooper.py new file mode 100644 index 00000000..735ff361 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_novatrooper.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('stormtrooper_novatrooper_elite') + mobileTemplate.setLevel(82) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_restuss_dark_trooper.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('elite_novatrooper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/elite_novatrooper_commander.py b/scripts/mobiles/generic/faction/imperial/elite_novatrooper_commander.py new file mode 100644 index 00000000..0e4f05ad --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/elite_novatrooper_commander.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('stormtrooper_novatrooper_elite_commander') + mobileTemplate.setLevel(83) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_restuss_dark_trooper.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('elite_novatrooper_commander', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/emperors_hand.py b/scripts/mobiles/generic/faction/imperial/emperors_hand.py new file mode 100644 index 00000000..4b59b4cd --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/emperors_hand.py @@ -0,0 +1,42 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('emperors_hand') + mobileTemplate.setLevel(80) + mobileTemplate.setDifficulty(2) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_emperors_hand_human_female_01.iff') + templates.add('object/mobile/shared_dressed_emperors_hand_human_male_01.iff') + templates.add('object/mobile/shared_dressed_emperors_hand_human_male_02.iff') + templates.add('object/mobile/shared_dressed_emperors_hand_zabrak_male_01.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('emperors_hand', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/exogen_class_dark_trooper.py b/scripts/mobiles/generic/faction/imperial/exogen_class_dark_trooper.py new file mode 100644 index 00000000..00df93f9 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/exogen_class_dark_trooper.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_elite_dark_trooper') + mobileTemplate.setLevel(64) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dark_trooper.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('exogen_dark_trooper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/experienced_imp_captain_45.py b/scripts/mobiles/generic/faction/imperial/experienced_imp_captain_45.py new file mode 100644 index 00000000..c67258d5 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/experienced_imp_captain_45.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_imperial_army_captain_hard') + mobileTemplate.setLevel(45) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + 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('exp_imp_captain_45', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/experienced_imp_captain_85.py b/scripts/mobiles/generic/faction/imperial/experienced_imp_captain_85.py new file mode 100644 index 00000000..a0a0ac82 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/experienced_imp_captain_85.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_imperial_army_captain_hard') + mobileTemplate.setLevel(85) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + 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('exp_imp_captain_85', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/experienced_imp_corporal_40.py b/scripts/mobiles/generic/faction/imperial/experienced_imp_corporal_40.py new file mode 100644 index 00000000..b6770e96 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/experienced_imp_corporal_40.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_imperial_corporal_hard') + mobileTemplate.setLevel(40) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + 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('exp_imp_corporal_40', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/experienced_imp_corporal_78.py b/scripts/mobiles/generic/faction/imperial/experienced_imp_corporal_78.py new file mode 100644 index 00000000..c3a3b42c --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/experienced_imp_corporal_78.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_imperial_corporal_hard') + mobileTemplate.setLevel(78) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + 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('exp_imp_corporal_78', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/glory_class_dark_trooper.py b/scripts/mobiles/generic/faction/imperial/glory_class_dark_trooper.py new file mode 100644 index 00000000..9cffee1c --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/glory_class_dark_trooper.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_dark_trooper_hard') + mobileTemplate.setLevel(50) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_sand_trooper_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('glory_trooper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/glory_class_dark_trooper_2.py b/scripts/mobiles/generic/faction/imperial/glory_class_dark_trooper_2.py new file mode 100644 index 00000000..16fd71f7 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/glory_class_dark_trooper_2.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_dark_trooper_hard') + mobileTemplate.setLevel(86) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_sand_trooper_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('glory_trooper_2', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/imp_assault_trooper.py b/scripts/mobiles/generic/faction/imperial/imp_assault_trooper.py new file mode 100644 index 00000000..823b837e --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/imp_assault_trooper.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('assault_trooper') + mobileTemplate.setLevel(26) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_assault_trooper_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('imp_assault_trooper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/imp_assault_trooper_squad_leader.py b/scripts/mobiles/generic/faction/imperial/imp_assault_trooper_squad_leader.py new file mode 100644 index 00000000..d533ef40 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/imp_assault_trooper_squad_leader.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_stormtrooper_squad_leader') + mobileTemplate.setLevel(27) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_assault_trooper_m.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_e11.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('imp_assault_trooper_squadleader', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/opressor_7_dark_trooper_80.py b/scripts/mobiles/generic/faction/imperial/opressor_7_dark_trooper_80.py new file mode 100644 index 00000000..af33a86e --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/opressor_7_dark_trooper_80.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_elite_dark_trooper_hard') + mobileTemplate.setLevel(80) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dark_trooper.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('opp_7_80', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/opressor_7_dark_trooper_88.py b/scripts/mobiles/generic/faction/imperial/opressor_7_dark_trooper_88.py new file mode 100644 index 00000000..a038e41c --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/opressor_7_dark_trooper_88.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('fbase_elite_dark_trooper_extreme') + mobileTemplate.setLevel(88) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1.1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_dark_trooper_black_hole.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('opp_7_88', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/opressor_9_dark_trooper.py b/scripts/mobiles/generic/faction/imperial/opressor_9_dark_trooper.py new file mode 100644 index 00000000..c5020349 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/opressor_9_dark_trooper.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_elite_dark_trooper_hard') + mobileTemplate.setLevel(89) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1.1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dark_trooper.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('opp_9', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/probot_drone.py b/scripts/mobiles/generic/faction/imperial/probot_drone.py new file mode 100644 index 00000000..93ebf69e --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/probot_drone.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_dark_trooper') + mobileTemplate.setLevel(5) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1.1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_probot.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('probot_drone', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/probot_seeker.py b/scripts/mobiles/generic/faction/imperial/probot_seeker.py new file mode 100644 index 00000000..1763cc08 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/probot_seeker.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('imperial_probot_drone') + mobileTemplate.setLevel(8) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1.1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_probot.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('probot_seeker', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/super_battle_droid_imp.py b/scripts/mobiles/generic/faction/imperial/super_battle_droid_imp.py new file mode 100644 index 00000000..be0beb50 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/super_battle_droid_imp.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('imperial_battle_droid') + mobileTemplate.setLevel(86) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_super_battle_droid.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('sbd_imperials', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/triumphant_class_dark_trooper.py b/scripts/mobiles/generic/faction/imperial/triumphant_class_dark_trooper.py new file mode 100644 index 00000000..e4a8c776 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/triumphant_class_dark_trooper.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_elite_dark_trooper_hard') + mobileTemplate.setLevel(90) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1.1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dark_trooper.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('opp_9', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/veteran_dark_trooper.py b/scripts/mobiles/generic/faction/imperial/veteran_dark_trooper.py new file mode 100644 index 00000000..ac96ee57 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/veteran_dark_trooper.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('veteran_dark_trooper') + mobileTemplate.setLevel(79) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1.1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dark_trooper.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('vet_dark_trooper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/victory_class_dark_trooper_32.py b/scripts/mobiles/generic/faction/imperial/victory_class_dark_trooper_32.py new file mode 100644 index 00000000..09d9e16d --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/victory_class_dark_trooper_32.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_dark_trooper') + mobileTemplate.setLevel(32) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1.1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dark_trooper.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('vic_dark_trooper_32', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/victory_class_dark_trooper_80.py b/scripts/mobiles/generic/faction/imperial/victory_class_dark_trooper_80.py new file mode 100644 index 00000000..aaea6b85 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/victory_class_dark_trooper_80.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('crackdown_dark_trooper') + mobileTemplate.setLevel(80) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1.1) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dark_trooper.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('vic_dark_trooper_80', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/lairgroups/dantooine_mining_area.py b/scripts/mobiles/lairgroups/dantooine_mining_area.py new file mode 100644 index 00000000..19cf6d7d --- /dev/null +++ b/scripts/mobiles/lairgroups/dantooine_mining_area.py @@ -0,0 +1,19 @@ +import sys +from services.spawn import LairSpawnTemplate +from java.util import Vector + +def addLairGroup(core): + spawnTemplate1 = LairSpawnTemplate(-1, 'dantooine_huurton_lair_1', -1, -1) + spawnTemplate2 = LairSpawnTemplate(-1, 'dantooine_huurton_lair_2', -1, -1) + spawnTemplate3 = LairSpawnTemplate(-1, 'dantooine_bol_lair_1', -1, -1) + spawnTemplate4 = LairSpawnTemplate(-1, 'dantooine_piket_lair_1',-1, -1) + spawnTemplate5 = LairSpawnTemplate(-1, 'dantooine_piket_longhorn_lair_1',-1, -1) + spawnTemplate6 = LairSpawnTemplate(-1, 'dantooine_quenker_lair_1', -1, -1) + spawnTemplates = Vector() + spawnTemplates.add(spawnTemplate1) + spawnTemplates.add(spawnTemplate2) + spawnTemplates.add(spawnTemplate3) + spawnTemplates.add(spawnTemplate4) + + core.spawnService.addLairGroup('dantooine_mining_area', spawnTemplates) + return \ No newline at end of file diff --git a/scripts/mobiles/lairgroups/mixed_lair_group_1.py b/scripts/mobiles/lairgroups/mixed_lair_group_1.py new file mode 100644 index 00000000..571b1f66 --- /dev/null +++ b/scripts/mobiles/lairgroups/mixed_lair_group_1.py @@ -0,0 +1,21 @@ +# Spawn Group file created with PSWG Planetary Spawn Tool +import sys +from services.spawn import LairSpawnTemplate +from java.util import Vector + +def addLairGroup(core): + spawnTemplates = Vector() + spawnTemplate = LairSpawnTemplate(-1, 'dantooine_huurton_lair_1', -1, -1) + spawnTemplates.add(spawnTemplate) + spawnTemplate = LairSpawnTemplate(-1, 'dantooine_huurton_lair_2', -1, -1) + spawnTemplates.add(spawnTemplate) + spawnTemplate = LairSpawnTemplate(-1, 'dantooine_bol_lair_1', -1, -1) + spawnTemplates.add(spawnTemplate) + spawnTemplate = LairSpawnTemplate(-1, 'dantooine_piket_lair_1', -1, -1) + spawnTemplates.add(spawnTemplate) + spawnTemplate = LairSpawnTemplate(-1, 'dantooine_piket_longhorn_lair_1', -1, -1) + spawnTemplates.add(spawnTemplate) + spawnTemplate = LairSpawnTemplate(-1, 'dantooine_quenker_lair_1', -1, -1) + spawnTemplates.add(spawnTemplate) + core.spawnService.addLairGroup('mixed_lair_group_1', spawnTemplates) + return diff --git a/scripts/mobiles/lairs/dantooine_bol_lair_1.py b/scripts/mobiles/lairs/dantooine_bol_lair_1.py new file mode 100644 index 00000000..953c80f5 --- /dev/null +++ b/scripts/mobiles/lairs/dantooine_bol_lair_1.py @@ -0,0 +1,9 @@ +import sys +from java.util import Vector + +def addTemplate(core): + mobileTemplates = Vector() + mobileTemplates.add('lesser_plains_bol') + mobileTemplates.add('seething_bol_crusher') + mobileTemplates.add('swift_charging_bol') + core.spawnService.addLairTemplate('dantooine_bol_lair_1', mobileTemplates, 15, 'object/tangible/lair/base/shared_poi_all_lair_brambles_small.iff') \ No newline at end of file diff --git a/scripts/mobiles/lairs/dantooine_graul_lair_1.py b/scripts/mobiles/lairs/dantooine_graul_lair_1.py new file mode 100644 index 00000000..953c80f5 --- /dev/null +++ b/scripts/mobiles/lairs/dantooine_graul_lair_1.py @@ -0,0 +1,9 @@ +import sys +from java.util import Vector + +def addTemplate(core): + mobileTemplates = Vector() + mobileTemplates.add('lesser_plains_bol') + mobileTemplates.add('seething_bol_crusher') + mobileTemplates.add('swift_charging_bol') + core.spawnService.addLairTemplate('dantooine_bol_lair_1', mobileTemplates, 15, 'object/tangible/lair/base/shared_poi_all_lair_brambles_small.iff') \ No newline at end of file diff --git a/scripts/mobiles/lairs/dantooine_huurton_lair_1.py b/scripts/mobiles/lairs/dantooine_huurton_lair_1.py new file mode 100644 index 00000000..68fe6e33 --- /dev/null +++ b/scripts/mobiles/lairs/dantooine_huurton_lair_1.py @@ -0,0 +1,9 @@ +import sys +from java.util import Vector + +def addTemplate(core): + mobileTemplates = Vector() + mobileTemplates.add('huurton') + mobileTemplates.add('huurton_howler') + mobileTemplates.add('huurton_matron') + core.spawnService.addLairTemplate('dantooine_huurton_lair_1', mobileTemplates, 15, 'object/tangible/lair/base/shared_poi_all_lair_brambles_small.iff') \ No newline at end of file diff --git a/scripts/mobiles/lairs/dantooine_huurton_lair_2.py b/scripts/mobiles/lairs/dantooine_huurton_lair_2.py new file mode 100644 index 00000000..a94d718e --- /dev/null +++ b/scripts/mobiles/lairs/dantooine_huurton_lair_2.py @@ -0,0 +1,9 @@ +import sys +from java.util import Vector + +def addTemplate(core): + mobileTemplates = Vector() + mobileTemplates.add('huurton_pub') + mobileTemplates.add('huurton_reaper') + mobileTemplates.add('huurton_stalker') + core.spawnService.addLairTemplate('dantooine_huurton_lair_2', mobileTemplates, 15, 'object/tangible/lair/base/shared_poi_all_lair_brambles_small.iff') \ No newline at end of file diff --git a/scripts/mobiles/lairs/dantooine_piket_lair_1.py b/scripts/mobiles/lairs/dantooine_piket_lair_1.py new file mode 100644 index 00000000..a6ccd8a6 --- /dev/null +++ b/scripts/mobiles/lairs/dantooine_piket_lair_1.py @@ -0,0 +1,4 @@ +import sys + +def addTemplate(core): + core.spawnService.addLairTemplate('dantooine_piket_lair_1', 'piket', 15, 'object/tangible/lair/base/shared_earthmound_light.iff') \ No newline at end of file diff --git a/scripts/mobiles/lairs/dantooine_piket_longhorn_lair_1.py b/scripts/mobiles/lairs/dantooine_piket_longhorn_lair_1.py new file mode 100644 index 00000000..1e24cef1 --- /dev/null +++ b/scripts/mobiles/lairs/dantooine_piket_longhorn_lair_1.py @@ -0,0 +1,9 @@ +import sys +from java.util import Vector + +def addTemplate(core): + mobileTemplates = Vector() + mobileTemplates.add('piket_longhorn') + mobileTemplates.add('piket_longhorn_female') + mobileTemplates.add('piket_plains_walker') + core.spawnService.addLairTemplate('dantooine_piket_longhorn_lair_1', mobileTemplates, 15, 'object/tangible/lair/base/shared_earthmound_light.iff') \ No newline at end of file diff --git a/scripts/mobiles/lairs/dantooine_quenker_lair_1.py b/scripts/mobiles/lairs/dantooine_quenker_lair_1.py new file mode 100644 index 00000000..4856d31e --- /dev/null +++ b/scripts/mobiles/lairs/dantooine_quenker_lair_1.py @@ -0,0 +1,9 @@ +import sys +from java.util import Vector + +def addTemplate(core): + mobileTemplates = Vector() + mobileTemplates.add('quenker') + mobileTemplates.add('quenker_ravager') + mobileTemplates.add('quenker_relic_reaper') + core.spawnService.addLairTemplate('dantooine_quenker_lair_1', mobileTemplates, 15, 'object/tangible/lair/base/shared_poi_all_lair_brambles_small.iff') \ No newline at end of file diff --git a/scripts/mobiles/rori/emperors_hand.py b/scripts/mobiles/rori/emperors_hand.py new file mode 100644 index 00000000..3b80e747 --- /dev/null +++ b/scripts/mobiles/rori/emperors_hand.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('restuss_emperors_hand') + mobileTemplate.setLevel(90) + mobileTemplate.setDifficulty(2) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(9) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1.3) + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_restuss_emperors_hand.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_mandalorian.iff', 9, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('saberHit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('restuss_emperors_hand', 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 new file mode 100644 index 00000000..3b07695b --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_central_dyn_1.py @@ -0,0 +1,12 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + dynamicGroups = Vector() + dynamicGroups.add('frenzied_graul_1') + dynamicGroups.add('thunes_1') + dynamicGroups.add('kunga_central_group_1') + dynamicGroups.add('huurton_group_1') + core.spawnService.addDynamicSpawnArea(dynamicGroups, 1567, -1585, 2293, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_central_dyn_2.py b/scripts/mobiles/spawnareas/dantooine_central_dyn_2.py new file mode 100644 index 00000000..78a77203 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_central_dyn_2.py @@ -0,0 +1,12 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + dynamicGroups = Vector() + dynamicGroups.add('bol_group_1') + 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') + return diff --git a/scripts/mobiles/spawnareas/dantooine_central_dyn_3.py b/scripts/mobiles/spawnareas/dantooine_central_dyn_3.py new file mode 100644 index 00000000..0bdc52f1 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_central_dyn_3.py @@ -0,0 +1,12 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + dynamicGroups = Vector() + dynamicGroups.add('mokk_group_1') + dynamicGroups.add('bol_group_1') + dynamicGroups.add('piket_longhorn_group_1') + dynamicGroups.add('huurton_group_2') + core.spawnService.addDynamicSpawnArea(dynamicGroups, -1320, -3981, 1843, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_east_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_east_dyn_1.py new file mode 100644 index 00000000..5bd67259 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_east_dyn_1.py @@ -0,0 +1,9 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + dynamicGroups = Vector() + dynamicGroups.add('voritors_east_group_1') + core.spawnService.addDynamicSpawnArea(dynamicGroups, 6236, -2015, 2437, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_east_dyn_2.py b/scripts/mobiles/spawnareas/dantooine_east_dyn_2.py new file mode 100644 index 00000000..82a7ce51 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_east_dyn_2.py @@ -0,0 +1,10 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +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') + return diff --git a/scripts/mobiles/spawnareas/dantooine_east_dyn_3.py b/scripts/mobiles/spawnareas/dantooine_east_dyn_3.py new file mode 100644 index 00000000..9661ae60 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_east_dyn_3.py @@ -0,0 +1,11 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + dynamicGroups = Vector() + 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') + return diff --git a/scripts/mobiles/spawnareas/dantooine_imperial_op_lair.py b/scripts/mobiles/spawnareas/dantooine_imperial_op_lair.py new file mode 100644 index 00000000..40d8b8ee --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_imperial_op_lair.py @@ -0,0 +1,6 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys + +def addSpawnArea(core): + core.spawnService.addLairSpawnArea('mixed_lair_group_1', -3450, -2793, 1024, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_mining_lair.py b/scripts/mobiles/spawnareas/dantooine_mining_lair.py new file mode 100644 index 00000000..1ef6d3ef --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_mining_lair.py @@ -0,0 +1,6 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys + +def addSpawnArea(core): + core.spawnService.addLairSpawnArea('mixed_lair_group_1', 748, 1711, 1024, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_north_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_north_dyn_1.py new file mode 100644 index 00000000..07f70f0c --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_north_dyn_1.py @@ -0,0 +1,11 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + dynamicGroups = Vector() + 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') + return diff --git a/scripts/mobiles/spawnareas/dantooine_north_dyn_2.py b/scripts/mobiles/spawnareas/dantooine_north_dyn_2.py new file mode 100644 index 00000000..e0ad6fe4 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_north_dyn_2.py @@ -0,0 +1,12 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + dynamicGroups = Vector() + dynamicGroups.add('huurton_group_1') + dynamicGroups.add('quenker_group_south_1') + dynamicGroups.add('mokk_group_1') + dynamicGroups.add('bol_group_1') + core.spawnService.addDynamicSpawnArea(dynamicGroups, -501, 3104, 1085, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_north_dyn_3.py b/scripts/mobiles/spawnareas/dantooine_north_dyn_3.py new file mode 100644 index 00000000..1a8df597 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_north_dyn_3.py @@ -0,0 +1,12 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + dynamicGroups = Vector() + dynamicGroups.add('mokk_group_1') + dynamicGroups.add('huurton_group_1') + dynamicGroups.add('bol_group_1') + dynamicGroups.add('quenker_group_south_1') + core.spawnService.addDynamicSpawnArea(dynamicGroups, 1710, 3739, 1208, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_nw_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_nw_dyn_1.py new file mode 100644 index 00000000..8f92dba8 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_nw_dyn_1.py @@ -0,0 +1,11 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + dynamicGroups = Vector() + 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') + return diff --git a/scripts/mobiles/spawnareas/dantooine_pirate_lair.py b/scripts/mobiles/spawnareas/dantooine_pirate_lair.py new file mode 100644 index 00000000..a9f935e9 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_pirate_lair.py @@ -0,0 +1,6 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys + +def addSpawnArea(core): + core.spawnService.addLairSpawnArea('mixed_lair_group_1', 2017, -6869, 1024, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_south_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_south_dyn_1.py new file mode 100644 index 00000000..bea60b2e --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_south_dyn_1.py @@ -0,0 +1,10 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + dynamicGroups = Vector() + dynamicGroups.add('huurton_group_1') + dynamicGroups.add('quenker_group_south_1') + core.spawnService.addDynamicSpawnArea(dynamicGroups, 2079, -4268, 2232, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_south_dyn_2.py b/scripts/mobiles/spawnareas/dantooine_south_dyn_2.py new file mode 100644 index 00000000..523d03d2 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_south_dyn_2.py @@ -0,0 +1,14 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + dynamicGroups = Vector() + dynamicGroups.add('jantas_nw_group_1') + dynamicGroups.add('graul_mauler_nw_group_1') + dynamicGroups.add('quenker_relic_reaper_group') + dynamicGroups.add('thune_group_2') + dynamicGroups.add('bol_group_1') + dynamicGroups.add('voritors_wild_1') + core.spawnService.addDynamicSpawnArea(dynamicGroups, -1586, -7688, 2621, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_sw_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_sw_dyn_1.py new file mode 100644 index 00000000..90a299b4 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_sw_dyn_1.py @@ -0,0 +1,12 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + dynamicGroups = Vector() + dynamicGroups.add('mokk_group_1') + 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') + return diff --git a/scripts/mobiles/spawnareas/dantooine_west_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_west_dyn_1.py new file mode 100644 index 00000000..dd18bea0 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_west_dyn_1.py @@ -0,0 +1,11 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + dynamicGroups = Vector() + dynamicGroups.add('kunga_central_group_1') + dynamicGroups.add('piket_longhorn_group_1') + dynamicGroups.add('thunes_1') + core.spawnService.addDynamicSpawnArea(dynamicGroups, -5682, -540, 1986, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/force_sensitives_dynamic_1.py b/scripts/mobiles/spawnareas/force_sensitives_dynamic_1.py index 6c7638ea..e7528e13 100644 --- a/scripts/mobiles/spawnareas/force_sensitives_dynamic_1.py +++ b/scripts/mobiles/spawnareas/force_sensitives_dynamic_1.py @@ -1,3 +1,4 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool import sys from java.util import Vector @@ -5,5 +6,5 @@ def addSpawnArea(core): dynamicGroups = Vector() dynamicGroups.add('force_sensitives_wild_1') dynamicGroups.add('dark_jedi_wild_1') - core.spawnService.addDynamicSpawnArea(dynamicGroups, 4083, 5780, 2048, 'dantooine') - return \ No newline at end of file + core.spawnService.addDynamicSpawnArea(dynamicGroups, 5233, 4722, 2580, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_1.py b/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_1.py index 7a998fa8..1bbb3c0f 100644 --- a/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_1.py +++ b/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_1.py @@ -6,6 +6,6 @@ def addSpawnArea(core): dynamicGroups.add('adolescent_krayt_wild_1') dynamicGroups.add('juvenile_krayts_wild_1') dynamicGroups.add('canyon_krayt_wild_1') - dynamicGroups.add('giant_canyon_krayt_dragon_1') + dynamicGroups.add('giant_canyon_krayt_wild_1') core.spawnService.addDynamicSpawnArea(dynamicGroups, 6471, 4267, 1024, 'tatooine') return \ No newline at end of file diff --git a/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_2.py b/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_2.py index e97d5637..9b34c337 100644 --- a/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_2.py +++ b/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_2.py @@ -3,6 +3,6 @@ from java.util import Vector def addSpawnArea(core): dynamicGroups = Vector() - dynamicGroups.add('grand_canyon_krayt_dragon_1') + dynamicGroups.add('grand_canyon_krayt_wild_1') core.spawnService.addDynamicSpawnArea(dynamicGroups, 7431, 4762, 120, 'tatooine') return \ No newline at end of file diff --git a/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_3.py b/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_3.py index 0d863838..5fb17552 100644 --- a/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_3.py +++ b/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_3.py @@ -3,6 +3,6 @@ from java.util import Vector def addSpawnArea(core): dynamicGroups = Vector() - dynamicGroups.add('krayt_dragon_ancient_1') + dynamicGroups.add('krayt_dragon_ancient_wild_1') core.spawnService.addDynamicSpawnArea(dynamicGroups, 7490, 4466, 10, 'tatooine') return \ No newline at end of file diff --git a/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_4.py b/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_4.py index 275f8a8c..6c729dda 100644 --- a/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_4.py +++ b/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_4.py @@ -3,6 +3,6 @@ from java.util import Vector def addSpawnArea(core): dynamicGroups = Vector() - dynamicGroups.add('krayt_dragon_ancient_1') + dynamicGroups.add('krayt_dragon_ancient_wild_1') core.spawnService.addDynamicSpawnArea(dynamicGroups, 6794, 4307, 10, 'tatooine') return \ No newline at end of file diff --git a/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_5.py b/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_5.py index 90c70591..3fbcd869 100644 --- a/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_5.py +++ b/scripts/mobiles/spawnareas/krayt_graveyard_dynamic_5.py @@ -3,6 +3,6 @@ from java.util import Vector def addSpawnArea(core): dynamicGroups = Vector() - dynamicGroups.add('krayt_dragon_ancient_1') + dynamicGroups.add('krayt_dragon_ancient_wild_1') core.spawnService.addDynamicSpawnArea(dynamicGroups, 7493, 5992, 10, 'tatooine') return \ No newline at end of file diff --git a/scripts/mobiles/spawnareas/tuskens_dynamic_1.py b/scripts/mobiles/spawnareas/tuskens_dynamic_1.py index 4d9f5915..eefb2d5e 100644 --- a/scripts/mobiles/spawnareas/tuskens_dynamic_1.py +++ b/scripts/mobiles/spawnareas/tuskens_dynamic_1.py @@ -1,5 +1,5 @@ import sys def addSpawnArea(core): - core.spawnService.addDynamicSpawnArea('tuskens_wild_1', 4310, -4786, 250, 'tatooine') + #core.spawnService.addDynamicSpawnArea('tuskens_wild_1', 4310, -4786, 250, 'tatooine') return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/adolescent_krayt_dragon.py b/scripts/mobiles/tatooine/adolescent_krayt_dragon.py index 9e28d4c8..a2e064f2 100644 --- a/scripts/mobiles/tatooine/adolescent_krayt_dragon.py +++ b/scripts/mobiles/tatooine/adolescent_krayt_dragon.py @@ -18,7 +18,15 @@ def addTemplate(core): mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(True) mobileTemplate.setScale(0.5) - + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(1700) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setHideAmount(950) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setBoneAmount(905) + mobileTemplate.setSocialGroup("krayt dragon") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) templates = Vector() diff --git a/scripts/mobiles/tatooine/alkhara_bandit.py b/scripts/mobiles/tatooine/alkhara_bandit.py new file mode 100644 index 00000000..7223a83f --- /dev/null +++ b/scripts/mobiles/tatooine/alkhara_bandit.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('alkhara_bandit') + mobileTemplate.setLevel(15) + mobileTemplate.setMinLevel(14) + mobileTemplate.setMaxLevel(16) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("alkhara") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_alkhara_bandit.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_cdef.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('alkhara_bandit', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/alkhara_bandit_king.py b/scripts/mobiles/tatooine/alkhara_bandit_king.py new file mode 100644 index 00000000..0aee87b6 --- /dev/null +++ b/scripts/mobiles/tatooine/alkhara_bandit_king.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('alkhara_bandit_king') + mobileTemplate.setLevel(17) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("alkhara") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_alkhara_king.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_cdef.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('alkhara_bandit_king', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/alkhara_champion.py b/scripts/mobiles/tatooine/alkhara_champion.py new file mode 100644 index 00000000..8f6924f3 --- /dev/null +++ b/scripts/mobiles/tatooine/alkhara_champion.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('alkhara_champion') + mobileTemplate.setLevel(21) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("alkhara") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_alkhara_champion.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('alkhara_bandit_champion', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/alkhara_lieutenant.py b/scripts/mobiles/tatooine/alkhara_lieutenant.py new file mode 100644 index 00000000..3bc4bbfc --- /dev/null +++ b/scripts/mobiles/tatooine/alkhara_lieutenant.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('alkhara_lieutenant') + mobileTemplate.setLevel(20) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("alkhara") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_alkhara_lieutenant.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_cdef.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('alkhara_lieutenant', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/armodragon.py b/scripts/mobiles/tatooine/armodragon.py index 494e4228..c571d5ee 100644 --- a/scripts/mobiles/tatooine/armodragon.py +++ b/scripts/mobiles/tatooine/armodragon.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('dragonet_armodragon') mobileTemplate.setLevel(25) + mobileTemplate.setMinLevel(25) + mobileTemplate.setMaxLevel(27) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(125) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setHideAmount(68) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setBoneAmount(75) + mobileTemplate.setSocialGroup("dragonet") + mobileTemplate.setAssistRange(24) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_dragonet.iff') diff --git a/scripts/mobiles/tatooine/arrworr.py b/scripts/mobiles/tatooine/arrworr.py new file mode 100644 index 00000000..325f6e1a --- /dev/null +++ b/scripts/mobiles/tatooine/arrworr.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('c_syren_3_arrworr') + mobileTemplate.setLevel(55) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("kashyyyk") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_c_syren_3_trandoshan_boss.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('arrworr', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/bantha.py b/scripts/mobiles/tatooine/bantha.py index 43e6dbf7..aa1699eb 100644 --- a/scripts/mobiles/tatooine/bantha.py +++ b/scripts/mobiles/tatooine/bantha.py @@ -8,18 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('bantha') mobileTemplate.setLevel(14) + mobileTemplate.setMinLevel(14) + mobileTemplate.setMaxLevel(15) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) - mobileTemplate.setMilkType('Wild Milk') - mobileTemplate.setMilkAmount(250) - mobileTemplate.setHideType('Wooly Hide') + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(450) + mobileTemplate.setHideType("Wooly Hide") mobileTemplate.setHideAmount(325) - mobileTemplate.setMeatType('Herbivore Meat') - mobileTemplate.setMeatAmount(450) - mobileTemplate.setBoneType('Animal Bones') + mobileTemplate.setBoneType("Animal Bones") mobileTemplate.setBoneAmount(250) + mobileTemplate.setSocialGroup("bantha") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_bantha_hue.iff') diff --git a/scripts/mobiles/tatooine/bantha_low.py b/scripts/mobiles/tatooine/bantha_low.py index 0238608e..18c3f7cb 100644 --- a/scripts/mobiles/tatooine/bantha_low.py +++ b/scripts/mobiles/tatooine/bantha_low.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('bantha') mobileTemplate.setLevel(8) + mobileTemplate.setMinLevel(8) + mobileTemplate.setMaxLevel(10) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(450) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(250) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(325) + mobileTemplate.setSocialGroup("bantha") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_bantha_hue.iff') diff --git a/scripts/mobiles/tatooine/bantha_matriarch.py b/scripts/mobiles/tatooine/bantha_matriarch.py index a0b5b7c5..6f480187 100644 --- a/scripts/mobiles/tatooine/bantha_matriarch.py +++ b/scripts/mobiles/tatooine/bantha_matriarch.py @@ -6,12 +6,27 @@ from java.util import Vector def addTemplate(core): mobileTemplate = MobileTemplate() - mobileTemplate.setCreatureName('bantha matriarch') + mobileTemplate.setCreatureName('matriarch_bantha') mobileTemplate.setLevel(15) + mobileTemplate.setMinLevel(15) + mobileTemplate.setMaxLevel(17) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(485) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(365) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(320) + mobileTemplate.setSocialGroup("bantha") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_matriarch_bantha.iff') diff --git a/scripts/mobiles/tatooine/bd34.py b/scripts/mobiles/tatooine/bd34.py new file mode 100644 index 00000000..b5132505 --- /dev/null +++ b/scripts/mobiles/tatooine/bd34.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('legacy_lin34_droid') + mobileTemplate.setLevel(22) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("astromech") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_battle_droid.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('bd34', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/blight_boar.py b/scripts/mobiles/tatooine/blight_boar.py index b25a7441..a5bde055 100644 --- a/scripts/mobiles/tatooine/blight_boar.py +++ b/scripts/mobiles/tatooine/blight_boar.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('zucca_boar_blight') mobileTemplate.setLevel(9) + mobileTemplate.setMinLevel(9) + mobileTemplate.setMaxLevel(10) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(65) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setHideAmount(40) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setBoneAmount(25) + mobileTemplate.setSocialGroup("bantha") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_zucca_boar.iff') diff --git a/scripts/mobiles/tatooine/bocatt.py b/scripts/mobiles/tatooine/bocatt.py index 3cbf9cc1..69d0b5ef 100644 --- a/scripts/mobiles/tatooine/bocatt.py +++ b/scripts/mobiles/tatooine/bocatt.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('bocatt') mobileTemplate.setLevel(17) + mobileTemplate.setMinLevel(17) + mobileTemplate.setMaxLevel(18) mobileTemplate.setDifficulty(0) - mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(100) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(60) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(35) + mobileTemplate.setSocialGroup("bocatt") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_bocatt.iff') diff --git a/scripts/mobiles/tatooine/bomarr_monk.py b/scripts/mobiles/tatooine/bomarr_monk.py new file mode 100644 index 00000000..2777e69b --- /dev/null +++ b/scripts/mobiles/tatooine/bomarr_monk.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('bomarr_monk') + mobileTemplate.setLevel(1) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("spiderdroid") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_bomarr_spider_monk_droid.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('bomarr_monk', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/bomarr_monk_abbot.py b/scripts/mobiles/tatooine/bomarr_monk_abbot.py new file mode 100644 index 00000000..017cce98 --- /dev/null +++ b/scripts/mobiles/tatooine/bomarr_monk_abbot.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('bomarr_monk_abbot') + mobileTemplate.setLevel(2) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("spiderdroid") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_bomarr_spider_monk_droid.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('bomarr_monk_abbot', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/bomarr_monk_bodyguard.py b/scripts/mobiles/tatooine/bomarr_monk_bodyguard.py new file mode 100644 index 00000000..290961fc --- /dev/null +++ b/scripts/mobiles/tatooine/bomarr_monk_bodyguard.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('bomarr_monk_bodyguard') + mobileTemplate.setLevel(2) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("spiderdroid") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_bomarr_spider_monk_droid.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('bomarr_monk_bodyguard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/bomarr_monk_healer.py b/scripts/mobiles/tatooine/bomarr_monk_healer.py new file mode 100644 index 00000000..5ff6ef95 --- /dev/null +++ b/scripts/mobiles/tatooine/bomarr_monk_healer.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('bomarr_monk_healer') + mobileTemplate.setLevel(1) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("spiderdroid") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_bomarr_spider_monk_droid.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('bomarr_monk_healer', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/bomarr_monk_initiate.py b/scripts/mobiles/tatooine/bomarr_monk_initiate.py new file mode 100644 index 00000000..dd53113c --- /dev/null +++ b/scripts/mobiles/tatooine/bomarr_monk_initiate.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('bomarr_monk_initiate') + mobileTemplate.setLevel(1) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("spiderdroid") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_bomarr_spider_monk_droid.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('bomarr_monk_initiate', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/bonecracker_bantha.py b/scripts/mobiles/tatooine/bonecracker_bantha.py index 42341f23..88361e49 100644 --- a/scripts/mobiles/tatooine/bonecracker_bantha.py +++ b/scripts/mobiles/tatooine/bonecracker_bantha.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('bantha_bonecracker') mobileTemplate.setLevel(21) + mobileTemplate.setMinLevel(21) + mobileTemplate.setMaxLevel(22) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(475) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(345) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(300) + mobileTemplate.setSocialGroup("bantha") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_bantha_hue.iff') diff --git a/scripts/mobiles/tatooine/bull_bantha.py b/scripts/mobiles/tatooine/bull_bantha.py index c4626e21..5001ca79 100644 --- a/scripts/mobiles/tatooine/bull_bantha.py +++ b/scripts/mobiles/tatooine/bull_bantha.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('bull_bantha') mobileTemplate.setLevel(15) + mobileTemplate.setMinLevel(15) + mobileTemplate.setMaxLevel(17) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(475) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(345) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(300) + mobileTemplate.setSocialGroup("bantha") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_bantha_hue.iff') diff --git a/scripts/mobiles/tatooine/bull_ronto.py b/scripts/mobiles/tatooine/bull_ronto.py index d75ca648..01ffb015 100644 --- a/scripts/mobiles/tatooine/bull_ronto.py +++ b/scripts/mobiles/tatooine/bull_ronto.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('ronto_male') mobileTemplate.setLevel(18) + mobileTemplate.setMinLevel(18) + mobileTemplate.setMaxLevel(19) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(465) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(320) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(200) + mobileTemplate.setSocialGroup("ronto") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_ronto.iff') diff --git a/scripts/mobiles/tatooine/cannibal.py b/scripts/mobiles/tatooine/cannibal.py new file mode 100644 index 00000000..e92a226d --- /dev/null +++ b/scripts/mobiles/tatooine/cannibal.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('cannibal') + mobileTemplate.setLevel(4) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("kashyyyk") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_cannibal.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureMeleeAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('cannibal', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/cannibal_dewback.py b/scripts/mobiles/tatooine/cannibal_dewback.py index 941c0ebf..f6dcf294 100644 --- a/scripts/mobiles/tatooine/cannibal_dewback.py +++ b/scripts/mobiles/tatooine/cannibal_dewback.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('dewback_cannibal') mobileTemplate.setLevel(13) + mobileTemplate.setMinLevel(13) + mobileTemplate.setMaxLevel(14) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(340) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(260) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(185) + mobileTemplate.setSocialGroup("dewback cannibal") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_dewback.iff') diff --git a/scripts/mobiles/tatooine/canyon_krayt_dragon.py b/scripts/mobiles/tatooine/canyon_krayt_dragon.py index 08197313..fa96fdf6 100644 --- a/scripts/mobiles/tatooine/canyon_krayt_dragon.py +++ b/scripts/mobiles/tatooine/canyon_krayt_dragon.py @@ -18,8 +18,16 @@ def addTemplate(core): mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(True) mobileTemplate.setScale(0.8) - - + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(1250) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(750) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(675) + mobileTemplate.setSocialGroup("krayt dragon") + mobileTemplate.setAssistRange(36) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_canyon_krayt_dragon.iff') diff --git a/scripts/mobiles/tatooine/carion_kreetle.py b/scripts/mobiles/tatooine/carion_kreetle.py index 0a8a8494..7f066d5a 100644 --- a/scripts/mobiles/tatooine/carion_kreetle.py +++ b/scripts/mobiles/tatooine/carion_kreetle.py @@ -8,18 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('fragile_kreetle') mobileTemplate.setLevel(2) - mobileTemplate.setMinLevel(5) + mobileTemplate.setMinLevel(2) mobileTemplate.setMaxLevel(7) mobileTemplate.setDifficulty(0) - mobileTemplate.setAttackRange(4) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) mobileTemplate.setWeaponType(6) mobileTemplate.setMinSpawnDistance(4) mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(False) mobileTemplate.setScale(1) - - + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(1) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("kreetle") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_kreetle.iff') diff --git a/scripts/mobiles/tatooine/cave_beetle.py b/scripts/mobiles/tatooine/cave_beetle.py index 2a98b7bc..19718882 100644 --- a/scripts/mobiles/tatooine/cave_beetle.py +++ b/scripts/mobiles/tatooine/cave_beetle.py @@ -7,11 +7,24 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('cave_beetle') - mobileTemplate.setLevel(5) + mobileTemplate.setLevel(20) + mobileTemplate.setMinLevel(20) + mobileTemplate.setMaxLevel(21) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(6) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(8) + mobileTemplate.setSocialGroup("rock beetle") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_rock_beetle.iff') diff --git a/scripts/mobiles/tatooine/cave_beetle2.py b/scripts/mobiles/tatooine/cave_beetle2.py new file mode 100644 index 00000000..3c8a5ea3 --- /dev/null +++ b/scripts/mobiles/tatooine/cave_beetle2.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('cave_beetle') + mobileTemplate.setLevel(20) + mobileTemplate.setMinLevel(20) + mobileTemplate.setMaxLevel(22) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.2) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(8) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(10) + mobileTemplate.setSocialGroup("rock beetle") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_rock_beetle.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/creature/shared_creature_spit_small_toxicgreen.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('creatureRangedAttack') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('cave_beetle', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/city_rockmite.py b/scripts/mobiles/tatooine/city_rockmite.py index b31914f3..b0164043 100644 --- a/scripts/mobiles/tatooine/city_rockmite.py +++ b/scripts/mobiles/tatooine/city_rockmite.py @@ -8,10 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('city_rockmite') mobileTemplate.setLevel(5) + mobileTemplate.setMinLevel(5) + mobileTemplate.setMaxLevel(7) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(3) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(4) + mobileTemplate.setSocialGroup("rockmite") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_rock_mite.iff') diff --git a/scripts/mobiles/tatooine/city_sewer_swamprat.py b/scripts/mobiles/tatooine/city_sewer_swamprat.py index d3f34960..7e6b22ce 100644 --- a/scripts/mobiles/tatooine/city_sewer_swamprat.py +++ b/scripts/mobiles/tatooine/city_sewer_swamprat.py @@ -7,19 +7,26 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('city_sewer_swamprat') - mobileTemplate.setLevel(4) - mobileTemplate.setMinLevel(4) - mobileTemplate.setMaxLevel(4) + mobileTemplate.setLevel(3) + mobileTemplate.setMinLevel(3) + mobileTemplate.setMaxLevel(5) mobileTemplate.setDifficulty(0) - mobileTemplate.setAttackRange(4) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) mobileTemplate.setWeaponType(6) mobileTemplate.setMinSpawnDistance(4) mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(False) mobileTemplate.setScale(1) - - + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(2) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(2) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(1) + mobileTemplate.setSocialGroup("womprat") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_womp_rat.iff') diff --git a/scripts/mobiles/tatooine/crimelord.py b/scripts/mobiles/tatooine/crimelord.py new file mode 100644 index 00000000..22dae41d --- /dev/null +++ b/scripts/mobiles/tatooine/crimelord.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('crimelord') + mobileTemplate.setLevel(11) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("hutt") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_crimelord.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('crimelord', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/crimelord_1.py b/scripts/mobiles/tatooine/crimelord_1.py new file mode 100644 index 00000000..20042ec7 --- /dev/null +++ b/scripts/mobiles/tatooine/crimelord_1.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('crimelord') + mobileTemplate.setLevel(15) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("hutt") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_crimelord.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('crimelord_1', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/cupa.py b/scripts/mobiles/tatooine/cupa.py index b44cff3a..ac4aa47e 100644 --- a/scripts/mobiles/tatooine/cupa.py +++ b/scripts/mobiles/tatooine/cupa.py @@ -7,11 +7,26 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('cu_pa') - mobileTemplate.setLevel(3) + mobileTemplate.setLevel(10) + mobileTemplate.setMinLevel(10) + mobileTemplate.setMaxLevel(11) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(215) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(100) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(100) + mobileTemplate.setSocialGroup("cu pa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_cu_pa.iff') diff --git a/scripts/mobiles/tatooine/death_kreetle.py b/scripts/mobiles/tatooine/death_kreetle.py index 5e39d8ae..adaad64f 100644 --- a/scripts/mobiles/tatooine/death_kreetle.py +++ b/scripts/mobiles/tatooine/death_kreetle.py @@ -8,10 +8,24 @@ def addTemplate(core): mobileTemplate.setCreatureName('kreetle_death') mobileTemplate.setLevel(7) + mobileTemplate.setMinLevel(7) + mobileTemplate.setMaxLevel(8) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(3) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(4) + mobileTemplate.setSocialGroup("uber kreetle") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_kreetle.iff') diff --git a/scripts/mobiles/tatooine/dervish.py b/scripts/mobiles/tatooine/dervish.py new file mode 100644 index 00000000..e656a6d3 --- /dev/null +++ b/scripts/mobiles/tatooine/dervish.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('dervish') + mobileTemplate.setLevel(5) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("dervish") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_dervish.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dervish', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/desert_demon.py b/scripts/mobiles/tatooine/desert_demon.py new file mode 100644 index 00000000..50130bf9 --- /dev/null +++ b/scripts/mobiles/tatooine/desert_demon.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('desert_demon') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("desert demon") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_desert_demon.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('desert_demon', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/desert_demon_bodyguard.py b/scripts/mobiles/tatooine/desert_demon_bodyguard.py new file mode 100644 index 00000000..181b0d87 --- /dev/null +++ b/scripts/mobiles/tatooine/desert_demon_bodyguard.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('desert_demon_bodyguard') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("desert demon") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_desert_demon_bodyguard.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('desert_demon_bodyguard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/desert_demon_brawler.py b/scripts/mobiles/tatooine/desert_demon_brawler.py new file mode 100644 index 00000000..2e0084a1 --- /dev/null +++ b/scripts/mobiles/tatooine/desert_demon_brawler.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('desert_demon_brawler') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("desert demon") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_desert_demon_brawler.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate1 = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate1) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('desert_demon_brawler', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/desert_demon_leader.py b/scripts/mobiles/tatooine/desert_demon_leader.py new file mode 100644 index 00000000..fee6b29e --- /dev/null +++ b/scripts/mobiles/tatooine/desert_demon_leader.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('desert_demon_leader') + mobileTemplate.setLevel(3) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("desert demon") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_desert_demon_leader.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('desert_demon_leader', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/desert_demon_marksman.py b/scripts/mobiles/tatooine/desert_demon_marksman.py new file mode 100644 index 00000000..6f1d97f0 --- /dev/null +++ b/scripts/mobiles/tatooine/desert_demon_marksman.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('desert_demon_marksman') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("desert demon") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_desert_demon_marksman.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_cdef.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('desert_demon_marksman', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/desert_eopie.py b/scripts/mobiles/tatooine/desert_eopie.py index be18b6bb..1f629028 100644 --- a/scripts/mobiles/tatooine/desert_eopie.py +++ b/scripts/mobiles/tatooine/desert_eopie.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('desert_eopie') mobileTemplate.setLevel(16) + mobileTemplate.setMinLevel(16) + mobileTemplate.setMaxLevel(17) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(300) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(225) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(125) + mobileTemplate.setSocialGroup("eopie") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_eopie.iff') diff --git a/scripts/mobiles/tatooine/desert_kreetle.py b/scripts/mobiles/tatooine/desert_kreetle.py index bddbbf1a..5a33b9be 100644 --- a/scripts/mobiles/tatooine/desert_kreetle.py +++ b/scripts/mobiles/tatooine/desert_kreetle.py @@ -8,10 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('orphan_kreetle') mobileTemplate.setLevel(3) + mobileTemplate.setMinLevel(3) + mobileTemplate.setMaxLevel(5) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(1) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("kreetle") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_kreetle.iff') diff --git a/scripts/mobiles/tatooine/desert_razorback.py b/scripts/mobiles/tatooine/desert_razorback.py index 6e07cd81..7e78276a 100644 --- a/scripts/mobiles/tatooine/desert_razorback.py +++ b/scripts/mobiles/tatooine/desert_razorback.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('desert_razorback') mobileTemplate.setLevel(23) + mobileTemplate.setMinLevel(23) + mobileTemplate.setMaxLevel(25) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(65) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(40) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(25) + mobileTemplate.setSocialGroup("zucca Boar") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_zucca_boar.iff') diff --git a/scripts/mobiles/tatooine/desert_squill.py b/scripts/mobiles/tatooine/desert_squill.py index 2ab4b5ca..23ef655b 100644 --- a/scripts/mobiles/tatooine/desert_squill.py +++ b/scripts/mobiles/tatooine/desert_squill.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('desert_squill') mobileTemplate.setLevel(14) + mobileTemplate.setMinLevel(14) + mobileTemplate.setMaxLevel(15) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(4) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(4) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(3) + mobileTemplate.setSocialGroup("squill") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_squill.iff') diff --git a/scripts/mobiles/tatooine/desert_swooper.py b/scripts/mobiles/tatooine/desert_swooper.py new file mode 100644 index 00000000..93521b04 --- /dev/null +++ b/scripts/mobiles/tatooine/desert_swooper.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('desert_swooper') + mobileTemplate.setLevel(2) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("swoop") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_desert_swooper.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('desert_swooper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/desert_swooper_leader.py b/scripts/mobiles/tatooine/desert_swooper_leader.py new file mode 100644 index 00000000..989da38c --- /dev/null +++ b/scripts/mobiles/tatooine/desert_swooper_leader.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('desert_swooper_leader') + mobileTemplate.setLevel(3) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("swoop") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_desert_swooper_leader.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('desert_swooper_leader', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/desert_thug.py b/scripts/mobiles/tatooine/desert_thug.py new file mode 100644 index 00000000..419cd737 --- /dev/null +++ b/scripts/mobiles/tatooine/desert_thug.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('desert_thug') + mobileTemplate.setLevel(1) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("thug") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_thug.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('desert_thug', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/dewback.py b/scripts/mobiles/tatooine/dewback.py index 086b3fee..9808f52e 100644 --- a/scripts/mobiles/tatooine/dewback.py +++ b/scripts/mobiles/tatooine/dewback.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('dewback') mobileTemplate.setLevel(17) + mobileTemplate.setMinLevel(17) + mobileTemplate.setMaxLevel(18) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(350) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(275) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(200) + mobileTemplate.setSocialGroup("dewback") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_dewback.iff') diff --git a/scripts/mobiles/tatooine/dimu_abbot.py b/scripts/mobiles/tatooine/dimu_abbot.py new file mode 100644 index 00000000..8ab0045a --- /dev/null +++ b/scripts/mobiles/tatooine/dimu_abbot.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dim_u_c') + mobileTemplate.setLevel(4) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("dim-u") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_dim_u_abbot.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dimu_abbot', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/dimu_bantha.py b/scripts/mobiles/tatooine/dimu_bantha.py index 5280c721..9eb67934 100644 --- a/scripts/mobiles/tatooine/dimu_bantha.py +++ b/scripts/mobiles/tatooine/dimu_bantha.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('dim_u_bantha') mobileTemplate.setLevel(3) + mobileTemplate.setMinLevel(3) + mobileTemplate.setMaxLevel(4) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(450) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(325) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(250) + mobileTemplate.setSocialGroup("dim-u") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_bantha_hue.iff') diff --git a/scripts/mobiles/tatooine/dimu_cleric.py b/scripts/mobiles/tatooine/dimu_cleric.py new file mode 100644 index 00000000..51c3bcae --- /dev/null +++ b/scripts/mobiles/tatooine/dimu_cleric.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dim_u_cleric') + mobileTemplate.setLevel(3) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("dim-u") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_dim_u_cleric.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dimu_cleric', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/dimu_monastery_nun.py b/scripts/mobiles/tatooine/dimu_monastery_nun.py new file mode 100644 index 00000000..5d341724 --- /dev/null +++ b/scripts/mobiles/tatooine/dimu_monastery_nun.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dim_u_monastery_nun') + mobileTemplate.setLevel(2) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("dim-u") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_dim_u_monastery_nun.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dimu_monastery_nun', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/dimu_monk.py b/scripts/mobiles/tatooine/dimu_monk.py new file mode 100644 index 00000000..8ff4c056 --- /dev/null +++ b/scripts/mobiles/tatooine/dimu_monk.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dim_u_monk') + mobileTemplate.setLevel(2) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("dim-u") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_dim_u_monk.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dimu_monk', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/dimu_preacher.py b/scripts/mobiles/tatooine/dimu_preacher.py new file mode 100644 index 00000000..07a4965e --- /dev/null +++ b/scripts/mobiles/tatooine/dimu_preacher.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dim_u_preacher') + mobileTemplate.setLevel(5) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("dim-u") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_dim_u_preacher.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dimu_preacher', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/dimu_priestess.py b/scripts/mobiles/tatooine/dimu_priestess.py new file mode 100644 index 00000000..6f59d217 --- /dev/null +++ b/scripts/mobiles/tatooine/dimu_priestess.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dim_u_priestess') + mobileTemplate.setLevel(5) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("dim-u") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_dim_u_priestess.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dimu_priestess', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/diseased_bocatt.py b/scripts/mobiles/tatooine/diseased_bocatt.py index 96bb977e..81638d7d 100644 --- a/scripts/mobiles/tatooine/diseased_bocatt.py +++ b/scripts/mobiles/tatooine/diseased_bocatt.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('bocatt_diseased') mobileTemplate.setLevel(5) + mobileTemplate.setMinLevel(5) + mobileTemplate.setMaxLevel(6) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(6) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(5) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(4) + mobileTemplate.setSocialGroup("bocatt") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_bocatt.iff') diff --git a/scripts/mobiles/tatooine/domestic_eopie.py b/scripts/mobiles/tatooine/domestic_eopie.py index 33e8077b..0cddcc55 100644 --- a/scripts/mobiles/tatooine/domestic_eopie.py +++ b/scripts/mobiles/tatooine/domestic_eopie.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('domestic_eopie') mobileTemplate.setLevel(1) + mobileTemplate.setMinLevel(1) + mobileTemplate.setMaxLevel(3) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Domesticated Meat") + mobileTemplate.setMeatAmount(335) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(260) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(190) + mobileTemplate.setSocialGroup("eopie") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_eopie.iff') diff --git a/scripts/mobiles/tatooine/dragonet.py b/scripts/mobiles/tatooine/dragonet.py index 5d8cb006..d67323d9 100644 --- a/scripts/mobiles/tatooine/dragonet.py +++ b/scripts/mobiles/tatooine/dragonet.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('dragonet') mobileTemplate.setLevel(24) + mobileTemplate.setMinLevel(24) + mobileTemplate.setMaxLevel(27) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(125) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(75) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(68) + mobileTemplate.setSocialGroup("dragonet") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_dune_lizard.iff') diff --git a/scripts/mobiles/tatooine/drooling_nuna.py b/scripts/mobiles/tatooine/drooling_nuna.py index b729515c..e3be3acb 100644 --- a/scripts/mobiles/tatooine/drooling_nuna.py +++ b/scripts/mobiles/tatooine/drooling_nuna.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('dwarf_nuna_drooling') mobileTemplate.setLevel(2) + mobileTemplate.setMinLevel(2) + mobileTemplate.setMaxLevel(3) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Avian Meat") + mobileTemplate.setMeatAmount(2) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(3) + mobileTemplate.setBoneType("Avian Bone") + mobileTemplate.setHideAmount(1) + mobileTemplate.setSocialGroup("dwarf nuna") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_nuna.iff') diff --git a/scripts/mobiles/tatooine/dune_bantha.py b/scripts/mobiles/tatooine/dune_bantha.py index cb29c496..984c29bf 100644 --- a/scripts/mobiles/tatooine/dune_bantha.py +++ b/scripts/mobiles/tatooine/dune_bantha.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('dune_bantha') mobileTemplate.setLevel(20) + mobileTemplate.setMinLevel(20) + mobileTemplate.setMaxLevel(22) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(375) + mobileTemplate.setHideType("Wooley Hide") + mobileTemplate.setBoneAmount(275) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(175) + mobileTemplate.setSocialGroup("bantha") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_bantha_hue.iff') diff --git a/scripts/mobiles/tatooine/dune_beetle.py b/scripts/mobiles/tatooine/dune_beetle.py index 9cc34df7..96b36222 100644 --- a/scripts/mobiles/tatooine/dune_beetle.py +++ b/scripts/mobiles/tatooine/dune_beetle.py @@ -7,11 +7,24 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('dune_beetle') - mobileTemplate.setLevel(5) + mobileTemplate.setLevel(9) + mobileTemplate.setMinLevel(9) + mobileTemplate.setMaxLevel(10) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(6) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(8) + mobileTemplate.setSocialGroup("giant sand beetle") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_giant_sand_beetle.iff') diff --git a/scripts/mobiles/tatooine/dune_lizard.py b/scripts/mobiles/tatooine/dune_lizard.py index ec826be0..0b8d0664 100644 --- a/scripts/mobiles/tatooine/dune_lizard.py +++ b/scripts/mobiles/tatooine/dune_lizard.py @@ -7,11 +7,27 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('dune_lizard') - mobileTemplate.setLevel(5) + mobileTemplate.setLevel(18) + mobileTemplate.setMinLevel(18) + mobileTemplate.setMaxLevel(19) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(85) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(50) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(35) + mobileTemplate.setSocialGroup("dune lizard") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_dune_lizard.iff') diff --git a/scripts/mobiles/tatooine/dune_stalker.py b/scripts/mobiles/tatooine/dune_stalker.py new file mode 100644 index 00000000..398cf4de --- /dev/null +++ b/scripts/mobiles/tatooine/dune_stalker.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dune_stalker') + mobileTemplate.setLevel(5) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("dune stalker") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_dune_stalker.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dune_stalker', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/dune_stalker_brawler.py b/scripts/mobiles/tatooine/dune_stalker_brawler.py new file mode 100644 index 00000000..9df6262e --- /dev/null +++ b/scripts/mobiles/tatooine/dune_stalker_brawler.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dune_stalker_brawler') + mobileTemplate.setLevel(17) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("dune stalker") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_dune_stalker_brawler.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dune_stalker_brawler', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/dune_stalker_enforcer.py b/scripts/mobiles/tatooine/dune_stalker_enforcer.py new file mode 100644 index 00000000..12bf84f3 --- /dev/null +++ b/scripts/mobiles/tatooine/dune_stalker_enforcer.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dune_stalker_enforcer') + mobileTemplate.setLevel(18) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("dune stalker") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_dune_stalker.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dune_stalker_enforcer', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/dune_stalker_leader.py b/scripts/mobiles/tatooine/dune_stalker_leader.py new file mode 100644 index 00000000..54b80a22 --- /dev/null +++ b/scripts/mobiles/tatooine/dune_stalker_leader.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dune_stalker_leader') + mobileTemplate.setLevel(19) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("dune stalker") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_dune_stalker_leader.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dune_stalker_leader', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/dune_stalker_marksman.py b/scripts/mobiles/tatooine/dune_stalker_marksman.py new file mode 100644 index 00000000..388c8e49 --- /dev/null +++ b/scripts/mobiles/tatooine/dune_stalker_marksman.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dune_stalker_marksman') + mobileTemplate.setLevel(19) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("dune stalker") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_dune_stalker_marksman.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dune_stalker_marksman', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/dune_stalker_scavenger.py b/scripts/mobiles/tatooine/dune_stalker_scavenger.py new file mode 100644 index 00000000..ed889a0f --- /dev/null +++ b/scripts/mobiles/tatooine/dune_stalker_scavenger.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('dune_stalker_scavenger') + mobileTemplate.setLevel(19) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("dune stalker") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_dune_stalker.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('dune_stalker_scavenger', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/dwarf_bantha.py b/scripts/mobiles/tatooine/dwarf_bantha.py index 6c8449ca..d8c76e1d 100644 --- a/scripts/mobiles/tatooine/dwarf_bantha.py +++ b/scripts/mobiles/tatooine/dwarf_bantha.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('dwarf_bantha') mobileTemplate.setLevel(10) + mobileTemplate.setMinLevel(10) + mobileTemplate.setMaxLevel(11) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(300) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setBoneAmount(200) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(100) + mobileTemplate.setSocialGroup("bantha") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_dwarf_bantha.iff') diff --git a/scripts/mobiles/tatooine/dwarf_eopie.py b/scripts/mobiles/tatooine/dwarf_eopie.py index cb9a80cc..70caf589 100644 --- a/scripts/mobiles/tatooine/dwarf_eopie.py +++ b/scripts/mobiles/tatooine/dwarf_eopie.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('dwarf_eopie') mobileTemplate.setLevel(1) + mobileTemplate.setMinLevel(1) + mobileTemplate.setMaxLevel(3) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(230) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(180) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(110) + mobileTemplate.setSocialGroup("eopie") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_dwarf_eopie.iff') diff --git a/scripts/mobiles/tatooine/dwarf_nuna.py b/scripts/mobiles/tatooine/dwarf_nuna.py index 423fb7d9..a3d8144c 100644 --- a/scripts/mobiles/tatooine/dwarf_nuna.py +++ b/scripts/mobiles/tatooine/dwarf_nuna.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('dwarf_nuna') mobileTemplate.setLevel(1) + mobileTemplate.setMinLevel(1) + mobileTemplate.setMaxLevel(3) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Avian Meat") + mobileTemplate.setMeatAmount(2) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(3) + mobileTemplate.setBoneType("Avian Bone") + mobileTemplate.setHideAmount(1) + mobileTemplate.setSocialGroup("dwarf nuna") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_dwarf_nuna.iff') diff --git a/scripts/mobiles/tatooine/elder_zucca_boar.py b/scripts/mobiles/tatooine/elder_zucca_boar.py index 11e040e2..3513012c 100644 --- a/scripts/mobiles/tatooine/elder_zucca_boar.py +++ b/scripts/mobiles/tatooine/elder_zucca_boar.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('zucca_boar_elder') mobileTemplate.setLevel(8) + mobileTemplate.setMinLevel(8) + mobileTemplate.setMaxLevel(9) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(65) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(40) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(25) + mobileTemplate.setSocialGroup("zucca boar") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_zucca_boar.iff') diff --git a/scripts/mobiles/tatooine/elite_desert_swooper.py b/scripts/mobiles/tatooine/elite_desert_swooper.py new file mode 100644 index 00000000..56a6d9fd --- /dev/null +++ b/scripts/mobiles/tatooine/elite_desert_swooper.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('desert_swooper_elite') + mobileTemplate.setLevel(3) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("swoop") + mobileTemplate.setAssistRange(8) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_desert_swooper.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('desert_swooper_elite', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/elite_dewback_cannibal.py b/scripts/mobiles/tatooine/elite_dewback_cannibal.py index 910ba869..14c65b79 100644 --- a/scripts/mobiles/tatooine/elite_dewback_cannibal.py +++ b/scripts/mobiles/tatooine/elite_dewback_cannibal.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('elite_dewback_canibal') mobileTemplate.setLevel(13) + mobileTemplate.setMinLevel(13) + mobileTemplate.setMaxLevel(15) mobileTemplate.setDifficulty(1) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(340) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(260) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(185) + mobileTemplate.setSocialGroup("dewback cannibal") + mobileTemplate.setAssistRange(8) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_dewback.iff') diff --git a/scripts/mobiles/tatooine/elite_dragonet.py b/scripts/mobiles/tatooine/elite_dragonet.py index 481b2d64..a7a863ef 100644 --- a/scripts/mobiles/tatooine/elite_dragonet.py +++ b/scripts/mobiles/tatooine/elite_dragonet.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('elite_dragonet') mobileTemplate.setLevel(24) + mobileTemplate.setMinLevel(24) + mobileTemplate.setMaxLevel(26) mobileTemplate.setDifficulty(1) mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(125) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(75) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(68) + mobileTemplate.setSocialGroup("dragonet") + mobileTemplate.setAssistRange(8) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_dragonet.iff') diff --git a/scripts/mobiles/tatooine/elite_dune_lizard.py b/scripts/mobiles/tatooine/elite_dune_lizard.py index a0adf4e8..119a2372 100644 --- a/scripts/mobiles/tatooine/elite_dune_lizard.py +++ b/scripts/mobiles/tatooine/elite_dune_lizard.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('elite_dune_lizard') mobileTemplate.setLevel(18) + mobileTemplate.setMinLevel(18) + mobileTemplate.setMaxLevel(19) mobileTemplate.setDifficulty(1) - mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(85) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(50) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(35) + mobileTemplate.setSocialGroup("dune lizard") + mobileTemplate.setAssistRange(8) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_dune_lizard.iff') diff --git a/scripts/mobiles/tatooine/elite_giant_sand_beetle.py b/scripts/mobiles/tatooine/elite_giant_sand_beetle.py index c21a083c..c4a27c38 100644 --- a/scripts/mobiles/tatooine/elite_giant_sand_beetle.py +++ b/scripts/mobiles/tatooine/elite_giant_sand_beetle.py @@ -8,10 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('elite_giant_sand_beetle') mobileTemplate.setLevel(25) + mobileTemplate.setMinLevel(25) + mobileTemplate.setMaxLevel(26) mobileTemplate.setDifficulty(1) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(15) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(20) + mobileTemplate.setSocialGroup("giant sand beetle") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_giant_sand_beetle.iff') diff --git a/scripts/mobiles/tatooine/elite_mutant_womprat.py b/scripts/mobiles/tatooine/elite_mutant_womprat.py index de786778..ca4db924 100644 --- a/scripts/mobiles/tatooine/elite_mutant_womprat.py +++ b/scripts/mobiles/tatooine/elite_mutant_womprat.py @@ -7,11 +7,26 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('elite_mutant_womprat') - mobileTemplate.setLevel(5) + mobileTemplate.setLevel(12) + mobileTemplate.setMinLevel(12) + mobileTemplate.setMaxLevel(14) mobileTemplate.setDifficulty(1) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(6) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(5) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(4) + mobileTemplate.setSocialGroup("womprat") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_womp_rat.iff') diff --git a/scripts/mobiles/tatooine/elite_ronto.py b/scripts/mobiles/tatooine/elite_ronto.py index a5d22cef..2207fa3b 100644 --- a/scripts/mobiles/tatooine/elite_ronto.py +++ b/scripts/mobiles/tatooine/elite_ronto.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('elite_ronto_ronto') mobileTemplate.setLevel(17) + mobileTemplate.setMinLevel(17) + mobileTemplate.setMaxLevel(18) mobileTemplate.setDifficulty(1) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(450) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(300) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(180) + mobileTemplate.setSocialGroup("ronto") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_ronto.iff') diff --git a/scripts/mobiles/tatooine/elite_scyk.py b/scripts/mobiles/tatooine/elite_scyk.py index 54ad052c..eb6e2dc6 100644 --- a/scripts/mobiles/tatooine/elite_scyk.py +++ b/scripts/mobiles/tatooine/elite_scyk.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('elite_scyk') mobileTemplate.setLevel(11) + mobileTemplate.setMinLevel(11) + mobileTemplate.setMaxLevel(13) mobileTemplate.setDifficulty(1) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(40) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(25) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(18) + mobileTemplate.setSocialGroup("scyk") + mobileTemplate.setAssistRange(8) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_scyk.iff') diff --git a/scripts/mobiles/tatooine/elite_sevorrt.py b/scripts/mobiles/tatooine/elite_sevorrt.py index 190a9e26..d525dc6a 100644 --- a/scripts/mobiles/tatooine/elite_sevorrt.py +++ b/scripts/mobiles/tatooine/elite_sevorrt.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('elite_sevorrt') mobileTemplate.setLevel(8) + mobileTemplate.setMinLevel(8) + mobileTemplate.setMaxLevel(9) mobileTemplate.setDifficulty(1) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(10) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(10) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(4) + mobileTemplate.setSocialGroup("sevorrt") + mobileTemplate.setAssistRange(8) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_sevorrt.iff') diff --git a/scripts/mobiles/tatooine/elite_weequay_zealot.py b/scripts/mobiles/tatooine/elite_weequay_zealot.py new file mode 100644 index 00000000..bca78f85 --- /dev/null +++ b/scripts/mobiles/tatooine/elite_weequay_zealot.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('elite_weequay_zealot') + mobileTemplate.setLevel(17) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("swoop") + mobileTemplate.setAssistRange(8) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_weequay_zealot.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('elite_weequay_zealot', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/enraged_mountain_dewback.py b/scripts/mobiles/tatooine/enraged_mountain_dewback.py index dfebff92..95fdd053 100644 --- a/scripts/mobiles/tatooine/enraged_mountain_dewback.py +++ b/scripts/mobiles/tatooine/enraged_mountain_dewback.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('elite_mountain_dewback') mobileTemplate.setLevel(22) + mobileTemplate.setMinLevel(22) + mobileTemplate.setMaxLevel(23) mobileTemplate.setDifficulty(1) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(330) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(240) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(170) + mobileTemplate.setSocialGroup("dewback mountain") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_dewback.iff') diff --git a/scripts/mobiles/tatooine/enraged_squill.py b/scripts/mobiles/tatooine/enraged_squill.py index 3fd86349..0ff84664 100644 --- a/scripts/mobiles/tatooine/enraged_squill.py +++ b/scripts/mobiles/tatooine/enraged_squill.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('elite_squill') mobileTemplate.setLevel(12) + mobileTemplate.setMinLevel(12) + mobileTemplate.setMaxLevel(14) mobileTemplate.setDifficulty(1) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(6) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(6) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(5) + mobileTemplate.setSocialGroup("squill") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_squill.iff') diff --git a/scripts/mobiles/tatooine/eoni.py b/scripts/mobiles/tatooine/eoni.py index 0dd12e09..c8f3d202 100644 --- a/scripts/mobiles/tatooine/eoni.py +++ b/scripts/mobiles/tatooine/eoni.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('elite_jundland_eopie') mobileTemplate.setLevel(21) + mobileTemplate.setMinLevel(21) + mobileTemplate.setMaxLevel(22) mobileTemplate.setDifficulty(1) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(300) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(225) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(115) + mobileTemplate.setSocialGroup("eopie") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_eopie.iff') diff --git a/scripts/mobiles/tatooine/eopie.py b/scripts/mobiles/tatooine/eopie.py index 8e1f5ae7..af34d5d6 100644 --- a/scripts/mobiles/tatooine/eopie.py +++ b/scripts/mobiles/tatooine/eopie.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('eopie') mobileTemplate.setLevel(4) + mobileTemplate.setMinLevel(4) + mobileTemplate.setMaxLevel(5) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(315) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(250) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(150) + mobileTemplate.setSocialGroup("eopie") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_eopie.iff') diff --git a/scripts/mobiles/tatooine/eopie_herdmaster.py b/scripts/mobiles/tatooine/eopie_herdmaster.py index f8abe532..7635f124 100644 --- a/scripts/mobiles/tatooine/eopie_herdmaster.py +++ b/scripts/mobiles/tatooine/eopie_herdmaster.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('eopie_herdmaster') mobileTemplate.setLevel(5) + mobileTemplate.setMinLevel(5) + mobileTemplate.setMaxLevel(6) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(315) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(250) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(150) + mobileTemplate.setSocialGroup("eopie") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_eopie.iff') diff --git a/scripts/mobiles/tatooine/error_prone_battle_droids.py b/scripts/mobiles/tatooine/error_prone_battle_droids.py new file mode 100644 index 00000000..ecf70d51 --- /dev/null +++ b/scripts/mobiles/tatooine/error_prone_battle_droids.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tatooine_error_prone_droid') + mobileTemplate.setLevel(6) + mobileTemplate.setMinLevel(6) + mobileTemplate.setMaxLevel(7) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("error-prone battle droid") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_battle_droid.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('error-prone_battle_droid', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/escaped_criminal.py b/scripts/mobiles/tatooine/escaped_criminal.py new file mode 100644 index 00000000..f4c1a118 --- /dev/null +++ b/scripts/mobiles/tatooine/escaped_criminal.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tatooine_eisley_escaped_criminal') + mobileTemplate.setLevel(7) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("desert demon") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_criminal_organized_human_male_01.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('escaped_criminal', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/evil_hermit.py b/scripts/mobiles/tatooine/evil_hermit.py new file mode 100644 index 00000000..ce47739f --- /dev/null +++ b/scripts/mobiles/tatooine/evil_hermit.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('evil_hermit') + mobileTemplate.setLevel(2) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("evil") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_evil_hermit.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('evil_hermit', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/evil_nomad.py b/scripts/mobiles/tatooine/evil_nomad.py new file mode 100644 index 00000000..b36dfac4 --- /dev/null +++ b/scripts/mobiles/tatooine/evil_nomad.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('evil_nomad') + mobileTemplate.setLevel(4) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("evil") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_nomad.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_dh17.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate1 = WeaponTemplate('object/weapon/melee/polearm/shared_lance_electric_polearm.iff', 7, 1.0) + weaponTemplates.add(weapontemplate1) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('evil_hermit', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/evil_settler.py b/scripts/mobiles/tatooine/evil_settler.py new file mode 100644 index 00000000..72fc7890 --- /dev/null +++ b/scripts/mobiles/tatooine/evil_settler.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('evil_settler') + mobileTemplate.setLevel(1) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("evil") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_evil_settler.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('evil_settler', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/female_mountain_squill.py b/scripts/mobiles/tatooine/female_mountain_squill.py index e2da21e4..d38fadef 100644 --- a/scripts/mobiles/tatooine/female_mountain_squill.py +++ b/scripts/mobiles/tatooine/female_mountain_squill.py @@ -7,11 +7,26 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('female_mountain_squill') - mobileTemplate.setLevel(17) + mobileTemplate.setLevel(7) + mobileTemplate.setMinLevel(7) + mobileTemplate.setMaxLevel(9) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(4) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(3) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("squill") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_squill.iff') diff --git a/scripts/mobiles/tatooine/feral_bantha.py b/scripts/mobiles/tatooine/feral_bantha.py index fcbbbebc..f030e8ae 100644 --- a/scripts/mobiles/tatooine/feral_bantha.py +++ b/scripts/mobiles/tatooine/feral_bantha.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('feral_bantha') mobileTemplate.setLevel(5) - mobileTemplate.setDifficulty(15) + mobileTemplate.setMinLevel(5) + mobileTemplate.setMaxLevel(6) + mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(415) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(305) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(215) + mobileTemplate.setSocialGroup("bantha") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_bantha_hue.iff') diff --git a/scripts/mobiles/tatooine/fighting_romo_vax.py b/scripts/mobiles/tatooine/fighting_romo_vax.py new file mode 100644 index 00000000..40d3322d --- /dev/null +++ b/scripts/mobiles/tatooine/fighting_romo_vax.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('fighting_romo_vax') + mobileTemplate.setLevel(20) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("sennex") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_trader_thug_male_human_01.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('fighting_romo_vax', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/fugitive.py b/scripts/mobiles/tatooine/fugitive.py new file mode 100644 index 00000000..ff784bec --- /dev/null +++ b/scripts/mobiles/tatooine/fugitive.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('fugitive') + mobileTemplate.setLevel(4) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("thug") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_fugitive.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('fugitive', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/furios_ronto.py b/scripts/mobiles/tatooine/furios_ronto.py index c8c4fe74..937930c3 100644 --- a/scripts/mobiles/tatooine/furios_ronto.py +++ b/scripts/mobiles/tatooine/furios_ronto.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('ronto_furious') mobileTemplate.setLevel(18) + mobileTemplate.setMinLevel(18) + mobileTemplate.setMaxLevel(19) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(465) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(320) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(200) + mobileTemplate.setSocialGroup("ronto") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_ronto.iff') diff --git a/scripts/mobiles/tatooine/giant_canyon_krayt_dragon.py b/scripts/mobiles/tatooine/giant_canyon_krayt_dragon.py index 5da03190..3ea26e1c 100644 --- a/scripts/mobiles/tatooine/giant_canyon_krayt_dragon.py +++ b/scripts/mobiles/tatooine/giant_canyon_krayt_dragon.py @@ -9,7 +9,7 @@ def addTemplate(core): mobileTemplate.setCreatureName('giant_canyon_krayt_dragon') mobileTemplate.setLevel(87) mobileTemplate.setMinLevel(80) - mobileTemplate.setMaxLevel(88) + mobileTemplate.setMaxLevel(89) mobileTemplate.setDifficulty(2) mobileTemplate.setAttackRange(12) mobileTemplate.setAttackSpeed(1.0) @@ -18,8 +18,16 @@ def addTemplate(core): mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(True) mobileTemplate.setScale(2.5) - - + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(1500) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(870) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(805) + mobileTemplate.setSocialGroup("krayt dragon") + mobileTemplate.setAssistRange(34) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_canyon_krayt_dragon.iff') diff --git a/scripts/mobiles/tatooine/giant_sand_beetle.py b/scripts/mobiles/tatooine/giant_sand_beetle.py index 2f9138d5..1d582005 100644 --- a/scripts/mobiles/tatooine/giant_sand_beetle.py +++ b/scripts/mobiles/tatooine/giant_sand_beetle.py @@ -8,10 +8,24 @@ def addTemplate(core): mobileTemplate.setCreatureName('giant_sand_beetle') mobileTemplate.setLevel(25) + mobileTemplate.setMinLevel(25) + mobileTemplate.setMaxLevel(26) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(15) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(20) + mobileTemplate.setSocialGroup("giant sand beetle") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_giant_sand_beetle.iff') diff --git a/scripts/mobiles/tatooine/giant_worrt.py b/scripts/mobiles/tatooine/giant_worrt.py index 27edbbed..0eb02618 100644 --- a/scripts/mobiles/tatooine/giant_worrt.py +++ b/scripts/mobiles/tatooine/giant_worrt.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('giant_worrt') mobileTemplate.setLevel(13) + mobileTemplate.setMinLevel(13) + mobileTemplate.setMaxLevel(15) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(9) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(9) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(4) + mobileTemplate.setSocialGroup("worrt") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_giant_worrt.iff') diff --git a/scripts/mobiles/tatooine/gorg.py b/scripts/mobiles/tatooine/gorg.py index 731c5d4a..21ed5741 100644 --- a/scripts/mobiles/tatooine/gorg.py +++ b/scripts/mobiles/tatooine/gorg.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('gorg') mobileTemplate.setLevel(2) + mobileTemplate.setMinLevel(1) + mobileTemplate.setMaxLevel(3) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(5) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(3) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("gorg") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_gorg.iff') diff --git a/scripts/mobiles/tatooine/gorg_glutton.py b/scripts/mobiles/tatooine/gorg_glutton.py index 7eaddd81..97e66c08 100644 --- a/scripts/mobiles/tatooine/gorg_glutton.py +++ b/scripts/mobiles/tatooine/gorg_glutton.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('gorg_glutton') mobileTemplate.setLevel(2) + mobileTemplate.setMinLevel(1) + mobileTemplate.setMaxLevel(3) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(12) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(9) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(8) + mobileTemplate.setSocialGroup("gorg") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_gorg.iff') diff --git a/scripts/mobiles/tatooine/grand_krayt_dragon.py b/scripts/mobiles/tatooine/grand_krayt_dragon.py index 060fec50..f68ebdbf 100644 --- a/scripts/mobiles/tatooine/grand_krayt_dragon.py +++ b/scripts/mobiles/tatooine/grand_krayt_dragon.py @@ -7,7 +7,7 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('krayt_dragon_grand') - mobileTemplate.setLevel(88) + mobileTemplate.setLevel(87) mobileTemplate.setMinLevel(80) mobileTemplate.setMaxLevel(89) mobileTemplate.setDifficulty(2) @@ -18,8 +18,16 @@ def addTemplate(core): mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(True) mobileTemplate.setScale(2.6) - - + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(1700) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(950) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(905) + mobileTemplate.setSocialGroup("krayt dragon") + mobileTemplate.setAssistRange(24) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_canyon_krayt_dragon.iff') diff --git a/scripts/mobiles/tatooine/great_squill.py b/scripts/mobiles/tatooine/great_squill.py index ec27d549..6c8ec3af 100644 --- a/scripts/mobiles/tatooine/great_squill.py +++ b/scripts/mobiles/tatooine/great_squill.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('squill_great') mobileTemplate.setLevel(13) + mobileTemplate.setMinLevel(13) + mobileTemplate.setMaxLevel(14) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(6) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(6) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(6) + mobileTemplate.setSocialGroup("squill") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_squill.iff') diff --git a/scripts/mobiles/tatooine/greater_desert_womprat.py b/scripts/mobiles/tatooine/greater_desert_womprat.py index cbf1c39a..bedb34e1 100644 --- a/scripts/mobiles/tatooine/greater_desert_womprat.py +++ b/scripts/mobiles/tatooine/greater_desert_womprat.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('greater_desert_womprat') mobileTemplate.setLevel(12) + mobileTemplate.setMinLevel(11) + mobileTemplate.setMaxLevel(14) mobileTemplate.setDifficulty(0) - mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(6) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(5) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(4) + mobileTemplate.setSocialGroup("womprat") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_greater_desert_womp_rat.iff') diff --git a/scripts/mobiles/tatooine/grizzled_dewback.py b/scripts/mobiles/tatooine/grizzled_dewback.py index 416f9a58..dcdc227f 100644 --- a/scripts/mobiles/tatooine/grizzled_dewback.py +++ b/scripts/mobiles/tatooine/grizzled_dewback.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('grizzled_dewback') mobileTemplate.setLevel(18) + mobileTemplate.setMinLevel(17) + mobileTemplate.setMaxLevel(19) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(365) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(285) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(210) + mobileTemplate.setSocialGroup("dewback") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_dewback.iff') diff --git a/scripts/mobiles/tatooine/gunrunner.py b/scripts/mobiles/tatooine/gunrunner.py new file mode 100644 index 00000000..109b312d --- /dev/null +++ b/scripts/mobiles/tatooine/gunrunner.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('gunrunner_newbie') + mobileTemplate.setLevel(5) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("gunrunner") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_gunrunner.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('gunrunner', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/gunrunner1.py b/scripts/mobiles/tatooine/gunrunner1.py new file mode 100644 index 00000000..e7118983 --- /dev/null +++ b/scripts/mobiles/tatooine/gunrunner1.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('gunrunner_newbie') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("mercenary") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_gunrunner.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('gunrunner_1', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/gunrunner2.py b/scripts/mobiles/tatooine/gunrunner2.py new file mode 100644 index 00000000..efd08eab --- /dev/null +++ b/scripts/mobiles/tatooine/gunrunner2.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('gunrunner_newbie') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("mercenary") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_gunrunner.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('gunrunner_2', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/gunrunner_leader.py b/scripts/mobiles/tatooine/gunrunner_leader.py new file mode 100644 index 00000000..ba2347a6 --- /dev/null +++ b/scripts/mobiles/tatooine/gunrunner_leader.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('gunrunner_newbie_leader') + mobileTemplate.setLevel(8) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("gunrunner") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_gunrunner.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('gunrunner_leader', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/gunrunner_sentry.py b/scripts/mobiles/tatooine/gunrunner_sentry.py new file mode 100644 index 00000000..e157f5ec --- /dev/null +++ b/scripts/mobiles/tatooine/gunrunner_sentry.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('gunrunner_newbie_sentry') + mobileTemplate.setLevel(6) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("gunrunner") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_gunrunner.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('gunrunner_sentry', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/harmony_worrt.py b/scripts/mobiles/tatooine/harmony_worrt.py index 07f24218..89f59c15 100644 --- a/scripts/mobiles/tatooine/harmony_worrt.py +++ b/scripts/mobiles/tatooine/harmony_worrt.py @@ -8,10 +8,19 @@ def addTemplate(core): mobileTemplate.setCreatureName('harmony_worrt') mobileTemplate.setLevel(18) + mobileTemplate.setMinLevel(17) + mobileTemplate.setMaxLevel(19) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("worrt") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_worrt.iff') diff --git a/scripts/mobiles/tatooine/hermit.py b/scripts/mobiles/tatooine/hermit.py new file mode 100644 index 00000000..919beb11 --- /dev/null +++ b/scripts/mobiles/tatooine/hermit.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('hermit') + mobileTemplate.setLevel(1) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("evil") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_hermit.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('hermit', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/hutt_assassin.py b/scripts/mobiles/tatooine/hutt_assassin.py new file mode 100644 index 00000000..fb3c7e76 --- /dev/null +++ b/scripts/mobiles/tatooine/hutt_assassin.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('hutt_assassin') + mobileTemplate.setLevel(22) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_hutt_male.iff') + templates.add('object/mobile/shared_hutt_female.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('hutt_assassin', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/hutt_enforcer.py b/scripts/mobiles/tatooine/hutt_enforcer.py new file mode 100644 index 00000000..eac06cef --- /dev/null +++ b/scripts/mobiles/tatooine/hutt_enforcer.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('hutt_enforcer') + mobileTemplate.setLevel(22) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_hutt_male.iff') + templates.add('object/mobile/shared_hutt_female.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/sword/shared_sword_01.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('saberhit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('hutt_enforcer', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/hutt_outcast.py b/scripts/mobiles/tatooine/hutt_outcast.py new file mode 100644 index 00000000..e3400022 --- /dev/null +++ b/scripts/mobiles/tatooine/hutt_outcast.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('npe_hutt_minion') + mobileTemplate.setLevel(22) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_hutt_male.iff') + templates.add('object/mobile/shared_hutt_female.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + + core.spawnService.addMobileTemplate('hutt_outcast', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/insane_kitonak.py b/scripts/mobiles/tatooine/insane_kitonak.py new file mode 100644 index 00000000..60401027 --- /dev/null +++ b/scripts/mobiles/tatooine/insane_kitonak.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('insane_kitonak') + mobileTemplate.setLevel(1) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("insane kitonak") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_kitonak_male.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('insane_kitonak', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jabba_assassin.py b/scripts/mobiles/tatooine/jabba_assassin.py new file mode 100644 index 00000000..56c8f45c --- /dev/null +++ b/scripts/mobiles/tatooine/jabba_assassin.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('jabba_assassin') + mobileTemplate.setLevel(15) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_jabba_assassin.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jabba_assassin', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jabba_compound_guard.py b/scripts/mobiles/tatooine/jabba_compound_guard.py new file mode 100644 index 00000000..27f8ddff --- /dev/null +++ b/scripts/mobiles/tatooine/jabba_compound_guard.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('jabba_enforcer') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_jabba_enforcer.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + weapontemplate1 = WeaponTemplate('object/weapon/melee/sword/shared_sword_01.iff', 4, 1.0) + weaponTemplates.add(weapontemplate1) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jabba_enforcer', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jabba_enforcer.py b/scripts/mobiles/tatooine/jabba_enforcer.py new file mode 100644 index 00000000..d682210b --- /dev/null +++ b/scripts/mobiles/tatooine/jabba_enforcer.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('jabba_compound_guard') + mobileTemplate.setLevel(15) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_jabba_henchman.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jabba_compound_guard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jabba_henchman.py b/scripts/mobiles/tatooine/jabba_henchman.py new file mode 100644 index 00000000..effee0d1 --- /dev/null +++ b/scripts/mobiles/tatooine/jabba_henchman.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('jabba_henchman') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_jabba_henchman.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jabba_henchman', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jabba_medic.py b/scripts/mobiles/tatooine/jabba_medic.py new file mode 100644 index 00000000..61bd4959 --- /dev/null +++ b/scripts/mobiles/tatooine/jabba_medic.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('a Jabba Medic') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_jabba_thug.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jabba_medic', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jabba_scout.py b/scripts/mobiles/tatooine/jabba_scout.py new file mode 100644 index 00000000..8daa0e00 --- /dev/null +++ b/scripts/mobiles/tatooine/jabba_scout.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('jabba_scout') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_jabba_scout.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_e11.iff',0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jabba_scout', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jabba_swooper.py b/scripts/mobiles/tatooine/jabba_swooper.py new file mode 100644 index 00000000..87316a83 --- /dev/null +++ b/scripts/mobiles/tatooine/jabba_swooper.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('jabbas_swooper') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_jabba_swooper.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jabba_swooper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jabba_swooper_leader.py b/scripts/mobiles/tatooine/jabba_swooper_leader.py new file mode 100644 index 00000000..86ce56a6 --- /dev/null +++ b/scripts/mobiles/tatooine/jabba_swooper_leader.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('jabbas_swooper_leader') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_jabba_swooper_leader.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jabba_swooper_leader', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jabba_thief.py b/scripts/mobiles/tatooine/jabba_thief.py new file mode 100644 index 00000000..c01b9cec --- /dev/null +++ b/scripts/mobiles/tatooine/jabba_thief.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('jabba_thief') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_jabba_thief.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jabba_thief', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jabba_thug.py b/scripts/mobiles/tatooine/jabba_thug.py new file mode 100644 index 00000000..ba49be22 --- /dev/null +++ b/scripts/mobiles/tatooine/jabba_thug.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('jabba_thief') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_jabba_thug.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jabba_thug', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jawa.py b/scripts/mobiles/tatooine/jawa.py new file mode 100644 index 00000000..cf919c06 --- /dev/null +++ b/scripts/mobiles/tatooine/jawa.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('jawa') + mobileTemplate.setLevel(16) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jawa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_jawa.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jawa', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jawa_avenger.py b/scripts/mobiles/tatooine/jawa_avenger.py new file mode 100644 index 00000000..5e70ae35 --- /dev/null +++ b/scripts/mobiles/tatooine/jawa_avenger.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('jawa_avenger') + mobileTemplate.setLevel(18) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jawa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_jawa.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jawa_avenger', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jawa_engineer.py b/scripts/mobiles/tatooine/jawa_engineer.py new file mode 100644 index 00000000..6680135a --- /dev/null +++ b/scripts/mobiles/tatooine/jawa_engineer.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('jawa_engineer') + mobileTemplate.setLevel(16) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jawa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_jawa.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jawa_engineer', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jawa_healer.py b/scripts/mobiles/tatooine/jawa_healer.py new file mode 100644 index 00000000..d36f48a0 --- /dev/null +++ b/scripts/mobiles/tatooine/jawa_healer.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('jawa_healer') + mobileTemplate.setLevel(16) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jawa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_jawa.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jawa_healer', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jawa_henchman.py b/scripts/mobiles/tatooine/jawa_henchman.py new file mode 100644 index 00000000..c359eced --- /dev/null +++ b/scripts/mobiles/tatooine/jawa_henchman.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('jawa_henchman') + mobileTemplate.setLevel(16) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jawa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_jawa.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jawa_henchman', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jawa_leader.py b/scripts/mobiles/tatooine/jawa_leader.py new file mode 100644 index 00000000..50f91b24 --- /dev/null +++ b/scripts/mobiles/tatooine/jawa_leader.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('jawa_leader') + mobileTemplate.setLevel(17) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jawa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_jawa.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jawa_leader', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jawa_protector.py b/scripts/mobiles/tatooine/jawa_protector.py new file mode 100644 index 00000000..c74b9a3a --- /dev/null +++ b/scripts/mobiles/tatooine/jawa_protector.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('jawa_smuggler') + mobileTemplate.setLevel(17) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jawa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_jawa.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jawa_smuggler', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jawa_smuggler.py b/scripts/mobiles/tatooine/jawa_smuggler.py new file mode 100644 index 00000000..d1ed269c --- /dev/null +++ b/scripts/mobiles/tatooine/jawa_smuggler.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('jawa_protector') + mobileTemplate.setLevel(17) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jawa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_jawa.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jawa_protector', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jawa_thief.py b/scripts/mobiles/tatooine/jawa_thief.py new file mode 100644 index 00000000..47498aae --- /dev/null +++ b/scripts/mobiles/tatooine/jawa_thief.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('jawa_thief') + mobileTemplate.setLevel(16) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jawa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_jawa.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jawa_thief', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jawa_warlord.py b/scripts/mobiles/tatooine/jawa_warlord.py new file mode 100644 index 00000000..2476d389 --- /dev/null +++ b/scripts/mobiles/tatooine/jawa_warlord.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('jawa_warlord') + mobileTemplate.setLevel(18) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jawa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_jawa.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jawa_warlord', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jessk.py b/scripts/mobiles/tatooine/jessk.py new file mode 100644 index 00000000..46aea914 --- /dev/null +++ b/scripts/mobiles/tatooine/jessk.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('ep3_qst_jessk') + mobileTemplate.setLevel(18) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jawa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_ep3_jessk.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('jessk', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/jundland_eopie.py b/scripts/mobiles/tatooine/jundland_eopie.py index ee6cf43c..69f75c98 100644 --- a/scripts/mobiles/tatooine/jundland_eopie.py +++ b/scripts/mobiles/tatooine/jundland_eopie.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('jundland_eopie') mobileTemplate.setLevel(21) + mobileTemplate.setMinLevel(19) + mobileTemplate.setMaxLevel(23) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(300) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(225) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(115) + mobileTemplate.setSocialGroup("eopie") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_eopie.iff') diff --git a/scripts/mobiles/tatooine/junk_battle_droid.py b/scripts/mobiles/tatooine/junk_battle_droid.py new file mode 100644 index 00000000..45208bbc --- /dev/null +++ b/scripts/mobiles/tatooine/junk_battle_droid.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tatooine_lin_demolitionmech') + mobileTemplate.setLevel(14) + mobileTemplate.setMinLevel(13) + mobileTemplate.setMaxLevel(15) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("battle droid") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_battle_droid.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('junk_battle_droid', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/juvenile_canyon_krayt_dragon.py b/scripts/mobiles/tatooine/juvenile_canyon_krayt_dragon.py index 02a36d90..aa72a0be 100644 --- a/scripts/mobiles/tatooine/juvenile_canyon_krayt_dragon.py +++ b/scripts/mobiles/tatooine/juvenile_canyon_krayt_dragon.py @@ -9,7 +9,7 @@ def addTemplate(core): mobileTemplate.setCreatureName('juvenile_canyon_krayt') mobileTemplate.setLevel(82) mobileTemplate.setMinLevel(78) - mobileTemplate.setMaxLevel(82) + mobileTemplate.setMaxLevel(83) mobileTemplate.setDifficulty(2) mobileTemplate.setAttackRange(12) mobileTemplate.setAttackSpeed(1.0) @@ -17,9 +17,17 @@ def addTemplate(core): mobileTemplate.setMinSpawnDistance(4) mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(True) - mobileTemplate.setScale(0.5) - - + mobileTemplate.setScale(2.6) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(750) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(500) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(410) + mobileTemplate.setSocialGroup("krayt dragon") + mobileTemplate.setAssistRange(24) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_krayt_dragon.iff') diff --git a/scripts/mobiles/tatooine/kleetuz.py b/scripts/mobiles/tatooine/kleetuz.py new file mode 100644 index 00000000..e8dd6697 --- /dev/null +++ b/scripts/mobiles/tatooine/kleetuz.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tatooine_repo_kleetuz') + mobileTemplate.setLevel(16) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("mercenary") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_repo_kleetuz.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('kleetuz', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/krayt_dragon.py b/scripts/mobiles/tatooine/krayt_dragon.py index 6af77734..6eb4001c 100644 --- a/scripts/mobiles/tatooine/krayt_dragon.py +++ b/scripts/mobiles/tatooine/krayt_dragon.py @@ -7,11 +7,27 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('krayt_dragon') - mobileTemplate.setLevel(10) + mobileTemplate.setLevel(82) + mobileTemplate.setMinLevel(78) + mobileTemplate.setMaxLevel(83) mobileTemplate.setDifficulty(2) mobileTemplate.setAttackRange(12) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(2.6) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(750) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(500) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(410) + mobileTemplate.setSocialGroup("krayt dragon") + mobileTemplate.setAssistRange(24) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_krayt_dragon.iff') diff --git a/scripts/mobiles/tatooine/krayt_dragon_ancient.py b/scripts/mobiles/tatooine/krayt_dragon_ancient.py index 9e3e68c0..7b93a5b0 100644 --- a/scripts/mobiles/tatooine/krayt_dragon_ancient.py +++ b/scripts/mobiles/tatooine/krayt_dragon_ancient.py @@ -8,7 +8,7 @@ def addTemplate(core): mobileTemplate.setCreatureName('krayt_dragon_ancient') mobileTemplate.setLevel(90) - mobileTemplate.setMinLevel(90) + mobileTemplate.setMinLevel(89) mobileTemplate.setMaxLevel(90) mobileTemplate.setDifficulty(2) mobileTemplate.setAttackRange(12) @@ -18,8 +18,16 @@ def addTemplate(core): mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(True) mobileTemplate.setScale(2.8) - - + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(1700) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(950) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(905) + mobileTemplate.setSocialGroup("krayt dragon") + mobileTemplate.setAssistRange(36) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_krayt_dragon.iff') diff --git a/scripts/mobiles/tatooine/kreetle.py b/scripts/mobiles/tatooine/kreetle.py index a118c107..915acf5e 100644 --- a/scripts/mobiles/tatooine/kreetle.py +++ b/scripts/mobiles/tatooine/kreetle.py @@ -8,10 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('kreetle') mobileTemplate.setLevel(5) + mobileTemplate.setMinLevel(4) + mobileTemplate.setMaxLevel(6) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(1) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("kreetle") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_kreetle.iff') diff --git a/scripts/mobiles/tatooine/kreetle_swarmling.py b/scripts/mobiles/tatooine/kreetle_swarmling.py index 9f998e07..a7d0acc1 100644 --- a/scripts/mobiles/tatooine/kreetle_swarmling.py +++ b/scripts/mobiles/tatooine/kreetle_swarmling.py @@ -8,10 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('kreetle_swarming') mobileTemplate.setLevel(1) + mobileTemplate.setMinLevel(1) + mobileTemplate.setMaxLevel(3) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(1) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("kreetle") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_kreetle.iff') diff --git a/scripts/mobiles/tatooine/large_cave_beetle.py b/scripts/mobiles/tatooine/large_cave_beetle.py index ccfc9a8d..daa562ae 100644 --- a/scripts/mobiles/tatooine/large_cave_beetle.py +++ b/scripts/mobiles/tatooine/large_cave_beetle.py @@ -8,10 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('large_cave_beetle') mobileTemplate.setLevel(21) + mobileTemplate.setMinLevel(21) + mobileTemplate.setMaxLevel(23) mobileTemplate.setDifficulty(0) - mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(10) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(14) + mobileTemplate.setSocialGroup("rock beetle") + mobileTemplate.setAssistRange(5) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_rock_beetle.iff') diff --git a/scripts/mobiles/tatooine/large_rock_beetle1.py b/scripts/mobiles/tatooine/large_rock_beetle1.py index 39078fb6..fec7bf8e 100644 --- a/scripts/mobiles/tatooine/large_rock_beetle1.py +++ b/scripts/mobiles/tatooine/large_rock_beetle1.py @@ -8,10 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('large_rock_beetle') mobileTemplate.setLevel(18) + mobileTemplate.setMinLevel(17) + mobileTemplate.setMaxLevel(18) mobileTemplate.setDifficulty(1) - mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(6) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(8) + mobileTemplate.setSocialGroup("rock beetle") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_rock_beetle.iff') diff --git a/scripts/mobiles/tatooine/large_rock_beetle2.py b/scripts/mobiles/tatooine/large_rock_beetle2.py index dfadc654..eb2a89c6 100644 --- a/scripts/mobiles/tatooine/large_rock_beetle2.py +++ b/scripts/mobiles/tatooine/large_rock_beetle2.py @@ -8,10 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('large_rock_beetle') mobileTemplate.setLevel(19) + mobileTemplate.setMinLevel(18) + mobileTemplate.setMaxLevel(20) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(10) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(14) + mobileTemplate.setSocialGroup("rock beetle") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_rock_beetle.iff') diff --git a/scripts/mobiles/tatooine/large_rock_beetle3.py b/scripts/mobiles/tatooine/large_rock_beetle3.py index 1cca8d4e..cfb3248c 100644 --- a/scripts/mobiles/tatooine/large_rock_beetle3.py +++ b/scripts/mobiles/tatooine/large_rock_beetle3.py @@ -8,10 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('large_rock_beetle') mobileTemplate.setLevel(19) + mobileTemplate.setMinLevel(18) + mobileTemplate.setMaxLevel(20) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(12) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(16) + mobileTemplate.setSocialGroup("rock beetle") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_rock_beetle.iff') diff --git a/scripts/mobiles/tatooine/large_sand_beetle.py b/scripts/mobiles/tatooine/large_sand_beetle.py index 2bfc2cb9..df30f8cf 100644 --- a/scripts/mobiles/tatooine/large_sand_beetle.py +++ b/scripts/mobiles/tatooine/large_sand_beetle.py @@ -8,10 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('large_sand_beetle') mobileTemplate.setLevel(24) + mobileTemplate.setMinLevel(22) + mobileTemplate.setMaxLevel(25) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(10) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(14) + mobileTemplate.setSocialGroup("giant sand beetle") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_giant_sand_beetle.iff') diff --git a/scripts/mobiles/tatooine/lesser_bocatt.py b/scripts/mobiles/tatooine/lesser_bocatt.py index d768a79b..e74c5f09 100644 --- a/scripts/mobiles/tatooine/lesser_bocatt.py +++ b/scripts/mobiles/tatooine/lesser_bocatt.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('lesser_bocatt') mobileTemplate.setLevel(14) + mobileTemplate.setMinLevel(13) + mobileTemplate.setMaxLevel(15) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(100) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(60) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(35) + mobileTemplate.setSocialGroup("bocatt") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_bocatt.iff') diff --git a/scripts/mobiles/tatooine/lesser_desert_womprat.py b/scripts/mobiles/tatooine/lesser_desert_womprat.py index 66ff6a9f..6d9de71d 100644 --- a/scripts/mobiles/tatooine/lesser_desert_womprat.py +++ b/scripts/mobiles/tatooine/lesser_desert_womprat.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('lesser_desert_womprat') mobileTemplate.setLevel(4) + mobileTemplate.setMinLevel(3) + mobileTemplate.setMaxLevel(5) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(2) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(2) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(1) + mobileTemplate.setSocialGroup("womprat") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_lesser_desert_womp_rat.iff') diff --git a/scripts/mobiles/tatooine/lesser_dewback.py b/scripts/mobiles/tatooine/lesser_dewback.py index d6a49360..a8dad881 100644 --- a/scripts/mobiles/tatooine/lesser_dewback.py +++ b/scripts/mobiles/tatooine/lesser_dewback.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('lesser_dewback') mobileTemplate.setLevel(4) + mobileTemplate.setMinLevel(3) + mobileTemplate.setMaxLevel(5) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(175) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(125) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(100) + mobileTemplate.setSocialGroup("dewback") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_dewback.iff') diff --git a/scripts/mobiles/tatooine/malignant_squill.py b/scripts/mobiles/tatooine/malignant_squill.py index 2b96c627..44713158 100644 --- a/scripts/mobiles/tatooine/malignant_squill.py +++ b/scripts/mobiles/tatooine/malignant_squill.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('malignant_squill') mobileTemplate.setLevel(50) + mobileTemplate.setMinLevel(48) + mobileTemplate.setMaxLevel(52) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(25) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(25) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(20) + mobileTemplate.setSocialGroup("squill") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_squill.iff') diff --git a/scripts/mobiles/tatooine/minor_worrt.py b/scripts/mobiles/tatooine/minor_worrt.py index 5ffa7afe..659b7bf9 100644 --- a/scripts/mobiles/tatooine/minor_worrt.py +++ b/scripts/mobiles/tatooine/minor_worrt.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('minor_worrt') mobileTemplate.setLevel(3) + mobileTemplate.setMinLevel(2) + mobileTemplate.setMaxLevel(4) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(3) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(3) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(1) + mobileTemplate.setSocialGroup("minor worrt") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_minor_worrt.iff') diff --git a/scripts/mobiles/tatooine/moisture_thief.py b/scripts/mobiles/tatooine/moisture_thief.py new file mode 100644 index 00000000..cc14293d --- /dev/null +++ b/scripts/mobiles/tatooine/moisture_thief.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('mission_moisture_thief') + mobileTemplate.setLevel(2) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_moisture_thief.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/sword/shared_sword_01.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('moisture_thief', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/mound_mite.py b/scripts/mobiles/tatooine/mound_mite.py index ff49aa4c..581fde19 100644 --- a/scripts/mobiles/tatooine/mound_mite.py +++ b/scripts/mobiles/tatooine/mound_mite.py @@ -8,18 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('mound_mite') mobileTemplate.setLevel(4) - mobileTemplate.setMinLevel(5) + mobileTemplate.setMinLevel(4) mobileTemplate.setMaxLevel(7) mobileTemplate.setDifficulty(0) - mobileTemplate.setAttackRange(4) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) mobileTemplate.setWeaponType(6) mobileTemplate.setMinSpawnDistance(4) mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(False) mobileTemplate.setScale(1) - - + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(3) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(4) + mobileTemplate.setSocialGroup("mound mite") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_mound_mite.iff') diff --git a/scripts/mobiles/tatooine/mountain_dewback.py b/scripts/mobiles/tatooine/mountain_dewback.py index 6b73306f..d01a2c95 100644 --- a/scripts/mobiles/tatooine/mountain_dewback.py +++ b/scripts/mobiles/tatooine/mountain_dewback.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('mountain_dewback') mobileTemplate.setLevel(22) + mobileTemplate.setMinLevel(21) + mobileTemplate.setMaxLevel(23) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(330) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(240) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(170) + mobileTemplate.setSocialGroup("dewback mountain") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_mountain_dewback.iff') diff --git a/scripts/mobiles/tatooine/mountain_squill.py b/scripts/mobiles/tatooine/mountain_squill.py index 052d4e62..eadfb722 100644 --- a/scripts/mobiles/tatooine/mountain_squill.py +++ b/scripts/mobiles/tatooine/mountain_squill.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('mountain_squill') mobileTemplate.setLevel(18) + mobileTemplate.setMinLevel(17) + mobileTemplate.setMaxLevel(19) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(3) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(3) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("squill") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_mountain_squill.iff') diff --git a/scripts/mobiles/tatooine/mountain_squill_guardian.py b/scripts/mobiles/tatooine/mountain_squill_guardian.py index 5b402840..5959aa53 100644 --- a/scripts/mobiles/tatooine/mountain_squill_guardian.py +++ b/scripts/mobiles/tatooine/mountain_squill_guardian.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('mountain_squill_guardian') mobileTemplate.setLevel(19) + mobileTemplate.setMinLevel(18) + mobileTemplate.setMaxLevel(21) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(3) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(4) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("squill") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_mountain_squill.iff') diff --git a/scripts/mobiles/tatooine/mountain_squill_hunter.py b/scripts/mobiles/tatooine/mountain_squill_hunter.py index 5393c868..f744dcc5 100644 --- a/scripts/mobiles/tatooine/mountain_squill_hunter.py +++ b/scripts/mobiles/tatooine/mountain_squill_hunter.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('mountain_squill_hunter') mobileTemplate.setLevel(19) + mobileTemplate.setMinLevel(18) + mobileTemplate.setMaxLevel(21) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(2) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(2) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(1) + mobileTemplate.setSocialGroup("squill") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_mountain_squill.iff') diff --git a/scripts/mobiles/tatooine/mountain_worrt.py b/scripts/mobiles/tatooine/mountain_worrt.py index 1790dd65..01e6f591 100644 --- a/scripts/mobiles/tatooine/mountain_worrt.py +++ b/scripts/mobiles/tatooine/mountain_worrt.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('mountain_worrt') mobileTemplate.setLevel(19) + mobileTemplate.setMinLevel(18) + mobileTemplate.setMaxLevel(21) mobileTemplate.setDifficulty(0) - mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(4) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(3) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("mountain worrt") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_worrt.iff') diff --git a/scripts/mobiles/tatooine/mutant_womprat.py b/scripts/mobiles/tatooine/mutant_womprat.py index 831182ac..206a8a0c 100644 --- a/scripts/mobiles/tatooine/mutant_womprat.py +++ b/scripts/mobiles/tatooine/mutant_womprat.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('mutant_womprat') mobileTemplate.setLevel(12) + mobileTemplate.setMinLevel(11) + mobileTemplate.setMaxLevel(13) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(6) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(5) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(4) + mobileTemplate.setSocialGroup("womprat") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_womp_rat.iff') diff --git a/scripts/mobiles/tatooine/overkreetle.py b/scripts/mobiles/tatooine/overkreetle.py index 7f6bb056..e8c4030f 100644 --- a/scripts/mobiles/tatooine/overkreetle.py +++ b/scripts/mobiles/tatooine/overkreetle.py @@ -8,10 +8,24 @@ def addTemplate(core): mobileTemplate.setCreatureName('kreetle_over') mobileTemplate.setLevel(11) + mobileTemplate.setMinLevel(10) + mobileTemplate.setMaxLevel(12) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(8) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(12) + mobileTemplate.setSocialGroup("uber kreetle") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_kreetle.iff') diff --git a/scripts/mobiles/tatooine/parry_stormtrooper_dewback.py b/scripts/mobiles/tatooine/parry_stormtrooper_dewback.py index 9c961a1f..8090d862 100644 --- a/scripts/mobiles/tatooine/parry_stormtrooper_dewback.py +++ b/scripts/mobiles/tatooine/parry_stormtrooper_dewback.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('parry_stormtrooper_dewback') mobileTemplate.setLevel(17) + mobileTemplate.setMinLevel(16) + mobileTemplate.setMaxLevel(18) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(360) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(275) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(250) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_dewback_armored.iff') diff --git a/scripts/mobiles/tatooine/pirate.py b/scripts/mobiles/tatooine/pirate.py new file mode 100644 index 00000000..843c31ee --- /dev/null +++ b/scripts/mobiles/tatooine/pirate.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mission_pirate') + mobileTemplate.setLevel(20) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("pirate") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_pirate_plunderer_of_tatooine.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('pirate', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/pirate_leader.py b/scripts/mobiles/tatooine/pirate_leader.py new file mode 100644 index 00000000..bdcbde3e --- /dev/null +++ b/scripts/mobiles/tatooine/pirate_leader.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mission_pirate_leader') + mobileTemplate.setLevel(23) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("pirate") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_pirate_leader_of_tatooine.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('pirate_leader', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/plaque_rat.py b/scripts/mobiles/tatooine/plaque_rat.py index 53a5a8e1..2eabdeef 100644 --- a/scripts/mobiles/tatooine/plaque_rat.py +++ b/scripts/mobiles/tatooine/plaque_rat.py @@ -7,11 +7,26 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('womprat_plague') - mobileTemplate.setLevel(1) + mobileTemplate.setLevel(11) + mobileTemplate.setMinLevel(10) + mobileTemplate.setMaxLevel(12) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(4) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(3) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("womprat") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_womp_rat.iff') diff --git a/scripts/mobiles/tatooine/plaque_victim.py b/scripts/mobiles/tatooine/plaque_victim.py new file mode 100644 index 00000000..ab3288f4 --- /dev/null +++ b/scripts/mobiles/tatooine/plaque_victim.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mission_plague_victim') + mobileTemplate.setLevel(2) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("pirate") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_plague_victim.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('plague_victim', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/r3-b57.py b/scripts/mobiles/tatooine/r3-b57.py new file mode 100644 index 00000000..0781f8ca --- /dev/null +++ b/scripts/mobiles/tatooine/r3-b57.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('legacy_r3_droid') + mobileTemplate.setLevel(22) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("astromech") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_r3.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('r3b57', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/ra-316.py b/scripts/mobiles/tatooine/ra-316.py new file mode 100644 index 00000000..eb7e6db1 --- /dev/null +++ b/scripts/mobiles/tatooine/ra-316.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('legacy_ra_droid') + mobileTemplate.setLevel(22) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(15) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("astromech") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_protocol_droid.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('ra316', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/razorback_felspur.py b/scripts/mobiles/tatooine/razorback_felspur.py index ca591441..3c66dae3 100644 --- a/scripts/mobiles/tatooine/razorback_felspur.py +++ b/scripts/mobiles/tatooine/razorback_felspur.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('desert_razorback_felspur') mobileTemplate.setLevel(24) + mobileTemplate.setMinLevel(23) + mobileTemplate.setMaxLevel(25) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(65) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(40) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(25) + mobileTemplate.setSocialGroup("zucca Boar") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_zucca_boar.iff') diff --git a/scripts/mobiles/tatooine/razorclaw.py b/scripts/mobiles/tatooine/razorclaw.py index 2434283f..f1ad041d 100644 --- a/scripts/mobiles/tatooine/razorclaw.py +++ b/scripts/mobiles/tatooine/razorclaw.py @@ -7,11 +7,26 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('elite_desert_razorback') - mobileTemplate.setLevel(23) + mobileTemplate.setLevel(24) + mobileTemplate.setMinLevel(23) + mobileTemplate.setMaxLevel(25) mobileTemplate.setDifficulty(1) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(65) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(40) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(25) + mobileTemplate.setSocialGroup("zucca Boar") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_zucca_boar.iff') diff --git a/scripts/mobiles/tatooine/rill.py b/scripts/mobiles/tatooine/rill.py index 9e82c0c2..e5715117 100644 --- a/scripts/mobiles/tatooine/rill.py +++ b/scripts/mobiles/tatooine/rill.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('rill') mobileTemplate.setLevel(5) + mobileTemplate.setMinLevel(4) + mobileTemplate.setMaxLevel(6) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(35) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(20) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(30) + mobileTemplate.setSocialGroup("rill") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_rill.iff') diff --git a/scripts/mobiles/tatooine/rock_beetle.py b/scripts/mobiles/tatooine/rock_beetle.py index e5241063..56e756c9 100644 --- a/scripts/mobiles/tatooine/rock_beetle.py +++ b/scripts/mobiles/tatooine/rock_beetle.py @@ -8,10 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('rock_beetle') mobileTemplate.setLevel(18) - mobileTemplate.setDifficulty(1) - mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) + mobileTemplate.setMinLevel(17) + mobileTemplate.setMaxLevel(18) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(8) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(10) + mobileTemplate.setSocialGroup("rock beetle") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_rock_beetle.iff') diff --git a/scripts/mobiles/tatooine/rock_beetle1.py b/scripts/mobiles/tatooine/rock_beetle1.py index 6145a123..f4760b94 100644 --- a/scripts/mobiles/tatooine/rock_beetle1.py +++ b/scripts/mobiles/tatooine/rock_beetle1.py @@ -8,10 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('rock_beetle') mobileTemplate.setLevel(19) - mobileTemplate.setDifficulty(1) - mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) + mobileTemplate.setMinLevel(18) + mobileTemplate.setMaxLevel(19) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(6) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(8) + mobileTemplate.setSocialGroup("rock beetle") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_rock_beetle.iff') diff --git a/scripts/mobiles/tatooine/rock_beetle_cave.py b/scripts/mobiles/tatooine/rock_beetle_cave.py index afa926ac..20296315 100644 --- a/scripts/mobiles/tatooine/rock_beetle_cave.py +++ b/scripts/mobiles/tatooine/rock_beetle_cave.py @@ -8,10 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('rock_beetle_cave') mobileTemplate.setLevel(19) + mobileTemplate.setMinLevel(18) + mobileTemplate.setMaxLevel(19) mobileTemplate.setDifficulty(1) - mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(9) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(10) + mobileTemplate.setSocialGroup("rock beetle") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_rock_beetle.iff') diff --git a/scripts/mobiles/tatooine/rockmite.py b/scripts/mobiles/tatooine/rockmite.py index a6ac06bc..6a2422c9 100644 --- a/scripts/mobiles/tatooine/rockmite.py +++ b/scripts/mobiles/tatooine/rockmite.py @@ -8,17 +8,23 @@ def addTemplate(core): mobileTemplate.setCreatureName('rockmite') mobileTemplate.setLevel(8) - mobileTemplate.setMinLevel(8) + mobileTemplate.setMinLevel(7) mobileTemplate.setMaxLevel(9) mobileTemplate.setDifficulty(0) - mobileTemplate.setAttackRange(4) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) mobileTemplate.setWeaponType(6) mobileTemplate.setMinSpawnDistance(4) mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(False) mobileTemplate.setScale(1) - + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(3) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(4) + mobileTemplate.setSocialGroup("rockmite") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() diff --git a/scripts/mobiles/tatooine/rodian_clan_captain.py b/scripts/mobiles/tatooine/rodian_clan_captain.py new file mode 100644 index 00000000..c0222c25 --- /dev/null +++ b/scripts/mobiles/tatooine/rodian_clan_captain.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mission_rodian_clan_captain') + mobileTemplate.setLevel(15) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("rodian") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_rodian_clan_captain.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('rodian_clan_captain', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/rodian_clan_medic.py b/scripts/mobiles/tatooine/rodian_clan_medic.py new file mode 100644 index 00000000..af8bf5e4 --- /dev/null +++ b/scripts/mobiles/tatooine/rodian_clan_medic.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mission_rodian_clan_medic') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("rodian") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_rodian_clan_medic.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('rodian_clan_medic', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/rodian_clan_warchief.py b/scripts/mobiles/tatooine/rodian_clan_warchief.py new file mode 100644 index 00000000..4d65378a --- /dev/null +++ b/scripts/mobiles/tatooine/rodian_clan_warchief.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mission_rodian_clan_warchief') + mobileTemplate.setLevel(15) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("rodian") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_rodian_clan_warchief.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('rodian_clan_warchief', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/rodian_gladiator.py b/scripts/mobiles/tatooine/rodian_gladiator.py new file mode 100644 index 00000000..80061aaa --- /dev/null +++ b/scripts/mobiles/tatooine/rodian_gladiator.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mission_rodian_gladiator') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("rodian") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_rodian_gladiator.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('rodian_gladiator', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/ronto.py b/scripts/mobiles/tatooine/ronto.py index 68e02924..d2d2af5b 100644 --- a/scripts/mobiles/tatooine/ronto.py +++ b/scripts/mobiles/tatooine/ronto.py @@ -7,11 +7,26 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('ronto') - mobileTemplate.setLevel(17) + mobileTemplate.setLevel(7) + mobileTemplate.setMinLevel(16) + mobileTemplate.setMaxLevel(18) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(450) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(300) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(180) + mobileTemplate.setSocialGroup("ronto") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_ronto.iff') diff --git a/scripts/mobiles/tatooine/runted_rill.py b/scripts/mobiles/tatooine/runted_rill.py index dd84444f..a30260ab 100644 --- a/scripts/mobiles/tatooine/runted_rill.py +++ b/scripts/mobiles/tatooine/runted_rill.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('runted_rill') mobileTemplate.setLevel(1) + mobileTemplate.setMinLevel(1) + mobileTemplate.setMaxLevel(3) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(3) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(3) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(3) + mobileTemplate.setSocialGroup("rill") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_rill.iff') diff --git a/scripts/mobiles/tatooine/sand_beetle.py b/scripts/mobiles/tatooine/sand_beetle.py index 072fa787..ed46a5ec 100644 --- a/scripts/mobiles/tatooine/sand_beetle.py +++ b/scripts/mobiles/tatooine/sand_beetle.py @@ -7,11 +7,24 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('sand_beetle') - mobileTemplate.setLevel(18) - mobileTemplate.setDifficulty(1) + mobileTemplate.setLevel(22) + mobileTemplate.setMinLevel(22) + mobileTemplate.setMaxLevel(24) + mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Insect Meat") + mobileTemplate.setMeatAmount(6) + mobileTemplate.setHideType("Scaley Hide") + mobileTemplate.setHideAmount(8) + mobileTemplate.setSocialGroup("giant sand beetle") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_giant_sand_beetle.iff') diff --git a/scripts/mobiles/tatooine/sandcrawler_crewman.py b/scripts/mobiles/tatooine/sandcrawler_crewman.py new file mode 100644 index 00000000..c498f075 --- /dev/null +++ b/scripts/mobiles/tatooine/sandcrawler_crewman.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('legacy_jawa_grunt') + mobileTemplate.setLevel(16) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jawa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_jawa.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('sandcrawler_crewman', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/sandreaver.py b/scripts/mobiles/tatooine/sandreaver.py index 86af2d0b..758f0fa4 100644 --- a/scripts/mobiles/tatooine/sandreaver.py +++ b/scripts/mobiles/tatooine/sandreaver.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('dewback_sandreaver') mobileTemplate.setLevel(18) + mobileTemplate.setMinLevel(17) + mobileTemplate.setMaxLevel(19) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(340) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(260) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(185) + mobileTemplate.setSocialGroup("dewback") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_dewback.iff') diff --git a/scripts/mobiles/tatooine/savage_zucca_boar.py b/scripts/mobiles/tatooine/savage_zucca_boar.py index 646cc819..3f7981fe 100644 --- a/scripts/mobiles/tatooine/savage_zucca_boar.py +++ b/scripts/mobiles/tatooine/savage_zucca_boar.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('elite_zucca_boar') mobileTemplate.setLevel(8) + mobileTemplate.setMinLevel(8) + mobileTemplate.setMaxLevel(9) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(65) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(40) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(25) + mobileTemplate.setSocialGroup("zucca boar") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_zucca_boar.iff') diff --git a/scripts/mobiles/tatooine/scavenger.py b/scripts/mobiles/tatooine/scavenger.py new file mode 100644 index 00000000..4c71b7f9 --- /dev/null +++ b/scripts/mobiles/tatooine/scavenger.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mission_scavenger') + mobileTemplate.setLevel(5) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(2) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("thug") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_scavenger.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('scavenger', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/scyk.py b/scripts/mobiles/tatooine/scyk.py index f3c09a86..c93319b5 100644 --- a/scripts/mobiles/tatooine/scyk.py +++ b/scripts/mobiles/tatooine/scyk.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('scyk') mobileTemplate.setLevel(11) + mobileTemplate.setMinLevel(11) + mobileTemplate.setMaxLevel(13) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(40) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(25) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(18) + mobileTemplate.setSocialGroup("scyk") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_scyk.iff') diff --git a/scripts/mobiles/tatooine/sennex_guard.py b/scripts/mobiles/tatooine/sennex_guard.py new file mode 100644 index 00000000..bfd1cf5a --- /dev/null +++ b/scripts/mobiles/tatooine/sennex_guard.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('sennex_guard') + mobileTemplate.setLevel(20) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("sennex") + mobileTemplate.setAssistRange(5) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_sennex_pirate_01.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_02.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_03.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_04.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_05.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_06.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_07.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_08.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_09.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_10.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_11.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_12.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('sennex_guard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/sennex_hunter.py b/scripts/mobiles/tatooine/sennex_hunter.py new file mode 100644 index 00000000..1cfb2ff9 --- /dev/null +++ b/scripts/mobiles/tatooine/sennex_hunter.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('sennex_hunter') + mobileTemplate.setLevel(22) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("sennex") + mobileTemplate.setAssistRange(5) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_sennex_pirate_01.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_02.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_03.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_04.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_05.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_06.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_07.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_08.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_09.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_10.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_11.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_12.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_cdef.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('sennex_hunter', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/sennex_lookout.py b/scripts/mobiles/tatooine/sennex_lookout.py new file mode 100644 index 00000000..46fb6d4d --- /dev/null +++ b/scripts/mobiles/tatooine/sennex_lookout.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('sennex_lookout') + mobileTemplate.setLevel(18) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("sennex") + mobileTemplate.setAssistRange(5) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_sennex_pirate_01.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_02.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_03.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_04.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_05.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_06.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_07.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_08.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_09.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_10.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_11.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_12.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('sennex_lookout', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/sennex_slavemaster.py b/scripts/mobiles/tatooine/sennex_slavemaster.py new file mode 100644 index 00000000..1e1bce16 --- /dev/null +++ b/scripts/mobiles/tatooine/sennex_slavemaster.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('sennex_slaver') + mobileTemplate.setLevel(24) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("sennex") + mobileTemplate.setAssistRange(5) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_sennex_pirate_01.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_02.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_03.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_04.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_05.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_06.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_07.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_08.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_09.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_10.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_11.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_12.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('sennex_slaver', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/sennex_slaver.py b/scripts/mobiles/tatooine/sennex_slaver.py new file mode 100644 index 00000000..20ae5fc2 --- /dev/null +++ b/scripts/mobiles/tatooine/sennex_slaver.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('sennex_slavemaster') + mobileTemplate.setLevel(22) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("sennex") + mobileTemplate.setAssistRange(5) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_sennex_pirate_01.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_02.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_03.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_04.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_05.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_06.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_07.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_08.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_09.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_10.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_11.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_12.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('sennex_slavemaster', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/sennex_warder.py b/scripts/mobiles/tatooine/sennex_warder.py new file mode 100644 index 00000000..325abe04 --- /dev/null +++ b/scripts/mobiles/tatooine/sennex_warder.py @@ -0,0 +1,49 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('sennex_warder') + mobileTemplate.setLevel(21) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("sennex") + mobileTemplate.setAssistRange(5) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_sennex_pirate_01.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_02.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_03.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_04.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_05.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_06.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_07.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_08.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_09.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_10.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_11.iff') + templates.add('object/mobile/shared_dressed_sennex_pirate_12.iff') + + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('sennex_warder', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/sevorrt.py b/scripts/mobiles/tatooine/sevorrt.py index 3bcd9926..3ea14405 100644 --- a/scripts/mobiles/tatooine/sevorrt.py +++ b/scripts/mobiles/tatooine/sevorrt.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('sevorrt') mobileTemplate.setLevel(5) + mobileTemplate.setMinLevel(4) + mobileTemplate.setMaxLevel(6) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(10) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(10) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(4) + mobileTemplate.setSocialGroup("sevorrt") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_sevorrt.iff') diff --git a/scripts/mobiles/tatooine/sewer_worrt.py b/scripts/mobiles/tatooine/sewer_worrt.py index ac614b18..377c28bf 100644 --- a/scripts/mobiles/tatooine/sewer_worrt.py +++ b/scripts/mobiles/tatooine/sewer_worrt.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('sewer_worrt') mobileTemplate.setLevel(5) + mobileTemplate.setMinLevel(4) + mobileTemplate.setMaxLevel(6) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(3) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(3) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(1) + mobileTemplate.setSocialGroup("minor worrt") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_worrt.iff') diff --git a/scripts/mobiles/tatooine/shinn_guard.py b/scripts/mobiles/tatooine/shinn_guard.py new file mode 100644 index 00000000..030b499f --- /dev/null +++ b/scripts/mobiles/tatooine/shinn_guard.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('tatooine_shinn_guard') + mobileTemplate.setLevel(8) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("shinn mugger") + mobileTemplate.setAssistRange(5) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_dressed_mugger.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('shinn_guard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/shinn_mugger.py b/scripts/mobiles/tatooine/shinn_mugger.py new file mode 100644 index 00000000..b4757037 --- /dev/null +++ b/scripts/mobiles/tatooine/shinn_mugger.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('tatooine_shinn_mugger') + mobileTemplate.setLevel(7) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("shinn mugger") + mobileTemplate.setAssistRange(5) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_dressed_mugger.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('shinn_mugger', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/sickly_womprat.py b/scripts/mobiles/tatooine/sickly_womprat.py index da6e0c5f..2a4fabf5 100644 --- a/scripts/mobiles/tatooine/sickly_womprat.py +++ b/scripts/mobiles/tatooine/sickly_womprat.py @@ -8,16 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('sickly_womprat') mobileTemplate.setLevel(4) - mobileTemplate.setMinLevel(5) + mobileTemplate.setMinLevel(4) mobileTemplate.setMaxLevel(13) mobileTemplate.setDifficulty(0) - mobileTemplate.setAttackRange(4) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) mobileTemplate.setWeaponType(6) mobileTemplate.setMinSpawnDistance(4) mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(False) mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(2) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(2) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(1) + mobileTemplate.setSocialGroup("womprat") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) diff --git a/scripts/mobiles/tatooine/sirad_far.py b/scripts/mobiles/tatooine/sirad_far.py new file mode 100644 index 00000000..381c068f --- /dev/null +++ b/scripts/mobiles/tatooine/sirad_far.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('sirad_far') + mobileTemplate.setLevel(20) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_sirad_far.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('sirad_far', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/slum_rat.py b/scripts/mobiles/tatooine/slum_rat.py index 90eeb0cf..3aa000c5 100644 --- a/scripts/mobiles/tatooine/slum_rat.py +++ b/scripts/mobiles/tatooine/slum_rat.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('womprat_city') mobileTemplate.setLevel(5) + mobileTemplate.setMinLevel(4) + mobileTemplate.setMaxLevel(6) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(7) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(7) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(3) + mobileTemplate.setSocialGroup("womprat") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_womp_rat.iff') diff --git a/scripts/mobiles/tatooine/snarlfang.py b/scripts/mobiles/tatooine/snarlfang.py index 95aa8910..1b36ccc7 100644 --- a/scripts/mobiles/tatooine/snarlfang.py +++ b/scripts/mobiles/tatooine/snarlfang.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('elite_bocatt') mobileTemplate.setLevel(17) + mobileTemplate.setMinLevel(17) + mobileTemplate.setMaxLevel(18) mobileTemplate.setDifficulty(0) - mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(100) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(60) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(35) + mobileTemplate.setSocialGroup("bocatt") + mobileTemplate.setAssistRange(8) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_bocatt.iff') diff --git a/scripts/mobiles/tatooine/squill.py b/scripts/mobiles/tatooine/squill.py index 61abb0a3..a94b2218 100644 --- a/scripts/mobiles/tatooine/squill.py +++ b/scripts/mobiles/tatooine/squill.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('squill') mobileTemplate.setLevel(12) + mobileTemplate.setMinLevel(11) + mobileTemplate.setMaxLevel(13) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(6) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(6) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(5) + mobileTemplate.setSocialGroup("squill") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_squill.iff') diff --git a/scripts/mobiles/tatooine/stormtrooper_dewback.py b/scripts/mobiles/tatooine/stormtrooper_dewback.py index b6dcea7f..4f001b45 100644 --- a/scripts/mobiles/tatooine/stormtrooper_dewback.py +++ b/scripts/mobiles/tatooine/stormtrooper_dewback.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('stormtrooper_dewback') mobileTemplate.setLevel(14) + mobileTemplate.setMinLevel(13) + mobileTemplate.setMaxLevel(15) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(360) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(275) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(250) + mobileTemplate.setSocialGroup("imperial") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_dewback_armored.iff') diff --git a/scripts/mobiles/tatooine/sunstained_dunelizard.py b/scripts/mobiles/tatooine/sunstained_dunelizard.py index 03737a37..035d5967 100644 --- a/scripts/mobiles/tatooine/sunstained_dunelizard.py +++ b/scripts/mobiles/tatooine/sunstained_dunelizard.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('dune_lizard_sunstained') mobileTemplate.setLevel(19) + mobileTemplate.setMinLevel(18) + mobileTemplate.setMaxLevel(20) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(85) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(50) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(35) + mobileTemplate.setSocialGroup("dune lizard") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_dune_lizard.iff') diff --git a/scripts/mobiles/tatooine/swarming_lesser_dewback.py b/scripts/mobiles/tatooine/swarming_lesser_dewback.py index 88fae935..aa7dcff5 100644 --- a/scripts/mobiles/tatooine/swarming_lesser_dewback.py +++ b/scripts/mobiles/tatooine/swarming_lesser_dewback.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('swarming_lesser_dewback') mobileTemplate.setLevel(13) + mobileTemplate.setMinLevel(12) + mobileTemplate.setMaxLevel(14) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(175) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(125) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(100) + mobileTemplate.setSocialGroup("dewback") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_swarming_lesser_dewback.iff') diff --git a/scripts/mobiles/tatooine/swoop_gang_enforcer.py b/scripts/mobiles/tatooine/swoop_gang_enforcer.py new file mode 100644 index 00000000..a4b8f9c6 --- /dev/null +++ b/scripts/mobiles/tatooine/swoop_gang_enforcer.py @@ -0,0 +1,42 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tatooine_opening_smuggler_12') + mobileTemplate.setLevel(10) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("niko thug") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_criminal_swooper_human_female_01.iff') + templates.add('object/mobile/shared_dressed_criminal_swooper_human_male_01.iff') + templates.add('object/mobile/shared_dressed_criminal_swooper_zabrak_female_01.iff') + templates.add('object/mobile/shared_dressed_criminal_swooper_zabrak_male_01.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_cdef.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('swoop_gang_enforcer', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/swoop_gang_punk.py b/scripts/mobiles/tatooine/swoop_gang_punk.py new file mode 100644 index 00000000..35546ea0 --- /dev/null +++ b/scripts/mobiles/tatooine/swoop_gang_punk.py @@ -0,0 +1,41 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tatooine_opening_smuggler_08') + mobileTemplate.setLevel(7) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("niko thug") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_dressed_criminal_swooper_human_female_01.iff') + templates.add('object/mobile/shared_dressed_criminal_swooper_human_male_01.iff') + templates.add('object/mobile/shared_dressed_criminal_swooper_zabrak_female_01.iff') + templates.add('object/mobile/shared_dressed_criminal_swooper_zabrak_male_01.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('swoop_gang_punk', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/swoop_gang_rogue.py b/scripts/mobiles/tatooine/swoop_gang_rogue.py new file mode 100644 index 00000000..cb15bbb8 --- /dev/null +++ b/scripts/mobiles/tatooine/swoop_gang_rogue.py @@ -0,0 +1,41 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tatooine_opening_smuggler_10') + mobileTemplate.setLevel(9) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("niko thug") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_dressed_criminal_swooper_human_female_01.iff') + templates.add('object/mobile/shared_dressed_criminal_swooper_human_male_01.iff') + templates.add('object/mobile/shared_dressed_criminal_swooper_zabrak_female_01.iff') + templates.add('object/mobile/shared_dressed_criminal_swooper_zabrak_male_01.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('swoop_gang_rogue', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/swoop_gang_thug.py b/scripts/mobiles/tatooine/swoop_gang_thug.py new file mode 100644 index 00000000..eb0fff4b --- /dev/null +++ b/scripts/mobiles/tatooine/swoop_gang_thug.py @@ -0,0 +1,41 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tatooine_opening_smuggler_09') + mobileTemplate.setLevel(8) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("niko thug") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_dressed_criminal_swooper_human_female_01.iff') + templates.add('object/mobile/shared_dressed_criminal_swooper_human_male_01.iff') + templates.add('object/mobile/shared_dressed_criminal_swooper_zabrak_female_01.iff') + templates.add('object/mobile/shared_dressed_criminal_swooper_zabrak_male_01.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('swoop_gang_thug', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/swooper.py b/scripts/mobiles/tatooine/swooper.py new file mode 100644 index 00000000..f93c2dcd --- /dev/null +++ b/scripts/mobiles/tatooine/swooper.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('mission_swooper') + mobileTemplate.setLevel(1) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("niko thug") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_dressed_criminal_swooper_human_female_01.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('swooper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tame_rill.py b/scripts/mobiles/tatooine/tame_rill.py index 4ec78cae..283b7973 100644 --- a/scripts/mobiles/tatooine/tame_rill.py +++ b/scripts/mobiles/tatooine/tame_rill.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('tame_rill') mobileTemplate.setLevel(1) + mobileTemplate.setMinLevel(1) + mobileTemplate.setMaxLevel(3) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(3) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(3) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(1) + mobileTemplate.setSocialGroup("rill") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_rill.iff') diff --git a/scripts/mobiles/tatooine/tame_womprat.py b/scripts/mobiles/tatooine/tame_womprat.py index bbc970a1..e0882686 100644 --- a/scripts/mobiles/tatooine/tame_womprat.py +++ b/scripts/mobiles/tatooine/tame_womprat.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('tame_womprat') mobileTemplate.setLevel(2) + mobileTemplate.setMinLevel(1) + mobileTemplate.setMaxLevel(4) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(2) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(2) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(1) + mobileTemplate.setSocialGroup("womprat") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_womp_rat.iff') diff --git a/scripts/mobiles/tatooine/tame_worrt.py b/scripts/mobiles/tatooine/tame_worrt.py index b78b5c1c..999bad4e 100644 --- a/scripts/mobiles/tatooine/tame_worrt.py +++ b/scripts/mobiles/tatooine/tame_worrt.py @@ -8,21 +8,28 @@ def addTemplate(core): mobileTemplate.setCreatureName('tame_worrt') mobileTemplate.setLevel(5) - mobileTemplate.setMinLevel(5) + mobileTemplate.setMinLevel(4) mobileTemplate.setMaxLevel(6) mobileTemplate.setDifficulty(0) - mobileTemplate.setAttackRange(4) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) mobileTemplate.setWeaponType(6) mobileTemplate.setMinSpawnDistance(4) mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(False) mobileTemplate.setScale(1) - - + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(5) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(5) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("worrt") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() - templates.add('object/mobile/shared_worrt.iff') + templates.add('object/mobile/shared_worrt_hue.iff') mobileTemplate.setTemplates(templates) weaponTemplates = Vector() diff --git a/scripts/mobiles/tatooine/tatooine_mynock.py b/scripts/mobiles/tatooine/tatooine_mynock.py index 64b3e4f1..51935e8c 100644 --- a/scripts/mobiles/tatooine/tatooine_mynock.py +++ b/scripts/mobiles/tatooine/tatooine_mynock.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('tatooine_mynock') mobileTemplate.setLevel(2) + mobileTemplate.setMinLevel(1) + mobileTemplate.setMaxLevel(3) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(20) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(70) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(20) + mobileTemplate.setSocialGroup("tatooine mynock") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_mynock.iff') diff --git a/scripts/mobiles/tatooine/tempest_rill.py b/scripts/mobiles/tatooine/tempest_rill.py index 3224a410..b7b0ac66 100644 --- a/scripts/mobiles/tatooine/tempest_rill.py +++ b/scripts/mobiles/tatooine/tempest_rill.py @@ -11,13 +11,22 @@ def addTemplate(core): mobileTemplate.setMinLevel(8) mobileTemplate.setMaxLevel(10) mobileTemplate.setDifficulty(0) - mobileTemplate.setAttackRange(4) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) mobileTemplate.setWeaponType(6) mobileTemplate.setMinSpawnDistance(4) mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(False) mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(35) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(20) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(15) + mobileTemplate.setSocialGroup("rill") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) diff --git a/scripts/mobiles/tatooine/thief.py b/scripts/mobiles/tatooine/thief.py new file mode 100644 index 00000000..0202fd23 --- /dev/null +++ b/scripts/mobiles/tatooine/thief.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('mission_thief') + mobileTemplate.setLevel(8) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("jabba") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_jabba_thief.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/sword/shared_sword_01.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('thief', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tormented_bocatt.py b/scripts/mobiles/tatooine/tormented_bocatt.py index ed5c4ecd..549ff0c2 100644 --- a/scripts/mobiles/tatooine/tormented_bocatt.py +++ b/scripts/mobiles/tatooine/tormented_bocatt.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('bocatt_tormented') mobileTemplate.setLevel(18) + mobileTemplate.setMinLevel(17) + mobileTemplate.setMaxLevel(19) mobileTemplate.setDifficulty(0) - mobileTemplate.setAttackRange(15) - mobileTemplate.setWeaponType(6) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(100) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(60) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(35) + mobileTemplate.setSocialGroup("bocatt") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_bocatt.iff') diff --git a/scripts/mobiles/tatooine/trandoshan_slavemaster.py b/scripts/mobiles/tatooine/trandoshan_slavemaster.py new file mode 100644 index 00000000..4a40d6ce --- /dev/null +++ b/scripts/mobiles/tatooine/trandoshan_slavemaster.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('ep3_trandoshan_slavermaster') + mobileTemplate.setLevel(2) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("slaver") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_ep3_trando_slavemaster_01.iff') + templates.add('object/mobile/shared_ep3_trando_slavemaster_02.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('trandoshan_slavemaster', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/trandoshan_slaver.py b/scripts/mobiles/tatooine/trandoshan_slaver.py new file mode 100644 index 00000000..ffe95f3e --- /dev/null +++ b/scripts/mobiles/tatooine/trandoshan_slaver.py @@ -0,0 +1,43 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('ep3_trandoshan_slaver') + mobileTemplate.setLevel(4) + mobileTemplate.setMinLevel(1) + mobileTemplate.setMaxLevel(4) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("slaver") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_ep3_trando_slaver_01.iff') + templates.add('object/mobile/shared_ep3_trando_slaver_02.iff') + templates.add('object/mobile/shared_ep3_trando_slaver_03.iff') + templates.add('object/mobile/shared_ep3_trando_slaver_04.iff') + templates.add('object/mobile/shared_ep3_trando_slaver_05.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('trandoshan_slaver', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_avenger.py b/scripts/mobiles/tatooine/tusken_avenger.py new file mode 100644 index 00000000..76b057b1 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_avenger.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('tusken_avenger') + mobileTemplate.setLevel(30) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_avenger', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_bantha.py b/scripts/mobiles/tatooine/tusken_bantha.py index 13943979..5db92815 100644 --- a/scripts/mobiles/tatooine/tusken_bantha.py +++ b/scripts/mobiles/tatooine/tusken_bantha.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('feeder_tusken_bantha') mobileTemplate.setLevel(30) + mobileTemplate.setMinLevel(29) + mobileTemplate.setMaxLevel(31) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(475) + mobileTemplate.setHideType("Wooly Hide") + mobileTemplate.setHideAmount(350) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setBoneAmount(375) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_bantha_hue.iff') diff --git a/scripts/mobiles/tatooine/tusken_berserker.py b/scripts/mobiles/tatooine/tusken_berserker.py new file mode 100644 index 00000000..065429a4 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_berserker.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('tusken_berserker') + mobileTemplate.setLevel(31) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_berserker', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_blood_champion.py b/scripts/mobiles/tatooine/tusken_blood_champion.py new file mode 100644 index 00000000..39a2d86e --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_blood_champion.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('tusken_blood_champion') + mobileTemplate.setLevel(32) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_blood_champion', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_brute.py b/scripts/mobiles/tatooine/tusken_brute.py new file mode 100644 index 00000000..a6556ae5 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_brute.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('tusken_brute') + mobileTemplate.setLevel(31) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_brute', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_captain.py b/scripts/mobiles/tatooine/tusken_captain.py new file mode 100644 index 00000000..5df64ce0 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_captain.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('tusken_chief') + mobileTemplate.setLevel(34) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_chief', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_carnage_champion.py b/scripts/mobiles/tatooine/tusken_carnage_champion.py new file mode 100644 index 00000000..6ae5f705 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_carnage_champion.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('tusken_fort_tusken_champion') + mobileTemplate.setLevel(34) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_carnage_champion', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_chief.py b/scripts/mobiles/tatooine/tusken_chief.py new file mode 100644 index 00000000..42bdd4f0 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_chief.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('tusken_captain') + mobileTemplate.setLevel(33) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_captain', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_commoner.py b/scripts/mobiles/tatooine/tusken_commoner.py new file mode 100644 index 00000000..40d20d49 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_commoner.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('tusken_commoner') + mobileTemplate.setLevel(30) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_commoner', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_death_hunter.py b/scripts/mobiles/tatooine/tusken_death_hunter.py new file mode 100644 index 00000000..3f840963 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_death_hunter.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('tusken_death_hunter') + mobileTemplate.setLevel(32) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_death_hunter', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_elite_guard.py b/scripts/mobiles/tatooine/tusken_elite_guard.py new file mode 100644 index 00000000..83c20580 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_elite_guard.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('tusken_elite_guard') + mobileTemplate.setLevel(34) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_elite_guard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_executioner.py b/scripts/mobiles/tatooine/tusken_executioner.py new file mode 100644 index 00000000..7d80beff --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_executioner.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('tusken_executioner') + mobileTemplate.setLevel(34) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_executioner', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_fighter.py b/scripts/mobiles/tatooine/tusken_fighter.py new file mode 100644 index 00000000..e19a28f5 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_fighter.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('tusken_soldier') + mobileTemplate.setLevel(31) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_fighter', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_flesh_hunter.py b/scripts/mobiles/tatooine/tusken_flesh_hunter.py new file mode 100644 index 00000000..efa8eee6 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_flesh_hunter.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('tusken_flesh_hunter') + mobileTemplate.setLevel(33) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_flesh_hunter', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_follower.py b/scripts/mobiles/tatooine/tusken_follower.py new file mode 100644 index 00000000..487198fb --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_follower.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tusken_raider_18') + mobileTemplate.setLevel(19) + mobileTemplate.setMinLevel(18) + mobileTemplate.setMaxLevel(21) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_follower', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_gore_chief.py b/scripts/mobiles/tatooine/tusken_gore_chief.py new file mode 100644 index 00000000..48d3c8cb --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_gore_chief.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('tusken_gore_chief') + mobileTemplate.setLevel(34) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_gore_chief', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_guard.py b/scripts/mobiles/tatooine/tusken_guard.py new file mode 100644 index 00000000..6859011c --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_guard.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('tusken_guard') + mobileTemplate.setLevel(31) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_guard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_king.py b/scripts/mobiles/tatooine/tusken_king.py new file mode 100644 index 00000000..9d4e3557 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_king.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('tusken_king') + mobileTemplate.setLevel(33) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_king', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_observer.py b/scripts/mobiles/tatooine/tusken_observer.py new file mode 100644 index 00000000..88e1ef6e --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_observer.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('tusken_observer') + mobileTemplate.setLevel(32) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_observer', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_outrider.py b/scripts/mobiles/tatooine/tusken_outrider.py new file mode 100644 index 00000000..5e8c7c6d --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_outrider.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('tusken_raider_wildman') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_outrider', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_priest.py b/scripts/mobiles/tatooine/tusken_priest.py new file mode 100644 index 00000000..0efc6c29 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_priest.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('tusken_raider_worshiper') + mobileTemplate.setLevel(20) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_worshiper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_raid_champion.py b/scripts/mobiles/tatooine/tusken_raid_champion.py new file mode 100644 index 00000000..70bd928d --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_raid_champion.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('bestine_tusken_raid_leader') + mobileTemplate.setLevel(32) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_champion', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_raid_hunter.py b/scripts/mobiles/tatooine/tusken_raid_hunter.py new file mode 100644 index 00000000..6d7564fc --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_raid_hunter.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('bestine_tusken_raid_sub_leader') + mobileTemplate.setLevel(31) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_raid_hunter', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_raid_leader.py b/scripts/mobiles/tatooine/tusken_raid_leader.py new file mode 100644 index 00000000..d072ab05 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_raid_leader.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('heroic_tusken_raid_leader') + mobileTemplate.setLevel(31) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_raid_leader', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_raider.py b/scripts/mobiles/tatooine/tusken_raider.py index 4c2a2277..025d7793 100644 --- a/scripts/mobiles/tatooine/tusken_raider.py +++ b/scripts/mobiles/tatooine/tusken_raider.py @@ -7,10 +7,18 @@ def addTemplate(core): mobileTemplate = MobileTemplate() mobileTemplate.setCreatureName('tusken_raider') - mobileTemplate.setLevel(10) - mobileTemplate.setDifficulty(1) - mobileTemplate.setAttackRange(24) + mobileTemplate.setLevel(30) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_tusken_raider.iff') @@ -22,7 +30,7 @@ def addTemplate(core): mobileTemplate.setWeaponTemplateVector(weaponTemplates) attacks = Vector() - mobileTemplate.setDefaultAttack('rangedShot') + mobileTemplate.setDefaultAttack('rangedshotrifle') mobileTemplate.setAttacks(attacks) core.spawnService.addMobileTemplate('tusken_raider', mobileTemplate) diff --git a/scripts/mobiles/tatooine/tusken_raider_soldier.py b/scripts/mobiles/tatooine/tusken_raider_soldier.py new file mode 100644 index 00000000..2de70aed --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_raider_soldier.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tusken_raider_soldier') + mobileTemplate.setLevel(5) + mobileTemplate.setMinLevel(5) + mobileTemplate.setMaxLevel(6) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_soldier', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_raider_warrior.py b/scripts/mobiles/tatooine/tusken_raider_warrior.py new file mode 100644 index 00000000..369dab9e --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_raider_warrior.py @@ -0,0 +1,39 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tusken_raider_warrior') + mobileTemplate.setLevel(6) + mobileTemplate.setMinLevel(6) + mobileTemplate.setMaxLevel(7) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_warrior', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_savage.py b/scripts/mobiles/tatooine/tusken_savage.py new file mode 100644 index 00000000..b24a9c81 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_savage.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tusken_savage') + mobileTemplate.setLevel(30) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_savage', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_sniper.py b/scripts/mobiles/tatooine/tusken_sniper.py new file mode 100644 index 00000000..c8330889 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_sniper.py @@ -0,0 +1,37 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tusken_sniper') + mobileTemplate.setLevel(30) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_sniper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_torture_lord.py b/scripts/mobiles/tatooine/tusken_torture_lord.py new file mode 100644 index 00000000..164e0348 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_torture_lord.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('tusken_torture_lord') + mobileTemplate.setLevel(32) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_torture_lord', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_wanderer.py b/scripts/mobiles/tatooine/tusken_wanderer.py new file mode 100644 index 00000000..9e09de42 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_wanderer.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('tusken_wanderer') + mobileTemplate.setLevel(33) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_wanderer', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_warlord.py b/scripts/mobiles/tatooine/tusken_warlord.py new file mode 100644 index 00000000..9e09de42 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_warlord.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('tusken_wanderer') + mobileTemplate.setLevel(33) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_wanderer', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_warmaster.py b/scripts/mobiles/tatooine/tusken_warmaster.py new file mode 100644 index 00000000..c402c817 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_warmaster.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('tusken_war_master') + mobileTemplate.setLevel(32) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_warmaster', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_warrior.py b/scripts/mobiles/tatooine/tusken_warrior.py new file mode 100644 index 00000000..4581fde7 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_warrior.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('tusken_warrior') + mobileTemplate.setLevel(32) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('meleehit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_warrior_1', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_witch_doctor.py b/scripts/mobiles/tatooine/tusken_witch_doctor.py new file mode 100644 index 00000000..ce7f2dce --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_witch_doctor.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('tusken_witch_doctor') + mobileTemplate.setLevel(33) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(True) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_witch_doctor', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/tusken_zealot.py b/scripts/mobiles/tatooine/tusken_zealot.py new file mode 100644 index 00000000..1d5795d7 --- /dev/null +++ b/scripts/mobiles/tatooine/tusken_zealot.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tusken_raider_zealot') + mobileTemplate.setLevel(5) + mobileTemplate.setMinLevel(5) + mobileTemplate.setMaxLevel(6) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("tusken raider") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_tusken_raider.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_tusken_generic.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('tusken_zealot', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/twisted_dewback.py b/scripts/mobiles/tatooine/twisted_dewback.py index f88b8020..633560a5 100644 --- a/scripts/mobiles/tatooine/twisted_dewback.py +++ b/scripts/mobiles/tatooine/twisted_dewback.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('twisted_dewback') mobileTemplate.setLevel(11) + mobileTemplate.setMinLevel(10) + mobileTemplate.setMaxLevel(12) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(175) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(125) + mobileTemplate.setBoneType("Animal Bones") + mobileTemplate.setHideAmount(100) + mobileTemplate.setSocialGroup("twisted") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_dewback.iff') diff --git a/scripts/mobiles/tatooine/twisted_rill.py b/scripts/mobiles/tatooine/twisted_rill.py index 977dd020..752e2e0b 100644 --- a/scripts/mobiles/tatooine/twisted_rill.py +++ b/scripts/mobiles/tatooine/twisted_rill.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('twisted_rill') mobileTemplate.setLevel(11) + mobileTemplate.setMinLevel(10) + mobileTemplate.setMaxLevel(13) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(35) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(20) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(15) + mobileTemplate.setSocialGroup("twisted") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_rill.iff') diff --git a/scripts/mobiles/tatooine/twisted_womprat.py b/scripts/mobiles/tatooine/twisted_womprat.py index 851ffcda..ca4b5198 100644 --- a/scripts/mobiles/tatooine/twisted_womprat.py +++ b/scripts/mobiles/tatooine/twisted_womprat.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('twisted_womprat') mobileTemplate.setLevel(11) + mobileTemplate.setMinLevel(10) + mobileTemplate.setMaxLevel(12) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(4) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(3) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("twisted") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + templates = Vector() templates.add('object/mobile/shared_womp_rat.iff') diff --git a/scripts/mobiles/tatooine/vaigonn_shinn.py b/scripts/mobiles/tatooine/vaigonn_shinn.py new file mode 100644 index 00000000..d1cbf3f1 --- /dev/null +++ b/scripts/mobiles/tatooine/vaigonn_shinn.py @@ -0,0 +1,45 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('tatooine_vaigon_shinn') + mobileTemplate.setLevel(8) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(1) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("shinn mugger") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_dressed_commoner_tatooine_nikto_male_01.iff') + templates.add('object/mobile/shared_dressed_commoner_tatooine_nikto_male_02.iff') + templates.add('object/mobile/shared_dressed_commoner_tatooine_nikto_male_03.iff') + templates.add('object/mobile/shared_dressed_commoner_tatooine_nikto_male_04.iff') + templates.add('object/mobile/shared_dressed_commoner_tatooine_nikto_male_05.iff') + templates.add('object/mobile/shared_dressed_commoner_tatooine_nikto_male_06.iff') + templates.add('object/mobile/shared_dressed_commoner_tatooine_nikto_male_07.iff') + templates.add('object/mobile/shared_dressed_commoner_tatooine_nikto_male_08.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('vaigon_shinn', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_assassin.py b/scripts/mobiles/tatooine/valarian_assassin.py new file mode 100644 index 00000000..8bebf555 --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_assassin.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('valarian_assassin') + mobileTemplate.setLevel(15) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_assassin.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_assassin', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_compound_guard.py b/scripts/mobiles/tatooine/valarian_compound_guard.py new file mode 100644 index 00000000..fc671a3a --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_compound_guard.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('valarian_compound_guard') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_compound_guard.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_compound_guard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_crew_chief.py b/scripts/mobiles/tatooine/valarian_crew_chief.py new file mode 100644 index 00000000..8799d207 --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_crew_chief.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('valarian_crew_chief') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_thug.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_chief', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_depot_boss.py b/scripts/mobiles/tatooine/valarian_depot_boss.py new file mode 100644 index 00000000..82d6a37e --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_depot_boss.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('valarian_elite_shuttle') + mobileTemplate.setLevel(22) + mobileTemplate.setDifficulty(1) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_valarian_assassin_boss.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_depot_boss', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_depot_foreman.py b/scripts/mobiles/tatooine/valarian_depot_foreman.py new file mode 100644 index 00000000..6550ecca --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_depot_foreman.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('valarian_boss_depot') + mobileTemplate.setLevel(16) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_thug.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_depot_foreman', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_depot_guard.py b/scripts/mobiles/tatooine/valarian_depot_guard.py new file mode 100644 index 00000000..4295ea95 --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_depot_guard.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('valarian_boss_shuttle') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_thug.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_depot_guard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_depot_scout.py b/scripts/mobiles/tatooine/valarian_depot_scout.py new file mode 100644 index 00000000..30203204 --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_depot_scout.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('valarian_scout_depot') + mobileTemplate.setLevel(12) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_thug.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_dlt20.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_depot_scout', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_depot_swooper.py b/scripts/mobiles/tatooine/valarian_depot_swooper.py new file mode 100644 index 00000000..09fce025 --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_depot_swooper.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('valarian_swooper_depot') + mobileTemplate.setLevel(12) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_thug.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_depot_swooper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_depot_worker.py b/scripts/mobiles/tatooine/valarian_depot_worker.py new file mode 100644 index 00000000..d1a93038 --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_depot_worker.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('valarian_thug_depot') + mobileTemplate.setLevel(12) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_thug.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_depot_worker', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_enforcer.py b/scripts/mobiles/tatooine/valarian_enforcer.py new file mode 100644 index 00000000..669a2d38 --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_enforcer.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('valarian_enforcer') + mobileTemplate.setLevel(15) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_enforcer.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_enforcer', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_henchman.py b/scripts/mobiles/tatooine/valarian_henchman.py new file mode 100644 index 00000000..702baea1 --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_henchman.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('valarian_henchman') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_henchman.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_cdef.iff', 1, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_henchman', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_mechanic.py b/scripts/mobiles/tatooine/valarian_mechanic.py new file mode 100644 index 00000000..dab683bd --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_mechanic.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('valarian_mechanic') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_thug.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_mechanic', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_pod_racer.py b/scripts/mobiles/tatooine/valarian_pod_racer.py new file mode 100644 index 00000000..c5aa9b3b --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_pod_racer.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('valarian_pod_racer') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_swooper.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_pod_racer', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_scout.py b/scripts/mobiles/tatooine/valarian_scout.py new file mode 100644 index 00000000..46e76cc5 --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_scout.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('valarian_scout') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_scout.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_dlt20.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_scout', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_shuttle_guard.py b/scripts/mobiles/tatooine/valarian_shuttle_guard.py new file mode 100644 index 00000000..6fbdf7cc --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_shuttle_guard.py @@ -0,0 +1,40 @@ +import sys +from services.spawn import MobileTemplate +from services.spawn import WeaponTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('valarian_swooper_shuttle') + mobileTemplate.setLevel(18) + mobileTemplate.setMinLevel(17) + mobileTemplate.setMaxLevel(22) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_thug.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_shuttle_guard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_swooper.py b/scripts/mobiles/tatooine/valarian_swooper.py new file mode 100644 index 00000000..373e60ec --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_swooper.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('valarian_swooper_leader') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_swooper_leader.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_swooper_leader', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_swooper_leader.py b/scripts/mobiles/tatooine/valarian_swooper_leader.py new file mode 100644 index 00000000..e1b43c7c --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_swooper_leader.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('valarian_swooper') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_swooper.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_swooper', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_thief.py b/scripts/mobiles/tatooine/valarian_thief.py new file mode 100644 index 00000000..feac01b1 --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_thief.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('valarian_thief') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_thief.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_thief', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/valarian_thug.py b/scripts/mobiles/tatooine/valarian_thug.py new file mode 100644 index 00000000..3f679719 --- /dev/null +++ b/scripts/mobiles/tatooine/valarian_thug.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('valarian_thug') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("valarian") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_valarian_thug.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('valarian_thug', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/variegated_womprat.py b/scripts/mobiles/tatooine/variegated_womprat.py index 72cc6401..f2df5312 100644 --- a/scripts/mobiles/tatooine/variegated_womprat.py +++ b/scripts/mobiles/tatooine/variegated_womprat.py @@ -8,10 +8,26 @@ def addTemplate(core): mobileTemplate.setCreatureName('variegated_womprat') mobileTemplate.setLevel(12) + mobileTemplate.setMinLevel(11) + mobileTemplate.setMaxLevel(14) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(3) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(3) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("variegated womprat") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) + mobileTemplate.setOptionsBitmask(192) templates = Vector() templates.add('object/mobile/shared_variegated_womp_rat.iff') diff --git a/scripts/mobiles/tatooine/vicious_rill.py b/scripts/mobiles/tatooine/vicious_rill.py index 19262365..93a7e55d 100644 --- a/scripts/mobiles/tatooine/vicious_rill.py +++ b/scripts/mobiles/tatooine/vicious_rill.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('vicious_rill') mobileTemplate.setLevel(3) + mobileTemplate.setMinLevel(2) + mobileTemplate.setMaxLevel(4) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(35) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(20) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(15) + mobileTemplate.setSocialGroup("rill") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_rill.iff') diff --git a/scripts/mobiles/tatooine/volatile_scyk.py b/scripts/mobiles/tatooine/volatile_scyk.py index 0262572f..dc0fab06 100644 --- a/scripts/mobiles/tatooine/volatile_scyk.py +++ b/scripts/mobiles/tatooine/volatile_scyk.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('scyk_volatile') mobileTemplate.setLevel(12) + mobileTemplate.setMinLevel(11) + mobileTemplate.setMaxLevel(13) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(40) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(25) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(18) + mobileTemplate.setSocialGroup("scyk") + mobileTemplate.setAssistRange(10) + mobileTemplate.setStalker(True) templates = Vector() templates.add('object/mobile/shared_scyk.iff') diff --git a/scripts/mobiles/tatooine/wasteland_cupa.py b/scripts/mobiles/tatooine/wasteland_cupa.py index e7bcd8b2..574df453 100644 --- a/scripts/mobiles/tatooine/wasteland_cupa.py +++ b/scripts/mobiles/tatooine/wasteland_cupa.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('wasteland_cu_pa') mobileTemplate.setLevel(20) + mobileTemplate.setMinLevel(19) + mobileTemplate.setMaxLevel(21) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(215) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(100) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(115) + mobileTemplate.setSocialGroup("cu pa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_cu_pa.iff') diff --git a/scripts/mobiles/tatooine/water_thief.py b/scripts/mobiles/tatooine/water_thief.py new file mode 100644 index 00000000..4e372bf0 --- /dev/null +++ b/scripts/mobiles/tatooine/water_thief.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('water_thief') + mobileTemplate.setLevel(5) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(5) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(4) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("thug") + mobileTemplate.setAssistRange(4) + mobileTemplate.setStalker(True) + mobileTemplate.setOptionsBitmask(192) + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_moisture_thief.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/melee/sword/shared_sword_01.iff', 4, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('saberhit') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('water_thief', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/white_thranta_manager.py b/scripts/mobiles/tatooine/white_thranta_manager.py new file mode 100644 index 00000000..3f5d2fd1 --- /dev/null +++ b/scripts/mobiles/tatooine/white_thranta_manager.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('tatooine_opening_swooper_13') + mobileTemplate.setLevel(12) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("whitethranta") + mobileTemplate.setAssistRange(3) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_opening_wh_guard.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('white_thranta_manager', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/white_thranta_security_captain.py b/scripts/mobiles/tatooine/white_thranta_security_captain.py new file mode 100644 index 00000000..668a897b --- /dev/null +++ b/scripts/mobiles/tatooine/white_thranta_security_captain.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('tatooine_opening_swooper_15') + mobileTemplate.setLevel(14) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("whitethranta") + mobileTemplate.setAssistRange(5) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_opening_wh_guard.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_dlt20.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('white_thranta_security_captain', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/white_thranta_security_elite.py b/scripts/mobiles/tatooine/white_thranta_security_elite.py new file mode 100644 index 00000000..47499e11 --- /dev/null +++ b/scripts/mobiles/tatooine/white_thranta_security_elite.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('tatooine_opening_swooper_15') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("whitethranta") + mobileTemplate.setAssistRange(5) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_opening_wh_guard.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_dlt20.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('white_thranta_security_elite', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/white_thranta_security_guard.py b/scripts/mobiles/tatooine/white_thranta_security_guard.py new file mode 100644 index 00000000..e5959c69 --- /dev/null +++ b/scripts/mobiles/tatooine/white_thranta_security_guard.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('tatooine_opening_swooper_9') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("whitethranta") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_opening_wh_guard.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_dlt20.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('white_thranta_security_guard', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/white_thranta_security_officer.py b/scripts/mobiles/tatooine/white_thranta_security_officer.py new file mode 100644 index 00000000..b3ac3677 --- /dev/null +++ b/scripts/mobiles/tatooine/white_thranta_security_officer.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('tatooine_opening_swooper_11') + mobileTemplate.setLevel(13) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("whitethranta") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_opening_wh_guard.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_dlt20.iff', 0, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotrifle') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('white_thranta_security_officer', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/white_thranta_specialist.py b/scripts/mobiles/tatooine/white_thranta_specialist.py new file mode 100644 index 00000000..1a945909 --- /dev/null +++ b/scripts/mobiles/tatooine/white_thranta_specialist.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('tatooine_opening_swooper_10') + mobileTemplate.setLevel(9) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("whitethranta") + mobileTemplate.setAssistRange(3) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_opening_wh_guard.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('white_thranta_specialist', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/white_thranta_technican.py b/scripts/mobiles/tatooine/white_thranta_technican.py new file mode 100644 index 00000000..bc9a2673 --- /dev/null +++ b/scripts/mobiles/tatooine/white_thranta_technican.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('tatooine_opening_swooper_8') + mobileTemplate.setLevel(8) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(12) + mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(0) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setSocialGroup("whitethranta") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) + + + templates = Vector() + templates.add('object/mobile/shared_dressed_tatooine_opening_wh_guard.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_cdef.iff', 2, 1.0) + weaponTemplates.add(weapontemplate) + mobileTemplate.setWeaponTemplateVector(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedshotpistol') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('white_thranta_technican', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/tatooine/wild_bladeback_boar.py b/scripts/mobiles/tatooine/wild_bladeback_boar.py index 6568f78f..59ab35da 100644 --- a/scripts/mobiles/tatooine/wild_bladeback_boar.py +++ b/scripts/mobiles/tatooine/wild_bladeback_boar.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('quest_hero_of_tatooine_ferocious_beast') mobileTemplate.setLevel(40) + mobileTemplate.setMinLevel(39) + mobileTemplate.setMaxLevel(41) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(120) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(80) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(50) + mobileTemplate.setSocialGroup("zucca boar") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_zucca_boar.iff') diff --git a/scripts/mobiles/tatooine/wild_dune_boar.py b/scripts/mobiles/tatooine/wild_dune_boar.py index 61a673ae..4796affd 100644 --- a/scripts/mobiles/tatooine/wild_dune_boar.py +++ b/scripts/mobiles/tatooine/wild_dune_boar.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('wild_dune_boar') mobileTemplate.setLevel(50) + mobileTemplate.setMinLevel(49) + mobileTemplate.setMaxLevel(51) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(True) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(90) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(80) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(75) + mobileTemplate.setSocialGroup("zucca boar") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_zucca_boar.iff') diff --git a/scripts/mobiles/tatooine/womprat.py b/scripts/mobiles/tatooine/womprat.py index b67a9948..b50adcad 100644 --- a/scripts/mobiles/tatooine/womprat.py +++ b/scripts/mobiles/tatooine/womprat.py @@ -8,16 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('womprat') mobileTemplate.setLevel(4) - mobileTemplate.setMinLevel(5) - mobileTemplate.setMaxLevel(13) + mobileTemplate.setMinLevel(3) + mobileTemplate.setMaxLevel(6) mobileTemplate.setDifficulty(0) - mobileTemplate.setAttackRange(4) + mobileTemplate.setAttackRange(5) mobileTemplate.setAttackSpeed(1.0) mobileTemplate.setWeaponType(6) mobileTemplate.setMinSpawnDistance(4) mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(False) mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Wild Meat") + mobileTemplate.setMeatAmount(4) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(3) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("womprat") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) diff --git a/scripts/mobiles/tatooine/wonderous_cupa.py b/scripts/mobiles/tatooine/wonderous_cupa.py index 377aea78..2d34e4af 100644 --- a/scripts/mobiles/tatooine/wonderous_cupa.py +++ b/scripts/mobiles/tatooine/wonderous_cupa.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('cu_pa_wonderous') mobileTemplate.setLevel(12) + mobileTemplate.setMinLevel(11) + mobileTemplate.setMaxLevel(13) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(215) + mobileTemplate.setHideType("Bristly Hide") + mobileTemplate.setBoneAmount(100) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(115) + mobileTemplate.setSocialGroup("cu pa") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_cu_pa.iff') diff --git a/scripts/mobiles/tatooine/worrt.py b/scripts/mobiles/tatooine/worrt.py index 9adb3b10..4a49556b 100644 --- a/scripts/mobiles/tatooine/worrt.py +++ b/scripts/mobiles/tatooine/worrt.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('worrt') mobileTemplate.setLevel(5) + mobileTemplate.setMinLevel(4) + mobileTemplate.setMaxLevel(6) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(5) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(5) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(2) + mobileTemplate.setSocialGroup("worrt") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_worrt.iff') diff --git a/scripts/mobiles/tatooine/worrt_gutbuster.py b/scripts/mobiles/tatooine/worrt_gutbuster.py index 83f03334..e39f0ffb 100644 --- a/scripts/mobiles/tatooine/worrt_gutbuster.py +++ b/scripts/mobiles/tatooine/worrt_gutbuster.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('worrt_gutbuster') mobileTemplate.setLevel(13) + mobileTemplate.setMinLevel(12) + mobileTemplate.setMaxLevel(14) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Reptilian Meat") + mobileTemplate.setMeatAmount(9) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(9) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(4) + mobileTemplate.setSocialGroup("worrt") + mobileTemplate.setAssistRange(6) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_worrt.iff') diff --git a/scripts/mobiles/tatooine/young_mountain_squill.py b/scripts/mobiles/tatooine/young_mountain_squill.py index 934f5c31..411e0c15 100644 --- a/scripts/mobiles/tatooine/young_mountain_squill.py +++ b/scripts/mobiles/tatooine/young_mountain_squill.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('young_mountain_squill') mobileTemplate.setLevel(16) + mobileTemplate.setMinLevel(15) + mobileTemplate.setMaxLevel(17) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Carnivore Meat") + mobileTemplate.setMeatAmount(2) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(2) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(1) + mobileTemplate.setSocialGroup("squill") + mobileTemplate.setAssistRange(0) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_squill.iff') diff --git a/scripts/mobiles/tatooine/zucca_boar.py b/scripts/mobiles/tatooine/zucca_boar.py index 8b278a9c..6865bcac 100644 --- a/scripts/mobiles/tatooine/zucca_boar.py +++ b/scripts/mobiles/tatooine/zucca_boar.py @@ -8,10 +8,25 @@ def addTemplate(core): mobileTemplate.setCreatureName('zucca_boar') mobileTemplate.setLevel(8) + mobileTemplate.setMinLevel(7) + mobileTemplate.setMaxLevel(9) mobileTemplate.setDifficulty(0) mobileTemplate.setAttackRange(5) - mobileTemplate.setWeaponType(6) mobileTemplate.setAttackSpeed(1.0) + mobileTemplate.setWeaponType(6) + mobileTemplate.setMinSpawnDistance(4) + mobileTemplate.setMaxSpawnDistance(8) + mobileTemplate.setDeathblow(False) + mobileTemplate.setScale(1) + mobileTemplate.setMeatType("Herbivore Meat") + mobileTemplate.setMeatAmount(65) + mobileTemplate.setHideType("Leathery Hide") + mobileTemplate.setBoneAmount(40) + mobileTemplate.setBoneType("Animal Bone") + mobileTemplate.setHideAmount(25) + mobileTemplate.setSocialGroup("zucca boar") + mobileTemplate.setAssistRange(12) + mobileTemplate.setStalker(False) templates = Vector() templates.add('object/mobile/shared_zucca_boar.iff') diff --git a/scripts/object/intangible/data_item/guild_stone.py b/scripts/object/intangible/data_item/guild_stone.py index ccad8904..7cf0dd3a 100644 --- a/scripts/object/intangible/data_item/guild_stone.py +++ b/scripts/object/intangible/data_item/guild_stone.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'object/guild_access_device') return \ No newline at end of file diff --git a/scripts/object/tangible/furniture/technical/guild_registry_initial.py b/scripts/object/tangible/furniture/technical/guild_registry_initial.py index ccad8904..25ce3c98 100644 --- a/scripts/object/tangible/furniture/technical/guild_registry_initial.py +++ b/scripts/object/tangible/furniture/technical/guild_registry_initial.py @@ -1,4 +1,5 @@ import sys def setup(core, object): + object.setAttachment('radial_filename', 'object/guild_registry') return \ No newline at end of file diff --git a/scripts/pvpzones.py b/scripts/pvpzones.py new file mode 100644 index 00000000..91ab32ef --- /dev/null +++ b/scripts/pvpzones.py @@ -0,0 +1,9 @@ +import sys + +def addZones(core): + + gcwService = core.gcwService + + gcwService.addPvPZone('rori', 5318, 5680, 400) + + \ No newline at end of file diff --git a/scripts/radial/npc/corpse.py b/scripts/radial/npc/corpse.py index 453b7382..663ff2b6 100644 --- a/scripts/radial/npc/corpse.py +++ b/scripts/radial/npc/corpse.py @@ -5,7 +5,7 @@ def createRadial(core, owner, target, radials): #owner.sendSystemMessage('Correct Loot Radial created', 0) radials.clear() radials.add(RadialOptions(0, 36, 0, 'Loot')) - if target.getAttachment('AI') and core.resourceService.canHarvest(owner, target): + if target.getAttachment('AI') and core.resourceService and core.resourceService.canHarvest(owner, target): radials.add(RadialOptions(0, 163, 3, '@sui:harvest_corpse')) radials.add(RadialOptions(2, 164, 3, '@sui:harvest_meat')) radials.add(RadialOptions(2, 165, 3, '@sui:harvest_hide')) @@ -15,13 +15,7 @@ def createRadial(core, owner, target, radials): return def handleSelection(core, owner, target, option): - - if option == 164 and target.getAttachment('AI') and core.resourceService.canHarvest(owner, target): - core.resourceService.doHarvest(owner, target, 'meat') - if option == 165 and target.getAttachment('AI') and core.resourceService.canHarvest(owner, target): - core.resourceService.doHarvest(owner, target, 'hide') - if option == 166 and target.getAttachment('AI') and core.resourceService.canHarvest(owner, target): - core.resourceService.doHarvest(owner, target, 'bone') + if option == 36 and target: #core.lootService.handleLootRequest(owner,target) core.lootService.handleLootRequest(owner,target) @@ -30,5 +24,11 @@ def handleSelection(core, owner, target, option): #core.lootService.handleCreditDrop(owner, lootedObjectInventory) if option == 15 and target: core.objectService.destroyObject(target) + if option == 164 and target.getAttachment('AI') and core.resourceService.canHarvest(owner, target): + core.resourceService.doHarvest(owner, target, 'meat') + if option == 165 and target.getAttachment('AI') and core.resourceService.canHarvest(owner, target): + core.resourceService.doHarvest(owner, target, 'hide') + if option == 166 and target.getAttachment('AI') and core.resourceService.canHarvest(owner, target): + core.resourceService.doHarvest(owner, target, 'bone') return \ No newline at end of file diff --git a/scripts/radial/object/guild_access_device.py b/scripts/radial/object/guild_access_device.py new file mode 100644 index 00000000..bd019f39 --- /dev/null +++ b/scripts/radial/object/guild_access_device.py @@ -0,0 +1,30 @@ +from resources.common import RadialOptions +from services.sui.SUIService import InputBoxType +from java.util import Vector +from main import NGECore +import sys + +def createRadial(core, owner, target, radials): + + #radials.clear() + + if owner.getGuildId() != 0: + guild = core.guildService.getGuildById(owner.getGuildId) + + if guild is None: + return + + if guild.getLeader() == owner.getObjectID(): + radials.add(RadialOptions(0, RadialOptions.serverGuildGuildManagement, 3, '@guild:menu_guild_management')) + radials.add(RadialOptions(0, RadialOptions.serverGuildMemberManagement, 3, '@guild:menu_member_management')) + + #Guild Management + radials.add(RadialOptions(3, RadialOptions.serverGuildDisband, 3, '@guild:menu_disband')) + + #Member Management + radials.add(RadialOptions(4, RadialOptions.serverGuildSponsor, 3, '@guild:menu_sponsor')) + return + return + +def handleSelection(core, owner, target, option): + return \ No newline at end of file diff --git a/scripts/radial/object/guild_registry.py b/scripts/radial/object/guild_registry.py new file mode 100644 index 00000000..7b383d9a --- /dev/null +++ b/scripts/radial/object/guild_registry.py @@ -0,0 +1,47 @@ +from resources.common import RadialOptions +from services.sui.SUIService import InputBoxType +from java.util import Vector +from main import NGECore +import sys + +def createRadial(core, owner, target, radials): + + #radials.clear() + + if owner.getGuildId() == 0: + radials.add(RadialOptions(0, RadialOptions.serverGuildCreate, 3, '@guild:menu_create')) + return + + return + +def handleSelection(core, owner, target, option): + suiSvc = NGECore().getInstance().suiService + # Create Guild + if option == 185 and target: + wndGuildCreate = core.suiService.createInputBox(InputBoxType.INPUT_BOX_OK_CANCEL, '@guild:create_name_title', '@guild:create_name_prompt', owner, owner, 0, handleGuildCreateName) + wndGuildCreate.setProperty("txtInput:MaxLength", "24"); + wndGuildCreate.setProperty("txtInput:NumericInteger", "false") + suiSvc.openSUIWindow(wndGuildCreate) + return + + return + +def handleGuildCreateName(owner, window, eventType, returnList): + suiSvc = NGECore().getInstance().suiService + if eventType == 0: + guildName = str(returnList.get(0)) + if guildName is not None: + owner.setAttachment('guildName', guildName) + wndGuildInitials = NGECore().getInstance().suiService.createInputBox(InputBoxType.INPUT_BOX_OK, '@guild:create_abbrev_title', '@guild:create_abbrev_prompt', owner, owner, 0, doGuildCreate) + wndGuildInitials.setProperty("txtInput:MaxLength", "4"); + wndGuildInitials.setProperty("txtInput:NumericInteger", "false") + suiSvc.openSUIWindow(wndGuildInitials) + return + return + +def doGuildCreate(owner, window, eventType, returnList): + if eventType == 0: + guild = NGECore().getInstance().guildService.createGuild(str(returnList.get(0)), str(owner.getAttachment('guildName')), owner) + owner.setGuildId(guild.getId()) + return + return \ No newline at end of file diff --git a/scripts/skillMods/expertise_stance_saber_block.py b/scripts/skillMods/expertise_stance_saber_block.py index b5c5e291..64962f76 100644 --- a/scripts/skillMods/expertise_stance_saber_block.py +++ b/scripts/skillMods/expertise_stance_saber_block.py @@ -1,8 +1,10 @@ import sys def add(core, actor, skillMod, value): + core.skillModService.addSkillMod(actor, 'display_only_parry', skillMod.getBase() * 100) return def deduct(core, actor, skillMod, value): + core.skillModService.deductSkillMod(actor, 'display_only_parry', skillMod.getBase() * 100) return \ No newline at end of file diff --git a/scripts/static_spawns/corellia/coronet.py b/scripts/static_spawns/corellia/coronet.py index c04fe03e..60de3058 100644 --- a/scripts/static_spawns/corellia/coronet.py +++ b/scripts/static_spawns/corellia/coronet.py @@ -33,75 +33,75 @@ def addPlanetSpawns(core, planet): #---Coronet-CityHall-interrior brantlee = stcSvc.spawnObject('object/mobile/shared_dressed_brantlee_spondoon.iff', 'corellia', long(1855463), float(-25.7), float(1.3), float(-0.5), float(0.98), float(0.01)) - brantlee.setCustomName2('Brantlee Spondoon') - brantlee.setOptionsBitmask(256) + #brantlee.setCustomName2('Brantlee Spondoon') + #brantlee.setOptionsBitmask(256) cor_brawlr00 = stcSvc.spawnObject('object/mobile/shared_dressed_brawler_trainer_01.iff', 'corellia', long(1855463), float(-1.7274), float(7.9), float(-32.175), float(0.5), float(0.01)) - cor_brawlr00.setCustomName2('a brawler') + #cor_brawlr00.setCustomName2('a brawler') cor_btdiplmt02 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_bothan_male_01.iff', 'corellia', long(1855463), float(5.228), float(0.3), float(2.9167), float(-0.47), float(0.21)) - cor_btdiplmt02.setCustomName2('a Bothan Diplomat') + #cor_btdiplmt02.setCustomName2('a Bothan Diplomat') cor_btinfobkr00 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_bothan_female_02.iff', 'corellia', long(1855463), float(5.228), float(0.3), float(4.016), float(0.99), float(0.01)) - cor_btinfobkr00.setCustomName2('a Bothan Information Broker') + #cor_btinfobkr00.setCustomName2('a Bothan Information Broker') cor_btinfobkr01 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_bothan_male_02.iff', 'corellia', long(1855463), float(5.345), float(2.278), float(-27.0615), float(-0.14), float(0.22)) - cor_btinfobkr01.setCustomName2('a Bothan Information Broker') + #cor_btinfobkr01.setCustomName2('a Bothan Information Broker') cor_ent00 = stcSvc.spawnObject('object/mobile/shared_dressed_twk_entertainer.iff', 'corellia', long(1855463), float(0.767877), float(0.3), float(-2.902), float(-0.50), float(0.11)) - cor_ent00.setCustomName2('an Entertainer') + #cor_ent00.setCustomName2('an Entertainer') cor_farmer00 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_02.iff', 'corellia', long(1855463), float(-18.6014), float(1.3026), float(-11.314), float(-0.45), float(0.21)) - cor_farmer00.setCustomName2('a farmer') + #cor_farmer00.setCustomName2('a farmer') cor_farmer01 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_female_01.iff', 'corellia', long(1855463), float(0.767877), float(0.3), float(-4.002), float(-0.45), float(0.21)) - cor_farmer01.setCustomName2('a farmer') + #cor_farmer01.setCustomName2('a farmer') galluraHanderin = stcSvc.spawnObject('object/mobile/shared_dressed_noble_human_female_02.iff', 'corellia', long(1855463), float(-6.51554), float(1.303), float(9.6562), float(0.1), float(0.01)) - galluraHanderin.setCustomName2('Gallura Handerin') - galluraHanderin.setOptionsBitmask(256) + #galluraHanderin.setCustomName2('Gallura Handerin') + #galluraHanderin.setOptionsBitmask(256) corsec_agent00 = stcSvc.spawnObject('object/mobile/shared_dressed_corellia_local_corsec_chief.iff', 'corellia', long(1855463), float(-0.332), float(0.3), float(-2.902), float(0.89), float(0.01)) - corsec_agent00.setCustomName2('a CorSec Agent') + #corsec_agent00.setCustomName2('a CorSec Agent') thaleDustrunner = stcSvc.spawnObject('object/mobile/shared_dressed_criminal_smuggler_human_male_01.iff', 'corellia', long(1855463), float(-0.05), float(3.078), float(-10.9388), float(0.99), float(0.11)) - thaleDustrunner.setCustomName2('Thale Dustrunner') - thaleDustrunner.setOptionsBitmask(256) + #thaleDustrunner.setCustomName2('Thale Dustrunner') + #thaleDustrunner.setOptionsBitmask(256) #---Coronet-StarPort-interrior cor_btdiplmt00 = stcSvc.spawnObject('object/mobile/shared_dressed_noble_bothan_female_01.iff', 'corellia', long(1855678), float(56.669), float(-0.521137), float(33.7689), float(0.99), float(0.11)) - cor_btdiplmt00.setCustomName2('a Bothan Diplomat') + #cor_btdiplmt00.setCustomName2('a Bothan Diplomat') cor_btdiplmt01 = stcSvc.spawnObject('object/mobile/shared_dressed_noble_bothan_male_01.iff', 'corellia', long(1855672), float(8.651), float(0.6394), float(74.448), float(-0.47), float(0.21)) - cor_btdiplmt01.setCustomName2('a Bothan Diplomat') + #cor_btdiplmt01.setCustomName2('a Bothan Diplomat') corsec_cadt00 = stcSvc.spawnObject('object/mobile/shared_dressed_corsec_pilot_human_female_01.iff', 'corellia', long(1855678), float(37.163), float(0.6394), float(40.706), float(0.99), float(0.11)) - corsec_cadt00.setCustomName2('a CorSec cadet') + #corsec_cadt00.setCustomName2('a CorSec cadet') farmer02 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_04.iff', 'corellia', long(1855683), float(-62.767), float(2.6394), float(40.66), float(-0.45), float(0.21)) - farmer02.setCustomName2('a farmer') + #farmer02.setCustomName2('a farmer') gambler00 = stcSvc.spawnObject('object/mobile/ep3/shared_ep3_cheated_gambler.iff', 'corellia', long(1855675), float(-4.61669), float(0.6394), float(67.826), float(0.99), float(0.11)) - gambler00.setCustomName2('a gambler') + #gambler00.setCustomName2('a gambler') cor_hunter00 = stcSvc.spawnObject('object/mobile/shared_dressed_trader_thug_male_moncal_02.iff', 'corellia', long(1855672), float(8.651), float(0.6394), float(75.548), float(0.99), float(0.11)) - cor_hunter00.setCustomName2('a hunter') + #cor_hunter00.setCustomName2('a hunter') jessbConvorr = stcSvc.spawnObject('object/mobile/shared_dressed_corellia_jesseb_convorr.iff', 'corellia', long(1855684), float(50.2), float(1.0), float(20.1), float(-0.47), float(0.21)) - jessbConvorr.setCustomName2('Jesseb Convorr') - jessbConvorr.setOptionsBitmask(256) + #jessbConvorr.setCustomName2('Jesseb Convorr') + #jessbConvorr.setOptionsBitmask(256) cor_merc00 = stcSvc.spawnObject('object/mobile/shared_dressed_mercenary_strong_hum_m.iff', 'corellia', long(1855683), float(-62.767), float(2.6394), float(41.76), float(0.99), float(0.11)) - cor_merc00.setCustomName2('a mercenary') + #cor_merc00.setCustomName2('a mercenary') cor_miner00 = stcSvc.spawnObject('object/mobile/shared_dressed_mand_miner_hum_03.iff', 'corellia', long(1855678), float(37.163), float(0.6394), float(39.606), float(-0.47), float(0.21)) - cor_miner00.setCustomName2('a miner') + #cor_miner00.setCustomName2('a miner') cor_scintst00 = stcSvc.spawnObject('object/mobile/shared_dressed_twi_female_scientist_01.iff', 'corellia', long(1855678), float(56.669), float(-0.521137), float(32.6689), float(-0.47), float(0.21)) - cor_scintst00.setCustomName2('a Scientist') + #cor_scintst00.setCustomName2('a Scientist') cor_slice00 = stcSvc.spawnObject('object/mobile/shared_dressed_criminal_slicer_human_male_01.iff', 'corellia', long(1855675), float(-4.61669), float(0.6394), float(66.7263), float(-0.5), float(0.21)) - cor_slice00.setCustomName2('a slicer') + #cor_slice00.setCustomName2('a slicer') #-Coronet-Legacy NPCs stregand = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_bith_male_01.iff', 'corellia', long(0), float(-33), float(28), float(-4424), float(0.67), float(0.21)) diff --git a/scripts/static_spawns/dantooine/imperial_outpost.py b/scripts/static_spawns/dantooine/imperial_outpost.py new file mode 100644 index 00000000..85ab98ae --- /dev/null +++ b/scripts/static_spawns/dantooine/imperial_outpost.py @@ -0,0 +1,12 @@ +import sys +from resources.datatables import Options +from resources.datatables import State + +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) + return diff --git a/scripts/static_spawns/rori/emperors_hand.py b/scripts/static_spawns/rori/emperors_hand.py new file mode 100644 index 00000000..4d94581f --- /dev/null +++ b/scripts/static_spawns/rori/emperors_hand.py @@ -0,0 +1,15 @@ +import sys +import java.util.Random + +def addPlanetSpawns(core, planet): + + stcSvc = core.staticService + random = java.util.Random() + + mintime = 14400 + maxtime = 25200 + + respawntimer = random.nextInt((maxtime - mintime) + 1800) + + stcSvc.spawnObject('restuss_emperors_hand', 'rori', long(0), float(5283), float(80), float(5746), float(0.641), float(0.767),float(0),float(0), int(respawntimer)) + return \ No newline at end of file diff --git a/scripts/static_spawns/tatooine/anchorhead.py b/scripts/static_spawns/tatooine/anchorhead.py index 379246f2..5e2fb31e 100644 --- a/scripts/static_spawns/tatooine/anchorhead.py +++ b/scripts/static_spawns/tatooine/anchorhead.py @@ -17,11 +17,11 @@ def addPlanetSpawns(core, planet): # Cantina Interior rebRecruiter = stcSvc.spawnObject('object/mobile/shared_dressed_rebel_recruiter_human_female_01.iff', 'tatooine', long(1213345), float(-2.2), float(0.4), float(-5.4), float(0), float(0)) - rebRecruiter.setOptionsBitmask(264) + #rebRecruiter.setOptionsBitmask(264) 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') - borraSetas.setOptionsBitmask(256) + #borraSetas.setCustomName2('Borra Setas') + #borraSetas.setOptionsBitmask(256) # 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)) diff --git a/scripts/static_spawns/tatooine/bestine.py b/scripts/static_spawns/tatooine/bestine.py index caaeed4a..a636f8c3 100644 --- a/scripts/static_spawns/tatooine/bestine.py +++ b/scripts/static_spawns/tatooine/bestine.py @@ -17,84 +17,84 @@ def addPlanetSpawns(core, planet): # 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') - indigoSiyan.setOptionsBitmask(256) + #indigoSiyan.setCustomName2('Indigo Siyan') + #indigoSiyan.setOptionsBitmask(256) 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') - keanna.setOptionsBitmask(256) + #keanna.setCustomName2('Keanna Li\'kyna') + #keanna.setOptionsBitmask(256) 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') - oberhaur.setOptionsBitmask(256) + #oberhaur.setCustomName2('Commander Oberhaur') + #oberhaur.setOptionsBitmask(256) 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') - seanTrenwell.setOptionsBitmask(256) + #seanTrenwell.setCustomName2('Sean Trenwell') + #seanTrenwell.setOptionsBitmask(256) 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)) - talmont.setCustomName2('Prefect Talmont') - talmont.setOptionsBitmask(256) + #talmont.setCustomName2('Prefect Talmont') + #talmont.setOptionsBitmask(256) 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') - tourAryon.setOptionsBitmask(256) + #tourAryon.setCustomName2('Tour Aryon') + #tourAryon.setOptionsBitmask(256) 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') - victorVisalis.setOptionsBitmask(256) + #victorVisalis.setCustomName2('Victor Visalis') + #victorVisalis.setOptionsBitmask(256) 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)) - wilhalmSkrim.setCustomName2('Wilhalm Skrim') - wilhalmSkrim.setOptionsBitmask(256) + #wilhalmSkrim.setCustomName2('Wilhalm Skrim') + #wilhalmSkrim.setOptionsBitmask(256) #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') - akalColzet.setOptionsBitmask(256) + #akalColzet.setCustomName2('lt. Akal Colzet') + #akalColzet.setOptionsBitmask(256) 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)) - fariousGletch.setCustomName2('Farious Gletch') - fariousGletch.setOptionsBitmask(256) + #fariousGletch.setCustomName2('Farious Gletch') + #fariousGletch.setOptionsBitmask(256) 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') - pfilbeeJhorn.setOptionsBitmask(256) + #pfilbeeJhorn.setCustomName2('Pfilbee Jhorn') + #pfilbeeJhorn.setOptionsBitmask(256) #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') - gilBurtin.setOptionsBitmask(256) + #gilBurtin.setCustomName2('Gil Burtin') + #gilBurtin.setOptionsBitmask(256) # 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') - barak.setOptionsBitmask(256) + #barak.setCustomName2('Barak') + #barak.setOptionsBitmask(256) 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') - barrezz.setOptionsBitmask(256) + #barrezz.setCustomName2('Commander Barrezz') + #barrezz.setOptionsBitmask(256) 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') - jasha.setOptionsBitmask(256) + #jasha.setCustomName2('Captain Jasha') + #jasha.setOptionsBitmask(256) 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') - dkrn.setOptionsBitmask(256) + #dkrn.setCustomName2('Commander D\'krn') + #dkrn.setOptionsBitmask(256) 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') - gunham.setOptionsBitmask(256) + #gunham.setCustomName2('Commander Gunham') + #gunham.setOptionsBitmask(256) 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') - kormundThrylle.setOptionsBitmask(256) + #kormundThrylle.setCustomName2('Kormund Thrylle') + #kormundThrylle.setOptionsBitmask(256) 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') - calebKnolar.setOptionsBitmask(256) + #calebKnolar.setCustomName2('Major Caleb Knolar') + #calebKnolar.setOptionsBitmask(256) return diff --git a/scripts/static_spawns/tatooine/jabbas_palace.py b/scripts/static_spawns/tatooine/jabbas_palace.py index df11aef4..036fc2a1 100644 --- a/scripts/static_spawns/tatooine/jabbas_palace.py +++ b/scripts/static_spawns/tatooine/jabbas_palace.py @@ -18,65 +18,65 @@ def addPlanetSpawns(core, planet): # TODO Verify proper cell IDs once Jabba's Palace is spawning properly again. 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') - reelo.setOptionsBitmask(264) + #reelo.setCustomName2('Reelo Baruk') + #reelo.setOptionsBitmask(264) 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') - reeyees.setOptionsBitmask(264) + #reeyees.setCustomName2('Ree-Yees') + #reeyees.setOptionsBitmask(264) 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') - ephant.setOptionsBitmask(264) + #ephant.setCustomName2('Ephant Mon') + #ephant.setOptionsBitmask(264) 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') - porcellus.setOptionsBitmask(264) + #porcellus.setCustomName2('Porcellus') + #porcellus.setOptionsBitmask(264) 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') - barada.setOptionsBitmask(264) + #barada.setCustomName2('Barada') + #barada.setOptionsBitmask(264) 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') - bibMain.setOptionsBitmask(264) + #bibMain.setCustomName2('Bib Fortuna') + #bibMain.setOptionsBitmask(264) 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') - jabba.setOptionsBitmask(264) + #jabba.setCustomName2('Jabba the Hutt') + #jabba.setOptionsBitmask(264) 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.setOptionsBitmask(264) + #oola.setCustomName2('Oola') + #oola.setOptionsBitmask(264) 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') - bobaFett.setOptionsBitmask(264) + #bobaFett.setCustomName2('Boba Fett') + #bobaFett.setOptionsBitmask(264) 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') - ev9d9.setOptionsBitmask(264) + #ev9d9.setCustomName2('EV-9D9') + #ev9d9.setOptionsBitmask(264) 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') - malakili.setOptionsBitmask(264) + #malakili.setCustomName2('Malakili') + #malakili.setOptionsBitmask(264) # TODO 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') - maxRebo.setOptionsBitmask(264) + #maxRebo.setCustomName2('Max Rebo') + #maxRebo.setOptionsBitmask(264) 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') - droopy.setOptionsBitmask(264) + #droopy.setCustomName2('Droopy McCool') + #droopy.setOptionsBitmask(264) 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') - sySnootles.setOptionsBitmask(264) + #sySnootles.setCustomName2('Sy Snootles') + #sySnootles.setOptionsBitmask(264) 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') - g5po.setOptionsBitmask(264) + #g5po.setCustomName2('G5-PO') + #g5po.setOptionsBitmask(264) return diff --git a/scripts/static_spawns/tatooine/mos_eisley.py b/scripts/static_spawns/tatooine/mos_eisley.py index 8b3ac25f..0007f1f0 100644 --- a/scripts/static_spawns/tatooine/mos_eisley.py +++ b/scripts/static_spawns/tatooine/mos_eisley.py @@ -17,134 +17,134 @@ def addPlanetSpawns(core, planet): #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.setOptionsBitmask(256) + #wuher.setCustomName2('Wuher') + #wuher.setOptionsBitmask(256) 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') - chadraFanFemale.setOptionsBitmask(256) + #chadraFanFemale.setCustomName2('a Chadra Fan Female') + #chadraFanFemale.setOptionsBitmask(256) 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') - chadraFanMale.setOptionsBitmask(256) + #chadraFanMale.setCustomName2('a Chadra Fan Male') + #chadraFanMale.setOptionsBitmask(256) 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') - muftak.setOptionsBitmask(256) + #muftak.setCustomName2('Muftak') + #muftak.setOptionsBitmask(256) 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') - chissMale1.setOptionsBitmask(256) + #chissMale1.setCustomName2('a Chiss Male') + #chissMale1.setOptionsBitmask(256) 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') - chissMale2.setOptionsBitmask(256) + #chissMale2.setCustomName2('a Chiss Male') + #chissMale2.setOptionsBitmask(256) 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') - cantinaStorm.setOptionsBitmask(256) + #cantinaStorm.setCustomName2('a Stormtrooper') + #cantinaStorm.setOptionsBitmask(256) 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') - cantinaStormL.setOptionsBitmask(256) + #cantinaStormL.setCustomName2('a Stormtrooper Squad Leader') + #cantinaStormL.setOptionsBitmask(256) 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') - figrinDan.setOptionsBitmask(256) + #figrinDan.setCustomName2('Figrin D\'an') + #figrinDan.setOptionsBitmask(256) 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') - techMor.setOptionsBitmask(256) + #techMor.setCustomName2('Tech M\'or') + #techMor.setOptionsBitmask(256) 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') - doikkNats.setOptionsBitmask(256) + #doikkNats.setCustomName2('Doikk Na\'ts') + #doikkNats.setOptionsBitmask(256) 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') - tednDahai.setOptionsBitmask(256) + #tednDahai.setCustomName2('Tedn Dahai') + #tednDahai.setOptionsBitmask(256) 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') - nalanCheel.setOptionsBitmask(256) + #nalanCheel.setCustomName2('Nalan Cheel') + #nalanCheel.setOptionsBitmask(256) 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') - businessman1.setOptionsBitmask(256) + #businessman1.setCustomName2('a Businessman') + #businessman1.setOptionsBitmask(256) 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') - commoner1.setOptionsBitmask(256) + #commoner1.setCustomName2('a Commoner') + #commoner1.setOptionsBitmask(256) 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') - entertainer1.setOptionsBitmask(256) + #entertainer1.setCustomName2('an Entertainer') + #entertainer1.setOptionsBitmask(256) 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') - noble1.setOptionsBitmask(256) + #noble1.setCustomName2('a Noble') + #noble1.setOptionsBitmask(256) 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') - commoner2.setOptionsBitmask(256) + #commoner2.setCustomName2('a Commoner') + #commoner2.setOptionsBitmask(256) 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') - commoner3.setOptionsBitmask(256) + #commoner3.setCustomName2('a Commoner') + #commoner3.setOptionsBitmask(256) 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') - commoner4.setOptionsBitmask(256) + #commoner4.setCustomName2('a Commoner') + #commoner4.setOptionsBitmask(256) 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') - commoner5.setOptionsBitmask(256) + #commoner5.setCustomName2('a Commoner') + #commoner5.setOptionsBitmask(256) 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') - commoner6.setOptionsBitmask(256) + #commoner6.setCustomName2('a Commoner') + #commoner6.setOptionsBitmask(256) 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') - commoner7.setOptionsBitmask(256) + #commoner7.setCustomName2('a Patron') + #commoner7.setOptionsBitmask(256) 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') - commoner8.setOptionsBitmask(256) + #commoner8.setCustomName2('a Patron') + #commoner8.setOptionsBitmask(256) 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') - commoner9.setOptionsBitmask(256) + #commoner9.setCustomName2('a Commoner') + #commoner9.setOptionsBitmask(256) 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') - commoner10.setOptionsBitmask(256) + #commoner10.setCustomName2('a Commoner') + #commoner10.setOptionsBitmask(256) 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') - anetiaKahryn.setOptionsBitmask(256) + #anetiaKahryn.setCustomName2('Anetia Kah\'ryn') + #anetiaKahryn.setOptionsBitmask(256) 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') - dravis.setOptionsBitmask(256) + #dravis.setCustomName2('Dravis') + #dravis.setOptionsBitmask(256) 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') - talonKarrde.setOptionsBitmask(256) + #talonKarrde.setCustomName2('Talon Karrde') + #talonKarrde.setOptionsBitmask(256) #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') - bartender1.setOptionsBitmask(256) + #bartender1.setCustomName2('a Bartender') + #bartender1.setOptionsBitmask(256) #City Hall Interior #Lucky Despot Interior TODO: Check Cell IDs for Spawned NPCS inside once Lucky Despot is spawning properly again. 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') - hansolo1.setOptionsBitmask(256) + #hansolo1.setCustomName2('Han Solo') + #hansolo1.setOptionsBitmask(256) #Medical Center Interior @@ -290,7 +290,7 @@ def addPlanetSpawns(core, planet): vourk.setOptionsBitmask(256) 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.setOptionsBitmask(264) + #mayor.setOptionsBitmask(264) 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') @@ -301,8 +301,8 @@ def addPlanetSpawns(core, planet): purvis.setOptionsBitmask(256) 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.setOptionsBitmask(256) + #peawpRdawc.setCustomName2('Peawp R\'dawc') + #peawpRdawc.setOptionsBitmask(256) nikoBrehe = 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)) nikoBrehe.setOptionsBitmask(264) @@ -315,7 +315,7 @@ def addPlanetSpawns(core, planet): #recruiters impRecruiter = stcSvc.spawnObject('object/mobile/shared_dressed_imperial_officer_f.iff', 'tatooine', long(1280132), float(-6), float(1), float(9.2), float(0.70), float(0.71)) - impRecruiter.setOptionsBitmask(264) + #impRecruiter.setOptionsBitmask(264) diff --git a/scripts/static_spawns/tatooine/mos_eisley_desert_swoopers.py b/scripts/static_spawns/tatooine/mos_eisley_desert_swoopers.py new file mode 100644 index 00000000..8aca297d --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_desert_swoopers.py @@ -0,0 +1,36 @@ +import sys +# Project SWG: Mos Eisley Desert Swoopers: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + desert_swooper = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3319), float(5), float(-5125), float(0), float(0), float(0), float(0), 30) + desert_swooper1 = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3309), float(5), float(-5121), float(0), float(0), float(0), float(0), 30) + desert_swooper2 = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3325), float(5), float(-5112), float(0), float(0), float(0), float(0), 30) + desert_swooper3 = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3334), float(5), float(-5130), float(0), float(0), float(0), float(0), 30) + desert_swooper4 = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3315), float(5), float(-5122), float(0), float(0), float(0), float(0), 30) + desert_swooper5 = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3322), float(5), float(-5138), float(0), float(0), float(0), float(0), 30) + desert_swooper6 = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3331), float(5), float(-5119), float(0), float(0), float(0), float(0), 30) + desert_swooper7 = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3292), float(5), float(-5155), float(0), float(0), float(0), float(0), 30) + desert_swooper8 = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3312), float(5), float(-5155), float(0), float(0), float(0), float(0), 30) + desert_swooper9 = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3303), float(5), float(-5145), float(0), float(0), float(0), float(0), 30) + desert_swooper10 = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3296), float(5), float(-5121), float(0), float(0), float(0), float(0), 30) + desert_swooper11 = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3280), float(5), float(-5112), float(0), float(0), float(0), float(0), 30) + desert_swooper12 = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3294), float(5), float(-5130), float(0), float(0), float(0), float(0), 30) + desert_swooper13 = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3303), float(5), float(-5119), float(0), float(0), float(0), float(0), 30) + desert_swooper14 = stcSvc.spawnObject('desert_swooper', 'tatooine', long(0), float(3290), float(5), float(-5138), float(0), float(0), float(0), float(0), 30) + + desert_swooper_leader = stcSvc.spawnObject('desert_swooper_leader', 'tatooine', long(0), float(3313), float(5), float(-5138), float(0), float(0), float(0), float(0), 30) + desert_swooper_leader1 = stcSvc.spawnObject('desert_swooper_leader', 'tatooine', long(0), float(3316), float(5), float(-5131), float(0), float(0), float(0), float(0), 30) + + return + diff --git a/scripts/static_spawns/tatooine/mos_eisley_error_prone.py b/scripts/static_spawns/tatooine/mos_eisley_error_prone.py new file mode 100644 index 00000000..90e68ac6 --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_error_prone.py @@ -0,0 +1,35 @@ +import sys +# Project SWG: Mos Eisley Error Prone Droids: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + error_prone = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2868), float(39), float(-4814), float(0), float(0), float(0), float(0), 30) + error_prone1 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2815), float(38), float(-4815), float(0), float(0), float(0), float(0), 30) + error_prone2 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2875), float(34), float(-4777), float(0), float(0), float(0), float(0), 30) + error_prone3 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2850), float(37), float(-4786), float(0), float(0), float(0), float(0), 30) + error_prone4 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2835), float(41), float(-4806), float(0), float(0), float(0), float(0), 30) + error_prone5 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2839), float(42), float(-4834), float(0), float(0), float(0), float(0), 30) + error_prone6 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2849), float(40), float(-4848), float(0), float(0), float(0), float(0), 30) + error_prone7 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2880), float(35), float(-4848), float(0), float(0), float(0), float(0), 30) + error_prone8 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2878), float(38), float(-4835), float(0), float(0), float(0), float(0), 30) + error_prone9 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2880), float(38), float(-4819), float(0), float(0), float(0), float(0), 30) + error_prone10 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2878), float(38), float(-4835), float(0), float(0), float(0), float(0), 30) + error_prone11 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2880), float(38), float(-4819), float(0), float(0), float(0), float(0), 30) + error_prone12 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2895), float(35), float(-4826), float(0), float(0), float(0), float(0), 30) + error_prone13 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2895), float(39), float(-4795), float(0), float(0), float(0), float(0), 30) + error_prone14 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2860), float(39), float(-4827), float(0), float(0), float(0), float(0), 30) + error_prone15 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2851), float(40), float(-4806), float(0), float(0), float(0), float(0), 30) + error_prone16 = stcSvc.spawnObject('error-prone_battle_droid', 'tatooine', long(0), float(2871), float(38), float(-4799), float(0), float(0), float(0), float(0), 30) + + return + diff --git a/scripts/static_spawns/tatooine/mos_eisley_escaped_criminal.py b/scripts/static_spawns/tatooine/mos_eisley_escaped_criminal.py new file mode 100644 index 00000000..225fb203 --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_escaped_criminal.py @@ -0,0 +1,32 @@ +import sys +# Project SWG: Mos Eisley Error Prone Droids: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + escaped_criminal = stcSvc.spawnObject('escaped_criminal', 'tatooine', long(0), float(2862), float(13), float(-5103), float(0), float(0), float(0), float(0), 30) + escaped_criminal1 = stcSvc.spawnObject('escaped_criminal', 'tatooine', long(0), float(2856), float(13), float(-5094), float(0), float(0), float(0), float(0), 30) + escaped_criminal2 = stcSvc.spawnObject('escaped_criminal', 'tatooine', long(0), float(2845), float(10), float(-5084), float(0), float(0), float(0), float(0), 30) + escaped_criminal3 = stcSvc.spawnObject('escaped_criminal', 'tatooine', long(0), float(2832), float(10), float(-5091), float(0), float(0), float(0), float(0), 30) + escaped_criminal4 = stcSvc.spawnObject('escaped_criminal', 'tatooine', long(0), float(2815), float(7), float(-5109), float(0), float(0), float(0), float(0), 30) + escaped_criminal5 = stcSvc.spawnObject('escaped_criminal', 'tatooine', long(0), float(2827), float(11), float(-5129), float(0), float(0), float(0), float(0), 30) + escaped_criminal6 = stcSvc.spawnObject('escaped_criminal', 'tatooine', long(0), float(2843), float(7), float(-5099), float(0), float(0), float(0), float(0), 30) + escaped_criminal7 = stcSvc.spawnObject('escaped_criminal', 'tatooine', long(0), float(2849), float(6), float(-5108), float(0), float(0), float(0), float(0), 30) + escaped_criminal8 = stcSvc.spawnObject('escaped_criminal', 'tatooine', long(0), float(2852), float(7), float(-5117), float(0), float(0), float(0), float(0), 30) + escaped_criminal9 = stcSvc.spawnObject('escaped_criminal', 'tatooine', long(0), float(2848), float(13), float(-5138), float(0), float(0), float(0), float(0), 30) + escaped_criminal10 = stcSvc.spawnObject('escaped_criminal', 'tatooine', long(0), float(2809), float(9), float(-5121), float(0), float(0), float(0), float(0), 30) + escaped_criminal11 = stcSvc.spawnObject('escaped_criminal', 'tatooine', long(0), float(2815), float(2), float(-5074), float(0), float(0), float(0), float(0), 30) + escaped_criminal12 = stcSvc.spawnObject('escaped_criminal', 'tatooine', long(0), float(2837), float(5), float(-5081), float(0), float(0), float(0), float(0), 30) + + + return + diff --git a/scripts/static_spawns/tatooine/mos_eisley_gunrunners.py b/scripts/static_spawns/tatooine/mos_eisley_gunrunners.py new file mode 100644 index 00000000..acbf8d2a --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_gunrunners.py @@ -0,0 +1,38 @@ +import sys +# Project SWG: Mos Eisley gunrunners: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + # gunrunners + gunrunner = stcSvc.spawnObject('gunrunner', 'tatooine', long(0), float(2835), float(8), float(-4276), float(0), float(0), float(0), float(0), 45) + gunrunner1 = stcSvc.spawnObject('gunrunner', 'tatooine', long(0), float(2818), float(7), float(-4265), float(0), float(0), float(0), float(0), 45) + gunrunner2 = stcSvc.spawnObject('gunrunner', 'tatooine', long(0), float(2823), float(7), float(-4284), float(0), float(0), float(0), float(0), 45) + gunrunner3 = stcSvc.spawnObject('gunrunner', 'tatooine', long(0), float(2806), float(7), float(-4253), float(0), float(0), float(0), float(0), 45) + gunrunner4 = stcSvc.spawnObject('gunrunner', 'tatooine', long(0), float(2798), float(7), float(-4292), float(0), float(0), float(0), float(0), 45) + gunrunner5 = stcSvc.spawnObject('gunrunner', 'tatooine', long(0), float(2848), float(7), float(-4316), float(0), float(0), float(0), float(0), 45) + gunrunner6 = stcSvc.spawnObject('gunrunner', 'tatooine', long(0), float(2862), float(7), float(-4289), float(0), float(0), float(0), float(0), 45) + gunrunner7 = stcSvc.spawnObject('gunrunner', 'tatooine', long(0), float(2842), float(7), float(-4299), float(0), float(0), float(0), float(0), 45) + gunrunner8 = stcSvc.spawnObject('gunrunner', 'tatooine', long(0), float(2839), float(7), float(-4283), float(0), float(0), float(0), float(0), 45) + gunrunner9 = stcSvc.spawnObject('gunrunner', 'tatooine', long(0), float(2799), float(6), float(-4277), float(0), float(0), float(0), float(0), 45) + gunrunner10 = stcSvc.spawnObject('gunrunner', 'tatooine', long(0), float(2744), float(7), float(-4279), float(0), float(0), float(0), float(0), 45) + gunrunner11 = stcSvc.spawnObject('gunrunner', 'tatooine', long(0), float(2794), float(7), float(-4301), float(0), float(0), float(0), float(0), 45) + + # gunrunner sentry + gunrunner_sentry = stcSvc.spawnObject('gunrunner_sentry', 'tatooine', long(0), float(2830), float(8), float(-4270), float(0), float(0), float(0), float(0), 45) + gunrunner_sentry1 = stcSvc.spawnObject('gunrunner_sentry', 'tatooine', long(0), float(2851), float(10), float(-4261), float(0), float(0), float(0), float(0), 45) + gunrunner_sentry2 = stcSvc.spawnObject('gunrunner_sentry', 'tatooine', long(0), float(2824), float(6), float(-4297), float(0), float(0), float(0), float(0), 45) + gunrunner_sentry3 = stcSvc.spawnObject('gunrunner_sentry', 'tatooine', long(0), float(2833), float(10), float(-4252), float(0), float(0), float(0), float(0), 45) + gunrunner_sentry4 = stcSvc.spawnObject('gunrunner_sentry', 'tatooine', long(0), float(2830), float(6), float(-4308), float(0), float(0), float(0), float(0), 45) + + + return diff --git a/scripts/static_spawns/tatooine/mos_eisley_kreetles.py b/scripts/static_spawns/tatooine/mos_eisley_kreetles.py new file mode 100644 index 00000000..eaf5bf99 --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_kreetles.py @@ -0,0 +1,41 @@ +import sys +# Project SWG: MosEisley Kreetles: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + # Carrion Kreetles + carrion_kreetle1 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3551), float(4), float(-5064), float(0), float(0), float(0), float(0), 30) + carrion_kreetle11 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3545), float(4), float(-5055), float(0), float(0), float(0), float(0), 30) + carrion_kreetle12 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3540), float(4), float(-5050), float(0), float(0), float(0), float(0), 30) + carrion_kreetle13 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3533), float(4), float(-5070), float(0), float(0), float(0), float(0), 30) + carrion_kreetle14 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3555), float(4), float(-5072), float(0), float(0), float(0), float(0), 30) + carrion_kreetle15 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3559), float(4), float(-5061), float(0), float(0), float(0), float(0), 30) + carrion_kreetle16 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3562), float(4), float(-5064), float(0), float(0), float(0), float(0), 30) + + carrion_kreetle2 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3233), float(8), float(-4457), float(0), float(0), float(0), float(0), 30) + carrion_kreetle21 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3223), float(8), float(-4447), float(0), float(0), float(0), float(0), 30) + carrion_kreetle22 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3213), float(8), float(-4455), float(0), float(0), float(0), float(0), 30) + carrion_kreetle23 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3235), float(8), float(-4440), float(0), float(0), float(0), float(0), 30) + carrion_kreetle24 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3245), float(8), float(-4460), float(0), float(0), float(0), float(0), 30) + carrion_kreetle25 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3250), float(8), float(-4461), float(0), float(0), float(0), float(0), 30) + carrion_kreetle26 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3238), float(8), float(-4464), float(0), float(0), float(0), float(0), 30) + + carrion_kreetle3 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3147), float(4), float(-4846), float(0), float(0), float(0), float(0), 30) + carrion_kreetle31 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3137), float(4), float(-4856), float(0), float(0), float(0), float(0), 30) + carrion_kreetle32 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3127), float(4), float(-4836), float(0), float(0), float(0), float(0), 30) + carrion_kreetle35 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3145), float(4), float(-4852), float(0), float(0), float(0), float(0), 30) + carrion_kreetle36 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3135), float(4), float(-4838), float(0), float(0), float(0), float(0), 30) + carrion_kreetle37 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3150), float(4), float(-4856), float(0), float(0), float(0), float(0), 30) + carrion_kreetle39 = stcSvc.spawnObject('carrion_kreetle', 'tatooine', long(0), float(3140), float(4), float(-4860), float(0), float(0), float(0), float(0), 30) + + return \ No newline at end of file diff --git a/scripts/static_spawns/tatooine/mos_eisley_mites.py b/scripts/static_spawns/tatooine/mos_eisley_mites.py new file mode 100644 index 00000000..fae8bcb0 --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_mites.py @@ -0,0 +1,69 @@ +import sys +# Project SWG: MosEisley mites: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + + # Mound Mites + mound_mite1 = stcSvc.spawnObject('mound_mite', 'tatooine', long(0), float(3785), float(57), float(-5057), float(0), float(0), float(0), float(0), 30) + mound_mite11 = stcSvc.spawnObject('mound_mite', 'tatooine', long(0), float(3775), float(55), float(-5067), float(0), float(0), float(0), float(0), 30) + mound_mite12 = stcSvc.spawnObject('mound_mite', 'tatooine', long(0), float(3765), float(53), float(-5077), float(0), float(0), float(0), float(0), 30) + mound_mite13 = stcSvc.spawnObject('mound_mite', 'tatooine', long(0), float(3795), float(56), float(-5047), float(0), float(0), float(0), float(0), 30) + mound_mite14 = stcSvc.spawnObject('mound_mite', 'tatooine', long(0), float(3805), float(53), float(-5037), float(0), float(0), float(0), float(0), 30) + mound_mite15 = stcSvc.spawnObject('mound_mite', 'tatooine', long(0), float(3780), float(58), float(-5050), float(0), float(0), float(0), float(0), 30) + mound_mite16 = stcSvc.spawnObject('mound_mite', 'tatooine', long(0), float(3790), float(55), float(-5040), float(0), float(0), float(0), float(0), 30) + + # Mound Mites + mound_mite2 = stcSvc.spawnObject('mound_mite', 'tatooine', long(0), float(3560), float(63), float(-4339), float(0), float(0), float(0), float(0), 30) + mound_mite21 = stcSvc.spawnObject('mound_mite', 'tatooine', long(0), float(3550), float(63), float(-4349), float(0), float(0), float(0), float(0), 30) + mound_mite22 = stcSvc.spawnObject('mound_mite', 'tatooine', long(0), float(3540), float(63), float(-4359), float(0), float(0), float(0), float(0), 30) + mound_mite23 = stcSvc.spawnObject('mound_mite', 'tatooine', long(0), float(3570), float(63), float(-4329), float(0), float(0), float(0), float(0), 30) + mound_mite24 = stcSvc.spawnObject('mound_mite', 'tatooine', long(0), float(3580), float(63), float(-4319), float(0), float(0), float(0), float(0), 30) + mound_mite25 = stcSvc.spawnObject('mound_mite', 'tatooine', long(0), float(3555), float(63), float(-4345), float(0), float(0), float(0), float(0), 30) + mound_mite26 = stcSvc.spawnObject('mound_mite', 'tatooine', long(0), float(3565), float(63), float(-4325), float(0), float(0), float(0), float(0), 30) + + + # Legacy RockMites + + rockmite = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3140), float(5), float(-4907), float(0), float(0), float(0), float(0), 30) + rockmite1 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3150), float(5), float(-4917), float(0), float(0), float(0), float(0), 30) + rockmite2 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3160), float(5), float(-4927), float(0), float(0), float(0), float(0), 30) + rockmite3 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3130), float(5), float(-4897), float(0), float(0), float(0), float(0), 30) + rockmite4 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3120), float(5), float(-4887), float(0), float(0), float(0), float(0), 30) + rockmite5 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3145), float(5), float(-4900), float(0), float(0), float(0), float(0), 30) + rockmite6 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3155), float(5), float(-4908), float(0), float(0), float(0), float(0), 30) + + # Legacy RockMites + rockmite2 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3710), float(5), float(-4652), float(0), float(0), float(0), float(0), 30) + rockmite21 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3724), float(5), float(-4661), float(0), float(0), float(0), float(0), 30) + rockmite22 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3733), float(5), float(-4659), float(0), float(0), float(0), float(0), 30) + rockmite23 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3747), float(5), float(-4655), float(0), float(0), float(0), float(0), 30) + rockmite24 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3752), float(5), float(-4645), float(0), float(0), float(0), float(0), 30) + rockmite25 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3761), float(5), float(-4644), float(0), float(0), float(0), float(0), 30) + rockmite26 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3762), float(5), float(-4654), float(0), float(0), float(0), float(0), 30) + rockmite27 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3732), float(5), float(-4664), float(0), float(0), float(0), float(0), 30) + rockmite28 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3741), float(5), float(-4663), float(0), float(0), float(0), float(0), 30) + rockmite29 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3752), float(5), float(-4659), float(0), float(0), float(0), float(0), 30) + rockmite210 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3769), float(5), float(-4650), float(0), float(0), float(0), float(0), 30) + rockmite211 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3778), float(5), float(-4647), float(0), float(0), float(0), float(0), 30) + rockmite212 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3727), float(5), float(-4647), float(0), float(0), float(0), float(0), 30) + rockmite213 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3742), float(5), float(-4637), float(0), float(0), float(0), float(0), 30) + rockmite214 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3755), float(5), float(-4635), float(0), float(0), float(0), float(0), 30) + rockmite215 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3771), float(5), float(-4660), float(0), float(0), float(0), float(0), 30) + rockmite216 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3785), float(5), float(-4657), float(0), float(0), float(0), float(0), 30) + rockmite217 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3774), float(5), float(-4663), float(0), float(0), float(0), float(0), 30) + rockmite218 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3767), float(5), float(-4672), float(0), float(0), float(0), float(0), 30) + rockmite219 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3754), float(5), float(-4666), float(0), float(0), float(0), float(0), 30) + rockmite220 = stcSvc.spawnObject('rockmite', 'tatooine', long(0), float(3717), float(5), float(-4633), float(0), float(0), float(0), float(0), 30) + + return \ No newline at end of file diff --git a/scripts/static_spawns/tatooine/mos_eisley_scavenger.py b/scripts/static_spawns/tatooine/mos_eisley_scavenger.py new file mode 100644 index 00000000..0de1c0b5 --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_scavenger.py @@ -0,0 +1,35 @@ +import sys +# Project SWG: Mos Eisley scavenger: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + + #Enforcers + + scavenger = stcSvc.spawnObject('scavenger', 'tatooine', long(0), float(3102), float(9), float(-4951), float(0), float(0), float(0), float(0), 30) + scavenger1 = stcSvc.spawnObject('scavenger', 'tatooine', long(0), float(3110), float(8), float(-4952), float(0), float(0), float(0), float(0), 30) + scavenger2 = stcSvc.spawnObject('scavenger', 'tatooine', long(0), float(3109), float(7), float(-4961), float(0), float(0), float(0), float(0), 30) + scavenger3 = stcSvc.spawnObject('scavenger', 'tatooine', long(0), float(3096), float(9), float(-4938), float(0), float(0), float(0), float(0), 30) + scavenger4 = stcSvc.spawnObject('scavenger', 'tatooine', long(0), float(3080), float(11), float(-4942), float(0), float(0), float(0), float(0), 30) + scavenger5 = stcSvc.spawnObject('scavenger', 'tatooine', long(0), float(3089), float(10), float(-4961), float(0), float(0), float(0), float(0), 30) + scavenger6 = stcSvc.spawnObject('scavenger', 'tatooine', long(0), float(3106), float(7), float(-4969), float(0), float(0), float(0), float(0), 30) + scavenger7 = stcSvc.spawnObject('scavenger', 'tatooine', long(0), float(3100), float(8), float(-4973), float(0), float(0), float(0), float(0), 30) + scavenger8 = stcSvc.spawnObject('scavenger', 'tatooine', long(0), float(3067), float(9), float(-4932), float(0), float(0), float(0), float(0), 30) + scavenger9 = stcSvc.spawnObject('scavenger', 'tatooine', long(0), float(3061), float(6), float(-4951), float(0), float(0), float(0), float(0), 30) + scavenger10 = stcSvc.spawnObject('scavenger', 'tatooine', long(0), float(3077), float(3), float(-4961), float(0), float(0), float(0), float(0), 30) + scavenger11 = stcSvc.spawnObject('scavenger', 'tatooine', long(0), float(3071), float(3), float(-4971), float(0), float(0), float(0), float(0), 30) + scavenger12 = stcSvc.spawnObject('scavenger', 'tatooine', long(0), float(3047), float(7), float(-4957), float(0), float(0), float(0), float(0), 30) + + + return + diff --git a/scripts/static_spawns/tatooine/mos_eisley_shinn_bunker.py b/scripts/static_spawns/tatooine/mos_eisley_shinn_bunker.py new file mode 100644 index 00000000..fd5ab6e6 --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_shinn_bunker.py @@ -0,0 +1,61 @@ +import sys +# Project SWG: Mos Eisley Shinn bunker: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + + # Shinn Mugger outisde + + shinn_mugger = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3410), float(8), float(-5461), float(0), float(0), float(0), float(0), 30) + shinn_mugger1 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3432), float(9), float(-5445), float(0), float(0), float(0), float(0), 30) + shinn_mugger2 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3464), float(10), float(-5430), float(0), float(0), float(0), float(0), 30) + shinn_mugger3 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3457), float(12), float(-5419), float(0), float(0), float(0), float(0), 30) + shinn_mugger4 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3431), float(6), float(-5427), float(0), float(0), float(0), float(0), 30) + shinn_mugger5 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3405), float(6), float(-5434), float(0), float(0), float(0), float(0), 30) + shinn_mugger6 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3398), float(5), float(-5459), float(0), float(0), float(0), float(0), 30) + shinn_mugger7 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3394), float(7), float(-5483), float(0), float(0), float(0), float(0), 30) + shinn_mugger8 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3417), float(8), float(-5491), float(0), float(0), float(0), float(0), 30) + shinn_mugger9 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3439), float(9), float(-5482), float(0), float(0), float(0), float(0), 30) + shinn_mugger10 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3447), float(9), float(-5462), float(0), float(0), float(0), float(0), 30) + shinn_mugger11 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3429), float(7), float(-5473), float(0), float(0), float(0), float(0), 30) + shinn_mugger12 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3449), float(10), float(-5504), float(0), float(0), float(0), float(0), 30) + shinn_mugger13 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3415), float(7), float(-5501), float(0), float(0), float(0), float(0), 30) + shinn_mugger14 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3392), float(7), float(-5489), float(0), float(0), float(0), float(0), 30) + shinn_mugger15 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3380), float(5), float(-5465), float(0), float(0), float(0), float(0), 30) + shinn_mugger16 = stcSvc.spawnObject('shinn_mugger', 'tatooine', long(0), float(3394), float(4), float(-5456), float(0), float(0), float(0), float(0), 30) + + + #shinn Guards outside bunker + shinn_guard_o1 = stcSvc.spawnObject('shinn_guard', 'tatooine', long(0), float(3417), float(7), float(-5461), float(0), float(0), float(0), float(0), 30) + shinn_guard_o2 = stcSvc.spawnObject('shinn_guard', 'tatooine', long(0), float(3423), float(7), float(-5461), float(0), float(0), float(0), float(0), 30) + + # Shinn Guards in Bunker + shinn_guard = stcSvc.spawnObject('shinn_guard', 'tatooine', long(15124075), float(-3.3), float(0.3), float(3.6), float(0), float(0), float(0), float(0), 30) + shinn_guard1 = stcSvc.spawnObject('shinn_guard', 'tatooine', long(15124075), float(-3.3), float(0.3), float(-4.1), float(0), float(0), float(0), float(0), 30) + shinn_guard2 = stcSvc.spawnObject('shinn_guard', 'tatooine', long(15124085), float(3.7), float(-3.3), float(5.2), float(0), float(0), float(0), float(0), 30) + shinn_guard3 = stcSvc.spawnObject('shinn_guard', 'tatooine', long(15124093), float(-4.3), float(-10.3), float(-6.2), float(0), float(0), float(0), float(0), 30) + shinn_guard4 = stcSvc.spawnObject('shinn_guard', 'tatooine', long(15124123), float(4.3), float(-13.8), float(6.9), float(0), float(0), float(0), float(0), 30) + shinn_guard5 = stcSvc.spawnObject('shinn_guard', 'tatooine', long(15124123), float(-2.1), float(-13.8), float(6.8), float(0), float(0), float(0), float(0), 30) + shinn_guard6 = stcSvc.spawnObject('shinn_guard', 'tatooine', long(15124123), float(-6.8), float(-13.8), float(6.7), float(0), float(0), float(0), float(0), 30) + shinn_guard7 = stcSvc.spawnObject('shinn_guard', 'tatooine', long(15124141), float(1.5), float(-20.8), float(-3.5), float(0), float(0), float(0), float(0), 30) + shinn_guard8 = stcSvc.spawnObject('shinn_guard', 'tatooine', long(15124142), float(-1.0), float(-20.7), float(11.0), float(0), float(0), float(0), float(0), 30) + shinn_guard9 = stcSvc.spawnObject('shinn_guard', 'tatooine', long(15124142), float(3.6), float(-20.7), float(11.4), float(0), float(0), float(0), float(0), 30) + shinn_guard10 = stcSvc.spawnObject('shinn_guard', 'tatooine', long(15124142), float(1.6), float(-20.7), float(4.7), float(0), float(0), float(0), float(0), 30) + shinn_guard11 = stcSvc.spawnObject('shinn_guard', 'tatooine', long(15124152), float(-1.6), float(-20.8), float(23.4), float(0), float(0), float(0), float(0), 30) + shinn_guard12 = stcSvc.spawnObject('shinn_guard', 'tatooine', long(15124152), float(4.6), float(-20.8), float(23.4), float(0), float(0), float(0), float(0), 30) + + # Vaigonn Shinn + vaigonn_shinn = stcSvc.spawnObject('vaigon_shinn', 'tatooine', long(15124152), float(1.7), float(-20.8), float(29.7), float(-1), float(0), float(0), float(0), 30) + + return + diff --git a/scripts/static_spawns/tatooine/mos_eisley_swoop_gang.py b/scripts/static_spawns/tatooine/mos_eisley_swoop_gang.py new file mode 100644 index 00000000..734e756d --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_swoop_gang.py @@ -0,0 +1,41 @@ +import sys +# Project SWG: Mos Eisley Swoop gang: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + + #Enforcers + + swoop_gang_enforcer = stcSvc.spawnObject('swoop_gang_enforcer', 'tatooine', long(0), float(3183), float(5), float(-4786), float(0), float(0), float(0), float(0), 30) + swoop_gang_enforcer1 = stcSvc.spawnObject('swoop_gang_enforcer', 'tatooine', long(0), float(3208), float(5), float(-4824), float(0), float(0), float(0), float(0), 30) + + #Punk + + swoop_gang_punk = stcSvc.spawnObject('swoop_gang_punk', 'tatooine', long(0), float(3194), float(5), float(-4839), float(0), float(0), float(0), float(0), 30) + swoop_gang_punk1 = stcSvc.spawnObject('swoop_gang_punk', 'tatooine', long(0), float(3167), float(5), float(-4795), float(0), float(0), float(0), float(0), 30) + swoop_gang_punk2 = stcSvc.spawnObject('swoop_gang_punk', 'tatooine', long(0), float(3207), float(5), float(-4808), float(0), float(0), float(0), float(0), 30) + swoop_gang_punk3 = stcSvc.spawnObject('swoop_gang_punk', 'tatooine', long(0), float(3149), float(5), float(-4816), float(0), float(0), float(0), float(0), 30) + + #Rogue + + swoop_gang_rogue = stcSvc.spawnObject('swoop_gang_rogue', 'tatooine', long(0), float(3151), float(5), float(-4802), float(0), float(0), float(0), float(0), 30) + swoop_gang_rogue1 = stcSvc.spawnObject('swoop_gang_rogue', 'tatooine', long(0), float(3199), float(5), float(-4799), float(0), float(0), float(0), float(0), 30) + swoop_gang_rogue2 = stcSvc.spawnObject('swoop_gang_rogue', 'tatooine', long(0), float(3180), float(5), float(-4811), float(0), float(0), float(0), float(0), 30) + #thug + + swoop_gang_thug = stcSvc.spawnObject('swoop_gang_thug', 'tatooine', long(0), float(3220), float(5), float(-4800), float(0), float(0), float(0), float(0), 30) + swoop_gang_thug1 = stcSvc.spawnObject('swoop_gang_thug', 'tatooine', long(0), float(3169), float(5), float(-4823), float(0), float(0), float(0), float(0), 30) + swoop_gang_thug2 = stcSvc.spawnObject('swoop_gang_thug', 'tatooine', long(0), float(3168), float(5), float(-4773), float(0), float(0), float(0), float(0), 30) + + return + diff --git a/scripts/static_spawns/tatooine/mos_eisley_tempest_rills.py b/scripts/static_spawns/tatooine/mos_eisley_tempest_rills.py new file mode 100644 index 00000000..e135dcb6 --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_tempest_rills.py @@ -0,0 +1,52 @@ +import sys +# Project SWG: MosEisley Tempest Rills: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + # Tempest rills + tempest_rill1 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3716), float(5), float(-4602), float(0), float(0), float(0), float(0), 30) + tempest_rill2 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3701), float(5), float(-4649), float(0), float(0), float(0), float(0), 30) + tempest_rill3 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3741), float(5), float(-4651), float(0), float(0), float(0), float(0), 30) + tempest_rill4 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3668), float(5), float(-4597), float(0), float(0), float(0), float(0), 30) + tempest_rill5 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3695), float(5), float(-4613), float(0), float(0), float(0), float(0), 30) + tempest_rill6 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3678), float(5), float(-4613), float(0), float(0), float(0), float(0), 30) + tempest_rill7 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3718), float(5), float(-4651), float(0), float(0), float(0), float(0), 30) + tempest_rill8 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3737), float(5), float(-4633), float(0), float(0), float(0), float(0), 30) + tempest_rill9 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3692), float(5), float(-4621), float(0), float(0), float(0), float(0), 30) + tempest_rill10 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3695), float(5), float(-4646), float(0), float(0), float(0), float(0), 30) + tempest_rill11 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3795), float(5), float(-4647), float(0), float(0), float(0), float(0), 30) + tempest_rill12 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3716), float(5), float(-4613), float(0), float(0), float(0), float(0), 30) + tempest_rill13 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3704), float(5), float(-4624), float(0), float(0), float(0), float(0), 30) + tempest_rill14 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3687), float(5), float(-4600), float(0), float(0), float(0), float(0), 30) + tempest_rill15 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3709), float(5), float(-4611), float(0), float(0), float(0), float(0), 30) + tempest_rill16 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3725), float(5), float(-4619), float(0), float(0), float(0), float(0), 30) + tempest_rill17 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3727), float(5), float(-4638), float(0), float(0), float(0), float(0), 30) + tempest_rill18 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3716), float(5), float(-4622), float(0), float(0), float(0), float(0), 30) + tempest_rill19 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3710), float(5), float(-4637), float(0), float(0), float(0), float(0), 30) + tempest_rill20 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3698), float(5), float(-4637), float(0), float(0), float(0), float(0), 30) + tempest_rill21 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3684), float(5), float(-4645), float(0), float(0), float(0), float(0), 30) + + + # Tempest rills + tempest_rill4 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3875), float(48), float(-5068), float(0), float(0), float(0), float(0), 30) + tempest_rill41 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3855), float(45), float(-5048), float(0), float(0), float(0), float(0), 30) + tempest_rill42 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3865), float(45), float(-5058), float(0), float(0), float(0), float(0), 30) + tempest_rill43 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3885), float(56), float(-5088), float(0), float(0), float(0), float(0), 30) + tempest_rill44 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3892), float(58), float(-5078), float(0), float(0), float(0), float(0), 30) + tempest_rill45 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3860), float(44), float(-5043), float(0), float(0), float(0), float(0), 30) + tempest_rill46 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3870), float(44), float(-5053), float(0), float(0), float(0), float(0), 30) + tempest_rill47 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3877), float(53), float(-5082), float(0), float(0), float(0), float(0), 30) + tempest_rill48 = stcSvc.spawnObject('tempest_rill', 'tatooine', long(0), float(3890), float(54), float(-5073), float(0), float(0), float(0), float(0), 30) + + return + diff --git a/scripts/static_spawns/tatooine/mos_eisley_toggi_bok.py b/scripts/static_spawns/tatooine/mos_eisley_toggi_bok.py new file mode 100644 index 00000000..6c172aa7 --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_toggi_bok.py @@ -0,0 +1,39 @@ +import sys +# Project SWG: Mos Eisley Toogi Bok's place: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + + # Thiefs + + thiefs = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2780), float(6), float(-4579), float(0), float(0), float(0), float(0), 30) + thiefs1 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2781), float(6), float(-4604), float(0), float(0), float(0), float(0), 30) + thiefs2 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2732), float(9), float(-4619), float(0), float(0), float(0), float(0), 30) + thiefs3 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2717), float(11), float(-4594), float(0), float(0), float(0), float(0), 30) + thiefs4 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2733), float(7), float(-4563), float(0), float(0), float(0), float(0), 30) + thiefs5 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2762), float(7), float(-4535), float(0), float(0), float(0), float(0), 30) + thiefs6 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2793), float(7), float(-4554), float(0), float(0), float(0), float(0), 30) + thiefs7 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2771), float(6), float(-4594), float(0), float(0), float(0), float(0), 30) + thiefs8 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2763), float(7), float(-4623), float(0), float(0), float(0), float(0), 30) + thiefs9 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2809), float(8), float(-4562), float(0), float(0), float(0), float(0), 30) + thiefs10 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2807), float(7), float(-4592), float(0), float(0), float(0), float(0), 30) + thiefs11 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2793), float(6), float(-4622), float(0), float(0), float(0), float(0), 30) + thiefs12 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2748), float(7), float(-4593), float(0), float(0), float(0), float(0), 30) + thiefs13 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2708), float(11), float(-4566), float(0), float(0), float(0), float(0), 30) + thiefs14 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2742), float(9), float(-4541), float(0), float(0), float(0), float(0), 30) + thiefs15 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2786), float(7), float(-4535), float(0), float(0), float(0), float(0), 30) + thiefs16 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2803), float(6), float(-4578), float(0), float(0), float(0), float(0), 30) + thiefs17 = stcSvc.spawnObject('thief', 'tatooine', long(0), float(2800), float(6), float(-4619), float(0), float(0), float(0), float(0), 30) + + return + diff --git a/scripts/static_spawns/tatooine/mos_eisley_tusken_soldiers.py b/scripts/static_spawns/tatooine/mos_eisley_tusken_soldiers.py new file mode 100644 index 00000000..98e25c41 --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_tusken_soldiers.py @@ -0,0 +1,51 @@ +import sys +# Project SWG: Moseisley Tusken soldiers: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + # Tusken Solders + soldiers = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4168), float(8), float(-4735), float(0), float(0), float(0), float(0), 45) + soldiers1 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4170), float(8), float(-4731), float(0), float(0), float(0), float(0), 45) + soldiers11 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4172), float(8), float(-4727), float(0), float(0), float(0), float(0), 45) + soldiers12 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4174), float(8), float(-4723), float(0), float(0), float(0), float(0), 45) + soldiers13 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4176), float(8), float(-4719), float(0), float(0), float(0), float(0), 45) + soldiers14 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4178), float(8), float(-4739), float(0), float(0), float(0), float(0), 45) + soldiers15 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4176), float(8), float(-4743), float(0), float(0), float(0), float(0), 45) + + + soldiers2 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4162), float(8), float(-4735), float(0), float(0), float(0), float(0), 45) + soldiers25 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4168), float(8), float(-4739), float(0), float(0), float(0), float(0), 45) + soldiers26 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4166), float(8), float(-4743), float(0), float(0), float(0), float(0), 45) + soldiers27 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4164), float(8), float(-4747), float(0), float(0), float(0), float(0), 45) + soldiers28 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4162), float(8), float(-4751), float(0), float(0), float(0), float(0), 45) + soldiers29 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4160), float(8), float(-4756), float(0), float(0), float(0), float(0), 45) + + + soldiers3 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4158), float(8), float(-4735), float(0), float(0), float(0), float(0), 45) + soldiers31 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4160), float(8), float(-4731), float(0), float(0), float(0), float(0), 45) + soldiers32 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4162), float(8), float(-4727), float(0), float(0), float(0), float(0), 45) + soldiers33 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4164), float(8), float(-4723), float(0), float(0), float(0), float(0), 45) + soldiers38 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4158), float(8), float(-4751), float(0), float(0), float(0), float(0), 45) + soldiers39 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4156), float(8), float(-4756), float(0), float(0), float(0), float(0), 45) + + soldiers4 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4154), float(8), float(-4735), float(0), float(0), float(0), float(0), 45) + soldiers41 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4156), float(8), float(-4731), float(0), float(0), float(0), float(0), 45) + soldiers42 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4158), float(8), float(-4727), float(0), float(0), float(0), float(0), 45) + soldiers47 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4152), float(8), float(-4747), float(0), float(0), float(0), float(0), 45) + soldiers48 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4156), float(8), float(-4751), float(0), float(0), float(0), float(0), 45) + soldiers49 = stcSvc.spawnObject('tusken_soldier', 'tatooine', long(0), float(4158), float(8), float(-4756), float(0), float(0), float(0), float(0), 45) + + + + return + diff --git a/scripts/static_spawns/tatooine/mos_eisley_tusken_warriors.py b/scripts/static_spawns/tatooine/mos_eisley_tusken_warriors.py new file mode 100644 index 00000000..c051b473 --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_tusken_warriors.py @@ -0,0 +1,27 @@ +import sys +# Project SWG: Moseisley Tusken warriors: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + # Tusken Warriors + warrior = stcSvc.spawnObject('tusken_warrior', 'tatooine', long(0), float(4288), float(8), float(-4729), float(0), float(0), float(0), float(0), 45) + warrior1 = stcSvc.spawnObject('tusken_warrior', 'tatooine', long(0), float(4290), float(8), float(-4725), float(0), float(0), float(0), float(0), 45) + warrior2 = stcSvc.spawnObject('tusken_warrior', 'tatooine', long(0), float(4292), float(8), float(-4721), float(0), float(0), float(0), float(0), 45) + warrior3 = stcSvc.spawnObject('tusken_warrior', 'tatooine', long(0), float(4290), float(8), float(-4717), float(0), float(0), float(0), float(0), 45) + warrior4 = stcSvc.spawnObject('tusken_warrior', 'tatooine', long(0), float(4288), float(8), float(-4713), float(0), float(0), float(0), float(0), 45) + warrior5 = stcSvc.spawnObject('tusken_warrior', 'tatooine', long(0), float(4290), float(8), float(-4733), float(0), float(0), float(0), float(0), 45) + warrior6 = stcSvc.spawnObject('tusken_warrior', 'tatooine', long(0), float(4292), float(8), float(-4737), float(0), float(0), float(0), float(0), 45) + warrior8 = stcSvc.spawnObject('tusken_warrior', 'tatooine', long(0), float(4290), float(8), float(-4741), float(0), float(0), float(0), float(0), 45) + warrior9 = stcSvc.spawnObject('tusken_warrior', 'tatooine', long(0), float(4288), float(8), float(-4745), float(0), float(0), float(0), float(0), 45) + warrior0 = stcSvc.spawnObject('tusken_warrior', 'tatooine', long(0), float(4286), float(8), float(-4749), float(0), float(0), float(0), float(0), 45) + \ No newline at end of file diff --git a/scripts/static_spawns/tatooine/mos_eisley_tusken_zealot.py b/scripts/static_spawns/tatooine/mos_eisley_tusken_zealot.py new file mode 100644 index 00000000..007ebb35 --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_tusken_zealot.py @@ -0,0 +1,80 @@ +import sys +# Project SWG: Tusken ZElaots: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + # Outside of Tusken camp + zealot = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4005), float(5), float(-4846), float(0), float(0), float(0), float(0), 45) + zealot1 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4009), float(5), float(-4851), float(0), float(0), float(0), float(0), 45) + zealot2 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4009), float(5), float(-4852), float(0), float(0), float(0), float(0), 45) + + # Outside of Tusken camp pt2 + + zealot3 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4051), float(5), float(-4859), float(0), float(0), float(0), float(0), 45) + zealot4 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4050), float(5), float(-4859), float(0), float(0), float(0), float(0), 45) + zealot5 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4050), float(5), float(-4858), float(0), float(0), float(0), float(0), 45) + + # inside camp pt1 (behind the camp) + + zealot5 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4076), float(5), float(-4812), float(0), float(0), float(0), float(0), 45) + zealot6 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4075), float(5), float(-4812), float(0), float(0), float(0), float(0), 45) + zealot7 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4074), float(5), float(-4812), float(0), float(0), float(0), float(0), 45) + + # inside camp p2 (coming from starport) + + zealot8 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(3991), float(5), float(-4794), float(0), float(0), float(0), float(0), 45) + zealot9 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(3995), float(5), float(-4788), float(0), float(0), float(0), float(0), 45) + zealot10 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(3993), float(5), float(-4794), float(0), float(0), float(0), float(0), 45) + zealot11 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(3992), float(5), float(-4812), float(0), float(0), float(0), float(0), 45) + zealot12 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(3997), float(5), float(-4812), float(0), float(0), float(0), float(0), 45) + zealot12 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4010), float(5), float(-4811), float(0), float(0), float(0), float(0), 45) + zealot13 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4014), float(5), float(-4811), float(0), float(0), float(0), float(0), 45) + zealot14 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4010), float(5), float(-4795), float(0), float(0), float(0), float(0), 45) + zealot15 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4013), float(5), float(-4793), float(0), float(0), float(0), float(0), 45) + zealot16 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4005), float(5), float(-4783), float(0), float(0), float(0), float(0), 45) + + # inside camp pt3 (2nd from starport + + zealot17 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4009), float(5), float(-4758), float(0), float(0), float(0), float(0), 45) + zealot18 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4010), float(5), float(-4759), float(0), float(0), float(0), float(0), 45) + zealot19 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4028), float(5), float(-4767), float(0), float(0), float(0), float(0), 45) + zealot20 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4020), float(5), float(-4766), float(0), float(0), float(0), float(0), 45) + zealot21 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4038), float(5), float(-4736), float(0), float(0), float(0), float(0), 45) + zealot22 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4033), float(5), float(-4743), float(0), float(0), float(0), float(0), 45) + zealot23 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4048), float(5), float(-4767), float(0), float(0), float(0), float(0), 45) + zealot24 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4039), float(5), float(-4767), float(0), float(0), float(0), float(0), 45) + zealot25 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4056), float(5), float(-4787), float(0), float(0), float(0), float(0), 45) + zealot26 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4047), float(5), float(-4787), float(0), float(0), float(0), float(0), 45) + zealot27 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4044), float(5), float(-4807), float(0), float(0), float(0), float(0), 45) + zealot28 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4049), float(5), float(-4807), float(0), float(0), float(0), float(0), 45) + zealot29 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4065), float(5), float(-4774), float(0), float(0), float(0), float(0), 45) + zealot30 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4063), float(5), float(-4767), float(0), float(0), float(0), float(0), 45) + zealot31 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4074), float(5), float(-4755), float(0), float(0), float(0), float(0), 45) + zealot32 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4065), float(5), float(-4755), float(0), float(0), float(0), float(0), 45) + zealot33 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4065), float(5), float(-4743), float(0), float(0), float(0), float(0), 45) + zealot34 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4070), float(5), float(-4743), float(0), float(0), float(0), float(0), 45) + zealot35 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4094), float(5), float(-4747), float(0), float(0), float(0), float(0), 45) + zealot36 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4102), float(5), float(-4753), float(0), float(0), float(0), float(0), 45) + zealot37 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4093), float(5), float(-4771), float(0), float(0), float(0), float(0), 45) + zealot38 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4080), float(5), float(-4766), float(0), float(0), float(0), float(0), 45) + zealot39 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4083), float(5), float(-4787), float(0), float(0), float(0), float(0), 45) + zealot40 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4094), float(5), float(-4783), float(0), float(0), float(0), float(0), 45) + zealot41 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4084), float(5), float(-4801), float(0), float(0), float(0), float(0), 45) + + # inside camp pt4 terrace of the building + + zealot42 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4081), float(8), float(-4752), float(0), float(0), float(0), float(0), 45) + zealot43 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4078), float(8), float(-4759), float(0), float(0), float(0), float(0), 45) + zealot44 = stcSvc.spawnObject('tusken_zealot', 'tatooine', long(0), float(4086), float(8), float(-4762), float(0), float(0), float(0), float(0), 45) + + return diff --git a/scripts/static_spawns/tatooine/mos_eisley_water_thiefs.py b/scripts/static_spawns/tatooine/mos_eisley_water_thiefs.py new file mode 100644 index 00000000..b96e0594 --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_water_thiefs.py @@ -0,0 +1,28 @@ +import sys +# Project SWG: water thief: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + # Outside of Tusken camp + water_thief = stcSvc.spawnObject('water_thief', 'tatooine', long(0), float(3079), float(7), float(-4370), float(0), float(0), float(0), float(0), 45) + water_thief1 = stcSvc.spawnObject('water_thief', 'tatooine', long(0), float(3075), float(8), float(-4350), float(0), float(0), float(0), float(0), 45) + water_thief2 = stcSvc.spawnObject('water_thief', 'tatooine', long(0), float(3097), float(8), float(-4350), float(0), float(0), float(0), float(0), 45) + water_thief3 = stcSvc.spawnObject('water_thief', 'tatooine', long(0), float(3094), float(6), float(-4373), float(0), float(0), float(0), float(0), 45) + water_thief4 = stcSvc.spawnObject('water_thief', 'tatooine', long(0), float(3065), float(5), float(-4377), float(0), float(0), float(0), float(0), 45) + water_thief5 = stcSvc.spawnObject('water_thief', 'tatooine', long(0), float(3057), float(6), float(-4359), float(0), float(0), float(0), float(0), 45) + water_thief6 = stcSvc.spawnObject('water_thief', 'tatooine', long(0), float(3106), float(9), float(-4350), float(0), float(0), float(0), float(0), 45) + water_thief7 = stcSvc.spawnObject('water_thief', 'tatooine', long(0), float(3086), float(9), float(-4342), float(0), float(0), float(0), float(0), 45) + water_thief8 = stcSvc.spawnObject('water_thief', 'tatooine', long(0), float(3065), float(8), float(-4348), float(0), float(0), float(0), float(0), 45) + water_thief9 = stcSvc.spawnObject('water_thief', 'tatooine', long(0), float(3054), float(5), float(-4378), float(0), float(0), float(0), float(0), 45) + + return diff --git a/scripts/static_spawns/tatooine/mos_eisley_womprats.py b/scripts/static_spawns/tatooine/mos_eisley_womprats.py new file mode 100644 index 00000000..ba10079a --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_womprats.py @@ -0,0 +1,68 @@ +import sys +# Project SWG: MosEisley Rat Spawn: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + + # City Sewer Swamprats + city_sewer = stcSvc.spawnObject('city_sewer_swamprat', 'tatooine', long(0), float(3216), float(8), float(-4465), float(0), float(0), float(0), float(0), 30) + city_sewer1 = stcSvc.spawnObject('city_sewer_swamprat', 'tatooine', long(0), float(3212), float(8), float(-4465), float(0), float(0), float(0), float(0), 30) + city_sewer2 = stcSvc.spawnObject('city_sewer_swamprat', 'tatooine', long(0), float(3208), float(8), float(-4467), float(0), float(0), float(0), float(0), 30) + city_sewer3 = stcSvc.spawnObject('city_sewer_swamprat', 'tatooine', long(0), float(3218), float(8), float(-4463), float(0), float(0), float(0), float(0), 30) + city_sewer4 = stcSvc.spawnObject('city_sewer_swamprat', 'tatooine', long(0), float(3220), float(8), float(-4462), float(0), float(0), float(0), float(0), 30) + city_sewer5 = stcSvc.spawnObject('city_sewer_swamprat', 'tatooine', long(0), float(3224), float(8), float(-4469), float(0), float(0), float(0), float(0), 30) + city_sewer6 = stcSvc.spawnObject('city_sewer_swamprat', 'tatooine', long(0), float(3218), float(8), float(-4467), float(0), float(0), float(0), float(0), 30) + city_sewer7 = stcSvc.spawnObject('city_sewer_swamprat', 'tatooine', long(0), float(3216), float(8), float(-4458), float(0), float(0), float(0), float(0), 30) + city_sewer8 = stcSvc.spawnObject('city_sewer_swamprat', 'tatooine', long(0), float(3207), float(8), float(-4457), float(0), float(0), float(0), float(0), 30) + city_sewer9 = stcSvc.spawnObject('city_sewer_swamprat', 'tatooine', long(0), float(3211), float(8), float(-4472), float(0), float(0), float(0), float(0), 30) + city_sewer10 = stcSvc.spawnObject('city_sewer_swamprat', 'tatooine', long(0), float(3208), float(8), float(-4474), float(0), float(0), float(0), float(0), 30) + + + # Sickly Womprats + sickly_womprat = stcSvc.spawnObject('sickly_womprat', 'tatooine', long(0), float(3115), float(9), float(-4758), float(0), float(0), float(0), float(0), 30) + sickly_womprat1 = stcSvc.spawnObject('sickly_womprat', 'tatooine', long(0), float(3111), float(9), float(-4758), float(0), float(0), float(0), float(0), 30) + sickly_womprat2 = stcSvc.spawnObject('sickly_womprat', 'tatooine', long(0), float(3103), float(9), float(-4758), float(0), float(0), float(0), float(0), 30) + sickly_womprat3 = stcSvc.spawnObject('sickly_womprat', 'tatooine', long(0), float(3115), float(9), float(-4754), float(0), float(0), float(0), float(0), 30) + sickly_womprat4 = stcSvc.spawnObject('sickly_womprat', 'tatooine', long(0), float(3115), float(9), float(-4750), float(0), float(0), float(0), float(0), 30) + sickly_womprat5 = stcSvc.spawnObject('sickly_womprat', 'tatooine', long(0), float(3117), float(9), float(-4760), float(0), float(0), float(0), float(0), 30) + sickly_womprat6 = stcSvc.spawnObject('sickly_womprat', 'tatooine', long(0), float(3121), float(9), float(-4766), float(0), float(0), float(0), float(0), 30) + sickly_womprat7 = stcSvc.spawnObject('sickly_womprat', 'tatooine', long(0), float(3124), float(9), float(-4756), float(0), float(0), float(0), float(0), 30) + sickly_womprat8 = stcSvc.spawnObject('sickly_womprat', 'tatooine', long(0), float(3119), float(9), float(-4750), float(0), float(0), float(0), float(0), 30) + sickly_womprat9 = stcSvc.spawnObject('sickly_womprat', 'tatooine', long(0), float(3122), float(9), float(-4754), float(0), float(0), float(0), float(0), 30) + sickly_womprat10 = stcSvc.spawnObject('sickly_womprat', 'tatooine', long(0), float(3104), float(9), float(-4762), float(0), float(0), float(0), float(0), 30) + + # Normal Womprats + womprat = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3587), float(56), float(-4354), float(0), float(0), float(0), float(0), 30) + womprat1 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3583), float(56), float(-4354), float(0), float(0), float(0), float(0), 30) + womprat2 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3579), float(56), float(-4354), float(0), float(0), float(0), float(0), 30) + womprat3 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3587), float(56), float(-4350), float(0), float(0), float(0), float(0), 30) + womprat4 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3587), float(56), float(-4348), float(0), float(0), float(0), float(0), 30) + womprat5 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3587), float(56), float(-4358), float(0), float(0), float(0), float(0), 30) + womprat6 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3590), float(56), float(-4360), float(0), float(0), float(0), float(0), 30) + womprat7 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3594), float(56), float(-4364), float(0), float(0), float(0), float(0), 30) + womprat8 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3590), float(56), float(-4372), float(0), float(0), float(0), float(0), 30) + womprat9 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3592), float(56), float(-4376), float(0), float(0), float(0), float(0), 30) + womprat10 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3580), float(56), float(-4350), float(0), float(0), float(0), float(0), 30) + + womprat2 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3841), float(49), float(-5072), float(0), float(0), float(0), float(0), 30) + womprat21 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3832), float(49), float(-5072), float(0), float(0), float(0), float(0), 30) + womprat22 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3823), float(49), float(-5072), float(0), float(0), float(0), float(0), 30) + womprat23 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3841), float(49), float(-5068), float(0), float(0), float(0), float(0), 30) + womprat24 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3841), float(49), float(-5060), float(0), float(0), float(0), float(0), 30) + womprat25 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3841), float(49), float(-5056), float(0), float(0), float(0), float(0), 30) + womprat26 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3839), float(49), float(-5082), float(0), float(0), float(0), float(0), 30) + womprat23 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3836), float(49), float(-5086), float(0), float(0), float(0), float(0), 30) + womprat24 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3837), float(49), float(-5090), float(0), float(0), float(0), float(0), 30) + womprat25 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3832), float(49), float(-5061), float(0), float(0), float(0), float(0), 30) + womprat26 = stcSvc.spawnObject('womprat', 'tatooine', long(0), float(3841), float(49), float(-5069), float(0), float(0), float(0), float(0), 30) + return diff --git a/scripts/static_spawns/tatooine/mos_eisley_worrts.py b/scripts/static_spawns/tatooine/mos_eisley_worrts.py new file mode 100644 index 00000000..eff360a0 --- /dev/null +++ b/scripts/static_spawns/tatooine/mos_eisley_worrts.py @@ -0,0 +1,40 @@ +import sys +# Project SWG: MosEisley Worrts: Static Spawns +# (C)2014 ProjectSWG + + + +from resources.datatables import Options +from resources.datatables import State + +def addPlanetSpawns(core, planet): + + + stcSvc = core.staticService + objSvc = core.objectService + + # Tame Worrts + tame_worrt1 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3153), float(4), float(-4945), float(0), float(0), float(0), float(0), 30) + tame_worrt11 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3143), float(4), float(-4935), float(0), float(0), float(0), float(0), 30) + tame_worrt12 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3123), float(4), float(-4925), float(0), float(0), float(0), float(0), 30) + tame_worrt13 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3163), float(4), float(-4955), float(0), float(0), float(0), float(0), 30) + tame_worrt14 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3173), float(4), float(-4965), float(0), float(0), float(0), float(0), 30) + tame_worrt15 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3145), float(4), float(-4950), float(0), float(0), float(0), float(0), 30) + tame_worrt16 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3135), float(4), float(-4960), float(0), float(0), float(0), float(0), 30) + tame_worrt17 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3165), float(4), float(-4950), float(0), float(0), float(0), float(0), 30) + tame_worrt18 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3170), float(4), float(-4930), float(0), float(0), float(0), float(0), 30) + tame_worrt19 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3160), float(4), float(-4940), float(0), float(0), float(0), float(0), 30) + + # Tame Worrts + tame_worrt2 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3125), float(4), float(-4726), float(0), float(0), float(0), float(0), 30) + tame_worrt21 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3115), float(4), float(-4716), float(0), float(0), float(0), float(0), 30) + tame_worrt22 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3105), float(4), float(-4706), float(0), float(0), float(0), float(0), 30) + tame_worrt23 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3135), float(4), float(-4736), float(0), float(0), float(0), float(0), 30) + tame_worrt24 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3145), float(4), float(-4746), float(0), float(0), float(0), float(0), 30) + tame_worrt25 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3120), float(4), float(-4721), float(0), float(0), float(0), float(0), 30) + tame_worrt26 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3110), float(4), float(-4731), float(0), float(0), float(0), float(0), 30) + tame_worrt27 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3130), float(4), float(-4741), float(0), float(0), float(0), float(0), 30) + tame_worrt28 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3140), float(4), float(-4711), float(0), float(0), float(0), float(0), 30) + tame_worrt29 = stcSvc.spawnObject('tame_worrt', 'tatooine', long(0), float(3130), float(4), float(-4726), float(0), float(0), float(0), float(0), 30) + + return \ No newline at end of file diff --git a/scripts/static_spawns/tatooine/mos_espa.py b/scripts/static_spawns/tatooine/mos_espa.py index 6cb589b3..f628b9be 100644 --- a/scripts/static_spawns/tatooine/mos_espa.py +++ b/scripts/static_spawns/tatooine/mos_espa.py @@ -17,14 +17,14 @@ def addPlanetSpawns(core, planet): # 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') - dalaSocuna.setOptionsBitmask(256) + #dalaSocuna.setCustomName2('Commander Da\'la Socuna') + #dalaSocuna.setOptionsBitmask(256) #Watto's Shop ****TODO: Get Proper cells for Watto's Shop once Buildout structures are spawning as intended again. 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') - watto.setOptionsBitmask(256) + #watto.setCustomName2('Watto') + #watto.setOptionsBitmask(256) #Exterior Uninteractable NPCs 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)) diff --git a/src/main/NGECore.java b/src/main/NGECore.java index 5e6e0ceb..1da3308a 100644 --- a/src/main/NGECore.java +++ b/src/main/NGECore.java @@ -21,6 +21,7 @@ ******************************************************************************/ package main; +import java.io.File; import java.io.IOException; import java.sql.PreparedStatement; import java.sql.SQLException; @@ -59,7 +60,6 @@ import services.ConnectionService; import services.ConversationService; import services.DevService; import services.EntertainmentService; -import services.EquipmentService; import services.GroupService; import services.housing.HousingService; import services.InstanceService; @@ -84,9 +84,10 @@ import services.collections.CollectionService; import services.combat.CombatService; import services.command.CombatCommand; import services.command.CommandService; +import services.equipment.EquipmentService; import services.gcw.FactionService; import services.gcw.GCWService; -import services.guild.GuildService; +import services.GuildService; import services.LoginService; import services.map.MapService; import services.mission.MissionService; @@ -256,6 +257,21 @@ public class NGECore { options.setFilePath("options.cfg"); boolean optionsConfigLoaded = options.loadConfigFile(); + if (optionsConfigLoaded && options.getInt("CLEAN.ODB.FOLDERS") > 0) { + File baseFolder = new File("./odb"); + + if (baseFolder.isDirectory()) { + for (File odbFolder : baseFolder.listFiles()) { + if (odbFolder.isDirectory()) { + for (File file : odbFolder.listFiles()) { + if (!file.isDirectory() && !file.getName().equals("placeholder.txt")) { file.delete(); } + } + } + } + } + System.out.println("Cleaned ODB Folders."); + } + // Database databaseConnection = new DatabaseConnection(); databaseConnection.connect(config.getString("DB.URL"), config.getString("DB.NAME"), config.getString("DB.USER"), config.getString("DB.PASS"), "postgresql"); @@ -508,7 +524,9 @@ public class NGECore { List deletedObjects = new ArrayList(); while(cursor.hasNext()) { - SWGObject creature = (SWGObject) cursor.next(); + Object next = cursor.next(); + if (next == null) continue; + SWGObject creature = (SWGObject) next; if(!characterService.playerExists(creature.getObjectID()) && creature instanceof CreatureObject) deletedObjects.add((CreatureObject) creature); } diff --git a/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java b/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java index e67de9b2..3ea90dd0 100644 --- a/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/AuctionQueryHeadersResponseMessage.java @@ -22,15 +22,10 @@ package protocol.swg.auctionManagerClientListener; import java.nio.ByteOrder; -import java.util.HashSet; import java.util.LinkedHashSet; -import java.util.Set; -import java.util.TreeSet; -import java.util.Vector; import org.apache.mina.core.buffer.IoBuffer; -import engine.resources.common.CRC; import protocol.swg.SWGMessage; import services.bazaar.AuctionItem; diff --git a/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java b/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java index d05a6756..33a57339 100644 --- a/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/CreateAuctionMessage.java @@ -26,7 +26,6 @@ import java.nio.ByteBuffer; import org.apache.mina.core.buffer.IoBuffer; -import engine.resources.common.Utilities; import protocol.swg.SWGMessage; public class CreateAuctionMessage extends SWGMessage { diff --git a/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java b/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java index 6db48c5b..0546f41e 100644 --- a/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java +++ b/src/protocol/swg/auctionManagerClientListener/CreateImmediateAuctionMessage.java @@ -26,7 +26,6 @@ import java.nio.ByteBuffer; import org.apache.mina.core.buffer.IoBuffer; -import engine.resources.common.Utilities; import protocol.swg.SWGMessage; public class CreateImmediateAuctionMessage extends SWGMessage { diff --git a/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java b/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java index 458c59d6..e4aaac6c 100644 --- a/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java +++ b/src/protocol/swg/auctionManagerClientListener/GetAuctionDetailsResponse.java @@ -25,7 +25,6 @@ import java.nio.ByteOrder; import org.apache.mina.core.buffer.IoBuffer; -import engine.resources.objects.SWGObject; import protocol.swg.SWGMessage; import resources.objects.tangible.TangibleObject; import services.bazaar.AuctionItem; diff --git a/src/protocol/swg/chat/ChatOnLeaveRoom.java b/src/protocol/swg/chat/ChatOnLeaveRoom.java index a45b1def..b9c2c0ba 100644 --- a/src/protocol/swg/chat/ChatOnLeaveRoom.java +++ b/src/protocol/swg/chat/ChatOnLeaveRoom.java @@ -25,7 +25,6 @@ import java.nio.ByteOrder; import org.apache.mina.core.buffer.IoBuffer; -import engine.resources.common.StringUtilities; import protocol.swg.SWGMessage; public class ChatOnLeaveRoom extends SWGMessage { diff --git a/src/protocol/swg/chat/ChatSendToRoom.java b/src/protocol/swg/chat/ChatSendToRoom.java index 302390de..68e0ced2 100644 --- a/src/protocol/swg/chat/ChatSendToRoom.java +++ b/src/protocol/swg/chat/ChatSendToRoom.java @@ -26,7 +26,6 @@ import java.nio.ByteBuffer; import org.apache.mina.core.buffer.IoBuffer; -import engine.resources.common.StringUtilities; import protocol.swg.SWGMessage; public class ChatSendToRoom extends SWGMessage { diff --git a/src/protocol/swg/objectControllerObjects/CombatSpam.java b/src/protocol/swg/objectControllerObjects/CombatSpam.java index 26d64b9a..b6be2857 100644 --- a/src/protocol/swg/objectControllerObjects/CombatSpam.java +++ b/src/protocol/swg/objectControllerObjects/CombatSpam.java @@ -28,6 +28,7 @@ import org.apache.mina.core.buffer.IoBuffer; import protocol.swg.ObjControllerMessage; import resources.datatables.HitType; +@SuppressWarnings("unused") public class CombatSpam extends ObjControllerObject{ private long attackerId; diff --git a/src/protocol/swg/objectControllerObjects/MissionListRequest.java b/src/protocol/swg/objectControllerObjects/MissionListRequest.java index 974b69cd..6d1fa2f5 100644 --- a/src/protocol/swg/objectControllerObjects/MissionListRequest.java +++ b/src/protocol/swg/objectControllerObjects/MissionListRequest.java @@ -23,9 +23,6 @@ package protocol.swg.objectControllerObjects; import org.apache.mina.core.buffer.IoBuffer; -import engine.resources.common.StringUtilities; -import resources.common.Console; - public class MissionListRequest extends ObjControllerObject { private long objectId; diff --git a/src/resources/buffs/Buff.java b/src/resources/buffs/Buff.java index 4f0656ff..d845d423 100644 --- a/src/resources/buffs/Buff.java +++ b/src/resources/buffs/Buff.java @@ -38,6 +38,7 @@ import com.sleepycat.persist.model.NotPersistent; import engine.resources.common.CRC; import engine.resources.objects.IDelta; +import engine.resources.objects.SWGObject; public class Buff implements IDelta, Serializable { @@ -150,7 +151,13 @@ public class Buff implements IDelta, Serializable { }*/ public Buff() { } - + + @Override + public void init(SWGObject object) { + // TODO Auto-generated method stub + + } + @Override public byte[] getBytes() { @@ -482,5 +489,5 @@ public class Buff implements IDelta, Serializable { public void setBuffCRC(int buffCRC) { this.buffCRC = buffCRC; } - + } diff --git a/src/resources/common/Forager.java b/src/resources/common/Forager.java index 66b11041..71874a78 100644 --- a/src/resources/common/Forager.java +++ b/src/resources/common/Forager.java @@ -29,6 +29,7 @@ import java.util.Vector; import engine.resources.objects.SWGObject; import engine.resources.scene.Point3D; import main.NGECore; +import resources.datatables.DisplayType; import resources.datatables.Options; import resources.loot.LootGroup; import resources.objects.creature.CreatureObject; @@ -289,7 +290,6 @@ public class Forager { break; } wormie.setCustomName(name); - wormie.setCustomName2(name); wormie.setLevel(forager.getLevel()); wormie.setOptions(Options.AGGRESSIVE, true); wormie.setOptions(Options.ATTACKABLE, true); @@ -342,16 +342,15 @@ public class Forager { goon.addObserver(forager); goon.setCustomName(name); - goon.setCustomName2(name); goon.setLevel(forager.getLevel()); goon.setOptions(Options.AGGRESSIVE, true); goon.setOptions(Options.ATTACKABLE, true); AIActor actor = (AIActor) goon.getAttachment("AI"); actor.addDefender(forager); - forager.sendSystemMessage("@foraging/forage_enemy:" + barkString,(byte) 0); - //OutOfBand oob = new OutOfBand(new ProsePackage("@foraging/forage_enemy",barkString)); - OutOfBand oob = new OutOfBand(new ProsePackage("@jawa_trader","cant_understand")); - forager.sendSystemMessage("@jawa_trader:cant_understand",(byte) 0); + forager.sendSystemMessage("@foraging/forage_enemy:" + barkString, DisplayType.Broadcast); + //OutOfBand oob = OutOfBand.ProsePackage("@foraging/forage_enemy:" + barkString)); + OutOfBand oob = OutOfBand.ProsePackage("@jawa_trader:cant_understand"); + forager.sendSystemMessage("@jawa_trader:cant_understand", DisplayType.Broadcast); NGECore.getInstance().chatService.spatialChat(goon, forager, "", (short)0x0, (short)0x0, 1, oob); } @@ -418,7 +417,6 @@ public class Forager { guard.addObserver(owner); // ToDo: add any players in aggro range!!! guard.setCustomName(name); - guard.setCustomName2(name); guard.setLevel(owner.getLevel()); guard.setOptions(Options.AGGRESSIVE, true); guard.setOptions(Options.ATTACKABLE, true); @@ -426,16 +424,16 @@ public class Forager { actor.addDefender(owner); barkString = "bark_"+map.getAttachment("MapSTFName"); - owner.sendSystemMessage("@treasure_map/treasure_map:" + barkString,(byte) 0); - OutOfBand oob = new OutOfBand(new ProsePackage("@treasure_map/treasure_map",barkString)); + owner.sendSystemMessage("@treasure_map/treasure_map:" + barkString, DisplayType.Broadcast); + OutOfBand oob = OutOfBand.ProsePackage("@treasure_map/treasure_map:" + barkString); NGECore.getInstance().chatService.spatialChat(guard, owner, "", (short)0x0, (short)0x0, 1, oob); return guard; } public CreatureObject spawnBoss(Point3D exactTreasureLocation, CreatureObject owner, TangibleObject map, short spawnLevel){ - Point3D treasureLocation = resources.common.SpawnPoint.getRandomPosition(exactTreasureLocation, 1, 10, owner.getPlanetId()); - return new CreatureObject(); + //Point3D treasureLocation = resources.common.SpawnPoint.getRandomPosition(exactTreasureLocation, 1, 10, owner.getPlanetId()); + return new CreatureObject(); // FIXME on paper this looks bad } @SuppressWarnings("unchecked") diff --git a/src/resources/common/ProsePackage.java b/src/resources/common/ProsePackage.java index 22549d40..d9baa309 100644 --- a/src/resources/common/ProsePackage.java +++ b/src/resources/common/ProsePackage.java @@ -50,28 +50,6 @@ public class ProsePackage { private int diInteger = 0; private float dfFloat = 0; - // TODO: Add more constructors - - public ProsePackage(String stfFile, String stfLabel) { - stf.setStfFilename(stfFile); - stf.setStfName(stfLabel); - } - - public ProsePackage(String stfFile, String stfLabel, String ttCustomString) { - stf.setStfFilename(stfFile); - stf.setStfName(stfLabel); - this.ttCustomString = ttCustomString; - } - - public ProsePackage(String stfFile, String stfLabel, long tuObjectId, String tuStfFile, String tuStfLabel, String tuCustomString) { - stf.setStfFilename(stfFile); - stf.setStfName(stfLabel); - this.tuObjectId = tuObjectId; - tuStf.setStfFilename(tuStfFile); - tuStf.setStfName(tuStfLabel); - this.tuCustomString = tuCustomString; - } - /* * Any parameters can be entered. * diff --git a/src/resources/datatables/Citizenship.java b/src/resources/datatables/Citizenship.java new file mode 100644 index 00000000..ced0f364 --- /dev/null +++ b/src/resources/datatables/Citizenship.java @@ -0,0 +1,31 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * 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 . + * + * 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.datatables; + +public class Citizenship { + + public static final byte Homeless = 0; + public static final byte Citizen = 1; + public static final byte Militia = 2; + public static final byte Mayor = 3; + +} diff --git a/src/resources/datatables/DisplayType.java b/src/resources/datatables/DisplayType.java index 0e13f62a..437a0df4 100644 --- a/src/resources/datatables/DisplayType.java +++ b/src/resources/datatables/DisplayType.java @@ -23,13 +23,23 @@ package resources.datatables; public class DisplayType { + // System public static byte Broadcast = 0; // Level up. combatspam/skill_up - //public static byte Screen = 1; // Screen? XP gain + public static byte Screen = 1; // Screen? XP gain public static byte Chat = 2; //public static byte Overhead = 3; // Flytext? Seen on ent duration //public static byte Combat = 4; // CombatSpam? //public static byte Combat = 5; // Seen in combat flytext //public static byte Combat = 11; // Seen when blocking + // Flytext + //public static byte Broadcast = 0; // Level up. combatspam/skill_up + //public static byte Screen = 1; // Screen? XP gain + //public static byte Chat = 2; + //public static byte Overhead = 3; // Flytext? Seen on ent duration + //public static byte Combat = 4; // CombatSpam? + //public static byte Combat = 5; // Seen in combat flytext + //public static byte Combat = 11; // Seen when blocking + } diff --git a/src/resources/datatables/GcwType.java b/src/resources/datatables/GcwType.java new file mode 100644 index 00000000..30664208 --- /dev/null +++ b/src/resources/datatables/GcwType.java @@ -0,0 +1,31 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * 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 . + * + * 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.datatables; + +public class GcwType { + + public static final byte Generic = 0; + public static final byte Enemy = 1; + public static final byte Player = 2; + public static final byte Zone = 3; + +} diff --git a/src/resources/datatables/STF.java b/src/resources/datatables/STF.java deleted file mode 100644 index 411b929a..00000000 --- a/src/resources/datatables/STF.java +++ /dev/null @@ -1,29 +0,0 @@ -package resources.datatables; - -import engine.clientdata.StfTable; - -public class STF -{ - /* - Returns a string containing the value of a key in the SWG STF path; - Example: get("@cmd_err:success_prose") returns "The command %TO was a success." - */ - static public String get(String stfPath) - { - stfPath = stfPath.replace("@", ""); - String stfFile = stfPath.split(":")[0]; - String stfKey = stfPath.split(":")[1]; - - try - { - StfTable stf = new StfTable("clientdata/string/en/" + stfFile + ".stf"); - for (int s = 1; s < stf.getRowCount(); s++) - { - if(stf.getStringById(s).getKey() != null && stf.getStringById(s).getKey().equals(stfKey)) return stf.getStringById(s).getValue(); - } - } - catch (Exception e) { } - - return ""; - } -} diff --git a/src/resources/gcw/RegionDefender.java b/src/resources/gcw/RegionDefender.java new file mode 100644 index 00000000..e72d1877 --- /dev/null +++ b/src/resources/gcw/RegionDefender.java @@ -0,0 +1,98 @@ +/******************************************************************************* + * Copyright (c) 2013 + * + * 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 . + * + * 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.gcw; + +import org.apache.mina.core.buffer.IoBuffer; + +import engine.resources.common.AString; +import engine.resources.objects.Baseline; +import engine.resources.objects.Delta; + +public class RegionDefender extends Delta { + + private static final long serialVersionUID = 1L; + + private AString region; + private byte byte1 = 0; + private byte byte2 = 0; + + public RegionDefender(String region, byte byte1, byte byte2) { + this.region = new AString(region); + this.byte1 = byte1; + this.byte2 = byte2; + } + + public RegionDefender(String region) { + this.region = new AString(region); + } + + public RegionDefender() { + this.region = new AString(); + } + + public String getRegion() { + synchronized(objectMutex) { + return region.get(); + } + } + + public void setRegion(String region) { + synchronized(objectMutex) { + this.region = new AString(region); + } + } + + public byte getByte1() { + synchronized(objectMutex) { + return byte1; + } + } + + public void setByte1(byte byte1) { + synchronized(objectMutex) { + this.byte1 = byte1; + } + } + + public byte getByte2() { + synchronized(objectMutex) { + return byte2; + } + } + + public void setByte2(byte byte2) { + synchronized(objectMutex) { + this.byte2 = byte2; + } + } + + public byte[] getBytes() { + synchronized(objectMutex) { + IoBuffer buffer = Baseline.createBuffer(region.getBytes().length + 2); + buffer.put(region.getBytes()); + buffer.put(byte1); + buffer.put(byte2); + return buffer.array(); + } + } + +} diff --git a/src/resources/guild/Guild.java b/src/resources/guild/Guild.java index b45d8dca..4c1f0201 100644 --- a/src/resources/guild/Guild.java +++ b/src/resources/guild/Guild.java @@ -22,6 +22,7 @@ package resources.guild; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; import org.apache.mina.core.buffer.IoBuffer; @@ -29,21 +30,23 @@ import org.apache.mina.core.buffer.IoBuffer; import engine.resources.objects.Delta; import engine.resources.objects.SWGObject; -public class Guild extends Delta implements Serializable { +public class Guild extends Delta implements Serializable, Comparable { private static final long serialVersionUID = 1L; private int id; private String abbreviation; private String name; - private SWGObject leader; - private List members; + private long leader; + private String leaderName; + private List members = new ArrayList(); public Guild(int id, String abbreviation, String name, SWGObject leader) { this.id = id; this.abbreviation = abbreviation; this.name = name; - this.leader = leader; - this.members.add(leader); + this.leader = leader.getObjectID(); + this.leaderName = leader.getCustomName(); + this.members.add(leader.getObjectID()); } public Guild() { @@ -90,22 +93,34 @@ public class Guild extends Delta implements Serializable { return (Integer.toString(getId()) + ":" + getAbbreviation()); } - public SWGObject getLeader() { + public long getLeader() { synchronized(objectMutex) { return leader; } } - public void setLeader(SWGObject leader) { + public void setLeader(long leader) { synchronized(objectMutex) { this.leader = leader; } } - public List getMembers() { + public List getMembers() { return members; } + public String getLeaderName() { + synchronized(objectMutex) { + return leaderName; + } + } + + public void setLeaderName(String leaderName) { + synchronized(objectMutex) { + this.leaderName = leaderName; + } + } + public byte[] getBytes() { synchronized(objectMutex) { IoBuffer buffer = createBuffer((getString().length() + 2)); @@ -114,4 +129,9 @@ public class Guild extends Delta implements Serializable { } } + @Override + public int compareTo(Guild guild) { + return ((Integer) id).compareTo(guild.getId()); + } + } diff --git a/src/resources/objects/tool/SurveyTool.java b/src/resources/harvest/SurveyTool.java similarity index 95% rename from src/resources/objects/tool/SurveyTool.java rename to src/resources/harvest/SurveyTool.java index e9337445..f23be1d2 100644 --- a/src/resources/objects/tool/SurveyTool.java +++ b/src/resources/harvest/SurveyTool.java @@ -19,16 +19,13 @@ * 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.objects.tool; +package resources.harvest; import java.io.Serializable; import java.util.Vector; import main.NGECore; -import com.sleepycat.persist.model.NotPersistent; -import com.sleepycat.persist.model.Persistent; - import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; @@ -40,8 +37,6 @@ import resources.objects.tangible.TangibleObject; /** * @author Charon */ - -@Persistent(version=0) public class SurveyTool extends TangibleObject implements Serializable { private static final long serialVersionUID = 1L; @@ -51,25 +46,15 @@ public class SurveyTool extends TangibleObject implements Serializable { private Long tanoID=0L; private byte SurveyRangeSetting=0; - @NotPersistent private transient String surveyEffectString=""; - @NotPersistent private transient String sampleEffectString=""; - @NotPersistent private transient boolean currentlySurveying=false; - @NotPersistent private transient boolean currentlySampling=false; - @NotPersistent private transient boolean currentlyCoolingDown=false; - @NotPersistent private transient boolean exceptionalState=false; - @NotPersistent private transient boolean recoveryMode=false; - @NotPersistent private transient Long lastSurveyTime=0L; - @NotPersistent private transient Long lastSampleTime=0L; - @NotPersistent private transient Long recoveryTime=10L; public static byte MineralSurveyDevice = 1; @@ -95,8 +80,8 @@ public class SurveyTool extends TangibleObject implements Serializable { defendersList = new Vector(); } - public SurveyTool(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ - super(objectID, planet, template, position, orientation); + public SurveyTool(long objectID, Planet planet, Point3D position, Quaternion orientation, String template) { + super(objectID, planet, position, orientation, template); surveyEffectString = ""; sampleEffectString = ""; this.tanoID = objectID; diff --git a/src/resources/loot/LootGroup.java b/src/resources/loot/LootGroup.java index 9df63790..94ad4ef7 100644 --- a/src/resources/loot/LootGroup.java +++ b/src/resources/loot/LootGroup.java @@ -23,8 +23,6 @@ package resources.loot; import java.io.Serializable; -import com.sleepycat.persist.model.Persistent; - /** * @author Charon */ diff --git a/src/resources/objectives/BountyMissionObjective.java b/src/resources/objectives/BountyMissionObjective.java index 6c6dcff1..fa102f8f 100644 --- a/src/resources/objectives/BountyMissionObjective.java +++ b/src/resources/objectives/BountyMissionObjective.java @@ -37,7 +37,6 @@ import engine.resources.scene.Quaternion; import main.NGECore; import resources.common.BountyListItem; import resources.common.OutOfBand; -import resources.common.ProsePackage; import resources.common.SpawnPoint; import resources.datatables.DisplayType; import resources.objects.creature.CreatureObject; @@ -92,7 +91,7 @@ public class BountyMissionObjective extends MissionObjective { String message = "@mission/mission_bounty_informant:target_hard_" + Integer.toString(new Random().nextInt(4) + 1); - CommPlayerMessage comm = new CommPlayerMessage(player.getObjectId(), new OutOfBand(new ProsePackage(message))); + CommPlayerMessage comm = new CommPlayerMessage(player.getObjectId(), OutOfBand.ProsePackage(message)); comm.setTime(2000); switch (bountyTarget.getFaction()) { case "neutral": @@ -187,7 +186,7 @@ public class BountyMissionObjective extends MissionObjective { CreatureObject hunter = (CreatureObject) core.objectService.getObject(id); if (hunter != null) { - hunter.sendSystemMessage(new OutOfBand(new ProsePackage("@bounty_hunter:bounty_failed_hunter", "TT", getMissionObject().getGrandparent().getObjectId())), DisplayType.Broadcast); + hunter.sendSystemMessage(OutOfBand.ProsePackage("@bounty_hunter:bounty_failed_hunter", "TT", getMissionObject().getGrandparent().getObjectId()), DisplayType.Broadcast); hunter.getSlottedObject("datapad").viewChildren(hunter, true, false, new Traverser() { @Override public void process(SWGObject item) { diff --git a/src/resources/objectives/DeliveryMissionObjective.java b/src/resources/objectives/DeliveryMissionObjective.java index 7d5f029b..96f9b583 100644 --- a/src/resources/objectives/DeliveryMissionObjective.java +++ b/src/resources/objectives/DeliveryMissionObjective.java @@ -24,7 +24,7 @@ package resources.objectives; import engine.resources.scene.Point3D; import main.NGECore; import resources.common.OutOfBand; -import resources.common.ProsePackage; +import resources.datatables.DisplayType; import resources.objects.creature.CreatureObject; import resources.objects.mission.MissionObject; import resources.objects.tangible.TangibleObject; @@ -103,7 +103,7 @@ public class DeliveryMissionObjective extends MissionObjective { player.addBankCredits(reward); - player.sendSystemMessage(new OutOfBand(new ProsePackage("@mission/mission_generic:success_w_amount", reward)), (byte) 0); + player.sendSystemMessage(OutOfBand.ProsePackage("@mission/mission_generic:success_w_amount", reward), DisplayType.Broadcast); abort(core, player); diff --git a/src/resources/objects/SWGList.java b/src/resources/objects/SWGList.java index 0a7e2d0d..781a676d 100644 --- a/src/resources/objects/SWGList.java +++ b/src/resources/objects/SWGList.java @@ -74,7 +74,7 @@ public class SWGList implements List, Serializable { for (Object item : list) { try { if (item instanceof IDelta) { - item.getClass().getMethod("init", new Class[] {}).invoke(item, new Object[] { }); + item.getClass().getMethod("init", new Class[] { SWGObject.class }).invoke(item, new Object[] { object }); } } catch (Exception e) { e.printStackTrace(); diff --git a/src/resources/objects/SWGMap.java b/src/resources/objects/SWGMap.java index a8ffc398..89e25a13 100644 --- a/src/resources/objects/SWGMap.java +++ b/src/resources/objects/SWGMap.java @@ -81,7 +81,7 @@ public class SWGMap implements Map, Serializable { for (Object item : map.values()) { try { if (item instanceof IDelta) { - item.getClass().getMethod("init", new Class[] {}).invoke(item, new Object[] { }); + item.getClass().getMethod("init", new Class[] { SWGObject.class }).invoke(item, new Object[] { object }); } } catch (Exception e) { e.printStackTrace(); diff --git a/src/resources/objects/SWGMultiMap.java b/src/resources/objects/SWGMultiMap.java index fce0b1c9..f0bb5083 100644 --- a/src/resources/objects/SWGMultiMap.java +++ b/src/resources/objects/SWGMultiMap.java @@ -76,7 +76,7 @@ public class SWGMultiMap implements Multimap, Serializable { for (Object item : map.values()) { try { if (item instanceof IDelta) { - item.getClass().getMethod("init", new Class[] {}).invoke(item, new Object[] { }); + item.getClass().getMethod("init", new Class[] { SWGObject.class }).invoke(item, new Object[] { object }); } } catch (Exception e) { e.printStackTrace(); diff --git a/src/resources/objects/SWGSet.java b/src/resources/objects/SWGSet.java index 9d316343..82faebcf 100644 --- a/src/resources/objects/SWGSet.java +++ b/src/resources/objects/SWGSet.java @@ -75,7 +75,7 @@ public class SWGSet implements Set, Serializable { for (Object item : set) { try { if (item instanceof IDelta) { - item.getClass().getMethod("init", new Class[] {}).invoke(item, new Object[] { }); + item.getClass().getMethod("init", new Class[] { SWGObject.class }).invoke(item, new Object[] { object }); } } catch (Exception e) { e.printStackTrace(); @@ -248,7 +248,7 @@ public class SWGSet implements Set, Serializable { } private byte[] item(int type, Object index, byte[] data, boolean useIndex, boolean useData) { - if (useIndex && ((index instanceof IDelta) || !valid(index))) { + if (useIndex && !valid(index)) { throw new IllegalArgumentException(); } diff --git a/src/resources/objects/building/BuildingMessageBuilder.java b/src/resources/objects/building/BuildingMessageBuilder.java index 6861117f..ab612ca9 100644 --- a/src/resources/objects/building/BuildingMessageBuilder.java +++ b/src/resources/objects/building/BuildingMessageBuilder.java @@ -40,96 +40,24 @@ public class BuildingMessageBuilder extends TangibleMessageBuilder { super(); } - public IoBuffer buildBaseline3() { - - BuildingObject building = (BuildingObject) object; - IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - - buffer.putShort((short) 0x0D); - buffer.putFloat(building.getComplexity()); - buffer.put(getAsciiString(building.getStfFilename())); - buffer.putInt(0); - buffer.put(getAsciiString(building.getStfName())); - buffer.putInt(0); - buffer.putInt(0xFF); - //buffer.putInt(0x64); - buffer.putInt(0); - buffer.putInt(0); - buffer.putShort((short) 0); - - buffer.putInt(0); - buffer.putInt(0); - // buffer.putInt(16777216); - buffer.putInt(0x100); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0x201C); - buffer.put((byte) 1); - - int size = buffer.position(); - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - - buffer.flip(); - buffer = createBaseline("BUIO", (byte) 3, buffer, size); - - return buffer; - - } - - public IoBuffer buildBaseline6() { - - BuildingObject building = (BuildingObject) object; - IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - - buffer.putShort((short) 8); - buffer.putInt(0x43); - - buffer.put(getAsciiString(building.getDetailFilename())); - buffer.putInt(0); - buffer.put(getAsciiString(building.getDetailName())); - buffer.putInt(0); - buffer.put((byte) 0); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - - int size = buffer.position(); - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - - buffer.flip(); - buffer = createBaseline("BUIO", (byte) 6, buffer, size); - - return buffer; - - } - - public IoBuffer buildBaseline8() { - IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.putShort((short) 0); - int size = buffer.position(); - buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size); - buffer.flip(); - buffer = createBaseline("BUIO", (byte) 8, buffer, size); - - return buffer; + @Override + public void buildBaseline3(Map baselineBuilders, Map deltaBuilders) { + super.buildBaseline3(baselineBuilders, deltaBuilders); } - public IoBuffer buildBaseline9() { - IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.putShort((short) 0); - int size = buffer.position(); - buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size); - buffer.flip(); - buffer = createBaseline("BUIO", (byte) 9, buffer, size); - - return buffer; + @Override + public void buildBaseline6(Map baselineBuilders, Map deltaBuilders) { + super.buildBaseline6(baselineBuilders, deltaBuilders); + } + + @Override + public void buildBaseline8(Map baselineBuilders, Map deltaBuilders) { + super.buildBaseline8(baselineBuilders, deltaBuilders); + } + + @Override + public void buildBaseline9(Map baselineBuilders, Map deltaBuilders) { + super.buildBaseline9(baselineBuilders, deltaBuilders); } public IoBuffer buildPermissionListCreate(Vector permissionList, String listName) { @@ -152,24 +80,4 @@ public class BuildingMessageBuilder extends TangibleMessageBuilder { return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); } - @Override - public void buildBaseline3(Map baselineBuilders, Map deltaBuilders) { - super.buildBaseline3(deltaBuilders, deltaBuilders); - } - - @Override - public void buildBaseline6(Map baselineBuilders, Map deltaBuilders) { - super.buildBaseline6(deltaBuilders, deltaBuilders); - } - - @Override - public void buildBaseline8(Map baselineBuilders, Map deltaBuilders) { - super.buildBaseline8(deltaBuilders, deltaBuilders); - } - - @Override - public void buildBaseline9(Map baselineBuilders, Map deltaBuilders) { - super.buildBaseline9(deltaBuilders, deltaBuilders); - } - } diff --git a/src/resources/objects/building/BuildingObject.java b/src/resources/objects/building/BuildingObject.java index ed6adb3c..2c996e3c 100644 --- a/src/resources/objects/building/BuildingObject.java +++ b/src/resources/objects/building/BuildingObject.java @@ -22,67 +22,151 @@ package resources.objects.building; import java.io.Serializable; +import java.util.Map; import java.util.Vector; import java.util.concurrent.atomic.AtomicReference; +import org.apache.mina.core.buffer.IoBuffer; + import main.NGECore; +import resources.common.OutOfBand; +import resources.datatables.DisplayType; +import resources.datatables.Options; import resources.objects.ObjectMessageBuilder; import resources.objects.cell.CellObject; import resources.objects.creature.CreatureObject; import resources.objects.tangible.TangibleObject; - -import com.sleepycat.persist.model.Entity; -import com.sleepycat.persist.model.NotPersistent; - +import engine.clientdata.ClientFileManager; +import engine.clientdata.visitors.PortalVisitor; import engine.clients.Client; +import engine.resources.objects.Baseline; import engine.resources.objects.IPersistent; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Entity(version=6) public class BuildingObject extends TangibleObject implements IPersistent, Serializable { private static final long serialVersionUID = 1L; - @NotPersistent + private transient BuildingMessageBuilder messageBuilder; - private float maintenanceAmount = 0; - private int BMR = 0; - private String deedTemplate=""; - private boolean residency=false; - private byte privacy=(byte)0; - public static byte PRIVATE = (byte)0; - public static byte PUBLIC = (byte)1; - private short maximumStorageCapacity=0; - private Vector entryList = new Vector(); // Preferably the OIDs should be stored, because of name changes + private Vector entryList = new Vector(); private Vector banList = new Vector(); + public static final byte PRIVATE = (byte) 0; + public static final byte PUBLIC = (byte) 1; + public BuildingObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { - super(objectID, planet, Template, position, orientation); - messageBuilder = new BuildingMessageBuilder(this); - this.setConditionDamage(100); + super(objectID, planet, position, orientation, Template); + getBaseline(3).set("volume", 255); + setOptionsBitmask(Options.INVULNERABLE); + setConditionDamage(100); + setMaximumCondition(4320); + setStaticObject(true); } public BuildingObject() { super(); - messageBuilder = new BuildingMessageBuilder(this); - this.setConditionDamage(100); + getBaseline(3).set("volume", 255); + setOptionsBitmask(Options.INVULNERABLE); + setConditionDamage(100); + setMaximumCondition(4320); + setStaticObject(true); + } + + @Override + public void initAfterDBLoad() { + super.init(); + defendersList = new Vector(); + getBaseline(3).set("volume", 255); + setOptionsBitmask(Options.INVULNERABLE); + setConditionDamage(100); + setMaximumCondition(4320); + } + + @Override + public Baseline getOtherVariables() { + Baseline baseline = super.getOtherVariables(); + baseline.put("maintenanceAmount", (float) 0); + baseline.put("baseMaintenanceRate", 0); + baseline.put("deedTemplate", ""); + baseline.put("residency", false); + baseline.put("privacy", (byte) 0); + baseline.put("maximumStorageCapacity", (short) 0); + return baseline; + } + + @Override + public Baseline getBaseline3() { + Baseline baseline = super.getBaseline3(); + return baseline; + } + + @Override + public Baseline getBaseline6() { + Baseline baseline = super.getBaseline6(); + return baseline; + } + + @Override + public Baseline getBaseline8() { + Baseline baseline = super.getBaseline8(); + return baseline; + } + + @Override + public Baseline getBaseline9() { + Baseline baseline = super.getBaseline9(); + return baseline; + } + + public Vector getCells() { + final Vector cells = new Vector(); + + this.viewChildren(this, true, false, (obj) -> { + if (obj instanceof CellObject) { + cells.add((CellObject) obj); + } + }); + + return cells; } public CellObject getCellByCellNumber(final int cellNumber) { - final AtomicReference ref = new AtomicReference(); synchronized(objectMutex) { this.viewChildren(this, true, false, (obj) -> { - if(obj instanceof CellObject && ((CellObject) obj).getCellNumber() == cellNumber) + if (obj instanceof CellObject && ((CellObject) obj).getCellNumber() == cellNumber) { ref.set((CellObject) obj); + } }); } return ref.get(); + } + + public CellObject getCellByCellName(String cellName) { + Map attributes = getTemplateData().getAttributes(); + if (attributes.containsKey("portalLayoutFilename") && ((String) attributes.get("portalLayoutFilename")).length() > 0) { + String portalLayoutFilename = (String) attributes.get("portalLayoutFilename"); + + try { + PortalVisitor portal = ClientFileManager.loadFile(portalLayoutFilename, PortalVisitor.class); + + for (int i = 1; i <= portal.cellCount; i++) { + if (cellName.equals(portal.cells.get(i).name)) { + return getCellByCellNumber(i); + } + } + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + } + + return null; } public int getCellNumberByObjectId(long objectId) { @@ -98,168 +182,177 @@ public class BuildingObject extends TangibleObject implements IPersistent, Seria } public float getMaintenanceAmount() { - return maintenanceAmount; + return (float) otherVariables.get("maintenanceAmount"); } - + public void setMaintenanceAmount(float maintenanceAmount) { - this.maintenanceAmount = maintenanceAmount; - } - - public void setDeedTemplate(String deedTemplate){ - this.deedTemplate = deedTemplate; - } - - public String getDeedTemplate(){ - return this.deedTemplate; - } - - public String getBuildingName() { - return this.getCustomName(); - } - - public void setBuildingName(String buildingName, CreatureObject owner) { - //owner.getClient().getSession().write(messageBuilder.buildCustomNameDelta(this,buildingName)); - this.setCustomName(buildingName); - ((CreatureObject)owner).sendSystemMessage("Structure renamed.", (byte) 0); + otherVariables.set("maintenanceAmount", maintenanceAmount); } public int getBMR() { - return BMR; + return (int) otherVariables.get("baseMaintenanceRate"); } - + public void setBMR(int BMR) { - this.BMR = BMR; + otherVariables.set("baseMaintenanceRate", BMR); + } + + public String getDeedTemplate(){ + return (String) otherVariables.get("deedTemplate"); + } + + public void setDeedTemplate(String deedTemplate){ + otherVariables.set("deedTemplate", deedTemplate); + } + + public String getBuildingName() { + return getCustomName(); + } + + public void setBuildingName(String buildingName, CreatureObject owner) { + setCustomName(buildingName); + ((CreatureObject) owner).sendSystemMessage("Structure renamed.", DisplayType.Broadcast); + } + + public boolean getResidency(){ + return (boolean) otherVariables.get("residency"); } public void setResidency(CreatureObject owner){ owner.sendSystemMessage("@player_structure:declared_residency", (byte) 1); - residency = true; - } - - public boolean getResidency(){ - return this.residency; + otherVariables.set("residency", true); } public byte getPrivacy() { - return privacy; + return (byte) otherVariables.get("privacy"); } public String getPrivacyString() { - if (privacy==PRIVATE) - return "private"; - if (privacy==PUBLIC) - return "public"; - return "42"; + switch (getPrivacy()) { + case PRIVATE: + return "private"; + case PUBLIC: + return "public"; + default: + return "42"; + } } - + public void setPrivacy(byte privacy) { - this.privacy = privacy; + otherVariables.set("residency", privacy); } public Vector getItemsList() { Vector items = new Vector(); + getCells().forEach(c -> c.viewChildren(c, true, false, (item) -> { if(!(item instanceof CreatureObject) && item.getTemplate() != "object/tangible/terminal/shared_terminal_player_structure.iff" - && item.getTemplate() != "object/tangible/terminal/shared_terminal_city.iff" - && item.getTemplate() != "object/tangible/terminal/shared_terminal_city_vote.iff") + && item.getTemplate() != "object/tangible/terminal/shared_terminal_city.iff" + && item.getTemplate() != "object/tangible/terminal/shared_terminal_city_vote.iff") { items.add((TangibleObject) item); + } })); + return items; } - + public short getMaximumStorageCapacity() { - return maximumStorageCapacity; - } - - public void setMaximumStorageCapacity(short maximumStorageCapacity) { - this.maximumStorageCapacity = maximumStorageCapacity; + return (byte) otherVariables.get("maximumStorageCapacity"); } - public void setPermissionEntry(String name,CreatureObject owner){ + public void setMaximumStorageCapacity(short maximumStorageCapacity) { + otherVariables.set("maximumStorageCapacity", maximumStorageCapacity); + } + + public void setPermissionEntry(String name, CreatureObject owner){ Vector entryListFirstNames = new Vector(); - for (long oid : entryList){ + + for (long oid : entryList) { String firstName = NGECore.getInstance().characterService.getPlayerFirstName(oid); entryListFirstNames.add(firstName); } + entryListFirstNames.add("Peter"); entryListFirstNames.add("Jackson"); + owner.getClient().getSession().write(messageBuilder.buildPermissionListCreate(entryListFirstNames, name)); } - public void setPermissionBan(String name,CreatureObject owner){ + public void setPermissionBan(String name, CreatureObject owner){ Vector banListFirstNames = new Vector(); - for (long oid : banList){ + + for (long oid : banList) { String firstName = NGECore.getInstance().characterService.getPlayerFirstName(oid); banListFirstNames.add(firstName); - } + } + banListFirstNames.add("Peter"); banListFirstNames.add("Smith"); + owner.getClient().getSession().write(messageBuilder.buildPermissionListCreate(banListFirstNames, name)); } - public void addPlayerToEntryList(CreatureObject owner,long oid, String firstName){ + public void addPlayerToEntryList(CreatureObject owner, long oid, String firstName){ if (!entryList.contains(oid)){ - this.entryList.add(oid); - owner.sendSystemMessage(firstName+ " added to the list.", (byte)1); // player_added %NO added to the list. + entryList.add(oid); + owner.sendSystemMessage(OutOfBand.ProsePackage("@player_structure:player_removed", "TO", NGECore.getInstance().objectService.getObject(oid).getCustomName()), DisplayType.Screen); } } - public void removePlayerFromEntryList(CreatureObject owner,long oid, String firstName){ + public void removePlayerFromEntryList(CreatureObject owner, long oid, String firstName){ if (entryList.contains(oid)){ - this.entryList.remove(oid); - owner.sendSystemMessage(firstName+ " removed to the list.", (byte)1); // player_removed %NO removed from the list. + entryList.remove(oid); + owner.sendSystemMessage(OutOfBand.ProsePackage("@player_structure:player_removed", "TO", NGECore.getInstance().objectService.getObject(oid).getCustomName()), DisplayType.Screen); } } - public void addPlayerToBanList(CreatureObject owner,long oid, String firstName){ + public void addPlayerToBanList(CreatureObject owner, long oid, String firstName){ if (!banList.contains(oid)){ - this.banList.add(oid); - owner.sendSystemMessage(firstName+ " added to the list.", (byte)1); + banList.add(oid); + owner.sendSystemMessage(OutOfBand.ProsePackage("@player_structure:player_removed", "TO", NGECore.getInstance().objectService.getObject(oid).getCustomName()), DisplayType.Screen); } } - public void removePlayerFromBanList(CreatureObject owner,long oid, String firstName){ + public void removePlayerFromBanList(CreatureObject owner, long oid, String firstName){ if (banList.contains(oid)){ - this.banList.remove(oid); - owner.sendSystemMessage(firstName+ " removed to the list.", (byte)1); + banList.remove(oid); + owner.sendSystemMessage(OutOfBand.ProsePackage("@player_structure:player_removed", "TO", NGECore.getInstance().objectService.getObject(oid).getCustomName()), DisplayType.Screen); } } + @Override + public void notifyClients(IoBuffer buffer, boolean notifySelf) { + notifyObservers(buffer, false); + } + + @Override + public ObjectMessageBuilder getMessageBuilder() { + synchronized(objectMutex) { + if (messageBuilder == null) { + messageBuilder = new BuildingMessageBuilder(this); + } + + return messageBuilder; + } + } - @Override public void sendBaselines(Client destination) { - - if(destination == null || destination.getSession() == null) { - System.out.println("NULL session"); - return; + if (destination != null && destination.getSession() != null) { + destination.getSession().write(getBaseline(3).getBaseline()); + destination.getSession().write(getBaseline(6).getBaseline()); + + Client parent = ((getGrandparent() == null) ? null : getGrandparent().getClient()); + + if (parent != null && destination == parent) { + destination.getSession().write(getBaseline(8).getBaseline()); + destination.getSession().write(getBaseline(9).getBaseline()); + } } - - destination.getSession().write(messageBuilder.buildBaseline3()); - destination.getSession().write(messageBuilder.buildBaseline6()); - destination.getSession().write(messageBuilder.buildBaseline8()); - destination.getSession().write(messageBuilder.buildBaseline9()); - } - public Vector getCells() { - final Vector cells = new Vector(); - this.viewChildren(this, true, false, (obj) -> { - if(obj instanceof CellObject) - cells.add((CellObject) obj); - }); - return cells; - } - - @Override - public void initAfterDBLoad() { - super.init(); - messageBuilder = new BuildingMessageBuilder(this); - defendersList = new Vector(); - } - - public ObjectMessageBuilder getMessageBuilder() { - return messageBuilder; + public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) { + super.sendListDelta(viewType, updateType, buffer); } } diff --git a/src/resources/objects/creature/CreatureMessageBuilder.java b/src/resources/objects/creature/CreatureMessageBuilder.java index 30a53018..8c8edbf9 100644 --- a/src/resources/objects/creature/CreatureMessageBuilder.java +++ b/src/resources/objects/creature/CreatureMessageBuilder.java @@ -682,6 +682,16 @@ public class CreatureMessageBuilder extends TangibleMessageBuilder { } + public IoBuffer buildGuildIdDelta(int guildId) { + IoBuffer buffer = bufferPool.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN); + buffer.putInt(guildId); + int size = buffer.position(); + buffer.flip(); + buffer = createDelta("CREO", (byte) 6, (short) 1, (short) 0x0F, buffer, size + 4); + + return buffer; + } + public IoBuffer buildGroupInviteDelta(long inviteSenderId, String inviteSenderName, long inviteCounter) { IoBuffer buffer = bufferPool.allocate(18 + inviteSenderName.length(), false).order(ByteOrder.LITTLE_ENDIAN); diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index 84e0bf2c..68eea2b3 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -104,7 +104,6 @@ public class CreatureObject extends TangibleObject implements Serializable { private transient int missionCriticalObjectsUpdateCounter = 0; // CREO6 - private byte combatFlag = 0; private short level = -1; private int grantedHealth = 0; private String currentAnimation; @@ -187,7 +186,7 @@ public class CreatureObject extends TangibleObject implements Serializable { private transient SWGObject useTarget; public CreatureObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { - super(objectID, planet, Template, position, orientation); + super(objectID, planet, position, orientation, Template); messageBuilder = new CreatureMessageBuilder(this); loadTemplateData(); skills = new ArrayList(); @@ -234,12 +233,6 @@ public class CreatureObject extends TangibleObject implements Serializable { } - public void setCustomName2(String customName) { - setCustomName(customName); - - notifyObservers(messageBuilder.buildCustomNameDelta(customName), true); - } - public int getBankCredits() { synchronized(objectMutex) { return bankCredits; @@ -351,25 +344,6 @@ public class CreatureObject extends TangibleObject implements Serializable { } - @Override - public int getOptionsBitmask() { - synchronized(objectMutex) { - return optionsBitmask; - } - } - - @Override - public void setOptionsBitmask(int optionBitmask) { - synchronized(objectMutex) { - this.optionsBitmask = optionBitmask; - } - - IoBuffer optionDelta = messageBuilder.buildOptionMaskDelta(optionBitmask); - - notifyObservers(optionDelta, true); - - } - public void setOptions(int options, boolean add) { synchronized(objectMutex) { if (options != 0) { @@ -485,15 +459,9 @@ public class CreatureObject extends TangibleObject implements Serializable { this.inspirationTick = inspirationTick; } } - - @Override + public void setFaction(String faction) { - synchronized(objectMutex) { - this.faction = faction; - } - - notifyObservers(messageBuilder.buildFactionDelta(faction), true); - + super.setFaction(faction); CreatureObject companion = NGECore.getInstance().mountService.getCompanion(this); @@ -502,13 +470,8 @@ public class CreatureObject extends TangibleObject implements Serializable { } } - @Override public void setFactionStatus(int factionStatus) { - synchronized(objectMutex) { - this.factionStatus = factionStatus; - } - - notifyObservers(messageBuilder.buildFactionStatusDelta(factionStatus), true); + super.setFactionStatus(factionStatus); CreatureObject companion = NGECore.getInstance().mountService.getCompanion(this); @@ -812,21 +775,6 @@ public class CreatureObject extends TangibleObject implements Serializable { return missionCriticalObjects; } - public byte getCombatFlag() { - synchronized(objectMutex) { - return combatFlag; - } - } - - public void setCombatFlag(byte combatFlag) { - synchronized(objectMutex) { - this.combatFlag = combatFlag; - } - IoBuffer combatDelta = messageBuilder.buildCombatFlagDelta(combatFlag); - - notifyObservers(combatDelta, true); - } - public short getLevel() { synchronized(objectMutex) { return level; @@ -967,6 +915,10 @@ public class CreatureObject extends TangibleObject implements Serializable { synchronized(objectMutex) { this.guildId = guildId; } + + IoBuffer guildIdDelta = messageBuilder.buildGuildIdDelta(guildId); + + notifyObservers(guildIdDelta, true); } public long getLookAtTarget() { diff --git a/src/resources/objects/factorycrate/FactoryCrateObject.java b/src/resources/objects/factorycrate/FactoryCrateObject.java index 8c82e824..b735ece8 100644 --- a/src/resources/objects/factorycrate/FactoryCrateObject.java +++ b/src/resources/objects/factorycrate/FactoryCrateObject.java @@ -69,8 +69,8 @@ public class FactoryCrateObject extends TangibleObject implements Serializable { } - public FactoryCrateObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation) { - super(objectID, planet, template, position, orientation); + public FactoryCrateObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String template) { + super(objectID, planet, position, orientation, template); this.messageBuilder = new FactoryCrateMessageBuilder(this); this.contents = new Vector(); this.contentObjectQuantity = 0; diff --git a/src/resources/objects/group/GroupObject.java b/src/resources/objects/group/GroupObject.java index 92986e39..85535598 100644 --- a/src/resources/objects/group/GroupObject.java +++ b/src/resources/objects/group/GroupObject.java @@ -32,6 +32,7 @@ import engine.resources.scene.Quaternion; public class GroupObject extends UniverseObject { + private static final long serialVersionUID = 1L; private Vector memberList = new Vector(); private int memberListUpdateCounter; private SWGObject groupLeader; diff --git a/src/resources/objects/guild/GuildMessageBuilder.java b/src/resources/objects/guild/GuildMessageBuilder.java index a29b8f68..65bc51c6 100644 --- a/src/resources/objects/guild/GuildMessageBuilder.java +++ b/src/resources/objects/guild/GuildMessageBuilder.java @@ -21,17 +21,9 @@ ******************************************************************************/ package resources.objects.guild; -import java.nio.ByteOrder; import java.util.Map; -import java.util.Map.Entry; - -import org.apache.mina.core.buffer.IoBuffer; import engine.resources.objects.Builder; -import resources.gcw.CurrentServerGCWZoneHistory; -import resources.gcw.CurrentServerGCWZonePercent; -import resources.gcw.OtherServerGCWZonePercent; -import resources.guild.Guild; import resources.objects.universe.UniverseMessageBuilder; public class GuildMessageBuilder extends UniverseMessageBuilder { @@ -44,181 +36,6 @@ public class GuildMessageBuilder extends UniverseMessageBuilder { super(); } - public IoBuffer buildBaseline3() { - GuildObject guilds = (GuildObject) object; - - IoBuffer buffer = bufferPool.allocate(((guilds.getGuildList().size() * 10) + 49), false).order(ByteOrder.LITTLE_ENDIAN); - buffer.putShort((short) 5); // Object Count - buffer.putFloat(guilds.getComplexity()); - buffer.put(getAsciiString(guilds.getSTFFile())); - buffer.putInt(guilds.getSTFSpacer()); - buffer.put(getAsciiString(guilds.getSTFName())); - buffer.put(getUnicodeString(guilds.getCustomName())); - buffer.putInt(guilds.getVolume()); - buffer.putInt(guilds.getGuildList().size()); - buffer.putInt(guilds.getGuildList().getUpdateCounter()); - for (Guild object : guilds.getGuildList().get()) { - buffer.put(getAsciiString(object.getString())); - } - - int size = buffer.position(); - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - buffer.flip(); - buffer = createBaseline("GILD", (byte) 3, buffer, size); - - return buffer; - } - - public IoBuffer buildBaseline6() { - GuildObject guilds = (GuildObject) object; - - int capacity = 16 + getAsciiString(guilds.getSTFFile()).length; - for (Entry entry : guilds.getCurrentServerGCWZonePercentMap().entrySet()) capacity += (11 + entry.getKey().length() + entry.getValue().getBytes().length); - for (Entry entry : guilds.getCurrentServerGCWTotalPercentMap().entrySet()) capacity += (11 + entry.getKey().length() + entry.getValue().getBytes().length); - for (Entry entry : guilds.getCurrentServerGCWZoneHistoryMap().entries()) capacity += (11 + entry.getKey().length() + entry.getValue().getBytes().length); - for (Entry entry : guilds.getCurrentServerGCWTotalHistoryMap().entries()) capacity += (11 + entry.getKey().length() + entry.getValue().getBytes().length); - for (Entry entry : guilds.getOtherServerGCWZonePercentMap().entries()) capacity += (11 + entry.getKey().length() + entry.getValue().getBytes().length); - for (Entry entry : guilds.getOtherServerGCWTotalPercentMap().entries()) capacity += (11 + entry.getKey().length() + entry.getValue().getBytes().length); - - IoBuffer buffer = bufferPool.allocate(capacity, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - buffer.putShort((short) 9); // Object Count - buffer.putInt(guilds.getServerId()); - buffer.put(getAsciiString(guilds.getSTFFile())); - buffer.putInt(guilds.getUnknown1()); - buffer.putShort(guilds.getUnknown2()); - buffer.putInt(guilds.getCurrentServerGCWZonePercentMap().size()); - buffer.putInt(guilds.getCurrentServerGCWZonePercentMap().getUpdateCounter()); - for (Entry entry : guilds.getCurrentServerGCWZonePercentMap().entrySet()) { - buffer.put((byte) 0); - buffer.put(getAsciiString(entry.getKey())); - buffer.put(entry.getValue().getBytes()); - } - buffer.putInt(guilds.getCurrentServerGCWTotalPercentMap().size()); - buffer.putInt(guilds.getCurrentServerGCWTotalPercentMap().getUpdateCounter()); - for (Entry entry : guilds.getCurrentServerGCWTotalPercentMap().entrySet()) { - buffer.put((byte) 0); - buffer.put(getAsciiString(entry.getKey())); - buffer.put(entry.getValue().getBytes()); - } - buffer.putInt(guilds.getCurrentServerGCWZoneHistoryMap().size()); - buffer.putInt(guilds.getCurrentServerGCWZoneHistoryMap().getUpdateCounter()); - for (Entry entry : guilds.getCurrentServerGCWZoneHistoryMap().entries()) { - buffer.put((byte) 0); - buffer.put(getAsciiString(entry.getKey())); - buffer.put(entry.getValue().getBytes()); - } - buffer.putInt(guilds.getCurrentServerGCWTotalHistoryMap().size()); - buffer.putInt(guilds.getCurrentServerGCWTotalHistoryMap().getUpdateCounter()); - for (Entry entry : guilds.getCurrentServerGCWTotalHistoryMap().entries()) { - buffer.put((byte) 0); - buffer.put(getAsciiString(entry.getKey())); - buffer.put(entry.getValue().getBytes()); - } - buffer.putInt(guilds.getOtherServerGCWZonePercentMap().size()); - buffer.putInt(guilds.getOtherServerGCWZonePercentMap().getUpdateCounter()); - for (Entry entry : guilds.getOtherServerGCWZonePercentMap().entries()) { - buffer.put((byte) 0); - buffer.put(getAsciiString(entry.getKey())); - buffer.put(entry.getValue().getBytes()); - } - buffer.putInt(guilds.getOtherServerGCWTotalPercentMap().size()); - buffer.putInt(guilds.getOtherServerGCWTotalPercentMap().getUpdateCounter()); - for (Entry entry : guilds.getOtherServerGCWTotalPercentMap().entries()) { - buffer.put((byte) 0); - buffer.put(getAsciiString(entry.getKey())); - buffer.put(entry.getValue().getBytes()); - } - buffer.putInt(guilds.getUnknown3()); - - int size = buffer.position(); - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - buffer.flip(); - buffer = createBaseline("GILD", (byte) 6, buffer, size); - - return buffer; - } - - public IoBuffer buildComplexity(float complexity) { - IoBuffer buffer = bufferPool.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN); - - buffer.putFloat(complexity); - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("GILD", (byte) 3, (short) 1, (short) 0, buffer, size + 4); - - return buffer; - } - - public IoBuffer buildSTF(String STFFile, int STFSpacer, String STFName) { - IoBuffer buffer = bufferPool.allocate((STFFile.length() + STFName.length() + 8), false).order(ByteOrder.LITTLE_ENDIAN); - - buffer.put(getAsciiString(STFFile)); - buffer.putInt(STFSpacer); - buffer.put(getAsciiString(STFName)); - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("GILD", (byte) 3, (short) 1, (short) 1, buffer, size + 4); - - return buffer; - } - - public IoBuffer buildCustomName(String customName) { - IoBuffer buffer = bufferPool.allocate((customName.length() + 4), false).order(ByteOrder.LITTLE_ENDIAN); - - buffer.put(getUnicodeString(customName)); - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("GILD", (byte) 3, (short) 1, (short) 2, buffer, size + 4); - - return buffer; - } - - public IoBuffer buildVolume(int volume) { - IoBuffer buffer = bufferPool.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN); - - buffer.putInt(volume); - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("GILD", (byte) 3, (short) 1, (short) 3, buffer, size + 4); - - return buffer; - } - - public IoBuffer buildServerId(int serverId) { - IoBuffer buffer = bufferPool.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN); - - buffer.putInt(serverId); - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("GILD", (byte) 6, (short) 1, (short) 0, buffer, size + 4); - - return buffer; - } - - public IoBuffer buildUnknowns(int unknown1, short unknown2) { - IoBuffer buffer = bufferPool.allocate(6, false).order(ByteOrder.LITTLE_ENDIAN); - - buffer.putInt(unknown1); - buffer.putShort(unknown2); - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("GILD", (byte) 6, (short) 1, (short) 1, buffer, size + 4); - - return buffer; - } - - public IoBuffer buildUnknown3(int unknown3) { - IoBuffer buffer = bufferPool.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN); - - buffer.putInt(unknown3); - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("GILD", (byte) 6, (short) 1, (short) 8, buffer, size + 4); - - return buffer; - } - @Override public void buildBaseline3(Map baselineBuilders, Map deltaBuilders) { super.buildBaseline3(baselineBuilders, deltaBuilders); diff --git a/src/resources/objects/guild/GuildObject.java b/src/resources/objects/guild/GuildObject.java index bee39d0c..e87d3210 100644 --- a/src/resources/objects/guild/GuildObject.java +++ b/src/resources/objects/guild/GuildObject.java @@ -34,257 +34,114 @@ import resources.gcw.CurrentServerGCWZonePercent; import resources.gcw.OtherServerGCWZonePercent; import resources.guild.Guild; import resources.objects.ObjectMessageBuilder; -import resources.objects.SWGList; import resources.objects.SWGMap; import resources.objects.SWGMultiMap; +import resources.objects.SWGSet; import resources.objects.universe.UniverseObject; import services.collections.ServerFirst; - -import com.sleepycat.persist.model.Entity; -import com.sleepycat.persist.model.NotPersistent; - import engine.clients.Client; +import engine.resources.objects.Baseline; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Entity(version=1) public class GuildObject extends UniverseObject implements Serializable { private static final long serialVersionUID = 1L; - protected NGECore core; - @NotPersistent + private transient GuildMessageBuilder messageBuilder = new GuildMessageBuilder(this); - private Map serverFirst = new HashMap(); - private Map> zoneMap = new TreeMap>(); - - private long nextInstanceId = 0; - - // GILD 3 - private float complexity = 0x803F0F00; - private String STFFile = "string_id_table"; - private int STFSpacer = 0; - private String STFName = ""; - private String customName = ""; - private int volume = 0; - private SWGList guildList = new SWGList(this, 3, 4, false); - - // GILD 6 - private int serverId = 0x43; - //private String STFName = "string_id_table"; - private int unknown1 = 0; - private short unknown2 = 0; - private SWGMap currentServerGCWZonePercentMap = new SWGMap(this, 6, 2, true); - private SWGMap currentServerGCWTotalPercentMap = new SWGMap(this, 6, 3, true); - private SWGMultiMap currentServerGCWZoneHistoryMap = new SWGMultiMap(this, 6, 4, true); - private SWGMultiMap currentServerGCWTotalHistoryMap = new SWGMultiMap(this, 6, 5, true); - private SWGMultiMap otherServerGCWZonePercentMap = new SWGMultiMap(this, 6, 6, true); - private SWGMultiMap otherServerGCWTotalPercentMap = new SWGMultiMap(this, 6, 7, true); - private int unknown3 = 5; - public GuildObject(NGECore core, long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { super(objectID, planet, position, orientation, Template); - this.core = core; + otherVariables = getOtherVariables(); // FIXME temp + } + + public GuildObject() { + super(); + } + + public void initAfterDBLoad() { + super.init(); } @Override - public void initAfterDBLoad() { - super.init(); - messageBuilder = new GuildMessageBuilder(this); - guildList.init(this); - currentServerGCWZonePercentMap.init(this); - currentServerGCWTotalPercentMap.init(this); - currentServerGCWZoneHistoryMap.init(this); - currentServerGCWTotalHistoryMap.init(this); - otherServerGCWZonePercentMap.init(this); - otherServerGCWTotalPercentMap.init(this); + public Baseline getOtherVariables() { + Baseline baseline = super.getOtherVariables(); + baseline.put("nextInstanceId", (long) 0); + baseline.put("zoneMap", new TreeMap>()); + baseline.put("serverFirst", new HashMap()); + return baseline; } - public float getComplexity() { - synchronized(objectMutex) { - return complexity; - } + @Override + public Baseline getBaseline3() { + Baseline baseline = super.getBaseline3(); + baseline.put("guildList", new SWGSet(this, 3, 4, false)); + return baseline; } - public void setComplexity(float complexity) { - synchronized(objectMutex) { - this.complexity = complexity; - } - - notifyAll(messageBuilder.buildComplexity(complexity)); + @Override + public Baseline getBaseline6() { + Baseline baseline = super.getBaseline6(); + baseline.put("currentServerGCWZonePercentMap", new SWGMap(this, 6, 2, true)); + baseline.put("currentServerGCWTotalPercentMap", new SWGMap(this, 6, 3, true)); + baseline.put("currentServerGCWZoneHistoryMap", new SWGMultiMap(this, 6, 4, true)); + baseline.put("currentServerGCWTotalHistoryMap", new SWGMultiMap(this, 6, 5, true)); + baseline.put("otherServerGCWZonePercentMap", new SWGMultiMap(this, 6, 6, true)); + baseline.put("otherServerGCWTotalPercentMap", new SWGMultiMap(this, 6, 7, true)); + baseline.put("8", 5); + return baseline; } - public String getSTFFile() { - synchronized(objectMutex) { - return STFFile; - } - } - - public void setSTFFile(String STFFile) { - synchronized(objectMutex) { - this.STFFile = STFFile; - } - - notifyAll(messageBuilder.buildSTF(STFFile, STFSpacer, STFName)); - } - - public int getSTFSpacer() { - synchronized(objectMutex) { - return STFSpacer; - } - } - - public void setSTFSpacer(int STFSpacer) { - synchronized(objectMutex) { - this.STFSpacer = STFSpacer; - } - - notifyAll(messageBuilder.buildSTF(STFFile, STFSpacer, STFName)); - } - - public String getSTFName() { - synchronized(objectMutex) { - return STFName; - } - } - - public void setSTFName(String STFName) { - synchronized(objectMutex) { - this.STFName = STFName; - } - - notifyAll(messageBuilder.buildSTF(STFFile, STFSpacer, STFName)); - } - - public String getCustomName() { - synchronized(objectMutex) { - return customName; - } - } - - public void setCustomName(String customName) { - synchronized(objectMutex) { - this.customName = customName; - } - - notifyAll(messageBuilder.buildCustomName(customName)); - } - - public int getVolume() { - synchronized(objectMutex) { - return volume; - } - } - - public void setVolume(int volume) { - synchronized(objectMutex) { - this.volume = volume; - } - - notifyAll(messageBuilder.buildVolume(volume)); - } - - public SWGList getGuildList() { - return guildList; - } - - public int getServerId() { - synchronized(objectMutex) { - return serverId; - } - } - - public void setServerId(int serverId) { - synchronized(objectMutex) { - this.serverId = serverId; - } - - notifyAll(messageBuilder.buildServerId(serverId)); - } - - public int getUnknown1() { - synchronized(objectMutex) { - return unknown1; - } - } - - public void setUnknown1(int unknown1) { - synchronized(objectMutex) { - this.unknown1 = unknown1; - } - - notifyAll(messageBuilder.buildUnknowns(unknown1, unknown2)); - } - - public short getUnknown2() { - synchronized(objectMutex) { - return unknown2; - } - } - - public void setUnknown2(short unknown2) { - synchronized(objectMutex) { - this.unknown2 = unknown2; - } - - notifyAll(messageBuilder.buildUnknowns(unknown1, unknown2)); + @SuppressWarnings("unchecked") + public SWGSet getGuildList() { + return (SWGSet) getBaseline(3).get("guildList"); } + @SuppressWarnings("unchecked") public SWGMap getCurrentServerGCWZonePercentMap() { - return currentServerGCWZonePercentMap; + return (SWGMap) getBaseline(6).get("currentServerGCWZonePercentMap"); } + @SuppressWarnings("unchecked") public SWGMap getCurrentServerGCWTotalPercentMap() { - return currentServerGCWTotalPercentMap; + return (SWGMap) getBaseline(6).get("currentServerGCWTotalPercentMap"); } + @SuppressWarnings("unchecked") public SWGMultiMap getCurrentServerGCWZoneHistoryMap() { - return currentServerGCWZoneHistoryMap; + return (SWGMultiMap) getBaseline(6).get("currentServerGCWZoneHistoryMap"); } + @SuppressWarnings("unchecked") public SWGMultiMap getCurrentServerGCWTotalHistoryMap() { - return currentServerGCWTotalHistoryMap; + return (SWGMultiMap) getBaseline(6).get("currentServerGCWTotalHistoryMap"); } + @SuppressWarnings("unchecked") public SWGMultiMap getOtherServerGCWZonePercentMap() { - return otherServerGCWZonePercentMap; + return (SWGMultiMap) getBaseline(6).get("otherServerGCWZonePercentMap"); } + @SuppressWarnings("unchecked") public SWGMultiMap getOtherServerGCWTotalPercentMap() { - return otherServerGCWTotalPercentMap; - } - - public int getUnknown3() { - synchronized(objectMutex) { - return unknown3; - } - } - - public void setUnknown3(int unknown3) { - synchronized(objectMutex) { - this.unknown3 = unknown3; - } - - notifyAll(messageBuilder.buildUnknown3(unknown3)); + return (SWGMultiMap) getBaseline(6).get("otherServerGCWTotalPercentMap"); } + @SuppressWarnings("unchecked") public Map> getZoneMap() { - synchronized(objectMutex) { - return zoneMap; - } + return (Map>) otherVariables.get("zoneMap"); } + @SuppressWarnings("unchecked") public Map getServerFirst() { - synchronized(objectMutex) { - return serverFirst; - } + return (Map) otherVariables.get("serverFirst"); } public boolean addServerFirst(String collectionName, ServerFirst player) { synchronized(objectMutex) { - if (!serverFirst.containsKey(collectionName)) { - serverFirst.put(collectionName, player); + if (!getServerFirst().containsKey(collectionName)) { + getServerFirst().put(collectionName, player); return true; } @@ -292,74 +149,40 @@ public class GuildObject extends UniverseObject implements Serializable { } } - public synchronized long getNextInstanceId() { - long ret = nextInstanceId; - nextInstanceId++; - return ret; + public long getNextInstanceId() { + synchronized(objectMutex) { + otherVariables.set("nextInstanceId", (long) (((long) otherVariables.get("nextInstanceId")) + 1L)); + return (long) otherVariables.get("nextInstanceId"); + } + } + + @Override + public void notifyClients(IoBuffer buffer, boolean notifySelf) { + notifyObservers(buffer, false); + } + + @Override + public ObjectMessageBuilder getMessageBuilder() { + synchronized(objectMutex) { + if (messageBuilder == null) { + messageBuilder = new GuildMessageBuilder(this); + } + + return messageBuilder; + } } @Override public void sendBaselines(Client destination) { - destination.getSession().write(messageBuilder.buildBaseline3()); - destination.getSession().write(messageBuilder.buildBaseline6()); - } - - private void notifyAll(IoBuffer buffer) { - synchronized(core.getActiveConnectionsMap()) { - for (Client client : core.getActiveConnectionsMap().values()) { - client.getSession().write(buffer); - } + if (destination != null && destination.getSession() != null) { + destination.getSession().write(getBaseline(3).getBaseline()); + destination.getSession().write(getBaseline(6).getBaseline()); } } - public ObjectMessageBuilder getMessageBuilder() { - return messageBuilder; - } - @Override public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) { - - switch (viewType) { - case 3: - { - switch (updateType) { - case 4: - { - buffer = messageBuilder.createDelta("GILD", (byte) 3, (short) 1, (short) 4, buffer.flip(), buffer.array().length + 4); - - for (Client client : core.getActiveConnectionsMap().values()) { - client.getSession().write(buffer); - } - - break; - } - } - } - case 6: - { - switch (updateType) { - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - { - buffer = messageBuilder.createDelta("GILD", (byte) 6, (short) 1, (short) updateType, buffer.flip(), buffer.array().length + 4); - - for (Client client : core.getActiveConnectionsMap().values()) { - client.getSession().write(buffer); - } - - break; - } - default: - { - return; - } - } - } - } + notifyClients(getBaseline(viewType).createDelta(updateType, buffer.array()), false); } } diff --git a/src/resources/objects/harvester/HarvesterMessageBuilder.java b/src/resources/objects/harvester/HarvesterMessageBuilder.java index bf3422cb..81372b07 100644 --- a/src/resources/objects/harvester/HarvesterMessageBuilder.java +++ b/src/resources/objects/harvester/HarvesterMessageBuilder.java @@ -168,9 +168,9 @@ public class HarvesterMessageBuilder extends TangibleMessageBuilder { Vector outputHopperContent = harvester.getOutputHopperContent(); int hopperContentSize = outputHopperContent.size(); - int iHopperList = 1; + //int iHopperList = 1; if (hopperContentSize==0) { - iHopperList = 0; + //iHopperList = 0; } //int sizeP = 30 + 15*hopperContentSize; int sizeP = 30-2-4-4; @@ -195,12 +195,12 @@ public class HarvesterMessageBuilder extends TangibleMessageBuilder { // buffer.putInt(iHopperList); // buffer.putInt(harvester.getResourceUpdateCount()); int sumOfHopper = 0; - int i = 0; + //int i = 0; sumOfHopper = 0; Vector outputHopper = harvester.getOutputHopperContent(); for (ResourceContainerObject cont : outputHopper){ sumOfHopper += cont.getStackCount(); - i++; + //i++; } buffer.putShort((short)0x0A); @@ -432,9 +432,9 @@ public class HarvesterMessageBuilder extends TangibleMessageBuilder { public IoBuffer buildHINO7ActivateDelta2(HarvesterObject harvester) { - int iHopperList = 0; + //int iHopperList = 0; if (harvester.getOutputHopperContent().size() >= 1) { - iHopperList = 1; + //iHopperList = 1; } IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); @@ -463,9 +463,9 @@ public class HarvesterMessageBuilder extends TangibleMessageBuilder { public IoBuffer buildHINO7ActivateDelta2old(HarvesterObject harvester) { - int iHopperList = 0; + //int iHopperList = 0; if (harvester.getOutputHopperContent().size() >= 1) { - iHopperList = 1; + //iHopperList = 1; } IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN); diff --git a/src/resources/objects/harvester/HarvesterObject.java b/src/resources/objects/harvester/HarvesterObject.java index d53eb991..50f87e23 100644 --- a/src/resources/objects/harvester/HarvesterObject.java +++ b/src/resources/objects/harvester/HarvesterObject.java @@ -118,8 +118,8 @@ public class HarvesterObject extends InstallationObject implements Serializable private int specRate; - public HarvesterObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ - super(objectID, planet, template, position, orientation); + public HarvesterObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String template) { + super(objectID, planet, position, orientation, template); this.setConditionDamage(100); messageBuilder = new HarvesterMessageBuilder(this); installationMessageBuilder = new InstallationMessageBuilder((InstallationObject)this); diff --git a/src/resources/objects/installation/InstallationMessageBuilder.java b/src/resources/objects/installation/InstallationMessageBuilder.java index 8b67f8d3..d2b1f80c 100644 --- a/src/resources/objects/installation/InstallationMessageBuilder.java +++ b/src/resources/objects/installation/InstallationMessageBuilder.java @@ -27,7 +27,6 @@ import java.util.Map; import org.apache.mina.core.buffer.IoBuffer; import engine.resources.objects.Builder; -import resources.objects.harvester.HarvesterObject; import resources.objects.tangible.TangibleMessageBuilder; public class InstallationMessageBuilder extends TangibleMessageBuilder{ @@ -174,8 +173,8 @@ public class InstallationMessageBuilder extends TangibleMessageBuilder{ public IoBuffer constructINSO7Var1(InstallationObject installationObject,long selectedResource) { IoBuffer buffer = bufferPool.allocate(10, false).order(ByteOrder.LITTLE_ENDIAN); - int hopperContentsSize = ((HarvesterObject)installationObject).getOutputHopperContent().size()+1; - byte updateCounter = ((HarvesterObject)installationObject).getUpdateCount(); + //int hopperContentsSize = ((HarvesterObject)installationObject).getOutputHopperContent().size()+1; + //byte updateCounter = ((HarvesterObject)installationObject).getUpdateCount(); buffer.setAutoExpand(true); buffer.putShort((short)2); // buffer.putShort((short)updateCounter); diff --git a/src/resources/objects/installation/InstallationObject.java b/src/resources/objects/installation/InstallationObject.java index c6269dc3..b9cc98d6 100644 --- a/src/resources/objects/installation/InstallationObject.java +++ b/src/resources/objects/installation/InstallationObject.java @@ -39,8 +39,8 @@ public class InstallationObject extends TangibleObject implements Serializable { private static final long serialVersionUID = 1L; private transient InstallationMessageBuilder messageBuilder; - public InstallationObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ - super(objectID, planet, template, position, orientation); + public InstallationObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String template) { + super(objectID, planet, position, orientation, template); messageBuilder = new InstallationMessageBuilder(this); } diff --git a/src/resources/objects/intangible/IntangibleObject.java b/src/resources/objects/intangible/IntangibleObject.java index 0e1d788f..df6843b3 100644 --- a/src/resources/objects/intangible/IntangibleObject.java +++ b/src/resources/objects/intangible/IntangibleObject.java @@ -41,7 +41,6 @@ public class IntangibleObject extends SWGObject implements Serializable { public IntangibleObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { super(objectID, planet, position, orientation, Template); - messageBuilder = new IntangibleMessageBuilder(this); } public IntangibleObject() { @@ -50,7 +49,6 @@ public class IntangibleObject extends SWGObject implements Serializable { public void initAfterDBLoad() { super.init(); - messageBuilder = new IntangibleMessageBuilder(this); } public Baseline getOtherVariables() { diff --git a/src/resources/objects/player/PlayerMessageBuilder.java b/src/resources/objects/player/PlayerMessageBuilder.java index a1a19436..adc62e2b 100644 --- a/src/resources/objects/player/PlayerMessageBuilder.java +++ b/src/resources/objects/player/PlayerMessageBuilder.java @@ -21,16 +21,10 @@ ******************************************************************************/ package resources.objects.player; -import java.nio.ByteOrder; -import java.util.List; import java.util.Map; -import java.util.Map.Entry; - -import org.apache.mina.core.buffer.IoBuffer; import engine.resources.objects.Builder; import resources.objects.intangible.IntangibleMessageBuilder; -import resources.objects.waypoint.WaypointObject; public class PlayerMessageBuilder extends IntangibleMessageBuilder { @@ -42,633 +36,6 @@ public class PlayerMessageBuilder extends IntangibleMessageBuilder { super(); } - public IoBuffer buildBaseline3() { - - PlayerObject player = (PlayerObject) object; - - IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - buffer.putShort((short) 0x14); - buffer.putFloat(1); - buffer.put(getAsciiString("string_id_table")); - buffer.putInt(0); // spacer - buffer.putShort((short) 0); - buffer.putInt(0); // custom name - buffer.putInt(0); // volume - buffer.putInt(0); // generic int - - buffer.putInt(4); // flag bitmask list size - buffer.putInt(player.getFlagBitmask()); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - - buffer.putInt(4); // profile bitmask list size - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - - if(player.getTitle() == null || player.getTitle().length() < 1) - buffer.putShort((short) 0); - else - buffer.put(getAsciiString(player.getTitle())); - - buffer.putInt(0); // born date - Needs to be in yyymmdd format - Stored as epoch time of character create - - buffer.putInt(player.getTotalPlayTime()); // total play time? - - buffer.putInt(player.getProfessionIcon()); - - buffer.put(getAsciiString(player.getProfession())); - buffer.putInt(0); // GCW - buffer.putInt(0); // PvP Kills - buffer.putLong(0); // Lifetime GCW - buffer.putInt(0); // Lifetime PvP Kills - buffer.putInt(player.getCollections().length); - buffer.putInt(player.getHighestSetBit()); - buffer.put(player.getCollections()); - buffer.putInt(0); // Unknown, part of one delta, maybe a list - buffer.putInt(0); // Unknown, part of one delta, maybe a list - buffer.put((byte) ((player.isShowBackpack()) ? 1 : 0)); - buffer.put((byte) ((player.isShowHelmet()) ? 1 : 0)); - - int size = buffer.position(); - - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - - - buffer.flip(); - buffer = createBaseline("PLAY", (byte) 3, buffer, size); - - return buffer; - - } - - public IoBuffer buildBaseline6() { - - PlayerObject player = (PlayerObject) object; - - IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - buffer.putShort((short) 0x11); - buffer.putInt((short) 0x43); - buffer.put(getAsciiString("string_id_table")); - buffer.putInt(0); // probably stringId - buffer.putShort((short) 0); // detailedDescription - buffer.put(player.getGodLevel()); - buffer.putInt(0); // unk - buffer.putInt(0); // unk - buffer.putInt(0); // unk - buffer.putInt(0); // unk - buffer.putInt(0); // unk - if(player.getHome() == null || player.getHome().length() < 1) { - buffer.putShort((short) 0); - } else { - buffer.put(getAsciiString(player.getHome())); - } - buffer.putInt(0); // unk - buffer.put((byte) 0); // unk - buffer.putInt(0); // unk - buffer.putInt(0); // unk - buffer.putInt(0); // unk - buffer.putInt(0); // unk - buffer.putInt(0); // unk - buffer.putInt(0); // unk - - int size = buffer.position(); - - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - - - buffer.flip(); - buffer = createBaseline("PLAY", (byte) 6, buffer, size); - - return buffer; - - } - - public IoBuffer buildBaseline8() { - - PlayerObject player = (PlayerObject) object; - - IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - buffer.putShort((short) 0x09); - - if(player.getXpList().isEmpty()) { - buffer.putInt(0); - buffer.putInt(player.getXpListUpdateCounter()); - } else { - buffer.putInt(player.getXpList().size()); - buffer.putInt(player.getXpListUpdateCounter()); - - // no need for locking here, concurrent hash map iterator wont throw concurrency exceptions and multiple thread access at zone in is unlikely to occur for the PlayerObject - for(Entry entry : player.getXpList().entrySet()) { - - buffer.put((byte) 0); - buffer.put(getAsciiString(entry.getKey())); - buffer.putInt(entry.getValue()); - - } - - } - - if(player.getWaypoints().isEmpty()) { - buffer.putInt(0); - buffer.putInt(0); - } else { - buffer.putInt(player.getWaypoints().size()); - buffer.putInt(0); - - synchronized(player.getWaypoints()) { - - for(WaypointObject waypoint : player.getWaypoints()) { - - buffer.put((byte) 0); - buffer.putLong(waypoint.getObjectID()); - buffer.putInt(waypoint.getCellId()); - buffer.putFloat(waypoint.getPosition().x); - buffer.putFloat(waypoint.getPosition().y); - buffer.putFloat(waypoint.getPosition().z); - buffer.putLong(waypoint.getLocationNetworkId()); - buffer.putInt(waypoint.getPlanetCRC()); - buffer.put(getUnicodeString(waypoint.getName())); - buffer.putLong(waypoint.getObjectID()); - buffer.put(waypoint.getColor()); - buffer.put((byte) (waypoint.isActive() ? 1 : 0)); - - } - - } - } - - buffer.putInt(0); // Current force power ? - buffer.putInt(0); // Max force power ? - buffer.putInt(0); // Current FS Quest List size ? - buffer.putInt(0); // Current FS Quest List update counter ? - - buffer.putInt(0); // Completed FS Quest List size ? - buffer.putInt(0); // Completed FS Quest List update counter ? - - buffer.putInt(0); // Quest Journal List size ? - buffer.putInt(0); // Quest Journal List update counter ? - - buffer.putInt(0); // unk - - buffer.put(getAsciiString(player.getProfessionWheelPosition())); - int size = buffer.position(); - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - - buffer.flip(); - buffer = createBaseline("PLAY", (byte) 8, buffer, size); - - return buffer; - -} - - public IoBuffer buildBaseline9() { - - PlayerObject player = (PlayerObject) object; - - IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - - buffer.putShort((short) 0x1F); - - buffer.putInt(0); // ExperimentationFlag? - buffer.putInt(0); // CraftingStage? - - buffer.putLong(0); // Nearest Crafting Station id ? - - - buffer.putInt(0); // Draft Schematic List Size - buffer.putInt(0); // Draft Schematic List update counter - - buffer.putInt(0); // ExperimentationPoints? - buffer.putInt(0); // CraftingStage? - - buffer.putInt(8); // unk - - buffer.putInt(0); // unk - - if(player.getFriendList().isEmpty()) { - buffer.putInt(0); - buffer.putInt(0); - } else { - buffer.putInt(player.getFriendList().size()); - buffer.putInt(player.getFriendListUpdateCounter()); - - synchronized(player.getFriendList()) { - - for(String friend : player.getFriendList()) { - buffer.put(getAsciiString(friend)); - } - } - } - - if(player.getIgnoreList().isEmpty()) { - buffer.putInt(0); - buffer.putInt(0); - } else { - buffer.putInt(player.getIgnoreList().size()); - buffer.putInt(player.getIgnoreListUpdateCounter()); - - synchronized(player.getIgnoreList()) { - - for(String ignored : player.getIgnoreList()) { - buffer.put(getAsciiString(ignored)); - } - - } - } - - buffer.putInt(1); - buffer.putInt(0); // Current stomach unused in NGE - buffer.putInt(0x64); // Max stomach unused in NGE - buffer.putInt(0); // Current drink unused in NGE - buffer.putInt(0x64); // Max drink unused in NGE - buffer.putInt(0); // Current consumable unused in NGE - buffer.putInt(0x64); // Max consumable unused in NGE - - buffer.putInt(0); - buffer.putInt(0); - - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - - buffer.putInt(0); // jedi state??? - buffer.putShort((short) 0); - int size = buffer.position(); - - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - - - buffer.flip(); - buffer = createBaseline("PLAY", (byte) 9, buffer, size); - - return buffer; - - } - - public IoBuffer buildTitleDelta(String title) { - IoBuffer buffer = bufferPool.allocate(4 + getAsciiString(title).length, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.put(getAsciiString(title)); - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("PLAY", (byte) 3, (short) 1, (short) 0x07, buffer, size + 4); - return buffer; - - } - - public IoBuffer buildProfessionIconDelta(int professionIcon) { - IoBuffer buffer = bufferPool.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.putInt(professionIcon); - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("PLAY", (byte) 3, (short) 1, (short) 0x0A, buffer, size + 4); - return buffer; - } - - public IoBuffer buildCollectionsDelta(byte[] collections, int highestSetBit) { - IoBuffer buffer = bufferPool.allocate(8 + collections.length, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.putInt(collections.length); - buffer.putInt(highestSetBit); - for (byte collection : collections) buffer.put(collection); - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("PLAY", (byte) 3, (short) 1, (short) 16, buffer, size + 4); - return buffer; - } - - public IoBuffer buildXPListDelta(String type, int amount, boolean alreadyExists) { - PlayerObject player = (PlayerObject) object; - player.setXpListUpdateCounter(player.getXpListUpdateCounter() + 1); - - IoBuffer result = bufferPool.allocate(15 + type.length(), false).order(ByteOrder.LITTLE_ENDIAN); - - result.putInt(1); - result.putInt(player.getXpListUpdateCounter()); - result.put((byte) ((alreadyExists) ? 2 : 0)); - result.put(getAsciiString(type)); - result.putInt(amount); - - int size = result.position(); - result.flip(); - result = createDelta("PLAY", (byte) 8, (short) 1, (short) 0, result, size + 4); - return result; - } - - public IoBuffer buildProfessionWheelPositionDelta(String professionWheelPosition) { - IoBuffer buffer = bufferPool.allocate(2 + professionWheelPosition.length(), false).order(ByteOrder.LITTLE_ENDIAN); - - buffer.put(getAsciiString(professionWheelPosition)); - - int size = buffer.position(); - buffer.flip(); - - buffer = createDelta("PLAY", (byte) 8, (short) 1, (short) 8, buffer, size + 4); - return buffer; - - } - - public IoBuffer buildWaypointAddDelta(WaypointObject waypoint) { - - PlayerObject player = (PlayerObject) object; - IoBuffer buffer = bufferPool.allocate(59 + waypoint.getName().length() * 2, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - - int nextCounter = player.getWaypointListUpdateCounter() + 1; - player.setWaypointListUpdateCounter(nextCounter); - buffer.putInt(1); - buffer.putInt(player.getWaypointListUpdateCounter()); - - buffer.put((byte) 0); // updateType (SubType) - - buffer.putLong(waypoint.getObjectID()); - buffer.putInt(waypoint.getCellId()); - - buffer.putFloat(waypoint.getPosition().x); - buffer.putFloat(waypoint.getPosition().y); - buffer.putFloat(waypoint.getPosition().z); - - buffer.putLong(0); // networklocationId - buffer.putInt(waypoint.getPlanetCRC()); - - buffer.put(getUnicodeString(waypoint.getName())); - buffer.putLong(waypoint.getObjectID()); - - buffer.put((byte) waypoint.getColor()); - - if (waypoint.isActive()) { buffer.put((byte) 1); } - else { buffer.put((byte) 0); } - - int size = buffer.position(); - buffer.flip(); - - buffer = createDelta("PLAY", (byte) 8, (short) 1, (short) 1, buffer, size + 4); - //System.out.println("WaypointAdd: " + buffer.getHexDump()); - return buffer; - - } - - public IoBuffer buildWaypointRemoveDelta(WaypointObject waypoint) { - - IoBuffer buffer = bufferPool.allocate(59 + waypoint.getName().length() * 2, false).order(ByteOrder.LITTLE_ENDIAN); - PlayerObject player = (PlayerObject) object; - - int nextCounter = player.getWaypointListUpdateCounter() + 1; - player.setWaypointListUpdateCounter(nextCounter); - - buffer.putInt(1); - buffer.putInt(player.getWaypointListUpdateCounter()); - - buffer.put((byte) 1); // updateType (SubType) - - buffer.putLong(waypoint.getObjectID()); - buffer.putInt(waypoint.getCellId()); - - buffer.putFloat(waypoint.getPosition().x); - buffer.putFloat(waypoint.getPosition().y); - buffer.putFloat(waypoint.getPosition().z); - - buffer.putLong(0); // networklocationId - buffer.putInt(waypoint.getPlanetCRC()); - - buffer.put(getUnicodeString(waypoint.getName())); - buffer.putLong(waypoint.getObjectID()); - - buffer.put((byte) waypoint.getColor()); - - if (waypoint.isActive()) { buffer.put((byte) 1); } - else { buffer.put((byte) 0); } - - int size = buffer.position(); - buffer.flip(); - - buffer = createDelta("PLAY", (byte) 8, (short) 1, (short) 1, buffer, size + 4); - - return buffer; - - } - - public IoBuffer buildWaypointUpdateDelta(WaypointObject waypoint) { - - IoBuffer buffer = bufferPool.allocate(59 + waypoint.getName().length() * 2, false).order(ByteOrder.LITTLE_ENDIAN); - PlayerObject player = (PlayerObject) object; - - int nextCounter = player.getWaypointListUpdateCounter() + 1; - player.setWaypointListUpdateCounter(nextCounter); - - buffer.putInt(1); - buffer.putInt(player.getWaypointListUpdateCounter()); - - buffer.put((byte) 2); // updateType (SubType) - - buffer.putLong(waypoint.getObjectID()); - buffer.putInt(waypoint.getCellId()); - - buffer.putFloat(waypoint.getPosition().x); - buffer.putFloat(waypoint.getPosition().y); - buffer.putFloat(waypoint.getPosition().z); - - buffer.putLong(0); // networklocationId << cluster system I guess? - buffer.putInt(waypoint.getPlanetCRC()); - - buffer.put(getUnicodeString(waypoint.getName())); - buffer.putLong(waypoint.getObjectID()); - - buffer.put((byte) waypoint.getColor()); - - if (waypoint.isActive()) { buffer.put((byte) 1); } - else { buffer.put((byte) 0); } // isActive. Activates automatically when created. - - int size = buffer.position(); - buffer.flip(); - - buffer = createDelta("PLAY", (byte) 8, (short) 1, (short) 1, buffer, size + 4); - - return buffer; - - } - - public IoBuffer buildTotalPlayTimeDelta(int totalPlayTime) { - - IoBuffer buffer = bufferPool.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.putInt(totalPlayTime); - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("PLAY", (byte) 3, (short) 1, (short) 0x09, buffer, size + 4); - - return buffer; - - } - - public IoBuffer buildFriendAddDelta(List friends) { - - IoBuffer buffer = bufferPool.allocate(13 + (friends.size() * 2), false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - - PlayerObject player = (PlayerObject) object; - - buffer.putInt(1); - buffer.putInt(player.getFriendListUpdateCounter()); - - buffer.put((byte) 3); // updateType (SubType) - - buffer.putShort((short) (player.getFriendList().size())); - for (String f : friends) { - buffer.put(getAsciiString(f)); - } - - int size = buffer.position(); - buffer.flip(); - - buffer = createDelta("PLAY", (byte) 9, (short) 1, (short) 7, buffer, size + 4); - - return buffer; - - } - - public IoBuffer buildFriendRemoveDelta(List friends) { - - IoBuffer buffer = bufferPool.allocate(13 + (friends.size() * 2), false).order(ByteOrder.LITTLE_ENDIAN); - PlayerObject player = (PlayerObject) object; - - buffer.putInt(1); - buffer.putInt(player.getFriendListUpdateCounter()); - - buffer.put((byte) 3); // updateType (SubType) - - buffer.putShort((short) friends.size()); - for (String f : friends) { - buffer.put(getAsciiString(f)); - } - - int size = buffer.position(); - buffer.flip(); - - buffer = createDelta("PLAY", (byte) 9, (short) 1, (short) 7, buffer, size + 4); - - return buffer; - } - - - public IoBuffer buildIgnoreAddDelta(List ignoreList) { - IoBuffer buffer = bufferPool.allocate(13 + (ignoreList.size() * 2) , false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - PlayerObject player = (PlayerObject) object; - - buffer.putInt(1); - buffer.putInt(player.getIgnoreListUpdateCounter()); - - buffer.put((byte) 3); // updateType (SubType) - - buffer.putShort((short) ignoreList.size()); - for (String ignore : ignoreList) { - buffer.put(getAsciiString(ignore)); - } - - int size = buffer.position(); - buffer.flip(); - - buffer = createDelta("PLAY", (byte) 9, (short) 1, (short) 8, buffer, size + 4); - - return buffer; - } - - public IoBuffer buildIgnoreRemoveDelta(List ignoreList) { - IoBuffer buffer = bufferPool.allocate(13 + (ignoreList.size() * 2) , false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - PlayerObject player = (PlayerObject) object; - - buffer.putInt(1); - buffer.putInt(player.getIgnoreListUpdateCounter()); - - buffer.put((byte) 3); // updateType (SubType) - - buffer.putShort((short) ignoreList.size()); - for (String ignore : ignoreList) { - buffer.put(getAsciiString(ignore)); - } - - int size = buffer.position(); - buffer.flip(); - - buffer = createDelta("PLAY", (byte) 9, (short) 1, (short) 8, buffer, size + 4); - - return buffer; - } - - public IoBuffer buildFlagBitmask(int bitmask) { - IoBuffer buffer = bufferPool.allocate(20, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.putInt(4); - buffer.putInt(bitmask); - buffer.putInt(0); - buffer.putInt(0); - buffer.putInt(0); - - int size = buffer.position(); - buffer.flip(); - - buffer = createDelta("PLAY", (byte) 3, (short) 1, (short) 5, buffer, size + 4); - return buffer; - } - - public IoBuffer buildShowBackpackDelta(boolean showBackpack) { - IoBuffer buffer = bufferPool.allocate(1, false).order(ByteOrder.LITTLE_ENDIAN); - - buffer.put((byte) (showBackpack ? 1 : 0)); - - int size = buffer.position(); - buffer.flip(); - - buffer = createDelta("PLAY", (byte) 3, (short) 1, (short) 18, buffer, size + 4); - return buffer; - } - - public IoBuffer buildShowHelmetDelta(boolean showHelmet) { - IoBuffer buffer = bufferPool.allocate(1, false).order(ByteOrder.LITTLE_ENDIAN); - - buffer.put((byte) (showHelmet ? 1 : 0)); - - int size = buffer.position(); - buffer.flip(); - - buffer = createDelta("PLAY", (byte) 3, (short) 1, (short) 19, buffer, size + 4); - return buffer; - } - - public IoBuffer buildGodLevelDelta(byte godLevel) { - IoBuffer buffer = bufferPool.allocate(1, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.put(godLevel); - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("PLAY", (byte) 6, (short) 1, (short) 0x02, buffer, size + 4); - return buffer; - - } - @Override public void buildBaseline3(Map baselineBuilders, Map deltaBuilders) { super.buildBaseline3(baselineBuilders, deltaBuilders); @@ -679,10 +46,12 @@ public class PlayerMessageBuilder extends IntangibleMessageBuilder { super.buildBaseline6(baselineBuilders, deltaBuilders); } + @Override public void buildBaseline8(Map baselineBuilders, Map deltaBuilders) { super.buildBaseline8(baselineBuilders, deltaBuilders); } + @Override public void buildBaseline9(Map baselineBuilders, Map deltaBuilders) { super.buildBaseline9(baselineBuilders, deltaBuilders); } diff --git a/src/resources/objects/player/PlayerObject.java b/src/resources/objects/player/PlayerObject.java index 436daeef..9988a5f8 100644 --- a/src/resources/objects/player/PlayerObject.java +++ b/src/resources/objects/player/PlayerObject.java @@ -24,932 +24,977 @@ package resources.objects.player; import java.io.Serializable; import java.util.ArrayList; import java.util.BitSet; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.TreeMap; import java.util.Vector; +import org.apache.mina.core.buffer.IoBuffer; + import resources.craft.DraftSchematic; -import resources.objects.ObjectMessageBuilder; +import resources.datatables.Citizenship; +import resources.datatables.Professions; +import resources.gcw.RegionDefender; +import resources.harvest.SurveyTool; +import resources.objects.SWGList; +import resources.objects.SWGMap; +import resources.objects.SWGSet; import resources.objects.intangible.IntangibleObject; import resources.objects.resource.ResourceContainerObject; -import resources.objects.tool.SurveyTool; import resources.objects.waypoint.WaypointObject; -import resources.objects.creature.CreatureObject; import resources.quest.Quest; - -import com.sleepycat.persist.model.NotPersistent; -import com.sleepycat.persist.model.Persistent; - import engine.clients.Client; +import engine.resources.objects.Baseline; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Persistent(version=13) public class PlayerObject extends IntangibleObject implements Serializable { private static final long serialVersionUID = 1L; - // PLAY 3 - private String title; - private String profession; - private int professionIcon; - private List flagsList = new ArrayList(); - private List profileList = new ArrayList(); - private List titleList = new ArrayList(); - private long bornDate = 0; - private int totalPlayTime = 0; - private byte[] collections = new byte[] { }; - private int highestSetBit = 0; - private int flagBitmask = 0; - private boolean showHelmet = true; - private boolean showBackpack = true; - - // PLAY 6 - - private String home; // Player City Name - - // PLAY 8 - - private Map xpList = new HashMap(); - @NotPersistent - private transient int xpListUpdateCounter = 0; - - private List waypoints = new ArrayList(); - @NotPersistent - private transient int waypointListUpdateCounter = 0; - - private int currentForcePower = 0; // unused in NGE - private int maxForcePower = 0; // unused in NGE - - private List currentFSQuestList = new ArrayList(); // unused in NGE - private List completedFSQuestList = new ArrayList(); // unused in NGE - - private List questJournal = new ArrayList(); - @NotPersistent - private transient int questJournalUpdateCounter = 0; - - private String professionWheelPosition; - - // PLAY 9 - - private int experimentationFlag = 0; - private int craftingStage = 0; - private long nearestCraftingStation = 0; - - private List draftSchematicList = new ArrayList(); - @NotPersistent - private transient int draftSchematicListUpdateCounter = 0; - - private int experimentationPoints = 0; - private int accomplishmentCounter = 0; - - private List friendList = new ArrayList(); - @NotPersistent - private transient int friendListUpdateCounter = 0; - private List ignoreList = new ArrayList(); - @NotPersistent - private transient int ignoreListUpdateCounter = 0; - - private int languageId = 0; // unused in NGE - private int currentStomach = 0; // unused in NGE - private int maxStomach = 0; // unused in NGE - private int currentDrink = 0; // unused in NGE - private int maxDrink = 0; // unused in NGE - private int currentConsumable = 0; // unused - private int maxConsumable = 0; // unused - - // TODO: research new NGE vars between maxConsumable and jediState - - private int jediState = 0; // unused in NGE - - private String biography = ""; - private String spouse; - private String holoEmote; - private int holoEmoteUses; - - private int lotsRemaining = 10; - - @NotPersistent private transient PlayerMessageBuilder messageBuilder; - @NotPersistent private transient long lastPlayTimeUpdate = System.currentTimeMillis(); - private Map factionStandingMap = new TreeMap(); + private transient WaypointObject lastSurveyWaypoint; + private transient SurveyTool lastUsedSurveyTool; + private transient ResourceContainerObject recentContainer; - private WaypointObject lastSurveyWaypoint; - private SurveyTool lastUsedSurveyTool; - private ResourceContainerObject recentContainer; - - private byte godLevel = 0; - - private List chatChannels = new ArrayList(); - - @NotPersistent private transient boolean callingCompanion = false; - - private long bountyMissionId; - private Vector ownedVendors = new Vector(); - private long bindLocation; - - public PlayerObject() { - super(); - messageBuilder = new PlayerMessageBuilder(this); - } + private long bountyMissionId; // Bad because you could have 2 missions public PlayerObject(long objectID, Planet planet) { super(objectID, planet, new Point3D(0, 0, 0), new Quaternion(1, 0, 0, 0), "object/player/shared_player.iff"); - messageBuilder = new PlayerMessageBuilder(this); + } + + public PlayerObject() { + super(); } @Override public void initAfterDBLoad() { super.init(); lastPlayTimeUpdate = System.currentTimeMillis(); - messageBuilder = new PlayerMessageBuilder(this); - waypoints.forEach(WaypointObject::initAfterDBLoad); - } - - public String getTitle() { - synchronized(objectMutex) { - return title; - } - } - - public void setTitle(String title) { - synchronized(objectMutex) { - if(!getTitleList().isEmpty() && getTitleList().contains(title)) { - this.title = title; - } - - } - - if (getContainer() != null) { - getContainer().notifyObservers(messageBuilder.buildTitleDelta(title), true); - } - } - - public String getProfession() { - synchronized(objectMutex) { - return profession; - } - } - - public void setProfession(String profession) { - synchronized(objectMutex) { - this.profession = profession; - } - } - - public List getFlagsList() { - return flagsList; - } - - public List getProfileList() { - return profileList; - } - - public long getBornDate() { - synchronized(objectMutex) { - return bornDate; - } - } - - public void setBornDate(long bornDate) { - synchronized(objectMutex) { - this.bornDate = bornDate; - } - } - - public int getTotalPlayTime() { - synchronized(objectMutex) { - return totalPlayTime; - } - } - - public void setTotalPlayTime(int totalPlayTime) { - synchronized(objectMutex) { - this.totalPlayTime = totalPlayTime; - } - //notifyObservers(messageBuilder.buildTotalPlayTimeDelta(totalPlayTime), true); - getContainer().getClient().getSession().write(messageBuilder.buildTotalPlayTimeDelta(totalPlayTime)); - } - - public String getHome() { - synchronized(objectMutex) { - return home; - } - } - - public void setHome(String home) { - synchronized(objectMutex) { - this.home = home; - } - } - - public Map getXpList() { - return xpList; - } - - public int getXp(String type) { - synchronized(objectMutex) { - return ((!xpList.containsKey(type)) ? 0 : xpList.get(type)); - } - } - - // Temporary - public void setXp(String type, int amount) { - boolean xpExists; - - synchronized(objectMutex) { - xpExists = xpList.containsKey(type); - xpList.put(type, amount); - //Console.println("Put " + type + " exp of " + amount + " in the map."); - //Console.println("Map is now: " + xpList.get(type).intValue()); - } - - if (getContainer() != null && getContainer().getClient() != null && getContainer().getClient().getSession() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildXPListDelta(type, amount, xpExists)); - ((CreatureObject) getContainer()).setXpBarValue(amount); - } - - } - - public int getXpListUpdateCounter() { - synchronized(objectMutex) { - return xpListUpdateCounter; - } - } - - public void setXpListUpdateCounter(int xpListUpdateCounter) { - synchronized(objectMutex) { - this.xpListUpdateCounter = xpListUpdateCounter; - } - } - - public List getWaypoints() { - return waypoints; - } - - public int getWaypointListUpdateCounter() { - synchronized(objectMutex) { - return waypointListUpdateCounter; - } - } - - public void setWaypointListUpdateCounter(int count) { - synchronized(objectMutex){ - this.waypointListUpdateCounter = count; - } - } - - public void waypointUpdate(WaypointObject waypoint) { - synchronized(objectMutex) { - getContainer().getClient().getSession().write(messageBuilder.buildWaypointUpdateDelta(waypoint)); - } - } - - public void waypointRemove(WaypointObject waypoint) { - synchronized(objectMutex) { - getContainer().getClient().getSession().write(messageBuilder.buildWaypointRemoveDelta(waypoint)); - getWaypoints().remove(waypoint); - } - } - - public void waypointAdd(WaypointObject waypoint) { - synchronized(objectMutex) { - getContainer().getClient().getSession().write(messageBuilder.buildWaypointAddDelta(waypoint)); - getWaypoints().add(waypoint); - } - } - - public WaypointObject getWaypointFromList(WaypointObject waypoint) { - if (waypoint == null) - return null; - - synchronized(objectMutex) { - for(WaypointObject wp : waypoints) { - if(wp.getObjectID() == waypoint.getObjectID()) - return wp; - } - } - return null; - } - - public int getCurrentForcePower() { - synchronized(objectMutex) { - return currentForcePower; - } - } - - public void setCurrentForcePower(int currentForcePower) { - synchronized(objectMutex) { - this.currentForcePower = currentForcePower; - } - } - - public int getMaxForcePower() { - synchronized(objectMutex) { - return maxForcePower; - } - } - - public void setMaxForcePower(int maxForcePower) { - synchronized(objectMutex) { - this.maxForcePower = maxForcePower; - } - } - - public List getCurrentFSQuestList() { - return currentFSQuestList; - } - - public List getCompletedFSQuestList() { - return completedFSQuestList; - } - - public List getQuestJournal() { - return questJournal; - } - - public String getProfessionWheelPosition() { - synchronized(objectMutex) { - return professionWheelPosition; - } - } - - public void setProfessionWheelPosition(String professionWheelPosition) { - synchronized(objectMutex) { - this.professionWheelPosition = professionWheelPosition; - } - if (getContainer() != null && getContainer().getClient() != null && getContainer().getClient().getSession() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildProfessionWheelPositionDelta(professionWheelPosition)); - } - } - - public int getExperimentationFlag() { - synchronized(objectMutex) { - return experimentationFlag; - } - } - - public void setExperimentationFlag(int experimentationFlag) { - synchronized(objectMutex) { - this.experimentationFlag = experimentationFlag; - } - } - - public int getCraftingStage() { - synchronized(objectMutex) { - return craftingStage; - } - } - - public void setCraftingStage(int craftingStage) { - synchronized(objectMutex) { - this.craftingStage = craftingStage; - } - } - - public long getNearestCraftingStation() { - synchronized(objectMutex) { - return nearestCraftingStation; - } - } - - public void setNearestCraftingStation(long nearestCraftingStation) { - synchronized(objectMutex) { - this.nearestCraftingStation = nearestCraftingStation; - } - } - - public List getDraftSchematicList() { - return draftSchematicList; - } - - public int getExperimentationPoints() { - synchronized(objectMutex) { - return experimentationPoints; - } - } - - public void setExperimentationPoints(int experimentationPoints) { - synchronized(objectMutex) { - this.experimentationPoints = experimentationPoints; - } - } - - public int getAccomplishmentCounter() { - synchronized(objectMutex) { - return accomplishmentCounter; - } - } - - public void setAccomplishmentCounter(int accomplishmentCounter) { - synchronized(objectMutex) { - this.accomplishmentCounter = accomplishmentCounter; - } - } - - public List getFriendList() { - return friendList; - } - - public int getFriendListUpdateCounter() { - synchronized(objectMutex) { - return friendListUpdateCounter; - } - } - - public void setFriendListUpdateCounter(int friendListUpdateCounter) { - synchronized(objectMutex) { - this.friendListUpdateCounter = friendListUpdateCounter; - } - } - - public void friendAdd(String friend) { - synchronized(objectMutex) { - setFriendListUpdateCounter(getFriendListUpdateCounter() + 1); - friendList.add(friend); - getContainer().getClient().getSession().write(messageBuilder.buildFriendAddDelta(getFriendList())); - } - } - - public void friendRemove(String friend) { - synchronized(objectMutex) { - setFriendListUpdateCounter(getFriendListUpdateCounter() + 1); - friendList.remove(friend); - getContainer().getClient().getSession().write(messageBuilder.buildFriendRemoveDelta(getFriendList())); - } - } - - public List getIgnoreList() { - return ignoreList; - } - - public int getIgnoreListUpdateCounter() { - synchronized(objectMutex) { - return ignoreListUpdateCounter; - } - } - - public void ignoreAdd(String ignoreName) { - synchronized(objectMutex) { - setIgnoreListUpdateCounter(getIgnoreListUpdateCounter() + 1); - ignoreList.add(ignoreName); - getContainer().getClient().getSession().write(messageBuilder.buildIgnoreAddDelta(getIgnoreList())); - } - } - - public void ignoreRemove(String removeName) { - synchronized(objectMutex) { - setIgnoreListUpdateCounter(getIgnoreListUpdateCounter() + 1); - ignoreList.remove(removeName); - getContainer().getClient().getSession().write(messageBuilder.buildIgnoreRemoveDelta(getIgnoreList())); - } - } - - public void setIgnoreListUpdateCounter(int ignoreListUpdateCounter) { - synchronized(objectMutex) { - this.ignoreListUpdateCounter = ignoreListUpdateCounter; - } - } - - - public int getLanguageId() { - synchronized(objectMutex) { - return languageId; - } - } - - public void setLanguageId(int languageId) { - synchronized(objectMutex) { - this.languageId = languageId; - } - } - - public int getCurrentStomach() { - synchronized(objectMutex) { - return currentStomach; - } - } - - public void setCurrentStomach(int currentStomach) { - synchronized(objectMutex) { - this.currentStomach = currentStomach; - } - } - - public int getMaxStomach() { - synchronized(objectMutex) { - return maxStomach; - } - } - - public void setMaxStomach(int maxStomach) { - synchronized(objectMutex) { - this.maxStomach = maxStomach; - } - } - - public int getCurrentDrink() { - synchronized(objectMutex) { - return currentDrink; - } - } - - public void setCurrentDrink(int currentDrink) { - synchronized(objectMutex) { - this.currentDrink = currentDrink; - } - } - - public int getMaxDrink() { - synchronized(objectMutex) { - return maxDrink; - } - } - - public void setMaxDrink(int maxDrink) { - synchronized(objectMutex) { - this.maxDrink = maxDrink; - } - } - - public int getCurrentConsumable() { - synchronized(objectMutex) { - return currentConsumable; - } - } - - public void setCurrentConsumable(int currentConsumable) { - synchronized(objectMutex) { - this.currentConsumable = currentConsumable; - } - } - - public int getMaxConsumable() { - synchronized(objectMutex) { - return maxConsumable; - } - } - - public void setMaxConsumable(int maxConsumable) { - synchronized(objectMutex) { - this.maxConsumable = maxConsumable; - } - } - - public int getJediState() { - synchronized(objectMutex) { - return jediState; - } - } - - public void setJediState(int jediState) { - synchronized(objectMutex) { - this.jediState = jediState; - } - } - - public Map getFactionStandingMap() { - return factionStandingMap; - } - - public void setFactionStanding(String faction, int factionStanding) { - synchronized(objectMutex) { - factionStandingMap.put(faction, ((factionStanding < -5000) ? -5000 : ((factionStanding > 5000) ? 5000 : factionStanding))); - } - } - - public void modifyFactionStanding(String faction, int modifier) { - synchronized(objectMutex) { - int factionStanding = (((factionStandingMap.containsKey(faction)) ? factionStandingMap.get(faction) : 0) + modifier); - factionStandingMap.put(faction, ((factionStanding < -5000) ? -5000 : ((factionStanding > 5000) ? 5000 : factionStanding))); - } - } - - public int getFactionStanding(String faction) { - synchronized(objectMutex) { - return ((factionStandingMap.containsKey(faction)) ? factionStandingMap.get(faction) : 0); - } } @Override - public void sendBaselines(Client destination) { - - if(destination == null || destination.getSession() == null) - return; - destination.getSession().write(messageBuilder.buildBaseline3()); - destination.getSession().write(messageBuilder.buildBaseline6()); - if(destination.getParent().getObjectID() == getParentId()) { // only send to self - destination.getSession().write(messageBuilder.buildBaseline8()); - destination.getSession().write(messageBuilder.buildBaseline9()); - } - - - } - - public long getLastPlayTimeUpdate() { - synchronized(objectMutex) { - return lastPlayTimeUpdate; - } - } - - public void setLastPlayTimeUpdate(long lastPlayTimeUpdate) { - synchronized(objectMutex) { - this.lastPlayTimeUpdate = lastPlayTimeUpdate; - } - } - - public List getTitleList() { - return titleList; + public Baseline getOtherVariables() { + Baseline baseline = super.getOtherVariables(); + baseline.put("ownedVendors", new Vector()); + baseline.put("chatChannels", new ArrayList()); + baseline.put("factionStandingMap", new TreeMap()); + baseline.put("biography", ""); + baseline.put("titleList", new ArrayList()); + baseline.put("spouse", ""); + baseline.put("bindLocation", (long) 0); + baseline.put("lotsRemaining", 10); + baseline.put("holoEmote", ""); + baseline.put("holoEmoteUses", 0); + return baseline; } - public void setTitleList(List titleList) { - this.titleList = titleList; + @Override + public Baseline getBaseline3() { + Baseline baseline = super.getBaseline3(); + List flagsList = new ArrayList(); + flagsList.add(0); + flagsList.add(0); + flagsList.add(0); + flagsList.add(0); + baseline.put("flagsList", flagsList); + List profileFlagsList = new ArrayList(); + profileFlagsList.add(0); + profileFlagsList.add(0); + profileFlagsList.add(0); + profileFlagsList.add(0); + baseline.put("profileFlagsList", profileFlagsList); + baseline.put("title", ""); + baseline.put("bornDate", (int) (System.currentTimeMillis() / 1000L)); //Integer.parseInt(new SimpleDateFormat("yyyymmdd", Locale.ENGLISH).format(Calendar.getInstance().getTime()))); + baseline.put("totalPlayTime", 0); + baseline.put("professionIcon", 0); + baseline.put("profession", "trader_1a"); + baseline.put("gcwPoints", 0); + baseline.put("pvpKills", 0); + baseline.put("lifetimeGcwPoints", (long) 0); + baseline.put("lifetimePvpKills", 0); + baseline.put("collections", new BitSet()); + baseline.put("17", new SWGList(this, 3, 17, false)); // Misc ints (2 ints in tutorial, 5 bytes other times...) + baseline.put("showHelmet", true); + baseline.put("showBackpack", true); + return baseline; } - public void setCollections(byte[] collections) { - synchronized(objectMutex) { - this.collections = collections; - this.highestSetBit = BitSet.valueOf(collections).length(); - } - - notifyObservers(messageBuilder.buildCollectionsDelta(collections, getHighestSetBit()), true); + @Override + public Baseline getBaseline6() { + Baseline baseline = super.getBaseline6(); + baseline.put("godLevel", (byte) 0); + baseline.put("currentRank", 0); + baseline.put("rankProgress", (float) 0); + baseline.put("highestRebelRank", 0); + baseline.put("highestImperialRank", 0); + baseline.put("nextUpdateTime", 0); + baseline.put("home", ""); + baseline.put("citizenship", Citizenship.Homeless); + baseline.put("cityRegionDefender", new RegionDefender()); + baseline.put("guildRegionDefender", new RegionDefender()); + baseline.put("12", 0); // General? + baseline.put("13", 0); // Guild Rank Title? + baseline.put("14", 0); // Citizen Rank Title? + baseline.put("15", 0); // All random guesses, always seem to be 0 + baseline.put("16", 0); + return baseline; } - public byte[] getCollections() { - synchronized(objectMutex) { - return collections; - } + @Override + public Baseline getBaseline8() { + Baseline baseline = super.getBaseline8(); + baseline.put("xpList", new SWGMap(this, 8, 0, true)); + baseline.put("waypoints", new SWGMap(this, 8, 1, true)); + baseline.put("currentForcePower", 100); + baseline.put("maxForcePower", 100); + baseline.put("currentFSQuestList", new SWGList(this, 8, 4, false)); + baseline.put("completedFSQuestList", new SWGList(this, 8, 5, false)); + baseline.put("questJournal", new SWGList(this, 8, 6, false)); + baseline.put("7", 0); + baseline.put("professionWheelPosition", ""); + return baseline; } - public int getHighestSetBit() { - synchronized(objectMutex) { - return highestSetBit; - } + @Override + public Baseline getBaseline9() { + Baseline baseline = super.getBaseline9(); + baseline.put("experimentationFlag", 0); + baseline.put("craftingStage", 0); + baseline.put("nearestCraftingStation", (long) 0); + baseline.put("draftSchematicList", new SWGList(this, 9, 3, true)); + baseline.put("4", new SWGList(this, 9, 4, false)); // Might or might not be a list, but at the very least it's two 0 ints that are part of the same delta. + baseline.put("experimentationPoints", 0); + baseline.put("accomplishmentCounter", 0); + baseline.put("friendList", new SWGList(this, 9, 7, false)); + baseline.put("ignoreList", new SWGList(this, 9, 8, false)); + baseline.put("languageId", 0); + baseline.put("currentStomach", 0); + baseline.put("maxStomach", 100); + baseline.put("currentDrink", 0); + baseline.put("maxDrink", 100); + baseline.put("currentConsumable", 0); + baseline.put("maxConsumable", 100); + baseline.put("waypointList", new SWGMap(this, 9, 16, false)); + baseline.put("defendersList", new SWGSet(this, 9, 17, false)); + baseline.put("kills", 0); + baseline.put("19", 0); + baseline.put("pet", (long) 0); + baseline.put("petAbilities", new SWGSet(this, 9, 15, false)); + baseline.put("22", (long) 0); // Unknown type currently + baseline.put("23", (byte) 0); // Seen as 1 or 2 sometimes // Gets set to 0x02 sometimes + baseline.put("24", 0); // Seen as 4 + baseline.put("25", (long) 0); // Bitmask starts with 0x20 ends with 0x40 + baseline.put("26", (long) 0); // Changed from 6 bytes to 9 + baseline.put("27", (byte) 0); // Changed from 6 bytes to 9 + baseline.put("28", (long) 0); // Seen as 856 + baseline.put("29", (long) 0); // Seen as 8559 + baseline.put("residenceTime", 0); // Assumption. Date format of some sort. Seen as Saturday 28th May 2011 + return baseline; } - public int getProfessionIcon() { - synchronized(objectMutex) { - return professionIcon; - } + @SuppressWarnings("unchecked") + public List getFlagsList() { + return (List) getBaseline(3).get("flagsList"); } - public void setProfessionIcon(int professionIcon) { - synchronized(objectMutex) { - this.professionIcon = professionIcon; - } - - if (getContainer() != null) { - getContainer().notifyObservers(messageBuilder.buildProfessionIconDelta(professionIcon), true); - } + public void setFlagsList(int flag1, int flag2, int flag3, int flag4) { + List flagsList = getFlagsList(); + flagsList.set(0, flag1); + flagsList.set(1, flag2); + flagsList.set(2, flag3); + flagsList.set(3, flag4); + notifyClients(getBaseline(3).set("flagsList", flagsList), true); } - public String getBiography() { - return biography; - } - - public void setBiography(String biography) { - synchronized(objectMutex) { - this.biography = biography; - } - } - - public String getSpouseName() { - synchronized(objectMutex) { - return spouse; - } - } - - public void setSpouseName(String spouse) { - synchronized(objectMutex) { - this.spouse = spouse; - } - } - public int getFlagBitmask() { - synchronized(objectMutex) { - return flagBitmask; - } + return getFlagsList().get(0); } - + public void setFlagBitmask(int flagBitmask) { - synchronized(objectMutex) { - this.flagBitmask |= flagBitmask; - } - - if (getContainer() != null) { - getContainer().notifyObservers(messageBuilder.buildFlagBitmask(this.flagBitmask), true); - } + getFlagsList().set(0, getFlagsList().get(0) | flagBitmask); + notifyClients(getBaseline(3).set("flagsList", getFlagsList()), true); } + public void clearFlagBitmask(int flagBitmask) { - synchronized(objectMutex) { - // set flag bitmask to 0 - this.flagBitmask &= ~flagBitmask; - } - - if (getContainer() != null) { - getContainer().notifyObservers(messageBuilder.buildFlagBitmask(this.flagBitmask), true); - } + getFlagsList().set(0, (getFlagsList().get(0) & ~flagBitmask)); + notifyClients(getBaseline(3).set("flagsList", getFlagsList()), true); + } + + public boolean isSet(int flags) { + return ((getFlagsList().get(0) & flags) == flags); } public void toggleFlag(int flag) { - if ((this.flagBitmask & flag) == flag) { + if ((getFlagsList().get(0) & flag) == flag) { clearFlagBitmask(flag); } else { setFlagBitmask(flag); } } - /* - * @return True if specified flag(s) are enabled - */ - public boolean isSet(int flags) { - synchronized(objectMutex) { - return ((flagBitmask & flags) == flags); + @SuppressWarnings("unchecked") + public List getProfileFlagsList() { + return (List) getBaseline(3).get("profileFlagsList"); + } + + @Deprecated + public List getProfileList() { + return getProfileFlagsList(); + } + + public void setProfileFlagsList(int flag1, int flag2, int flag3, int flag4) { + List profileFlagsList = getProfileFlagsList(); + profileFlagsList.set(0, flag1); + profileFlagsList.set(1, flag2); + profileFlagsList.set(2, flag3); + profileFlagsList.set(3, flag4); + notifyClients(getBaseline(3).set("profileFlagsList", profileFlagsList), true); + } + + public String getBiography() { + return (String) otherVariables.get("biography"); + } + + public void setBiography(String biography) { + otherVariables.set("biography", biography); + } + + public String getTitle() { + return (String) getBaseline(3).get("title"); + } + + public void setTitle(String title) { + if (!getTitleList().isEmpty() && getTitleList().contains(title)) { + notifyClients(getBaseline(3).set("title", title), true); } } - - public String getHoloEmote() { - return holoEmote; + + @SuppressWarnings("unchecked") + public List getTitleList() { + return (List) otherVariables.get("titleList"); } - - public void setHoloEmote(String holoEmote) { - this.holoEmote = holoEmote; + + public void setTitleList(List titleList) { + otherVariables.set("titleList", titleList); } - - public int getHoloEmoteUses() { - return holoEmoteUses; + + public int getBornDate() { + return (int) getBaseline(3).get("bornDate"); } - - public void setHoloEmoteUses(int holoEmoteUses) { - this.holoEmoteUses = holoEmoteUses; + + public void setBornDate(int bornDate) { + getBaseline(3).set("bornDate", bornDate); } - - public boolean isShowHelmet() { - return showHelmet; + + public long getLastPlayTimeUpdate() { + synchronized(objectMutex) { + return lastPlayTimeUpdate; + } } - + + public void setLastPlayTimeUpdate(long lastPlayTimeUpdate) { + synchronized(objectMutex) { + this.lastPlayTimeUpdate = lastPlayTimeUpdate; + } + } + + public int getTotalPlayTime() { + return (int) getBaseline(3).get("totalPlayTime"); + } + + public void setTotalPlayTime(int totalPlayTime) { + if (getContainer() != null && getContainer().getClient() != null) { + getContainer().getClient().getSession().write(getBaseline(3).set("totalPlayTime", totalPlayTime)); + } + } + + public int getProfessionIcon() { + return (int) getBaseline(3).get("professionIcon"); + } + + public void setProfessionIcon(int professionIcon) { + notifyClients(getBaseline(3).set("professionIcon", professionIcon), true); + } + + public String getProfession() { + return (String) getBaseline(3).get("profession"); + } + + public void setProfession(String profession) { + notifyClients(getBaseline(3).set("profession", profession), true); + setProfessionIcon(Professions.get(profession)); + } + + public int getGcwPoints() { + return (int) getBaseline(3).get("gcwPoints"); + } + + public void setGcwPoints(int gcwPoints) { + notifyClients(getBaseline(3).set("gcwPoints", gcwPoints), true); + } + + public void resetGcwPoints() { + notifyClients(getBaseline(3).set("gcwPoints", 0), true); + } + + public int getPvpKills() { + return (int) getBaseline(3).get("pvpKills"); + } + + public void addPvpKill() { + IoBuffer buffer; + + synchronized(objectMutex) { + buffer = getBaseline(3).set("pvpKills", (((int) getBaseline(3).get("pvpKills")) + 1)); + } + + notifyClients(buffer, true); + } + + public void resetPvpKills() { + notifyClients(getBaseline(3).set("pvpKills", 0), true); + } + + public long getLifetimeGcwPoints() { + return (long) getBaseline(3).get("lifetimeGcwPoints"); + } + + public void addLifetimeGcwPoints(long gcwPoints) { + IoBuffer buffer; + + synchronized(objectMutex) { + buffer = getBaseline(3).set("lifetimeGcwPoints", (((long) getBaseline(3).get("lifetimeGcwPoints")) + gcwPoints)); + } + + notifyClients(buffer, true); + } + + public int getLifetimePvpKills() { + return (int) getBaseline(3).get("lifetimePvpKills"); + } + + public void addLifetimePvpKills(int pvpKills) { + IoBuffer buffer; + + synchronized(objectMutex) { + buffer = getBaseline(3).set("lifetimePvpKills", (((int) getBaseline(3).get("lifetimePvpKills")) + pvpKills)); + } + + notifyClients(buffer, true); + } + + public byte[] getCollections() { + return ((BitSet) getBaseline(3).get("collections")).toByteArray(); + } + + public void setCollections(byte[] collections) { + getBaseline(3).set("collections", BitSet.valueOf(collections)); + } + + public int getHighestSetBit() { + return ((BitSet) getBaseline(3).get("collections")).length(); + } + + public boolean isShowingHelmet() { + return (boolean) getBaseline(3).get("showHelmet"); + } + public void setShowHelmet(boolean showHelmet) { - synchronized(objectMutex) { - this.showHelmet = showHelmet; - } - - if (getContainer() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildShowHelmetDelta(showHelmet)); - } + notifyClients(getBaseline(3).set("showHelmet", showHelmet), true); } - - public boolean isShowBackpack() { - return showBackpack; + + public boolean isShowingBackpack() { + return (boolean) getBaseline(3).get("showBackpack"); } - + public void setShowBackpack(boolean showBackpack) { + notifyClients(getBaseline(3).set("showBackpack", showBackpack), true); + } + + public byte getGodLevel() { + return (byte) getBaseline(6).get("godLevel"); + } + + public void setGodLevel(int godLevel) { + notifyClients(getBaseline(6).set("godLevel", (byte) godLevel), true); + } + + public int getCurrentRank() { synchronized(objectMutex) { - this.showBackpack = showBackpack; + return (int) getBaseline(6).get("currentRank"); + } + } + + public void setCurrentRank(int currentRank) { + notifyClients(getBaseline(6).set("currentRank", currentRank), true); + } + + public float getRankProgress() { + return (float) getBaseline(6).get("rankProgress"); + } + + public void setRankProgress(float rankProgress) { + notifyClients(getBaseline(6).set("rankProgress", rankProgress), true); + } + + public int getHighestRebelRank() { + return (int) getBaseline(6).get("highestRebelRank"); + } + + public void setHighestRebelRank(int highestRebelRank) { + notifyClients(getBaseline(6).set("highestRebelRank", highestRebelRank), true); + } + + public int getHighestImperialRank() { + return (int) getBaseline(6).get("highestImperialRank"); + } + + public void setHighestImperialRank(int highestImperialRank) { + notifyClients(getBaseline(6).set("highestImperialRank", highestImperialRank), true); + } + + public int getNextUpdateTime() { + return (int) getBaseline(6).get("nextUpdateTime"); + } + + public void setNextUpdateTime(int nextUpdateTime) { + notifyClients(getBaseline(6).set("nextUpdateTime", nextUpdateTime), true); + } + + public String getHome() { + return (String) getBaseline(6).get("home"); + } + + public void setHome(String home) { + notifyClients(getBaseline(6).set("home", home), true); + } + + public byte getCitizenship() { + return (byte) getBaseline(6).get("citizenship"); + } + + public void setCitizenship(byte citizenship) { + notifyClients(getBaseline(6).set("citizenship", citizenship), true); + } + + public RegionDefender getCityRegionDefender() { + return (RegionDefender) getBaseline(6).get("cityRegionDefender"); + } + + public void setCityRegionDefender(RegionDefender cityRegionDefender) { + notifyClients(getBaseline(6).set("cityRegionDefender", cityRegionDefender), true); + } + + public RegionDefender getGuildRegionDefender() { + return (RegionDefender) getBaseline(6).get("guildRegionDefender"); + } + + public void setGuildRegionDefender(RegionDefender guildRegionDefender) { + notifyClients(getBaseline(6).set("guildRegionDefender", guildRegionDefender), true); + } + + @SuppressWarnings("unchecked") + public SWGMap getXpList() { + return (SWGMap) getBaseline(8).get("xpList"); + } + + public int getXp(String type) { + return ((!getXpList().containsKey(type)) ? 0 : getXpList().get(type)); + } + + public void setXp(String type, int amount) { + getXpList().put(type, amount); + } + + @SuppressWarnings("unchecked") + public SWGMap getWaypoints() { + return (SWGMap) getBaseline(8).get("waypoints"); + } + + public void waypointUpdate(WaypointObject waypoint) { + getWaypoints().put(waypoint.getObjectID(), waypoint); + } + + public void waypointRemove(WaypointObject waypoint) { + getWaypoints().remove(waypoint.getObjectID()); + } + + public void waypointAdd(WaypointObject waypoint) { + getWaypoints().put(waypoint.getObjectID(), waypoint); + } + + public WaypointObject getWaypointFromList(WaypointObject waypoint) { + synchronized(objectMutex) { + if (getWaypoints().containsKey(waypoint.getObjectID())) { + return getWaypoints().get(waypoint.getObjectID()); + } } - if (getContainer() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildShowBackpackDelta(showBackpack)); + return null; + } + + public int getCurrentForcePower() { + return (int) getBaseline(8).get("currentForcePower"); + } + + public void setCurrentForcePower(int currentForcePower) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(8).set("currentForcePower", currentForcePower)); } } + public int getMaxForcePower() { + return (int) getBaseline(8).get("maxForcePower"); + } + + public void setMaxForcePower(int maxForcePower) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(8).set("maxForcePower", maxForcePower)); + } + } + + @SuppressWarnings("unchecked") + public SWGList getCurrentFSQuestList() { + return (SWGList) getBaseline(8).get("currentFSQuestList"); + } + + @SuppressWarnings("unchecked") + public SWGList getCompletedFSQuestList() { + return (SWGList) getBaseline(8).get("completedFSQuestList"); + } + + @SuppressWarnings("unchecked") + public SWGList getQuestJournal() { + return (SWGList) getBaseline(8).get("questJournal"); + } + + public String getProfessionWheelPosition() { + return (String) getBaseline(8).get("professionWheelPosition"); + } + + public void setProfessionWheelPosition(String professionWheelPosition) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(8).set("professionWheelPosition", professionWheelPosition)); + } + } + + public int getExperimentationFlag() { + return (int) getBaseline(9).get("experimentationFlag"); + } + + public void setExperimentationFlag(int experimentationFlag) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(9).set("experimentationFlag", experimentationFlag)); + } + } + + public int getCraftingStage() { + return (int) getBaseline(9).get("craftingStage"); + } + + public void setCraftingStage(int craftingStage) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(9).set("craftingStage", craftingStage)); + } + } + + public long getNearestCraftingStation() { + return (long) getBaseline(9).get("nearestCraftingStation"); + } + + public void setNearestCraftingStation(long nearestCraftingStation) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(9).set("nearestCraftingStation", nearestCraftingStation)); + } + } + + @SuppressWarnings("unchecked") + public SWGList getDraftSchematicList() { + return (SWGList) getBaseline(9).get("draftSchematicList"); + } + + public int getExperimentationPoints() { + return (int) getBaseline(9).get("experimentationPoints"); + } + + public void setExperimentationPoints(int experimentationPoints) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(9).set("experimentationPoints", experimentationPoints)); + } + } + + public int getAccomplishmentCounter() { + return (int) getBaseline(9).get("accomplishmentCounter"); + } + + public void setAccomplishmentCounter(int accomplishmentCounter) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(9).set("accomplishmentCounter", accomplishmentCounter)); + } + } + + @SuppressWarnings("unchecked") + public SWGList getFriendList() { + return (SWGList) getBaseline(9).get("friendList"); + } + + public void friendAdd(String friend) { + getFriendList().add(friend); + } + + public void friendRemove(String friend) { + getFriendList().remove(friend); + } + + @SuppressWarnings("unchecked") + public SWGList getIgnoreList() { + return (SWGList) getBaseline(9).get("ignoreList"); + } + + public void ignoreAdd(String name) { + getIgnoreList().add(name); + } + + public void ignoreRemove(String name) { + getIgnoreList().remove(name); + } + + public int getLanguageId() { + return (int) getBaseline(9).get("languageId"); + } + + public void setLanguageId(int languageId) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(9).set("languageId", languageId)); + } + } + + public int getCurrentStomach() { + return (int) getBaseline(9).get("currentStomach"); + } + + public void setCurrentStomach(int currentStomach) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(9).set("currentStomach", currentStomach)); + } + } + + public int getMaxStomach() { + return (int) getBaseline(9).get("maxStomach"); + } + + public void setMaxStomach(int maxStomach) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(9).set("maxStomach", maxStomach)); + } + } + + public int getCurrentDrink() { + return (int) getBaseline(9).get("currentDrink"); + } + + public void setCurrentDrink(int currentDrink) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(9).set("currentDrink", currentDrink)); + } + } + + public int getMaxDrink() { + return (int) getBaseline(9).get("maxDrink"); + } + + public void setMaxDrink(int maxDrink) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(9).set("maxDrink", maxDrink)); + } + } + + public int getCurrentConsumable() { + return (int) getBaseline(9).get("currentConsumable"); + } + + public void setCurrentConsumable(int currentConsumable) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(9).set("currentConsumable", currentConsumable)); + } + } + + public int getMaxConsumable() { + return (int) getBaseline(9).get("maxConsumable"); + } + + public void setMaxConsumable(int maxConsumable) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(9).set("maxConsumable", maxConsumable)); + } + } + + @SuppressWarnings("unchecked") + public SWGSet getDefendersList() { + return (SWGSet) getBaseline(8).get("defendersList"); + } + + public int getKills() { + return (int) getBaseline(9).get("kills"); + } + + public void setKills(int kills) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(9).set("kills", kills)); + } + } + + public void addKills(int kills) { + setKills(getKills() + kills); + } + + public long getPet() { + return (long) getBaseline(9).get("pet"); + } + + public void setPet(long pet) { + if (getClient() != null) { + getClient().getSession().write(getBaseline(9).set("pet", pet)); + } + } + + @SuppressWarnings("unchecked") + public SWGSet getPetAbilities() { + return (SWGSet) getBaseline(8).get("petAbilities"); + } + + public int getJediState() { + return 0; + } + + public void setJediState(int jediState) { + + } + + @SuppressWarnings("unchecked") + public Map getFactionStandingMap() { + return (Map) otherVariables.get("factionStandingMap"); + } + + public int getFactionStanding(String faction) { + synchronized(objectMutex) { + return ((getFactionStandingMap().containsKey(faction)) ? getFactionStandingMap().get(faction) : 0); + } + } + + public void setFactionStanding(String faction, int factionStanding) { + synchronized(objectMutex) { + getFactionStandingMap().put(faction, ((factionStanding < -5000) ? -5000 : ((factionStanding > 5000) ? 5000 : factionStanding))); + } + } + + public void modifyFactionStanding(String faction, int modifier) { + synchronized(objectMutex) { + int factionStanding = (((getFactionStandingMap().containsKey(faction)) ? getFactionStandingMap().get(faction) : 0) + modifier); + getFactionStandingMap().put(faction, ((factionStanding < -5000) ? -5000 : ((factionStanding > 5000) ? 5000 : factionStanding))); + } + } + + public String getSpouseName() { + return (String) otherVariables.get("spouse"); + } + + public void setSpouseName(String spouse) { + otherVariables.set("spouse", spouse); + } + + public long getBindLocation() { + return (long) otherVariables.get("bindLocation"); + } + + public void setBindLocation(long bindLocation) { + otherVariables.set("bindLocation", bindLocation); + } + + public int getLotsRemaining() { + return (int) otherVariables.get("lotsRemaining"); + } + + public void setLotsRemaining(int lotsRemaining) { + otherVariables.set("lotsRemaining", lotsRemaining); + } + + public boolean addLots(int lots) { + otherVariables.set("lotsRemaining", getLotsRemaining() + lots); + return true; + } + + public boolean deductLots(int lots) { + if (getLotsRemaining() - lots >= 0) { + setLotsRemaining(getLotsRemaining() - lots); + return true; + } + + return false; + } + + public String getHoloEmote() { + return (String) otherVariables.get("holoEmote"); + } + + public void setHoloEmote(String holoEmote) { + otherVariables.set("holoEmote", holoEmote); + } + + public int getHoloEmoteUses() { + return (int) otherVariables.get("holoEmoteUses"); + } + + public void setHoloEmoteUses(int holoEmoteUses) { + otherVariables.set("holoEmoteUses", holoEmoteUses); + } + public WaypointObject getLastSurveyWaypoint() { return lastSurveyWaypoint; } - + public void setLastSurveyWaypoint(WaypointObject lastSurveyWaypoint) { this.lastSurveyWaypoint = lastSurveyWaypoint; } public SurveyTool getLastUsedSurveyTool() { synchronized(objectMutex) { - return this.lastUsedSurveyTool; + return lastUsedSurveyTool; } } - public void setLastUsedSurveyTool(SurveyTool surveyTool) { + public void setLastUsedSurveyTool(SurveyTool lastUsedSurveyTool) { synchronized(objectMutex) { - this.lastUsedSurveyTool = surveyTool; + this.lastUsedSurveyTool = lastUsedSurveyTool; } } - + public ResourceContainerObject getRecentContainer() { - return recentContainer; + synchronized(objectMutex) { + return recentContainer; + } } - + public void setRecentContainer(ResourceContainerObject recentContainer) { - this.recentContainer = recentContainer; - } - - public void setLotsRemaining(int amount) - { - this.lotsRemaining = amount; - } - - public boolean addLots(int amount) - { - this.lotsRemaining += amount; - return true; - } - - public boolean deductLots(int amount) - { - if(this.lotsRemaining - amount >= 0) - { - this.lotsRemaining -= amount; - return true; - } - return false; - } - - public int getLotsRemaining() - { - return this.lotsRemaining; - } - - public byte getGodLevel() { - return godLevel; - } - - public void setGodLevel(int godLevel) { - this.godLevel = (byte) godLevel; - - if (getContainer() != null) { - getContainer().getClient().getSession().write(messageBuilder.buildGodLevelDelta((byte) godLevel)); + synchronized(objectMutex) { + this.recentContainer = recentContainer; } } + @SuppressWarnings("unchecked") public List getJoinedChatChannels() { - return chatChannels; + return (List) otherVariables.get("chatChannels"); } public void addChannel(int roomId) { - chatChannels.add(roomId); + getJoinedChatChannels().add(roomId); } public void removeChannel(int roomId) { - if (chatChannels.contains(roomId)) - chatChannels.remove(roomId); + if (getJoinedChatChannels().contains(roomId)) { + getJoinedChatChannels().remove(roomId); + } } public boolean isMemberOfChannel(int roomId) { - if (chatChannels.contains(roomId)) { + if (getJoinedChatChannels().contains(roomId)) { return true; } + return false; } public boolean isCallingCompanion() { - return callingCompanion; + synchronized(objectMutex) { + return callingCompanion; + } } public void setCallingCompanion(boolean callingCompanion) { - this.callingCompanion = callingCompanion; + synchronized(objectMutex) { + this.callingCompanion = callingCompanion; + } } public long getBountyMissionId() { - return bountyMissionId; + synchronized(objectMutex) { + return bountyMissionId; + } } - + public void setBountyMissionId(long bountyMissionId) { - this.bountyMissionId = bountyMissionId; + synchronized(objectMutex) { + this.bountyMissionId = bountyMissionId; + } } - - public ObjectMessageBuilder getMessageBuilder() { - return messageBuilder; - } - + + @SuppressWarnings("unchecked") public Vector getOwnedVendors() { - return ownedVendors; + return (Vector) otherVariables.get("ownedVendors"); } - + public void addVendor(long vendorId) { - ownedVendors.add(vendorId); + getOwnedVendors().add(vendorId); } public void removeVendor(long vendorId) { - ownedVendors.remove(vendorId); + getOwnedVendors().remove(vendorId); } public int getAmountOfVendors() { - return ownedVendors.size(); + return getOwnedVendors().size(); } - - public long getBindLocation() { - synchronized(objectMutex) { - return bindLocation; + + @Override + public void notifyClients(IoBuffer buffer, boolean notifySelf) { + if (getContainer() != null) { + getContainer().notifyObservers(buffer, notifySelf); } } - - public void setBindLocation(long bindLocation) { + + @Override + public PlayerMessageBuilder getMessageBuilder() { synchronized(objectMutex) { - this.bindLocation = bindLocation; + if (messageBuilder == null) { + messageBuilder = new PlayerMessageBuilder(this); + } + + return messageBuilder; + } + } + + @Override + public void sendBaselines(Client destination) { + if (destination != null && destination.getSession() != null) { + destination.getSession().write(getBaseline(3).getBaseline()); + destination.getSession().write(getBaseline(6).getBaseline()); + if (destination.getParent().getObjectID() == getContainer().getObjectID()) { + destination.getSession().write(getBaseline(8).getBaseline()); + destination.getSession().write(getBaseline(9).getBaseline()); + } + } + } + + @Override + public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) { + switch (viewType) { + case 3: + case 6: + if (getContainer() != null) { + getContainer().notifyObservers(getBaseline(viewType).createDelta(updateType, buffer.array()), true); + } + + break; + default: + if (getContainer() != null && getContainer().getClient() != null) { + getContainer().getClient().getSession().write(getBaseline(viewType).createDelta(updateType, buffer.array())); + } } } diff --git a/src/resources/objects/resource/GalacticResource.java b/src/resources/objects/resource/GalacticResource.java index e8141781..eff19d01 100644 --- a/src/resources/objects/resource/GalacticResource.java +++ b/src/resources/objects/resource/GalacticResource.java @@ -231,7 +231,7 @@ public class GalacticResource extends SWGObject implements Serializable { public void generateResourceStats(){ // Generate the stats randomly, considering the caps for (int k=0;k0) randomStatValue = (short) (resourceRoot.getResourceMinCaps()[k] + new Random().nextInt(resourceRoot.getResourceMaxCaps()[k]-resourceRoot.getResourceMinCaps()[k])); diff --git a/src/resources/objects/resource/ResourceContainerObject.java b/src/resources/objects/resource/ResourceContainerObject.java index 66ac4a80..aef9ce0e 100644 --- a/src/resources/objects/resource/ResourceContainerObject.java +++ b/src/resources/objects/resource/ResourceContainerObject.java @@ -144,8 +144,8 @@ public class ResourceContainerObject extends TangibleObject implements Serializa } - public ResourceContainerObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){ - super(objectID, planet, template, position, orientation); + public ResourceContainerObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String template){ + super(objectID, planet, position, orientation, template); messageBuilder = new ResourceContainerMessageBuilder(this); this.setAttachment("radial_filename", "resourceContainer"); } diff --git a/src/resources/objects/ship/ShipObject.java b/src/resources/objects/ship/ShipObject.java index 67d27246..faeac78c 100644 --- a/src/resources/objects/ship/ShipObject.java +++ b/src/resources/objects/ship/ShipObject.java @@ -23,15 +23,13 @@ package resources.objects.ship; import java.io.Serializable; -import com.sleepycat.persist.model.Persistent; - import resources.objects.ObjectMessageBuilder; import resources.objects.tangible.TangibleObject; -@Persistent(version=0) public class ShipObject extends TangibleObject implements Serializable { private static final long serialVersionUID = 1L; + private transient ObjectMessageBuilder messageBuilder = null; @Override diff --git a/src/resources/objects/staticobject/StaticMessageBuilder.java b/src/resources/objects/staticobject/StaticMessageBuilder.java index ffcfe443..c412a78d 100644 --- a/src/resources/objects/staticobject/StaticMessageBuilder.java +++ b/src/resources/objects/staticobject/StaticMessageBuilder.java @@ -21,11 +21,8 @@ ******************************************************************************/ package resources.objects.staticobject; -import java.nio.ByteOrder; import java.util.Map; -import org.apache.mina.core.buffer.IoBuffer; - import resources.objects.ObjectMessageBuilder; import engine.resources.objects.Builder; @@ -39,52 +36,6 @@ public class StaticMessageBuilder extends ObjectMessageBuilder { super(); } - public IoBuffer buildBaseline3() { - - IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - - buffer.putShort((short) 4); - buffer.putInt(0); - //buffer.putShort((short) 0); - - buffer.put(getAsciiString(object.getStfFilename())); - buffer.putInt(0); - //buffer.putShort((short) 0); - buffer.put(getAsciiString(object.getStfName())); - buffer.putInt(0); - buffer.putInt(0xFF); - - int size = buffer.position(); - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - - buffer.flip(); - buffer = createBaseline("STAO", (byte) 3, buffer, size); - - return buffer; - } - - public IoBuffer buildBaseline6() { - - IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - buffer.putShort((short) 2); - buffer.putInt(0x43); - //buffer.putShort((short) 0); - buffer.put(getAsciiString(object.getDetailFilename())); - buffer.putInt(0); - buffer.put(getAsciiString(object.getDetailName())); - // buffer.putShort((short) 0); - - int size = buffer.position(); - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - - buffer.flip(); - buffer = createBaseline("STAO", (byte) 6, buffer, size); - - return buffer; - } - @Override public void buildBaseline3(Map baselineBuilders, Map deltaBuilders) { super.buildBaseline3(baselineBuilders, deltaBuilders); diff --git a/src/resources/objects/staticobject/StaticObject.java b/src/resources/objects/staticobject/StaticObject.java index d116f7cb..1131aafd 100644 --- a/src/resources/objects/staticobject/StaticObject.java +++ b/src/resources/objects/staticobject/StaticObject.java @@ -25,57 +25,79 @@ import java.io.Serializable; import org.apache.mina.core.buffer.IoBuffer; -import resources.objects.ObjectMessageBuilder; - -import com.sleepycat.persist.model.NotPersistent; -import com.sleepycat.persist.model.Persistent; - import engine.clients.Client; +import engine.resources.objects.Baseline; import engine.resources.objects.SWGObject; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Persistent(version=0) public class StaticObject extends SWGObject implements Serializable { private static final long serialVersionUID = 1L; - @NotPersistent + private transient StaticMessageBuilder messageBuilder; - - public StaticObject() { - super(); - messageBuilder = new StaticMessageBuilder(this); - } - + public StaticObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { super(objectID, planet, position, orientation, Template); - messageBuilder = new StaticMessageBuilder(this); } - - @Override - public void sendBaselines(Client destination) { - - - if(destination == null || destination.getSession() == null) { - System.out.println("NULL destination"); - return; - } - - //destination.getSession().write(messageBuilder.buildBaseline3()); - //destination.getSession().write(messageBuilder.buildBaseline6()); - - + + public StaticObject() { + super(); } @Override public void initAfterDBLoad() { super.init(); - messageBuilder = new StaticMessageBuilder(this); } - public ObjectMessageBuilder getMessageBuilder() { - return messageBuilder; + @Override + public Baseline getOtherVariables() { + Baseline baseline = super.getOtherVariables(); + return baseline; + } + + @Override + public Baseline getBaseline3() { + Baseline baseline = super.getBaseline3(); + return baseline; + } + + @Override + public Baseline getBaseline6() { + Baseline baseline = super.getBaseline6(); + return baseline; + } + + @Override + public void notifyClients(IoBuffer buffer, boolean notifySelf) { + notifyObservers(buffer, false); + } + + @Override + public StaticMessageBuilder getMessageBuilder() { + synchronized(objectMutex) { + if (messageBuilder == null) { + messageBuilder = new StaticMessageBuilder(this); + } + + return messageBuilder; + } + } + + @Override + public void sendBaselines(Client destination) { + if (destination != null && destination.getSession() != null) { + destination.getSession().write(getBaseline(3).getBaseline()); + destination.getSession().write(getBaseline(6).getBaseline()); + + Client parent = ((getGrandparent() == null) ? null : getGrandparent().getClient()); + + if (parent != null && destination == parent) { + destination.getSession().write(getBaseline(8).getBaseline()); + destination.getSession().write(getBaseline(9).getBaseline()); + } + } } @Override diff --git a/src/resources/objects/tangible/TangibleMessageBuilder.java b/src/resources/objects/tangible/TangibleMessageBuilder.java index befaeddf..b6f4e4b8 100644 --- a/src/resources/objects/tangible/TangibleMessageBuilder.java +++ b/src/resources/objects/tangible/TangibleMessageBuilder.java @@ -21,11 +21,8 @@ ******************************************************************************/ package resources.objects.tangible; -import java.nio.ByteOrder; import java.util.Map; -import org.apache.mina.core.buffer.IoBuffer; - import resources.objects.ObjectMessageBuilder; import engine.resources.objects.Builder; @@ -39,177 +36,6 @@ public class TangibleMessageBuilder extends ObjectMessageBuilder { super(); } - public IoBuffer buildBaseline3() { - TangibleObject tangible = (TangibleObject) object; - IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - - buffer.putShort((short) 0x0D); - buffer.putFloat(object.getComplexity()); - buffer.put(getAsciiString(object.getStfFilename())); - buffer.putInt(0); - buffer.put(getAsciiString(object.getStfName())); - - if(object.getCustomName() == null || object.getCustomName().length() < 1) - buffer.putInt(0); - else - buffer.put(getUnicodeString(object.getCustomName())); - buffer.putInt(object.getVolume()); - buffer.putInt(0); - buffer.putInt(tangible.getFactionStatus()); // faction vars - - if(tangible.getCustomization() == null || tangible.getCustomization().length <= 0) - buffer.putShort((short) 0); - else { - buffer.putShort((short) tangible.getCustomization().length); - buffer.put(tangible.getCustomization()); - } - - buffer.putInt(0); - buffer.putInt(0); - - //buffer.putInt(0); - if(tangible.getOptionsBitmask() == 0) - tangible.setOptionsBitmask(0x100); - buffer.putInt(tangible.getOptionsBitmask()); - buffer.putInt(tangible.getUses()); // number of item uses - buffer.putInt(tangible.getConditionDamage()); - buffer.putInt(tangible.getMaxDamage()); - buffer.put((byte) (tangible.isStaticObject() ? 1 : 0)); - - int size = buffer.position(); - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - - buffer.flip(); - buffer = createBaseline("TANO", (byte) 3, buffer, size); - - return buffer; - } - - public IoBuffer buildBaseline6() { - TangibleObject tangible = (TangibleObject) object; - IoBuffer buffer = bufferPool.allocate(100, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - buffer.putShort((short) 8); - buffer.putInt(0x43); - buffer.put(getAsciiString(tangible.getDetailFilename())); - buffer.putInt(0); - buffer.put(getAsciiString(tangible.getDetailName())); - buffer.putLong(0); - buffer.putLong(0); - buffer.putLong(0); // unks - buffer.putLong(0); - buffer.putInt(0); - buffer.put((byte) 0); - - int size = buffer.position(); - buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size); - - buffer.flip(); - buffer = createBaseline("TANO", (byte) 6, buffer, size); - - return buffer; - } - - public IoBuffer buildBaseline8() { - IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.putShort((short) 0); - int size = buffer.position(); - buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size); - buffer.flip(); - buffer = createBaseline("TANO", (byte) 8, buffer, size); - - return buffer; - } - - public IoBuffer buildBaseline9() { - IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.putShort((short) 0); - int size = buffer.position(); - buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size); - buffer.flip(); - buffer = createBaseline("TANO", (byte) 9, buffer, size); - - return buffer; - } - - public IoBuffer buildConditionDamageDelta(int conditionDamage) { - - IoBuffer buffer = bufferPool.allocate(4, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.putInt(conditionDamage); - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("TANO", (byte) 3, (short) 1, (short) 0x0A, buffer, size + 4); - - return buffer; - - } - - public IoBuffer buildCustomNameDelta(String customName) { - IoBuffer buffer = bufferPool.allocate(getUnicodeString(customName).length, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.put(getUnicodeString(customName)); - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("TANO", (byte) 3, (short) 1, (short) 2, buffer, size + 4); - return buffer; - - } - - public IoBuffer buildCustomizationDelta(byte[] customization) { - IoBuffer buffer = bufferPool.allocate(customization.length + 2, false).order(ByteOrder.LITTLE_ENDIAN); - - buffer.putShort((short) customization.length); - buffer.put(customization); - - int size = buffer.position(); - buffer.flip(); - buffer = createDelta("TANO", (byte) 3, (short) 1, (short) 6, buffer, size + 4); - return buffer; - } - - public IoBuffer buildDelta3() { - IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - buffer.putShort((short)5); - buffer.putInt(0x12862153); - buffer.putLong(getObject().getObjectID()); - buffer.putInt(0x54414E4F); - buffer.put((byte)3); - buffer.putInt(8);//buffer.putInt(8+6); - - buffer.putShort((short) 2); - buffer.putShort((short)8); - buffer.put((byte)0); - buffer.putShort((short) 0x21); - buffer.put((byte)0); - -// buffer.putShort((short) 0); -// buffer.putFloat(4.0F); - - int size = buffer.position(); - buffer.flip(); - return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); - } - - public IoBuffer buildAssemblyDelta3() { - IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN); - buffer.setAutoExpand(true); - buffer.putShort((short)5); - buffer.putInt(0x12862153); - buffer.putLong(getObject().getObjectID()); - buffer.putInt(0x54414E4F); - buffer.put((byte)3); - buffer.putInt(8);//buffer.putInt(8+6); - - buffer.putShort((short) 1); - buffer.putShort((short)0x0B); - buffer.putInt(0x000003E8); // ? - - int size = buffer.position(); - buffer.flip(); - return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip(); - } - @Override public void buildBaseline3(Map baselineBuilders, Map deltaBuilders) { super.buildBaseline3(baselineBuilders, deltaBuilders); diff --git a/src/resources/objects/tangible/TangibleObject.java b/src/resources/objects/tangible/TangibleObject.java index 9cf7a8ef..621e6c16 100644 --- a/src/resources/objects/tangible/TangibleObject.java +++ b/src/resources/objects/tangible/TangibleObject.java @@ -43,216 +43,318 @@ import protocol.swg.objectControllerObjects.ShowFlyText; import resources.common.OutOfBand; import resources.datatables.Options; import resources.datatables.PvpStatus; -import resources.datatables.STF; import resources.loot.LootGroup; import resources.objects.ObjectMessageBuilder; +import resources.objects.SWGList; +import resources.objects.SWGSet; import resources.objects.creature.CreatureObject; - -import com.sleepycat.persist.model.NotPersistent; -import com.sleepycat.persist.model.Persistent; - import engine.clientdata.ClientFileManager; import engine.clientdata.visitors.IDManagerVisitor; import engine.clients.Client; +import engine.resources.common.CRC; import engine.resources.common.RGB; +import engine.resources.objects.Baseline; import engine.resources.objects.SWGObject; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Persistent(version=12) +@SuppressWarnings("unchecked") public class TangibleObject extends SWGObject implements Serializable { private static final long serialVersionUID = 1L; - // TODO: Thread safety - protected int incapTimer = 10; - private int conditionDamage = 0; - protected int pvpBitmask = 0; - protected byte[] customization; - private List componentCustomizations = new ArrayList(); - private Map customizationVariables = new HashMap(); - protected int optionsBitmask = 0; - private int uses = 0; - private int maxDamage = 1000; - private boolean staticObject = true; - protected String faction = ""; // Says you're "Imperial Special Forces" if it's 0 for some reason - protected int factionStatus = 0; - @NotPersistent - protected transient Vector defendersList = new Vector(); // unused in packets but useful for the server - @NotPersistent private transient TangibleMessageBuilder messageBuilder; + private Map customizationVariables = new HashMap(); + + protected transient Vector defendersList = new Vector(); + + private transient int pvpBitmask = 0; + //private TreeSet> lootSpecification = new TreeSet>(); private transient List lootGroups = new ArrayList(); - - @NotPersistent - private transient boolean looted = false; // These 4 should not need to be persisted, since a looted corpse will get wiped with server restart - @NotPersistent + private transient boolean looted = false; private transient boolean lootLock = false; - @NotPersistent private transient boolean creditRelieved = false; - @NotPersistent private transient boolean lootItem = false; - - private boolean stackable = false; - private int stackCount = 1; - private boolean noSell = false; - private byte junkType = -1; - private int junkDealerPrice = 0; - - private String serialNumber; - - @NotPersistent private transient TangibleObject killer = null; + public TangibleObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String template) { + super(objectID, planet, position, orientation, template); + if (this.getClass().getSimpleName().equals("TangibleObject")) setIntAttribute("volume", 1); + getBaseline(3).set("volume", 1); + } + public TangibleObject(long objectID, Planet planet, String template) { super(objectID, planet, new Point3D(0, 0, 0), new Quaternion(1, 0, 1, 0), template); - messageBuilder = new TangibleMessageBuilder(this); - if (this.getClass().getSimpleName().equals("TangibleObject")) setIntAttribute("volume", 1); - } - - public TangibleObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation) { - super(objectID, planet, position, orientation, template); - messageBuilder = new TangibleMessageBuilder(this); if (this.getClass().getSimpleName().equals("TangibleObject")) setIntAttribute("volume", 1); + getBaseline(3).set("volume", 1); } public TangibleObject() { super(); - messageBuilder = new TangibleMessageBuilder(this); } - @Override public void initAfterDBLoad() { super.init(); defendersList = new Vector(); - messageBuilder = new TangibleMessageBuilder(this); } - @Deprecated - public void setCustomName2(String customName) { - setCustomName(customName); - System.err.println("setCustomName2 is now deprecated - please use setCustomName"); - } - - public int getIncapTimer() { - return incapTimer; - } - - public void setIncapTimer(int incapTimer) { - this.incapTimer = incapTimer; + public Baseline getOtherVariables() { + Baseline baseline = super.getOtherVariables(); + baseline.put("stackable", false); + baseline.put("noSell", false); + baseline.put("junkType", (byte) -1); + baseline.put("junkDealerPrice", 0); + return baseline; } - public int getUses() { - return uses; + public Baseline getBaseline3() { + Baseline baseline = super.getBaseline3(); + baseline.put("faction", 0); + baseline.put("factionStatus", 0); + baseline.put("customization", new byte[] { }); + baseline.put("componentCustomizations", new SWGList(this, 3, 7, false)); + baseline.put("optionsBitmask", 0); + baseline.put("uses", 0); + baseline.put("conditionDamage", 0); + baseline.put("maximumCondition", 100); + baseline.put("staticObject", false); + return baseline; } - public void setUses(int uses) { - this.uses = uses; - setIntAttribute("uses", uses); + public Baseline getBaseline6() { + Baseline baseline = super.getBaseline6(); + baseline.put("inCombat", false); + baseline.put("defendersList", new SWGSet(this, 6, 3, false)); + baseline.put("4", 0); + baseline.put("5", new SWGList(this, 6, 5, false)); + baseline.put("6", new SWGList(this, 6, 6, false)); + baseline.put("7", (long) 0); // Unknown List (HUGE structure inside) + return baseline; } - - public synchronized int getConditionDamage() { - return conditionDamage; + + @Override + public Baseline getBaseline8() { + Baseline baseline = super.getBaseline8(); + return baseline; } - - public synchronized void setConditionDamage(int conditionDamage) { - if(conditionDamage < 0) - conditionDamage = 0; - else if(conditionDamage > getMaxDamage()) - conditionDamage = getMaxDamage(); - this.conditionDamage = conditionDamage; - notifyObservers(messageBuilder.buildConditionDamageDelta(conditionDamage), true); - if (maxDamage > 0) { - this.setStringAttribute("condition", (maxDamage + "/" + (maxDamage - conditionDamage))); - } + + @Override + public Baseline getBaseline9() { + Baseline baseline = super.getBaseline9(); + return baseline; } - + + public String getFaction() { + return NGECore.getInstance().factionService.getName((int) getBaseline(3).get("faction")); + } + + public void setFaction(String faction) { + notifyClients(getBaseline(3).set("faction", CRC.StringtoCRC(faction)), true); + updatePvpStatus(); + } + + public int getFactionStatus() { + return (int) getBaseline(3).get("factionStatus"); + } + + public void setFactionStatus(int factionStatus) { + notifyClients(getBaseline(3).set("factionStatus", factionStatus), true); + } + public byte[] getCustomization() { - return customization; + return (byte[]) getBaseline(3).get("customization"); } - + public void setCustomization(byte[] customization) { - synchronized(objectMutex) { - this.customization = customization; + notifyClients(getBaseline(3).set("customization", customization), true); + } + + public SWGList getComponentCustomizations() { + return (SWGList) getBaseline(3).get("componentCustomizations"); + } + + public void setComponentCustomizations(List componentCustomizations) { + getComponentCustomizations().addAll(componentCustomizations); + } + + public Byte getCustomizationVariable(String type) { + if (customizationVariables.containsKey(type)) { + return customizationVariables.get(type); + } else { + System.err.println("Error: object doesn't have customization variable " + type); } - notifyObservers(messageBuilder.buildCustomizationDelta(customization), true); + return null; } - - public List getComponentCustomizations() { - return componentCustomizations; + + public void setCustomizationVariable(String type, byte value) { + if (customizationVariables.containsKey(type)) { + customizationVariables.replace(type, value); + } else { + customizationVariables.put(type, value); + } + + setCustomization(getCustomizationBytes()); } - - public void setComponentCustomizations(List componentCustomizations) { - this.componentCustomizations = componentCustomizations; + + public void removeCustomizationVariable(String type) { + if (customizationVariables.containsKey(type)) { + customizationVariables.remove(type); + setCustomization(getCustomizationBytes()); + } } - + + private byte[] getCustomizationBytes() { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + + try { + IDManagerVisitor visitor = ClientFileManager.loadFile("customization/customization_id_manager.iff", IDManagerVisitor.class); + + stream.write((byte) 0x02); // Unk + stream.write((byte) customizationVariables.size()); // Number of customization attributes + + for (String type : customizationVariables.keySet()) { + stream.write(visitor.getAttributeIndex(type)); // Index of palette type within "customization/customization_id_manager.iff" + stream.write(customizationVariables.get(type)); // Value/Index within palette + + // Seperator/Footer + stream.write((byte) 0xC3); + stream.write((byte) 0xBF); + stream.write((byte) 0x03); + } + + return stream.toByteArray(); + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + public int getOptionsBitmask() { - return optionsBitmask; + return (int) getBaseline(3).get("optionsBitmask"); } - + public void setOptionsBitmask(int optionsBitmask) { - this.optionsBitmask = optionsBitmask; + notifyClients(getBaseline(3).set("optionsBitmask", optionsBitmask), true); } public void setOptions(int options, boolean add) { - synchronized(objectMutex) { - if (options != 0) { - if (add) { - addOption(options); - } else { - removeOption(options); - } + if (options != 0) { + if (add) { + setOptionsBitmask(getOptionsBitmask() | options); + } else { + setOptionsBitmask(getOptionsBitmask() & ~options);; } } } public boolean getOption(int option) { - synchronized(objectMutex) { - return ((optionsBitmask & option) == option); + return ((getOptionsBitmask() & option) == option); + } + + public int getUses() { + return (int) getBaseline(3).get("uses"); + } + + public void setUses(int uses) { + notifyClients(getBaseline(3).set("uses", uses), true); + setIntAttribute("uses", uses); + } + + public int getIncapTimer() { + return getUses(); + } + + public void setIncapTimer(int incapTimer) { + notifyClients(getBaseline(3).set("uses", incapTimer), true); + } + + public int getConditionDamage() { + return (int) getBaseline(3).get("conditionDamage"); + } + + public void setConditionDamage(int conditionDamage) { + int maximumCondition = getMaximumCondition(); + + if (conditionDamage < 0) { + conditionDamage = 0; + } else if (conditionDamage > maximumCondition) { + conditionDamage = maximumCondition; + } + + notifyClients(getBaseline(3).set("conditionDamage", conditionDamage), true); + + if (getMaximumCondition() > 0) { + setStringAttribute("condition", (maximumCondition + "/" + (maximumCondition - conditionDamage))); } } - public void addOption(int option) { - setOptionsBitmask(getOptionsBitmask() | option); + public int getMaximumCondition() { + return (int) getBaseline(3).get("maximumCondition"); } - public void removeOption(int option) { - setOptionsBitmask(getOptionsBitmask() & ~option); + public void setMaximumCondition(int maximumCondition) { + notifyClients(getBaseline(3).set("maximumCondition", maximumCondition), true); + setStringAttribute("condition", (maximumCondition + "/" + (maximumCondition - getConditionDamage()))); } - public int getMaxDamage() { - return maxDamage; - } - - public void setMaxDamage(int maxDamage) { - this.maxDamage = maxDamage; - - this.setStringAttribute("condition", (maxDamage + "/" + (maxDamage - conditionDamage))); - } - public boolean isStaticObject() { - return staticObject; - } - - public void setStaticObject(boolean staticObject) { - this.staticObject = staticObject; + return (boolean) getBaseline(3).get("staticObject"); } - public int getPvPBitmask() { + public void setStaticObject(boolean staticObject) { + notifyClients(getBaseline(3).set("staticObject", staticObject), true); + } + + public boolean isInCombat() { + return (boolean) getBaseline(6).get("inCombat"); + } + + public void setInCombat(boolean inCombat) { + notifyClients(getBaseline(6).set("inCombat", inCombat), true); + } + + // All objects can be in combat (terminal mission flag bases, tutorial target box) + + public List getDefendersList() { + synchronized(objectMutex) { + return defendersList; + } + } + + public void addDefender(TangibleObject defender) { + defendersList.add(defender); + + if (!isInCombat()) { + setInCombat(true); + } + } + + public void removeDefender(TangibleObject defender) { + defendersList.remove(defender); + + if (defendersList.isEmpty() && isInCombat()) { + setInCombat(false); + } + } + + public int getPvpBitmask() { synchronized(objectMutex) { return pvpBitmask; } } - - public void setPvPBitmask(int pvpBitmask) { + + public void setPvpBitmask(int pvpBitmask) { synchronized(objectMutex) { this.pvpBitmask = pvpBitmask; } } + public boolean getPvpStatus(int pvpStatus) { synchronized(objectMutex) { return ((pvpBitmask & pvpStatus) != 0); @@ -269,8 +371,6 @@ public class TangibleObject extends SWGObject implements Serializable { } } } - - //updatePvpStatus(); } public void updatePvpStatus() { @@ -296,162 +396,9 @@ public class TangibleObject extends SWGObject implements Serializable { } } - public Byte getCustomizationVariable(String type) - { - if(customizationVariables.containsKey(type)) return customizationVariables.get(type); - System.err.println("Error: object doesn't have customization variable " + type); - return null; - } - - public void setCustomizationVariable(String type, byte value) - { - if(customizationVariables.containsKey(type)) customizationVariables.replace(type, value); - else customizationVariables.put(type, value); - - byte[] customizationBytes = getCustomizationBytes(); - customization = customizationBytes; - notifyObservers(messageBuilder.buildCustomizationDelta(customizationBytes), true); - } - - public void removeCustomizationVariable(String type) - { - if(customizationVariables.containsKey(type)) - { - customizationVariables.remove(type); - byte[] customizationBytes = getCustomizationBytes(); - customization = customizationBytes; - notifyObservers(messageBuilder.buildCustomizationDelta(customizationBytes), true); - } - } - - private byte[] getCustomizationBytes() - { - //if(customizationVariables.size() == 0) customization = { 0x00 }; - - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - try - { - IDManagerVisitor visitor = ClientFileManager.loadFile("customization/customization_id_manager.iff", IDManagerVisitor.class); - - stream.write((byte)0x02); // Unk - stream.write((byte)customizationVariables.size()); // Number of customization attributes - - for(String type : customizationVariables.keySet()) - { - stream.write(visitor.getAttributeIndex(type)); // Index of palette type within "customization/customization_id_manager.iff" - stream.write(customizationVariables.get(type)); // Value/Index within palette - - // Seperator/Footer - stream.write((byte) 0xC3); - stream.write((byte) 0xBF); - stream.write((byte) 0x03); - } - return stream.toByteArray(); - } - catch (Exception e) { e.printStackTrace(); } - return null; - } - - public String getFaction() { - synchronized(objectMutex) { - return faction; - } - } - - public void setFaction(String faction) { - synchronized(objectMutex) { - this.faction = faction; - } - - updatePvpStatus(); - } - - public int getFactionStatus() { - synchronized(objectMutex) { - return factionStatus; - } - } - - public void setFactionStatus(int factionStatus) { - synchronized(objectMutex) { - this.factionStatus = factionStatus; - } - } - - public Vector getDefendersList() { - synchronized(objectMutex) { - return defendersList; - } - } - - public void addDefender(TangibleObject defender) { - - defendersList.add(defender); - - if(this instanceof CreatureObject) { - CreatureObject creature = (CreatureObject) this; - - if(creature.getCombatFlag() == 0) - creature.setCombatFlag((byte) 1); - } - - } - - public void removeDefender(TangibleObject defender) { - - defendersList.remove(defender); - - if(this instanceof CreatureObject) { - CreatureObject creature = (CreatureObject) this; - - if(creature.getCombatFlag() == 1 && defendersList.isEmpty()) - creature.setCombatFlag((byte) 0); - } - - } - public boolean isAttackableBy(CreatureObject attacker) { int pvpStatus = NGECore.getInstance().factionService.calculatePvpStatus(attacker, this); return (((pvpStatus & PvpStatus.Attackable) == PvpStatus.Attackable) || ((pvpStatus & PvpStatus.Aggressive) == PvpStatus.Aggressive)); - - /* - CreatureObject creature; - - if(this instanceof CreatureObject) { - creature = (CreatureObject) this; - if(creature.getDuelList().contains(attacker) && attacker.getDuelList().contains(this)) - return true; - } - - if(faction.equals("rebel") && attacker.getFaction().equals("rebel")) - return false; - else if(faction.equals("imperial") && attacker.getFaction().equals("imperial")) - return false; - else if(attacker.getSlottedObject("ghost") != null) { - - if(this instanceof CreatureObject && getSlottedObject("ghost") != null) { - - creature = (CreatureObject) this; - - if(creature.getFactionStatus() == 2 && attacker.getFactionStatus() == 2) - return true; - else - return false; - - } - - if((faction.equals("rebel") || faction.equals("imperial")) && attacker.getFactionStatus() >= 1) - return true; - else if((faction.equals("rebel") || faction.equals("imperial")) && attacker.getFactionStatus() == 0) - return false; - - return getPvPBitmask() == 1 || getPvPBitmask() == 2; - - } else if(attacker.getSlottedObject("ghost") == null) - return true; - - return getPvPBitmask() == 1 || getPvPBitmask() == 2; - */ } public void showFlyText(OutOfBand outOfBand, float scale, RGB color, int displayType, boolean notifyObservers) { @@ -492,6 +439,15 @@ public class TangibleObject extends SWGObject implements Serializable { notifyObservers(new StopClientEffectObjectByLabel(getObjectID(), commandString), true); } + public String getSerialNumber() { + return getStringAttribute("serial_number"); + } + + public void setSerialNumber(String serialNumber) { + setStringAttribute("serial_number", serialNumber); + setOptions(Options.SERIAL, true); + } + public TangibleObject getKiller() { synchronized(objectMutex) { return killer; @@ -505,167 +461,208 @@ public class TangibleObject extends SWGObject implements Serializable { } public List getLootGroups() { - return lootGroups; + synchronized(objectMutex) { + return lootGroups; + } } public void setLootGroups(List lootGroups) { - this.lootGroups = lootGroups; + synchronized(objectMutex) { + this.lootGroups = lootGroups; + } } public void addToLootGroups(String[] lootPoolNames, double[] lootPoolChances, double lootGroupChance) { - //System.out.println("lootPoolNames[0] " + lootPoolNames[0]); - LootGroup lootGroup = new LootGroup(lootPoolNames, lootPoolChances, lootGroupChance); - this.lootGroups.add(lootGroup); + synchronized(objectMutex) { + //System.out.println("lootPoolNames[0] " + lootPoolNames[0]); + LootGroup lootGroup = new LootGroup(lootPoolNames, lootPoolChances, lootGroupChance); + lootGroups.add(lootGroup); + } } public void addToLootGroups(LootGroup lootGroup) { - this.lootGroups.add(lootGroup); + synchronized(objectMutex) { + lootGroups.add(lootGroup); + } } - public boolean isLooted() { - return looted; + synchronized(objectMutex) { + return looted; + } } - + public void setLooted(boolean looted) { - this.looted = looted; + synchronized(objectMutex) { + this.looted = looted; + } } public boolean isLootLock() { - return lootLock; + synchronized(objectMutex) { + return lootLock; + } } - + public void setLootLock(boolean lootLock) { - this.lootLock = lootLock; + synchronized(objectMutex) { + this.lootLock = lootLock; + } } public boolean isLootItem() { - return lootItem; + synchronized(objectMutex) { + return lootItem; + } } - + public void setLootItem(boolean lootItem) { - this.lootItem = lootItem; + synchronized(objectMutex) { + this.lootItem = lootItem; + } } public boolean isStackable() { - return stackable; - } - - public void setStackable(boolean stackable) { - this.stackable = stackable; + return (boolean) otherVariables.get("stackable"); } - public int getStackCount() { - return stackCount; - } - - public void setStackCount(int stackCount) { - this.stackCount = stackCount; + public void setStackable(boolean stackable) { + otherVariables.set("stackable", stackable); } public boolean isNoSell() { - return noSell; + return (boolean) otherVariables.get("noSell"); } - + public void setNoSell(boolean noSell) { - this.noSell = noSell; + otherVariables.set("noSell", noSell); } public byte getJunkType() { - return junkType; + return (byte) otherVariables.get("junkType"); } - + public void setJunkType(byte junkType) { - this.junkType = junkType; + otherVariables.set("junkType", junkType); } - + public int getJunkDealerPrice() { - return junkDealerPrice; + return (int) otherVariables.get("junkDealerPrice"); } - + public void setJunkDealerPrice(int junkDealerPrice) { - this.junkDealerPrice = junkDealerPrice; + otherVariables.set("junkDealerPrice", junkDealerPrice); } public boolean isCreditRelieved() { - return creditRelieved; + synchronized(objectMutex) { + return creditRelieved; + } } - + public void setCreditRelieved(boolean creditRelieved) { - if (creditRelieved) - this.creditRelieved = creditRelieved; // only allow one state change to prevent hacking + synchronized(objectMutex) { + if (creditRelieved) { + this.creditRelieved = creditRelieved; // only allow one state change to prevent hacking + } + } } - public String getSerialNumber() { - return getStringAttribute("serial_number"); - } - - public void setSerialNumber(String serialNumber) { - setStringAttribute("serial_number", serialNumber); - setOptions(Options.SERIAL, true); - } - - public void sendDelta3(Client destination) { - destination.getSession().write(messageBuilder.buildDelta3()); - //tools.CharonPacketUtils.printAnalysis(messageBuilder.buildDelta3(),"TANO3 Delta"); - } - - public void sendAssemblyDelta3(Client destination) { - destination.getSession().write(messageBuilder.buildAssemblyDelta3()); - //tools.CharonPacketUtils.printAnalysis(messageBuilder.buildAssemblyDelta3(),"TANO3 Assembly Delta"); - } - - public void sendCustomizationDelta3(Client destination, String enteredName){ - destination.getSession().write(messageBuilder.buildCustomNameDelta(enteredName)); - //tools.CharonPacketUtils.printAnalysis(messageBuilder.buildCustomNameDelta(enteredName),"TANO3 Customization Delta"); - } - - - @Override - public void sendBaselines(Client destination) { - - - if(destination == null || destination.getSession() == null) { - System.out.println("NULL destination"); - return; + public boolean isFull() { + if (getTemplateData().getAttribute("containerVolumeLimit") == null) { + return false; } - destination.getSession().write(messageBuilder.buildBaseline3()); - destination.getSession().write(messageBuilder.buildBaseline6()); - destination.getSession().write(messageBuilder.buildBaseline8()); - destination.getSession().write(messageBuilder.buildBaseline9()); + int containerVolumeLimit = (int) getTemplateData().getAttribute("containerVolumeLimit") >> 8; // Shifting because it seems to be returning an extra byte before it should - if(getPvPBitmask() != 0) { - UpdatePVPStatusMessage upvpm = new UpdatePVPStatusMessage(getObjectID()); - upvpm.setFaction(UpdatePVPStatusMessage.factionCRC.Neutral); - upvpm.setStatus(getPvPBitmask()); - destination.getSession().write(upvpm.serialize()); + if (containerVolumeLimit == 0) { + return false; } - - } - - public ObjectMessageBuilder getMessageBuilder() { - return messageBuilder; - } - - public boolean isFull() - { - if(getTemplateData().getAttribute("containerVolumeLimit") == null) return false; + if (NGECore.getInstance().objectService.objsInContainer(this, this) >= containerVolumeLimit) { + return true; + } - int containerVolumeLimit = (int)getTemplateData().getAttribute("containerVolumeLimit") >> 8; // Shifting because it seems to be returning an extra byte before it should - - if(containerVolumeLimit == 0) return false; - - if(NGECore.getInstance().objectService.objsInContainer(this, this) >= containerVolumeLimit) return true; - return false; } - @Override - public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) { - // TODO Auto-generated method stub - + public void notifyClients(IoBuffer buffer, boolean notifySelf) { + notifyObservers(buffer, false); } + public ObjectMessageBuilder getMessageBuilder() { + synchronized(objectMutex) { + if (messageBuilder == null) { + messageBuilder = new TangibleMessageBuilder(this); + } + + return messageBuilder; + } + } + + public void sendBaselines(Client destination) { + if (destination != null && destination.getSession() != null) { + destination.getSession().write(getBaseline(3).getBaseline()); + destination.getSession().write(getBaseline(6).getBaseline()); + + Client parent = ((getGrandparent() == null) ? null : getGrandparent().getClient()); + + if (parent != null && destination == parent) { + destination.getSession().write(getBaseline(8).getBaseline()); + destination.getSession().write(getBaseline(9).getBaseline()); + } + + if (destination.getParent() != this) { + UpdatePVPStatusMessage upvpm = new UpdatePVPStatusMessage(getObjectID()); + upvpm.setFaction(CRC.StringtoCRC(getFaction())); + upvpm.setStatus(NGECore.getInstance().factionService.calculatePvpStatus((CreatureObject) destination.getParent(), this)); + destination.getSession().write(upvpm.serialize()); + } + } + } + + public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) { + switch (viewType) { + case 3: + { + switch (updateType) { + case 7: + { + buffer = getBaseline(3).createDelta(7, buffer.array()); + notifyClients(buffer, true); + break; + } + } + } + } + } + + @Deprecated public void setCustomName2(String customName) { setCustomName(customName); } + + @Deprecated public void sendDelta3(Client destination) { setOptions(Options.SERIAL | Options.INVULNERABLE, true); } + + @Deprecated public void sendAssemblyDelta3(Client destination) { setMaximumCondition(1000); } + + @Deprecated public void sendCustomizationDelta3(Client destination, String enteredName){ setCustomName(enteredName); } + + @Deprecated public void addOption(int option) { setOptionsBitmask(getOptionsBitmask() | option); } + + @Deprecated public void removeOption(int option) { setOptionsBitmask(getOptionsBitmask() & ~option); } + + @Deprecated public int getMaxDamage() { return getMaximumCondition(); } + + @Deprecated public void setMaxDamage(int maxDamage) { setMaximumCondition(maxDamage); } + + @Deprecated public byte getCombatFlag() { return (byte) ((isInCombat()) ? 1 : 0); } //Baseline.getBoolean(isInCombat()); } + + @Deprecated public void setCombatFlag(byte combatFlag) { setInCombat(combatFlag > 0); } //setInCombat(Baseline.getBoolean(combatFlag)); } + + @Deprecated public int getPvPBitmask() { return getPvpBitmask(); } + + @Deprecated public void setPvPBitmask(int pvpBitmask) { setPvpBitmask(pvpBitmask); } + + @Deprecated public int getStackCount() { if (getUses() == 0) setUses(1); return getUses(); } + + @Deprecated public void setStackCount(int stackCount) { setUses(stackCount); } + } diff --git a/src/resources/objects/universe/UniverseObject.java b/src/resources/objects/universe/UniverseObject.java index 3f3bb6b1..021abff6 100644 --- a/src/resources/objects/universe/UniverseObject.java +++ b/src/resources/objects/universe/UniverseObject.java @@ -27,19 +27,17 @@ import org.apache.mina.core.buffer.IoBuffer; import resources.objects.ObjectMessageBuilder; -import com.sleepycat.persist.model.Persistent; - import engine.clients.Client; +import engine.resources.objects.Baseline; import engine.resources.objects.SWGObject; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; -@Persistent(version=0) public class UniverseObject extends SWGObject implements Serializable { private static final long serialVersionUID = 1L; - private transient ObjectMessageBuilder messageBuilder = null; + private transient UniverseMessageBuilder messageBuilder = null; public UniverseObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String Template) { super(objectID, planet, position, orientation, Template); @@ -53,20 +51,36 @@ public class UniverseObject extends SWGObject implements Serializable { public void initAfterDBLoad() { super.init(); } - + @Override - public void sendBaselines(Client arg0) { - // TODO Auto-generated method stub - + public Baseline getOtherVariables() { + Baseline baseline = super.getOtherVariables(); + return baseline; } + @Override + public void notifyClients(IoBuffer buffer, boolean notifySelf) { + notifyObservers(buffer, false); + } + + @Override public ObjectMessageBuilder getMessageBuilder() { - return messageBuilder; + synchronized(objectMutex) { + if (messageBuilder == null) { + messageBuilder = new UniverseMessageBuilder(this); + } + + return messageBuilder; + } + } + + @Override + public void sendBaselines(Client destination) { + } @Override public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) { - // TODO Auto-generated method stub } diff --git a/src/resources/objects/weapon/WeaponObject.java b/src/resources/objects/weapon/WeaponObject.java index a4ef7b31..4fca13d7 100644 --- a/src/resources/objects/weapon/WeaponObject.java +++ b/src/resources/objects/weapon/WeaponObject.java @@ -44,14 +44,14 @@ public class WeaponObject extends TangibleObject implements Serializable { private transient WeaponMessageBuilder messageBuilder; public WeaponObject(long objectID, Planet planet, String template) { - super(objectID, planet, template, new Point3D(0, 0, 0), new Quaternion(1, 0, 1, 0)); + super(objectID, planet, new Point3D(0, 0, 0), new Quaternion(1, 0, 1, 0), template); messageBuilder = new WeaponMessageBuilder(this); if (this.getClass().getSimpleName().equals("WeaponObject")) setIntAttribute("volume", 1); setStringAttribute("cat_wpn_damage.damage", "0-0"); } - public WeaponObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation) { - super(objectID, planet, template, position, orientation); + public WeaponObject(long objectID, Planet planet, Point3D position, Quaternion orientation, String template) { + super(objectID, planet, position, orientation, template); messageBuilder = new WeaponMessageBuilder(this); if (this.getClass().getSimpleName().equals("WeaponObject")) setIntAttribute("volume", 1); setStringAttribute("cat_wpn_damage.damage", "0-0"); @@ -68,38 +68,12 @@ public class WeaponObject extends TangibleObject implements Serializable { messageBuilder = new WeaponMessageBuilder(this); defendersList = new Vector(); } - - public int getIncapTimer() { - return incapTimer; - } - - public void setIncapTimer(int incapTimer) { - this.incapTimer = incapTimer; - } - - - public byte[] getCustomization() { - return customization; - } - - public void setCustomization(byte[] customization) { - this.customization = customization; - } - - public int getOptionsBitmask() { - return optionsBitmask; - } - - public void setOptionsBitmask(int optionsBitmask) { - this.optionsBitmask = optionsBitmask; - } - + public int getMaxDamage() { return Integer.parseInt(getStringAttribute("cat_wpn_damage.damage").split("-")[1]); } - + public void setMaxDamage(int maxDamage) { - setStringAttribute("cat_wpn_damage.damage", String.valueOf(getMinDamage()) + "-" + String.valueOf(maxDamage)); setIntAttribute("cat_wpn_damage.dps", getDamagePerSecond()); } diff --git a/src/services/BuffService.java b/src/services/BuffService.java index 839c2b01..de08efd2 100644 --- a/src/services/BuffService.java +++ b/src/services/BuffService.java @@ -149,15 +149,15 @@ public class BuffService implements INetworkDispatch { } } - if(FileUtilities.doesFileExist("scripts/buffs/" + buffName + ".py")) core.scriptService.callScript("scripts/buffs/", buffName, "add", core, target, buff); +/* if(FileUtilities.doesFileExist("scripts/buffs/" + buffName + ".py")) core.scriptService.callScript("scripts/buffs/", buffName, "add", core, target, buff); else - { + { */ if(buff.getEffect1Name().length() > 0) core.skillModService.addSkillMod(target, buff.getEffect1Name(), (int) buff.getEffect1Value()); if(buff.getEffect2Name().length() > 0) core.skillModService.addSkillMod(target, buff.getEffect2Name(), (int) buff.getEffect2Value()); if(buff.getEffect3Name().length() > 0) core.skillModService.addSkillMod(target, buff.getEffect3Name(), (int) buff.getEffect3Value()); if(buff.getEffect4Name().length() > 0) core.skillModService.addSkillMod(target, buff.getEffect4Name(), (int) buff.getEffect4Value()); if(buff.getEffect5Name().length() > 0) core.skillModService.addSkillMod(target, buff.getEffect5Name(), (int) buff.getEffect5Value()); - } +// } target.addBuff(buff); @@ -216,15 +216,16 @@ public class BuffService implements INetworkDispatch { dot.getTask().cancel(true); creature.removeDot(dot); } - if(FileUtilities.doesFileExist("scripts/buffs/" + buff.getBuffName() + ".py")) core.scriptService.callScript("scripts/buffs/", buff.getBuffName(), "remove", core, creature, buff); + +/* if(FileUtilities.doesFileExist("scripts/buffs/" + buff.getBuffName() + ".py")) core.scriptService.callScript("scripts/buffs/", buff.getBuffName(), "remove", core, creature, buff); else - { + {*/ if(buff.getEffect1Name().length() > 0) core.skillModService.deductSkillMod(creature, buff.getEffect1Name(), (int) buff.getEffect1Value()); if(buff.getEffect2Name().length() > 0) core.skillModService.deductSkillMod(creature, buff.getEffect2Name(), (int) buff.getEffect2Value()); if(buff.getEffect1Name().length() > 0) core.skillModService.deductSkillMod(creature, buff.getEffect3Name(), (int) buff.getEffect3Value()); if(buff.getEffect1Name().length() > 0) core.skillModService.deductSkillMod(creature, buff.getEffect4Name(), (int) buff.getEffect4Value()); if(buff.getEffect1Name().length() > 0) core.skillModService.deductSkillMod(creature, buff.getEffect5Name(), (int) buff.getEffect5Value()); - } +// } if (!buff.getCallback().equals("none") && !buff.getCallback().equals("")) { if (FileUtilities.doesFileExist("scripts/buffs/" + buff.getBuffName() + ".py")) { diff --git a/src/services/CharacterService.java b/src/services/CharacterService.java index 531895f4..25825e77 100644 --- a/src/services/CharacterService.java +++ b/src/services/CharacterService.java @@ -60,6 +60,7 @@ import protocol.swg.ClientVerifyAndLockNameResponse; import protocol.swg.CreateCharacterSuccess; import protocol.swg.HeartBeatMessage; import resources.objects.creature.CreatureObject; +import resources.objects.intangible.IntangibleObject; import resources.objects.mission.MissionObject; import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; @@ -286,6 +287,7 @@ public class CharacterService implements INetworkDispatch { player.setProfession(clientCreateCharacter.getProfession()); player.setProfessionIcon(Professions.get(clientCreateCharacter.getProfession())); player.setProfessionWheelPosition(clientCreateCharacter.getProfessionWheelPosition()); + player.setNextUpdateTime(core.gcwService.calculateNextUpdateTime() + player.getBornDate()); if(clientCreateCharacter.getHairObject().length() > 0) { String sharedHairTemplate = clientCreateCharacter.getHairObject().replace("/hair_", "/shared_hair_"); TangibleObject hair = (TangibleObject) core.objectService.createObject(sharedHairTemplate, object.getPlanet()); @@ -295,8 +297,6 @@ public class CharacterService implements INetworkDispatch { object.addObjectToEquipList(hair); } - player.setBornDate((int) System.currentTimeMillis()); - TangibleObject inventory = (TangibleObject) core.objectService.createObject("object/tangible/inventory/shared_character_inventory.iff", object.getPlanet()); inventory.setContainerPermissions(CreatureContainerPermissions.CREATURE_CONTAINER_PERMISSIONS); TangibleObject appInventory = (TangibleObject) core.objectService.createObject("object/tangible/inventory/shared_appearance_inventory.iff", object.getPlanet()); @@ -338,6 +338,9 @@ public class CharacterService implements INetworkDispatch { object._add(defaultWeapon); object.setWeaponId(defaultWeapon.getObjectID()); + IntangibleObject pda = (IntangibleObject) core.objectService.createObject("object/intangible/data_item/shared_guild_stone.iff", object.getPlanet()); + datapad.add(pda); + createStarterClothing(object, sharedRaceTemplate, clientCreateCharacter.getStarterProfession()); //core.scriptService.callScript("scripts/", "demo", "CreateStartingCharacter", core, object); diff --git a/src/services/ConnectionService.java b/src/services/ConnectionService.java index 73102790..9baa6d0b 100644 --- a/src/services/ConnectionService.java +++ b/src/services/ConnectionService.java @@ -195,8 +195,6 @@ public class ConnectionService implements INetworkDispatch { CreatureObject object = (CreatureObject) client.getParent(); - object.setPvPBitmask(0); - object.setInviteCounter(0); object.setInviteSenderId(0); object.setInviteSenderName(""); @@ -272,7 +270,9 @@ public class ConnectionService implements INetworkDispatch { } }*/ - core.missionService.getBountyMap().remove(core.getBountiesODB().get(object.getObjectID())); + if (core.getBountiesODB().contains(object.getObjectID())) { + core.missionService.getBountyMap().remove(core.getBountiesODB().get(object.getObjectID())); + } ghost.toggleFlag(PlayerFlags.LD); diff --git a/src/services/DevService.java b/src/services/DevService.java index 9fa01399..a43fdb5e 100644 --- a/src/services/DevService.java +++ b/src/services/DevService.java @@ -36,11 +36,11 @@ import resources.common.FileUtilities; import resources.common.Opcodes; import resources.common.SpawnPoint; import resources.datatables.WeaponType; +import resources.harvest.SurveyTool; import resources.objects.building.BuildingObject; import resources.objects.creature.CreatureObject; import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; -import resources.objects.tool.SurveyTool; import resources.objects.weapon.WeaponObject; import services.sui.SUIWindow; import services.sui.SUIService.ListBoxType; @@ -88,9 +88,20 @@ 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"); + suiOptions.put((long) 130, "Vehicle Deeds"); + suiOptions.put((long) 121, "Sandbox City"); + suiOptions.put((long) 140, "Guild Registry Device (PDA)"); + } + +>>>>>>> origin/master break; case 3: // [Items] Weapons suiOptions.put((long) 30, "Jedi Weapons"); @@ -137,8 +148,17 @@ 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 "); + } +>>>>>>> origin/master break; } @@ -1242,6 +1262,18 @@ public class DevService implements INetworkDispatch { case 124: core.simulationService.transferToPlanet(player, core.terrainService.getPlanetByName("tatooine"), new Point3D(3521,4,-4800), player.getOrientation(), null); return; + + case 164: + core.simulationService.transferToPlanet(player, core.terrainService.getPlanetByName("dantooine"), new Point3D(-284,18,2853), player.getOrientation(), null); + return; + + case 165: + core.simulationService.transferToPlanet(player, core.terrainService.getPlanetByName("dantooine"), new Point3D(-1586,18,-7688), player.getOrientation(), null); + return; + + case 166: + 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); @@ -1264,9 +1296,16 @@ 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; } } diff --git a/src/services/GroupService.java b/src/services/GroupService.java index 032ecd15..d9d55256 100644 --- a/src/services/GroupService.java +++ b/src/services/GroupService.java @@ -26,6 +26,8 @@ import java.util.List; import java.util.Map; import resources.buffs.Buff; +import resources.common.OutOfBand; +import resources.common.ProsePackage; import resources.objects.creature.CreatureObject; import resources.objects.group.GroupObject; import services.chat.ChatRoom; @@ -45,6 +47,7 @@ public class GroupService implements INetworkDispatch { core.commandService.registerCommand("join"); core.commandService.registerCommand("disband"); core.commandService.registerCommand("decline"); + core.commandService.registerCommand("dismissgroupmember"); } @Override @@ -74,7 +77,7 @@ public class GroupService implements INetworkDispatch { } if(memberGroupId != 0) { - leader.sendSystemMessage(member.getCustomName() + " is already in a group.", (byte) 0); + leader.sendSystemMessage(OutOfBand.ProsePackage("TT", member.getObjectID(), "@group:already_grouped"), (byte) 0); return; } @@ -96,16 +99,16 @@ public class GroupService implements INetworkDispatch { } if(member.getInviteSenderId() != 0 && member.getInviteSenderId() != leader.getObjectID()) { - leader.sendSystemMessage(member.getCustomName() + " is considering joining another group.", (byte) 0); + leader.sendSystemMessage(OutOfBand.ProsePackage("TT", member.getObjectID(), "@group:considering_other_group"), (byte) 0); return; } if(member.getInviteSenderId() != 0 && member.getInviteSenderId() == leader.getObjectID()) { - leader.sendSystemMessage(member.getCustomName() + " has already been invited to join your group.", (byte) 0); + leader.sendSystemMessage(OutOfBand.ProsePackage("TT", member.getObjectID(), "@group:considering_your_group"), (byte) 0); return; } - leader.sendSystemMessage("You invite " + member.getCustomName() + " to join the group.", (byte) 0); + leader.sendSystemMessage(OutOfBand.ProsePackage("TT", member.getObjectID(), "@group:invite_leader"), (byte) 0); member.setInviteCounter(member.getInviteCounter() + 1); member.setInviteSenderId(leader.getObjectId()); member.setInviteSenderName(leader.getCustomName()); @@ -121,11 +124,9 @@ public class GroupService implements INetworkDispatch { invited.setInviteCounter(invited.getInviteCounter() + 1); invited.setInviteSenderId(0); invited.setInviteSenderName(""); - - invited.sendSystemMessage("You decline to join " + leader.getCustomName() + "'s group.", (byte) 0); + invited.sendSystemMessage(OutOfBand.ProsePackage("TT", leader.getObjectID(), "@group:decline_self"), (byte) 0); invited.updateGroupInviteInfo(); - - leader.sendSystemMessage(invited.getCustomName() + " declines to join your group.", (byte) 0); + invited.sendSystemMessage(OutOfBand.ProsePackage("TT", invited.getObjectID(), "@group:decline_leader"), (byte) 0); } @@ -245,11 +246,11 @@ public class GroupService implements INetworkDispatch { creature.setGroupId(0); creature.makeUnaware(group); core.chatService.leaveChatRoom(creature, group.getChatRoomId()); - creature.sendSystemMessage("You have left the group.", (byte) 0); + creature.sendSystemMessage("@group:removed", (byte) 0); for(SWGObject member : memberList) { CreatureObject creature2 = (CreatureObject) member; - creature2.sendSystemMessage(creature.getCustomName() + " has left the group.", (byte) 0); + creature2.sendSystemMessage(OutOfBand.ProsePackage("TU", creature.getObjectID(), "@group:other_left_prose"), (byte) 0); } removeGroupBuffs(creature); @@ -272,7 +273,7 @@ public class GroupService implements INetworkDispatch { creature2.makeUnaware(group); core.chatService.leaveChatRoom(creature2, group.getChatRoomId()); - creature2.sendSystemMessage("The group has been disbanded.", (byte) 0); + creature.sendSystemMessage("@group:disbanded", (byte) 0); removeGroupBuffs((CreatureObject) member); @@ -285,4 +286,49 @@ public class GroupService implements INetworkDispatch { public void handleGroupDisband(CreatureObject creature) { handleGroupDisband(creature, true); } + + public void removedFromGroup(GroupObject group, CreatureObject creature) { + removeFromGroup(group, creature, false); + } + + public void removeFromGroup(GroupObject group, CreatureObject creature, boolean kicked) { + + group.removeMember(creature); + creature.setInviteCounter(creature.getInviteCounter() + 1); + creature.setInviteSenderId(0); + creature.setInviteSenderName(""); + creature.updateGroupInviteInfo(); + creature.setGroupId(0); + creature.makeUnaware(group); + core.chatService.leaveChatRoom(creature, group.getChatRoomId()); + creature.sendSystemMessage("@group:removed", (byte) 0); + + for(SWGObject member : group.getMemberList()) { + CreatureObject creature2 = (CreatureObject) member; + creature2.sendSystemMessage(OutOfBand.ProsePackage("TU", creature.getObjectID(), "@group:other_left_prose"), (byte) 0); + } + + removeGroupBuffs(creature); + + if(group.getMemberList().size() <= 1 && kicked) + handleGroupDisband((CreatureObject) group.getGroupLeader()); + + } + + public void handleGroupKick(CreatureObject leader, CreatureObject member) { + + GroupObject group = (GroupObject) core.objectService.getObject(leader.getGroupId()); + + if(group == null || member.getGroupId() == 0 || member.getGroupId() != group.getObjectID()) + return; + + if(group.getGroupLeader() != leader) { + leader.sendSystemMessage("@group:must_be_leader", (byte) 0); + return; + } + + removeFromGroup(group, member, true); + + } + } diff --git a/src/services/guild/GuildService.java b/src/services/GuildService.java similarity index 76% rename from src/services/guild/GuildService.java rename to src/services/GuildService.java index 3197e9e1..fed7c2c9 100644 --- a/src/services/guild/GuildService.java +++ b/src/services/GuildService.java @@ -19,12 +19,12 @@ * 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 services.guild; +package services; import java.util.Map; import resources.guild.Guild; -import resources.objects.SWGList; +import resources.objects.SWGSet; import resources.objects.guild.GuildObject; import main.NGECore; import engine.resources.objects.SWGObject; @@ -55,15 +55,9 @@ public class GuildService implements INetworkDispatch { if (leader == null) return null; - - int id = 0; - if (object.getGuildList().size() < 1) { - id = 0; - } else { - id = ((object.getGuildList().get(object.getGuildList().size()).getId() + 1)); - } - Guild guild = new Guild(id, abbreviation, name, leader); + int listSize = object.getGuildList().size(); + Guild guild = new Guild((listSize == 0 ? 1 : listSize + 1), abbreviation, name, leader); object.getGuildList().add(guild); @@ -74,38 +68,20 @@ public class GuildService implements INetworkDispatch { return object; } - public SWGList getGuildList() { + public SWGSet getGuildList() { return object.getGuildList(); } public Guild getGuildById(int id) { - for (int i = 0; i < object.getGuildList().size(); i++) { - if (object.getGuildList().get(i).getId() == id) { - return object.getGuildList().get(i); - } - } - - return null; + return object.getGuildList().stream().filter(g -> g.getId() == id).findFirst().get(); } public Guild getGuildByAbbreviation(String abbreviation) { - for (int i = 0; i < object.getGuildList().size(); i++) { - if (object.getGuildList().get(i).getAbbreviation().equals(abbreviation)) { - return object.getGuildList().get(i); - } - } - - return null; + return object.getGuildList().stream().filter(g -> g.getAbbreviation().equals(abbreviation)).findFirst().get(); } public Guild getGuildByName(String name) { - for (int i = 0; i < object.getGuildList().size(); i++) { - if (object.getGuildList().get(i).getName().equals(name)) { - return object.getGuildList().get(i); - } - } - - return null; + return object.getGuildList().stream().filter(g -> g.getName().equals(name)).findFirst().get(); } public boolean removeGuild(int id) { diff --git a/src/services/LootService.java b/src/services/LootService.java index ef8d01f0..1cd5d3a3 100644 --- a/src/services/LootService.java +++ b/src/services/LootService.java @@ -21,12 +21,9 @@ ******************************************************************************/ package services; -import java.io.File; import java.io.IOException; -import java.nio.file.DirectoryStream; import java.nio.file.DirectoryStream.Filter; import java.nio.file.attribute.BasicFileAttributes; -import java.nio.file.FileSystems; import java.nio.file.FileVisitResult; import java.nio.file.FileVisitor; import java.nio.file.Files; @@ -41,8 +38,6 @@ import java.util.Map; import java.util.Random; import java.util.Vector; -import org.apache.commons.lang3.ArrayUtils; - import protocol.swg.PlayClientEffectObjectTransformMessage; import protocol.swg.SceneCreateObjectByCrc; import resources.loot.LootGroup; @@ -795,7 +790,7 @@ public class LootService implements INetworkDispatch { int finalMinDmg = 0; int finalMaxDmg = 0; - String tunableObjectName = ""; + @SuppressWarnings("unused") String tunableObjectName = ""; if (objectType.contains("powercrystal")){ tunableObjectName = "Power Crystal"; @@ -1043,7 +1038,7 @@ public class LootService implements INetworkDispatch { float qz= 1.06535322E9F; Point3D effectorPosition = new Point3D(0,y,0); Quaternion effectorOrientation = new Quaternion(0,0,0,qz); - PlayClientEffectObjectTransformMessage lmsg = new PlayClientEffectObjectTransformMessage("",lootedObject.getObjectID(),"",effectorPosition,effectorOrientation); + //PlayClientEffectObjectTransformMessage lmsg = new PlayClientEffectObjectTransformMessage("",lootedObject.getObjectID(),"",effectorPosition,effectorOrientation); //((CreatureObject) requester).getClient().getSession().write(lmsg.serialize()); } diff --git a/src/services/PlayerService.java b/src/services/PlayerService.java index 37f6757e..0e839581 100644 --- a/src/services/PlayerService.java +++ b/src/services/PlayerService.java @@ -160,7 +160,7 @@ public class PlayerService implements INetworkDispatch { scheduleList.add(scheduler.scheduleAtFixedRate(() -> { if(creature.getAction() < creature.getMaxAction() && creature.getPosture() != 14) { - if(creature.getCombatFlag() == 0) + if(!creature.isInCombat()) creature.setAction(creature.getAction() + (15 + creature.getLevel() * 5)); else creature.setAction(creature.getAction() + ((15 + creature.getLevel() * 5) / 2)); @@ -168,7 +168,7 @@ public class PlayerService implements INetworkDispatch { }, 0, 1000, TimeUnit.MILLISECONDS)); scheduleList.add(scheduler.scheduleAtFixedRate(() -> { - if(creature.getHealth() < creature.getMaxHealth() && creature.getCombatFlag() == 0 && creature.getPosture() != 13 && creature.getPosture() != 14) + if(creature.getHealth() < creature.getMaxHealth() && !creature.isInCombat() && creature.getPosture() != 13 && creature.getPosture() != 14) creature.setHealth(creature.getHealth() + (36 + creature.getLevel() * 4)); }, 0, 1000, TimeUnit.MILLISECONDS)); schedulers.put(creature.getObjectID(), scheduleList); @@ -873,7 +873,8 @@ public class PlayerService implements INetworkDispatch { creature.getClient().getSession().write((new ClientMfdStatusUpdateMessage((float) ((level >= 90) ? 90 : (level + 1)), "/GroundHUD.MFDStatus.vsp.role.targetLevel")).serialize()); creature.setLevel((short) level); - core.scriptService.callScript("scripts/collections/", "master_" + player.getProfession(), "addMasterBadge", core, creature); + if (level == 90) + core.scriptService.callScript("scripts/collections/", "profession_master", player.getProfession(), core, creature); creature.showFlyText(OutOfBand.ProsePackage("@cbt_spam:skill_up"), 2.5f, new RGB(154, 205, 50), 0, true); creature.playEffectObject("clienteffect/skill_granted.cef", ""); @@ -923,6 +924,7 @@ public class PlayerService implements INetworkDispatch { } player.setXp(xpType, experience); + creature.setXpBarValue(experience); // 2. See if they need to level up. for (int i = 0; i < experienceTable.getRowCount(); i++) { diff --git a/src/services/SimulationService.java b/src/services/SimulationService.java index 1eb8ede6..53a0ddb5 100644 --- a/src/services/SimulationService.java +++ b/src/services/SimulationService.java @@ -193,7 +193,9 @@ public class SimulationService implements INetworkDispatch { ODBCursor cursor = core.getSWGObjectODB().getCursor(); while(cursor.hasNext()) { - SWGObject building = core.objectService.getObject(((SWGObject) cursor.next()).getObjectID()); + Object next = cursor.next(); + if (next == null) continue; + SWGObject building = core.objectService.getObject(((SWGObject) next).getObjectID()); if(building == null || (!(building instanceof BuildingObject) && !(building instanceof HarvesterObject))) continue; if(building.getAttachment("hasLoadedServerTemplate") == null) @@ -405,6 +407,7 @@ public class SimulationService implements INetworkDispatch { } checkForCollidables(object); + object.setAttachment("lastValidPosition", object.getPosition()); MoveEvent event = new MoveEvent(); event.object = object; object.getEventBus().publish(event); @@ -460,6 +463,8 @@ public class SimulationService implements INetworkDispatch { remove(object, oldPos.x, oldPos.z); if(object.getContainer() != null) object.getContainer()._remove(object); + else if (object.getClient().isGM() && parent.getContainer() != null) + object.sendSystemMessage("BuildingId: Dec: " + parent.getContainer().getObjectID() + " / Hex: " + Long.toHexString(parent.getContainer().getObjectID()), DisplayType.Broadcast); parent._add(object); } object.setPosition(newPos); @@ -468,6 +473,7 @@ public class SimulationService implements INetworkDispatch { object.notifyObservers(utm, false); checkForCollidables(object); + object.setAttachment("lastValidPosition", object.getPosition()); } diff --git a/src/services/SkillService.java b/src/services/SkillService.java index a61116b3..6396581f 100644 --- a/src/services/SkillService.java +++ b/src/services/SkillService.java @@ -399,6 +399,8 @@ public class SkillService implements INetworkDispatch { public void resetExpertise(CreatureObject creature) { List skills = new ArrayList(creature.getSkills()); skills.stream().filter(s -> s.contains("expertise")).forEach(s -> removeSkill(creature, s)); + + creature.getBuffList().stream().forEach(buff -> creature.removeBuff(buff)); } public void sendRespecWindow(CreatureObject creature) { diff --git a/src/services/StaticService.java b/src/services/StaticService.java index 11b9dee8..edefd3f2 100644 --- a/src/services/StaticService.java +++ b/src/services/StaticService.java @@ -98,7 +98,10 @@ public class StaticService implements INetworkDispatch { public SWGObject spawnObject(String template, String planetName, long cellId, float x, float y, float z, float qW, float qX, float qY, float qZ) { return spawnObject(template, planetName, cellId, x, y, z, qW, qX, qY, qZ, -1); } - + + public SWGObject spawnObject(String template, String planetName, SWGObject cell, float x, float y, float z, float qW, float qX, float qY, float qZ, int respawnTime) { + return spawnObject(template, planetName, ((cell == null) ? 0L : cell.getObjectID()), x, y, z, qW, qX, qY, qZ, respawnTime); + } public SWGObject spawnObject(String template, String planetName, long cellId, float x, float y, float z, float qW, float qX, float qY, float qZ, int respawnTime) { Planet planet = core.terrainService.getPlanetByName(planetName); @@ -113,6 +116,11 @@ public class StaticService implements INetworkDispatch { SWGObject cell = core.objectService.getObject(cellId); + if (cellId != 0 && cell == null) { + System.err.println("CellId invalid for template " + template); + return null; + } + if (cell != null && cell.getContainer() != null && cell.getContainer() instanceof BuildingObject) { buildingId = cell.getContainer().getObjectId(); cellNumber = ((BuildingObject) cell.getContainer()).getCellNumberByObjectId(cellId); @@ -121,6 +129,7 @@ public class StaticService implements INetworkDispatch { long objectId = core.objectService.getDOId(planetName, template, 0, buildingId, cellNumber, x, y, z); SWGObject object = null; + MobileTemplate mobileTemplate = core.spawnService.getMobileTemplate(template); if (mobileTemplate != null) { @@ -149,6 +158,10 @@ public class StaticService implements INetworkDispatch { System.err.println("StaticService: ObjectId " + objectId + " was taken for object with template " + object.getTemplate() + ". Replacement: " + object.getObjectID()); } + if (mobileTemplate != null) { + return object; + } + boolean checkCells = false; // shouldn't be needed; for debugging if (object instanceof BuildingObject && checkCells) { diff --git a/src/services/SurveyService.java b/src/services/SurveyService.java index a2e3cdb5..1088c505 100644 --- a/src/services/SurveyService.java +++ b/src/services/SurveyService.java @@ -31,13 +31,13 @@ import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import protocol.swg.PlayClientEffectLocMessage; +import resources.harvest.SurveyTool; import resources.objects.creature.CreatureObject; import resources.objects.player.PlayerObject; import resources.objects.resource.GalacticResource; import resources.objects.resource.ResourceContainerObject; import resources.objects.resource.ResourceRoot; import resources.objects.tangible.TangibleObject; -import resources.objects.tool.SurveyTool; import services.sui.SUIWindow; import services.sui.SUIWindow.SUICallback; import services.sui.SUIWindow.Trigger; @@ -338,7 +338,7 @@ public class SurveyService implements INetworkDispatch { if (crafter.getPosture()==13) return; // QA - if (crafter.getCombatFlag()!=0){ // QA + if (crafter.isInCombat()){ // QA crafter.sendSystemMessage("@survey:sample_cancel_attack", (byte) 0); return; } @@ -422,7 +422,7 @@ public class SurveyService implements INetworkDispatch { surveyTool.setCurrentlyCoolingDown(false); CreatureObject crafter = (CreatureObject) NGECore.getInstance().objectService.getObject(surveyTool.getUserID()); - PlayerObject player = (PlayerObject) crafter.getSlottedObject("ghost"); + if (crafter.getPosture()!=1){ crafter.sendSystemMessage("@survey:sample_cancel", (byte) 0); surveyTool.setExceptionalState(false); @@ -433,7 +433,7 @@ public class SurveyService implements INetworkDispatch { if (crafter.getPosture()==13) return; - if (crafter.getCombatFlag()!=0){ + if (crafter.isInCombat()){ crafter.sendSystemMessage("@survey:sample_cancel_attack", (byte) 0); return; } @@ -665,7 +665,6 @@ public class SurveyService implements INetworkDispatch { Vector returnList = new Vector(); returnList.add("List.lstList:SelectedRow"); - final SurveyTool outerSurveyTool = (SurveyTool)target; window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() { @Override diff --git a/src/services/ai/AIActor.java b/src/services/ai/AIActor.java index 7cfceb6c..81db67c8 100644 --- a/src/services/ai/AIActor.java +++ b/src/services/ai/AIActor.java @@ -44,7 +44,6 @@ import services.ai.states.AttackState; import services.ai.states.DeathState; import services.ai.states.IdleState; import services.ai.states.RetreatState; -import services.ai.states.StalkState; import services.combat.CombatEvents.DamageTaken; import services.spawn.MobileTemplate; import java.util.Random; @@ -74,15 +73,15 @@ public class AIActor { creature.getEventBus().subscribe(this); this.currentState = new IdleState(); regenTask = scheduler.scheduleAtFixedRate(() -> { - if(creature.getHealth() < creature.getMaxHealth() && creature.getCombatFlag() == 0 && creature.getPosture() != 13 && creature.getPosture() != 14) + if(creature.getHealth() < creature.getMaxHealth() && !creature.isInCombat() && creature.getPosture() != 13 && creature.getPosture() != 14) creature.setHealth(creature.getHealth() + (36 + creature.getLevel() * 4)); }, 0, 1000, TimeUnit.MILLISECONDS); if(creature.getOption(Options.AGGRESSIVE)) { aggroCheckTask = scheduler.scheduleAtFixedRate(() -> { - if(creature == null || creature.getObservers().isEmpty() || creature.getCombatFlag() != 0 || isStalking) + if(creature == null || creature.getObservers().isEmpty() || creature.isInCombat() || isStalking) return; creature.getObservers().stream().map(Client::getParent).filter(obj -> obj.inRange(creature.getWorldPosition(), 10)).forEach((obj) -> { - if(new Random().nextFloat() <= 0.33 || creature.getCombatFlag() != 0 || isStalking) { + if(new Random().nextFloat() <= 0.33 || creature.isInCombat() || isStalking) { /*if(mobileTemplate.isStalker()) { setFollowObject((CreatureObject) obj); setCurrentState(new StalkState()); diff --git a/src/services/ai/AIService.java b/src/services/ai/AIService.java index 5f2f3e63..117d057a 100644 --- a/src/services/ai/AIService.java +++ b/src/services/ai/AIService.java @@ -26,12 +26,14 @@ import java.util.Map.Entry; import java.util.Random; import java.util.Vector; +import resources.datatables.Difficulty; +import resources.datatables.FactionStatus; +import resources.datatables.GcwType; import resources.objects.creature.CreatureObject; import resources.objects.group.GroupObject; import resources.objects.player.PlayerObject; - +import engine.resources.objects.SWGObject; import engine.resources.scene.Point3D; - import main.NGECore; public class AIService { @@ -109,5 +111,55 @@ public class AIService { return baseXP; } - + + public void awardGcw(AIActor actor) { + CreatureObject npc = actor.getCreature(); + + if (core.factionService.isPvpFaction(npc.getFaction())) { + int gcwPoints = 5; + + if (npc.getDifficulty() == Difficulty.ELITE) { + gcwPoints *= 2; + } + + if (npc.getDifficulty() == Difficulty.BOSS) { + gcwPoints *= 5; + } + + //gcwPoints = actor.getMobileTemplate().getGcwPoints(); // We might want to make this get set in mobile templates if it was different for different npcs ie. assault squads. + + for (CreatureObject player : actor.getDamageMap().keySet()) { + if (player.getGroupId() == 0) { + if (player.getFaction().length() > 0 && player.getFactionStatus() > FactionStatus.OnLeave) { + if ((npc.getLevel() / player.getLevel() * 100) < 86) { + continue; + } + + core.gcwService.addGcwPoints(player, gcwPoints, GcwType.Enemy); + } + } else { + for (SWGObject object : ((GroupObject) core.objectService.getObject(player.getGroupId())).getMemberList()) { + CreatureObject member = (CreatureObject) object; + + if (member == null) { + continue; + } + + if (npc.getPlanet().getName().equals(member.getPlanet().getName()) && npc.getPosition().getDistance(member.getPosition()) > 300) { + continue; + } + + if ((npc.getLevel() / member.getLevel() * 100) < 86) { + continue; + } + + if (member.getFaction().length() > 0 && member.getFactionStatus() > FactionStatus.OnLeave) { + core.gcwService.addGcwPoints(member, gcwPoints, GcwType.Enemy); + } + } + } + } + } + } + } diff --git a/src/services/ai/LairActor.java b/src/services/ai/LairActor.java index 778de963..69016ef0 100644 --- a/src/services/ai/LairActor.java +++ b/src/services/ai/LairActor.java @@ -38,6 +38,7 @@ public class LairActor { private TangibleObject lairObject; private int maxSpawns; private String creatureTemplate; + private Vector creatureTemplates; private volatile int spawnWave = 0; private short level; @@ -54,6 +55,14 @@ public class LairActor { this.level = level; lairObject.getEventBus().subscribe(this); } + + public LairActor(TangibleObject lairObject, Vector creatureTemplates, int maxSpawns, short level) { + this.lairObject = lairObject; + this.creatureTemplates = creatureTemplates; + this.maxSpawns = maxSpawns; + this.level = level; + lairObject.getEventBus().subscribe(this); + } public Vector getCreatures() { @@ -87,7 +96,7 @@ public class LairActor { return; int currentCondition = lairObject.getConditionDamage(); - int maxCondition = lairObject.getMaxDamage(); + int maxCondition = lairObject.getMaximumCondition(); switch(spawnWave) { // TODO: play damage effect @@ -125,6 +134,8 @@ public class LairActor { for(int i = 0; i < creatureAmount; i++) { Point3D position = SpawnPoint.getRandomPosition(lairObject.getPosition(), 5, 30, lairObject.getPlanetId()); + if (creatureTemplates!=null) + creatureTemplate = creatureTemplates.get(new Random().nextInt(creatureTemplates.size())); CreatureObject creature = NGECore.getInstance().spawnService.spawnCreature(creatureTemplate, lairObject.getPlanet().getName(), 0, position.x, position.y, position.z, level); if(creature == null || !creature.isInQuadtree()) { System.out.println("NULL Creature"); @@ -146,7 +157,7 @@ public class LairActor { int healAmount = 0; for(AIActor ai : creatures) { - healAmount += lairObject.getMaxDamage() / 100; + healAmount += lairObject.getMaximumCondition() / 100; } lairObject.setConditionDamage(lairObject.getConditionDamage() - healAmount); diff --git a/src/services/ai/states/AttackState.java b/src/services/ai/states/AttackState.java index dbc0a54d..3b16a857 100644 --- a/src/services/ai/states/AttackState.java +++ b/src/services/ai/states/AttackState.java @@ -37,7 +37,7 @@ public class AttackState extends AIState { CreatureObject creature = actor.getCreature(); if(creature.getPosture() == 14) return StateResult.DEAD; - if(creature.getCombatFlag() == 0 || creature.getDefendersList().size() == 0 || actor.getFollowObject() == null) + if(!creature.isInCombat() || creature.getDefendersList().size() == 0 || actor.getFollowObject() == null) return StateResult.FINISHED; actor.scheduleMovement(); actor.scheduleRecovery(); @@ -115,7 +115,7 @@ public class AttackState extends AIState { NGECore core = NGECore.getInstance(); if(creature.getPosture() == 14) return StateResult.DEAD; - if(creature.getCombatFlag() == 0 || creature.getDefendersList().size() == 0 || actor.getFollowObject() == null) + if(!creature.isInCombat() || creature.getDefendersList().size() == 0 || actor.getFollowObject() == null) { creature.setLookAtTarget(0); creature.setIntendedTarget(0); diff --git a/src/services/ai/states/DeathState.java b/src/services/ai/states/DeathState.java index 94148dbc..f2e593cb 100644 --- a/src/services/ai/states/DeathState.java +++ b/src/services/ai/states/DeathState.java @@ -21,10 +21,7 @@ ******************************************************************************/ package services.ai.states; -import java.util.Vector; - import main.NGECore; -import resources.common.RadialOptions; import resources.objects.creature.CreatureObject; import resources.objects.tangible.TangibleObject; import services.ai.AIActor; @@ -34,6 +31,7 @@ public class DeathState extends AIState { @Override public byte onEnter(AIActor actor) { NGECore.getInstance().aiService.awardExperience(actor); + NGECore.getInstance().aiService.awardGcw(actor); actor.getCreature().setAttachment("radial_filename", "npc/corpse"); //NGECore.getInstance().scriptService.callScript("scripts/radial/npc/corpse", "", "createRadial", NGECore.getInstance(), actor.getCreature().getKiller(), actor.getCreature(), new Vector()); NGECore.getInstance().lootService.DropLoot((CreatureObject)(actor.getCreature().getKiller()),(TangibleObject)(actor.getCreature())); diff --git a/src/services/ai/states/StalkState.java b/src/services/ai/states/StalkState.java index 26b3a90a..b7d2384a 100644 --- a/src/services/ai/states/StalkState.java +++ b/src/services/ai/states/StalkState.java @@ -22,7 +22,6 @@ package services.ai.states; import services.ai.AIActor; -import services.ai.states.AIState.StateResult; public class StalkState extends AIState { diff --git a/src/services/bazaar/AuctionItem.java b/src/services/bazaar/AuctionItem.java index ffa3f6d4..4e0d2fca 100644 --- a/src/services/bazaar/AuctionItem.java +++ b/src/services/bazaar/AuctionItem.java @@ -23,13 +23,9 @@ package services.bazaar; import java.io.Serializable; -import com.sleepycat.je.Environment; -import com.sleepycat.je.Transaction; import com.sleepycat.persist.model.Entity; -import com.sleepycat.persist.model.NotPersistent; import com.sleepycat.persist.model.PrimaryKey; -import engine.resources.objects.IPersistent; import engine.resources.objects.SWGObject; @Entity(version=1) diff --git a/src/services/bazaar/BazaarService.java b/src/services/bazaar/BazaarService.java index 2efde273..7e1bef59 100644 --- a/src/services/bazaar/BazaarService.java +++ b/src/services/bazaar/BazaarService.java @@ -22,19 +22,11 @@ package services.bazaar; import java.nio.ByteOrder; -import java.util.ArrayList; import java.util.Iterator; -import java.util.List; import java.util.Map; import java.util.Set; -import java.util.Vector; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentSkipListSet; -import java.util.function.BiFunction; -import java.util.function.Function; - -import com.sleepycat.je.Transaction; -import com.sleepycat.persist.EntityCursor; import main.NGECore; import engine.clients.Client; @@ -46,7 +38,7 @@ import engine.resources.service.INetworkDispatch; import engine.resources.service.INetworkRemoteEvent; import resources.common.Opcodes; import resources.common.OutOfBand; -import resources.common.ProsePackage; +import resources.datatables.DisplayType; import resources.objects.building.BuildingObject; import resources.objects.creature.CreatureObject; import resources.objects.intangible.IntangibleObject; @@ -682,14 +674,12 @@ public class BazaarService implements INetworkDispatch { core.objectService.destroyObject(item); if(vendor.getTemplate().contains("terminal_bazaar")) { - ProsePackage prose = new ProsePackage("base_player", "sale_fee"); int salesFee = SALES_FEE; if(premium) salesFee *= 5; player.setBankCredits(player.getBankCredits() - salesFee); - prose.setDiInteger(salesFee); - player.sendSystemMessage(new OutOfBand(prose), (byte) 0); + player.sendSystemMessage(OutOfBand.ProsePackage("@base_player:sale_fee", salesFee), DisplayType.Broadcast); } if(auction) { diff --git a/src/services/chat/ChatService.java b/src/services/chat/ChatService.java index e75acf0a..251d125e 100644 --- a/src/services/chat/ChatService.java +++ b/src/services/chat/ChatService.java @@ -34,9 +34,6 @@ import java.util.concurrent.ConcurrentHashMap; import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.session.IoSession; -import com.sleepycat.je.Transaction; -import com.sleepycat.persist.EntityCursor; - import engine.clientdata.ClientFileManager; import engine.clientdata.visitors.DatatableVisitor; import engine.clients.Client; @@ -944,6 +941,7 @@ public class ChatService implements INetworkDispatch { } room.addUser(user.toLowerCase()); + ((CreatureObject) player).getPlayerObject().addChannel(roomId); return true; } return false; @@ -1004,10 +1002,6 @@ public class ChatService implements INetworkDispatch { }); } - public void handleGroupChat(SWGObject sender, String message) { - - } - public ConcurrentHashMap getChatRooms() { return chatRooms; } diff --git a/src/services/collections/CollectionService.java b/src/services/collections/CollectionService.java index dc339b70..8c5a4eaa 100644 --- a/src/services/collections/CollectionService.java +++ b/src/services/collections/CollectionService.java @@ -32,13 +32,13 @@ import org.python.core.PyObject; import resources.common.FileUtilities; import resources.common.OutOfBand; import resources.datatables.DisplayType; -import resources.datatables.STF; import resources.objects.creature.CreatureObject; import resources.objects.player.PlayerObject; import main.NGECore; import engine.clientdata.ClientFileManager; import engine.clientdata.StfTable; import engine.clientdata.visitors.DatatableVisitor; +import engine.resources.common.Stf; import engine.resources.scene.Point3D; import engine.resources.service.INetworkDispatch; import engine.resources.service.INetworkRemoteEvent; @@ -311,16 +311,16 @@ public class CollectionService implements INetworkDispatch { } if (hidden && !(getCollection(creature, collectionName) > 0)) { - creature.sendSystemMessage(OutOfBand.ProsePackage("@collection:player_hidden_slot_added", "TO", STF.get("@collection_n:" + collectionName).replace(":", " -")), DisplayType.Broadcast); + creature.sendSystemMessage(OutOfBand.ProsePackage("@collection:player_hidden_slot_added", "TO", new Stf("@collection_n:" + collectionName).getStfValue()), DisplayType.Broadcast); } player.setCollections(collections.toByteArray()); if (!noMessage) { if (!bookName.equals("crafting_book")) { - creature.sendSystemMessage(OutOfBand.ProsePackage("@collection:player_slot_added", "TU", STF.get("@collection_n:" + slotName).replace(":", " -"), "TO", STF.get("@collection_n:" + collectionName).replace(":", " -")), DisplayType.Broadcast); + creature.sendSystemMessage(OutOfBand.ProsePackage("@collection:player_slot_added", "TU", new Stf("@collection_n:" + slotName).getStfValue(), "TO", new Stf("@collection_n:" + collectionName).getStfValue()), DisplayType.Broadcast); } else { - creature.sendSystemMessage(OutOfBand.ProsePackage("@collection:player_slot_increment", "TU", STF.get("@collection_n:" + slotName).replace(":", " -"), "TO", STF.get("@collection_n:" + collectionName).replace(":", " -")), DisplayType.Broadcast); + creature.sendSystemMessage(OutOfBand.ProsePackage("@collection:player_slot_increment", "TU", new Stf("@collection_n:" + slotName).getStfValue(), "TO", new Stf("@collection_n:" + collectionName).getStfValue()), DisplayType.Broadcast); } } @@ -357,7 +357,7 @@ public class CollectionService implements INetworkDispatch { } if (isComplete(creature, collectionName)) { - creature.sendSystemMessage(OutOfBand.ProsePackage("@collection:player_collection_complete", "TO", STF.get("@collection_n:" + collectionName).replace(":", " -")), DisplayType.Broadcast); + creature.sendSystemMessage(OutOfBand.ProsePackage("@collection:player_collection_complete", "TO", new Stf("@collection_n:" + collectionName).getStfValue()), DisplayType.Broadcast); if (!noReward) { try { @@ -446,7 +446,7 @@ public class CollectionService implements INetworkDispatch { if (trackServerFirst) { if (core.guildService.getGuildObject().addServerFirst(collectionName, new ServerFirst(creature.getCustomName(), creature.getObjectId(), collectionName, System.currentTimeMillis()))) { addCollection(creature, "bdg_server_first_01"); - creature.sendSystemMessage(OutOfBand.ProsePackage("@collection:player_server_first", "TT", core.getGalaxyName(), "TO", STF.get("@collection_n:" + collectionName).replace(":", " -")), DisplayType.Broadcast); + creature.sendSystemMessage(OutOfBand.ProsePackage("@collection:player_server_first", "TT", core.getGalaxyName(), "TO", new Stf("@collection_n:" + collectionName).getStfValue()), DisplayType.Broadcast); } } @@ -819,7 +819,7 @@ public class CollectionService implements INetworkDispatch { } if (collection.equals(collectionName)) { - creature.sendSystemMessage(OutOfBand.ProsePackage("@collection:player_collection_reset", "TO", STF.get("@collection_n:" + collectionName).replace(":", " -")), DisplayType.Broadcast); + creature.sendSystemMessage(OutOfBand.ProsePackage("@collection:player_collection_reset", "TO", new Stf("@collection_n:" + collectionName).getStfValue()), DisplayType.Broadcast); } continue; diff --git a/src/services/combat/CombatService.java b/src/services/combat/CombatService.java index db087e12..713152b7 100644 --- a/src/services/combat/CombatService.java +++ b/src/services/combat/CombatService.java @@ -22,9 +22,11 @@ package services.combat; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Random; +import java.util.Set; import java.util.Vector; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -44,13 +46,13 @@ import resources.buffs.Buff; import resources.buffs.DamageOverTime; import resources.common.FileUtilities; import resources.common.OutOfBand; -import resources.common.ProsePackage; import resources.datatables.DisplayType; +import resources.datatables.FactionStatus; +import resources.datatables.GcwType; import resources.datatables.Options; import resources.datatables.Elemental; import resources.datatables.Posture; import resources.datatables.WeaponType; -import resources.objectives.BountyMissionObjective; import resources.objects.creature.CreatureObject; import resources.objects.mission.MissionObject; import resources.objects.player.PlayerObject; @@ -206,7 +208,7 @@ public class CombatService implements INetworkDispatch { } else if(target instanceof TangibleObject) { - if(target.getConditionDamage() == target.getMaxDamage()) + if(target.getConditionDamage() == target.getMaximumCondition()) { for(TangibleObject defender : target.getDefendersList()) defender.removeDefender(target); core.objectService.destroyObject(target); @@ -244,7 +246,7 @@ public class CombatService implements INetworkDispatch { if(!(obj instanceof TangibleObject) || obj == attacker) continue; - if(obj instanceof CreatureObject && (((CreatureObject) obj).getPosture() == 13 || ((CreatureObject) obj).getPosture() == 14)) + if(obj instanceof CreatureObject && (((CreatureObject) obj).getPosture() == Posture.Incapacitated || ((CreatureObject) obj).getPosture() == Posture.Dead)) continue; if(command.getAttackType() == 0 && !isInConeAngle(attacker, obj, (int) command.getConeLength(), (int) command.getConeWidth(), dirX, dirZ)) @@ -318,7 +320,7 @@ public class CombatService implements INetworkDispatch { if(!(obj instanceof TangibleObject) || obj == attacker) continue; - if(obj instanceof CreatureObject && (((CreatureObject) obj).getPosture() == 13 || ((CreatureObject) obj).getPosture() == 14)) + if(obj instanceof CreatureObject && (((CreatureObject) obj).getPosture() == Posture.Incapacitated || ((CreatureObject) obj).getPosture() == Posture.Dead)) continue; if(command.getAttackType() == 0 && !isInConeAngle(attacker, obj, (int) command.getConeLength(), (int) command.getConeWidth(), dirX, dirZ)) @@ -804,10 +806,12 @@ public class CombatService implements INetworkDispatch { } synchronized(target.getMutex()) { - if(core.mountService.isMounted(target)) core.mountService.dismount(target, (CreatureObject) target.getContainer()); + if (core.mountService.isMounted(target)) { + core.mountService.dismount(target, (CreatureObject) target.getContainer()); + } target.setHealth(1); - target.setPosture((byte) 13); + target.setPosture(Posture.Incapacitated); target.setTurnRadius(0); target.setSpeedMultiplierBase(0); } @@ -818,7 +822,7 @@ public class CombatService implements INetworkDispatch { if(target.getPosture() != 13) return; - target.setPosture((byte) 0); + target.setPosture(Posture.Upright); target.setTurnRadius(1); target.setSpeedMultiplierBase(1); @@ -828,14 +832,14 @@ public class CombatService implements INetworkDispatch { target.setIncapTask(incapTask); core.buffService.addBuffToCreature(target, "incapWeaken", target); if(target.getSlottedObject("ghost") != null && attacker.getSlottedObject("ghost") != null) { - target.sendSystemMessage(new OutOfBand(new ProsePackage("base_player", "prose_victim_incap", attacker.getCustomName())), (byte) 0); - attacker.sendSystemMessage(new OutOfBand(new ProsePackage("base_player", "prose_target_incap", target.getCustomName())), (byte) 0); - } else {target.sendSystemMessage(new OutOfBand(new ProsePackage("base_player", "prose_victim_incap", "@" + attacker.getStfFilename() + ":" + attacker.getStfName())), (byte) 0); } + target.sendSystemMessage(OutOfBand.ProsePackage("@base_player:prose_victim_incap", "TT", attacker.getCustomName()), DisplayType.Broadcast); + attacker.sendSystemMessage(OutOfBand.ProsePackage("@base_player:prose_target_incap", "TT", target.getCustomName()), DisplayType.Broadcast); + } else {target.sendSystemMessage(OutOfBand.ProsePackage("@base_player:prose_victim_incap", "TT", "@" + attacker.getStfFilename() + ":" + attacker.getStfName()), DisplayType.Broadcast); } return; } else if(target.getHealth() - damage <= 0 && target.getAttachment("AI") != null) { synchronized(target.getMutex()) { target.setHealth(0); - target.setPosture((byte) 14); + target.setPosture(Posture.Dead); } attacker.removeDefender(target); target.removeDefender(attacker); @@ -903,7 +907,7 @@ public class CombatService implements INetworkDispatch { } else { - if(target.getFactionStatus() == 0) + if(target.getFactionStatus() == FactionStatus.OnLeave) return true; return false; @@ -992,7 +996,7 @@ public class CombatService implements INetworkDispatch { if(!(obj instanceof CreatureObject)) continue; - if(obj instanceof CreatureObject && (((CreatureObject) obj).getPosture() == 14)) + if(obj instanceof CreatureObject && (((CreatureObject) obj).getPosture() == Posture.Dead)) continue; if(!core.simulationService.checkLineOfSight(target, obj)) @@ -1010,7 +1014,7 @@ public class CombatService implements INetworkDispatch { public void deathblowPlayer(CreatureObject attacker, CreatureObject target) { target.stopIncapTask(); target.setIncapTask(null); - target.setPosture((byte) 14); + target.setPosture(Posture.Dead); if (target.getSlottedObject("ghost") != null && attacker.getSlottedObject("ghost") != null) { boolean bountyWindow = true; @@ -1021,53 +1025,49 @@ public class CombatService implements INetworkDispatch { if (mission != null && mission.getBountyMarkId() == target.getObjectID()) { - ProsePackage attackerPp = new ProsePackage("bounty_hunter", "bounty_success_hunter", target.getCustomName()); - attackerPp.setToCustomString("his"); // TODO: Genders - attackerPp.setDiInteger(mission.getCreditReward()); - attacker.sendSystemMessage(new OutOfBand(attackerPp), DisplayType.Broadcast); + attacker.sendSystemMessage(OutOfBand.ProsePackage("@bounty_hunter:bounty_success_hunter", mission.getCreditReward(), "TT", target.getCustomName(), "TO", target.getObjectID()), DisplayType.Broadcast); - ProsePackage targetPp = new ProsePackage ("bounty_hunter", "bounty_success_hunter", attacker.getCustomName()); - targetPp.setDiInteger(mission.getCreditReward()); - target.sendSystemMessage(new OutOfBand(targetPp), DisplayType.Broadcast); + target.sendSystemMessage(OutOfBand.ProsePackage("@bounty_hunter:bounty_success_hunter", mission.getCreditReward(), "TT", attacker.getCustomName()), DisplayType.Broadcast); core.missionService.handleMissionComplete(attacker, mission); } - } else if (target.getPlayerObject().getBountyMissionId() != 0) { // Bounty Hunter is being deathblown (They're the target) bountyWindow = false; MissionObject mission = (MissionObject) core.objectService.getObject(target.getPlayerObject().getBountyMissionId()); if (mission != null && mission.getBountyMarkId() == attacker.getObjectID()) { - ProsePackage attackerPp = new ProsePackage("bounty_hunter", "bounty_failed_target", target.getCustomName()); - attackerPp.setToCustomString("his"); // TODO: Genders - attackerPp.setDiInteger(mission.getCreditReward()); - attacker.sendSystemMessage(new OutOfBand(attackerPp), DisplayType.Broadcast); + attacker.sendSystemMessage(OutOfBand.ProsePackage("@bounty_hunter:bounty_failed_target", mission.getCreditReward(), "TT", target.getCustomName(), "TO", target.getObjectID()), DisplayType.Broadcast); - ProsePackage targetPp = new ProsePackage ("bounty_hunter", "bounty_failed_hunter", attacker.getCustomName()); - target.sendSystemMessage(new OutOfBand(targetPp), DisplayType.Broadcast); + target.sendSystemMessage(OutOfBand.ProsePackage("@bounty_hunter:bounty_failed_hunter", "TT", attacker.getCustomName()), DisplayType.Broadcast); core.missionService.handleMissionAbort(target, mission); } - } - if(target.getDuelList().contains(attacker)) + if (target.getDuelList().contains(attacker)) { bountyWindow = false; handleEndDuel(target, attacker, false); + } else { + awardGcw(attacker, target); + } - if (bountyWindow) core.playerService.sendSetBountyWindow(target, attacker); - } else { attacker.sendSystemMessage("You have killed " + target.getCustomName() + ".", (byte) 0); } - + if (bountyWindow) { + core.playerService.sendSetBountyWindow(target, attacker); + } + } else { + attacker.sendSystemMessage("You have killed " + ((target.getCustomName() == null) ? target.getObjectName().getStfValue() : target.getCustomName()) + ".", DisplayType.Broadcast); + } + attacker.removeDefender(target); target.removeDefender(attacker); target.setSpeedMultiplierBase(0); target.setTurnRadius(0); if (attacker.getSlottedObject("ghost") != null) - target.sendSystemMessage(new OutOfBand(new ProsePackage("base_player", "prose_victim_dead", attacker.getCustomName())), (byte) 0); + target.sendSystemMessage(OutOfBand.ProsePackage("@base_player:prose_victim_dead", "TT", attacker.getCustomName()), DisplayType.Broadcast); else - target.sendSystemMessage(new OutOfBand(new ProsePackage("base_player", "prose_victim_dead", "@" + attacker.getStfFilename() + ":" + attacker.getStfName())), (byte) 0); + target.sendSystemMessage(OutOfBand.ProsePackage("@base_player:prose_victim_dead", "TT", "@" + attacker.getStfFilename() + ":" + attacker.getStfName()), DisplayType.Broadcast); core.playerService.sendCloningWindow(target, attacker.getSlottedObject("ghost") != null); } @@ -1160,11 +1160,11 @@ public class CombatService implements INetworkDispatch { CreatureObject creature = (CreatureObject) owner; - if(eventType != 0 || creature.getPosture() != 14) + if(eventType != 0 || creature.getPosture() != Posture.Dead) return; synchronized(creature.getMutex()) { - creature.setPosture((byte) 0); + creature.setPosture(Posture.Upright); creature.setTurnRadius(1); creature.setSpeedMultiplierBase(1); creature.setHealth(creature.getHealth() + 4000); @@ -1189,7 +1189,7 @@ public class CombatService implements INetworkDispatch { if(!(obj instanceof CreatureObject)) continue; - if(obj instanceof CreatureObject && (((CreatureObject) obj).getPosture() != 14)) + if(obj instanceof CreatureObject && (((CreatureObject) obj).getPosture() != Posture.Dead)) continue; if(!attemptHeal(medic, (CreatureObject) obj)) @@ -1258,29 +1258,21 @@ public class CombatService implements INetworkDispatch { return; if(target.getSkillMod("expertise_dot_absorption_all") != null) - damage *= (1 - target.getSkillMod("expertise_dot_absorption_all").getBase() / 100); + damage *= (1 - target.getSkillModBase("expertise_dot_absorption_all") / 100); switch(dot.getType()) { - case "acid": - baseArmor = target.getSkillMod("acid").getBase(); - case "heat": - baseArmor = target.getSkillMod("heat").getBase(); - case "cold": - baseArmor = target.getSkillMod("cold").getBase(); - case "electricity": - baseArmor = target.getSkillMod("electricity").getBase(); - case "energy": - baseArmor = target.getSkillMod("energy").getBase(); case "kinetic": - baseArmor = target.getSkillMod("electricity").getBase(); + baseArmor = target.getSkillModBase("electricity"); // Is this a mistake or is it legitimate? case "poison": - baseArmor = target.getSkillMod("acid").getBase(); + baseArmor = target.getSkillModBase("acid"); case "disease": // disease damages action in nge baseArmor = 0; case "bleeding": // elemental type unknown case "fire": - baseArmor = target.getSkillMod("heat").getBase(); + baseArmor = target.getSkillModBase("heat"); + default: + baseArmor = target.getSkillModBase(dot.getType()); } @@ -1445,5 +1437,55 @@ public class CombatService implements INetworkDispatch { defenderList.stream().forEach(attacker -> defender.removeDefender(attacker)); } } - + + public void awardGcw(CreatureObject actor, CreatureObject target) { + try { + if (actor.getSlottedObject("ghost") == null || target.getSlottedObject("ghost") == null) { + return; + } + + PlayerObject targetPlayer = (PlayerObject) target.getSlottedObject("ghost"); + + if (!core.factionService.isFactionEnemy(actor, target) && target.isAttackableBy(actor)) { + return; + } + + Set inRange = new HashSet(); + + inRange.add(actor); + + actor.getObservers().stream().forEach(observer -> inRange.add((CreatureObject) observer.getParent())); + + for (CreatureObject rangedPlayer : inRange) { + if (!(rangedPlayer.getFaction().equals(actor.getFaction()) && target.isAttackableBy(rangedPlayer))){ + continue; + } + + if (!((rangedPlayer.getLevel() / target.getLevel() * 100) < 70)) { + continue; + } + + if (rangedPlayer.getSlottedObject("ghost") == null) { + continue; + } + + PlayerObject player = (PlayerObject) rangedPlayer.getSlottedObject("ghost"); + + float gcwPoints = 37.5f; + + gcwPoints *= targetPlayer.getCurrentRank(); + + float decay = (((float) player.getPvpKills()) / 100f * gcwPoints); + + gcwPoints = (((gcwPoints - decay) < 0) ? 0 : (gcwPoints - decay)); + + core.gcwService.addGcwPoints(rangedPlayer, (int) gcwPoints, GcwType.Player); + + actor.sendSystemMessage(OutOfBand.ProsePackage("@gcw:gcw_rank_pvp_kill_point_grant", (int) gcwPoints, "TT", target.getCustomName()), DisplayType.Broadcast); + } + } catch (Exception e) { + + } + } + } diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index f30411d3..9435a0ea 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -57,7 +57,7 @@ public class CommandService implements INetworkDispatch { private Vector commandLookup = new Vector(); private ConcurrentHashMap aliases = new ConcurrentHashMap(); - private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + @SuppressWarnings("unused") private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); private NGECore core; public CommandService(NGECore core) { @@ -164,6 +164,11 @@ public class CommandService implements INetworkDispatch { if (target == actor) { target = null; } + + // It's possible they use c cmdString to indicate if it should always be on self + if (name.contains("c")) { + //target = actor; + } } break; @@ -552,6 +557,7 @@ public class CommandService implements INetworkDispatch { } @Override + @SuppressWarnings("unused") public void insertOpcodes(Map swgOpcodes, Map objControllerOpcodes) { objControllerOpcodes.put(ObjControllerOpcodes.COMMAND_QUEUE_ENQUEUE, new INetworkRemoteEvent() { diff --git a/src/services/EquipmentService.java b/src/services/equipment/EquipmentService.java similarity index 99% rename from src/services/EquipmentService.java rename to src/services/equipment/EquipmentService.java index a75ba2d6..8b16291f 100644 --- a/src/services/EquipmentService.java +++ b/src/services/equipment/EquipmentService.java @@ -19,7 +19,7 @@ * 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 services; +package services.equipment; import java.io.IOException; import java.nio.file.FileVisitResult; @@ -48,7 +48,6 @@ import engine.resources.service.INetworkRemoteEvent; import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; import resources.objects.weapon.WeaponObject; -import services.equipment.BonusSetTemplate; public class EquipmentService implements INetworkDispatch { diff --git a/src/services/gcw/FactionService.java b/src/services/gcw/FactionService.java index b0df8f91..5e9a1ce3 100644 --- a/src/services/gcw/FactionService.java +++ b/src/services/gcw/FactionService.java @@ -47,7 +47,9 @@ import resources.objects.creature.CreatureObject; import resources.objects.mission.MissionObject; import resources.objects.player.PlayerObject; import resources.objects.tangible.TangibleObject; +import engine.clientdata.ClientFileManager; import engine.clientdata.StfTable; +import engine.clientdata.visitors.DatatableVisitor; import engine.clients.Client; import engine.resources.common.CRC; import engine.resources.service.INetworkDispatch; @@ -61,6 +63,8 @@ public class FactionService implements INetworkDispatch { private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); + private DatatableVisitor pvpFactions; + public FactionService(NGECore core) { this.core = core; @@ -74,6 +78,8 @@ public class FactionService implements INetworkDispatch { factionMap.put(faction, CRC.StringtoCRC(faction)); } } + + pvpFactions = ClientFileManager.loadFile("datatables/player/pvp_factions.iff", DatatableVisitor.class); } catch (Exception e) { e.printStackTrace(); } @@ -246,11 +252,11 @@ public class FactionService implements INetworkDispatch { target = (TangibleObject) core.objectService.getObject(((CreatureObject) target).getOwnerId()); } - if ((target.getPvPBitmask() & PvpStatus.GoingCovert) == PvpStatus.GoingCovert) { + if ((target.getPvpBitmask() & PvpStatus.GoingCovert) == PvpStatus.GoingCovert) { pvpBitmask |= PvpStatus.GoingCovert; } - if ((target.getPvPBitmask() & PvpStatus.GoingOvert) == PvpStatus.GoingOvert) { + if ((target.getPvpBitmask() & PvpStatus.GoingOvert) == PvpStatus.GoingOvert) { pvpBitmask |= PvpStatus.GoingOvert; } @@ -259,7 +265,7 @@ public class FactionService implements INetworkDispatch { } // Everything below assumes target is potentially attackable. - if (!target.getOption(Options.ATTACKABLE)) { + if (!target.getOption(Options.ATTACKABLE) || target.getOption(Options.INVULNERABLE)) { return pvpBitmask; } @@ -352,28 +358,56 @@ public class FactionService implements INetworkDispatch { return pvpBitmask; } - // temp fix until calculatePvpStatus is fixed - /* - public int calculatePvpStatus(CreatureObject player, TangibleObject target) { - - if(target.getSlottedObject("ghost") != null) { - - if(!player.getFaction().equals(target.getFaction()) && player.getFactionStatus() == FactionStatus.SpecialForces && ((CreatureObject) target).getFactionStatus() == FactionStatus.SpecialForces) - return 55; - else if(core.combatService.areInDuel(player, (CreatureObject) target)) - return 55; - else - return 0x14; - - } else { - if(target.getAttachment("AI") != null) - return PvpStatus.Attackable; - else - return 0; + public boolean isPvpFaction(String faction) { + if (!isFaction(faction)) { + return false; } + try { + for (int i = 0; i < pvpFactions.getRowCount(); i++) { + if (pvpFactions.getObject(i, 0) != null) { + if (((String) pvpFactions.getObject(i, 0)).equals(faction)) { + return true; + } + } + } + + } catch (Exception e) { + e.printStackTrace(); + } + + return false; + } + + public void join(CreatureObject actor, String faction) { + if (actor.getPvpBitmask() == PvpStatus.GoingCovert) { + actor.sendSystemMessage("@faction_recruiter:pvp_status_changing", DisplayType.Broadcast); + return; + } + + if (actor.getPvpBitmask() == PvpStatus.GoingOvert) { + actor.sendSystemMessage("@faction_recruiter:pvp_status_changing", DisplayType.Broadcast); + return; + } + + if (actor.getFaction().length() > 0) { + actor.sendSystemMessage("@faction_recruiter:resign_on_leave", DisplayType.Broadcast); + return; + } + + scheduler.schedule(() -> { + actor.setFaction(faction); + actor.setFactionStatus(FactionStatus.Combatant); + actor.setPvpBitmask(0); + PlayerObject player = ((PlayerObject) actor.getSlottedObject("ghost")); + if (player != null) { + player.resetGcwPoints(); + player.resetPvpKills(); + player.setCurrentRank(1); + } + actor.updatePvpStatus(); + }, 1, TimeUnit.SECONDS); } - */ public void changeFactionStatus(CreatureObject actor, int factionStatus) { long time = 1; @@ -383,12 +417,12 @@ public class FactionService implements INetworkDispatch { return; } - if (actor.getPvPBitmask() == PvpStatus.GoingCovert) { + if (actor.getPvpBitmask() == PvpStatus.GoingCovert) { actor.sendSystemMessage("@faction_recruiter:pvp_status_changing", DisplayType.Broadcast); return; } - if (actor.getPvPBitmask() == PvpStatus.GoingOvert) { + if (actor.getPvpBitmask() == PvpStatus.GoingOvert) { actor.sendSystemMessage("@faction_recruiter:pvp_status_changing", DisplayType.Broadcast); return; } @@ -428,7 +462,7 @@ public class FactionService implements INetworkDispatch { final String finalMessage = message; scheduler.schedule(() -> { - actor.setPvPBitmask(0); + actor.setPvpBitmask(0); actor.setFactionStatus(factionStatus); actor.updatePvpStatus(); actor.sendSystemMessage("@faction_recruiter:" + finalMessage, DisplayType.Broadcast); @@ -436,12 +470,12 @@ public class FactionService implements INetworkDispatch { } public void resign(CreatureObject actor) { - if (actor.getPvPBitmask() == PvpStatus.GoingCovert) { + if (actor.getPvpBitmask() == PvpStatus.GoingCovert) { actor.sendSystemMessage("@faction_recruiter:pvp_status_changing", DisplayType.Broadcast); return; } - if (actor.getPvPBitmask() == PvpStatus.GoingOvert) { + if (actor.getPvpBitmask() == PvpStatus.GoingOvert) { actor.sendSystemMessage("@faction_recruiter:pvp_status_changing", DisplayType.Broadcast); return; } @@ -461,9 +495,15 @@ public class FactionService implements INetworkDispatch { } scheduler.schedule(() -> { - actor.setPvPBitmask(0); + actor.setPvpBitmask(0); actor.setFactionStatus(FactionStatus.OnLeave); actor.setFaction(""); + PlayerObject player = ((PlayerObject) actor.getSlottedObject("ghost")); + if (player != null) { + player.resetGcwPoints(); + player.resetPvpKills(); + player.setCurrentRank(0); + } actor.updatePvpStatus(); actor.sendSystemMessage("@faction_recruiter:resign_complete", DisplayType.Broadcast); }, time, TimeUnit.SECONDS); diff --git a/src/services/gcw/GCWService.java b/src/services/gcw/GCWService.java index 73d06d36..378dc0df 100644 --- a/src/services/gcw/GCWService.java +++ b/src/services/gcw/GCWService.java @@ -25,11 +25,15 @@ import java.math.BigDecimal; import java.math.MathContext; import java.nio.ByteOrder; import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.TimeZone; import java.util.TreeMap; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -42,28 +46,42 @@ import org.python.google.common.collect.Multimap; import protocol.swg.GcwGroupsRsp; import protocol.swg.GcwRegionsReq; import protocol.swg.GcwRegionsRsp; - import resources.common.Opcodes; +import resources.common.OutOfBand; +import resources.common.collidables.CollidableCircle; +import resources.datatables.DisplayType; import resources.datatables.FactionStatus; +import resources.datatables.GcwType; import resources.gcw.CurrentServerGCWZoneHistory; import resources.gcw.CurrentServerGCWZonePercent; import resources.gcw.OtherServerGCWZonePercent; import resources.objects.creature.CreatureObject; import resources.objects.guild.GuildObject; - +import resources.objects.player.PlayerObject; import main.NGECore; - import engine.clients.Client; +import engine.resources.database.ODBCursor; import engine.resources.objects.SWGObject; +import engine.resources.scene.Planet; import engine.resources.scene.Point2D; +import engine.resources.scene.Point3D; import engine.resources.service.INetworkDispatch; import engine.resources.service.INetworkRemoteEvent; public class GCWService implements INetworkDispatch { private NGECore core; + private GuildObject object; + + private static final int[] MOD2 = { 10250, 7250, 7250, 6750, 6750, 6750, 6750, 6750, 6750, 6750, 6750, 6750 }; + private static final int[] DECAY1 = { 0, 0, 0, 0, 0, 0, 2727, 2744, 2769, 2799, 2823, 2857 }; + private static final int[] DECAY2 = { 0, 0, 0, 0, 0, 0, 6000, 6500, 7200, 8200, 9600, 12000 }; + private static final int[] CONST2 = { 0, 0, 0, 0, 0, 0, 12200, 12200, 12900, 14100, 16200, 18700 }; + private static final int[] CONST4 = { 0, 0, 0, 0, 0, 0, 1950, 3550, 5600, 7800, 9350, 11100 }; + private Map> zoneMap() { return object.getZoneMap(); } + private Map> pvpZones = new ConcurrentHashMap>(); private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); @@ -79,6 +97,8 @@ public class GCWService implements INetworkDispatch { private void afterInitialisation() { try { core.scriptService.callScript("scripts/", "gcwzones", "addZones", core); + core.scriptService.callScript("scripts/", "pvpzones", "addZones", core); + updateNextUpdateTime(); } catch (Exception e) { e.printStackTrace(); } @@ -285,6 +305,63 @@ public class GCWService implements INetworkDispatch { } } }, 2, 2, TimeUnit.DAYS); + + scheduler.scheduleAtFixedRate(new Runnable() { + @Override public void run() { gcwUpdate(); } + + private void gcwUpdate() { + int nextUpdateTime = (int) calculateNextUpdateTime(); + + ODBCursor cursor = core.getSWGObjectODB().getCursor(); + + while (cursor.hasNext()) { + SWGObject object = (SWGObject) cursor.next(); + + if (object == null) { + continue; + } + + if (core.objectService.getObject(object.getObjectID()) == null) { + object = core.objectService.getObject(object.getObjectID()); + } + + if (!(object instanceof CreatureObject)) { + continue; + } + + CreatureObject creature = (CreatureObject) object; + + if (creature.getSlottedObject("ghost") == null) { + continue; + } + + PlayerObject player = (PlayerObject) creature.getSlottedObject("ghost"); + + // TODO update statistics + + if (core.factionService.isPvpFaction(creature.getFaction())) { + updateGcwRank(creature); + player.addLifetimeGcwPoints(player.getGcwPoints()); + player.addLifetimePvpKills(player.getPvpKills()); + player.resetGcwPoints(); + player.resetPvpKills(); + + if (creature.getFaction().equals("rebel") && player.getCurrentRank() > player.getHighestRebelRank()) { + player.setHighestRebelRank(player.getCurrentRank()); + } + + if (creature.getFaction().equals("imperial") && player.getCurrentRank() > player.getHighestImperialRank()) { + player.setHighestImperialRank(player.getCurrentRank()); + } + + player.setNextUpdateTime(nextUpdateTime - player.getBornDate()); + } + } + + cursor.close(); + } + + }, calculateNextUpdateTime(), 6048000, TimeUnit.SECONDS); } public void addZone(String planet, String zone, float x, float z, float radius, int weight, int type) { @@ -365,6 +442,117 @@ public class GCWService implements INetworkDispatch { } } + public void addGcwPoints(CreatureObject actor, int gcwPoints, byte gcwType) { + if (actor == null) { + return; + } + + if (!core.factionService.isPvpFaction(actor.getFaction())) { + return; + } + + if (actor.getSlottedObject("ghost") == null) { + return; + } + + PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); + + String planet = actor.getPlanet().getName(); + + String prefix = ((planet.startsWith("space")) ? (planet + "_space") : planet); + + switch (gcwType) { + case GcwType.Enemy: + adjustZone(planet, prefix + "_pve", actor.getFaction(), gcwPoints); + actor.sendSystemMessage(OutOfBand.ProsePackage("@gcw:gcw_rank_generic_point_grant", gcwPoints), DisplayType.Broadcast); + break; + case GcwType.Player: + adjustZone(planet, prefix + "_pvp", actor.getFaction(), gcwPoints); + break; + } + + String zone = getCurrentGcwRegion(actor); + + if (zone != null) { + adjustZone(planet, zone, actor.getFaction(), gcwPoints); + } + + player.setGcwPoints(player.getGcwPoints() + gcwPoints); + } + + /* Ported from javascript. + * Written for us by Hendrik of http://swg.activeframe.de. + */ + private double helper(int points, int rank) { + int faktor = points / (MOD2[rank-1] - 250 * rank); + int rt = points / (1 + faktor) - DECAY1[rank-1]; + + if (rank >= 7) { + if (points > DECAY2[rank-1] && rt > 0) { + rt = rt * (((17 - rank) / (14 - rank)) + (CONST2[rank-1] / (points - CONST4[rank-1]))); + } + } + + return Math.floor(rt); + } + + /* Ported from javascript. + * Written for us by Hendrik of http://swg.activeframe.de. + */ + public void updateGcwRank(CreatureObject actor) { + if (actor == null) { + return; + } + + if (actor.getFaction().length() == 0) { + return; + } + + if (actor.getSlottedObject("ghost") == null) { + return; + } + + PlayerObject player = (PlayerObject) actor.getSlottedObject("ghost"); + + int oldrank = player.getCurrentRank(); + int oldprogress = (int) ((player.getRankProgress() > 100) ? 100 : player.getRankProgress()); + int oldpoints = player.getGcwPoints(); + int newrank = oldrank; + int newprogress = oldprogress; + int oldranktotal = 0; + int oldrankprogress = 0; + int newranktotal = 0; + int newrankprogress = 0; + + oldrankprogress = oldprogress * 50; + oldranktotal = 5000 * (oldrank - 1) + oldrankprogress; + + newprogress = (int) helper(oldpoints, oldrank); + + if (newprogress < -2000) { + newprogress = -2000; + } + + newranktotal = oldranktotal + newprogress; + + if (oldrank == 7 && newprogress < 0 && newranktotal < 30000) { + newranktotal = 29999; + } + + newrank = (int) (Math.floor(newranktotal / 5000) + 1); + + if (newrank > 12) { + newrank = 12; + newranktotal = 12 * 5000 - 1; + } + + newrankprogress = newranktotal - (newrank - 1) * 5000; + newprogress = newrankprogress * 100 / 5000; + + player.setCurrentRank(newrank); + player.setRankProgress((float) Math.floor(newprogress)); + } + public List getSFPlayers() { List flagged = new ArrayList(); @@ -378,7 +566,7 @@ public class GCWService implements INetworkDispatch { Iterator it = flagged.iterator(); - while(it.hasNext()) { + while (it.hasNext()) { SWGObject obj = it.next(); if (((CreatureObject) obj).getFactionStatus() != 2) { it.remove(); @@ -388,6 +576,109 @@ public class GCWService implements INetworkDispatch { return flagged; } + public String getCurrentGcwRegion(CreatureObject actor) { + try { + String planet = actor.getPlanet().getName(); + + if (zoneMap().containsKey(planet)) { + for (String zoneName : zoneMap().get(planet).keySet()) { + CurrentServerGCWZonePercent zone = zoneMap().get(planet).get(zoneName).clone(); + + if (zone.getRadius() > 0) { + List objects = core.simulationService.get(core.terrainService.getPlanetByName(planet), zone.getPosition().x, zone.getPosition().z, (int) zone.getRadius()); + + if (objects.contains(actor)) { + return zoneName; + } + } + } + } + } catch (Exception e) { + return null; + } + + return null; + } + + public int calculateNextUpdateTime() { + Calendar c = Calendar.getInstance(); + Date now = new Date(); + + c.setTime(now); + + c.setTimeZone(TimeZone.getTimeZone("GMT")); + + if (c.get(Calendar.DAY_OF_WEEK) == Calendar.THURSDAY && c.get(Calendar.HOUR_OF_DAY) >= 7) { + c.add(Calendar.DAY_OF_YEAR, 7); + } + + while (c.get(Calendar.DAY_OF_WEEK) != Calendar.THURSDAY) { + c.add(Calendar.DAY_OF_WEEK, 1); + } + + c.set(Calendar.HOUR_OF_DAY, 7); + c.set(Calendar.MINUTE, 0); + c.set(Calendar.SECOND, 0); + c.set(Calendar.MILLISECOND, 0); + + return (int) ((c.getTimeInMillis() - now.getTime()) / 1000L); + } + + public void updateNextUpdateTime() { + ODBCursor cursor = core.getSWGObjectODB().getCursor(); + + while (cursor.hasNext()) { + SWGObject object = (SWGObject) cursor.next(); + + if (object == null) { + continue; + } + + if (core.objectService.getObject(object.getObjectID()) == null) { + object = core.objectService.getObject(object.getObjectID()); + } + + if (!(object instanceof CreatureObject)) { + continue; + } + + CreatureObject creature = (CreatureObject) object; + + if (creature.getSlottedObject("ghost") == null) { + continue; + } + + PlayerObject player = (PlayerObject) creature.getSlottedObject("ghost"); + + player.setNextUpdateTime(player.getBornDate() + calculateNextUpdateTime()); + } + + cursor.close(); + } + + public long calculateResetTime() { + Calendar c = Calendar.getInstance(); + Date now = new Date(); + + c.setTime(now); + + int weekday = c.get(Calendar.DAY_OF_WEEK); + + if (weekday != Calendar.THURSDAY) { + int days = ((Calendar.WEDNESDAY - weekday + 2) % 7); + c.add(Calendar.DAY_OF_YEAR, days); + } else if (c.get(Calendar.HOUR_OF_DAY) >= 7) { + c.add(Calendar.DAY_OF_YEAR, 7); + } + + c.set(Calendar.HOUR_OF_DAY, 7); + c.set(Calendar.MINUTE, 0); + c.set(Calendar.SECOND, 0); + c.set(Calendar.MILLISECOND, 0); + + return c.getTimeInMillis(); + } + public void insertOpcodes(Map swgOpcodes, Map objControllerOpcodes) { swgOpcodes.put(Opcodes.GcwRegionsReq, new INetworkRemoteEvent() { @@ -421,6 +712,25 @@ public class GCWService implements INetworkDispatch { } + public void addPvPZone(String planetName, float x, float z, float radius) { + Planet planet = core.terrainService.getPlanetByName(planetName); + if(planet == null) + return; + if(pvpZones.get(planet) == null) + pvpZones.put(planet, new ArrayList()); + CollidableCircle area = new CollidableCircle(new Point3D(x, 0, z), radius, planet); + PvPZone zone = new PvPZone(planet, area); + pvpZones.get(planet).add(zone); + core.simulationService.addCollidable(area, x, z); + } + + public boolean isInPvpZone(CreatureObject actor) { + List zones = pvpZones.get(actor.getPlanet()); + if(zones == null) + return false; + return zones.stream().anyMatch(z -> z.getArea().doesCollide(actor)); + } + @Override public void shutdown() { diff --git a/src/services/gcw/PvPZone.java b/src/services/gcw/PvPZone.java index 785efb8f..b272f6bf 100644 --- a/src/services/gcw/PvPZone.java +++ b/src/services/gcw/PvPZone.java @@ -21,18 +21,23 @@ ******************************************************************************/ package services.gcw; -import java.util.Vector; - +import main.NGECore; 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.FactionStatus; +import resources.datatables.PvpStatus; +import resources.objects.creature.CreatureObject; import engine.resources.scene.Planet; +import engine.resources.scene.Point3D; public class PvPZone { private Planet planet; private AbstractCollidable area; + private NGECore core = NGECore.getInstance(); + public PvPZone(Planet planet, AbstractCollidable area) { this.planet = planet; @@ -56,14 +61,51 @@ public class PvPZone { this.area = area; } + public void warpBack(CreatureObject actor) { + if (core.mountService.isMounted(actor)) { + actor = (CreatureObject) actor.getContainer(); + } + core.simulationService.teleport(actor, (Point3D) actor.getAttachment("lastValidPosition"), actor.getOrientation(), actor.getParentId()); + } + @Handler public void onEnter(EnterEvent event) { + CreatureObject actor = (CreatureObject) event.object; + + if(!actor.getFaction().equals("rebel") && !actor.getFaction().equals("imperial")) { + actor.sendSystemMessage("@gcw:pvp_advanced_region_not_allowed", (byte) 0); + warpBack(actor); + return; + } + + if(actor.getLevel() < 75) { + actor.sendSystemMessage("@gcw:pvp_advanced_region_level_low", (byte) 0); + warpBack(actor); + return; + } + + if(actor.getPvpStatus(PvpStatus.GoingCovert) || actor.getPvpStatus(PvpStatus.GoingOvert)) { + actor.setPvpStatus(PvpStatus.GoingCovert, false); + actor.setPvpStatus(PvpStatus.GoingOvert, false); + actor.sendSystemMessage("@gcw:pvp_advanced_region_faction_type_change_cancel", (byte) 0); + } + + actor.setFactionStatus(FactionStatus.SpecialForces); + actor.updatePvpStatus(); + actor.sendSystemMessage("@gcw:pvp_advanced_region_entered", (byte) 0); + } @Handler public void onExit(ExitEvent event) { + CreatureObject actor = (CreatureObject) event.object; + + actor.setFactionStatus(FactionStatus.OnLeave); + actor.updatePvpStatus(); + actor.sendSystemMessage("@gcw:pvp_advanced_region_exited", (byte) 0); + } diff --git a/src/services/object/ObjectService.java b/src/services/object/ObjectService.java index a1b6b79b..5fecc24d 100644 --- a/src/services/object/ObjectService.java +++ b/src/services/object/ObjectService.java @@ -48,6 +48,7 @@ import java.util.concurrent.atomic.AtomicLong; import resources.common.*; import resources.datatables.Options; import resources.datatables.PlayerFlags; +import resources.harvest.SurveyTool; import org.apache.mina.core.buffer.IoBuffer; import org.apache.mina.core.session.IoSession; @@ -118,18 +119,16 @@ import resources.objects.resource.ResourceContainerObject; import resources.objects.resource.ResourceRoot; import resources.objects.staticobject.StaticObject; import resources.objects.tangible.TangibleObject; -import resources.objects.tool.SurveyTool; import resources.objects.waypoint.WaypointObject; import resources.objects.weapon.WeaponObject; -import services.EquipmentService; import services.ai.AIActor; import services.command.BaseSWGCommand; import services.command.CombatCommand; import services.bazaar.AuctionItem; import services.chat.ChatRoom; +import services.equipment.EquipmentService; @SuppressWarnings("unused") - public class ObjectService implements INetworkDispatch { private Map objectList = new ConcurrentHashMap(); @@ -241,11 +240,11 @@ public class ObjectService implements INetworkDispatch { } else if(Template.startsWith("object/tangible/survey_tool")) { - object = new SurveyTool(objectID, planet, Template, position, orientation); + object = new SurveyTool(objectID, planet, position, orientation, Template); } else if(Template.startsWith("object/tangible")) { - object = new TangibleObject(objectID, planet, Template, position, orientation); + object = new TangibleObject(objectID, planet, position, orientation, Template); } else if(Template.startsWith("object/intangible")) { @@ -253,7 +252,7 @@ public class ObjectService implements INetworkDispatch { } else if(Template.startsWith("object/weapon")) { - object = new WeaponObject(objectID, planet, Template, position, orientation); + object = new WeaponObject(objectID, planet, position, orientation, Template); } else if(Template.startsWith("object/building") || Template.startsWith("object/static/worldbuilding/structures") || Template.startsWith("object/static/structure")){ @@ -297,11 +296,11 @@ public class ObjectService implements INetworkDispatch { } else if(Template.startsWith("object/resource_container")) { - object = new ResourceContainerObject(objectID, planet, Template, position, orientation); + object = new ResourceContainerObject(objectID, planet, position, orientation, Template); } else if(Template.startsWith("object/factory/shared_factory_crate")) { - object = new FactoryCrateObject(objectID, planet, Template, position, orientation); + object = new FactoryCrateObject(objectID, planet, position, orientation, Template); } else if(Template.startsWith("object/draft_schematic")) { @@ -315,7 +314,7 @@ public class ObjectService implements INetworkDispatch { float positionY = core.terrainService.getHeight(planet.getID(), position.x, position.z)-1f; Point3D newpoint = new Point3D(position.x,positionY,position.z); - object = new InstallationObject(objectID, planet, Template, newpoint, orientation); + object = new InstallationObject(objectID, planet, newpoint, orientation, Template); } else if(Template.startsWith("object/installation/mining_ore") || Template.startsWith("object/installation/mining_liquid") || Template.startsWith("object/installation/mining_gas") || Template.startsWith("object/installation/mining_organic") || @@ -323,7 +322,7 @@ public class ObjectService implements INetworkDispatch { float positionY = core.terrainService.getHeight(planet.getID(), position.x, position.z)-1f; Point3D newpoint = new Point3D(position.x,positionY,position.z); - object = new HarvesterObject(objectID, planet, Template, newpoint, orientation); + object = new HarvesterObject(objectID, planet, newpoint, orientation, Template); } else { return null; @@ -1139,6 +1138,7 @@ public class ObjectService implements INetworkDispatch { containers.add(objectId); object = createObject(template, objectId, planet, new Point3D(px + x1, py, pz + z1), new Quaternion(qw, qx, qy, qz), null, true, false); object.setAttachment("childObjects", null); + /*if (!duplicate.containsValue(objectId)) { ((BuildingObject) object).createTransaction(core.getBuildingODB().getEnvironment()); core.getBuildingODB().put((BuildingObject) object, Long.class, BuildingObject.class, ((BuildingObject) object).getTransaction()); @@ -1177,6 +1177,10 @@ public class ObjectService implements INetworkDispatch { object.setContainerPermissions(WorldPermissions.WORLD_PERMISSIONS); } + if (object != null && object instanceof TangibleObject && !(object instanceof CreatureObject)) { + ((TangibleObject) object).setStaticObject(true); + } + //System.out.println("Spawning: " + template + " at: X:" + object.getPosition().x + " Y: " + object.getPosition().y + " Z: " + object.getPosition().z); if(object != null) object.setAttachment("isBuildout", new Boolean(true)); diff --git a/src/services/pet/MountService.java b/src/services/pet/MountService.java index 1ffc8949..c1d836d5 100644 --- a/src/services/pet/MountService.java +++ b/src/services/pet/MountService.java @@ -138,7 +138,7 @@ public class MountService implements INetworkDispatch { return; } - if (actor.getCombatFlag() == 1) { + if (actor.isInCombat()) { actor.sendSystemMessage(OutOfBand.ProsePackage("@pet/pet_menu:cannot_call_in_combat"), DisplayType.Broadcast); return; } @@ -284,7 +284,7 @@ public class MountService implements INetworkDispatch { return; } - if (mount.getConditionDamage() >= mount.getMaxDamage()) { + if (mount.getConditionDamage() >= mount.getMaximumCondition()) { disable(mount); } } diff --git a/src/services/playercities/PlayerCity.java b/src/services/playercities/PlayerCity.java index 2a271b9e..64af777d 100644 --- a/src/services/playercities/PlayerCity.java +++ b/src/services/playercities/PlayerCity.java @@ -630,7 +630,7 @@ public class PlayerCity implements Serializable { // city_version_update_body_4 Vector citizenList = getCitizens(); for (long citizen : citizenList){ - CreatureObject citizenObject = (CreatureObject) NGECore.getInstance().objectService.getObject(citizen); +// CreatureObject citizenObject = (CreatureObject) NGECore.getInstance().objectService.getObject(citizen); Mail actorMail = new Mail(); actorMail.setMailId(NGECore.getInstance().chatService.generateMailId()); actorMail.setRecieverId(citizen); diff --git a/src/services/resources/HarvesterService.java b/src/services/resources/HarvesterService.java index b49e048e..5055431f 100644 --- a/src/services/resources/HarvesterService.java +++ b/src/services/resources/HarvesterService.java @@ -55,7 +55,6 @@ import engine.resources.scene.Quaternion; import engine.resources.service.INetworkDispatch; import engine.resources.service.INetworkRemoteEvent; import resources.common.ObjControllerOpcodes; -import resources.objects.building.BuildingObject; import resources.objects.creature.CreatureObject; import resources.objects.harvester.HarvesterMessageBuilder; import resources.objects.harvester.HarvesterObject; @@ -363,8 +362,7 @@ public class HarvesterService implements INetworkDispatch { }); window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() { @Override - public void process(SWGObject owner, int eventType, Vector returnList) { - CreatureObject crafter = (CreatureObject)owner; + public void process(SWGObject owner, int eventType, Vector returnList) { core.suiService.closeSUIWindow(owner, 0); } }); @@ -853,11 +851,9 @@ public class HarvesterService implements INetworkDispatch { ResourceContainerObject containerObject = (ResourceContainerObject) core.objectService.createObject(resourceContainerIFF, owner.getPlanet()); containerObject.initializeStats(sampleResource); containerObject.setProprietor(owner); - containerObject.setStackCount(stackcount,owner); - int resCRC = CRC.StringtoCRC(resourceContainerIFF); + containerObject.setStackCount(stackcount,owner); containerObject.setIffFileName(resourceContainerIFF); - long objectId = containerObject.getObjectID(); SWGObject crafterInventory = owner.getSlottedObject("inventory"); // SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(objectId, owner.getOrientation().x, owner.getOrientation().y, owner.getOrientation().z, owner.getOrientation().w, owner.getPosition().x, owner.getPosition().y, owner.getPosition().z, resCRC, (byte) 0); @@ -1018,7 +1014,6 @@ public class HarvesterService implements INetworkDispatch { CreatureObject actor = (CreatureObject) NGECore.getInstance().objectService.getObject((Long) object.getAttachment("ownerId")); String structureTemplate = (String) object.getAttachment("StructureTemplate"); HarvesterObject harvester = (HarvesterObject) NGECore.getInstance().objectService.createObject(structureTemplate, actor.getPlanet()); - long objectId = harvester.getObjectID(); Vector adminList = harvester.getAdminList(); //String[] fullName = ((CreatureObject)actor).getCustomName().split(" "); adminList.add(actor.getCustomName()); diff --git a/src/services/resources/ResourceService.java b/src/services/resources/ResourceService.java index 09d9c9c5..78612dd9 100644 --- a/src/services/resources/ResourceService.java +++ b/src/services/resources/ResourceService.java @@ -22,7 +22,6 @@ package services.resources; import java.util.Hashtable; -import java.util.Iterator; import java.util.Map; import java.util.Random; import java.util.Vector; @@ -30,10 +29,7 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; -import com.sleepycat.persist.EntityCursor; - import main.NGECore; -import engine.resources.common.CRC; import engine.resources.database.ODBCursor; import engine.resources.objects.SWGObject; import engine.resources.scene.Planet; @@ -41,8 +37,6 @@ import engine.resources.scene.Point3D; import engine.resources.scene.Quaternion; import engine.resources.service.INetworkDispatch; import engine.resources.service.INetworkRemoteEvent; -import resources.common.OutOfBand; -import resources.common.ProsePackage; import resources.datatables.MilkState; import resources.objects.creature.CreatureObject; import resources.objects.harvester.HarvesterObject; @@ -11444,11 +11438,9 @@ public class ResourceService implements INetworkDispatch { containerObject.setProprietor(crafter); containerObject.setStackCount(stackCount,false); //int stackCount = core.resourceService.getResourceSampleQuantity(crafter, sampleResource); - containerObject.initializeStats(sampleResource); - int resCRC = CRC.StringtoCRC(resourceContainerIFF); - containerObject.setIffFileName(resourceContainerIFF); - long objectId = containerObject.getObjectID(); - SWGObject crafterInventory = crafter.getSlottedObject("inventory"); + containerObject.initializeStats(sampleResource); + containerObject.setIffFileName(resourceContainerIFF); + SWGObject crafterInventory = crafter.getSlottedObject("inventory"); crafterInventory.add(containerObject); return containerObject; } @@ -11476,7 +11468,7 @@ public class ResourceService implements INetworkDispatch { public boolean canMilk(CreatureObject actor, CreatureObject target) { - if(target.getPosture() == 14 || !actor.inRange(target.getWorldPosition(), 5) || actor.getCombatFlag() == 1 || target.getCombatFlag() == 1) + if(target.getPosture() == 14 || !actor.inRange(target.getWorldPosition(), 5) || actor.isInCombat() || target.isInCombat()) return false; AIActor ai = (AIActor) target.getAttachment("AI"); @@ -11593,7 +11585,7 @@ public class ResourceService implements INetworkDispatch { return; } - if(actor.getCombatFlag() == 1) { + if(actor.isInCombat()) { actor.sendSystemMessage("@skl_use:milk_combat", (byte) 0); ai.setMilkState(MilkState.NOTYETMILKED); return; diff --git a/src/services/spawn/DynamicSpawnArea.java b/src/services/spawn/DynamicSpawnArea.java index 388195c6..0a9ed88a 100644 --- a/src/services/spawn/DynamicSpawnArea.java +++ b/src/services/spawn/DynamicSpawnArea.java @@ -22,7 +22,6 @@ package services.spawn; import java.util.Collections; -import java.util.Iterator; import java.util.Random; import java.util.Vector; @@ -35,7 +34,6 @@ import resources.common.collidables.AbstractCollidable.ExitEvent; import resources.objects.creature.CreatureObject; import services.TerrainService; import services.SimulationService.MoveEvent; -import services.ai.LairActor; import engine.resources.objects.SWGObject; import engine.resources.scene.Planet; import engine.resources.scene.Point3D; @@ -61,10 +59,12 @@ public class DynamicSpawnArea extends SpawnArea { public void onEnter(EnterEvent event) { SWGObject object = event.object; - + // ToDo: Mounted players must be handled too + System.out.println("Entering object " + object.getClass().getName()); if(object == null || !(object instanceof CreatureObject)) return; + CreatureObject creature = (CreatureObject) object; if(creature.getSlottedObject("ghost") == null) @@ -93,8 +93,14 @@ public class DynamicSpawnArea extends SpawnArea { Vector groupMembers = new Vector(); Point3D randomGroupPosition = getRandomPosition(creature.getWorldPosition(), 32, 100); int spawnCount = spawnGroup.getGroupMembersNumber(); - if (spawnCount<0) - spawnCount = Math.abs(spawnCount) + new Random().nextInt(spawnGroup.getMobiles().size()-Math.abs(spawnCount)); + if (spawnCount<0){ + int spawnCount2 = 1; + if (Math.abs(spawnCount) many NPC groups int index = new Random().nextInt(spawnGroups.size()); this.spawnGroup = spawnGroups.get(index); + Vector groupMembers = new Vector(); Point3D randomGroupPosition = getRandomPosition(creature.getWorldPosition(), 32, 100); int spawnCount = spawnGroup.getGroupMembersNumber(); - if (spawnCount<0) - spawnCount = Math.abs(spawnCount) + new Random().nextInt(spawnGroup.getMobiles().size()-Math.abs(spawnCount)); + if (spawnCount<0){ + int spawnCount2 = 1; + if (Math.abs(spawnCount) mobiles; private int mobileLimit; public LairTemplate(String name, String mobile, int mobileLimit, String lairCRC) { @@ -34,7 +37,14 @@ public class LairTemplate { this.mobileLimit = mobileLimit; this.lairCRC = lairCRC; } - + + public LairTemplate(String name, Vector mobiles, int mobileLimit, String lairCRC) { + this.name = name; + this.mobiles = mobiles; + this.mobileLimit = mobileLimit; + this.lairCRC = lairCRC; + } + public String getLairCRC() { return lairCRC; } @@ -67,4 +77,12 @@ public class LairTemplate { this.name = name; } + public Vector getMobiles() { + return mobiles; + } + + public void setMobiles(Vector mobiles) { + this.mobiles = mobiles; + } + } diff --git a/src/services/spawn/MobileTemplate.java b/src/services/spawn/MobileTemplate.java index 18505f7d..9cc539da 100644 --- a/src/services/spawn/MobileTemplate.java +++ b/src/services/spawn/MobileTemplate.java @@ -21,18 +21,23 @@ ******************************************************************************/ package services.spawn; +import java.util.ArrayList; import java.util.List; import java.util.Vector; import resources.datatables.Options; import resources.datatables.PvpStatus; +import resources.datatables.Factions; +import resources.datatables.FactionStatus; import resources.loot.LootGroup; public class MobileTemplate implements Cloneable { private Vector templates; - private int optionBitmask = Options.ATTACKABLE; + private int optionsBitmask = Options.ATTACKABLE; private int pvpBitmask = PvpStatus.Attackable; + private int factionstatus = FactionStatus.OnLeave; + private String faction = ""; private short level; private short minLevel; private short maxLevel; @@ -59,7 +64,7 @@ public class MobileTemplate implements Cloneable { private String meatType, milkType, boneType, hideType; private int meatAmount, milkAmount, boneAmount, hideAmount; private int respawnTime = 0; - private List lootGroups; + private List lootGroups = new ArrayList(); public Vector getTemplates() { @@ -70,18 +75,34 @@ public class MobileTemplate implements Cloneable { this.templates = templates; } - public int getOptionBitmask() { - return optionBitmask; + public int getOptionsBitmask() { + return optionsBitmask; } - public void setOptionBitmask(int optionBitmask) { - this.optionBitmask = optionBitmask; + public void setOptionsBitmask(int optionsBitmask) { + this.optionsBitmask = optionsBitmask; } public int getPvpBitmask() { return pvpBitmask; } + public String getFaction(){ + return faction; + } + + public void setFaction(String faction){ + this.faction = faction; + } + + public int getFactionStatus(){ + return factionstatus; + } + + public void setFactionStatus(int factionstatus){ + this.factionstatus = factionstatus; + } + public void setPvpBitmask(int pvpBitmask) { this.pvpBitmask = pvpBitmask; } diff --git a/src/services/spawn/SpawnService.java b/src/services/spawn/SpawnService.java index 2d30d0c3..0a4ba35c 100644 --- a/src/services/spawn/SpawnService.java +++ b/src/services/spawn/SpawnService.java @@ -100,11 +100,13 @@ public class SpawnService { creature.setWeaponId(mobileTemplate.getCustomWeapon().getObjectID()); }*/ - if(mobileTemplate.getLootGroups() != null) + if(mobileTemplate.getLootGroups() != null && !mobileTemplate.getLootGroups().isEmpty()) creature.setLootGroups(mobileTemplate.getLootGroups()); - creature.setOptionsBitmask(mobileTemplate.getOptionBitmask()); - creature.setPvPBitmask(mobileTemplate.getPvpBitmask()); + creature.setOptionsBitmask(mobileTemplate.getOptionsBitmask()); + creature.setFaction(mobileTemplate.getFaction()); + creature.setFactionStatus(mobileTemplate.getFactionStatus()); + creature.setPvpBitmask(mobileTemplate.getPvpBitmask()); creature.setStfFilename("mob/creature_names"); // TODO: set other STFs for NPCs other than creatures creature.setStfName(mobileTemplate.getCreatureName()); creature.setHeight(mobileTemplate.getScale()); @@ -118,7 +120,7 @@ public class SpawnService { level = mobileTemplate.getLevel(); } - if (mobileTemplate.getMinLevel()!=0 && mobileTemplate.getMaxLevel()!=0){ + if (mobileTemplate.getMinLevel()!=0 && mobileTemplate.getMaxLevel()!=0 && level == -1){ level = (short) (mobileTemplate.getMinLevel() + (new Random().nextInt(mobileTemplate.getMaxLevel()-mobileTemplate.getMinLevel()))); creature.setLevel(level); } @@ -252,10 +254,14 @@ public class SpawnService { return null; lairObject.setOptionsBitmask(Options.ATTACKABLE); - lairObject.setPvPBitmask(PvpStatus.Attackable); - lairObject.setMaxDamage(1000 * level); + lairObject.setPvpBitmask(PvpStatus.Attackable); + lairObject.setMaximumCondition(1000 * level); LairActor lairActor = new LairActor(lairObject, lairTemplate.getMobileName(), 10, level); + + if (lairTemplate.getMobiles()!=null) + lairActor = new LairActor(lairObject, lairTemplate.getMobiles(), 10, level); + lairObject.setAttachment("AI", lairActor); core.simulationService.add(lairObject, position.x, position.z, true); @@ -308,6 +314,10 @@ public class SpawnService { lairTemplates.put(name, new LairTemplate(name, mobile, mobileLimit, lairCRC)); } + public void addLairTemplate(String name, Vector mobiles, int mobileLimit, String lairCRC) { + lairTemplates.put(name, new LairTemplate(name, mobiles, mobileLimit, lairCRC)); + } + public void loadLairGroups() { Path p = Paths.get("scripts/mobiles/lairgroups"); FileVisitor fv = new SimpleFileVisitor() { diff --git a/src/services/trade/TradeService.java b/src/services/trade/TradeService.java index 08201aab..2b18e7b9 100644 --- a/src/services/trade/TradeService.java +++ b/src/services/trade/TradeService.java @@ -99,7 +99,7 @@ public class TradeService implements INetworkDispatch{ // creates a new trade session for the user who sent the request. It's given the objectID // that the player wants to trade with. - if (senderObject.getCombatFlag() == 0 && recieverObject.getCombatFlag() == 0) { + if (!senderObject.isInCombat() && !recieverObject.isInCombat()) { senderClient.getSession().setAttribute("tradeSession", recieverID); recieverObject.sendSystemMessage(senderObject.getCustomName() + " wants to trade with you.", (byte) 0);