This commit is contained in:
Waverunner
2014-05-23 18:22:05 -04:00
66 changed files with 1334 additions and 163 deletions
@@ -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')
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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')
@@ -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')
@@ -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')
@@ -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')
@@ -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')
+1 -1
View File
@@ -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)
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
+1 -1
View File
@@ -23,7 +23,7 @@ package services.spawn;
import java.util.Vector;
public class DynamicSpawnGroup {
public class DynamicSpawnGroup extends SpawnGroup {
private Vector<String> mobiles;
private String name;
+1 -1
View File
@@ -2,7 +2,7 @@ package services.spawn;
import java.util.Vector;
public class LairGroupTemplate {
public class LairGroupTemplate extends SpawnGroup{
private Vector<LairSpawnTemplate> lairSpawnTemplates;
private String name;
+430
View File
@@ -0,0 +1,430 @@
/*******************************************************************************
* Copyright (c) 2013 <Project SWG>
*
* This File is part of NGECore2.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Using NGEngine to work with NGECore2 is making a combined work based on NGEngine.
* Therefore all terms and conditions of the GNU Lesser General Public License cover the combination.
******************************************************************************/
package 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<SpawnGroup> spawnGroups;
private Vector<CreatureObject> mobiles = new Vector<CreatureObject>();
private Vector<LairActor> lairs = new Vector<LairActor>();
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<SpawnGroup> 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<CreatureObject> groupMembers = new Vector<CreatureObject>();
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<CreatureObject> groupMembers = new Vector<CreatureObject>();
Point3D randomGroupPosition = getRandomPosition(creature.getWorldPosition(), 32, 100);
int spawnCount = spawnGroup.getGroupMembersNumber();
if (spawnCount<0){
int spawnCount2 = 1;
if (Math.abs(spawnCount)<spawnGroup.getMobiles().size())
spawnCount2 = Math.abs(spawnCount) + new Random().nextInt(spawnGroup.getMobiles().size()-Math.abs(spawnCount));
else
spawnCount2 = Math.abs(spawnCount);
spawnCount = Math.max(Math.abs(spawnCount), spawnCount2);
}
for(int i = 0; i < spawnCount; i++) {// A group with a specified or random number of members
CreatureObject spawnedCreature = spawnCreatureMember(creature, groupMembers, randomGroupPosition, i);
if (spawnedCreature!=null)
groupMembers.add(spawnedCreature);
}
}
if (this.spawnGroup instanceof LairGroupTemplate){
object = event.object;
if(object == null || !(object instanceof CreatureObject))
return;
creature = (CreatureObject) object;
if(creature.getSlottedObject("ghost") == null && !creature.getOption(Options.MOUNT))
return;
spawnLair(creature);
creature.getEventBus().subscribe(this);
}
}
}
@Override
@Handler
public void onExit(ExitEvent event) {
SWGObject object = event.object;
if(object == null || !(object instanceof CreatureObject))
return;
CreatureObject creature = (CreatureObject) object;
if(creature.getSlottedObject("ghost") == null && !creature.getOption(Options.MOUNT))
return;
creature.getEventBus().unsubscribe(this);
}
@Handler
public void onMove(MoveEvent event) {
SWGObject object = event.object;
//if(object == null || !(object instanceof CreatureObject) || object.getContainer() != null)
// return;
// Mounts should not be excluded to trigger spawns as it was on live also
if(object == null || !(object instanceof CreatureObject))
return;
CreatureObject creature = (CreatureObject) object;
//System.out.println("MOUNT " + creature.getOption(Options.MOUNT) + " name " + creature.getTemplate());
if(creature.getSlottedObject("ghost") == null && !creature.getOption(Options.MOUNT))
return;
if (spawnGroups==null){
if (spawnGroup.getGroupMembersNumber()==-1){
if(new Random().nextFloat() <= 0.25)
spawnCreature(creature);
} else
{
Vector<CreatureObject> groupMembers = new Vector<CreatureObject>();
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<CreatureObject> groupMembers = new Vector<CreatureObject>();
//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)<spawnGroup.getMobiles().size())
spawnCount2 = Math.abs(spawnCount) + new Random().nextInt(spawnGroup.getMobiles().size()-Math.abs(spawnCount));
else
spawnCount2 = Math.abs(spawnCount);
spawnCount = Math.max(Math.abs(spawnCount), spawnCount2);
}
for(int i = 0; i < spawnCount; i++) {// A group with a specified or random number of members
CreatureObject spawnedCreature = spawnCreatureMember(creature, groupMembers, randomGroupPosition, i);
if (spawnedCreature!=null)
groupMembers.add(spawnedCreature);
}
}
if (this.spawnGroup instanceof LairGroupTemplate){
object = event.object;
//if(object == null || !(object instanceof CreatureObject) || object.getContainer() != null)
// return;
if(object == null || !(object instanceof CreatureObject))
return;
creature = (CreatureObject) object;
if(creature.getSlottedObject("ghost") == null && !creature.getOption(Options.MOUNT))
return;
if(new Random().nextFloat() <= 0.05)
spawnLair(creature);
}
}
}
private void spawnCreature(CreatureObject creature) {
NGECore core = NGECore.getInstance();
// Iterator<CreatureObject> 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<CreatureObject> removers = new Vector<CreatureObject>();
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<CreatureObject> groupMembers, Point3D randomGroupPosition, int spawnIndex) {
NGECore core = NGECore.getInstance();
// Iterator<CreatureObject> 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<CreatureObject> removers = new Vector<CreatureObject>();
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<LairSpawnTemplate> 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();
}
}
+46
View File
@@ -0,0 +1,46 @@
/*******************************************************************************
* Copyright (c) 2013 <Project SWG>
*
* This File is part of NGECore2.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Using NGEngine to work with NGECore2 is making a combined work based on NGEngine.
* Therefore all terms and conditions of the GNU Lesser General Public License cover the combination.
******************************************************************************/
package 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<String> getMobiles() {
return new Vector<String>();
}
public int getMinSpawnDistance(){
return 0;
}
public int getMaxSpawns(){
return 0;
}
}
+22
View File
@@ -418,6 +418,28 @@ public class SpawnService {
spawnAreas.get(planet).add(dynamicSpawnArea);
core.simulationService.addCollidable(collidableCircle, x, z);
}
public void addMixedSpawnArea(Vector<String> passedGroups, float x, float z, float radius, String planetName) {
Vector<SpawnGroup> mixedSpawnGroups = new Vector<SpawnGroup>();
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<String, MobileTemplate> getMobileTemplates() {
return mobileTemplates;