This commit is contained in:
Treeku
2014-05-04 18:56:34 +01:00
103 changed files with 2142 additions and 250 deletions
+6
View File
@@ -5,6 +5,11 @@
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.python.pydev.PyDevBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
@@ -13,5 +18,6 @@
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.python.pydev.pythonNature</nature>
</natures>
</projectDescription>
Binary file not shown.
+14
View File
@@ -0,0 +1,14 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'constitution_modified', 80)
core.skillModService.addSkillMod(actor, 'expertise_dodge', 3)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'constitution_modified', 80)
core.skillModService.deductSkillMod(actor, 'expertise_dodge', 3)
return
@@ -0,0 +1,70 @@
from resources.common import ConversationOption
from resources.common import OutOfBand
from resources.common import ProsePackage
from java.util import Vector
import time
import sys
def startConversation(core, actor, npc):
convSvc = core.conversationService
probotRequester = core.objectService.getObject(long(npc.getAttachment('probotRequester')))
if probotRequester is None:
core.objectService.destroyObject(npc)
return
if probotRequester.getObjectId() != actor.getObjectId():
prose = ProsePackage('conversation/bounty_probot', 's_6')
outOfBand = OutOfBand()
outOfBand.addProsePackage(prose)
convSvc.sendConversationMessage(actor, npc, outOfBand)
return
mission = core.objectService.getObject(long(npc.getAttachment('attachedMission')))
if mission is None:
prose = ProsePackage('conversation/bounty_probot', 's_4')
outOfBand = OutOfBand()
outOfBand.addProsePackage(prose)
convSvc.sendConversationMessage(actor, npc, prose)
return
objective = mission.getObjective()
if objective is None:
prose = ProsePackage('conversation/bounty_probot', 's_4')
outOfBand = OutOfBand()
outOfBand.addProsePackage(prose)
convSvc.sendConversationMessage(actor, npc, prose)
return
prose = ProsePackage('conversation/bounty_probot', 's_5')
outOfBand = OutOfBand()
outOfBand.addProsePackage(prose)
convSvc.sendConversationMessage(actor, npc, outOfBand)
options = Vector()
optionProse = ProsePackage('conversation/bounty_probot', 's_8')
optionOOB = OutOfBand()
optionOOB.addProsePackage(optionProse)
options.add(ConversationOption(optionOOB, 0))
convSvc.sendConversationOptions(actor, npc, options, handleBioTransmit)
return
def handleBioTransmit(core, actor, npc, selection):
core.conversationService.handleEndConversation(actor, npc)
actor.sendSystemMessage('@mission/mission_generic:probe_droid_takeoff', 0)
npc.setPosture(8)
time.sleep(7)
objective = core.objectService.getObject(long(npc.getAttachment('attachedMission'))).getObjective()
objective.beginArakydUpdate(actor)
core.objectService.destroyObject(npc)
return
def endConversation(core, actor, npc):
core.conversationService.sendStopConversation(actor, npc, '', '')
return
+1 -1
View File
@@ -66,5 +66,5 @@ def handleCompletionStage(core, actor, npc, objective, mission):
return
core.conversationService.sendStopConversation(actor, npc, mission.getMissionDescription(), 'm' + str(mission.getMissionId()) + 's')
objective.complete(core, actor)
core.missionService.handleMissionComplete(actor, mission)
return
+2
View File
@@ -17,6 +17,8 @@ def addTemplate(core):
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(True)
mobileTemplate.setSocialGroup('dark jedi')
mobileTemplate.setAssistRange(12)
templates = Vector()
@@ -13,26 +13,24 @@ def addTemplate(core):
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(6)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(9)
mobileTemplate.setWeaponType(4)
mobileTemplate.setMinSpawnDistance(2)
mobileTemplate.setMaxSpawnDistance(4)
mobileTemplate.setDeathblow(True)
mobileTemplate.setSocialGroup('remnants of kun')
mobileTemplate.setAssistRange(12)
templates = Vector()
templates.add('object/mobile/shared_dressed_dark_force_crystal_hunter.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_gen5.iff', 9, 1.0)
weapontemplate = WeaponTemplate('object/weapon/melee/sword/shared_sword_01.iff', 4, 1.0)
weaponTemplates.add(weapontemplate)
weapontemplate = WeaponTemplate('object/weapon/melee/2h_sword/crafted_saber/shared_sword_lightsaber_two_handed_gen5.iff', 10, 1.0)
weaponTemplates.add(weapontemplate)
weapontemplate = WeaponTemplate('object/weapon/melee/polearm/crafted_saber/shared_sword_lightsaber_polearm_gen5.iff', 11, 1.0)
weaponTemplates.add(weapontemplate)
mobileTemplate.setWeaponTemplateVector(weaponTemplates)
attacks = Vector()
mobileTemplate.setDefaultAttack('saberHit')
mobileTemplate.setDefaultAttack('meleehit')
mobileTemplate.setAttacks(attacks)
core.spawnService.addMobileTemplate('dark_force_crystal_hunter', mobileTemplate)
@@ -17,6 +17,8 @@ def addTemplate(core):
mobileTemplate.setMinSpawnDistance(3)
mobileTemplate.setMaxSpawnDistance(5)
mobileTemplate.setDeathblow(True)
mobileTemplate.setSocialGroup('dark jedi')
mobileTemplate.setAssistRange(12)
templates = Vector()
templates.add('object/mobile/shared_dressed_dark_jedi_male_human_01.iff')
@@ -15,6 +15,8 @@ def addTemplate(core):
mobileTemplate.setMinSpawnDistance(3)
mobileTemplate.setMaxSpawnDistance(5)
mobileTemplate.setDeathblow(True)
mobileTemplate.setSocialGroup('dark jedi')
mobileTemplate.setAssistRange(12)
templates = Vector()
templates.add('object/mobile/shared_dressed_dark_jedi_master_female_twk_01.iff')
@@ -11,26 +11,23 @@ def addTemplate(core):
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(6)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(9)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(2)
mobileTemplate.setMaxSpawnDistance(4)
mobileTemplate.setDeathblow(False)
mobileTemplate.setSocialGroup('remnants of kun')
templates = Vector()
templates.add('object/mobile/shared_dressed_dark_side_savage.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_gen5.iff', 9, 1.0)
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
weapontemplate = WeaponTemplate('object/weapon/melee/2h_sword/crafted_saber/shared_sword_lightsaber_two_handed_gen5.iff', 10, 1.0)
weaponTemplates.add(weapontemplate)
weapontemplate = WeaponTemplate('object/weapon/melee/polearm/crafted_saber/shared_sword_lightsaber_polearm_gen5.iff', 11, 1.0)
weaponTemplates.add(weapontemplate)
mobileTemplate.setWeaponTemplateVector(weaponTemplates)
attacks = Vector()
mobileTemplate.setDefaultAttack('saberHit')
mobileTemplate.setDefaultAttack('creatureMeleeAttack')
mobileTemplate.setAttacks(attacks)
core.spawnService.addMobileTemplate('dark_side_savage', mobileTemplate)
@@ -13,26 +13,23 @@ def addTemplate(core):
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(6)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(9)
mobileTemplate.setWeaponType(7)
mobileTemplate.setMinSpawnDistance(3)
mobileTemplate.setMaxSpawnDistance(5)
mobileTemplate.setDeathblow(False)
mobileTemplate.setSocialGroup('remnants of kun')
templates = Vector()
templates.add('object/mobile/shared_dressed_force_sensitive_crypt_crawler.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_gen5.iff', 9, 1.0)
weapontemplate = WeaponTemplate('object/weapon/melee/polearm/shared_lance_staff_wood_s1.iff', 7, 1.0)
weaponTemplates.add(weapontemplate)
weapontemplate = WeaponTemplate('object/weapon/melee/2h_sword/crafted_saber/shared_sword_lightsaber_two_handed_gen5.iff', 10, 1.0)
weaponTemplates.add(weapontemplate)
weapontemplate = WeaponTemplate('object/weapon/melee/polearm/crafted_saber/shared_sword_lightsaber_polearm_gen5.iff', 11, 1.0)
weaponTemplates.add(weapontemplate)
mobileTemplate.setWeaponTemplateVector(weaponTemplates)
attacks = Vector()
mobileTemplate.setDefaultAttack('saberHit')
mobileTemplate.setDefaultAttack('meleehit')
mobileTemplate.setAttacks(attacks)
core.spawnService.addMobileTemplate('force_sensitive_crypt_crawler', mobileTemplate)
@@ -13,26 +13,24 @@ def addTemplate(core):
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(6)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(9)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(7)
mobileTemplate.setDeathblow(False)
mobileTemplate.setSocialGroup('force renegade')
templates = Vector()
templates.add('object/mobile/shared_dressed_force_sensitive_renegade.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_gen5.iff', 9, 1.0)
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
weapontemplate = WeaponTemplate('object/weapon/melee/2h_sword/crafted_saber/shared_sword_lightsaber_two_handed_gen5.iff', 10, 1.0)
weaponTemplates.add(weapontemplate)
weapontemplate = WeaponTemplate('object/weapon/melee/polearm/crafted_saber/shared_sword_lightsaber_polearm_gen5.iff', 11, 1.0)
weaponTemplates.add(weapontemplate)
mobileTemplate.setWeaponTemplateVector(weaponTemplates)
attacks = Vector()
mobileTemplate.setDefaultAttack('saberHit')
mobileTemplate.setDefaultAttack('creatureMeleeAttack')
mobileTemplate.setAttacks(attacks)
core.spawnService.addMobileTemplate('force_sensitive_renegade', mobileTemplate)
@@ -11,26 +11,23 @@ def addTemplate(core):
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(6)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(9)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(3)
mobileTemplate.setMaxSpawnDistance(6)
mobileTemplate.setDeathblow(False)
mobileTemplate.setSocialGroup('force renegade')
templates = Vector()
templates.add('object/mobile/shared_dressed_forsaken_force_drifter.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_gen5.iff', 9, 1.0)
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
weapontemplate = WeaponTemplate('object/weapon/melee/2h_sword/crafted_saber/shared_sword_lightsaber_two_handed_gen5.iff', 10, 1.0)
weaponTemplates.add(weapontemplate)
weapontemplate = WeaponTemplate('object/weapon/melee/polearm/crafted_saber/shared_sword_lightsaber_polearm_gen5.iff', 11, 1.0)
weaponTemplates.add(weapontemplate)
mobileTemplate.setWeaponTemplateVector(weaponTemplates)
attacks = Vector()
mobileTemplate.setDefaultAttack('saberHit')
mobileTemplate.setDefaultAttack('creatureMeleeAttack')
mobileTemplate.setAttacks(attacks)
core.spawnService.addMobileTemplate('forsaken_force_drifter', mobileTemplate)
@@ -11,26 +11,23 @@ def addTemplate(core):
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(6)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(9)
mobileTemplate.setWeaponType(4)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(7)
mobileTemplate.setDeathblow(False)
mobileTemplate.setSocialGroup('force renegade')
templates = Vector()
templates.add('object/mobile/shared_dressed_novice_force_mystic.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_gen5.iff', 9, 1.0)
weapontemplate = WeaponTemplate('object/weapon/melee/sword/shared_sword_01.iff', 4, 1.0)
weaponTemplates.add(weapontemplate)
weapontemplate = WeaponTemplate('object/weapon/melee/2h_sword/crafted_saber/shared_sword_lightsaber_two_handed_gen5.iff', 10, 1.0)
weaponTemplates.add(weapontemplate)
weapontemplate = WeaponTemplate('object/weapon/melee/polearm/crafted_saber/shared_sword_lightsaber_polearm_gen5.iff', 11, 1.0)
weaponTemplates.add(weapontemplate)
mobileTemplate.setWeaponTemplateVector(weaponTemplates)
attacks = Vector()
mobileTemplate.setDefaultAttack('saberHit')
mobileTemplate.setDefaultAttack('meleehit')
mobileTemplate.setAttacks(attacks)
core.spawnService.addMobileTemplate('novice_force_mystic', mobileTemplate)
@@ -13,26 +13,24 @@ def addTemplate(core):
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(6)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(9)
mobileTemplate.setWeaponType(4)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(6)
mobileTemplate.setDeathblow(False)
mobileTemplate.setSocialGroup('remnants of kun')
mobileTemplate.setAssistRange(12)
templates = Vector()
templates.add('object/mobile/shared_dressed_untrained_wielder_of_the_darkside.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_gen5.iff', 9, 1.0)
weapontemplate = WeaponTemplate('object/weapon/melee/sword/shared_sword_01.iff', 4, 1.0)
weaponTemplates.add(weapontemplate)
weapontemplate = WeaponTemplate('object/weapon/melee/2h_sword/crafted_saber/shared_sword_lightsaber_two_handed_gen5.iff', 10, 1.0)
weaponTemplates.add(weapontemplate)
weapontemplate = WeaponTemplate('object/weapon/melee/polearm/crafted_saber/shared_sword_lightsaber_polearm_gen5.iff', 11, 1.0)
weaponTemplates.add(weapontemplate)
mobileTemplate.setWeaponTemplateVector(weaponTemplates)
attacks = Vector()
mobileTemplate.setDefaultAttack('saberHit')
mobileTemplate.setDefaultAttack('meleehit')
mobileTemplate.setAttacks(attacks)
core.spawnService.addMobileTemplate('untrained_wielder_of_the_dark_side', mobileTemplate)
@@ -0,0 +1,16 @@
import sys
from services.spawn import DynamicSpawnGroup
from services.spawn import MobileTemplate
from java.util import Vector
def addDynamicGroup(core):
dynamicGroup = DynamicSpawnGroup()
mobileTemplates = Vector()
mobileTemplates.add('adolescent_krayt_dragon')
dynamicGroup.setMobiles(mobileTemplates)
dynamicGroup.setGroupMembersNumber(1)
dynamicGroup.setName('adolescent_krayt_wild_1')
dynamicGroup.setMaxSpawns(1)
dynamicGroup.setMinSpawnDistance(150)
core.spawnService.addDynamicGroup('adolescent_krayt_wild_1', dynamicGroup)
return
@@ -0,0 +1,16 @@
import sys
from services.spawn import DynamicSpawnGroup
from services.spawn import MobileTemplate
from java.util import Vector
def addDynamicGroup(core):
dynamicGroup = DynamicSpawnGroup()
mobileTemplates = Vector()
mobileTemplates.add('canyon_krayt_dragon')
dynamicGroup.setMobiles(mobileTemplates)
dynamicGroup.setGroupMembersNumber(1)
dynamicGroup.setName('canyon_krayt_wild_1')
dynamicGroup.setMaxSpawns(1)
dynamicGroup.setMinSpawnDistance(150)
core.spawnService.addDynamicGroup('canyon_krayt_wild_1', dynamicGroup)
return
@@ -0,0 +1,16 @@
import sys
from services.spawn import DynamicSpawnGroup
from services.spawn import MobileTemplate
from java.util import Vector
def addDynamicGroup(core):
dynamicGroup = DynamicSpawnGroup()
mobileTemplates = Vector()
mobileTemplates.add('giant_canyon_krayt_dragon')
dynamicGroup.setMobiles(mobileTemplates)
dynamicGroup.setGroupMembersNumber(1)
dynamicGroup.setName('giant_canyon_krayt_dragon_1')
dynamicGroup.setMaxSpawns(1)
dynamicGroup.setMinSpawnDistance(60)
core.spawnService.addDynamicGroup('giant_canyon_krayt_dragon_1', dynamicGroup)
return
@@ -0,0 +1,16 @@
import sys
from services.spawn import DynamicSpawnGroup
from services.spawn import MobileTemplate
from java.util import Vector
def addDynamicGroup(core):
dynamicGroup = DynamicSpawnGroup()
mobileTemplates = Vector()
mobileTemplates.add('grand_canyon_krayt_dragon')
dynamicGroup.setMobiles(mobileTemplates)
dynamicGroup.setGroupMembersNumber(1)
dynamicGroup.setName('grand_canyon_krayt_dragon_1')
dynamicGroup.setMaxSpawns(1)
dynamicGroup.setMinSpawnDistance(60)
core.spawnService.addDynamicGroup('grand_canyon_krayt_dragon_1', dynamicGroup)
return
@@ -0,0 +1,16 @@
import sys
from services.spawn import DynamicSpawnGroup
from services.spawn import MobileTemplate
from java.util import Vector
def addDynamicGroup(core):
dynamicGroup = DynamicSpawnGroup()
mobileTemplates = Vector()
mobileTemplates.add('juvenile_canyon_krayt_dragon')
dynamicGroup.setMobiles(mobileTemplates)
dynamicGroup.setGroupMembersNumber(6)
dynamicGroup.setName('juvenile_krayts_wild_1')
dynamicGroup.setMaxSpawns(1)
dynamicGroup.setMinSpawnDistance(150)
core.spawnService.addDynamicGroup('juvenile_krayts_wild_1', dynamicGroup)
return
@@ -0,0 +1,16 @@
import sys
from services.spawn import DynamicSpawnGroup
from services.spawn import MobileTemplate
from java.util import Vector
def addDynamicGroup(core):
dynamicGroup = DynamicSpawnGroup()
mobileTemplates = Vector()
mobileTemplates.add('krayt_dragon_ancient')
dynamicGroup.setMobiles(mobileTemplates)
dynamicGroup.setGroupMembersNumber(1)
dynamicGroup.setName('krayt_dragon_ancient_1')
dynamicGroup.setMaxSpawns(1)
dynamicGroup.setMinSpawnDistance(5)
core.spawnService.addDynamicGroup('krayt_dragon_ancient_1', dynamicGroup)
return
@@ -0,0 +1,16 @@
import sys
from services.spawn import DynamicSpawnGroup
from services.spawn import MobileTemplate
from java.util import Vector
def addDynamicGroup(core):
dynamicGroup = DynamicSpawnGroup()
mobileTemplates = Vector()
mobileTemplates.add('carrion_kreetle')
dynamicGroup.setMobiles(mobileTemplates)
dynamicGroup.setGroupMembersNumber(1)
dynamicGroup.setName('mos_eisley_carrion_kreetle_01')
dynamicGroup.setMaxSpawns(-1)
dynamicGroup.setMinSpawnDistance(5)
core.spawnService.addDynamicGroup('mos_eisley_carrion_kreetle_01', dynamicGroup)
return
@@ -0,0 +1,16 @@
import sys
from services.spawn import DynamicSpawnGroup
from services.spawn import MobileTemplate
from java.util import Vector
def addDynamicGroup(core):
dynamicGroup = DynamicSpawnGroup()
mobileTemplates = Vector()
mobileTemplates.add('city_sewer_swamprat')
dynamicGroup.setMobiles(mobileTemplates)
dynamicGroup.setGroupMembersNumber(1)
dynamicGroup.setName('mos_eisley_city_sewer_rats_01')
dynamicGroup.setMaxSpawns(-1)
dynamicGroup.setMinSpawnDistance(5)
core.spawnService.addDynamicGroup('mos_eisley_city_sewer_rats_01', dynamicGroup)
return
@@ -0,0 +1,16 @@
import sys
from services.spawn import DynamicSpawnGroup
from services.spawn import MobileTemplate
from java.util import Vector
def addDynamicGroup(core):
dynamicGroup = DynamicSpawnGroup()
mobileTemplates = Vector()
mobileTemplates.add('mound_mite')
dynamicGroup.setMobiles(mobileTemplates)
dynamicGroup.setGroupMembersNumber(1)
dynamicGroup.setName('mos_eisley_mound_mites_01')
dynamicGroup.setMaxSpawns(-1)
dynamicGroup.setMinSpawnDistance(5)
core.spawnService.addDynamicGroup('mos_eisley_mound_mites_01', dynamicGroup)
return
@@ -0,0 +1,16 @@
import sys
from services.spawn import DynamicSpawnGroup
from services.spawn import MobileTemplate
from java.util import Vector
def addDynamicGroup(core):
dynamicGroup = DynamicSpawnGroup()
mobileTemplates = Vector()
mobileTemplates.add('rockmite')
dynamicGroup.setMobiles(mobileTemplates)
dynamicGroup.setGroupMembersNumber(1)
dynamicGroup.setName('mos_eisley_rock_mites_01')
dynamicGroup.setMaxSpawns(-1)
dynamicGroup.setMinSpawnDistance(5)
core.spawnService.addDynamicGroup('mos_eisley_rock_mites_01', dynamicGroup)
return
@@ -0,0 +1,16 @@
import sys
from services.spawn import DynamicSpawnGroup
from services.spawn import MobileTemplate
from java.util import Vector
def addDynamicGroup(core):
dynamicGroup = DynamicSpawnGroup()
mobileTemplates = Vector()
mobileTemplates.add('sickly_womprat')
dynamicGroup.setMobiles(mobileTemplates)
dynamicGroup.setGroupMembersNumber(1)
dynamicGroup.setName('mos_eisley_sickly_womp_rats_01')
dynamicGroup.setMaxSpawns(-1)
dynamicGroup.setMinSpawnDistance(5)
core.spawnService.addDynamicGroup('mos_eisley_sickly_womp_rats_01', dynamicGroup)
return
@@ -0,0 +1,16 @@
import sys
from services.spawn import DynamicSpawnGroup
from services.spawn import MobileTemplate
from java.util import Vector
def addDynamicGroup(core):
dynamicGroup = DynamicSpawnGroup()
mobileTemplates = Vector()
mobileTemplates.add('tame_worrt')
dynamicGroup.setMobiles(mobileTemplates)
dynamicGroup.setGroupMembersNumber(1)
dynamicGroup.setName('mos_eisley_tame_worrts_01')
dynamicGroup.setMaxSpawns(-1)
dynamicGroup.setMinSpawnDistance(5)
core.spawnService.addDynamicGroup('mos_eisley_tame_worrts_01', dynamicGroup)
return
@@ -0,0 +1,16 @@
import sys
from services.spawn import DynamicSpawnGroup
from services.spawn import MobileTemplate
from java.util import Vector
def addDynamicGroup(core):
dynamicGroup = DynamicSpawnGroup()
mobileTemplates = Vector()
mobileTemplates.add('tempest_rill')
dynamicGroup.setMobiles(mobileTemplates)
dynamicGroup.setGroupMembersNumber(1)
dynamicGroup.setName('mos_eisley_tempest_rills_01')
dynamicGroup.setMaxSpawns(-1)
dynamicGroup.setMinSpawnDistance(5)
core.spawnService.addDynamicGroup('mos_eisley_tempest_rills_01', dynamicGroup)
return
@@ -0,0 +1,16 @@
import sys
from services.spawn import DynamicSpawnGroup
from services.spawn import MobileTemplate
from java.util import Vector
def addDynamicGroup(core):
dynamicGroup = DynamicSpawnGroup()
mobileTemplates = Vector()
mobileTemplates.add('womprat')
dynamicGroup.setMobiles(mobileTemplates)
dynamicGroup.setGroupMembersNumber(1)
dynamicGroup.setName('mos_eisley_womprats_01')
dynamicGroup.setMaxSpawns(-1)
dynamicGroup.setMinSpawnDistance(5)
core.spawnService.addDynamicGroup('mos_eisley_womprats_01', dynamicGroup)
return
@@ -0,0 +1,11 @@
import sys
from java.util import Vector
def addSpawnArea(core):
dynamicGroups = Vector()
dynamicGroups.add('adolescent_krayt_wild_1')
dynamicGroups.add('juvenile_krayts_wild_1')
dynamicGroups.add('canyon_krayt_wild_1')
dynamicGroups.add('giant_canyon_krayt_dragon_1')
core.spawnService.addDynamicSpawnArea(dynamicGroups, 6471, 4267, 1024, 'tatooine')
return
@@ -0,0 +1,8 @@
import sys
from java.util import Vector
def addSpawnArea(core):
dynamicGroups = Vector()
dynamicGroups.add('grand_canyon_krayt_dragon_1')
core.spawnService.addDynamicSpawnArea(dynamicGroups, 7431, 4762, 120, 'tatooine')
return
@@ -0,0 +1,8 @@
import sys
from java.util import Vector
def addSpawnArea(core):
dynamicGroups = Vector()
dynamicGroups.add('krayt_dragon_ancient_1')
core.spawnService.addDynamicSpawnArea(dynamicGroups, 7490, 4466, 10, 'tatooine')
return
@@ -0,0 +1,8 @@
import sys
from java.util import Vector
def addSpawnArea(core):
dynamicGroups = Vector()
dynamicGroups.add('krayt_dragon_ancient_1')
core.spawnService.addDynamicSpawnArea(dynamicGroups, 6794, 4307, 10, 'tatooine')
return
@@ -0,0 +1,8 @@
import sys
from java.util import Vector
def addSpawnArea(core):
dynamicGroups = Vector()
dynamicGroups.add('krayt_dragon_ancient_1')
core.spawnService.addDynamicSpawnArea(dynamicGroups, 7493, 5992, 10, 'tatooine')
return
@@ -0,0 +1,9 @@
import sys
from java.util import Vector
def addSpawnArea(core):
dynamicGroups = Vector()
dynamicGroups.add('mos_eisley_carrion_kreetle_01')
dynamicGroups.add('mos_eisley_city_sewer_rats_01')
core.spawnService.addDynamicSpawnArea(dynamicGroups, 3216, -4465, 100, 'tatooine')
return
@@ -0,0 +1,9 @@
import sys
from java.util import Vector
def addSpawnArea(core):
dynamicGroups = Vector()
dynamicGroups.add('mos_eisley_tame_worrts_01')
dynamicGroups.add('mos_eisley_sickly_womp_rats_01')
core.spawnService.addDynamicSpawnArea(dynamicGroups, 3115, -4758, 100, 'tatooine')
return
@@ -0,0 +1,9 @@
import sys
from java.util import Vector
def addSpawnArea(core):
dynamicGroups = Vector()
dynamicGroups.add('mos_eisley_tame_worrts_01')
dynamicGroups.add('mos_eisley_rock_mites_01')
core.spawnService.addDynamicSpawnArea(dynamicGroups, 3153, -4945, 100, 'tatooine')
return
@@ -0,0 +1,9 @@
import sys
from java.util import Vector
def addSpawnArea(core):
dynamicGroups = Vector()
dynamicGroups.add('mos_eisley_tempest_rills_01')
dynamicGroups.add('mos_eisley_mound_mites_01')
core.spawnService.addDynamicSpawnArea(dynamicGroups, 3841, -4345, 100, 'tatooine')
return
@@ -0,0 +1,9 @@
import sys
from java.util import Vector
def addSpawnArea(core):
dynamicGroups = Vector()
dynamicGroups.add('mos_eisley_womprats_01')
dynamicGroups.add('mos_eisley_mound_mites_01')
core.spawnService.addDynamicSpawnArea(dynamicGroups, 3587, -4354, 100, 'tatooine')
return
@@ -8,15 +8,23 @@ def addTemplate(core):
mobileTemplate.setCreatureName('krayt_dragon_adolescent')
mobileTemplate.setLevel(84)
mobileTemplate.setMinLevel(80)
mobileTemplate.setMaxLevel(84)
mobileTemplate.setDifficulty(2)
mobileTemplate.setAttackRange(12)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(True)
mobileTemplate.setScale(0.5)
templates = Vector()
templates.add('object/mobile/shared_krayt_dragon.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
+8
View File
@@ -12,6 +12,14 @@ def addTemplate(core):
mobileTemplate.setAttackRange(5)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setMilkType('Wild Milk')
mobileTemplate.setMilkAmount(250)
mobileTemplate.setHideType('Wooly Hide')
mobileTemplate.setHideAmount(325)
mobileTemplate.setMeatType('Herbivore Meat')
mobileTemplate.setMeatAmount(450)
mobileTemplate.setBoneType('Animal Bones')
mobileTemplate.setBoneAmount(250)
templates = Vector()
templates.add('object/mobile/shared_bantha_hue.iff')
@@ -8,15 +8,23 @@ def addTemplate(core):
mobileTemplate.setCreatureName('canyon_krayt_dragon')
mobileTemplate.setLevel(85)
mobileTemplate.setMinLevel(80)
mobileTemplate.setMaxLevel(86)
mobileTemplate.setDifficulty(2)
mobileTemplate.setAttackRange(12)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(True)
mobileTemplate.setScale(0.8)
templates = Vector()
templates.add('object/mobile/shared_canyon_krayt_dragon.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
+11 -3
View File
@@ -8,15 +8,23 @@ def addTemplate(core):
mobileTemplate.setCreatureName('fragile_kreetle')
mobileTemplate.setLevel(2)
mobileTemplate.setMinLevel(5)
mobileTemplate.setMaxLevel(7)
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(5)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackRange(4)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(False)
mobileTemplate.setScale(1)
templates = Vector()
templates.add('object/mobile/shared_kreetle.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
@@ -7,16 +7,24 @@ def addTemplate(core):
mobileTemplate = MobileTemplate()
mobileTemplate.setCreatureName('city_sewer_swamprat')
mobileTemplate.setLevel(3)
mobileTemplate.setLevel(4)
mobileTemplate.setMinLevel(4)
mobileTemplate.setMaxLevel(4)
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(5)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackRange(4)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(False)
mobileTemplate.setScale(1)
templates = Vector()
templates.add('object/mobile/shared_womp_rat.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
@@ -8,15 +8,23 @@ def addTemplate(core):
mobileTemplate.setCreatureName('giant_canyon_krayt_dragon')
mobileTemplate.setLevel(87)
mobileTemplate.setMinLevel(80)
mobileTemplate.setMaxLevel(88)
mobileTemplate.setDifficulty(2)
mobileTemplate.setAttackRange(12)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(True)
mobileTemplate.setScale(2.5)
templates = Vector()
templates.add('object/mobile/shared_krayt_dragon.iff')
templates.add('object/mobile/shared_canyon_krayt_dragon.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
+11 -3
View File
@@ -8,15 +8,23 @@ def addTemplate(core):
mobileTemplate.setCreatureName('krayt_dragon_grand')
mobileTemplate.setLevel(88)
mobileTemplate.setMinLevel(80)
mobileTemplate.setMaxLevel(89)
mobileTemplate.setDifficulty(2)
mobileTemplate.setAttackRange(12)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(True)
mobileTemplate.setScale(2.6)
templates = Vector()
templates.add('object/mobile/shared_krayt_dragon.iff')
templates.add('object/mobile/shared_canyon_krayt_dragon.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
@@ -8,15 +8,23 @@ def addTemplate(core):
mobileTemplate.setCreatureName('juvenile_canyon_krayt')
mobileTemplate.setLevel(82)
mobileTemplate.setMinLevel(78)
mobileTemplate.setMaxLevel(82)
mobileTemplate.setDifficulty(2)
mobileTemplate.setAttackRange(12)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(True)
mobileTemplate.setScale(0.5)
templates = Vector()
templates.add('object/mobile/shared_juvenile_canyon_krayt.iff')
templates.add('object/mobile/shared_krayt_dragon.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
@@ -8,15 +8,23 @@ def addTemplate(core):
mobileTemplate.setCreatureName('krayt_dragon_ancient')
mobileTemplate.setLevel(90)
mobileTemplate.setMinLevel(90)
mobileTemplate.setMaxLevel(90)
mobileTemplate.setDifficulty(2)
mobileTemplate.setAttackRange(12)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(True)
mobileTemplate.setScale(2.8)
templates = Vector()
templates.add('object/mobile/shared_krayt_dragon.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
+11 -3
View File
@@ -8,15 +8,23 @@ def addTemplate(core):
mobileTemplate.setCreatureName('mound_mite')
mobileTemplate.setLevel(4)
mobileTemplate.setMinLevel(5)
mobileTemplate.setMaxLevel(7)
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(5)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackRange(4)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(False)
mobileTemplate.setScale(1)
templates = Vector()
templates.add('object/mobile/shared_mound_mite.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
+11 -3
View File
@@ -8,15 +8,23 @@ def addTemplate(core):
mobileTemplate.setCreatureName('rockmite')
mobileTemplate.setLevel(8)
mobileTemplate.setMinLevel(8)
mobileTemplate.setMaxLevel(9)
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(5)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackRange(4)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(False)
mobileTemplate.setScale(1)
templates = Vector()
templates.add('object/mobile/shared_rock_mite.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
+12 -4
View File
@@ -7,16 +7,24 @@ def addTemplate(core):
mobileTemplate = MobileTemplate()
mobileTemplate.setCreatureName('sickly_womprat')
mobileTemplate.setLevel(1)
mobileTemplate.setLevel(4)
mobileTemplate.setMinLevel(5)
mobileTemplate.setMaxLevel(13)
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(5)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackRange(4)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(False)
mobileTemplate.setScale(1)
templates = Vector()
templates.add('object/mobile/shared_womp_rat.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
+11 -3
View File
@@ -8,15 +8,23 @@ def addTemplate(core):
mobileTemplate.setCreatureName('tame_worrt')
mobileTemplate.setLevel(5)
mobileTemplate.setMinLevel(5)
mobileTemplate.setMaxLevel(6)
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(5)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackRange(4)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(False)
mobileTemplate.setScale(1)
templates = Vector()
templates.add('object/mobile/shared_worrt.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
+11 -3
View File
@@ -8,15 +8,23 @@ def addTemplate(core):
mobileTemplate.setCreatureName('rill_tempest')
mobileTemplate.setLevel(8)
mobileTemplate.setMinLevel(8)
mobileTemplate.setMaxLevel(10)
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(5)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackRange(4)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(False)
mobileTemplate.setScale(1)
templates = Vector()
templates.add('object/mobile/shared_rill.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
+12 -4
View File
@@ -7,16 +7,24 @@ def addTemplate(core):
mobileTemplate = MobileTemplate()
mobileTemplate.setCreatureName('womprat')
mobileTemplate.setLevel(5)
mobileTemplate.setLevel(4)
mobileTemplate.setMinLevel(5)
mobileTemplate.setMaxLevel(13)
mobileTemplate.setDifficulty(0)
mobileTemplate.setAttackRange(5)
mobileTemplate.setWeaponType(6)
mobileTemplate.setAttackRange(4)
mobileTemplate.setAttackSpeed(1.0)
mobileTemplate.setWeaponType(6)
mobileTemplate.setMinSpawnDistance(4)
mobileTemplate.setMaxSpawnDistance(8)
mobileTemplate.setDeathblow(False)
mobileTemplate.setScale(1)
templates = Vector()
templates.add('object/mobile/shared_womp_rat.iff')
mobileTemplate.setTemplates(templates)
weaponTemplates = Vector()
weapontemplate = WeaponTemplate('object/weapon/melee/unarmed/shared_unarmed_default.iff', 6, 1.0)
weaponTemplates.add(weapontemplate)
@@ -1,4 +1,8 @@
from resources.datatables import Options
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'object/conversation');
object.setAttachment('conversationFile','missions/bounty_droid_probot')
object.setOptionsBitmask(Options.CONVERSABLE | Options.INVULNERABLE)
return
@@ -1,4 +1,5 @@
import sys
def setup(core, object):
return
object.setAttachment('radial_filename', 'shared_drink_breath_of_heaven')
return
@@ -1,4 +1,5 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'npc/bounty_probot')
return
@@ -1,4 +1,5 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'npc/bounty_seeker')
return
+30
View File
@@ -0,0 +1,30 @@
from resources.common import RadialOptions
import sys
def createRadial(core, owner, target, radials):
radials.add(RadialOptions(0, 138, 1, '@mission/mission_generic:probe_droid_summon'))
return
def handleSelection(core, owner, target, option):
if option == 138 and target:
id = owner.getPlayerObject().getBountyMissionId()
if id is None or id == 0:
owner.sendSystemMessage('@mission/mission_generic:bounty_no_mission', 0)
return
mission = core.objectService.getObject(id)
if mission is None:
owner.sendSystemMessage('@mission/mission_generic:bounty_no_mission', 0)
return
if mission.getObjective().isArakydActive():
owner.sendSystemMessage('@mission/mission_generic:probe_droid_too_many', 0)
return
if not core.terrainService.canBuildAtPosition(owner, owner.getPosition().x, owner.getPosition().z):
owner.sendSystemMessage('@mission/mission_generic:probe_droid_bad_location', 0)
return
mission.getObjective().handleProbeDroidSummon(core, owner)
return
+41
View File
@@ -0,0 +1,41 @@
from resources.common import RadialOptions
from resources.common import SpawnPoint
import time
import sys
def createRadial(core, owner, target, radials):
radials.clear()
radials.add(RadialOptions(0, 138, 0, 'Track Target'))
radials.add(RadialOptions(1, 136, 0, '@mission/mission_generic:probe_droid_track_target')) # Track Bounty Target
radials.add(RadialOptions(1, 137, 0, '@mission/mission_generic:probe_droid_find_target')) # Identify Bounty Target
return
def handleSelection(core, owner, target, option):
if option == 136 and target or option == 138 and target:
id = owner.getPlayerObject().getBountyMissionId()
if id is None or id == 0:
owner.sendSystemMessage('@mission/mission_generic:bounty_no_mission', 0)
return
mission = core.objectService.getObject(id)
if mission is None:
owner.sendSystemMessage('@mission/mission_generic:bounty_no_mission', 0)
return
if mission.getObjective().isSeekerActive():
owner.sendSystemMessage('@mission/mission_generic:bounty_already_tracking', 0)
return
pos = SpawnPoint.getRandomPosition(owner.getPosition(), 1, 3, owner.getPlanetId())
ori = owner.getOrientation()
seeker = core.staticService.spawnObject('object/creature/npc/droid/crafted/shared_probe_droid_advanced.iff', owner.getPlanet().getName(), 0, pos.x, pos.y, pos.z, ori.y, ori.w)
time.sleep(3)
owner.sendSystemMessage('@mission/mission_generic:seeker_droid_standby', 0)
seeker.setPosture(8)
time.sleep(7.5)
mission.getObjective().beginSeekerUpdates(core, owner)
return
if option == 137 and target:
return
return
+14 -1
View File
@@ -4,10 +4,23 @@ import sys
def createRadial(core, owner, target, radials):
radials.clear()
radials.add(RadialOptions(0, 36, 0, 'Loot'))
if target.getAttachment('AI') and core.resourceService.canHarvest(owner, target):
radials.add(RadialOptions(0, 163, 3, '@sui:harvest_corpse'))
radials.add(RadialOptions(2, 164, 3, '@sui:harvest_meat'))
radials.add(RadialOptions(2, 165, 3, '@sui:harvest_hide'))
radials.add(RadialOptions(2, 166, 3, '@sui:harvest_bone'))
return
def handleSelection(core, owner, target, option):
if option == 164 and target.getAttachment('AI') and core.resourceService.canHarvest(owner, target):
core.resourceService.doHarvest(owner, target, 'meat')
if option == 165 and target.getAttachment('AI') and core.resourceService.canHarvest(owner, target):
core.resourceService.doHarvest(owner, target, 'hide')
if option == 166 and target.getAttachment('AI') and core.resourceService.canHarvest(owner, target):
core.resourceService.doHarvest(owner, target, 'bone')
if option == 36 and target:
#core.lootService.handleLootRequest(owner,target)
core.lootService.handleLootRequest(owner,target)
+16
View File
@@ -0,0 +1,16 @@
from resources.common import RadialOptions
import sys
def createRadial(core, owner, target, radials):
radials.clear()
if target.getAttachment('AI') and core.resourceService.canMilk(owner, target):
radials.add(RadialOptions(0, 167, 3, '@pet/pet_menu:milk_me'))
return
def handleSelection(core, owner, target, option):
if option == 167 and target.getAttachment('AI') and core.resourceService.canMilk(owner, target):
core.resourceService.doMilk(owner, target)
return
@@ -0,0 +1,16 @@
import resources.objects.creature.CreatureObject;
from resources.common import RadialOptions
import sys
def createRadial(core, owner, target, radials):
radials.add(RadialOptions(0, 21, 1, ''))
radials.add(RadialOptions(0, 7, 1, ''))
radials.add(RadialOptions(0, 15, 1, ''))
return
def handleSelection(core, owner, object, option):
if option == 21:
core.buffService.addBuffToCreature(owner, 'drink_breath_of_heaven', owner)
core.objectService.destroyObject(object)
return
-10
View File
@@ -1,10 +0,0 @@
import sys
from resources.datatables import Options
from resources.datatables import StateStatus
def addPlanetSpawns(core, planet):
#This Script is no longer to be used for NPC Scripting. - Levarris
return
+14
View File
@@ -0,0 +1,14 @@
import sys
from resources.datatables import Options
from resources.datatables import StateStatus
def addPlanetSpawns(core, planet):
########################################################
# DO NOT ADD ANYTHING ELSE TO THIS SCRIPT, PLEASE USE THE
# SUBFOLDERS FOR EACH PLANET AND CREATE NEW SCRIPTS FOR
# EACH AREA OF A PLANET. - LEVARRIS
########################################################
return
-8
View File
@@ -1,8 +0,0 @@
import sys
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
#this script is no longer for NPC spawning - Levarris
return
+11
View File
@@ -0,0 +1,11 @@
import sys
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
########################################################
# DO NOT ADD ANYTHING ELSE TO THIS SCRIPT, PLEASE USE THE
# SUBFOLDERS FOR EACH PLANET AND CREATE NEW SCRIPTS FOR
# EACH AREA OF A PLANET. - LEVARRIS
return
+14
View File
@@ -0,0 +1,14 @@
import sys
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
########################################################
# DO NOT ADD ANYTHING ELSE TO THIS SCRIPT, PLEASE USE THE
# SUBFOLDERS FOR EACH PLANET AND CREATE NEW SCRIPTS FOR
# EACH AREA OF A PLANET. - LEVARRIS
########################################################
return
-35
View File
@@ -1,35 +0,0 @@
import sys
from resources.datatables import Options
from resources.datatables import StateStatus
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
# Objects
stcSvc.spawnObject('object/tangible/terminal/shared_terminal_character_builder.iff', 'tatooine', long(0), float(3525), float(4), float(-4801), float(0.70), float(0.71))
# Buildings
# Example
#building = stcSvc.spawnObject('object/building/myThatchedHut.iff', 'tatooine', long(0), float(3525), float(4), float(-4804), float(0.70), float(0.71))
#stcSvc.spawnObject('object/mobile/shared_my_npc.iff', 'tatooine', building.getCellByCellNumber(7), float(3525), float(4), float(-4804), float(0.70), float(0.71))
# NPCs
stcSvc.spawnObject('object/mobile/shared_respec_seller_f_1.iff', 'tatooine', long(0), float(3533.14), float(5), float(-4788.86), float(-0.3327), float(0.9288))
stcSvc.spawnObject('object/mobile/shared_junk_dealer_m_01.iff', 'tatooine', long(0), float(3525), float(4), float(-4804), float(0.70), float(0.71))
#stcSvc.spawnObject('object/mobile/shared_3po_protocol_droid_red.iff', 'tatooine', long(26582), float(-14.3), float(2.0), float(47.4), float(0.70), float(0.71))
impRecruiter = stcSvc.spawnObject('object/mobile/shared_dressed_imperial_officer_f.iff', 'tatooine', long(1280132), float(-6), float(1), float(9.2), float(0.70), float(0.71))
impRecruiter.setOptionsBitmask(264)
rebRecruiter = stcSvc.spawnObject('object/mobile/shared_dressed_rebel_recruiter_human_female_01.iff', 'tatooine', long(1082887), float(-30.5), float(-0.5), float(6.2), float(0.70), float(0.71))
rebRecruiter.setOptionsBitmask(264)
return
@@ -0,0 +1,51 @@
import sys
# Project SWG: Anchorhead: Static Spawns
# (C)2014 ProjectSWG
from resources.datatables import Options
from resources.datatables import State
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
objSvc = core.objectService
# TODO Check all NPCs for personalized scripting, change format.
# Cantina Interior
rebRecruiter = stcSvc.spawnObject('object/mobile/shared_dressed_rebel_recruiter_human_female_01.iff', 'tatooine', long(1213345), float(-2.2), float(0.4), float(-5.4), float(0), float(0))
rebRecruiter.setOptionsBitmask(264)
borraSetas = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_rodian_female_03.iff', 'tatooine', long(1213345), float(9.8), float(0.4), float(-1.2), float(-0.65), float(0.75))
borraSetas.setCustomName2('Borra Setas')
borraSetas.setOptionsBitmask(256)
# Outside
aaphKoden = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_aaph_koden.iff', 'tatooine', long(0), float(129), float(5.0), float(-5399), float(-0.67), float(0.73))
aaphKoden.setCustomName2('Aaph Koden')
aaphKoden.setOptionsBitmask(256)
Alger = stcSvc.spawnObject('object/mobile/shared_smuggler_fence_alger.iff', 'tatooine', long(0), float(107), float(5.0), float(-5315), float(0.96), float(0.26))
Alger.setCustomName2('Alger')
Alger.setOptionsBitmask(256)
carhlaBastra = stcSvc.spawnObject('object/mobile/shared_dressed_legacy_bastra.iff', 'tatooine', long(0), float(128), float(5.0), float(-5428), float(-0.26), float(0.96))
carhlaBastra.setCustomName2('Carh\'la Bastra')
carhlaBastra.setOptionsBitmask(256)
cuanTalon = stcSvc.spawnObject('object/mobile/shared_dressed_legacy_cuan.iff', 'tatooine', long(0), float(-161.7), float(65.0), float(-5322.8), float(0), float(0))
cuanTalon.setCustomName2('Cuan Talon')
cuanTalon.setOptionsBitmask(256)
dromaOrdo = stcSvc.spawnObject('object/mobile/shared_dressed_anchorjobs_ordo.iff', 'tatooine', long(0), float(110), float(52.0), float(-5431), float(0.36), float(0.93))
dromaOrdo.setCustomName2('Droma Ordo')
dromaOrdo.setOptionsBitmask(256)
Sorna = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_tosche_sorna.iff', 'tatooine', long(0), float(-135), float(52.0), float(-5331), float(0.36), float(0.93))
Sorna.setCustomName2('Sorna')
Sorna.setOptionsBitmask(256)
return
+100
View File
@@ -0,0 +1,100 @@
import sys
# Project SWG: Bestine: Static Spawns
# (C)2014 ProjectSWG
from resources.datatables import Options
from resources.datatables import State
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
objSvc = core.objectService
# TODO Check all NPCs for personalized scripting, change format.
# City hall
indigoSiyan = stcSvc.spawnObject('object/mobile/shared_dressed_indigo_siyan.iff', 'tatooine', long(926483), float(24.7), float(3.2), float(-30.7), float(-0.06), float(0.99))
indigoSiyan.setCustomName2('Indigo Siyan')
indigoSiyan.setOptionsBitmask(256)
keanna = stcSvc.spawnObject('object/mobile/shared_dressed_keanna_likyna.iff', 'tatooine', long(926480), float(-18.7), float(3.2), float(20.6), float(-0.97), float(0.2))
keanna.setCustomName2('Keanna Li\'kyna')
keanna.setOptionsBitmask(256)
oberhaur = stcSvc.spawnObject('object/mobile/shared_space_imperial_tier2_tatooine_oberhaur.iff', 'tatooine', long(926480), float(-21.9), float(3.2), float(26.9), float(0.99), float(0.01))
oberhaur.setCustomName2('Commander Oberhaur')
oberhaur.setOptionsBitmask(256)
seanTrenwell = stcSvc.spawnObject('object/mobile/shared_dressed_sean_trenwell.iff', 'tatooine', long(926483), float(19.4), float(3.2), float(-36), float(-0.06), float(0.99))
seanTrenwell.setCustomName2('Sean Trenwell')
seanTrenwell.setOptionsBitmask(256)
talmont = stcSvc.spawnObject('object/mobile/shared_prefect_talmont.iff', 'tatooine', long(926475), float(-1.9), float(3.1), float(-10.3), float(0.99), float(0))
talmont.setCustomName2('Prefect Talmont')
talmont.setOptionsBitmask(256)
tourAryon = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_tour_aryon.iff', 'tatooine', long(926479), float(-36.8), float(1.3), float(0.3), float(0.8), float(0.59))
tourAryon.setCustomName2('Tour Aryon')
tourAryon.setOptionsBitmask(256)
victorVisalis = stcSvc.spawnObject('object/mobile/shared_dressed_victor_visalis.iff', 'tatooine', long(926480), float(-26.7), float(3.2), float(20.8), float(0.96), float(0.24))
victorVisalis.setCustomName2('Victor Visalis')
victorVisalis.setOptionsBitmask(256)
wilhalmSkrim = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_wilhalm_skrim.iff', 'tatooine', long(926482), float(28.9), float(1.3), float(-6.0), float(0.23), float(0.97))
wilhalmSkrim.setCustomName2('Wilhalm Skrim')
wilhalmSkrim.setOptionsBitmask(256)
#Miscellaneous Building Interiors
akalColzet = stcSvc.spawnObject('object/mobile/shared_dressed_imperial_trainer_space_01.iff', 'tatooine', long(1212359), float(0.7), float(1.8), float(-14), float(0), float(0.99))
akalColzet.setCustomName2('lt. Akal Colzet')
akalColzet.setOptionsBitmask(256)
fariousGletch = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_farious_gletch.iff', 'tatooine', long(1278989), float(2.0), float(-0.4), float(-5.7), float(-0.15), float(0.98))
fariousGletch.setCustomName2('Farious Gletch')
fariousGletch.setOptionsBitmask(256)
pfilbeeJhorn = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_pfilbee_jhorn.iff', 'tatooine', long(1279923), float(5.1), float(0.1), float(-3.8), float(-0.7), float(0.71))
pfilbeeJhorn.setCustomName2('Pfilbee Jhorn')
pfilbeeJhorn.setOptionsBitmask(256)
#Hotel interior
gilBurtin = stcSvc.spawnObject('object/mobile/shared_dressed_industrialist_trainer_01.iff', 'tatooine', long(1223850), float(20.3), float(1.6), float(12.8), float(0.99), float(0))
gilBurtin.setCustomName2('Gil Burtin')
gilBurtin.setOptionsBitmask(256)
# Outside
barak = stcSvc.spawnObject('object/mobile/shared_smuggler_broker_barak.iff', 'tatooine', long(0), float(-1049), float(5.0), float(-3537), float(0.97), float(0.23))
barak.setCustomName2('Barak')
barak.setOptionsBitmask(256)
barrezz = stcSvc.spawnObject('object/mobile/shared_dressed_dressed_legacy_barrezz.iff', 'tatooine', long(0), float(-1146.8), float(98.0), float(-3892.1), float(0.75), float(0.65))
barrezz.setCustomName2('Commander Barrezz')
barrezz.setOptionsBitmask(256)
jasha = stcSvc.spawnObject('object/mobile/shared_dressed_bestinejobs_jasha.iff', 'tatooine', long(0), float(-1128), float(98.0), float(-3900), float(-0.42), float(0.90))
jasha.setCustomName2('Captain Jasha')
jasha.setOptionsBitmask(256)
dkrn = stcSvc.spawnObject('object/mobile/shared_dressed_imperial_general_m.iff', 'tatooine', long(0), float(-1160), float(5.0), float(-3525), float(0.90), float(-0.41))
dkrn.setCustomName2('Commander D\'krn')
dkrn.setOptionsBitmask(256)
gunham = stcSvc.spawnObject('object/mobile/shared_dressed_imperial_lieutenant_m.iff', 'tatooine', long(0), float(-1125), float(12.2), float(-3620), float(0.9), float(0.42))
gunham.setCustomName2('Commander Gunham')
gunham.setOptionsBitmask(256)
kormundThrylle = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_kormund_thrylle.iff', 'tatooine', long(0), float(-1043), float(10.0), float(-3530), float(0.99), float(0.06))
kormundThrylle.setCustomName2('Kormund Thrylle')
kormundThrylle.setOptionsBitmask(256)
calebKnolar = stcSvc.spawnObject('object/mobile/shared_dressed_imperial_major_cold_m.iff', 'tatooine', long(0), float(-1149), float(98.0), float(-3903), float(0.42), float(0.91))
calebKnolar.setCustomName2('Major Caleb Knolar')
calebKnolar.setOptionsBitmask(256)
return
@@ -0,0 +1,82 @@
import sys
# Project SWG: Jabba's Palace: Static Spawns
# (C)2014 ProjectSWG
from resources.datatables import Options
from resources.datatables import State
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
objSvc = core.objectService
# TODO Check all NPCs for personalized scripting, change format.
# TODO Verify proper cell IDs once Jabba's Palace is spawning properly again.
reelo = stcSvc.spawnObject('object/mobile/shared_reelo_baruk.iff', 'tatooine', long(26560), float(-3.5), float(0.2), float(113.5), float(0), float(0))
reelo.setCustomName2('Reelo Baruk')
reelo.setOptionsBitmask(264)
reeyees = stcSvc.spawnObject('object/mobile/shared_dressed_gran_thug_male_01.iff', 'tatooine', long(26560), float(5.8), float(0.2), float(115.7), float(0.70), float(-0.71))
reeyees.setCustomName2('Ree-Yees')
reeyees.setOptionsBitmask(264)
ephant = stcSvc.spawnObject('object/mobile/shared_ephant_mon.iff', 'tatooine', long(26564), float(-6.1), float(5.8), float(86.1), float(0), float(0))
ephant.setCustomName2('Ephant Mon')
ephant.setOptionsBitmask(264)
porcellus = stcSvc.spawnObject('object/mobile/shared_dressed_porcellus.iff', 'tatooine', long(26572), float(-44.0), float(3.0), float(63.4), float(0), float(0))
porcellus.setCustomName2('Porcellus')
porcellus.setOptionsBitmask(264)
barada = stcSvc.spawnObject('object/mobile/shared_barada.iff', 'tatooine', long(26596), float(31.2), float(0.2), float(-1.0), float(0.98), float(-0.17))
barada.setCustomName2('Barada')
barada.setOptionsBitmask(264)
bibMain = stcSvc.spawnObject('object/mobile/shared_bib_fortuna.iff', 'tatooine', long(26582), float(-11.1), float(2.0), float(49.5), float(0.70), float(0.71))
bibMain.setCustomName2('Bib Fortuna')
bibMain.setOptionsBitmask(264)
jabba = stcSvc.spawnObject('object/mobile/shared_jabba_the_hutt.iff', 'tatooine', long(26582), float(-17.0), float(2.8), float(44.9), float(0.70), float(0.71))
jabba.setCustomName2('Jabba the Hutt')
jabba.setOptionsBitmask(264)
oola = stcSvc.spawnObject('object/mobile/shared_oola.iff', 'tatooine', long(26582), float(-10.3), float(2.0), float(43.9), float(0.70), float(-0.71))
oola.setCustomName2('Oola')
oola.setOptionsBitmask(264)
bobaFett = stcSvc.spawnObject('object/mobile/shared_boba_fett.iff', 'tatooine', long(26582), float(-1.0), float(3.0), float(33.1), float(0), float(0))
bobaFett.setCustomName2('Boba Fett')
bobaFett.setOptionsBitmask(264)
ev9d9 = stcSvc.spawnObject('object/mobile/shared_ev_9d9.iff', 'tatooine', long(26574), float(18.8), float(0.2), float(78.7), float(1.0), float(0))
ev9d9.setCustomName2('EV-9D9')
ev9d9.setOptionsBitmask(264)
malakili = stcSvc.spawnObject('object/mobile/shared_malakili.iff', 'tatooine', long(26599), float(17.3), float(-11.0), float(43.8), float(0), float(0))
malakili.setCustomName2('Malakili')
malakili.setOptionsBitmask(264)
# TODO Need to somehow get the cellID for the Rancor Pit or it will NEVER be spawned.
maxRebo = stcSvc.spawnObject('object/mobile/shared_max_rebo.iff', 'tatooine', long(26582), float(-1.4), float(3.0), float(26.9), float(0.42), float(-0.9))
maxRebo.setCustomName2('Max Rebo')
maxRebo.setOptionsBitmask(264)
droopy = stcSvc.spawnObject('object/mobile/shared_droopy_mccool.iff', 'tatooine', long(26582), float(-3.9), float(3.0), float(26.1), float(0.42), float(-0.9))
droopy.setCustomName2('Droopy McCool')
droopy.setOptionsBitmask(264)
sySnootles = stcSvc.spawnObject('object/mobile/shared_sy_snootles.iff', 'tatooine', long(26582), float(-1.4), float(3.0), float(29.8), float(0.42), float(-0.))
sySnootles.setCustomName2('Sy Snootles')
sySnootles.setOptionsBitmask(264)
g5po = stcSvc.spawnObject('object/mobile/shared_3po_protocol_droid_red.iff', 'tatooine', long(26582), float(-14.3), float(2.0), float(47.4), float(0.70), float(0.71))
g5po.setCustomName2('G5-PO')
g5po.setOptionsBitmask(264)
return
@@ -0,0 +1,25 @@
import sys
# Project SWG: Jawa Sandcrawler - Legacy Quest Area: Static Spawns
# (C)2014 ProjectSWG
from resources.datatables import Options
from resources.datatables import State
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
objSvc = core.objectService
# TODO Check all NPCs for personalized scripting, change format.
#Outside
fa2po = stcSvc.spawnObject('object/mobile/shared_3po_protocol_droid.iff', 'tatooine', long(0), float(-3805.7), float(30.4), float(-4721.6), float(0), float(0))
fa2po.setCustomName2('FA-2PO')
fa2po.setOptionsBitmask(256)
return
@@ -0,0 +1,25 @@
import sys
# Project SWG: Mos Entha: Static Spawns
# (C)2014 ProjectSWG
from resources.datatables import Options
from resources.datatables import State
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
objSvc = core.objectService
# TODO Check all NPCs for personalized scripting, change format.
#Outside
zefAndo = stcSvc.spawnObject('object/mobile/shared_dressed_legacy_zef.iff', 'tatooine', long(0), float(-2574.9), float(0), float(-5516.7), float(0), float(0))
zefAndo.setCustomName2('Zef Ando')
zefAndo.setOptionsBitmask(256)
return
@@ -0,0 +1,336 @@
import sys
# Project SWG: Mos Eisley: Static Spawns
# (C)2014 ProjectSWG
from resources.datatables import Options
from resources.datatables import State
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
objSvc = core.objectService
# TODO Check all NPCs for personalized scripting, change format.
#Cantina Interior
wuher = stcSvc.spawnObject('object/mobile/shared_wuher.iff', 'tatooine', long(1082877), float(8.6), float(-0.9), float(0.4), float(0.71), float(0.71))
wuher.setCustomName2('Wuher')
wuher.setOptionsBitmask(256)
chadraFanFemale = stcSvc.spawnObject('object/mobile/shared_chadra_fan_female.iff', 'tatooine', long(1082877), float(10.6), float(-0.9), float(-1.5), float(0.42), float(0.90))
chadraFanFemale.setCustomName2('a Chadra Fan Female')
chadraFanFemale.setOptionsBitmask(256)
chadraFanMale = stcSvc.spawnObject('object/mobile/shared_chadra_fan_male.iff', 'tatooine', long(1082877), float(10.7), float(-0.9), float(-0.3), float(0.64), float(0.77))
chadraFanMale.setCustomName2('a Chadra Fan Male')
chadraFanMale.setOptionsBitmask(256)
muftak = stcSvc.spawnObject('object/mobile/shared_muftak.iff', 'tatooine', long(1082877), float(20.3), float(-0.9), float(4.9), float(0.82), float(0.57))
muftak.setCustomName2('Muftak')
muftak.setOptionsBitmask(256)
chissMale1 = stcSvc.spawnObject('object/mobile/ep3/shared_ep3_etyyy_chiss_poacher_01.iff', 'tatooine', long(1082877), float(1.7), float(-0.9), float(-5.0), float(0.71), float(0.71))
chissMale1.setCustomName2('a Chiss Male')
chissMale1.setOptionsBitmask(256)
chissMale2 = stcSvc.spawnObject('object/mobile/ep3/shared_ep3_etyyy_chiss_poacher_02.iff', 'tatooine', long(1082877), float(3.4), float(-0.9), float(-4.8), float(0), float(0))
chissMale2.setCustomName2('a Chiss Male')
chissMale2.setOptionsBitmask(256)
cantinaStorm = stcSvc.spawnObject('object/mobile/shared_stormtrooper.iff', 'tatooine', long(1082877), float(2.9), float(-0.9), float(-6.5), float(0.71), float(0.71))
cantinaStorm.setCustomName2('a Stormtrooper')
cantinaStorm.setOptionsBitmask(256)
cantinaStormL = stcSvc.spawnObject('object/mobile/shared_stormtrooper_groupleader.iff', 'tatooine', long(1082877), float(3.6), float(-0.9), float(-7.9), float(0.71), float(0.71))
cantinaStormL.setCustomName2('a Stormtrooper Squad Leader')
cantinaStormL.setOptionsBitmask(256)
figrinDan = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(3.7), float(-0.9), float(-14.4), float(0.42), float(0.91))
figrinDan.setCustomName2('Figrin D\'an')
figrinDan.setOptionsBitmask(256)
techMor = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(4.0), float(-0.9), float(-17.0), float(0.42), float(0.91))
techMor.setCustomName2('Tech M\'or')
techMor.setOptionsBitmask(256)
doikkNats = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(2.2), float(-0.9), float(-16.4), float(0.42), float(0.91))
doikkNats.setCustomName2('Doikk Na\'ts')
doikkNats.setOptionsBitmask(256)
tednDahai = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(1.3), float(-0.9), float(-15.2), float(0.42), float(0.91))
tednDahai.setCustomName2('Tedn Dahai')
tednDahai.setOptionsBitmask(256)
nalanCheel = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(0.5), float(-0.9), float(-17.1), float(0.42), float(0.91))
nalanCheel.setCustomName2('Nalan Cheel')
nalanCheel.setOptionsBitmask(256)
businessman1 = stcSvc.spawnObject('object/mobile/shared_dressed_businessman_human_male_01.iff', 'tatooine', long(1082877), float(11.0), float(-0.9), float(2.1), float(0.38), float(-0.92))
businessman1.setCustomName2('a Businessman')
businessman1.setOptionsBitmask(256)
commoner1 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_aqualish_male_01.iff', 'tatooine', long(1082877), float(10.3), float(-0.9), float(2.7), float(0.82), float(0.57))
commoner1.setCustomName2('a Commoner')
commoner1.setOptionsBitmask(256)
entertainer1 = stcSvc.spawnObject('object/mobile/shared_dressed_entertainer_trainer_twk_female_01.iff', 'tatooine', long(1082877), float(9.4), float(-0.9), float(3.9), float(0.38), float(-0.92))
entertainer1.setCustomName2('an Entertainer')
entertainer1.setOptionsBitmask(256)
noble1 = stcSvc.spawnObject('object/mobile/shared_dressed_noble_trandoshan_male_01.iff', 'tatooine', long(1082877), float(8.6), float(-0.9), float(4.8), float(0.82), float(0.57))
noble1.setCustomName2('a Noble')
noble1.setOptionsBitmask(256)
commoner2 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_trandoshan_female_01.iff', 'tatooine', long(1082877), float(4.1), float(-0.9), float(5.7), float(1), float(0))
commoner2.setCustomName2('a Commoner')
commoner2.setOptionsBitmask(256)
commoner3 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_bothan_female_01.iff', 'tatooine', long(1082877), float(3.1), float(-0.9), float(5.9), float(1), float(0))
commoner3.setCustomName2('a Commoner')
commoner3.setOptionsBitmask(256)
commoner4 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_fat_twilek_male_01.iff', 'tatooine', long(1082877), float(1.7), float(-0.9), float(6.0), float(1), float(0))
commoner4.setCustomName2('a Commoner')
commoner4.setOptionsBitmask(256)
commoner5 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_bothan_male_01.iff', 'tatooine', long(1082877), float(-0.4), float(-0.9), float(5.9), float(1), float(0))
commoner5.setCustomName2('a Commoner')
commoner5.setOptionsBitmask(256)
commoner6 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_05.iff', 'tatooine', long(1082877), float(16.0), float(-0.9), float(4.1), float(0), float(0))
commoner6.setCustomName2('a Commoner')
commoner6.setOptionsBitmask(256)
commoner7 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_fat_zabrak_male_01.iff', 'tatooine', long(1082877), float(8.8), float(-0.9), float(-6.0), float(0.98), float(-0.22))
commoner7.setCustomName2('a Patron')
commoner7.setOptionsBitmask(256)
commoner8 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_08.iff', 'tatooine', long(1082877), float(6.8), float(-0.9), float(-6.5), float(0.98), float(-0.22))
commoner8.setCustomName2('a Patron')
commoner8.setOptionsBitmask(256)
commoner9 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_aqualish_male_09.iff', 'tatooine', long(1082877), float(1.1), float(-0.9), float(-7.7), float(0.42), float(0.91))
commoner9.setCustomName2('a Commoner')
commoner9.setOptionsBitmask(256)
commoner10 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_nikto_male_04.iff', 'tatooine', long(1082877), float(2.1), float(-0.9), float(-8.4), float(0.42), float(0.91))
commoner10.setCustomName2('a Commoner')
commoner10.setOptionsBitmask(256)
anetiaKahryn = stcSvc.spawnObject('object/mobile/shared_dressed_twk_entertainer.iff', 'tatooine', long(1082878), float(19.8), float(-0.9), float(-21), float(-0.03), float(0.99))
anetiaKahryn.setCustomName2('Anetia Kah\'ryn')
anetiaKahryn.setOptionsBitmask(256)
dravis = stcSvc.spawnObject('object/mobile/shared_space_privateer_tier1_tatooine.iff', 'tatooine', long(1082886), float(-21.7), float(-0.9), float(25.5), float(0.99), float(0.03))
dravis.setCustomName2('Dravis')
dravis.setOptionsBitmask(256)
talonKarrde = stcSvc.spawnObject('object/mobile/shared_dressed_talon_karrde.iff', 'tatooine', long(1082887), float(-25.7), float(-0.5), float(8.8), float(0.21), float(0.97))
talonKarrde.setCustomName2('Talon Karrde')
talonKarrde.setOptionsBitmask(256)
#Starport Interior
bartender1 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_nikto_male_04.iff', 'tatooine', long(1106380), float(-59.1), float(2.6), float(39.5), float(0), float(0))
bartender1.setCustomName2('a Bartender')
bartender1.setOptionsBitmask(256)
#City Hall Interior
#Lucky Despot Interior TODO: Check Cell IDs for Spawned NPCS inside once Lucky Despot is spawning properly again.
hansolo1 = stcSvc.spawnObject('object/mobile/shared_han_solo.iff', 'tatooine', long(26949), float(32.3), float(7.0), float(1.6), float(0), float(0))
hansolo1.setCustomName2('Han Solo')
hansolo1.setOptionsBitmask(256)
#Medical Center Interior
#Theater Interior
#Miscellaneous Building Interiors
#Outside
businessman2 = stcSvc.spawnObject('object/mobile/shared_dressed_businessman_human_male_01.iff', 'tatooine', long(0), float(3663.3), float(4.0), float(-4738.6), float(0), float(0))
businessman2.setCustomName2('a Businessman')
businessman2.setOptionsBitmask(256)
noble2 = stcSvc.spawnObject('object/mobile/shared_dressed_noble_human_female_01.iff', 'tatooine', long(0), float(3542.3), float(5.0), float(-4826.0), float(0.42), float(0.91))
noble2.setCustomName2('a Noble')
noble2.setOptionsBitmask(256)
commoner11 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_06.iff', 'tatooine', long(0), float(3529.1), float(5.0), float(-4900.4), float(0.42), float(0.91))
commoner11.setCustomName2('a Commoner')
commoner11.setOptionsBitmask(256)
businessman3 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_trandoshan_male_02.iff', 'tatooine', long(0), float(3595.7), float(5.0), float(-4740.1), float(0), float(0))
businessman3.setCustomName2('a Businessman')
businessman3.setOptionsBitmask(256)
jawa1 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3663.3), float(5.0), float(-4858.6), float(0), float(0))
jawa1.setCustomName2('a Jawa')
jawa1.setOptionsBitmask(256)
commoner12 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_moncal_male_01.iff', 'tatooine', long(0), float(3490.3), float(5.0), float(-4799.4), float(0), float(0))
commoner12.setCustomName2('a Scientist')
commoner12.setOptionsBitmask(256)
commoner13 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_zabrak_female_02.iff', 'tatooine', long(0), float(3559.7), float(5.0), float(-4725.9), float(0), float(0))
commoner13.setCustomName2('a Commoner')
commoner13.setOptionsBitmask(256)
commoner14 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_devaronian_male_01.iff', 'tatooine', long(0), float(3527.7), float(5.0), float(-4721.1), float(0.71), float(0.71))
commoner14.setCustomName2('a Commoner')
commoner14.setOptionsBitmask(256)
commoner15 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_aqualish_female_01.iff', 'tatooine', long(0), float(3514.9), float(5.0), float(-4737.8), float(0), float(0))
commoner15.setCustomName2('a Commoner')
commoner15.setOptionsBitmask(256)
jawa2 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3485.2), float(4.9), float(-4859.2), float(0), float(0))
jawa2.setCustomName2('a Jawa')
jawa2.setOptionsBitmask(256)
jawa3 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3465.3), float(5.0), float(-4860.1), float(0.71), float(-0.71))
jawa3.setCustomName2('a Jawa')
jawa3.setOptionsBitmask(256)
jawa4 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3486.8), float(5.0), float(-4884.7), float(0.43051), float(-0.9025))
jawa4.setCustomName2('a Jawa')
jawa4.setOptionsBitmask(256)
jawa5 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3487.1), float(5.0), float(-4886.0), float(0.95105), float(0.3090))
jawa5.setCustomName2('a Jawa')
jawa5.setOptionsBitmask(256)
jawa6 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3488.8), float(5.0), float(-4884.4), float(0.3255), float(-0.9455))
jawa6.setCustomName2('a Jawa')
jawa6.setOptionsBitmask(256)
jawa7 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3472.2), float(5.0), float(-4918.4), float(0), float(0))
jawa7.setCustomName2('a Jawa')
jawa7.setOptionsBitmask(256)
jawa8 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3471.4), float(5.0), float(-4919.5), float(0), float(0))
jawa8.setCustomName2('a Jawa')
jawa8.setOptionsBitmask(256)
jawa9 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3470.3), float(5.0), float(-4918.7), float(0), float(0))
jawa9.setCustomName2('a Jawa')
jawa9.setOptionsBitmask(256)
bib = stcSvc.spawnObject('object/mobile/shared_bib_fortuna.iff', 'tatooine', long(0), float(3552.4), float(5.0), float(-4933.2), float(0.31730), float(-0.9483))
bib.setCustomName2('Bib Fortuna')
bib.setOptionsBitmask(256)
commoner16 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_06.iff', 'tatooine', long(0), float(3398.2), float(4.0), float(-4654.2), float(0.42), float(0.91))
commoner16.setCustomName2('a Commoner')
commoner16.setOptionsBitmask(256)
noble3 = stcSvc.spawnObject('object/mobile/shared_dressed_noble_human_female_01.iff', 'tatooine', long(0), float(3396.3), float(4.0), float(-4774.1), float(0.42), float(0.91))
noble3.setCustomName2('a Noble')
noble3.setOptionsBitmask(256)
entertainer1 = stcSvc.spawnObject('object/mobile/shared_dressed_entertainer_trainer_twk_female_01.iff', 'tatooine', long(0), float(3305.7), float(5.6), float(-4771.7), float(0), float(0))
entertainer1.setCustomName2('an Entertainer')
entertainer1.setOptionsBitmask(256)
r3m6 = stcSvc.spawnObject('object/mobile/shared_r3.iff', 'tatooine', long(0), float(3460.1), float(4.0), float(-4898.2), float(0.38), float(-0.92))
r3m6.setCustomName2('R3-M6')
r3m6.setOptionsBitmask(256)
eg1 = stcSvc.spawnObject('object/mobile/shared_eg6_power_droid.iff', 'tatooine', long(0), float(3463.8), float(4.0), float(-4882.6), float(-0.38), float(0.92))
eg1.setCustomName2('an EG-6 Power Droid')
eg1.setOptionsBitmask(256)
commoner17 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_zabrak_female_02.iff', 'tatooine', long(0), float(3452.6), float(4.0), float(-4937.1), float(0), float(0))
commoner17.setCustomName2('a Commoner')
commoner17.setOptionsBitmask(256)
lifter1 = stcSvc.spawnObject('object/mobile/shared_cll8_binary_load_lifter.iff', 'tatooine', long(0), float(3547), float(5.0), float(-4768.9), float(0), float(0))
lifter1.setCustomName2('a CLL-8 Binary Load Lifter')
lifter1.setOptionsBitmask(256)
r3j7 = stcSvc.spawnObject('object/mobile/shared_r3.iff', 'tatooine', long(0), float(3311.1), float(4.0), float(-4820.2), float(0.38), float(-0.92))
r3j7.setCustomName2('R3-J7')
r3j7.setOptionsBitmask(256)
noble4 = stcSvc.spawnObject('object/mobile/shared_dressed_noble_human_female_03.iff', 'tatooine', long(0), float(3255.3), float(4.0), float(-4848.1), float(0.42), float(0.91))
noble4.setCustomName2('a Noble')
noble4.setOptionsBitmask(256)
byxlePedette = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_opening_byxle.iff', 'tatooine', long(0), float(3365), float(5), float(-4639), float(0.99), float(0.12))
byxlePedette.setOptionsBitmask(264)
errikDarksider = stcSvc.spawnObject('object/mobile/shared_dressed_herald_tatooine_01.iff', 'tatooine', long(0), float(3381), float(4.6), float(-4498), float(0.91), float(0.40))
errikDarksider.setCustomName2('Errik Darksider')
errikDarksider.setOptionsBitmask(256)
gendra = stcSvc.spawnObject('object/mobile/shared_dressed_gendra.iff', 'tatooine', long(0), float(3308), float(5.6), float(-4785), float(0.84), float(0.53))
gendra.setOptionsBitmask(264)
lurval = stcSvc.spawnObject('object/mobile/shared_lurval.iff', 'tatooine', long(0), float(3387), float(5), float(-4791), float(-0.4), float(0.91))
lurval.setCustomName2('Lurval')
lurval.setOptionsBitmask(256)
matildaCarson = stcSvc.spawnObject('object/mobile/shared_dressed_noble_human_female_02.iff', 'tatooine', long(0), float(3490.2), float(5), float(-4778), float(0.87), float(0.48))
matildaCarson.setCustomName2('Matilda Carson')
matildaCarson.setOptionsBitmask(256)
vanvi = stcSvc.spawnObject('object/mobile/shared_dressed_bestine_artist01.iff', 'tatooine', long(0), float(3312), float(5), float(-4655), float(0.95), float(-0.28))
vanvi.setCustomName2('Vanvi Hotn')
vanvi.setOptionsBitmask(256)
#Eisley Legacy Quest NPCs
vourk = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_opening_santos.iff', 'tatooine', long(0), float(3520.0), float(5.0), float(-4821.0), float(0.42), float(0.91))
vourk.setCustomName2('Vourk Ver\'Zremp')
vourk.setOptionsBitmask(256)
mayor = stcSvc.spawnObject('object/mobile/shared_dressed_mayor_mikdanyell_guhrantt.iff', 'tatooine', long(1279960), float(1.2), float(2.5), float(5.4), float(0), float(0))
mayor.setOptionsBitmask(264)
enthaKandela = stcSvc.spawnObject('object/mobile/shared_dressed_entha_kandela.iff', 'tatooine', long(0), float(3511), float(5.0), float(-4785), float(0.70), float(0.71))
enthaKandela.setCustomName2('Entha Kandela')
enthaKandela.setOptionsBitmask(256)
purvis = stcSvc.spawnObject('object/mobile/shared_dressed_purvis_arrison.iff', 'tatooine', long(0), float(3512.4), float(5.0), float(-4764.9), float(0.38), float(-0.92))
purvis.setCustomName2('Purvis Arrison')
purvis.setOptionsBitmask(256)
peawpRdawc = stcSvc.spawnObject('object/mobile/shared_peawp_bodyguard_trainer.iff', 'tatooine', long(1189639), float(-11.8), float(1.1), float(-10.1), float(0), float(0))
peawpRdawc.setCustomName2('Peawp R\'dawc')
peawpRdawc.setOptionsBitmask(256)
nikoBrehe = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_opening_niko.iff', 'tatooine', long(0), float(3506.7), float(5.0), float(-4795.8), float(0.70), float(0.71))
nikoBrehe.setOptionsBitmask(264)
dunir = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_opening_dunir.iff', 'tatooine', long(0), float(3520.7), float(5.0), float(-4683.7), float(0.99), float(-0.08))
dunir.setOptionsBitmask(264)
#Eisley Ship Controller
stcSvc.spawnObject('object/mobile/shared_distant_ship_controller.iff', 'tatooine', long(0), float(3542.3), float(5.0), float(-4826.0), float(0.42), float(0.91))
#recruiters
impRecruiter = stcSvc.spawnObject('object/mobile/shared_dressed_imperial_officer_f.iff', 'tatooine', long(1280132), float(-6), float(1), float(9.2), float(0.70), float(0.71))
impRecruiter.setOptionsBitmask(264)
#Profession Counselor
stcSvc.spawnObject('object/mobile/shared_respec_seller_f_1.iff', 'tatooine', long(0), float(3533.14), float(5), float(-4788.86), float(-0.3327), float(0.9288))
#Junk Dealers
stcSvc.spawnObject('object/mobile/shared_junk_dealer_m_01.iff', 'tatooine', long(0), float(3355), float(5), float(-4823), float(0.71), float(0.71))
stcSvc.spawnObject('object/mobile/shared_junk_dealer_m_01.iff', 'tatooine', long(0), float(3412), float(5), float(-4713), float(0.71), float(-0.71))
stcSvc.spawnObject('object/mobile/shared_junk_dealer_m_01.iff', 'tatooine', long(0), float(3500), float(5), float(-4960), float(0), float(0))
stcSvc.spawnObject('object/mobile/shared_junk_dealer_m_01.iff', 'tatooine', long(0), float(3497), float(5), float(-4928), float(0), float(1))
stcSvc.spawnObject('object/mobile/shared_junk_dealer_m_01.iff', 'tatooine', long(0), float(3377), float(5), float(-4524), float(0.71), float(0.71))
stcSvc.spawnObject('object/mobile/shared_junk_dealer_m_01.iff', 'tatooine', long(0), float(3271), float(5), float(-4704), float(0), float(0))
stcSvc.spawnObject('object/mobile/shared_junk_dealer_m_01.iff', 'tatooine', long(0), float(3476), float(5), float(-4665), float(0.71), float(0.71))
return
@@ -0,0 +1,25 @@
import sys
# Project SWG: Mos Entha: Static Spawns
# (C)2014 ProjectSWG
from resources.datatables import Options
from resources.datatables import State
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
objSvc = core.objectService
# TODO Check all NPCs for personalized scripting, change format.
#Outside
ankwee = stcSvc.spawnObject('object/mobile/shared_dressed_tatooine_entha_ankwee.iff', 'tatooine', long(0), float(1351), float(5.0), float(3108), float(0.42), float(0.91))
ankwee.setCustomName2('An\'kwee')
ankwee.setOptionsBitmask(256)
return
@@ -0,0 +1,69 @@
import sys
# Project SWG: Mos Espa: Static Spawns
# (C)2014 ProjectSWG
from resources.datatables import Options
from resources.datatables import State
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
objSvc = core.objectService
# TODO Check all NPCs for personalized scripting, change format.
# Cantina Interior
dalaSocuna = stcSvc.spawnObject('object/mobile/shared_space_rebel_tier1_tatooine_socuna.iff', 'tatooine', long(1256068), float(-28.4), float(-0.5), float(9.4), float(0.33), float(0.94))
dalaSocuna.setCustomName2('Commander Da\'la Socuna')
dalaSocuna.setOptionsBitmask(256)
#Watto's Shop ****TODO: Get Proper cells for Watto's Shop once Buildout structures are spawning as intended again.
watto = stcSvc.spawnObject('object/mobile/shared_watto.iff', 'tatooine', long(26670), float(4.7), float(-0.5), float(2.4), float(0.70), float(-0.71))
watto.setCustomName2('Watto')
watto.setOptionsBitmask(256)
#Exterior Uninteractable NPCs
commoner18 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_zabrak_female_02.iff', 'tatooine', long(0), float(-2915.3), float(5.0), float(2148.5), float(0), float(0))
commoner18.setCustomName2('a Commoner')
commoner18.setOptionsBitmask(256)
jawa10 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(-2966.3), float(5.0), float(2196.9), float(0), float(0))
jawa10.setCustomName2('a Jawa')
jawa10.setOptionsBitmask(256)
commoner19 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_06.iff', 'tatooine', long(0), float(-2960.4), float(5.0), float(2271.3), float(0), float(0))
commoner19.setCustomName2('a Commoner')
commoner19.setOptionsBitmask(256)
commoner20 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_devaronian_male_01.iff', 'tatooine', long(0), float(-2934.3), float(5.0), float(2298.9), float(0.71), float(0.71))
commoner20.setCustomName2('a Commoner')
commoner20.setOptionsBitmask(256)
commoner21 = stcSvc.spawnObject('object/mobile/shared_dressed_noble_human_female_01.iff', 'tatooine', long(0), float(-2897.7), float(5.0), float(2345.4), float(0.71), float(0.71))
commoner21.setCustomName2('a Commoner')
commoner21.setOptionsBitmask(256)
commoner22 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_fat_twilek_male_01.iff', 'tatooine', long(0), float(-2763.8), float(5.0), float(2305.2), float(0.71), float(0.71))
commoner22.setCustomName2('a Commoner')
commoner22.setOptionsBitmask(256)
jawa11 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(-2936.8), float(5.0), float(2078.4), float(0.95105), float(0.3090))
jawa11.setCustomName2('a Jawa')
jawa11.setOptionsBitmask(256)
businessman4 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_trandoshan_male_02.iff', 'tatooine', long(0), float(-2914.2), float(5.0), float(2022.4), float(0), float(0))
businessman4.setCustomName2('a Businessman')
businessman4.setOptionsBitmask(256)
commoner23 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_moncal_male_01.iff', 'tatooine', long(0), float(-2904.1), float(5.0), float(1965.3), float(0.71), float(0.71))
commoner23.setCustomName2('a Commoner')
commoner23.setOptionsBitmask(256)
return
@@ -0,0 +1,21 @@
import sys
from resources.datatables import Options
from resources.datatables import State
def addPlanetSpawns(core, planet):
########################################################
# DO NOT ADD ANYTHING ELSE TO THIS SCRIPT, PLEASE USE THE
# SUBFOLDERS FOR EACH PLANET AND CREATE NEW SCRIPTS FOR
# EACH AREA OF A PLANET. - LEVARRIS
########################################################
stcSvc = core.staticService
# Blue Frog: Uncomment only when needed for testing.
stcSvc.spawnObject('object/tangible/terminal/shared_terminal_character_builder.iff', 'tatooine', long(0), float(3525), float(4), float(-4801), float(0.70), float(0.71))
########################################################
# DO NOT ADD ANYTHING ELSE TO THIS SCRIPT, PLEASE USE THE
# SUBFOLDERS FOR EACH PLANET AND CREATE NEW SCRIPTS FOR
# EACH AREA OF A PLANET. - LEVARRIS
########################################################
return
+6
View File
@@ -55,6 +55,12 @@ public class ProsePackage {
stf.setStfName(stfLabel);
}
public ProsePackage(String stfFile, String stfLabel, String ttCustomString) {
stf.setStfFilename(stfFile);
stf.setStfName(stfLabel);
this.ttCustomString = ttCustomString;
}
public ProsePackage(String stfFile, String stfLabel, long tuObjectId, String tuStfFile, String tuStfLabel, String tuCustomString) {
stf.setStfFilename(stfFile);
stf.setStfName(stfLabel);
+28
View File
@@ -0,0 +1,28 @@
/*******************************************************************************
* 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 resources.datatables;
public class MilkState {
public static final byte NOTYETMILKED = 0;
public static final byte MILKINGINPROGRESS = 1;
public static final byte MILKED = 2;
}
@@ -25,15 +25,21 @@ import java.util.Random;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import protocol.swg.CommPlayerMessage;
import protocol.swg.PlayClientEffectLocMessage;
import protocol.swg.UpdatePVPStatusMessage;
import engine.resources.common.CRC;
import engine.resources.container.Traverser;
import engine.resources.objects.SWGObject;
import engine.resources.scene.Point3D;
import engine.resources.scene.Quaternion;
import main.NGECore;
import resources.common.BountyListItem;
import resources.common.OutOfBand;
import resources.common.ProsePackage;
import resources.common.SpawnPoint;
import resources.datatables.DisplayType;
import resources.objects.creature.CreatureObject;
import resources.objects.mission.MissionObject;
@@ -43,15 +49,27 @@ import services.mission.MissionObjective;
public class BountyMissionObjective extends MissionObjective {
private static final long serialVersionUID = 1L;
private Point3D lastKnownLocation;
private String lastKnownPlanet;
private ScheduledFuture<?> locationUpdater;
private ScheduledFuture<?> seekerUpdates;
private ScheduledFuture<?> probeSummonTask;
private long markObjId;
private boolean seekerActive = false;
private String seekerPlanet = "";
private boolean arakydActive = false;
private Point3D arakydLandingLocation;
////// Droids in the world - Set Posture to 8 to launch them. //////
// Seeker Droids: object/creature/npc/droid/crafted/shared_probe_droid_advanced.iff
// Arakyd Droids: object/creature/npc/droid/shared_imperial_probot_bounty.iff
///// Inventory form /////
// Seeker Droids: object/tangible/mission/shared_mission_bounty_droid_seeker.iff
// Arakyd Droids: object/tangible/mission/shared_mission_bounty_droid_probot.iff
public BountyMissionObjective(MissionObject parent) {
super(parent);
}
@@ -76,7 +94,7 @@ public class BountyMissionObjective extends MissionObjective {
String message = "@mission/mission_bounty_informant:target_hard_" + Integer.toString(new Random().nextInt(4) + 1);
CommPlayerMessage comm = new CommPlayerMessage(player.getObjectId(), new OutOfBand(new ProsePackage(message)));
comm.setTime(5000);
comm.setTime(2000);
switch (bountyTarget.getFaction()) {
case "neutral":
comm.setModel("object/mobile/shared_dressed_assassin_mission_giver_0" + Integer.toString(new Random().nextInt(2) + 1) + ".iff");
@@ -90,8 +108,17 @@ public class BountyMissionObjective extends MissionObjective {
} //Could also be: object/mobile/shared_bounty_guild_bounty_check.iff || object/mobile/shared_bounty_check_fugitive_x.iff
player.getClient().getSession().write(comm.serialize());
player.getPlayerObject().setBountyMissionId(getMissionObject().getObjectId());
/*CreatureObject target = (CreatureObject) core.objectService.getObject(markObjId);
if (target != null && target.getPlanetId() == player.getPlanetId()) {
UpdatePVPStatusMessage upvpm = new UpdatePVPStatusMessage(player.getObjectID(), core.factionService.calculatePvpStatus(player, target), player.getFaction());
player.getClient().getSession().write(upvpm.serialize());
}*/
}
@Override
public void complete(NGECore core, CreatureObject player) {
BountyListItem bounty = core.missionService.getBountyListItem(markObjId);
@@ -111,16 +138,20 @@ public class BountyMissionObjective extends MissionObjective {
clearActiveMissions(core, bounty);
core.missionService.removeBounty(markObjId);
player.getPlayerObject().setBountyMissionId(0);
}
@Override
public void abort(NGECore core, CreatureObject player) {
cancelLocationUpdates();
BountyListItem bounty = core.missionService.getBountyListItem(markObjId);
if (bounty == null)
return;
bounty.removeBountyHunter(player.getObjectId());
player.getPlayerObject().setBountyMissionId(0);
}
@Override
@@ -182,51 +213,147 @@ public class BountyMissionObjective extends MissionObjective {
}
}
public void beginSeekerUpdates(NGECore core) {
public void handleProbeDroidSummon(NGECore core, final CreatureObject actor) {
actor.sendSystemMessage("@mission/mission_generic:probe_droid_launch_prep", DisplayType.Broadcast);
AtomicInteger countDown = new AtomicInteger();
ScheduledFuture<?> summon = Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
switch(countDown.incrementAndGet()) {
case 15:
actor.sendSystemMessage("@mission/mission_generic:probe_droid_arrival_5", DisplayType.Broadcast);
break;
case 16:
actor.sendSystemMessage("@mission/mission_generic:probe_droid_arrival_4", DisplayType.Broadcast);
break;
case 17:
actor.sendSystemMessage("@mission/mission_generic:probe_droid_arrival_3", DisplayType.Broadcast);
break;
case 18:
actor.sendSystemMessage("@mission/mission_generic:probe_droid_arrival_2", DisplayType.Broadcast);
break;
case 19:
actor.sendSystemMessage("@mission/mission_generic:probe_droid_arrival_1", DisplayType.Broadcast);
arakydLandingLocation = SpawnPoint.getRandomPosition(actor.getPosition(), 50, 120, actor.getPlanetId());
PlayClientEffectLocMessage effectMsg = new PlayClientEffectLocMessage("clienteffect/probot_delivery.cef", actor.getPlanet().getName(), arakydLandingLocation);
actor.getClient().getSession().write(effectMsg.serialize());
break;
case 20:
break;
case 23:
Quaternion ori = actor.getOrientation();
CreatureObject probe = (CreatureObject) NGECore.getInstance().staticService.spawnObject("object/creature/npc/droid/shared_imperial_probot_bounty.iff",
actor.getPlanet().getName(), 0, arakydLandingLocation.x, arakydLandingLocation.y, arakydLandingLocation.z, ori.y, ori.w);
// TODO: Move probe to the player.
probe.setAttachment("probotRequester", actor.getObjectID());
probe.setAttachment("attachedMission", getMissionObject().getObjectID());
actor.sendSystemMessage("@mission/mission_generic:probe_droid_arrival", DisplayType.Broadcast);
probeSummonTask.cancel(false);
break;
}
}
}, 1, 1, TimeUnit.SECONDS);
probeSummonTask = summon;
}
public void beginSeekerUpdates(NGECore core, CreatureObject actor) {
if (!seekerActive) {
setSeekerActive(true);
setSeekerPlanet(getMissionObject().getGrandparent().getPlanet().getName());
setSeekerPlanet(actor.getPlanet().getName());
ScheduledFuture<?> updates = Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() {
AtomicInteger updates = new AtomicInteger();
ScheduledFuture<?> updater = Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
MissionObject mission = getMissionObject();
SWGObject target = core.objectService.getObject(markObjId);
CreatureObject player = (CreatureObject) mission.getGrandparent();
if (target == null) {
player.sendSystemMessage("@mission/mission_generic:player_target_inactive", DisplayType.Broadcast);
actor.sendSystemMessage("@mission/mission_generic:player_target_inactive", DisplayType.Broadcast);
cancelLocationUpdates();
return;
} else if (target.getPlanet().getName() != getSeekerPlanet()) {
player.sendSystemMessage("@mission/mission_generic:target_not_on_planet", DisplayType.Broadcast);
actor.sendSystemMessage("@mission/mission_generic:target_not_on_planet", DisplayType.Broadcast);
cancelLocationUpdates();
return;
} else {
WaypointObject missionWp = mission.getAttachedWaypoint();
if (missionWp == null) {
player.sendSystemMessage("@mission/mission_generic:target_not_found_1", DisplayType.Broadcast);
if (updates.get() >= 5) {
actor.sendSystemMessage("@mission/mission_generic:target_track_lost", DisplayType.Broadcast);
cancelLocationUpdates();
return;
}
missionWp.setPosition(target.getWorldPosition());
WaypointObject missionWp = mission.getAttachedWaypoint();
mission.setAttachedWaypoint(missionWp);
player.sendSystemMessage("@mission/mission_generic:target_location_updated_ground", DisplayType.Broadcast);
if (missionWp == null) {
WaypointObject waypoint = (WaypointObject) NGECore.getInstance().objectService.createObject("object/waypoint/shared_waypoint.iff", target.getPlanet(),
target.getWorldPosition().x, target.getWorldPosition().z, target.getWorldPosition().y);
waypoint.setActive(true);
waypoint.setColor(WaypointObject.ORANGE);
waypoint.setName(getMissionObject().getMissionTargetName());
waypoint.setPlanetCRC(CRC.StringtoCRC(target.getPlanet().getName()));
waypoint.setStringAttribute("", "");
getMissionObject().setAttachedWaypoint(waypoint);
actor.sendSystemMessage("@mission/mission_generic:target_location_updated_ground", DisplayType.Broadcast);
} else {
missionWp.setPosition(target.getWorldPosition());
mission.setAttachedWaypoint(missionWp);
actor.sendSystemMessage("@mission/mission_generic:target_location_updated_ground", DisplayType.Broadcast);
}
updates.getAndIncrement();
}
}
}, 60, 15, TimeUnit.SECONDS);
setLocationUpdater(updates);
seekerUpdates = updater;
}
}
public void beginArakydUpdate(final CreatureObject actor) {
arakydActive = true;
Executors.newScheduledThreadPool(1).schedule(() -> {
int number = new Random().nextInt(100);
// Effectively a 16% chance of failing. The failure type is calculated by subtracting 10 from the number received.
if (number <= 16 && number != 0) { actor.sendSystemMessage("@mission/mission_generic:target_not_found_" + String.valueOf(10 - number), (byte) 0); return; }
SWGObject target = NGECore.getInstance().objectService.getObject(markObjId);
if (target == null) { actor.sendSystemMessage("@mission/mission_generic:player_target_inactive", DisplayType.Broadcast); }
WaypointObject waypoint = (WaypointObject) NGECore.getInstance().objectService.createObject("object/waypoint/shared_waypoint.iff", target.getPlanet(),
target.getWorldPosition().x, target.getWorldPosition().z, target.getWorldPosition().y);
waypoint.setActive(true);
waypoint.setColor(WaypointObject.ORANGE);
waypoint.setName(getMissionObject().getMissionTargetName());
waypoint.setPlanetCRC(CRC.StringtoCRC(target.getPlanet().getName()));
waypoint.setStringAttribute("", "");
getMissionObject().setAttachedWaypoint(waypoint);
actor.sendSystemMessage("@mission/mission_generic:target_location_updated_ground", DisplayType.Broadcast);
actor.sendSystemMessage("@mission/mission_generic:target_located_" + target.getPlanet().getName(), DisplayType.Broadcast);
}, 180, TimeUnit.SECONDS);
}
public void cancelLocationUpdates() {
getLocationUpdater().cancel(true);
if (seekerUpdates != null)
seekerUpdates.cancel(true);
if (probeSummonTask != null)
probeSummonTask.cancel(true);
setSeekerActive(false);
setSeekerPlanet("");
setArakydActive(false);
@@ -244,10 +371,6 @@ public class BountyMissionObjective extends MissionObjective {
public void setLastKnownPlanet(String lastKnownPlanet) { this.lastKnownPlanet = lastKnownPlanet; }
public ScheduledFuture<?> getLocationUpdater() { return locationUpdater; }
public void setLocationUpdater(ScheduledFuture<?> locationUpdater) { this.locationUpdater = locationUpdater; }
public boolean isSeekerActive() { return seekerActive; }
public void setSeekerActive(boolean seekerActive) { this.seekerActive = seekerActive; }
@@ -33,6 +33,8 @@ import services.mission.MissionObjective;
public class DeliveryMissionObjective extends MissionObjective {
private static final long serialVersionUID = 1L;
private TangibleObject deliveryObject;
private CreatureObject missionGiver;
private CreatureObject dropOffNpc;
@@ -28,6 +28,8 @@ import services.mission.MissionObjective;
public class DestroyMissionObjective extends MissionObjective {
private static final long serialVersionUID = 1L;
public DestroyMissionObjective(MissionObject parent) {
super(parent);
}
@@ -185,7 +185,7 @@ public class CreatureObject extends TangibleObject implements Serializable {
@NotPersistent
private transient ConcurrentHashMap<String, Long> cooldowns = new ConcurrentHashMap<String, Long>();
@NotPersistent
private transient long tefTime = System.currentTimeMillis();
private transient long tefTime = 0;
@NotPersistent
private transient SWGObject useTarget;
@@ -213,7 +213,6 @@ public class CreatureObject extends TangibleObject implements Serializable {
duelList = Collections.synchronizedList(new ArrayList<CreatureObject>());
cooldowns = new ConcurrentHashMap<String, Long>();
performanceAudience = new Vector<CreatureObject>();
tefTime = System.currentTimeMillis();
messageBuilder = new CreatureMessageBuilder(this);
}
+10 -2
View File
@@ -150,6 +150,8 @@ public class PlayerObject extends IntangibleObject implements Serializable {
@NotPersistent
private transient boolean callingCompanion = false;
private long bountyMissionId;
public PlayerObject() {
super();
messageBuilder = new PlayerMessageBuilder(this);
@@ -894,10 +896,8 @@ public class PlayerObject extends IntangibleObject implements Serializable {
public boolean isMemberOfChannel(int roomId) {
if (chatChannels.contains(roomId)) {
System.out.println("Member of the channel!");
return true;
}
System.out.println("Not a Member of the channel!");
return false;
}
@@ -909,6 +909,14 @@ public class PlayerObject extends IntangibleObject implements Serializable {
this.callingCompanion = callingCompanion;
}
public long getBountyMissionId() {
return bountyMissionId;
}
public void setBountyMissionId(long bountyMissionId) {
this.bountyMissionId = bountyMissionId;
}
public ObjectMessageBuilder getMessageBuilder() {
return messageBuilder;
}
@@ -128,6 +128,7 @@ public class TangibleObject extends SWGObject implements Serializable {
@Override
public void initAfterDBLoad() {
super.init();
defendersList = new Vector<TangibleObject>();
messageBuilder = new TangibleMessageBuilder(this);
}
+4 -2
View File
@@ -279,8 +279,10 @@ public class ConnectionService implements INetworkDispatch {
object.setAttachment("disconnectTask", null);
List<ScheduledFuture<?>> schedulers = core.playerService.getSchedulers().get(object.getObjectID());
schedulers.forEach(s -> s.cancel(true));
schedulers.clear();
if(schedulers != null) {
schedulers.forEach(s -> s.cancel(true));
schedulers.clear();
}
core.playerService.getSchedulers().remove(object.getObjectID());
core.getSWGObjectODB().put(object.getObjectID(), object);
+22 -2
View File
@@ -86,12 +86,13 @@ public class DevService implements INetworkDispatch {
suiOptions.put((long) 23, "Jedi Items");
suiOptions.put((long) 26, "Installations");
suiOptions.put((long) 110, "Survey Devices");
if(creature.getPlayerObject().getProfession().equals("bounty_hunter_1a")) suiOptions.put((long) 123, "Tracking Droids");
if(creature.getClient().isGM()) suiOptions.put((long) 120, "House Deeds");
if(creature.getClient().isGM()) suiOptions.put((long) 125, "Crafting Tools");
if(creature.getClient().isGM()) suiOptions.put((long) 130, "Vehicle Deeds");
if(creature.getClient().isGM()) suiOptions.put((long) 121, "Sandbox City");
if(creature.getClient().isGM()) suiOptions.put((long) 122, "Jedi Ruins");
break;
case 3: // [Items] Weapons
suiOptions.put((long) 30, "Jedi Weapons");
@@ -103,6 +104,7 @@ public class DevService implements INetworkDispatch {
suiOptions.put((long) 40, "Unity Ring");
suiOptions.put((long) 41, "Tusken Rucksack");
suiOptions.put((long) 42, "Heroism Jewlery Set");
suiOptions.put((long) 43, "Breath of Heaven");
break;
case 5: // [Items] Armor
suiOptions.put((long) 50, "Assault Armor");
@@ -342,6 +344,12 @@ public class DevService implements INetworkDispatch {
inventory.add(heroismBraceletRight);
inventory.add(heroismBraceletLeft);
return;
case 43:
TangibleObject drink = (TangibleObject) core.objectService.createObject("object/tangible/food/crafted/shared_drink_breath_of_heaven.iff", planet);
drink.setFloatAttribute("cat_stat_mod_bonus.@stat_n:constitution_modified", 100);
drink.setFloatAttribute("cat_stat_mod_bonus.@stat_n:dodge", 3);
inventory.add(drink);
return;
case 50: // [Items] Assault Armor
sendCharacterBuilderSUI(player, 6);
return;
@@ -1168,11 +1176,23 @@ public class DevService implements INetworkDispatch {
case 121:
NGECore.getInstance().playerCityService.buildSandboxTestCity(player);
return;
case 122:
Point3D position = new Point3D(4086,15,5554);
core.simulationService.transferToPlanet(player, core.terrainService.getPlanetByName("dantooine"), position, player.getOrientation(), null);
return;
case 123:
TangibleObject arakydDroids = (TangibleObject) core.objectService.createObject("object/tangible/mission/shared_mission_bounty_droid_probot.iff", planet);
//arakydDroids.setStackable(true);
//arakydDroids.setStackCount(10);
inventory.add(arakydDroids);
TangibleObject seekerDroids = (TangibleObject) core.objectService.createObject("object/tangible/mission/shared_mission_bounty_droid_seeker.iff", planet);
inventory.add(seekerDroids);
return;
case 125:
TangibleObject genericCraftingTool = (TangibleObject) core.objectService.createObject("object/tangible/crafting/station/shared_generic_tool.iff", planet);
genericCraftingTool.setCustomName("Generic Crafting Tool");
+10
View File
@@ -1306,6 +1306,13 @@ public class PlayerService implements INetworkDispatch {
bounty = 1000000;
}
if (core.getBountiesODB().contains(attacker.getObjectID())) {
if (((BountyListItem) core.getBountiesODB().get(attacker.getObjectID())).getCreditReward() >= 20000000) {
victim.sendSystemMessage("@bounty_hunter:max_bounty", DisplayType.Broadcast);
return;
}
}
// Try removing bounty amount from the bank first then cash. Remove amount accordingly if bank/cash is less than placed bounty.
if (bounty > victim.getBankCredits()) {
int difference = bounty - victim.getBankCredits();
@@ -1321,12 +1328,15 @@ public class PlayerService implements INetworkDispatch {
if (!core.missionService.addToExistingBounty(attacker.getObjectId(), victim.getObjectId(), bounty))
core.missionService.createNewBounty(attacker, victim.getObjectId(), bounty);
victim.sendSystemMessage("You have placed a bounty for " + bounty + " credits on the head of " + attacker.getCustomName(), (byte) 0);
}
}
});
bountyWindow.setProperty("txtInput:NumericInteger", "true");
bountyWindow.setProperty("txtInput:MaxLength", "7");
bountyWindow.setProperty("inputBox:Size", "306,306");
core.suiService.openSUIWindow(bountyWindow);
}
+1 -1
View File
@@ -168,7 +168,7 @@ public class StaticService implements INetworkDispatch {
}
} else {
if (cell == null) {
System.err.println("StaticService: Cell not found");
System.err.println("StaticService: Cell not found for: " + template);
return object;
}
+1 -1
View File
@@ -174,7 +174,7 @@ public class SurveyService implements INetworkDispatch {
containerObject.initializeStats(sampleResource);
containerObject.setProprietor(crafter);
SWGObject crafterInventory = crafter.getSlottedObject("inventory");
container.setStackCount(stackCount,crafter);
containerObject.setStackCount(stackCount,crafter);
crafterInventory.add(containerObject);
player.setRecentContainer(containerObject);
}
+41 -7
View File
@@ -64,6 +64,8 @@ public class AIActor {
private ScheduledFuture<?> regenTask;
private ScheduledFuture<?> aggroCheckTask;
private boolean isStalking = false;
private byte milkState = 0;
private boolean hasBeenHarvested = false;
public AIActor(CreatureObject creature, Point3D spawnPosition, ScheduledExecutorService scheduler) {
this.creature = creature;
@@ -109,18 +111,25 @@ public class AIActor {
public void setSpawnPosition(Point3D spawnPosition) {
this.spawnPosition = spawnPosition;
}
public void addDefender(CreatureObject defender) {
addDefender(defender, false);
}
public void addDefender(CreatureObject defender, boolean isAssisting) {
creature.addDefender(defender);
if(followObject == null)
setFollowObject(defender);
setCurrentState(new AttackState());
NGECore.getInstance().simulationService.get(creature.getPlanet(), creature.getWorldPosition().x, creature.getWorldPosition().z, 30).stream().filter((obj) ->
obj instanceof CreatureObject &&
obj.getAttachment("AI") != null &&
((AIActor) obj.getAttachment("AI")).getMobileTemplate().getSocialGroup().equals(getMobileTemplate().getSocialGroup()) &&
obj.inRange(creature.getWorldPosition(), ((AIActor) obj.getAttachment("AI")).getMobileTemplate().getAssistRange())
).forEach((obj) -> ((AIActor) obj.getAttachment("AI")).addDefender(defender));
if(!isAssisting) {
NGECore.getInstance().simulationService.get(creature.getPlanet(), creature.getWorldPosition().x, creature.getWorldPosition().z, 30).stream().filter((obj) ->
obj instanceof CreatureObject &&
obj.getAttachment("AI") != null &&
((AIActor) obj.getAttachment("AI")).getMobileTemplate().getSocialGroup().equals(getMobileTemplate().getSocialGroup()) &&
obj.inRange(creature.getWorldPosition(), ((AIActor) obj.getAttachment("AI")).getMobileTemplate().getAssistRange())
).forEach((obj) -> ((AIActor) obj.getAttachment("AI")).addDefender(defender, true));
}
}
public void removeDefender(CreatureObject defender) {
@@ -284,6 +293,7 @@ public class AIActor {
public void scheduleDespawn() {
scheduler.schedule(() -> {
aggroCheckTask.cancel(true);
regenTask.cancel(true);
damageMap.clear();
followObject = null;
@@ -308,5 +318,29 @@ public class AIActor {
public void setStalking(boolean isStalking) {
this.isStalking = isStalking;
}
public byte getMilkState() {
synchronized(creature.getMutex()) {
return milkState;
}
}
public void setMilkState(byte milkState) {
synchronized(creature.getMutex()) {
this.milkState = milkState;
}
}
public boolean hasBeenHarvested() {
synchronized(creature.getMutex()) {
return hasBeenHarvested;
}
}
public void setHasBeenHarvested(boolean hasBeenHarvested) {
synchronized(creature.getMutex()) {
this.hasBeenHarvested = hasBeenHarvested;
}
}
}
+48 -9
View File
@@ -43,11 +43,15 @@ import protocol.swg.objectControllerObjects.StartTask;
import resources.buffs.Buff;
import resources.buffs.DamageOverTime;
import resources.common.FileUtilities;
import resources.common.OutOfBand;
import resources.common.ProsePackage;
import resources.datatables.Options;
import resources.datatables.Elemental;
import resources.datatables.Posture;
import resources.datatables.WeaponType;
import resources.objectives.BountyMissionObjective;
import resources.objects.creature.CreatureObject;
import resources.objects.mission.MissionObject;
import resources.objects.player.PlayerObject;
import resources.objects.tangible.TangibleObject;
import resources.objects.waypoint.WaypointObject;
@@ -800,8 +804,10 @@ public class CombatService implements INetworkDispatch {
}, target.getIncapTimer(), TimeUnit.SECONDS);
target.setIncapTask(incapTask);
core.buffService.addBuffToCreature(target, "incapWeaken", target);
if(target.getSlottedObject("ghost") != null)
attacker.sendSystemMessage("You incapacitate " + target.getCustomName() + ".", (byte) 0);
if(target.getSlottedObject("ghost") != null) {
target.sendSystemMessage(new OutOfBand(new ProsePackage("base_player", "prose_victim_incap", attacker.getCustomName())), (byte) 0);
attacker.sendSystemMessage(new OutOfBand(new ProsePackage("base_player", "prose_target_incap", target.getCustomName())), (byte) 0);
}
return;
} else if(target.getHealth() - damage <= 0 && target.getAttachment("AI") != null) {
synchronized(target.getMutex()) {
@@ -983,17 +989,50 @@ public class CombatService implements INetworkDispatch {
target.stopIncapTask();
target.setIncapTask(null);
target.setPosture((byte) 14);
attacker.sendSystemMessage("You have killed " + target.getCustomName() + ".", (byte) 0);
target.sendSystemMessage("@base_player:victim_dead", (byte) 0);
if (target.getSlottedObject("ghost") != null && attacker.getSlottedObject("ghost") != null) {
boolean bountyWindow = true;
if (target.getPlayerObject().getBountyMissionId() != 0) {
MissionObject mission = (MissionObject) core.objectService.getObject(target.getPlayerObject().getBountyMissionId());
if (mission != null && mission.getBountyObjId() == attacker.getObjectId()) {
bountyWindow = false;
target.sendSystemMessage(new OutOfBand(new ProsePackage("bounty_hunter", "bounty_failed_hunter", attacker.getCustomName())), (byte) 0);
ProsePackage pp = new ProsePackage("bounty_hunter", "bounty_failed_target", attacker.getCustomName());
pp.setToCustomString("their");
attacker.sendSystemMessage(new OutOfBand(pp), (byte) 0);
core.missionService.handleMissionAbort(target, mission);
}
} else if (attacker.getPlayerObject().getBountyMissionId() != 0) {
MissionObject mission = (MissionObject) core.objectService.getObject(attacker.getPlayerObject().getBountyMissionId());
if (mission != null && mission.getBountyObjId() == target.getObjectId()) {
bountyWindow = false;
ProsePackage targetProse = new ProsePackage("bounty_hunter", "bounty_success_target", attacker.getCustomName());
targetProse.setDiInteger(mission.getCreditReward());
target.sendSystemMessage(new OutOfBand(targetProse), (byte) 0);
ProsePackage attackerProse = new ProsePackage("bounty_hunter", "bounty_success_hunter", target.getCustomName());
attackerProse.setToCustomString("their"); // should be his or her: http://youtu.be/BqeDQQSETJI?t=2m19s
attackerProse.setDiInteger(mission.getCreditReward());
attacker.sendSystemMessage(new OutOfBand(attackerProse), (byte) 0);
core.missionService.handleMissionComplete(attacker, mission);
}
}
if(target.getDuelList().contains(attacker))
bountyWindow = false;
handleEndDuel(target, attacker, false);
if (bountyWindow) core.playerService.sendSetBountyWindow(target, attacker);
} else { attacker.sendSystemMessage("You have killed " + target.getCustomName() + ".", (byte) 0); }
attacker.removeDefender(target);
target.removeDefender(attacker);
target.setSpeedMultiplierBase(0);
target.setTurnRadius(0);
if(!target.getDuelList().contains(attacker) && attacker.getSlottedObject("ghost") != null)
core.playerService.sendSetBountyWindow(target, attacker);
else
handleEndDuel(target, attacker, false);
target.sendSystemMessage(new OutOfBand(new ProsePackage("base_player", "prose_victim_dead", attacker.getCustomName())), (byte) 0);
core.playerService.sendCloningWindow(target, attacker.getSlottedObject("ghost") != null);
}
+6 -6
View File
@@ -276,18 +276,18 @@ public class FactionService implements INetworkDispatch {
long targetId = target.getObjectID();
if (object.getSlottedObject("mission_bag") != null) {
object.getSlottedObject("mission_bag").viewChildren(object, false, false, (mission) -> {
if (((MissionObject) mission).getBountyObjId() == targetId) {
if (object.getSlottedObject("datapad") != null) {
object.getSlottedObject("datapad").viewChildren(object, false, false, (mission) -> {
if (mission instanceof MissionObject && ((MissionObject) mission).getBountyObjId() == targetId) {
ref.set(PvpStatus.Attackable | PvpStatus.Aggressive);
}
});
}
if (ghost != null && ghost.getProfession().contains("smuggler") &&
target.getSlottedObject("mission_bag") != null) {
target.getSlottedObject("mission_bag").viewChildren(target, false, false, (mission) -> {
if (((MissionObject) mission).getBountyObjId() == object.getObjectID()) {
target.getSlottedObject("datapad") != null) {
target.getSlottedObject("datapad").viewChildren(target, false, false, (mission) -> {
if (mission instanceof MissionObject && ((MissionObject) mission).getBountyObjId() == object.getObjectID()) {
ref.set(PvpStatus.Attackable);
}
});
+16 -11
View File
@@ -153,11 +153,8 @@ public class MissionService implements INetworkDispatch {
if (terminalType == TerminalType.GENERIC) {
handleMissionListRequest(core.objectService.getObject(request.getObjectId()), request.getTickCount(), TerminalType.GENERIC);
} else if (terminalType == TerminalType.BOUNTY) {
if (!object.hasSkill("class_bountyhunter_phase1_novice")) {
object.sendSystemMessage("@mission/mission_generic:not_bounty_hunter_terminal", (byte) 0);
} /*else {
handleMissionListRequest(core.objectService.getObject(request.getObjectId()), request.getTickCount(), TerminalType.BOUNTY);
}*/
if (!object.hasSkill("class_bountyhunter_phase1_novice")) { object.sendSystemMessage("@mission/mission_generic:not_bounty_hunter_terminal", (byte) 0); }
else { handleMissionListRequest(core.objectService.getObject(request.getObjectId()), request.getTickCount(), TerminalType.BOUNTY); }
} else if (terminalType == TerminalType.ENTERTAINER) {
} else if (terminalType == TerminalType.ARTISAN) {
@@ -323,6 +320,15 @@ public class MissionService implements INetworkDispatch {
});
}
public void handleMissionComplete(CreatureObject creature, MissionObject mission) {
MissionObjective objective = mission.getObjective();
if (objective == null)
return;
objective.complete(core, creature);
}
private boolean handleMissionAccept(CreatureObject creature, MissionObject mission) {
SWGObject missionBag = creature.getSlottedObject("mission_bag");
@@ -435,11 +441,14 @@ public class MissionService implements INetworkDispatch {
if (bountyList.size() > 0) {
boolean gotBounty = false;
while (!gotBounty) {
int attempts = 0;
while (!gotBounty && attempts < 5) {
bountyTarget = getRandomBounty();
if (bountyTarget == null || bountyTarget.getAssignedHunters().size() >= 3 || bountyTarget.getCreditReward() < 20000)
if (bountyTarget == null || bountyTarget.getAssignedHunters().size() >= 3 || bountyTarget.getCreditReward() < 20000 || bountyTarget.getObjectId() == player.getObjectId()) {
attempts++;
continue;
}
else
gotBounty = true;
}
@@ -561,13 +570,9 @@ public class MissionService implements INetworkDispatch {
}
public boolean removeBounty(long bountyTarget, boolean listRemove) {
Transaction txn = bountiesODB.getEnvironment().beginTransaction(null, null);
if (listRemove)
bountyList.remove(bountiesODB.get(bountyTarget));
bountiesODB.remove(bountyTarget);
txn.commitSync();
return true;
}
+2 -3
View File
@@ -914,9 +914,8 @@ public class ObjectService implements INetworkDispatch {
if(!core.getConfig().getString("MOTD").equals(""))
creature.sendSystemMessage(core.getConfig().getString("MOTD"), (byte) 2);
BountyListItem bounty = (BountyListItem) core.getBountiesODB().get(creature.getObjectID());
if (bounty != null)
core.missionService.getBountyList().add(bounty);
if (core.getBountiesODB().contains(creature.getObjectId()))
core.missionService.getBountyList().add((BountyListItem) core.getBountiesODB().get(creature.getObjectId()));
if (creature.getSlottedObject("datapad") != null) {
creature.getSlottedObject("datapad").viewChildren(creature, true, false, new Traverser() {

Some files were not shown because too many files have changed in this diff Show More