mirror of
https://github.com/ProjectSWGCore/NGECore2.git
synced 2026-10-04 19:12:50 -04:00
Added more content, tweaked AI resources and buffs
- Added invasion-specific buffs - Added factional handling - Added AI switches - Added construction/repairing - Fixed enemy TANO color when changing status - Fixed notification baselines to consider GCW-specific circumstances - Optimized AI algorithmic complexity by eliminating expensive arithmetic operations - Fixed reposition state to avoid locations in water - Considered tower defense buff for NPCs in combat service - Compacted 3 AI threads into one - Dynamic allocation of AI resources depending on patrol point index and same faction AI density - Added Withdrawal state for more realistic post-battle behaviour - Positioned all pylons, camps, officers, terminals, barricades, turrets, towers, cloners in the appropriate coordinates
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
import sys
|
||||
|
||||
def setup(core, actor, buff):
|
||||
|
||||
return
|
||||
|
||||
def add(core, actor, buff):
|
||||
actor.setGCWFatigue(actor.getGCWFatigue()+1)
|
||||
return
|
||||
|
||||
def remove(core, actor, buff):
|
||||
if actor.getGCWFatigue()>0:
|
||||
actor.setGCWFatigue(actor.getGCWFatigue()-1)
|
||||
# clear defbuff
|
||||
|
||||
return
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import sys
|
||||
|
||||
def setup(core, actor, buff):
|
||||
|
||||
return
|
||||
|
||||
def add(core, actor, buff):
|
||||
core.skillModService.addSkillMod(actor, 'expertise_damage_npc', 200)
|
||||
return
|
||||
|
||||
def remove(core, actor, buff):
|
||||
core.skillModService.deductSkillMod(actor, 'expertise_damage_npc', -200)
|
||||
return
|
||||
|
||||
@@ -48,6 +48,7 @@ def run(core, actor, target, commandString):
|
||||
|
||||
#This can be removed if player is required to see the recruiter first
|
||||
if faction == '':
|
||||
actor.setFactionStatus(FactionStatus.Combatant) # Must be! otherwise updatePVPstatus will be called with onLeave!
|
||||
actor.setFaction(commandString)
|
||||
faction = commandString
|
||||
|
||||
@@ -59,8 +60,8 @@ def run(core, actor, target, commandString):
|
||||
actor.sendSystemMessage('@faction_recruiter:on_leave_to_covert', 0)
|
||||
actor.setPvpStatus(PvpStatus.GoingCovert, True)
|
||||
time.sleep(1)
|
||||
actor.setFactionStatus(FactionStatus.Combatant)
|
||||
actor.setPvpStatus(PvpStatus.GoingCovert, False)
|
||||
actor.setFactionStatus(FactionStatus.Combatant)
|
||||
actor.sendSystemMessage('@faction_recruiter:covert_complete', 0)
|
||||
actor.updatePvpStatus()
|
||||
core.factionService.updatePVPFromNearbyNPCs(actor, actor.getClient())
|
||||
@@ -72,8 +73,8 @@ def run(core, actor, target, commandString):
|
||||
time.sleep(30)
|
||||
if core.gcwService.isInPvpZone(actor):
|
||||
return
|
||||
actor.setFactionStatus(FactionStatus.SpecialForces)
|
||||
actor.setPvpStatus(PvpStatus.GoingOvert, False)
|
||||
actor.setFactionStatus(FactionStatus.SpecialForces)
|
||||
actor.sendSystemMessage('@faction_recruiter:overt_complete', 0)
|
||||
actor.updatePvpStatus()
|
||||
return
|
||||
|
||||
@@ -8,6 +8,7 @@ from java.awt.datatransfer import Clipboard
|
||||
from java.awt import Toolkit
|
||||
from resources.datatables import GcwRank
|
||||
from services.gcw import GCWService
|
||||
import time
|
||||
|
||||
|
||||
def setup():
|
||||
@@ -185,13 +186,61 @@ def run(core, actor, target, commandString):
|
||||
latarget = core.objectService.getObject(latargetID)
|
||||
actor.sendSystemMessage('Checking AI handling for unit ' + latarget.getCustomName(), 0)
|
||||
core.aiService.setCheckAI(latarget)
|
||||
|
||||
elif command == 'checkaitarget':
|
||||
latargetID = long(actor.getIntendedTarget())
|
||||
latarget = core.objectService.getObject(latargetID)
|
||||
if latarget.getAttachment('AI'):
|
||||
if latarget.getAttachment('AI').getFollowObject():
|
||||
actor.sendSystemMessage('Checking AI target ' + latarget.getAttachment('AI').getFollowObject().getTemplate(), 0)
|
||||
|
||||
elif command == 'checkaistate':
|
||||
latargetID = long(actor.getIntendedTarget())
|
||||
latarget = core.objectService.getObject(latargetID)
|
||||
if latarget.getAttachment('AI'):
|
||||
if latarget.getAttachment('AI').getCurrentState():
|
||||
actor.sendSystemMessage('Checking AI state ' + latarget.getAttachment('AI').getCurrentState().getClass().getName(), 0)
|
||||
|
||||
elif command == 'checkairepos':
|
||||
latargetID = long(actor.getIntendedTarget())
|
||||
latarget = core.objectService.getObject(latargetID)
|
||||
if latarget.getAttachment('AI'):
|
||||
if latarget.getAttachment('AI').getRepositionStartTime()():
|
||||
actor.sendSystemMessage('Checking AI state ' + latarget.getAttachment('AI').getRepositionStartTime(), 0)
|
||||
|
||||
elif command == 'checkaiprog':
|
||||
latargetID = long(actor.getIntendedTarget())
|
||||
latarget = core.objectService.getObject(latargetID)
|
||||
if latarget.getAttachment('AI'):
|
||||
actor.sendSystemMessage('Checking AI progression %s' % latarget.getAttachment('AI').getProgressionMarker(), 0)
|
||||
|
||||
elif command == 'showbitmask':
|
||||
latargetID = long(actor.getIntendedTarget())
|
||||
latarget = core.objectService.getObject(latargetID)
|
||||
actor.sendSystemMessage('Optionsbitmask for unit ' + latarget.getCustomName() + ' is %s' % latarget.getOptionsBitmask(), 0)
|
||||
|
||||
elif command == 'suitest':
|
||||
window = core.suiService.createSUIWindow('Script.countdownTimerBar', actor, None, 5)
|
||||
#window.setProperty('bg.caption.lblTitle:Text', 'Titletext')
|
||||
#window.setProperty('text:Text', '10')
|
||||
#window.setProperty('bar.value:Page', '10')
|
||||
window.addDataItem('bar.value', '10')
|
||||
core.suiService.openSUIWindow(window)
|
||||
time.sleep(5)
|
||||
core.suiService.closeSUIWindow(window.getOwner(),window.getWindowId())
|
||||
|
||||
elif command == 'spawninst':
|
||||
|
||||
elif command == 'unknownAbilityPacket' and arg1:
|
||||
#String campTemplate = "object/building/poi/shared_gcw_rebel_clone_tent_small.iff"; // LOL why doesn't this spawn?!?!?!
|
||||
inst = core.objectService.createObject(arg1, 0, actor.getPlanet(), actor.getWorldPosition(), actor.getOrientation())
|
||||
if inst:
|
||||
#TangibleObject inst = (TangibleObject) core.objectService.createObject(campTemplate, 0, core.terrainService.getPlanetByName("talus"), new Point3D(-890,9, -2994), quaternion)
|
||||
core.simulationService.add(inst, inst.getPosition().x, inst.getPosition().z, True)
|
||||
positionY = core.terrainService.getHeight(inst.getPlanetId(), inst.getPosition().x, inst.getPosition().z)
|
||||
instpos = Point3D(inst.getPosition().x,positionY+2, inst.getPosition().z)
|
||||
inst.setPosition(instpos)
|
||||
|
||||
elif command == 'unknownAbilityPacket' and arg1:
|
||||
packet = UnknownAbilityPacket(arg1)
|
||||
actor.getClient().getSession().write(packet.serialize())
|
||||
actor.sendSystemMessage('Sent UnknownAbilityPacket for ability ' + arg1, 0)
|
||||
|
||||
@@ -24,6 +24,7 @@ def addTemplate(core):
|
||||
mobileTemplate.setFaction("imperial")
|
||||
mobileTemplate.setFactionStatus(FactionStatus.Combatant)
|
||||
mobileTemplate.setOptionsBitmask(Options.CONVERSABLE | Options.INVULNERABLE)
|
||||
mobileTemplate.setNoAI(True)
|
||||
|
||||
templates = Vector()
|
||||
templates.add('object/mobile/shared_dressed_imperial_colonel_m.iff')
|
||||
|
||||
@@ -31,12 +31,13 @@ def addTemplate(core):
|
||||
mobileTemplate.setTemplates(templates)
|
||||
|
||||
weaponTemplates = Vector() # object/weapon/ranged/turret/shared_turret_heat.iff object/weapon/ranged/vehicle/shared_vehicle_atst_ranged.iff
|
||||
weapontemplate = WeaponTemplate('object/weapon/ranged/vehicle/shared_vehicle_atst_ranged.iff', WeaponType.RIFLE, 2.0, 55, 'energy')
|
||||
weapontemplate = WeaponTemplate('object/weapon/ranged/vehicle/shared_vehicle_atst_ranged.iff', WeaponType.CARBINE, 2.0, 55, 'energy')
|
||||
#weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_t21.iff', WeaponType.RIFLE, 1.0, 24, 'energy')
|
||||
weaponTemplates.add(weapontemplate)
|
||||
mobileTemplate.setWeaponTemplateVector(weaponTemplates)
|
||||
|
||||
attacks = Vector()
|
||||
mobileTemplate.setDefaultAttack('rangedShot')
|
||||
mobileTemplate.setDefaultAttack('gcw_atst_attack_tower') #gcw_atst_attack_tower #rangedShot
|
||||
mobileTemplate.setAttacks(attacks)
|
||||
|
||||
core.spawnService.addMobileTemplate('imp_invasion_at_st', mobileTemplate)
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
import sys
|
||||
from services.spawn import MobileTemplate
|
||||
from services.spawn import WeaponTemplate
|
||||
from resources.datatables import WeaponType
|
||||
from resources.datatables import Difficulty
|
||||
from resources.datatables import Options
|
||||
from resources.datatables import FactionStatus
|
||||
from java.util import Vector
|
||||
|
||||
|
||||
def addTemplate(core):
|
||||
mobileTemplate = MobileTemplate()
|
||||
|
||||
mobileTemplate.setCreatureName('gcw_city_imperial_captain')
|
||||
mobileTemplate.setLevel(90)
|
||||
mobileTemplate.setDifficulty(Difficulty.NORMAL)
|
||||
|
||||
mobileTemplate.setMinSpawnDistance(4)
|
||||
mobileTemplate.setMaxSpawnDistance(8)
|
||||
mobileTemplate.setDeathblow(False)
|
||||
mobileTemplate.setScale(1)
|
||||
mobileTemplate.setSocialGroup("imperial")
|
||||
mobileTemplate.setAssistRange(0)
|
||||
mobileTemplate.setStalker(False)
|
||||
mobileTemplate.setFaction("imperial")
|
||||
mobileTemplate.setFactionStatus(FactionStatus.Combatant)
|
||||
mobileTemplate.setOptionsBitmask(Options.CONVERSABLE | Options.INVULNERABLE)
|
||||
mobileTemplate.setNoAI(True)
|
||||
|
||||
templates = Vector()
|
||||
templates.add('object/mobile/shared_dressed_imperial_captain_m.iff')
|
||||
mobileTemplate.setTemplates(templates)
|
||||
|
||||
weaponTemplates = Vector()
|
||||
weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e11.iff', WeaponType.CARBINE, 1.0, 15, 'energy')
|
||||
weaponTemplates.add(weapontemplate)
|
||||
mobileTemplate.setWeaponTemplateVector(weaponTemplates)
|
||||
|
||||
attacks = Vector()
|
||||
mobileTemplate.setDefaultAttack('rangedShot')
|
||||
mobileTemplate.setAttacks(attacks)
|
||||
|
||||
core.spawnService.addMobileTemplate('imp_invasion_captain', mobileTemplate)
|
||||
return
|
||||
@@ -25,6 +25,8 @@ def addTemplate(core):
|
||||
mobileTemplate.setStalker(False)
|
||||
mobileTemplate.setFaction("imperial")
|
||||
mobileTemplate.setFactionStatus(FactionStatus.Combatant)
|
||||
mobileTemplate.setOptionsBitmask(Options.INVULNERABLE)
|
||||
mobileTemplate.setAIEnabled(False)
|
||||
|
||||
templates = Vector()
|
||||
templates.add('object/mobile/shared_dressed_imperial_general_m.iff')
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
import sys
|
||||
from services.spawn import MobileTemplate
|
||||
from services.spawn import WeaponTemplate
|
||||
from resources.datatables import WeaponType
|
||||
from resources.datatables import Difficulty
|
||||
from resources.datatables import Options
|
||||
from resources.datatables import FactionStatus
|
||||
from java.util import Vector
|
||||
|
||||
|
||||
def addTemplate(core):
|
||||
mobileTemplate = MobileTemplate()
|
||||
|
||||
mobileTemplate.setCreatureName('gcw_city_offensive_imperial_general')
|
||||
mobileTemplate.setLevel(110)
|
||||
mobileTemplate.setHealth(1000000)
|
||||
mobileTemplate.setDifficulty(Difficulty.BOSS)
|
||||
|
||||
mobileTemplate.setMinSpawnDistance(4)
|
||||
mobileTemplate.setMaxSpawnDistance(8)
|
||||
mobileTemplate.setDeathblow(True)
|
||||
mobileTemplate.setScale(1)
|
||||
mobileTemplate.setSocialGroup("imperial")
|
||||
mobileTemplate.setAssistRange(0)
|
||||
mobileTemplate.setStalker(False)
|
||||
mobileTemplate.setFaction("imperial")
|
||||
mobileTemplate.setFactionStatus(FactionStatus.Combatant)
|
||||
mobileTemplate.setOptionsBitmask(Options.CONVERSABLE | Options.INVULNERABLE)
|
||||
mobileTemplate.setAIEnabled(False)
|
||||
|
||||
templates = Vector()
|
||||
templates.add('object/mobile/shared_dressed_imperial_general_m.iff')
|
||||
mobileTemplate.setTemplates(templates)
|
||||
|
||||
weaponTemplates = Vector()
|
||||
weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e11.iff', WeaponType.CARBINE, 1.0, 15, 'energy')
|
||||
weaponTemplates.add(weapontemplate)
|
||||
mobileTemplate.setWeaponTemplateVector(weaponTemplates)
|
||||
|
||||
attacks = Vector()
|
||||
mobileTemplate.setDefaultAttack('rangedShot')
|
||||
mobileTemplate.setAttacks(attacks)
|
||||
|
||||
core.spawnService.addMobileTemplate('imp_offensive_invasion_general', mobileTemplate)
|
||||
return
|
||||
@@ -22,7 +22,7 @@ def addTemplate(core):
|
||||
mobileTemplate.setFaction("rebel")
|
||||
mobileTemplate.setFactionStatus(FactionStatus.Combatant)
|
||||
mobileTemplate.setOptionsBitmask(Options.CONVERSABLE | Options.INVULNERABLE)
|
||||
mobileTemplate.setAIEnabled(False)
|
||||
mobileTemplate.setNoAI(True)
|
||||
|
||||
templates = Vector()
|
||||
templates.add('object/mobile/shared_dressed_rebel_lieutenant_colonel_human_male_01.iff')
|
||||
|
||||
@@ -24,9 +24,10 @@ def addTemplate(core):
|
||||
mobileTemplate.setStalker(False)
|
||||
mobileTemplate.setFaction("rebel")
|
||||
mobileTemplate.setFactionStatus(FactionStatus.Combatant)
|
||||
mobileTemplate.setOptionsBitmask(Options.ATTACKABLE)
|
||||
|
||||
templates = Vector()
|
||||
templates.add('object/mobile/vehicle/shared_walker_at_xt.iff')
|
||||
templates.add('object/mobile/shared_atxt.iff')
|
||||
mobileTemplate.setTemplates(templates)
|
||||
|
||||
weaponTemplates = Vector()
|
||||
@@ -35,7 +36,7 @@ def addTemplate(core):
|
||||
mobileTemplate.setWeaponTemplateVector(weaponTemplates)
|
||||
|
||||
attacks = Vector()
|
||||
mobileTemplate.setDefaultAttack('rangedShot')
|
||||
mobileTemplate.setDefaultAttack('gcw_atst_attack_tower')
|
||||
mobileTemplate.setAttacks(attacks)
|
||||
|
||||
core.spawnService.addMobileTemplate('rebel_invasion_at_xt', mobileTemplate)
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
import sys
|
||||
from services.spawn import MobileTemplate
|
||||
from services.spawn import WeaponTemplate
|
||||
from resources.datatables import WeaponType
|
||||
from resources.datatables import Difficulty
|
||||
from resources.datatables import Options
|
||||
from resources.datatables import FactionStatus
|
||||
from java.util import Vector
|
||||
|
||||
def addTemplate(core):
|
||||
mobileTemplate = MobileTemplate()
|
||||
|
||||
mobileTemplate.setCreatureName('gcw_city_rebel_captain')
|
||||
mobileTemplate.setLevel(90)
|
||||
mobileTemplate.setDifficulty(Difficulty.ELITE)
|
||||
|
||||
mobileTemplate.setMinSpawnDistance(4)
|
||||
mobileTemplate.setMaxSpawnDistance(8)
|
||||
mobileTemplate.setSocialGroup("rebel")
|
||||
mobileTemplate.setAssistRange(0)
|
||||
mobileTemplate.setStalker(False)
|
||||
mobileTemplate.setFaction("rebel")
|
||||
mobileTemplate.setFactionStatus(FactionStatus.Combatant)
|
||||
mobileTemplate.setOptionsBitmask(Options.CONVERSABLE | Options.INVULNERABLE)
|
||||
mobileTemplate.setNoAI(True)
|
||||
|
||||
templates = Vector()
|
||||
templates.add('object/mobile/shared_dressed_rebel_army_captain_bothan_male.iff')
|
||||
templates.add('object/mobile/shared_dressed_rebel_army_captain_human_male_01.iff')
|
||||
templates.add('object/mobile/shared_dressed_rebel_army_captain_moncal_male_01.iff')
|
||||
templates.add('object/mobile/shared_dressed_rebel_army_captain_trandoshan_female.iff')
|
||||
templates.add('object/mobile/shared_dressed_rebel_army_captain_twk_male.iff')
|
||||
templates.add('object/mobile/shared_dressed_rebel_army_captain_zabrak_female.iff')
|
||||
mobileTemplate.setTemplates(templates)
|
||||
|
||||
weaponTemplates = Vector()
|
||||
weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', WeaponType.CARBINE, 1.0, 15, 'energy')
|
||||
weaponTemplates.add(weapontemplate)
|
||||
mobileTemplate.setWeaponTemplateVector(weaponTemplates)
|
||||
|
||||
attacks = Vector()
|
||||
mobileTemplate.setDefaultAttack('rangedShot')
|
||||
mobileTemplate.setAttacks(attacks)
|
||||
|
||||
core.spawnService.addMobileTemplate('rebel_invasion_captain', mobileTemplate)
|
||||
return
|
||||
@@ -23,6 +23,8 @@ def addTemplate(core):
|
||||
mobileTemplate.setStalker(False)
|
||||
mobileTemplate.setFaction("rebel")
|
||||
mobileTemplate.setFactionStatus(FactionStatus.Combatant)
|
||||
mobileTemplate.setOptionsBitmask(Options.INVULNERABLE)
|
||||
mobileTemplate.setAIEnabled(False)
|
||||
|
||||
templates = Vector()
|
||||
templates.add('object/mobile/shared_dressed_rebel_general_human_female_01.iff')
|
||||
|
||||
@@ -11,7 +11,7 @@ from java.util import Vector
|
||||
def addTemplate(core):
|
||||
mobileTemplate = MobileTemplate()
|
||||
|
||||
mobileTemplate.setCreatureName('eow_gcw_city_at_st_2')
|
||||
mobileTemplate.setCreatureName('rebel_battle_droid')
|
||||
mobileTemplate.setLevel(90)
|
||||
mobileTemplate.setDifficulty(Difficulty.BOSS)
|
||||
|
||||
@@ -30,12 +30,12 @@ def addTemplate(core):
|
||||
mobileTemplate.setTemplates(templates)
|
||||
|
||||
weaponTemplates = Vector()
|
||||
weapontemplate = WeaponTemplate('object/weapon/ranged/vehicle/shared_vehicle_atst_ranged.iff', WeaponType.CARBINE, 1.0, 15, 'energy')
|
||||
weapontemplate = WeaponTemplate('object/weapon/ranged/droid/shared_droid_rocket_launcher.iff', WeaponType.RIFLE, 1.0, 55, 'energy')
|
||||
weaponTemplates.add(weapontemplate)
|
||||
mobileTemplate.setWeaponTemplateVector(weaponTemplates)
|
||||
|
||||
attacks = Vector()
|
||||
mobileTemplate.setDefaultAttack('rangedShot')
|
||||
mobileTemplate.setDefaultAttack('gcw_rocket_launch') #fireRocketLauncher #gcw_atst_attack_tower
|
||||
mobileTemplate.setAttacks(attacks)
|
||||
|
||||
core.spawnService.addMobileTemplate('rebel_invasion_hailfire_droid', mobileTemplate)
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
import sys
|
||||
from services.spawn import MobileTemplate
|
||||
from services.spawn import WeaponTemplate
|
||||
from resources.datatables import WeaponType
|
||||
from resources.datatables import Difficulty
|
||||
from resources.datatables import Options
|
||||
from resources.datatables import FactionStatus
|
||||
from java.util import Vector
|
||||
|
||||
def addTemplate(core):
|
||||
mobileTemplate = MobileTemplate()
|
||||
|
||||
mobileTemplate.setCreatureName('gcw_city_offensive_rebel_general')
|
||||
mobileTemplate.setLevel(110)
|
||||
mobileTemplate.setHealth(1000000)
|
||||
mobileTemplate.setDifficulty(Difficulty.BOSS)
|
||||
|
||||
mobileTemplate.setMinSpawnDistance(4)
|
||||
mobileTemplate.setMaxSpawnDistance(8)
|
||||
mobileTemplate.setDeathblow(True)
|
||||
mobileTemplate.setSocialGroup("rebel")
|
||||
mobileTemplate.setAssistRange(0)
|
||||
mobileTemplate.setStalker(False)
|
||||
mobileTemplate.setFaction("rebel")
|
||||
mobileTemplate.setFactionStatus(FactionStatus.Combatant)
|
||||
mobileTemplate.setOptionsBitmask(Options.CONVERSABLE | Options.INVULNERABLE)
|
||||
mobileTemplate.setAIEnabled(False)
|
||||
|
||||
templates = Vector()
|
||||
templates.add('object/mobile/shared_dressed_rebel_general_human_female_01.iff')
|
||||
templates.add('object/mobile/shared_dressed_rebel_general_human_female_02.iff')
|
||||
templates.add('object/mobile/shared_dressed_rebel_general_moncal_male_01.iff')
|
||||
templates.add('object/mobile/shared_dressed_rebel_general_old_twilek_male_01.iff')
|
||||
templates.add('object/mobile/shared_dressed_rebel_general_rieekan_01.iff')
|
||||
templates.add('object/mobile/shared_dressed_rebel_general_rodian_female_01.iff')
|
||||
mobileTemplate.setTemplates(templates)
|
||||
|
||||
weaponTemplates = Vector()
|
||||
weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_e5.iff', WeaponType.CARBINE, 1.0, 15, 'energy')
|
||||
weaponTemplates.add(weapontemplate)
|
||||
mobileTemplate.setWeaponTemplateVector(weaponTemplates)
|
||||
|
||||
attacks = Vector()
|
||||
mobileTemplate.setDefaultAttack('rangedShot')
|
||||
mobileTemplate.setAttacks(attacks)
|
||||
|
||||
core.spawnService.addMobileTemplate('rebel_offensive_invasion_general', mobileTemplate)
|
||||
return
|
||||
@@ -1,4 +1,7 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('radial_filename', 'object/usable')
|
||||
return
|
||||
|
||||
def use(core, owner, target):
|
||||
core.invasionService.useTurret(owner, target);
|
||||
return
|
||||
@@ -1,4 +1,7 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('radial_filename', 'object/usable')
|
||||
return
|
||||
|
||||
def use(core, owner, target):
|
||||
core.invasionService.useTurret(owner, target);
|
||||
return
|
||||
@@ -1,4 +1,7 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('radial_filename', 'object/usable')
|
||||
return
|
||||
|
||||
def use(core, owner, target):
|
||||
core.invasionService.useTurret(owner, target);
|
||||
return
|
||||
@@ -1,4 +1,7 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('radial_filename', 'object/usable')
|
||||
return
|
||||
|
||||
def use(core, owner, target):
|
||||
core.invasionService.usePylon(owner, target);
|
||||
return
|
||||
@@ -1,4 +1,7 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('radial_filename', 'object/usable')
|
||||
return
|
||||
|
||||
def use(core, owner, target):
|
||||
core.invasionService.useBarricade(owner, target);
|
||||
return
|
||||
@@ -1,4 +1,7 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('radial_filename', 'object/usable')
|
||||
return
|
||||
|
||||
def use(core, owner, target):
|
||||
core.invasionService.useTower(owner, target);
|
||||
return
|
||||
@@ -1,4 +1,7 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('radial_filename', 'object/usable')
|
||||
return
|
||||
|
||||
def use(core, owner, target):
|
||||
core.invasionService.useBarricade(owner, target);
|
||||
return
|
||||
@@ -1,4 +1,7 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('radial_filename', 'object/usable')
|
||||
return
|
||||
|
||||
def use(core, owner, target):
|
||||
core.invasionService.useTower(owner, target);
|
||||
return
|
||||
@@ -1,4 +1,7 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('radial_filename', 'object/usable')
|
||||
return
|
||||
|
||||
def use(core, owner, target):
|
||||
core.invasionService.supplyTerminalSUI(owner, 0);
|
||||
return
|
||||
@@ -1,4 +1,7 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('radial_filename', 'object/usable')
|
||||
return
|
||||
|
||||
def use(core, owner, target):
|
||||
core.invasionService.supplyOffensiveTerminalSUI(owner, 0);
|
||||
return
|
||||
@@ -1,4 +1,7 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('radial_filename', 'object/usable')
|
||||
return
|
||||
|
||||
def use(core, owner, target):
|
||||
core.invasionService.supplyTerminalSUI(owner, 0);
|
||||
return
|
||||
@@ -1,4 +1,7 @@
|
||||
import sys
|
||||
|
||||
def setup(core, object):
|
||||
object.setAttachment('radial_filename', 'object/usable')
|
||||
return
|
||||
|
||||
def use(core, owner, target):
|
||||
core.invasionService.supplyOffensiveTerminalSUI(owner, 0);
|
||||
return
|
||||
Reference in New Issue
Block a user