mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-10-13 03:13:26 -04:00
Merge branch 'master' of https://github.com/ProjectSWGCore/NGECore2
This commit is contained in:
@@ -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')
|
||||
@@ -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
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user