This commit is contained in:
Light2
2014-04-02 18:12:20 +02:00
37 changed files with 1459 additions and 387 deletions
+16
View File
@@ -0,0 +1,16 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_action_line_me_dm', 5)
core.skillModService.addSkillMod(actor, 'expertise_action_line_me_burst', 5)
core.skillModService.addSkillMod(actor, 'expertise_action_line_me_smash', 5)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_action_line_me_dm', 5)
core.skillModService.deductSkillMod(actor, 'expertise_action_line_me_burst', 5)
core.skillModService.deductSkillMod(actor, 'expertise_action_line_me_smash', 5)
return
+20
View File
@@ -0,0 +1,20 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_action_line_me_dm', 10)
core.skillModService.addSkillMod(actor, 'expertise_action_line_me_burst', 10)
core.skillModService.addSkillMod(actor, 'expertise_action_line_me_smash', 10)
core.skillModService.addSkillMod(actor, 'fast_attack_line_me_dm', 5)
core.skillModService.addSkillMod(actor, 'expertise_buff_duration_line_me_enhance', 900)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_action_line_me_dm', 10)
core.skillModService.deductSkillMod(actor, 'expertise_action_line_me_burst', 10)
core.skillModService.deductSkillMod(actor, 'expertise_action_line_me_smash', 10)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_me_dm', 5)
core.skillModService.deductSkillMod(actor, 'expertise_buff_duration_line_me_enhance', 900)
return
+20
View File
@@ -0,0 +1,20 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_action_line_me_dm', 15)
core.skillModService.addSkillMod(actor, 'expertise_action_line_me_burst', 20)
core.skillModService.addSkillMod(actor, 'expertise_action_line_me_smash', 20)
core.skillModService.addSkillMod(actor, 'fast_attack_line_me_dm', 15)
core.skillModService.addSkillMod(actor, 'expertise_buff_duration_line_me_enhance', 1800)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_action_line_me_dm', 15)
core.skillModService.deductSkillMod(actor, 'expertise_action_line_me_burst', 20)
core.skillModService.deductSkillMod(actor, 'expertise_action_line_me_smash', 20)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_me_dm', 15)
core.skillModService.deductSkillMod(actor, 'expertise_buff_duration_line_me_enhance', 1800)
return
@@ -0,0 +1,16 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_freeshot_me_heal', 5)
core.skillModService.addSkillMod(actor, 'fast_attack_line_me_revive', 5)
core.skillModService.addSkillMod(actor, 'expertise_cooldown_line_me_evasion', 10)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_freeshot_me_heal', 5)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_me_revive', 5)
core.skillModService.deductSkillMod(actor, 'expertise_cooldown_line_me_evasion', 10)
return
@@ -0,0 +1,18 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'fast_attack_line_me_heal', 5)
core.skillModService.addSkillMod(actor, 'expertise_freeshot_me_heal', 10)
core.skillModService.addSkillMod(actor, 'fast_attack_line_me_revive', 10)
core.skillModService.addSkillMod(actor, 'expertise_cooldown_line_me_evasion', 20)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'fast_attack_line_me_heal', 5)
core.skillModService.deductSkillMod(actor, 'expertise_freeshot_me_heal', 10)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_me_revive', 10)
core.skillModService.deductSkillMod(actor, 'expertise_cooldown_line_me_evasion', 20)
return
@@ -0,0 +1,20 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'fast_attack_line_me_heal', 10)
core.skillModService.addSkillMod(actor, 'expertise_freeshot_me_heal', 15)
core.skillModService.addSkillMod(actor, 'fast_attack_line_me_revive', 15)
core.skillModService.addSkillMod(actor, 'expertise_cooldown_line_me_evasion', 30)
core.skillModService.addSkillMod(actor, 'expertise_cooldown_line_me_stasis_self', 2)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'fast_attack_line_me_heal', 10)
core.skillModService.deductSkillMod(actor, 'expertise_freeshot_me_heal', 15)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_me_revive', 15)
core.skillModService.deductSkillMod(actor, 'expertise_cooldown_line_me_evasion', 30)
core.skillModService.deductSkillMod(actor, 'expertise_cooldown_line_me_stasis_self', 2)
return
@@ -0,0 +1,16 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_cooldown_line_me_dot', 10)
core.skillModService.addSkillMod(actor, 'expertise_buff_duration_line_me_debuff', 1)
core.skillModService.addSkillMod(actor, 'fast_attack_line_me_debuff', 5)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_cooldown_line_me_dot', 10)
core.skillModService.deductSkillMod(actor, 'expertise_buff_duration_line_me_debuff', 1)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_me_debuff', 5)
return
@@ -0,0 +1,18 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_cooldown_line_me_dot', 20)
core.skillModService.addSkillMod(actor, 'expertise_buff_duration_line_me_debuff', 3)
core.skillModService.addSkillMod(actor, 'fast_attack_line_me_debuff', 10)
core.skillModService.addSkillMod(actor, 'expertise_freeshot_me_debuff', 10)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_cooldown_line_me_dot', 20)
core.skillModService.deductSkillMod(actor, 'expertise_buff_duration_line_me_debuff', 3)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_me_debuff', 10)
core.skillModService.deductSkillMod(actor, 'expertise_freeshot_me_debuff', 10)
return
@@ -0,0 +1,20 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_cooldown_line_me_dot', 30)
core.skillModService.addSkillMod(actor, 'expertise_buff_duration_line_me_debuff', 5)
core.skillModService.addSkillMod(actor, 'fast_attack_line_me_debuff', 15)
core.skillModService.addSkillMod(actor, 'expertise_freeshot_me_debuff', 15)
core.skillModService.addSkillMod(actor, 'me_doom_chance', 20)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_cooldown_line_me_dot', 30)
core.skillModService.deductSkillMod(actor, 'expertise_buff_duration_line_me_debuff', 5)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_me_debuff', 15)
core.skillModService.deductSkillMod(actor, 'expertise_freeshot_me_debuff', 15)
core.skillModService.deductSkillMod(actor, 'me_doom_chance', 20)
return
+14
View File
@@ -0,0 +1,14 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_action_line_sp_dm', 10)
core.skillModService.addSkillMod(actor, 'fast_attack_line_sp_dm', 5)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_action_line_sp_dm', 10)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_sp_dm', 5)
return
+16
View File
@@ -0,0 +1,16 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_action_line_sp_dm', 15)
core.skillModService.addSkillMod(actor, 'fast_attack_line_sp_dm', 10)
core.skillModService.addSkillMod(actor, 'expertise_action_line_sp_dot', 15)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_action_line_sp_dm', 15)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_sp_dm', 10)
core.skillModService.deductSkillMod(actor, 'expertise_action_line_sp_dot', 15)
return
+20
View File
@@ -0,0 +1,20 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_action_line_sp_dm', 20)
core.skillModService.addSkillMod(actor, 'fast_attack_line_sp_dm', 15)
core.skillModService.addSkillMod(actor, 'expertise_freeshot_sp_dm', 20)
core.skillModService.addSkillMod(actor, 'expertise_cooldown_line_sp_dm', 20)
core.skillModService.addSkillMod(actor, 'expertise_action_line_sp_dot', 25)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_action_line_sp_dm', 20)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_sp_dm', 15)
core.skillModService.deductSkillMod(actor, 'expertise_freeshot_sp_dm', 20)
core.skillModService.deductSkillMod(actor, 'expertise_cooldown_line_sp_dm', 20)
core.skillModService.deductSkillMod(actor, 'expertise_action_line_sp_dot', 25)
return
@@ -0,0 +1,14 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_cooldown_line_sp_preparation', 20)
core.skillModService.addSkillMod(actor, 'fast_attack_line_sp_smoke', 5)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_cooldown_line_sp_preparation', 20)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_sp_smoke', 5)
return
@@ -0,0 +1,16 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_cooldown_line_sp_preparation', 40)
core.skillModService.addSkillMod(actor, 'expertise_buff_duration_line_sp_preparation', 5)
core.skillModService.addSkillMod(actor, 'fast_attack_line_sp_smoke', 15)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_cooldown_line_sp_preparation', 40)
core.skillModService.deductSkillMod(actor, 'expertise_buff_duration_line_sp_preparation', 5)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_sp_smoke', 15)
return
@@ -0,0 +1,18 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_cooldown_line_sp_preparation', 60)
core.skillModService.addSkillMod(actor, 'expertise_buff_duration_line_sp_preparation', 10)
core.skillModService.addSkillMod(actor, 'fast_attack_line_sp_smoke', 20)
core.skillModService.addSkillMod(actor, 'fast_attack_line_sp_perfect', 15)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_cooldown_line_sp_preparation', 60)
core.skillModService.deductSkillMod(actor, 'expertise_buff_duration_line_sp_preparation', 10)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_sp_smoke', 20)
core.skillModService.deductSkillMod(actor, 'fast_attack_line_sp_perfect', 15)
return
@@ -0,0 +1,14 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_strikethrough_chance', 1)
core.skillModService.addSkillMod(actor, 'expertise_action_all', 5)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_strikethrough_chance', 1)
core.skillModService.deductSkillMod(actor, 'expertise_action_all', 5)
return
@@ -0,0 +1,14 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_strikethrough_chance', 2)
core.skillModService.addSkillMod(actor, 'expertise_action_all', 10)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_strikethrough_chance', 2)
core.skillModService.deductSkillMod(actor, 'expertise_action_all', 10)
return
@@ -0,0 +1,20 @@
import sys
def setup(core, actor, buff):
return
def add(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_strikethrough_chance', 3)
core.skillModService.addSkillMod(actor, 'expertise_action_all', 15)
core.skillModService.addSkillMod(actor, 'expertise_avoidance_overpower', 5)
core.skillModService.addSkillMod(actor, 'movement_resist_snare', 100)
core.skillModService.addSkillMod(actor, 'movement_resist_root', 100)
return
def remove(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_strikethrough_chance', 3)
core.skillModService.deductSkillMod(actor, 'expertise_action_all', 15)
core.skillModService.deductSkillMod(actor, 'expertise_avoidance_overpower', 5)
core.skillModService.deductSkillMod(actor, 'movement_resist_snare', 100)
core.skillModService.deductSkillMod(actor, 'movement_resist_root', 100)
return
+2 -2
View File
@@ -46,7 +46,7 @@ def handleStartdance(core, owner, eventType, returnList):
if not item:
return
#if eventType == 0:
startDance(coreObject, actorObject, '', int(item.getObjectId()))
return
@@ -90,7 +90,7 @@ def startDance(core, actor, danceName, visual):
if not actor.getPerformanceWatchee():
#this also notifies the client with a delta4
actor.setPerformanceWatchee(actor)
actor.addAudience(actor)
actor.addSpectator(actor)
#this should send a CREO3
actor.setPosture(0x09);
-5
View File
@@ -11,10 +11,5 @@ def run(core, actor, target, commandString):
actor.sendSystemMessage('@performance:dance_not_performing', 0)
return
#since we need to stop performance for any posture change,
# all packets are triggered in setPosture.
# this may not be very consistent, but it prevents
# duplicate code.
actor.stopPerformance()
return
+1 -1
View File
@@ -10,7 +10,7 @@ def run(core, actor, target, commandString):
if performer is None:
return
performer.removeAudience(actor)
performer.removeSpectator(actor)
actor.setPerformanceWatchee(None)
if not actor.getPerformanceListenee():
actor.setMoodAnimation('')
@@ -0,0 +1,39 @@
import sys
from services.equipment import BonusSetTemplate
from java.util import Vector
def addBonusSet(core):
bonusSet = BonusSetTemplate("set_bonus_jedi_robe")
# Waistpack
bonusSet.addRequiredTemplate("object/tangible/wearables/backpack/shared_fannypack_s01.iff")
# Jedi Robes - Light
bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_light_s01.iff")
bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_light_s02.iff")
bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_light_s03.iff")
bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_light_s04.iff")
bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_light_s05.iff")
# Jedi Robes - Dark
bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_dark_s01.iff")
bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_dark_s02.iff")
bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_dark_s03.iff")
bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_dark_s04.iff")
bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_jedi_dark_s05.iff")
# Jedi Cloaks
bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_s32.iff")
bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_s32_h1.iff")
bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_s33.iff")
bonusSet.addRequiredTemplate("object/tangible/wearables/robe/shared_robe_s33_h1.iff")
core.equipmentService.addBonusSetTemplate(bonusSet)
def handleChange(core, creature, set):
wornItems = set.getWornTemplateCount(creature)
if wornItems == 2:
core.buffService.addBuffToCreature(creature, "set_bonus_jedi_robe_1", creature)
else:
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_jedi_robe_1")
@@ -1,4 +1,16 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('item_fannypack_04_01')
object.setDetailFilename('static_item_d')
object.setDetailName('item_fannypack_04_01')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 50)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:luck_modified', 50)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:precision_modified', 50)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:strength_modified', 50)
object.setStringAttribute('@set_bonus:piece_bonus_count_2', '@set_bonus:set_bonus_jedi_robe_1')
object.setAttachment('setBonus', 'set_bonus_jedi_robe')
return
@@ -2,15 +2,20 @@ import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('item_jedi_robe_light_04_04')
object.setStfName('item_jedi_robe_light_03_03')
object.setDetailFilename('static_item_d')
object.setDetailName('item_jedi_robe_light_04_04')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 185)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:strength_modified', 185)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:agility_modified', 185)
object.setDetailName('item_jedi_robe_light_03_03')
object.setStringAttribute('protection_level', 'Luminous')
object.setStringAttribute('class_required', 'Jedi')
object.setIntAttribute('required_combat_level', 80)
object.setAttachment('type', 'jedi_robe')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 185)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:strength_modified', 185)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:agility_modified', 185)
object.setStringAttribute('@set_bonus:piece_bonus_count_2', '@set_bonus:set_bonus_jedi_robe_1')
object.setAttachment('type', 'jedi_robe')
object.setAttachment('setBonus', 'set_bonus_jedi_robe')
return
@@ -5,15 +5,22 @@ def setup(core, object):
object.setStfName('item_jedi_robe_light_04_04')
object.setDetailFilename('static_item_d')
object.setDetailName('item_jedi_robe_light_04_04')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 250)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:strength_modified', 250)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:agility_modified', 250)
object.setStringAttribute('protection_level', 'Radiant')
object.setStringAttribute('class_required', 'Jedi')
object.setIntAttribute('required_combat_level', 90)
object.setAttachment('type', 'jedi_robe')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 250)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:strength_modified', 250)
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:agility_modified', 250)
object.setStringAttribute('proc_name', '@ui_buff:proc_old_light_jedi_gift')
object.setStringAttribute('@set_bonus:piece_bonus_count_2', '@set_bonus:set_bonus_jedi_robe_1')
object.setAttachment('type', 'jedi_robe')
object.setAttachment('setBonus', 'set_bonus_jedi_robe')
return
+2 -2
View File
@@ -7,7 +7,7 @@ def createRadial(core, owner, target, radials):
if owner.getPerformanceWatchee() == target:
if target.getPerformanceType() is True:
radials.add(RadialOptions(0, 141, 3, 'Stop Watching'))
elif owner.getPerformanceListenee() == target: # TODO: Get rid of PerformanceWatchee variable, no need for listenee (same thing really)
elif owner.getPerformanceListenee() == target:
radials.add(RadialOptions(0, 141, 3, 'Stop Listening'))
else:
if target.getPerformanceType() is True:
@@ -27,6 +27,6 @@ def handleSelection(core, owner, target, option):
return
if option == 141:
#core.commandService.callCommand(owner, 'stopwatching', target, '') #SWGList error for remove audience in CreatureObject
core.commandService.callCommand(owner, 'stopwatching', target, '')
return
return
+6 -4
View File
@@ -1,12 +1,14 @@
import sys
# Temporarily disabled until the skillmod calculation system is refactored
def add(core, actor, name, base):
actor.addSkillMod(name, base)
actor.setMaxAction(actor.getMaxAction() + int((float(actor.getMaxAction()) * (float(base) / float(100)))))
#actor.addSkillMod(name, base)
#actor.setMaxAction(actor.getMaxAction() + int((float(actor.getMaxAction()) * (float(base) / float(100)))))
return
def deduct(core, actor, name, base):
actor.deductSkillMod(name, base)
actor.setMaxAction(actor.getMaxAction() - int((float(actor.getMaxAction()) * (float(base) / float(100)))))
#actor.deductSkillMod(name, base)
#actor.setMaxAction(actor.getMaxAction() - int((float(actor.getMaxAction()) * (float(base) / float(100)))))
return
+6 -4
View File
@@ -1,12 +1,14 @@
import sys
# Temporarily disabled until the skillmod calculation system is refactored
def add(core, actor, name, base):
actor.addSkillMod(name, base)
actor.setMaxHealth(actor.getMaxHealth() + int((float(actor.getMaxHealth()) * (float(base) / float(100)))))
#actor.addSkillMod(name, base)
#actor.setMaxHealth(actor.getMaxHealth() + int((float(actor.getMaxHealth()) * (float(base) / float(100)))))
return
def deduct(core, actor, name, base):
actor.deductSkillMod(name, base)
actor.setMaxHealth(actor.getMaxHealth() - int((actor.getMaxHealth() * (float(base) / float(100)))))
#actor.deductSkillMod(name, base)
#actor.setMaxHealth(actor.getMaxHealth() - int((actor.getMaxHealth() * (float(base) / float(100)))))
return
+2
View File
@@ -420,6 +420,8 @@ public class NGECore {
spawnService.loadLairGroups();
spawnService.loadSpawnAreas();
equipmentService.loadBonusSets();
retroService.run();
didServerCrash = false;
@@ -25,6 +25,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import java.util.concurrent.ScheduledFuture;
import org.apache.mina.core.buffer.IoBuffer;
@@ -44,7 +45,6 @@ import com.sleepycat.persist.model.Entity;
import com.sleepycat.persist.model.NotPersistent;
import main.NGECore;
import engine.clients.Client;
import resources.objects.Buff;
import resources.objects.DamageOverTime;
@@ -127,7 +127,7 @@ public class CreatureObject extends TangibleObject implements IPersistent {
private CreatureObject performanceWatchee;
private CreatureObject performanceListenee;
@NotPersistent
private SWGList<CreatureObject> performanceAudience = new SWGList<CreatureObject>();
private Vector<CreatureObject> performanceAudience = new Vector<CreatureObject>();
private int health = 1000;
private int action = 300;
@NotPersistent
@@ -431,8 +431,6 @@ public class CreatureObject extends TangibleObject implements IPersistent {
else { next.sendSystemMessage("You stop listening to " + getCustomName() + ".",(byte)0); }
next.getSpectatorTask().cancel(true);
}
//not sure if this behaviour is correct. might need fixing later.
performanceAudience = new SWGList<CreatureObject>();
}
}
public ScheduledFuture<?> getEntertainerExperience() {
@@ -1507,23 +1505,20 @@ public class CreatureObject extends TangibleObject implements IPersistent {
}
}
public void addAudience(CreatureObject audienceMember) {
public void addSpectator(CreatureObject audienceMember) {
synchronized(objectMutex) {
if (performanceAudience == null) {
performanceAudience = new SWGList<CreatureObject>();
}
performanceAudience.add(audienceMember);
}
}
public void removeAudience(CreatureObject audienceMember) {
public void removeSpectator(CreatureObject audienceMember) {
synchronized(objectMutex) {
if (performanceAudience == null) { return; }
if (audienceMember.getInspirationTick() != null)
audienceMember.getInspirationTick().cancel(true);
if(performanceAudience.contains(audienceMember))
performanceAudience.remove(audienceMember); // SWGList error
performanceAudience.remove(audienceMember);
}
}
+3
View File
@@ -317,6 +317,9 @@ public class CharacterService implements INetworkDispatch {
Console.println("Added empty mission " + missionsAdded);
}*/
object.addAbility("startDance");
object.addAbility("startDance+Basic");
object.addObjectToEquipList(datapad);
object.addObjectToEquipList(inventory);
object.addObjectToEquipList(bank);
+7 -7
View File
@@ -200,17 +200,17 @@ public class ConnectionService implements INetworkDispatch {
if(object.getAttachment("inspireDuration") != null)
object.setAttachment("inspireDuration", null);
if(object.getInspirationTick() != null) {
object.getInspirationTick().cancel(true);
object.setInspirationTick(null);
if(object.getPerformanceListenee() != null) {
object.getPerformanceListenee().removeSpectator(object);
object.setPerformanceListenee(null);
}
if(object.getSpectatorTask() != null) {
object.getSpectatorTask().cancel(true);
object.setSpectatorTask(null);
if(object.getPerformanceWatchee() != null) {
object.getPerformanceWatchee().removeSpectator(object);
object.setPerformanceWatchee(null);
}
core.groupService.handleGroupDisband(object);
core.groupService.handleGroupDisband(object, false);
if (core.instanceService.isInInstance(object)) {
core.instanceService.remove(core.instanceService.getActiveInstance(object), object);
File diff suppressed because it is too large Load Diff
+5 -5
View File
@@ -518,7 +518,7 @@ public class EntertainmentService implements INetworkDispatch {
core.commandService.registerCommand("startdance");
core.commandService.registerCommand("stopdance");
core.commandService.registerCommand("watch");
//core.commandService.registerCommand("stopwatching"); // SWGList error
core.commandService.registerCommand("stopwatching");
core.commandService.registerCommand("holoEmote");
core.commandService.registerCommand("covercharge");
//core.commandService.registerCommand("en_holographic_recall");
@@ -681,13 +681,13 @@ public class EntertainmentService implements INetworkDispatch {
// visual
if (spectator.getPerformanceWatchee() == performer && spectateType)
spectator.getPerformanceWatchee().removeAudience(spectator);
spectator.getPerformanceWatchee().removeSpectator(spectator);
// music
else if (spectator.getPerformanceListenee() == performer && !spectateType)
spectator.getPerformanceListenee().removeAudience(spectator);
spectator.getPerformanceListenee().removeSpectator(spectator);
spectator.setPerformanceWatchee(performer);
performer.addAudience(spectator);
performer.addSpectator(spectator);
spectator.setMoodAnimation("entertained");
final ScheduledFuture<?> spectatorTask = scheduler.scheduleAtFixedRate(() -> {
@@ -705,7 +705,7 @@ public class EntertainmentService implements INetworkDispatch {
+ " is out of range.", (byte) 0);
}
spectator.setMoodAnimation("neutral");
performer.removeAudience(spectator);
performer.removeSpectator(spectator);
if (spectator.getInspirationTick().cancel(true))
spectator.getSpectatorTask().cancel(true);
+45 -1
View File
@@ -21,10 +21,20 @@
******************************************************************************/
package services;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import java.util.TreeMap;
import org.python.antlr.ast.Str;
import org.python.core.Py;
import org.python.core.PyObject;
@@ -35,10 +45,13 @@ import engine.resources.objects.SWGObject;
import engine.resources.service.INetworkDispatch;
import engine.resources.service.INetworkRemoteEvent;
import resources.objects.player.PlayerObject;
import services.equipment.BonusSetTemplate;
import services.spawn.MobileTemplate;
public class EquipmentService implements INetworkDispatch {
private NGECore core;
private Map<String, BonusSetTemplate> bonusSetTemplates = new ConcurrentHashMap<String, BonusSetTemplate>();
public EquipmentService(NGECore core) {
this.core = core;
@@ -221,9 +234,14 @@ public class EquipmentService implements INetworkDispatch {
if(!actor.getEquipmentList().contains(item))
actor.addObjectToEquipList(item);
if(item.getAttachment("setBonus") != null)
{
BonusSetTemplate bonus = bonusSetTemplates.get((String)item.getAttachment("setBonus"));
bonus.callScript(actor);
}
}
public void unequip(CreatureObject actor, SWGObject item) {
String template = ((item.getAttachment("customServerTemplate") == null) ? item.getTemplate() : (item.getTemplate().split("shared_")[0] + "shared_" + ((String) item.getAttachment("customServerTemplate")) + ".iff"));
String serverTemplate = template.replace(".iff", "");
@@ -272,9 +290,35 @@ public class EquipmentService implements INetworkDispatch {
if(item.getStringAttribute("proc_name") != null) core.buffService.removeBuffFromCreatureByName(actor, item.getStringAttribute("proc_name").replace("@ui_buff:", ""));
if(actor.getEquipmentList().contains(item))
actor.removeObjectFromEquipList(item);
if(item.getAttachment("setBonus") != null)
{
BonusSetTemplate bonus = bonusSetTemplates.get((String)item.getAttachment("setBonus"));
bonus.callScript(actor);
}
}
public void addBonusSetTemplate(BonusSetTemplate bonusSet)
{
bonusSetTemplates.put(bonusSet.getName(), bonusSet);
}
public void loadBonusSets() {
Path p = Paths.get("scripts/equipment/bonus_sets/");
FileVisitor<Path> fv = new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
core.scriptService.callScript("scripts/equipment/bonus_sets/", file.getFileName().toString().replace(".py", ""), "addBonusSet", core);
return FileVisitResult.CONTINUE;
}
};
try {
Files.walkFileTree(p, fv);
} catch (IOException e) {
e.printStackTrace();
}
}
}
+8 -8
View File
@@ -211,7 +211,7 @@ public class GroupService implements INetworkDispatch {
}
}
public void handleGroupDisband(CreatureObject creature) {
public void handleGroupDisband(CreatureObject creature, boolean destroy) {
if(creature.getGroupId() == 0)
return;
@@ -225,7 +225,7 @@ public class GroupService implements INetworkDispatch {
List<SWGObject> memberList = new ArrayList<SWGObject>(group.getMemberList());
if(group.getGroupLeader() != creature && group.getMemberList().size() > 2) {
if(group.getGroupLeader() != creature || !destroy || memberList.size() > 2) {
group.removeMember(creature);
creature.setInviteCounter(creature.getInviteCounter() + 1);
@@ -245,6 +245,9 @@ public class GroupService implements INetworkDispatch {
removeGroupBuffs(creature);
if (group.getMemberList().size() == 0) // ensure that there are no empty groups just incase..
core.objectService.destroyObject(group.getObjectID());
} else {
for(SWGObject member : memberList) {
@@ -264,14 +267,11 @@ public class GroupService implements INetworkDispatch {
removeGroupBuffs((CreatureObject) member);
}
core.objectService.destroyObject(group.getObjectID());
}
}
public void handleGroupDisband(CreatureObject creature) {
handleGroupDisband(creature, true);
}
}
@@ -0,0 +1,75 @@
/*******************************************************************************
* Copyright (c) 2013 <Project SWG>
*
* This File is part of NGECore2.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Using NGEngine to work with NGECore2 is making a combined work based on NGEngine.
* Therefore all terms and conditions of the GNU Lesser General Public License cover the combination.
******************************************************************************/
package services.equipment;
import java.util.Vector;
import main.NGECore;
import org.python.core.Py;
import org.python.core.PyObject;
import engine.resources.objects.SWGObject;
import resources.objects.creature.CreatureObject;
public class BonusSetTemplate
{
private String name;
private Vector<String> requiredWornTemplates;
public BonusSetTemplate(String name)
{
this.name = name;
this.requiredWornTemplates = new Vector<String>();
}
public void addRequiredTemplate(String template)
{
requiredWornTemplates.add(template);
}
public String getName()
{
return this.name;
}
public int getWornTemplateCount(CreatureObject creature)
{
int wornItems = 0;
for (SWGObject item : creature.getEquipmentList().get())
{
if(requiredWornTemplates.contains(item.getTemplate())) wornItems++;
}
//System.out.println("[BonusSetTemplate] Worn items: " + wornItems);
return wornItems;
}
public void callScript(CreatureObject creature)
{
//System.out.println("[BonusSetTemplate] Calling script for: " + this.getName());
PyObject func = NGECore.getInstance().scriptService.getMethod("scripts/equipment/bonus_sets/", name, "handleChange");
if(func != null) func.__call__(Py.java2py(NGECore.getInstance()), Py.java2py(creature), Py.java2py(this));
}
}