diff --git a/scripts/mobiles/dynamicgroups/piket_plains_walker_group.py b/scripts/mobiles/dynamicgroups/piket_plains_walker_group.py index 84bdefe0..2d6914b7 100644 --- a/scripts/mobiles/dynamicgroups/piket_plains_walker_group.py +++ b/scripts/mobiles/dynamicgroups/piket_plains_walker_group.py @@ -8,6 +8,9 @@ def addDynamicGroup(core): dynamicGroup = DynamicSpawnGroup() mobileTemplates = Vector() mobileTemplates.add('piket_plains_walker') + mobileTemplates.add('piket_plains_walker') + mobileTemplates.add('piket_plains_walker') + mobileTemplates.add('piket_plains_walker') dynamicGroup.setMobiles(mobileTemplates) dynamicGroup.setGroupMembersNumber(-3) dynamicGroup.setName('piket_plains_walker_group') diff --git a/scripts/mobiles/generic/faction/imperial/Copy of imp_1st_lieutenant_20_2.py b/scripts/mobiles/generic/faction/imperial/Copy of imp_1st_lieutenant_20_2.py new file mode 100644 index 00000000..d9613112 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/Copy of imp_1st_lieutenant_20_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_imperial_first_lieutenant') + mobileTemplate.setLevel(20) + 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('imp_fst_lieutenant', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/imp_1st_lieutenant_20_2.py b/scripts/mobiles/generic/faction/imperial/imp_1st_lieutenant_20_2.py new file mode 100644 index 00000000..255a32fd --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/imp_1st_lieutenant_20_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_imperial_first_lieutenant') + 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("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('imp_fst_lieutenant_20_2', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/imp_comm_security_guard_15.py b/scripts/mobiles/generic/faction/imperial/imp_comm_security_guard_15.py new file mode 100644 index 00000000..3b0da7d6 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/imp_comm_security_guard_15.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') + mobileTemplate.setLevel(15) + 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_npe_imperial_officer.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_comm_security_guard_15', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/imp_comm_security_guard_67.py b/scripts/mobiles/generic/faction/imperial/imp_comm_security_guard_67.py new file mode 100644 index 00000000..e5e97604 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/imp_comm_security_guard_67.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') + mobileTemplate.setLevel(67) + 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(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_npe_imperial_officer.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_comm_security_guard_67', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/imp_comm_specialist_35.py b/scripts/mobiles/generic/faction/imperial/imp_comm_specialist_35.py new file mode 100644 index 00000000..4270e134 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/imp_comm_specialist_35.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_comm_operator_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(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_npe_imperial_officer.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_comm_specialist_77', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/imp_comm_specialist_77.py b/scripts/mobiles/generic/faction/imperial/imp_comm_specialist_77.py new file mode 100644 index 00000000..72807a6d --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/imp_comm_specialist_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_comm_operator_hard') + mobileTemplate.setLevel(35) + 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(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_npe_imperial_officer.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_comm_specialist_35', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/mp_commop_64.py b/scripts/mobiles/generic/faction/imperial/imp_commop_64.py similarity index 100% rename from scripts/mobiles/generic/faction/imperial/mp_commop_64.py rename to scripts/mobiles/generic/faction/imperial/imp_commop_64.py diff --git a/scripts/mobiles/generic/faction/imperial/imp_corporal_16.py b/scripts/mobiles/generic/faction/imperial/imp_corporal_16.py new file mode 100644 index 00000000..ed5aa57a --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/imp_corporal_16.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') + mobileTemplate.setLevel(16) + 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_npe_imperial_officer.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_corporal_16', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/imp_corporal_66.py b/scripts/mobiles/generic/faction/imperial/imp_corporal_66.py new file mode 100644 index 00000000..19bc409c --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/imp_corporal_66.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') + mobileTemplate.setLevel(66) + 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(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_npe_imperial_officer.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_corporal_66', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/imp_dead-eye_36.py b/scripts/mobiles/generic/faction/imperial/imp_dead-eye_36.py new file mode 100644 index 00000000..d10d1bd7 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/imp_dead-eye_36.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_sharpshooter_hard') + mobileTemplate.setLevel(36) + 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(True) + mobileTemplate.setFaction("imperial") + mobileTemplate.setFactionStatus(1) + + templates = Vector() + templates.add('object/mobile/shared_dressed_npe_imperial_officer.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_dead-eye_36', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/imp_dead-eye_78.py b/scripts/mobiles/generic/faction/imperial/imp_dead-eye_78.py new file mode 100644 index 00000000..30b40ec1 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/imp_dead-eye_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_sharpshooter_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(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_npe_imperial_officer.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_dead-eye_78', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/imp_exterminator.py b/scripts/mobiles/generic/faction/imperial/imp_exterminator.py new file mode 100644 index 00000000..3155520b --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/imp_exterminator.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_exterminator') + mobileTemplate.setLevel(28) + 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_imperial_exterminator.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_exterminator', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/imp_general.py b/scripts/mobiles/generic/faction/imperial/imp_general.py new file mode 100644 index 00000000..13254277 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/imp_general.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_general') + mobileTemplate.setLevel(28) + 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_imperial_general_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_general', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/generic/faction/imperial/imp_high_general.py b/scripts/mobiles/generic/faction/imperial/imp_high_general.py new file mode 100644 index 00000000..30603663 --- /dev/null +++ b/scripts/mobiles/generic/faction/imperial/imp_high_general.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_high_general') + mobileTemplate.setLevel(29) + 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_imperial_general_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_high_general', mobileTemplate) + return \ No newline at end of file diff --git a/scripts/mobiles/lairgroups/bol_lair_group_1.py b/scripts/mobiles/lairgroups/bol_lair_group_1.py new file mode 100644 index 00000000..0aff2d4d --- /dev/null +++ b/scripts/mobiles/lairgroups/bol_lair_group_1.py @@ -0,0 +1,11 @@ +# 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_bol_lair_1', -1, -1) + spawnTemplates.add(spawnTemplate) + core.spawnService.addLairGroup('bol_lair_group_1', spawnTemplates) + return diff --git a/scripts/mobiles/lairgroups/dantooine_nw_lair_group_1.py b/scripts/mobiles/lairgroups/dantooine_nw_lair_group_1.py new file mode 100644 index 00000000..bb93ad97 --- /dev/null +++ b/scripts/mobiles/lairgroups/dantooine_nw_lair_group_1.py @@ -0,0 +1,13 @@ +# 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_graul_mauler_lair_1', -1, -1) + spawnTemplates.add(spawnTemplate) + spawnTemplate = LairSpawnTemplate(-1, 'dantooine_voritor_lair_1', -1, -1) + spawnTemplates.add(spawnTemplate) + core.spawnService.addLairGroup('dantooine_nw_lair_group_1', spawnTemplates) + return diff --git a/scripts/mobiles/lairgroups/graul_lair_group_1.py b/scripts/mobiles/lairgroups/graul_lair_group_1.py new file mode 100644 index 00000000..6700ed59 --- /dev/null +++ b/scripts/mobiles/lairgroups/graul_lair_group_1.py @@ -0,0 +1,11 @@ +# 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_graul_lair_1', -1, -1) + spawnTemplates.add(spawnTemplate) + core.spawnService.addLairGroup('graul_lair_group_1', spawnTemplates) + return diff --git a/scripts/mobiles/lairgroups/graul_mauler_lair_group_1.py b/scripts/mobiles/lairgroups/graul_mauler_lair_group_1.py new file mode 100644 index 00000000..11142ef1 --- /dev/null +++ b/scripts/mobiles/lairgroups/graul_mauler_lair_group_1.py @@ -0,0 +1,11 @@ +# 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_graul_lair_1', -1, -1) + spawnTemplates.add(spawnTemplate) + core.spawnService.addLairGroup('graul_mauler_lair_group_1', spawnTemplates) + return diff --git a/scripts/mobiles/lairgroups/huurton_lair_group_1.py b/scripts/mobiles/lairgroups/huurton_lair_group_1.py new file mode 100644 index 00000000..662e23c1 --- /dev/null +++ b/scripts/mobiles/lairgroups/huurton_lair_group_1.py @@ -0,0 +1,11 @@ +# 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) + core.spawnService.addLairGroup('huurton_lair_group_1', spawnTemplates) + return diff --git a/scripts/mobiles/lairgroups/piket_longhorn_lair_group_1.py b/scripts/mobiles/lairgroups/piket_longhorn_lair_group_1.py new file mode 100644 index 00000000..d63ad6e7 --- /dev/null +++ b/scripts/mobiles/lairgroups/piket_longhorn_lair_group_1.py @@ -0,0 +1,11 @@ +# 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_piket_longhorn_lair_1', -1, -1) + spawnTemplates.add(spawnTemplate) + core.spawnService.addLairGroup('piket_longhorn_lair_group_1', spawnTemplates) + return diff --git a/scripts/mobiles/lairgroups/quenker_lair_group_1.py b/scripts/mobiles/lairgroups/quenker_lair_group_1.py new file mode 100644 index 00000000..ba1bf3e8 --- /dev/null +++ b/scripts/mobiles/lairgroups/quenker_lair_group_1.py @@ -0,0 +1,11 @@ +# 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_quenker_lair_1', -1, -1) + spawnTemplates.add(spawnTemplate) + core.spawnService.addLairGroup('quenker_lair_group_1', spawnTemplates) + return diff --git a/scripts/mobiles/lairgroups/thune_lair_group_1.py b/scripts/mobiles/lairgroups/thune_lair_group_1.py new file mode 100644 index 00000000..4d0b1767 --- /dev/null +++ b/scripts/mobiles/lairgroups/thune_lair_group_1.py @@ -0,0 +1,11 @@ +# 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_thune_lair_1', -1, -1) + spawnTemplates.add(spawnTemplate) + core.spawnService.addLairGroup('thune_lair_group_1', spawnTemplates) + return diff --git a/scripts/mobiles/lairgroups/voritor_lair_group_1.py b/scripts/mobiles/lairgroups/voritor_lair_group_1.py new file mode 100644 index 00000000..028ceab1 --- /dev/null +++ b/scripts/mobiles/lairgroups/voritor_lair_group_1.py @@ -0,0 +1,11 @@ +# 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_voritor_lair_1', -1, -1) + spawnTemplates.add(spawnTemplate) + core.spawnService.addLairGroup('voritor_lair_group_1', spawnTemplates) + return diff --git a/scripts/mobiles/lairgroups/voritor_lair_group_2.py b/scripts/mobiles/lairgroups/voritor_lair_group_2.py new file mode 100644 index 00000000..ece717a5 --- /dev/null +++ b/scripts/mobiles/lairgroups/voritor_lair_group_2.py @@ -0,0 +1,11 @@ +# 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_voritor_lair_2', -1, -1) + spawnTemplates.add(spawnTemplate) + core.spawnService.addLairGroup('voritor_lair_group_2', spawnTemplates) + return diff --git a/scripts/mobiles/lairs/dantooine_graul_mauler_lair_1.py b/scripts/mobiles/lairs/dantooine_graul_mauler_lair_1.py new file mode 100644 index 00000000..dfad5707 --- /dev/null +++ b/scripts/mobiles/lairs/dantooine_graul_mauler_lair_1.py @@ -0,0 +1,5 @@ +import sys +from java.util import Vector + +def addTemplate(core): + core.spawnService.addLairTemplate('dantooine_graul_mauler_lair_1', 'graul_mauler', 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_plains_walker_lair_1.py b/scripts/mobiles/lairs/dantooine_piket_plains_walker_lair_1.py new file mode 100644 index 00000000..b837fe8c --- /dev/null +++ b/scripts/mobiles/lairs/dantooine_piket_plains_walker_lair_1.py @@ -0,0 +1,7 @@ +import sys +from java.util import Vector + +def addTemplate(core): + mobileTemplates = Vector() + mobileTemplates.add('piket_plains_walker') + core.spawnService.addLairTemplate('dantooine_piket_plains_walker_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_thune_lair_1.py b/scripts/mobiles/lairs/dantooine_thune_lair_1.py new file mode 100644 index 00000000..93962a7a --- /dev/null +++ b/scripts/mobiles/lairs/dantooine_thune_lair_1.py @@ -0,0 +1,9 @@ +import sys +from java.util import Vector + +def addTemplate(core): + mobileTemplates = Vector() + mobileTemplates.add('thune') + mobileTemplates.add('thune_grassland_guardian') + mobileTemplates.add('thune_herd_leader') + core.spawnService.addLairTemplate('dantooine_thune_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_voritor_lair_1.py b/scripts/mobiles/lairs/dantooine_voritor_lair_1.py new file mode 100644 index 00000000..8e1afee4 --- /dev/null +++ b/scripts/mobiles/lairs/dantooine_voritor_lair_1.py @@ -0,0 +1,5 @@ +import sys +from java.util import Vector + +def addTemplate(core): + core.spawnService.addLairTemplate('dantooine_voritor_lair_1', 'voritor_lizard', 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_voritor_lair_2.py b/scripts/mobiles/lairs/dantooine_voritor_lair_2.py new file mode 100644 index 00000000..9352c9f3 --- /dev/null +++ b/scripts/mobiles/lairs/dantooine_voritor_lair_2.py @@ -0,0 +1,11 @@ +import sys +from java.util import Vector + +def addTemplate(core): + mobileTemplates = Vector() + mobileTemplates.add('voritor_lizard') + mobileTemplates.add('horned_voritor_jungle_lizard') + mobileTemplates.add('vexed_voritor_lizard') + mobileTemplates.add('voritor_dasher') + mobileTemplates.add('spiked_slasher') + core.spawnService.addLairTemplate('dantooine_voritor_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/rori/emperors_hand.py b/scripts/mobiles/rori/emperors_hand.py index 3b80e747..d878eb8b 100644 --- a/scripts/mobiles/rori/emperors_hand.py +++ b/scripts/mobiles/rori/emperors_hand.py @@ -15,7 +15,7 @@ def addTemplate(core): mobileTemplate.setMinSpawnDistance(4) mobileTemplate.setMaxSpawnDistance(8) mobileTemplate.setDeathblow(True) - mobileTemplate.setScale(1.3) + mobileTemplate.setScale(1) mobileTemplate.setAssistRange(0) mobileTemplate.setStalker(True) mobileTemplate.setOptionsBitmask(192) diff --git a/scripts/mobiles/spawnareas/dantooine_central_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_central_dyn_1.py deleted file mode 100644 index 60f3233e..00000000 --- a/scripts/mobiles/spawnareas/dantooine_central_dyn_1.py +++ /dev/null @@ -1,12 +0,0 @@ -# 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, 1064, -839, 2273, 'dantooine') - return diff --git a/scripts/mobiles/spawnareas/dantooine_central_dyn_2.py b/scripts/mobiles/spawnareas/dantooine_central_dyn_2.py deleted file mode 100644 index 30dc142b..00000000 --- a/scripts/mobiles/spawnareas/dantooine_central_dyn_2.py +++ /dev/null @@ -1,12 +0,0 @@ -# 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, -2539, 716, 2109, 'dantooine') - return diff --git a/scripts/mobiles/spawnareas/dantooine_central_dyn_3.py b/scripts/mobiles/spawnareas/dantooine_central_dyn_3.py deleted file mode 100644 index 0bdc52f1..00000000 --- a/scripts/mobiles/spawnareas/dantooine_central_dyn_3.py +++ /dev/null @@ -1,12 +0,0 @@ -# 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_central_mixed_1.py b/scripts/mobiles/spawnareas/dantooine_central_mixed_1.py new file mode 100644 index 00000000..5a45beeb --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_central_mixed_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): + mixedGroups = Vector() + mixedGroups.add('huurton_lair_group_1') + mixedGroups.add('piket_longhorn_lair_group_1') + mixedGroups.add('bol_lair_group_1') + core.spawnService.addMixedSpawnArea(mixedGroups, -2580, 737, 2068, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_central_mixed_2.py b/scripts/mobiles/spawnareas/dantooine_central_mixed_2.py new file mode 100644 index 00000000..8da5820c --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_central_mixed_2.py @@ -0,0 +1,13 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + mixedGroups = Vector() + mixedGroups.add('kunga_central_group_1') + mixedGroups.add('huurton_lair_group_1') + mixedGroups.add('thune_lair_group_1') + mixedGroups.add('graul_lair_group_1') + mixedGroups.add('huurton_group_2') + core.spawnService.addMixedSpawnArea(mixedGroups, 1044, -798, 2252, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_central_mixed_3.py b/scripts/mobiles/spawnareas/dantooine_central_mixed_3.py new file mode 100644 index 00000000..7730e79a --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_central_mixed_3.py @@ -0,0 +1,13 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + mixedGroups = Vector() + mixedGroups.add('mokk_group_1') + mixedGroups.add('piket_longhorn_lair_group_1') + mixedGroups.add('huurton_lair_group_1') + mixedGroups.add('bol_lair_group_1') + mixedGroups.add('huurton_group_1') + core.spawnService.addMixedSpawnArea(mixedGroups, -1740, -3297, 1822, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_east_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_east_dyn_1.py deleted file mode 100644 index ad103142..00000000 --- a/scripts/mobiles/spawnareas/dantooine_east_dyn_1.py +++ /dev/null @@ -1,9 +0,0 @@ -# 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, 5713, -1146, 2416, 'dantooine') - return diff --git a/scripts/mobiles/spawnareas/dantooine_east_dyn_2.py b/scripts/mobiles/spawnareas/dantooine_east_dyn_2.py deleted file mode 100644 index 15e6bece..00000000 --- a/scripts/mobiles/spawnareas/dantooine_east_dyn_2.py +++ /dev/null @@ -1,10 +0,0 @@ -# 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, 5324, -5775, 2560, 'dantooine') - return diff --git a/scripts/mobiles/spawnareas/dantooine_east_dyn_3.py b/scripts/mobiles/spawnareas/dantooine_east_dyn_3.py deleted file mode 100644 index 51e027c3..00000000 --- a/scripts/mobiles/spawnareas/dantooine_east_dyn_3.py +++ /dev/null @@ -1,11 +0,0 @@ -# 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, 3461, 1331, 2662, 'dantooine') - return diff --git a/scripts/mobiles/spawnareas/dantooine_east_mixed_1.py b/scripts/mobiles/spawnareas/dantooine_east_mixed_1.py new file mode 100644 index 00000000..b80c96c0 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_east_mixed_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): + mixedGroups = Vector() + mixedGroups.add('voritors_east_group_1') + mixedGroups.add('voritor_lair_group_1') + core.spawnService.addMixedSpawnArea(mixedGroups, 5672, -1146, 2396, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_east_mixed_2.py b/scripts/mobiles/spawnareas/dantooine_east_mixed_2.py new file mode 100644 index 00000000..5dabb9c8 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_east_mixed_2.py @@ -0,0 +1,9 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + mixedGroups = Vector() + mixedGroups.add('voritor_lair_group_2') + core.spawnService.addMixedSpawnArea(mixedGroups, 5345, -5795, 2560, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_east_mixed_3.py b/scripts/mobiles/spawnareas/dantooine_east_mixed_3.py new file mode 100644 index 00000000..b2debb9f --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_east_mixed_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): + mixedGroups = Vector() + mixedGroups.add('piket_plains_walker_lair_group') + mixedGroups.add('quenker_relic_reaper_group') + mixedGroups.add('thune_lair_group_1') + core.spawnService.addMixedSpawnArea(mixedGroups, 3440, 1310, 2641, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_mining_lair.py b/scripts/mobiles/spawnareas/dantooine_mining_lair.py index f3fba3f0..a4e6734a 100644 --- a/scripts/mobiles/spawnareas/dantooine_mining_lair.py +++ b/scripts/mobiles/spawnareas/dantooine_mining_lair.py @@ -1,6 +1,7 @@ # Spawn Area file created with PSWG Planetary Spawn Tool import sys +from java.util import Vector def addSpawnArea(core): - core.spawnService.addLairSpawnArea('mixed_lair_group_1', 0, 2355, 1024, 'dantooine') + #core.spawnService.addLairSpawnArea('mixed_lair_group_1', 0, 2355, 1024, 'dantooine') return diff --git a/scripts/mobiles/spawnareas/dantooine_mining_mixed.py b/scripts/mobiles/spawnareas/dantooine_mining_mixed.py new file mode 100644 index 00000000..7fd81cad --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_mining_mixed.py @@ -0,0 +1,11 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + mixedGroups = Vector() + mixedGroups.add('piket_plains_walker_group') + mixedGroups.add('mixed_lair_group_1') + mixedGroups.add('naboo_starter') + core.spawnService.addMixedSpawnArea(mixedGroups, 0, 2355, 1024, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_north_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_north_dyn_1.py deleted file mode 100644 index cb16dfb9..00000000 --- a/scripts/mobiles/spawnareas/dantooine_north_dyn_1.py +++ /dev/null @@ -1,11 +0,0 @@ -# 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, 61, 6615, 1966, 'dantooine') - return diff --git a/scripts/mobiles/spawnareas/dantooine_north_dyn_2.py b/scripts/mobiles/spawnareas/dantooine_north_dyn_2.py deleted file mode 100644 index 9a2115ba..00000000 --- a/scripts/mobiles/spawnareas/dantooine_north_dyn_2.py +++ /dev/null @@ -1,12 +0,0 @@ -# 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, -1433, 3809, 1064, 'dantooine') - return diff --git a/scripts/mobiles/spawnareas/dantooine_north_dyn_3.py b/scripts/mobiles/spawnareas/dantooine_north_dyn_3.py deleted file mode 100644 index 89083ea3..00000000 --- a/scripts/mobiles/spawnareas/dantooine_north_dyn_3.py +++ /dev/null @@ -1,12 +0,0 @@ -# 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, 778, 4280, 1187, 'dantooine') - return diff --git a/scripts/mobiles/spawnareas/dantooine_north_mixed_1.py b/scripts/mobiles/spawnareas/dantooine_north_mixed_1.py new file mode 100644 index 00000000..0105e3c0 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_north_mixed_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): + mixedGroups = Vector() + mixedGroups.add('force_sensitives_wild_1') + mixedGroups.add('graul_mauler_lair_group_1') + mixedGroups.add('graul_mauler_nw_group_1') + core.spawnService.addMixedSpawnArea(mixedGroups, 20, 6574, 1966, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_north_mixed_2.py b/scripts/mobiles/spawnareas/dantooine_north_mixed_2.py new file mode 100644 index 00000000..f24e179b --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_north_mixed_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): + mixedGroups = Vector() + mixedGroups.add('huurton_lair_group_1') + mixedGroups.add('bol_lair_group_1') + mixedGroups.add('mokk_group_1') + mixedGroups.add('quenker_lair_group_1') + core.spawnService.addMixedSpawnArea(mixedGroups, -1454, 3829, 1044, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_north_mixed_3.py b/scripts/mobiles/spawnareas/dantooine_north_mixed_3.py new file mode 100644 index 00000000..237654cb --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_north_mixed_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): + mixedGroups = Vector() + mixedGroups.add('quenker_lair_group_1') + mixedGroups.add('huurton_lair_group_1') + mixedGroups.add('bol_lair_group_1') + mixedGroups.add('mokk_group_1') + core.spawnService.addMixedSpawnArea(mixedGroups, 757, 4321, 1167, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_nw_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_nw_dyn_1.py deleted file mode 100644 index 2a53c883..00000000 --- a/scripts/mobiles/spawnareas/dantooine_nw_dyn_1.py +++ /dev/null @@ -1,11 +0,0 @@ -# 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, -4751, 4935, 3215, 'dantooine') - return diff --git a/scripts/mobiles/spawnareas/dantooine_nw_mixed_1.py b/scripts/mobiles/spawnareas/dantooine_nw_mixed_1.py new file mode 100644 index 00000000..1ffb716c --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_nw_mixed_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): + mixedGroups = Vector() + mixedGroups.add('dantooine_nw_lair_group_1') + mixedGroups.add('jantas_nw_group_1') + core.spawnService.addMixedSpawnArea(mixedGroups, -4751, 4935, 3200, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_south_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_south_dyn_1.py deleted file mode 100644 index a0720f13..00000000 --- a/scripts/mobiles/spawnareas/dantooine_south_dyn_1.py +++ /dev/null @@ -1,10 +0,0 @@ -# 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, 1904, -3624, 2211, 'dantooine') - return diff --git a/scripts/mobiles/spawnareas/dantooine_south_dyn_2.py b/scripts/mobiles/spawnareas/dantooine_south_dyn_2.py deleted file mode 100644 index 15810219..00000000 --- a/scripts/mobiles/spawnareas/dantooine_south_dyn_2.py +++ /dev/null @@ -1,14 +0,0 @@ -# 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, -2109, -7045, 2600, 'dantooine') - return diff --git a/scripts/mobiles/spawnareas/dantooine_south_mixed_1.py b/scripts/mobiles/spawnareas/dantooine_south_mixed_1.py new file mode 100644 index 00000000..28c50059 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_south_mixed_1.py @@ -0,0 +1,14 @@ +# Spawn Area file created with PSWG Planetary Spawn Tool +import sys +from java.util import Vector + +def addSpawnArea(core): + mixedGroups = Vector() + mixedGroups.add('jantas_nw_group_1') + mixedGroups.add('graul_mauler_lair_group_1') + mixedGroups.add('quenker_relic_reaper_group') + mixedGroups.add('voritor_lair_group_1') + mixedGroups.add('thune_lair_group_1') + mixedGroups.add('bol_lair_group_1') + core.spawnService.addMixedSpawnArea(mixedGroups, -2109, -6983, 2580, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_south_mixed_3.py b/scripts/mobiles/spawnareas/dantooine_south_mixed_3.py new file mode 100644 index 00000000..addd1210 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_south_mixed_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): + mixedGroups = Vector() + mixedGroups.add('quenker_lair_group_1') + mixedGroups.add('huurton_lair_group_1') + mixedGroups.add('quenker_group_south_1') + core.spawnService.addMixedSpawnArea(mixedGroups, 1495, -3502, 2396, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_sw_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_sw_dyn_1.py deleted file mode 100644 index e68d67d8..00000000 --- a/scripts/mobiles/spawnareas/dantooine_sw_dyn_1.py +++ /dev/null @@ -1,12 +0,0 @@ -# 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, -5898, -4218, 2191, 'dantooine') - return diff --git a/scripts/mobiles/spawnareas/dantooine_sw_mixed_1.py b/scripts/mobiles/spawnareas/dantooine_sw_mixed_1.py new file mode 100644 index 00000000..57fa09a7 --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_sw_mixed_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): + mixedGroups = Vector() + mixedGroups.add('mokk_group_1') + mixedGroups.add('voritor_lair_group_1') + mixedGroups.add('graul_mauler_lair_group_1') + mixedGroups.add('quenker_relic_reaper_group') + core.spawnService.addMixedSpawnArea(mixedGroups, -5877, -4239, 2170, 'dantooine') + return diff --git a/scripts/mobiles/spawnareas/dantooine_west_dyn_1.py b/scripts/mobiles/spawnareas/dantooine_west_dyn_1.py deleted file mode 100644 index 172cdf5e..00000000 --- a/scripts/mobiles/spawnareas/dantooine_west_dyn_1.py +++ /dev/null @@ -1,11 +0,0 @@ -# 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, -6369, -102, 1966, 'dantooine') - return diff --git a/scripts/mobiles/spawnareas/dantooine_west_mixed_1.py b/scripts/mobiles/spawnareas/dantooine_west_mixed_1.py new file mode 100644 index 00000000..a0e8156a --- /dev/null +++ b/scripts/mobiles/spawnareas/dantooine_west_mixed_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): + mixedGroups = Vector() + mixedGroups.add('kunga_central_group_1') + mixedGroups.add('piket_longhorn_lair_group_1') + mixedGroups.add('thune_lair_group_1') + mixedGroups.add('piket_longhorn_group_1') + core.spawnService.addMixedSpawnArea(mixedGroups, -6410, 0, 1986, 'dantooine') + return diff --git a/src/services/spawn/DynamicSpawnGroup.java b/src/services/spawn/DynamicSpawnGroup.java index da3df12e..ceaed7d1 100644 --- a/src/services/spawn/DynamicSpawnGroup.java +++ b/src/services/spawn/DynamicSpawnGroup.java @@ -23,7 +23,7 @@ package services.spawn; import java.util.Vector; -public class DynamicSpawnGroup { +public class DynamicSpawnGroup extends SpawnGroup { private Vector mobiles; private String name; diff --git a/src/services/spawn/LairGroupTemplate.java b/src/services/spawn/LairGroupTemplate.java index 4cca3ea2..49e816ba 100644 --- a/src/services/spawn/LairGroupTemplate.java +++ b/src/services/spawn/LairGroupTemplate.java @@ -2,7 +2,7 @@ package services.spawn; import java.util.Vector; -public class LairGroupTemplate { +public class LairGroupTemplate extends SpawnGroup{ private Vector lairSpawnTemplates; private String name; diff --git a/src/services/spawn/MixedSpawnArea.java b/src/services/spawn/MixedSpawnArea.java new file mode 100644 index 00000000..e0b0a68b --- /dev/null +++ b/src/services/spawn/MixedSpawnArea.java @@ -0,0 +1,430 @@ +/******************************************************************************* + * 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 services.spawn; + +import java.util.Collections; +import java.util.Random; +import java.util.Vector; + +import resources.datatables.Options; +import resources.datatables.Posture; +import main.NGECore; +import net.engio.mbassy.listener.Handler; +import resources.common.collidables.AbstractCollidable; +import resources.common.collidables.AbstractCollidable.EnterEvent; +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; + +public class MixedSpawnArea extends SpawnArea { + + private SpawnGroup spawnGroup; + private Vector spawnGroups; + private Vector mobiles = new Vector(); + private Vector lairs = new Vector(); + private long lastSpawnTime = 0; + + public MixedSpawnArea(Planet planet, AbstractCollidable area, SpawnGroup spawnGroup) { + super(planet, area); + this.spawnGroup = spawnGroup; + } + + public MixedSpawnArea(Planet planet, AbstractCollidable area, Vector spawnGroups) { + super(planet, area); + this.spawnGroups = spawnGroups; + } + + @Override + @Handler + 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 && !creature.getOption(Options.MOUNT)) + return; + + creature.getEventBus().subscribe(this); + // spawn some creatures + if (spawnGroups==null){ + if (spawnGroup.getGroupMembersNumber()==-1){ + for(int i = 0; i < 5; i++) + spawnCreature(creature); + } else { + Vector groupMembers = new Vector(); + Point3D randomGroupPosition = getRandomPosition(creature.getWorldPosition(), 32, 100); + for(int i = 0; i < spawnGroup.getGroupMembersNumber(); i++) {// A group with a specified number of members + CreatureObject spawnedCreature = spawnCreatureMember(creature, groupMembers, randomGroupPosition, i); + if (spawnedCreature!=null) + groupMembers.add(spawnedCreature); + } + } + } else { + // select randomly one of the spawngroups -> minimizes number of collidables for areas with multiple different NPC groups + // One spawnarea -> many NPC groups + + + int index = new Random().nextInt(spawnGroups.size()); + this.spawnGroup = spawnGroups.get(index); + if (this.spawnGroup instanceof DynamicSpawnGroup){ + Vector groupMembers = new Vector(); + Point3D randomGroupPosition = getRandomPosition(creature.getWorldPosition(), 32, 100); + int spawnCount = spawnGroup.getGroupMembersNumber(); + if (spawnCount<0){ + int spawnCount2 = 1; + if (Math.abs(spawnCount) groupMembers = new Vector(); + Point3D randomGroupPosition = getRandomPosition(creature.getWorldPosition(), 32, 100); + for(int i = 0; i < spawnGroup.getGroupMembersNumber(); i++) {// A group with a specified number of members + CreatureObject spawnedCreature = spawnCreatureMember(creature, groupMembers, randomGroupPosition, i); + if (spawnedCreature!=null) + groupMembers.add(spawnedCreature); + } + } + } else { + // select randomly one of the spawngroups -> minimizes number of collidables for areas with multiple different NPC groups + // One spawnarea -> many NPC groups + int index = new Random().nextInt(spawnGroups.size()); + this.spawnGroup = spawnGroups.get(index); + if (this.spawnGroup instanceof DynamicSpawnGroup){ + Vector groupMembers = new Vector(); + //Point3D randomGroupPosition = getRandomPosition(creature.getWorldPosition(), 32, 100); + Point3D randomGroupPosition = getRandomPosition(creature.getWorldPosition(), 32, spawnGroup.getMinSpawnDistance()+10); + int spawnCount = spawnGroup.getGroupMembersNumber(); + if (spawnCount<0){ + int spawnCount2 = 1; + if (Math.abs(spawnCount) it = mobiles.iterator(); // This stops further execution of this method for some reason +// it.forEachRemaining(mobile -> { +// if(mobile.getPosture() == Posture.Dead) +// it.remove(); +// }); + + mobiles.removeAll(Collections.singleton(null)); + Vector removers = new Vector(); + for (CreatureObject ob : mobiles){ + if (ob.getPosture() == Posture.Dead) + removers.add(ob); + } + mobiles.removeAll(removers); + + if(mobiles.size() >= spawnGroup.getMaxSpawns()) + return; + + boolean foundPos = false; + int tries = 0; + Point3D randomPosition = null; + + while(!foundPos && ++tries < 10) { + + randomPosition = getRandomPosition(creature.getWorldPosition(), 32.f, 200.f); + + if(randomPosition == null) + return; + + TerrainService terrainSvc = core.terrainService; + + float height = terrainSvc.getHeight(getPlanet().getID(), randomPosition.x, randomPosition.z); + randomPosition.y = height; + + if (mobiles.size()>0){ // Fix, mobiles must be filled first, before doing this check + for(CreatureObject mobile : mobiles) { + if(mobile.getWorldPosition().getDistance(randomPosition) > spawnGroup.getMinSpawnDistance()) + foundPos = true; + } + } else {foundPos = true;} + + if(!terrainSvc.canBuildAtPosition(creature, randomPosition.x, randomPosition.z)) + foundPos = false; + + } + + if(!foundPos) + return; + + Random random = new Random(); + + String mobileTemplate = spawnGroup.getMobiles().get(random.nextInt(spawnGroup.getMobiles().size())); + CreatureObject spawnedCreature = core.spawnService.spawnCreature(mobileTemplate, getPlanet().getName(), 0, randomPosition.x, randomPosition.y, randomPosition.z); + if(spawnedCreature != null){ + mobiles.add(spawnedCreature); + } + + } + + + private CreatureObject spawnCreatureMember(CreatureObject creature, Vector groupMembers, Point3D randomGroupPosition, int spawnIndex) { + + NGECore core = NGECore.getInstance(); + +// Iterator it = mobiles.iterator(); // This stops further execution of this method for some reason +// it.forEachRemaining(mobile -> { +// if(mobile.getPosture() == Posture.Dead) +// it.remove(); +// }); + + mobiles.removeAll(Collections.singleton(null)); + Vector removers = new Vector(); + for (CreatureObject ob : mobiles){ + if (ob.getPosture() == Posture.Dead) + removers.add(ob); + } + mobiles.removeAll(removers); + +// if(mobiles.size() >= spawnGroup.getMaxSpawns()) +// return; + + boolean foundPos = false; + int tries = 0; + Point3D randomPosition = null; + String template = spawnGroup.getMobiles().get(spawnIndex); + MobileTemplate mobileTemplate = NGECore.getInstance().spawnService.getMobileTemplate(template); + if (mobileTemplate==null){ + System.out.println("mobileTemplate==null for template " + template); + return null; + } + + while(!foundPos && ++tries < 30) { + + randomPosition = getRandomPosition(randomGroupPosition, mobileTemplate.getMinSpawnDistance(), mobileTemplate.getMaxSpawnDistance()); + + if(randomPosition == null){ + //System.out.println("randomPosition == null"); + return null; + } + + TerrainService terrainSvc = core.terrainService; + + float height = terrainSvc.getHeight(getPlanet().getID(), randomPosition.x, randomPosition.z); + randomPosition.y = height; + + if (mobiles.size()>0){ // Fix, mobiles must be filled first, before doing this check + boolean minDistViolated = false; + for(CreatureObject mobile : mobiles) { + if(mobile.getWorldPosition().getDistance(randomPosition) < spawnGroup.getMinSpawnDistance() && ! groupMembers.contains(mobile)){ + minDistViolated = true; // Distance to other nearby groups + //System.out.println("minDistViolated " + mobile.getWorldPosition().getDistance(randomPosition) + "mobile: " + mobile.getTemplate()); + } + } + for (LairActor actor : lairs){ + if(actor.getLairObject().getWorldPosition().getDistance(randomPosition) < spawnGroup.getMinSpawnDistance()){ + minDistViolated = true; // Distance to other nearby lairs! + //System.out.println("minDistViolated " + mobile.getWorldPosition().getDistance(randomPosition) + "mobile: " + mobile.getTemplate()); + } + } + if (minDistViolated) + foundPos = false; + else + foundPos = true; + } else {foundPos = true;} + + if(!terrainSvc.canBuildAtPosition(creature, randomPosition.x, randomPosition.z)) + foundPos = false; + + } + + if(!foundPos){ + //System.out.println("mobileTemplate pos not found " + mobileTemplate.getCreatureName()); + return null; + } + //System.out.println("mobileTemplate pos found " + mobileTemplate.getCreatureName()); + + CreatureObject spawnedCreature = core.spawnService.spawnCreature(template, getPlanet().getName(), 0, randomPosition.x, randomPosition.y, randomPosition.z); + if(spawnedCreature != null){ + mobiles.add(spawnedCreature); + //System.err.println("Creature ADDED " + spawnedCreature.getTemplate()); + } else + { + //System.out.println("Creature not spawned" + template); + } + + return spawnedCreature; + } + + // LairSpawnArea class methods + public void spawnLair(CreatureObject object) { + + NGECore core = NGECore.getInstance(); + + LairGroupTemplate lairGroup = (LairGroupTemplate)this.spawnGroup; + + Vector lairTemplates = lairGroup.getLairSpawnTemplates(); + + if(lairGroup == null || lairTemplates.isEmpty()) + return; + + if((System.currentTimeMillis() - lastSpawnTime) < 10000) + return; + + Point3D randomPosition = getRandomPosition(object.getWorldPosition(), 32.f, 200.f); + + if(randomPosition == null) + return; + + TerrainService terrainSvc = core.terrainService; + + float height = terrainSvc.getHeight(getPlanet().getID(), randomPosition.x, randomPosition.z); + randomPosition.y = height; + + for(LairActor otherLair : lairs) { + if(otherLair.getLairObject().getWorldPosition().getDistance(randomPosition) < 30) + return; + } + + if(!terrainSvc.canBuildAtPosition(object, randomPosition.x, randomPosition.z)) + return; + + Random random = new Random(); + + LairSpawnTemplate lairSpawn = lairTemplates.get(random.nextInt(lairTemplates.size())); + + int level = -1; // If level equals -1 then the mobile template CL will be used! + if (lairSpawn.getMinLevel() != -1 && lairSpawn.getMaxLevel()!=-1) + level = random.nextInt((int) (lairSpawn.getMaxLevel() - lairSpawn.getMinLevel()) + 1) + lairSpawn.getMinLevel(); + + + + LairActor lairActor = core.spawnService.spawnLair(lairSpawn.getLairTemplate(), getPlanet(), randomPosition, (short) level); + if(lairActor == null) + return; + lairs.add(lairActor); + lastSpawnTime = System.currentTimeMillis(); + + } + +} diff --git a/src/services/spawn/SpawnGroup.java b/src/services/spawn/SpawnGroup.java new file mode 100644 index 00000000..b0d62402 --- /dev/null +++ b/src/services/spawn/SpawnGroup.java @@ -0,0 +1,46 @@ +/******************************************************************************* + * 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 services.spawn; + +import java.util.Vector; + +// Making this an abstract class, not having to implement unused methods in either spawn group classes +public abstract class SpawnGroup { + + public SpawnGroup() {} + + public int getGroupMembersNumber(){ + return 0; + } + + public Vector getMobiles() { + return new Vector(); + } + + public int getMinSpawnDistance(){ + return 0; + } + + public int getMaxSpawns(){ + return 0; + } +} diff --git a/src/services/spawn/SpawnService.java b/src/services/spawn/SpawnService.java index b3edec85..4d6c4084 100644 --- a/src/services/spawn/SpawnService.java +++ b/src/services/spawn/SpawnService.java @@ -418,6 +418,28 @@ public class SpawnService { spawnAreas.get(planet).add(dynamicSpawnArea); core.simulationService.addCollidable(collidableCircle, x, z); } + + public void addMixedSpawnArea(Vector passedGroups, float x, float z, float radius, String planetName) { + Vector mixedSpawnGroups = new Vector(); + for (String template : passedGroups){ + if (dynamicGroupTemplates.get(template)!=null){ + mixedSpawnGroups.add(dynamicGroupTemplates.get(template)); + } + if (lairGroupTemplates.get(template)!=null){ + mixedSpawnGroups.add(lairGroupTemplates.get(template)); + } + if(dynamicGroupTemplates.get(template) == null && lairGroupTemplates.get(template)==null) + return; + } + + Planet planet = core.terrainService.getPlanetByName(planetName); + if(mixedSpawnGroups == null || mixedSpawnGroups.size() == 0 || planet == null) + return; + CollidableCircle collidableCircle = new CollidableCircle(new Point3D(x, 0, z), radius, planet); + MixedSpawnArea dynamicSpawnArea = new MixedSpawnArea(planet, collidableCircle, mixedSpawnGroups); + spawnAreas.get(planet).add(dynamicSpawnArea); + core.simulationService.addCollidable(collidableCircle, x, z); + } public Map getMobileTemplates() { return mobileTemplates;