Conflicts:
	src/services/bazaar/BazaarService.java
This commit is contained in:
Light2
2014-04-15 01:12:44 +02:00
53 changed files with 1317 additions and 291 deletions
+6 -6
View File
@@ -18,7 +18,7 @@ def run(core, actor, target, commandString):
elementalType = weapon.getElementalType()
commandName = ''
if elementalType == '@obj_attr_n:elemental_heat':
if elementalType == 'heat':
if actor.getLevel() >= 58:
commandName = 'co_hw_dot_fire_1'
if actor.getLevel() >= 60:
@@ -29,7 +29,7 @@ def run(core, actor, target, commandString):
commandName = 'co_hw_dot_fire_4'
if actor.getLevel() >= 90:
commandName = 'co_hw_dot_fire_5'
elif elementalType == '@obj_attr_n:elemental_cold':
elif elementalType == 'cold':
if actor.getLevel() >= 58:
commandName = 'co_hw_dot_cold_1'
if actor.getLevel() >= 60:
@@ -40,7 +40,7 @@ def run(core, actor, target, commandString):
commandName = 'co_hw_dot_cold_4'
if actor.getLevel() >= 90:
commandName = 'co_hw_dot_cold_5'
elif elementalType == '@obj_attr_n:elemental_acid':
elif elementalType == 'acid':
if actor.getLevel() >= 58:
commandName = 'co_hw_dot_acid_1'
if actor.getLevel() >= 60:
@@ -51,7 +51,7 @@ def run(core, actor, target, commandString):
commandName = 'co_hw_dot_acid_4'
if actor.getLevel() >= 90:
commandName = 'co_hw_dot_acid_5'
elif elementalType == '@obj_attr_n:elemental_electricity':
elif elementalType == 'electricity':
if actor.getLevel() >= 58:
commandName = 'co_hw_dot_electrical_1'
if actor.getLevel() >= 60:
@@ -62,7 +62,7 @@ def run(core, actor, target, commandString):
commandName = 'co_hw_dot_electrical_4'
if actor.getLevel() >= 90:
commandName = 'co_hw_dot_electrical_5'
elif elementalType == '@obj_attr_n:elemental_energy':
elif elementalType == 'energy':
if actor.getLevel() >= 58:
commandName = 'co_hw_dot_energy_1'
if actor.getLevel() >= 60:
@@ -73,7 +73,7 @@ def run(core, actor, target, commandString):
commandName = 'co_hw_dot_energy_4'
if actor.getLevel() >= 90:
commandName = 'co_hw_dot_energy_5'
elif elementalType =='@obj_attr_n:elemental_kinetic':
elif elementalType =='kinetic':
if actor.getLevel() >= 58:
commandName = 'co_hw_dot_kinetic_1'
if actor.getLevel() >= 60:
+16
View File
@@ -0,0 +1,16 @@
import sys
def setup():
return
def run(core, actor, target, commandString):
if actor.canMount(target) is False: return
if not actor.isMounted():
actor.setMounted(1)
target.initMount(actor)
else:
target.unmount(actor)
return
+16
View File
@@ -0,0 +1,16 @@
import sys
def setup():
return
def run(core, actor, target, commandString):
if actor.canMount(target) is False: return
if not actor.isMounted():
actor.setMounted(1)
target.initMount(actor)
else:
target.unmount(actor)
return
+7 -1
View File
@@ -11,11 +11,17 @@ def run(core, actor, target, commandString):
container = objService.getObject(containerID)
actorContainer = actor.getContainer()
if container == None: return
if actorContainer != None and (container.getTemplate() == "object/cell/shared_cell.iff") & core.housingService.getPermissions(actor, actorContainer):
target.getContainer().transferTo(actor, container, target)
core.simulationService.teleport(target, actor.getPosition(), Quaternion(1,0,0,0), containerID)
#core.housingService.addItemToHouseItemList(target,actorContainer)
return
elif target.getContainer().getTemplate() == "object/cell/shared_cell.iff" and core.housingService.getPermissions(actor, target.getContainer()):
target.getContainer().transferTo(actor, container, target)
return
elif actorContainer != None and container.getTemplate() == "object/cell/shared_cell.iff":
actor.sendSystemMessage("You do not have permission to access that container!", 0)
return
@@ -0,0 +1,28 @@
import sys
from services.equipment import BonusSetTemplate
from java.util import Vector
def addBonusSet(core):
bonusSet = BonusSetTemplate("set_bonus_bh_dps")
bonusSet.addRequiredItem("item_band_set_bh_dps_01_01")
bonusSet.addRequiredItem("item_ring_set_bh_dps_01_01")
bonusSet.addRequiredItem("item_necklace_set_bh_dps_01_01")
bonusSet.addRequiredItem("item_bracelet_r_set_bh_dps_01_01")
bonusSet.addRequiredItem("item_bracelet_l_set_bh_dps_01_01")
core.equipmentService.addBonusSetTemplate(bonusSet)
def handleChange(core, creature, set):
wornItems = set.getWornTemplateCount(creature)
if wornItems == 3:
core.buffService.addBuffToCreature(creature, "set_bonus_bh_dps_1", creature)
elif wornItems == 4:
core.buffService.addBuffToCreature(creature, "set_bonus_bh_dps_2", creature)
elif wornItems == 5:
core.buffService.addBuffToCreature(creature, "set_bonus_bh_dps_3", creature)
else:
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_bh_dps_1")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_bh_dps_2")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_bh_dps_3")
@@ -0,0 +1,28 @@
import sys
from services.equipment import BonusSetTemplate
from java.util import Vector
def addBonusSet(core):
bonusSet = BonusSetTemplate("set_bonus_bh_utility_a")
bonusSet.addRequiredItem("item_band_set_bh_utility_a_01_01")
bonusSet.addRequiredItem("item_ring_set_bh_utility_a_01_01")
bonusSet.addRequiredItem("item_necklace_set_bh_utility_a_01_01")
bonusSet.addRequiredItem("item_bracelet_r_set_bh_utility_a_01_01")
bonusSet.addRequiredItem("item_bracelet_l_set_bh_utility_a_01_01")
core.equipmentService.addBonusSetTemplate(bonusSet)
def handleChange(core, creature, set):
wornItems = set.getWornTemplateCount(creature)
if wornItems == 3:
core.buffService.addBuffToCreature(creature, "set_bonus_bh_utility_a_1", creature)
elif wornItems == 4:
core.buffService.addBuffToCreature(creature, "set_bonus_bh_utility_a_2", creature)
elif wornItems == 5:
core.buffService.addBuffToCreature(creature, "set_bonus_bh_utility_a_3", creature)
else:
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_bh_utility_a_1")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_bh_utility_a_2")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_bh_utility_a_3")
@@ -0,0 +1,28 @@
import sys
from services.equipment import BonusSetTemplate
from java.util import Vector
def addBonusSet(core):
bonusSet = BonusSetTemplate("set_bonus_bh_utility_b")
bonusSet.addRequiredItem("item_band_set_bh_utility_b_01_01")
bonusSet.addRequiredItem("item_ring_set_bh_utility_b_01_01")
bonusSet.addRequiredItem("item_necklace_set_bh_utility_b_01_01")
bonusSet.addRequiredItem("item_bracelet_r_set_bh_utility_b_01_01")
bonusSet.addRequiredItem("item_bracelet_l_set_bh_utility_b_01_01")
core.equipmentService.addBonusSetTemplate(bonusSet)
def handleChange(core, creature, set):
wornItems = set.getWornTemplateCount(creature)
if wornItems == 3:
core.buffService.addBuffToCreature(creature, "set_bonus_bh_utility_b_1", creature)
elif wornItems == 4:
core.buffService.addBuffToCreature(creature, "set_bonus_bh_utility_b_2", creature)
elif wornItems == 5:
core.buffService.addBuffToCreature(creature, "set_bonus_bh_utility_b_3", creature)
else:
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_bh_utility_b_1")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_bh_utility_b_2")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_bh_utility_b_3")
@@ -0,0 +1,28 @@
import sys
from services.equipment import BonusSetTemplate
from java.util import Vector
def addBonusSet(core):
bonusSet = BonusSetTemplate("set_bonus_medic_dps")
bonusSet.addRequiredItem("item_band_set_medic_dps_01_01")
bonusSet.addRequiredItem("item_ring_set_medic_dps_01_01")
bonusSet.addRequiredItem("item_necklace_set_medic_dps_01_01")
bonusSet.addRequiredItem("item_bracelet_r_set_medic_dps_01_01")
bonusSet.addRequiredItem("item_bracelet_l_set_medic_dps_01_01")
core.equipmentService.addBonusSetTemplate(bonusSet)
def handleChange(core, creature, set):
wornItems = set.getWornTemplateCount(creature)
if wornItems == 3:
core.buffService.addBuffToCreature(creature, "set_bonus_medic_dps_1", creature)
elif wornItems == 4:
core.buffService.addBuffToCreature(creature, "set_bonus_medic_dps_2", creature)
elif wornItems == 5:
core.buffService.addBuffToCreature(creature, "set_bonus_medic_dps_3", creature)
else:
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_medic_dps_1")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_medic_dps_2")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_medic_dps_3")
@@ -0,0 +1,28 @@
import sys
from services.equipment import BonusSetTemplate
from java.util import Vector
def addBonusSet(core):
bonusSet = BonusSetTemplate("set_bonus_medic_utility_a")
bonusSet.addRequiredItem("item_band_set_medic_utility_a_01_01")
bonusSet.addRequiredItem("item_ring_set_medic_utility_a_01_01")
bonusSet.addRequiredItem("item_necklace_set_medic_utility_a_01_01")
bonusSet.addRequiredItem("item_bracelet_r_set_medic_utility_a_01_01")
bonusSet.addRequiredItem("item_bracelet_l_set_medic_utility_a_01_01")
core.equipmentService.addBonusSetTemplate(bonusSet)
def handleChange(core, creature, set):
wornItems = set.getWornTemplateCount(creature)
if wornItems == 3:
core.buffService.addBuffToCreature(creature, "set_bonus_medic_utility_a_1", creature)
elif wornItems == 4:
core.buffService.addBuffToCreature(creature, "set_bonus_medic_utility_a_2", creature)
elif wornItems == 5:
core.buffService.addBuffToCreature(creature, "set_bonus_medic_utility_a_3", creature)
else:
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_medic_utility_a_1")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_medic_utility_a_2")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_medic_utility_a_3")
@@ -0,0 +1,28 @@
import sys
from services.equipment import BonusSetTemplate
from java.util import Vector
def addBonusSet(core):
bonusSet = BonusSetTemplate("set_bonus_medic_utility_b")
bonusSet.addRequiredItem("item_band_set_medic_utility_b_01_01")
bonusSet.addRequiredItem("item_ring_set_medic_utility_b_01_01")
bonusSet.addRequiredItem("item_necklace_set_medic_utility_b_01_01")
bonusSet.addRequiredItem("item_bracelet_r_set_medic_utility_b_01_01")
bonusSet.addRequiredItem("item_bracelet_l_set_medic_utility_b_01_01")
core.equipmentService.addBonusSetTemplate(bonusSet)
def handleChange(core, creature, set):
wornItems = set.getWornTemplateCount(creature)
if wornItems == 3:
core.buffService.addBuffToCreature(creature, "set_bonus_medic_utility_b_1", creature)
elif wornItems == 4:
core.buffService.addBuffToCreature(creature, "set_bonus_medic_utility_b_2", creature)
elif wornItems == 5:
core.buffService.addBuffToCreature(creature, "set_bonus_medic_utility_b_3", creature)
else:
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_medic_utility_b_1")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_medic_utility_b_2")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_medic_utility_b_3")
@@ -0,0 +1,28 @@
import sys
from services.equipment import BonusSetTemplate
from java.util import Vector
def addBonusSet(core):
bonusSet = BonusSetTemplate("set_bonus_spy_dps")
bonusSet.addRequiredItem("item_band_set_spy_dps_01_01")
bonusSet.addRequiredItem("item_ring_set_spy_dps_01_01")
bonusSet.addRequiredItem("item_necklace_set_spy_dps_01_01")
bonusSet.addRequiredItem("item_bracelet_r_set_spy_dps_01_01")
bonusSet.addRequiredItem("item_bracelet_l_set_spy_dps_01_01")
core.equipmentService.addBonusSetTemplate(bonusSet)
def handleChange(core, creature, set):
wornItems = set.getWornTemplateCount(creature)
if wornItems == 3:
core.buffService.addBuffToCreature(creature, "set_bonus_spy_dps_1", creature)
elif wornItems == 4:
core.buffService.addBuffToCreature(creature, "set_bonus_spy_dps_2", creature)
elif wornItems == 5:
core.buffService.addBuffToCreature(creature, "set_bonus_spy_dps_3", creature)
else:
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_spy_dps_1")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_spy_dps_2")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_spy_dps_3")
@@ -0,0 +1,28 @@
import sys
from services.equipment import BonusSetTemplate
from java.util import Vector
def addBonusSet(core):
bonusSet = BonusSetTemplate("set_bonus_spy_utility_a")
bonusSet.addRequiredItem("item_band_set_spy_utility_a_01_01")
bonusSet.addRequiredItem("item_ring_set_spy_utility_a_01_01")
bonusSet.addRequiredItem("item_necklace_set_spy_utility_a_01_01")
bonusSet.addRequiredItem("item_bracelet_r_set_spy_utility_a_01_01")
bonusSet.addRequiredItem("item_bracelet_l_set_spy_utility_a_01_01")
core.equipmentService.addBonusSetTemplate(bonusSet)
def handleChange(core, creature, set):
wornItems = set.getWornTemplateCount(creature)
if wornItems == 3:
core.buffService.addBuffToCreature(creature, "set_bonus_spy_utility_a_1", creature)
elif wornItems == 4:
core.buffService.addBuffToCreature(creature, "set_bonus_spy_utility_a_2", creature)
elif wornItems == 5:
core.buffService.addBuffToCreature(creature, "set_bonus_spy_utility_a_3", creature)
else:
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_spy_utility_a_1")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_spy_utility_a_2")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_spy_utility_a_3")
@@ -0,0 +1,28 @@
import sys
from services.equipment import BonusSetTemplate
from java.util import Vector
def addBonusSet(core):
bonusSet = BonusSetTemplate("set_bonus_spy_utility_b")
bonusSet.addRequiredItem("item_band_set_spy_utility_b_01_01")
bonusSet.addRequiredItem("item_ring_set_spy_utility_b_01_01")
bonusSet.addRequiredItem("item_necklace_set_spy_utility_b_01_01")
bonusSet.addRequiredItem("item_bracelet_r_set_spy_utility_b_01_01")
bonusSet.addRequiredItem("item_bracelet_l_set_spy_utility_b_01_01")
core.equipmentService.addBonusSetTemplate(bonusSet)
def handleChange(core, creature, set):
wornItems = set.getWornTemplateCount(creature)
if wornItems == 3:
core.buffService.addBuffToCreature(creature, "set_bonus_spy_utility_b_1", creature)
elif wornItems == 4:
core.buffService.addBuffToCreature(creature, "set_bonus_spy_utility_b_2", creature)
elif wornItems == 5:
core.buffService.addBuffToCreature(creature, "set_bonus_spy_utility_b_3", creature)
else:
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_spy_utility_b_1")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_spy_utility_b_2")
core.buffService.removeBuffFromCreatureByName(creature, "set_bonus_spy_utility_b_3")
+21 -9
View File
@@ -1,25 +1,37 @@
import sys
def Rifle():
def weap_0():
return "expertise_critical_rifle"
def Carbine():
def weap_1():
return "expertise_critical_carbine"
def Pistol():
def weap_2():
return "expertise_critical_pistol"
def OneHandedMelee():
def weap_4():
return "expertise_critical_1h"
def TwoHandedMelee():
def weap_5():
return "expertise_critical_2h"
def Unarmed():
def weap_6():
return "expertise_critical_unarmed"
def Polearm():
def weap_7():
return "expertise_critical_polearm"
def FreeTargetingHeavyWeapon():
def weap_9():
return ""
def weap_10():
return ""
def weap_11():
return ""
def weap_12():
return "expertise_critical_heavy"
def weap_13():
return "expertise_critical_heavy"
@@ -1,9 +1,9 @@
import sys
def addAbilities(core, actor, player):
actor.addAbility("bh_shields_1")
actor.addAbility("bh_armor_sprint_1")
return
def removeAbilities(core, actor, player):
actor.removeAbility("bh_shields_1")
actor.removeAbility("bh_armor_sprint_1")
return
@@ -1,51 +1,52 @@
import sys
def addAbilities(core, actor, player):
if actor.getLevel() >= 4:
actor.addAbility("sp_hd_melee_0")
if actor.getLevel() >= 12:
actor.addAbility("sp_hd_melee_1")
if actor.getLevel() >= 10:
actor.addAbility("sp_stealth_melee_0")
if actor.getLevel() >= 20:
actor.addAbility("sp_hd_melee_2")
if actor.getLevel() >= 30:
actor.addAbility("sp_hd_melee_3")
if actor.getLevel() >= 38:
actor.addAbility("sp_hd_melee_4")
if actor.getLevel() >= 52:
actor.addAbility("sp_hd_melee_5")
if actor.getLevel() >= 62:
actor.addAbility("sp_hd_melee_6")
actor.addAbility("sp_stealth_melee_1")
if actor.getLevel() >= 32:
actor.addAbility("sp_stealth_melee_2")
if actor.getLevel() >= 46:
actor.addAbility("sp_stealth_melee_3")
if actor.getLevel() >= 60:
actor.addAbility("sp_stealth_melee_4")
if actor.getLevel() >= 70:
actor.addAbility("sp_stealth_melee_5")
if actor.getLevel() >= 86:
actor.addAbility("sp_stealth_melee_6")
if actor.getLevel() >= 4:
actor.addAbility("sp_hd_range_0")
if actor.getLevel() >= 12:
actor.addAbility("sp_hd_range_1")
if actor.getLevel() >= 10:
actor.addAbility("sp_stealth_ranged_0")
if actor.getLevel() >= 20:
actor.addAbility("sp_hd_range_2")
if actor.getLevel() >= 30:
actor.addAbility("sp_hd_range_3")
if actor.getLevel() >= 38:
actor.addAbility("sp_hd_range_4")
if actor.getLevel() >= 52:
actor.addAbility("sp_hd_range_5")
if actor.getLevel() >= 62:
actor.addAbility("sp_hd_range_6")
actor.addAbility("sp_stealth_ranged_1")
if actor.getLevel() >= 32:
actor.addAbility("sp_stealth_ranged_2")
if actor.getLevel() >= 46:
actor.addAbility("sp_stealth_ranged_3")
if actor.getLevel() >= 60:
actor.addAbility("sp_stealth_ranged_4")
if actor.getLevel() >= 70:
actor.addAbility("sp_stealth_ranged_5")
if actor.getLevel() >= 86:
actor.addAbility("sp_stealth_ranged_6")
return
def removeAbilities(core, actor, player):
actor.removeAbility("sp_hd_melee_0")
actor.removeAbility("sp_hd_melee_1")
actor.removeAbility("sp_hd_melee_2")
actor.removeAbility("sp_hd_melee_3")
actor.removeAbility("sp_hd_melee_4")
actor.removeAbility("sp_hd_melee_5")
actor.removeAbility("sp_hd_melee_6")
actor.removeAbility("sp_stealth_melee_0")
actor.removeAbility("sp_stealth_melee_1")
actor.removeAbility("sp_stealth_melee_2")
actor.removeAbility("sp_stealth_melee_3")
actor.removeAbility("sp_stealth_melee_4")
actor.removeAbility("sp_stealth_melee_5")
actor.removeAbility("sp_stealth_melee_6")
actor.removeAbility("sp_hd_range_0")
actor.removeAbility("sp_hd_range_1")
actor.removeAbility("sp_hd_range_2")
actor.removeAbility("sp_hd_range_3")
actor.removeAbility("sp_hd_range_4")
actor.removeAbility("sp_hd_range_5")
actor.removeAbility("sp_hd_range_6")
actor.removeAbility("sp_stealth_ranged_0")
actor.removeAbility("sp_stealth_ranged_1")
actor.removeAbility("sp_stealth_ranged_2")
actor.removeAbility("sp_stealth_ranged_3")
actor.removeAbility("sp_stealth_ranged_4")
actor.removeAbility("sp_stealth_ranged_5")
actor.removeAbility("sp_stealth_ranged_6")
return
@@ -1,15 +1,15 @@
import sys
def addAbilities(core, actor, player):
if actor.getLevel() >= 26:
if actor.getLevel() >= 10:
actor.addAbility("sp_cloaked_recovery_0")
if actor.getLevel() >= 34:
if actor.getLevel() >= 28:
actor.addAbility("sp_cloaked_recovery_1")
if actor.getLevel() >= 48:
if actor.getLevel() >= 54:
actor.addAbility("sp_cloaked_recovery_2")
if actor.getLevel() >= 62:
if actor.getLevel() >= 70:
actor.addAbility("sp_cloaked_recovery_3")
if actor.getLevel() >= 76:
if actor.getLevel() >= 86:
actor.addAbility("sp_cloaked_recovery_4")
return
@@ -1,9 +1,51 @@
import sys
def addAbilities(core, actor, player):
actor.addAbility("sp_hd_ability_1")
if actor.getLevel() >= 10:
actor.addAbility("sp_hd_melee_0")
if actor.getLevel() >= 18:
actor.addAbility("sp_hd_melee_1")
if actor.getLevel() >= 32:
actor.addAbility("sp_hd_melee_2")
if actor.getLevel() >= 46:
actor.addAbility("sp_hd_melee_3")
if actor.getLevel() >= 58:
actor.addAbility("sp_hd_melee_4")
if actor.getLevel() >= 70:
actor.addAbility("sp_hd_melee_5")
if actor.getLevel() >= 84:
actor.addAbility("sp_hd_melee_6")
if actor.getLevel() >= 10:
actor.addAbility("sp_hd_range_0")
if actor.getLevel() >= 18:
actor.addAbility("sp_hd_range_1")
if actor.getLevel() >= 32:
actor.addAbility("sp_hd_range_2")
if actor.getLevel() >= 46:
actor.addAbility("sp_hd_range_3")
if actor.getLevel() >= 58:
actor.addAbility("sp_hd_range_4")
if actor.getLevel() >= 70:
actor.addAbility("sp_hd_range_5")
if actor.getLevel() >= 84:
actor.addAbility("sp_hd_range_6")
return
def removeAbilities(core, actor, player):
actor.removeAbility("sp_hd_ability_1")
actor.removeAbility("sp_hd_melee_0")
actor.removeAbility("sp_hd_melee_1")
actor.removeAbility("sp_hd_melee_2")
actor.removeAbility("sp_hd_melee_3")
actor.removeAbility("sp_hd_melee_4")
actor.removeAbility("sp_hd_melee_5")
actor.removeAbility("sp_hd_melee_6")
actor.removeAbility("sp_hd_range_0")
actor.removeAbility("sp_hd_range_1")
actor.removeAbility("sp_hd_range_2")
actor.removeAbility("sp_hd_range_3")
actor.removeAbility("sp_hd_range_4")
actor.removeAbility("sp_hd_range_5")
actor.removeAbility("sp_hd_range_6")
return
@@ -1,17 +1,17 @@
import sys
def addAbilities(core, actor, player):
if actor.getLevel() >= 26:
if actor.getLevel() >= 10:
actor.addAbility("sp_dot_0")
if actor.getLevel() >= 34:
if actor.getLevel() >= 28:
actor.addAbility("sp_dot_1")
if actor.getLevel() >= 48:
if actor.getLevel() >= 46:
actor.addAbility("sp_dot_2")
if actor.getLevel() >= 62:
if actor.getLevel() >= 58:
actor.addAbility("sp_dot_3")
if actor.getLevel() >= 76:
if actor.getLevel() >= 72:
actor.addAbility("sp_dot_4")
if actor.getLevel() >= 90:
if actor.getLevel() >= 88:
actor.addAbility("sp_dot_5")
return
@@ -1,12 +1,15 @@
import sys
def setup(core, object):
object.setAttachment('radial_filename', 'item')
object.setAttachment('radial_filename', 'vehicle_pcd')
return
def use(core, actor, object):
if object:
if object and actor.getAttachment('activeVehicleID') == None:
swoop = core.objectService.createObject('object/mobile/vehicle/shared_speederbike_swoop.iff', 0, actor.getPlanet(), actor.getPosition(), actor.getOrientation())
swoop.setOwnerId(actor.getObjectID())
actor.setAttachment('activeVehicleID', swoop.getObjectID())
core.simulationService.add(swoop, swoop.getPosition().x, swoop.getPosition().z, True)
return
@@ -6,14 +6,19 @@ def setup(core, object):
def use(core, actor, object):
datapad = actor.getSlottedObject('datapad')
pcd = core.objectService.createObject('object/intangible/vehicle/shared_speederbike_swoop_pcd.iff', actor.getPlanet(), actor.getPosition().x, actor.getPosition().z,actor.getPosition().y)
#actor.sendSystemMessage('actor.getObjectID() %s' % actor.getObjectID(), 0)
if datapad and pcd:
datapad.add(pcd)
core.objectService.destroyObject(object)
vehicle = core.objectService.createObject('object/mobile/vehicle/shared_speederbike_swoop.iff', actor.getPlanet(), actor.getPosition().x, actor.getPosition().z,actor.getPosition().y)
vehicle.setOwnerId(actor.getObjectID())
core.simulationService.add(vehicle, vehicle.getPosition().x, vehicle.getPosition().z, True)
vehicleId = actor.getAttachment('activeVehicleID')
if vehicleId == None:
vehicle = core.objectService.createObject('object/mobile/vehicle/shared_speederbike_swoop.iff', actor.getPlanet(), actor.getPosition().x, actor.getPosition().z,actor.getPosition().y)
vehicle.setOwnerId(actor.getObjectID())
core.simulationService.add(vehicle, vehicle.getPosition().x, vehicle.getPosition().z, True)
actor.setAttachment('activeVehicleID', vehicle.getObjectID())
return
@@ -1,4 +1,11 @@
import sys
def setup(core, object):
object.setAttackSpeed(1)
object.setDamageType("kinetic")
object.setMinDamage(50)
object.setMaxDamage(100)
object.setMaxRange(5)
object.setWeaponType(6)
return
+10 -4
View File
@@ -4,14 +4,18 @@ import sys
def createRadial(core, owner, target, radials):
radials.add(RadialOptions(0, 7, 1, ''))
radials.add(RadialOptions(1, 40, 3, '@pet/pet_menu:menu_enter_exit'))
radials.add(RadialOptions(0, 21, 1, ''))
radials.add(RadialOptions(0, 60, 3, '@pet/pet_menu:menu_store'))
if owner.canMount(target):
radials.add(RadialOptions(0, 208, 1, '@pet/pet_menu:menu_enter_exit'))
if target.getOwnerId() == owner.getObjectID():
radials.add(RadialOptions(0, 60, 3, '@pet/pet_menu:menu_store'))
return
def handleSelection(core, owner, target, option):
if target:
if option == 21 or option == 40:
if option == 208:
if not owner.isMounted():
owner.setMounted(1)
target.initMount(owner)
@@ -19,5 +23,7 @@ def handleSelection(core, owner, target, option):
target.unmount(owner)
if option == 60:
if owner.isMounted(): vehicleObject.unmount(owner)
core.objectService.destroyObject(target)
owner.setAttachment('activeVehicleID', None)
return
+27
View File
@@ -0,0 +1,27 @@
from resources.common import RadialOptions
import sys
def createRadial(core, owner, target, radials):
radials.add(RadialOptions(0, 62, 1, ''))
radials.add(RadialOptions(0, 7, 1, ''))
return
def handleSelection(core, owner, target, option):
if option == 61 and target:
core.objectService.useObject(owner, target)
if option == 62 and target:
vehicleId = long(owner.getAttachment('activeVehicleID'))
if vehicleId != None:
vehicleObject = core.objectService.getObject(vehicleId)
if owner.isMounted(): vehicleObject.unmount(owner)
core.objectService.destroyObject(vehicleId)
owner.setAttachment('activeVehicleID', None)
return
@@ -66,6 +66,14 @@ public class ObjControllerMessage extends SWGMessage {
public static final int STOP_CONVERSATION = 0x00DE;
public static final int CONVERSATION_MESSAGE = 0x00DF;
public static final int CONVERSATION_OPTIONS = 0x00E0;
public static final int DRAFT_SCHEMATICS = 0x0102;
public static final int DRAFT_SLOTS = 0x0103;
public static final int CRAFT_EXPERIMENT = 0x0106;
public static final int CRAFT_ACKNOWLEDGE = 0x010C;
public static final int CRAFT_CUSTOMIZATION = 0x015A;
public static final int NEXT_CRAFTING_STAGE_RESULT = 0x01BE;
public static final int DRAFT_SLOTS_QUERY_RESPONSE = 0x01BF;
public static final int RESOURCE_WEIGHTS = 0x0207;
public ObjControllerMessage() {
@@ -29,7 +29,6 @@ import main.NGECore;
import org.apache.mina.core.buffer.IoBuffer;
import protocol.swg.SWGMessage;
import resources.objects.creature.CreatureObject;
import services.chat.ChatRoom;
public class ChatQueryRoomResults extends SWGMessage {
@@ -43,5 +43,16 @@ public class ObjControllerOpcodes {
public static final int NPC_CONVERSATION_OPTIONS = 0xE0000000;
public static final int SET_PROFESSION_TEMPLATE = 0x5C040000;
public static final int RESOURCE_EMPTY_HOPPER = 0xED000000;
public static final int DRAFT_SCHEMATICS = 0x0102;
public static final int DRAFT_SLOTS = 0x0103;
public static final int CRAFT_EXPERIMENT = 0x0106;
public static final int CRAFT_FILLSLOT = 0x7010000;
public static final int CRAFT_EMPTYSLOT = 0x8010000;
public static final int CRAFT_ACKNOWLEDGE = 0x010C;
public static final int CRAFT_CUSTOMIZATION = 0x5a010000;
public static final int NEXT_CRAFTING_STAGE_RESULT = 0x01BE;
public static final int DRAFT_SLOTS_QUERY_RESPONSE = 0x01BF;
public static final int RESOURCE_WEIGHTS = 0x0207;
}
@@ -27,7 +27,6 @@ import java.util.Vector;
import org.apache.mina.core.buffer.IoBuffer;
import resources.objects.ObjectMessageBuilder;
import resources.objects.harvester.HarvesterObject;
public class BuildingMessageBuilder extends ObjectMessageBuilder {
@@ -0,0 +1,46 @@
/*******************************************************************************
* Copyright (c) 2013 <Project SWG>
*
* This File is part of NGECore2.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Using NGEngine to work with NGECore2 is making a combined work based on NGEngine.
* Therefore all terms and conditions of the GNU Lesser General Public License cover the combination.
******************************************************************************/
package resources.objects.craft;
import com.sleepycat.persist.model.Persistent;
import engine.clients.Client;
import engine.resources.objects.SWGObject;
import engine.resources.scene.Planet;
import engine.resources.scene.Point3D;
import engine.resources.scene.Quaternion;
@Persistent
public class DraftSchematic extends SWGObject {
public DraftSchematic(long objectID, Planet planet, String template, Point3D position, Quaternion orientation){
super(objectID, planet, position, orientation, template);
}
@Override
public void sendBaselines(Client arg0) {
// TODO Auto-generated method stub
}
}
@@ -1149,8 +1149,7 @@ public class CreatureMessageBuilder extends ObjectMessageBuilder {
buffer.putLong(ownerId);
int size = buffer.position();
buffer.flip();
//buffer = createDelta("CREO", (byte) 3, (short) 1, (short) 0x0D, buffer, size + 4); 0F,12 doesnt crash
buffer = createDelta("CREO", (byte) 3, (short) 1, (short) 0x0F, buffer, size + 4); // checked from 0xA up to 0x1F
buffer = createDelta("CREO", (byte) 3, (short) 1, (short) 0x0F, buffer, size + 4); // This is the correct one
return buffer;
}
@@ -1799,18 +1799,26 @@ public class CreatureObject extends TangibleObject implements IPersistent {
this.mountedVehicle = mountedVehicle;
}
public boolean canMount(CreatureObject vehicle)
{
if(vehicle.getOwnerId() == this.getObjectId()) return true;
return false;
}
public void mount(CreatureObject owner) {
boolean remove = false;
synchronized(objectMutex) {
if ((this.getOptionsBitmask() & Options.MOUNT) == Options.MOUNT){
synchronized(objectMutex)
{
if ((this.getOptionsBitmask() & Options.MOUNT) == Options.MOUNT)
{
remove = true;
_add(owner);
UpdateContainmentMessage updateContainmentMessage = new UpdateContainmentMessage(owner.getObjectID(), this.getObjectID(), 4);
notifyObservers(updateContainmentMessage, true);
}
}
if(remove)
NGECore.getInstance().simulationService.remove(owner, owner.getWorldPosition().x, owner.getWorldPosition().z, false);
if(remove) NGECore.getInstance().simulationService.remove(owner, owner.getWorldPosition().x, owner.getWorldPosition().z, false);
}
public void unmount(CreatureObject owner) {
@@ -1835,19 +1843,13 @@ public class CreatureObject extends TangibleObject implements IPersistent {
public void initMount(CreatureObject owner) {
synchronized(objectMutex) {
this.ownerId = owner.getObjectID();
setStateBitmask(0x10000000);
owner.setMountedVehicle(this);
this.setOwnerId(owner.getObjectID());
//this.add(owner); // NPE at engine.resources.objects.SWGObject.getCorrectArrangementId(kd:844)
this.mount(owner);
// setStateBitmask(28);
// owner.setStateBitmask(27);
owner.setStateBitmask(0x8000000);
this.setPosture((byte)10);
//this.sendBaselines(owner.getClient());
}
}
@@ -21,6 +21,156 @@
******************************************************************************/
package resources.objects.factorycrate;
public class FactoryCrateMessageBuilder {
import java.nio.ByteOrder;
import org.apache.mina.core.buffer.IoBuffer;
import resources.objects.ObjectMessageBuilder;
import resources.objects.resource.GalacticResource;
import resources.objects.resource.ResourceContainerObject;
/**
* @author Charon
*/
public class FactoryCrateMessageBuilder extends ObjectMessageBuilder{
public FactoryCrateMessageBuilder(FactoryCrateObject factoryCrateObject) {
setObject(factoryCrateObject);
}
public IoBuffer buildBaseline3() {
FactoryCrateObject factoryCrateObject = (FactoryCrateObject) object;
IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN);
buffer.setAutoExpand(true);
buffer.putShort((short)0x0D);
buffer.putFloat(1.0f); //op0
buffer.put(getAsciiString("factory_n"));
buffer.putInt(0);
buffer.put(getAsciiString("food_crate"));
if (factoryCrateObject.getCustomName().length()>0)
buffer.put(getUnicodeString(factoryCrateObject.getCustomName()));
else
buffer.putInt(0);
buffer.putInt(1);
buffer.putShort((short)0);
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(0x2100); // optionsbitmask
buffer.putInt((int)factoryCrateObject.getQuantity()); // Quantity // op9
buffer.putInt(0);
buffer.putInt(0x64); // condition maybe
buffer.put((byte)1);
int size = buffer.position();
buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size);
buffer.flip();
buffer = createBaseline("TYCF", (byte) 3, buffer, size);
return buffer;
// 01 00 00 00
// 00 00
// 00 00 00 00
// 00 00 00 00
// 00 00 00 00
// 00 00 00 00
// 00 21 00 00
// 2A 00 00 00
// 00 00 00 00
// 64 00 00 00
// 01
}
public IoBuffer buildBaseline6() {
FactoryCrateObject factoryCrateObject = (FactoryCrateObject) object;
IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN);
buffer.setAutoExpand(true);
buffer.putShort((short)6);
buffer.putInt(3);
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(0);
buffer.put((byte)0);
int size = buffer.position();
buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size);
buffer.flip();
buffer = createBaseline("TYCF", (byte) 6, buffer, size);
return buffer;
}
public IoBuffer buildBaseline8() {
IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN);
buffer.setAutoExpand(true);
buffer.putShort((short)0);
int size = buffer.position();
buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size);
buffer.flip();
buffer = createBaseline("RCNO", (byte) 8, buffer, size);
return buffer;
}
public IoBuffer buildBaseline9() {
IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN);
buffer.setAutoExpand(true);
buffer.putShort((short)0);
int size = buffer.position();
buffer = bufferPool.allocate(size, false).put(buffer.array(), 0, size);
buffer.flip();
buffer = createBaseline("TYCF", (byte) 9, buffer, size);
return buffer;
}
public IoBuffer buildDelta3() {
FactoryCrateObject factoryCrateObject = (FactoryCrateObject) object;
IoBuffer buffer = IoBuffer.allocate(10).order(ByteOrder.LITTLE_ENDIAN);
buffer.setAutoExpand(true);
buffer.putInt(factoryCrateObject.getQuantity());
int size = buffer.position();
buffer.flip();
buffer = createDelta("TYCF", (byte) 3, (short) 1, (short) 9, buffer, size + 4);
return buffer;
}
@Override
public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) {
// TODO Auto-generated method stub
}
@Override
public void sendBaselines() {
// TODO Auto-generated method stub
}
}
@@ -21,11 +21,250 @@
******************************************************************************/
package resources.objects.factorycrate;
import java.util.Map;
import java.util.Vector;
import main.NGECore;
import protocol.swg.SceneCreateObjectByCrc;
import protocol.swg.SceneDestroyObject;
import protocol.swg.SceneEndBaselines;
import protocol.swg.UpdateContainmentMessage;
import protocol.swg.UpdatePVPStatusMessage;
import com.sleepycat.persist.model.NotPersistent;
import com.sleepycat.persist.model.Persistent;
import engine.clients.Client;
import engine.resources.common.CRC;
import engine.resources.objects.SWGObject;
import engine.resources.scene.Planet;
import engine.resources.scene.Point3D;
import engine.resources.scene.Quaternion;
import resources.objects.creature.CreatureObject;
import resources.objects.tangible.TangibleObject;
/**
* @author Charon
*/
@Persistent(version=0)
public class FactoryCrateObject extends TangibleObject {
private Vector<TangibleObject> contents;
private byte capacity;
private byte contentObjectQuantity;
private int contentCRC;
private TangibleObject contentObjectType;
@NotPersistent
private FactoryCrateMessageBuilder messageBuilder;
public FactoryCrateObject() {
}
public FactoryCrateObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation) {
super(objectID, planet, template, position, orientation);
this.messageBuilder = new FactoryCrateMessageBuilder(this);
this.contents = new Vector<TangibleObject>();
this.contentObjectQuantity = 0;
this.capacity = 25;
this.getAttributes().put("@obj_attr_n:condition", "100/100");
this.getAttributes().put("@obj_attr_n:volume", "1");
this.getAttributes().put("@obj_attr_n:quantity", "1");
this.getAttributes().put("@obj_attr_n:factory_count", "1");
this.getAttributes().put("@obj_attr_n:factory_attribs", "------------");
this.getAttributes().put("@obj_attr_n:type", "@got_n:component");
this.getAttributes().put("@obj_attr_n:serial_number", "123");
}
public boolean setContentType(TangibleObject contentObject) {
synchronized(objectMutex) {
this.contentObjectType = contentObject;
if (contentObject.getTemplate().length()>0)
this.contentCRC = CRC.StringtoCRC(contentObject.getTemplate());
else
this.contentCRC = 0;
Map<String,String> contentAttributes = contentObject.getAttributes();
for (Map.Entry<String, String> entry : contentAttributes.entrySet())
{
//if (!entry.getKey().equals(@obj_attr_n:condition))
this.getAttributes().put(entry.getKey(), entry.getValue());
}
return true;
}
}
public TangibleObject getContentType() {
return this.contentObjectType;
}
public boolean setContentTypeAndQuantity(TangibleObject contentObject, int quantity) {
synchronized(objectMutex) {
this.contentObjectType = contentObject;
if (contentObject.getTemplate().length()>0)
this.contentCRC = CRC.StringtoCRC(contentObject.getTemplate());
else{
this.contentCRC = 0;
return false; // Does it make sense to continue anyway?
}
Map<String,String> contentAttributes = contentObject.getAttributes();
for (Map.Entry<String, String> entry : contentAttributes.entrySet())
{
//if (!entry.getKey().equals(@obj_attr_n:condition))
this.getAttributes().put(entry.getKey(), entry.getValue());
System.out.println(entry.getKey() + " " + entry.getValue());
}
if (quantity<capacity) {
contentObject.setSerialNumber(contentObject.getSerialNumber());
for (int i=0;i<quantity;i++){
contents.add(contentObject);
}
contentObjectQuantity = (byte) quantity;
return true;
}
return false;
}
}
public boolean addToCrate(TangibleObject contentObject) {
synchronized(objectMutex) {
if (contentObjectQuantity<capacity) {
if (! contents.isEmpty()) {
TangibleObject serialProvider = contents.firstElement();
contentObject.setSerialNumber(serialProvider.getSerialNumber());
}
contents.add(contentObject);
contentObjectQuantity ++;
return true;
}
return false;
}
}
public String getContentFilename() {
if (!contents.isEmpty()) {
return contents.firstElement().getStfFilename();
} else {
System.err.println("Crate is empty");
}
return null;
}
public void getObjectOutOfCrate(CreatureObject player,NGECore core) {
synchronized(objectMutex) {
if (this.getQuantity()>0){
TangibleObject contentType = this.getContentType();
if (contentType==null)
return; // Bad, crate had no content type set
TangibleObject contentItem = (TangibleObject) core.objectService.createObject(contentType.getTemplate(), player.getPlanet());
contentItem.setOptions(resources.datatables.Options.SERIAL, true);
int crc = this.getContentCRC();//CRC.StringtoCRC("object/tangible/food/crafted/shared_drink_alcohol.iff");
SceneCreateObjectByCrc createObjectMsg = new SceneCreateObjectByCrc(contentItem.getObjectID(), player.getOrientation().x, player.getOrientation().y, player.getOrientation().z, player.getOrientation().w, player.getPosition().x, player.getPosition().y, player.getPosition().z, crc, (byte) 0);
player.getClient().getSession().write(createObjectMsg.serialize());
contentItem.sendBaselines(player.getClient()); // TANO 3,6,8,9 Baselines
SceneEndBaselines sceneEndBaselinesMsg = new SceneEndBaselines(contentItem.getObjectID());
player.getClient().getSession().write(sceneEndBaselinesMsg.serialize());
long parentId = this.getParentId();
SWGObject parentContainer = core.objectService.getObject(parentId);
if (parentContainer==null)
return; // crate has no parent, error
UpdateContainmentMessage updateContainmentMessage= new UpdateContainmentMessage(contentItem.getObjectID(), parentContainer.getObjectID(), -1);
player.getClient().getSession().write(updateContainmentMessage.serialize());
this.sendSetQuantity(player.getClient(),this.getQuantity()-1);
if (this.getQuantity()==0){ // Crate is empty now, delete it
parentContainer._remove(this);
SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(this.getObjectID());
player.getClient().getSession().write(destroyObjectMsg.serialize());
core.objectService.destroyObject(this);
}
} else { // should give players the chance to clean faulty, empty crates from their containers
long parentId = this.getParentId();
SWGObject parentContainer = core.objectService.getObject(parentId);
if (parentContainer==null)
return; // crate has no parent, error
parentContainer._remove(this);
SceneDestroyObject destroyObjectMsg = new SceneDestroyObject(this.getObjectID());
player.getClient().getSession().write(destroyObjectMsg.serialize());
core.objectService.destroyObject(this);
}
}
}
public byte getQuantity() {
return contentObjectQuantity;
}
public String getSerialNumber() {
if (!contents.isEmpty()) {
return contents.firstElement().getSerialNumber();
}
return "";
}
public int getContentCRC() {
return contentCRC;
}
}
public void setContentCRC(int contentCRC) {
synchronized(objectMutex) {
this.contentCRC = contentCRC;
}
}
public void handleSplit(){
}
public void sendAddItem(Client destination) {
destination.getSession().write(messageBuilder.buildDelta3());
this.getAttributes().put("@obj_attr_n:factory_count", ""+this.getQuantity());
this.getAttributes().put("@obj_attr_n:quantity", ""+this.getQuantity());
//services.CharonPacketUtils.printAnalysis(messageBuilder.buildDelta3(),"FCYT3 Delta");
}
public void sendSetQuantity(Client destination,int quantity) {
contentObjectQuantity = (byte) quantity;
destination.getSession().write(messageBuilder.buildDelta3());
this.getAttributes().put("@obj_attr_n:factory_count", ""+quantity);
this.getAttributes().put("@obj_attr_n:quantity", ""+this.getQuantity());
//services.CharonPacketUtils.printAnalysis(messageBuilder.buildDelta3(),"FCYT3 Delta");
}
@Override
public void sendBaselines(Client destination) {
if(destination == null || destination.getSession() == null) {
System.out.println("NULL destination");
return;
}
destination.getSession().write(messageBuilder.buildBaseline3());
destination.getSession().write(messageBuilder.buildBaseline6());
destination.getSession().write(messageBuilder.buildBaseline8());
destination.getSession().write(messageBuilder.buildBaseline9());
// services.CharonPacketUtils.printAnalysis(messageBuilder.buildBaseline3(),"FCYT3 Baseline");
// services.CharonPacketUtils.printAnalysis(messageBuilder.buildBaseline6(),"FCYT6 Baseline");
// services.CharonPacketUtils.printAnalysis(messageBuilder.buildBaseline8(),"FCYT8 Baseline");
// services.CharonPacketUtils.printAnalysis(messageBuilder.buildBaseline9(),"FCYT9 Baseline");
}
public void sendDelta3(Client destination) {
destination.getSession().write(messageBuilder.buildDelta3());
this.getAttributes().put("@obj_attr_n:factory_count", ""+this.getQuantity());
//services.CharonPacketUtils.printAnalysis(messageBuilder.buildDelta3(),"FCYT3 Delta");
}
}
@@ -29,7 +29,6 @@ import org.apache.mina.core.buffer.IoBuffer;
import engine.resources.objects.SWGObject;
import resources.objects.ObjectMessageBuilder;
import resources.objects.building.BuildingObject;
import resources.objects.creature.CreatureObject;
import resources.objects.resource.GalacticResource;
import resources.objects.resource.ResourceContainerObject;
@@ -22,7 +22,6 @@
package resources.objects.installation;
import com.sleepycat.persist.model.Entity;
import com.sleepycat.persist.model.Persistent;
import engine.clients.Client;
import engine.resources.scene.Planet;
@@ -21,11 +21,27 @@
******************************************************************************/
package resources.objects.manufacture;
import com.sleepycat.persist.model.Persistent;
import resources.objects.intangible.IntangibleObject;
import com.sleepycat.persist.model.Persistent;
import engine.resources.scene.Planet;
import engine.resources.scene.Point3D;
import engine.resources.scene.Quaternion;
/**
* @author Charon
*/
@Persistent(version=0)
public class ManufactureSchematicObject extends IntangibleObject {
public class ManufactureSchematicObject extends IntangibleObject{
//@NotPersistent
//private ManufactureSchematicMessageBuilder messageBuilder;
public ManufactureSchematicObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation) {
super(objectID, planet, position, orientation, template);
//messageBuilder = new ManufactureSchematicMessageBuilder(this);
}
}
@@ -161,6 +161,49 @@ public class TangibleMessageBuilder extends ObjectMessageBuilder {
return buffer;
}
public IoBuffer buildDelta3() {
IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN);
buffer.setAutoExpand(true);
buffer.putShort((short)5);
buffer.putInt(0x12862153);
buffer.putLong(getObject().getObjectID());
buffer.putInt(0x54414E4F);
buffer.put((byte)3);
buffer.putInt(8);//buffer.putInt(8+6);
buffer.putShort((short) 2);
buffer.putShort((short)8);
buffer.put((byte)0);
buffer.putShort((short) 0x21);
buffer.put((byte)0);
// buffer.putShort((short) 0);
// buffer.putFloat(4.0F);
int size = buffer.position();
buffer.flip();
return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip();
}
public IoBuffer buildAssemblyDelta3() {
IoBuffer buffer = bufferPool.allocate(2, false).order(ByteOrder.LITTLE_ENDIAN);
buffer.setAutoExpand(true);
buffer.putShort((short)5);
buffer.putInt(0x12862153);
buffer.putLong(getObject().getObjectID());
buffer.putInt(0x54414E4F);
buffer.put((byte)3);
buffer.putInt(8);//buffer.putInt(8+6);
buffer.putShort((short) 1);
buffer.putShort((short)0x0B);
buffer.putInt(0x000003E8); // ?
int size = buffer.position();
buffer.flip();
return IoBuffer.allocate(size).put(buffer.array(), 0, size).flip();
}
@Override
public void sendListDelta(byte viewType, short updateType, IoBuffer buffer) {
// TODO Auto-generated method stub
@@ -53,7 +53,7 @@ import engine.resources.scene.Planet;
import engine.resources.scene.Point3D;
import engine.resources.scene.Quaternion;
@Persistent(version=6)
@Persistent(version=7)
public class TangibleObject extends SWGObject {
// TODO: Thread safety
@@ -486,13 +486,28 @@ public class TangibleObject extends SWGObject {
}
public String getSerialNumber() {
return serialNumber;
return getStringAttribute("serial_number");
}
public void setSerialNumber(String serialNumber) {
this.serialNumber = serialNumber;
setStringAttribute("serial_number", serialNumber);
}
public void sendDelta3(Client destination) {
destination.getSession().write(messageBuilder.buildDelta3());
//tools.CharonPacketUtils.printAnalysis(messageBuilder.buildDelta3(),"TANO3 Delta");
}
public void sendAssemblyDelta3(Client destination) {
destination.getSession().write(messageBuilder.buildAssemblyDelta3());
//tools.CharonPacketUtils.printAnalysis(messageBuilder.buildAssemblyDelta3(),"TANO3 Assembly Delta");
}
public void sendCustomizationDelta3(Client destination, String enteredName){
destination.getSession().write(messageBuilder.buildCustomNameDelta(enteredName));
//tools.CharonPacketUtils.printAnalysis(messageBuilder.buildCustomNameDelta(enteredName),"TANO3 Customization Delta");
}
@Override
public void sendBaselines(Client destination) {
+36 -92
View File
@@ -31,7 +31,7 @@ import engine.resources.scene.Planet;
import engine.resources.scene.Point3D;
import engine.resources.scene.Quaternion;
@Persistent(version=0)
@Persistent(version=1)
public class WeaponObject extends TangibleObject {
// TODO: Thread safety
@@ -39,53 +39,24 @@ public class WeaponObject extends TangibleObject {
@NotPersistent
private WeaponMessageBuilder messageBuilder;
private float attackSpeed = 1;
private float maxRange;
public WeaponObject(long objectID, Planet planet, String template) {
super(objectID, planet, template, new Point3D(0, 0, 0), new Quaternion(1, 0, 1, 0));
messageBuilder = new WeaponMessageBuilder(this);
if (this.getClass().getSimpleName().equals("WeaponObject")) setIntAttribute("volume", 1);
calculateRange();
calculateAttackSpeed();
setStringAttribute("cat_wpn_damage.damage", "0-0");
}
public WeaponObject(long objectID, Planet planet, String template, Point3D position, Quaternion orientation) {
super(objectID, planet, template, position, orientation);
messageBuilder = new WeaponMessageBuilder(this);
if (this.getClass().getSimpleName().equals("WeaponObject")) setIntAttribute("volume", 1);
calculateRange();
calculateAttackSpeed();
setStringAttribute("cat_wpn_damage.damage", "0-0");
}
public WeaponObject() {
super();
messageBuilder = new WeaponMessageBuilder(this);
//calculateRange();
}
private void calculateRange() {
int weaponType = getWeaponType();
switch(weaponType) {
case 0: maxRange = 64; break;
case 1: maxRange = 50; break;
case 2: maxRange = 35; break;
case 12: maxRange = 64; break;
case 4: maxRange = 5; break;
case 5: maxRange = 5; break;
case 6: maxRange = 5; break;
case 7: maxRange = 5; break;
case 8: maxRange = 64; break;
case 9: maxRange = 5; break;
case 10: maxRange = 5; break;
case 11: maxRange = 5; break;
}
}
public int getIncapTimer() {
@@ -118,7 +89,9 @@ public class WeaponObject extends TangibleObject {
}
public void setMaxDamage(int maxDamage) {
setStringAttribute("cat_wpn_damage.damage", String.valueOf(getMinDamage()) + "-" + String.valueOf(maxDamage));
setIntAttribute("cat_wpn_damage.dps", getDamagePerSecond());
}
public int getMinDamage() {
@@ -126,7 +99,9 @@ public class WeaponObject extends TangibleObject {
}
public void setMinDamage(int minDamage) {
setStringAttribute("cat_wpn_damage.damage", String.valueOf(minDamage) + "-" + String.valueOf(getMaxDamage()));
setIntAttribute("cat_wpn_damage.dps", getDamagePerSecond());
}
public int getElementalDamage() {
@@ -135,14 +110,17 @@ public class WeaponObject extends TangibleObject {
public void setElementalDamage(int elementalDamage) {
setIntAttribute("cat_wpn_damage.wpn_elemental_value", elementalDamage);
setIntAttribute("cat_wpn_damage.dps", getDamagePerSecond());
}
public String getElementalType() {
return getStringAttribute("cat_wpn_damage.wpn_elemental_type");
if (getStringAttribute("cat_wpn_damage.wpn_elemental_type") != null )
return getStringAttribute("cat_wpn_damage.wpn_elemental_type").replace("@obj_attr_n:elemental_", "");
return null;
}
public void setElementalType(String elementalType) {
setStringAttribute("cat_wpn_damage.wpn_elemental_type", elementalType);
setStringAttribute("cat_wpn_damage.wpn_elemental_type", "@obj_attr_n:elemental_" + elementalType);
}
public String getDamageType() {
@@ -150,43 +128,26 @@ public class WeaponObject extends TangibleObject {
}
public void setDamageType(String damageType) {
setStringAttribute("cat_wpn_damage.wpn_damage_type", damageType);
setStringAttribute("cat_wpn_damage.wpn_damage_type", "@obj_attr_n:armor_eff_" + damageType);
}
public int getDamagePerSecond() {
if (getElementalType() != null)
if(getAttributes().containsKey("cat_wpn_damage.damage") && getAttributes().containsKey("cat_wpn_damage.wpn_attack_speed")) {
if (getElementalType() != null )
return (int) (((getMaxDamage() + getElementalDamage() + getMinDamage() + getElementalDamage()) / 2 + getElementalDamage()) * (1 / getAttackSpeed()));
else
return (int) (((getMaxDamage() + getMinDamage()) / 2 ) * (1 / getAttackSpeed()));
else
return (int) (((getMaxDamage() + getMinDamage()) / 2 ) * (1 / getAttackSpeed()));
} else
return 0;
}
public int getWeaponType() {
int weaponType = -1;
String template = getTemplate();
if(template == null)
return weaponType;
if(template.contains("rifle")) weaponType = 0;
if(template.contains("carbine")) weaponType = 1;
if(template.contains("pistol")) weaponType = 2;
if(template.contains("heavy")) weaponType = 12;
if(template.contains("sword") || template.contains("baton")) weaponType = 4;
if(template.contains("2h_sword") || template.contains("axe")) weaponType = 5;
if(template.contains("unarmed")) weaponType = 6;
if(template.contains("polearm") || template.contains("lance")) weaponType = 7;
if(template.contains("thrown")) weaponType = 8;
if(template.contains("lightsaber_one_handed")) weaponType = 9;
if(template.contains("lightsaber_two_handed")) weaponType = 10;
if(template.contains("lightsaber_polearm")) weaponType = 11;
if(weaponType == -1)
weaponType = 6;
return weaponType;
return Integer.parseInt(getStringAttribute("cat_wpn_damage.wpn_category").replace("@obj_attr_n:wpn_category_", ""));
}
public void setWeaponType(int weaponType) {
setStringAttribute("cat_wpn_damage.wpn_category", "@obj_attr_n:wpn_category_" + weaponType);
}
@Override
@@ -204,11 +165,15 @@ public class WeaponObject extends TangibleObject {
}
public float getAttackSpeed() {
return attackSpeed;
return getFloatAttribute("cat_wpn_damage.wpn_attack_speed");
}
public void setAttackSpeed(float attackSpeed) {
this.attackSpeed = attackSpeed;
if((int) attackSpeed != attackSpeed)
setFloatAttribute("cat_wpn_damage.wpn_attack_speed", attackSpeed);
else
setIntAttribute("cat_wpn_damage.wpn_attack_speed", (int) attackSpeed);
}
public WeaponMessageBuilder getMessageBuilder() {
@@ -216,11 +181,14 @@ public class WeaponObject extends TangibleObject {
}
public float getMaxRange() {
return maxRange;
return Float.parseFloat(getStringAttribute("cat_wpn_damage.wpn_range").replace("0-", "").replace("m", ""));
}
public void setMaxRange(float maxRange) {
this.maxRange = maxRange;
if((int) maxRange != maxRange)
setStringAttribute("cat_wpn_damage.wpn_range", "0-" + String.valueOf(maxRange) + "m");
else
setStringAttribute("cat_wpn_damage.wpn_range", "0-" + String.valueOf((int) maxRange) + "m");
}
public boolean isMelee() {
@@ -244,29 +212,5 @@ public class WeaponObject extends TangibleObject {
return false;
}
private void calculateAttackSpeed() {
int weaponType = getWeaponType();
switch(weaponType) {
case 0: attackSpeed = 0.8f; break;
case 1: attackSpeed = 0.6f; break;
case 2: attackSpeed = 0.4f; break;
case 12: attackSpeed = 1; break;
case 4: attackSpeed = 1; break;
case 5: attackSpeed = 1; break;
case 6: attackSpeed = 1; break;
case 7: attackSpeed = 1; break;
case 8: attackSpeed = 1; break;
case 9: attackSpeed = 1; break;
case 10: attackSpeed = 1; break;
case 11: attackSpeed = 1; break;
}
}
}
-6
View File
@@ -331,13 +331,7 @@ public class CharacterService implements INetworkDispatch {
object.addObjectToEquipList(appInventory);
WeaponObject defaultWeapon = (WeaponObject) core.objectService.createObject("object/weapon/creature/shared_creature_default_weapon.iff", object.getPlanet());
defaultWeapon.setDamageType("@obj_attr_n:armor_eff_kinetic");
defaultWeapon.setStringAttribute("cat_wpn_damage.damage", "0-0");
defaultWeapon.setMaxDamage(100);
defaultWeapon.setMinDamage(50);
object.addObjectToEquipList(defaultWeapon);
object._add(defaultWeapon);
object.setWeaponId(defaultWeapon.getObjectID());
+75 -36
View File
@@ -43,6 +43,7 @@ import resources.objects.deed.Player_House_Deed;
import resources.objects.player.PlayerObject;
import resources.objects.tangible.TangibleObject;
import resources.objects.tool.SurveyTool;
import resources.objects.weapon.WeaponObject;
import services.sui.SUIWindow;
import services.sui.SUIService.ListBoxType;
import services.sui.SUIWindow.SUICallback;
@@ -89,13 +90,15 @@ public class DevService implements INetworkDispatch {
suiOptions.put((long) 26, "Installations");
suiOptions.put((long) 110, "Survey Devices");
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");
//suiOptions.put((long) 120, "House Deeds");
break;
case 3: // [Items] Weapons
suiOptions.put((long) 30, "Jedi Weapons");
suiOptions.put((long) 31, "Melee Weapons");
suiOptions.put((long) 32, "Ranged Weapons");
suiOptions.put((long) 33, "Heavy Weapons");
break;
case 4: // [Items] Misc Items
suiOptions.put((long) 40, "Unity Ring");
@@ -202,26 +205,35 @@ public class DevService implements INetworkDispatch {
// [Items] Weapons
case 30: // Jedi Weapons
TangibleObject lightsaber1 = (TangibleObject) core.objectService.createObject("object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_gen5.iff", planet);
WeaponObject lightsaber1 = (WeaponObject) core.objectService.createObject("object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_gen5.iff", planet);
lightsaber1.setIntAttribute("required_combat_level", 90);
lightsaber1.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1);
lightsaber1.setStringAttribute("class_required", "Jedi");
lightsaber1.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy");
lightsaber1.setStringAttribute("cat_wpn_damage.damage", "689-1379");
lightsaber1.setAttackSpeed(1);
lightsaber1.setDamageType("energy");
lightsaber1.setMaxRange(5);
lightsaber1.setMinDamage(689);
lightsaber1.setMaxDamage(1379);
lightsaber1.setWeaponType(9);
TangibleObject lightsaber2 = (TangibleObject) core.objectService.createObject("object/weapon/melee/2h_sword/crafted_saber/shared_sword_lightsaber_two_handed_gen5.iff", planet);
WeaponObject lightsaber2 = (WeaponObject) core.objectService.createObject("object/weapon/melee/2h_sword/crafted_saber/shared_sword_lightsaber_two_handed_gen5.iff", planet);
lightsaber2.setIntAttribute("required_combat_level", 90);
lightsaber2.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1);
lightsaber2.setStringAttribute("class_required", "Jedi");
lightsaber2.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy");
lightsaber2.setStringAttribute("cat_wpn_damage.damage", "689-1379");
lightsaber2.setAttackSpeed(1);
lightsaber2.setDamageType("energy");
lightsaber2.setMaxRange(5);
lightsaber2.setMinDamage(689);
lightsaber2.setMaxDamage(1379);
lightsaber2.setWeaponType(10);
TangibleObject lightsaber3 = (TangibleObject) core.objectService.createObject("object/weapon/melee/polearm/crafted_saber/shared_sword_lightsaber_polearm_gen5.iff", planet);
WeaponObject lightsaber3 = (WeaponObject) core.objectService.createObject("object/weapon/melee/polearm/crafted_saber/shared_sword_lightsaber_polearm_gen5.iff", planet);
lightsaber3.setIntAttribute("required_combat_level", 90);
lightsaber3.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1);
lightsaber3.setStringAttribute("class_required", "Jedi");
lightsaber3.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy");
lightsaber3.setStringAttribute("cat_wpn_damage.damage", "689-1379");
lightsaber3.setAttackSpeed(1);
lightsaber3.setDamageType("energy");
lightsaber3.setMaxRange(5);
lightsaber3.setMinDamage(689);
lightsaber3.setMaxDamage(1379);
lightsaber3.setWeaponType(11);
Random random = new Random();
@@ -234,43 +246,67 @@ public class DevService implements INetworkDispatch {
inventory.add(lightsaber3);
return;
case 31: // Melee Weapons
SWGObject sword1 = core.objectService.createObject("object/weapon/melee/sword/shared_sword_01.iff", planet);
WeaponObject sword1 = (WeaponObject) core.objectService.createObject("object/weapon/melee/sword/shared_sword_01.iff", planet);
sword1.setIntAttribute("required_combat_level", 90);
sword1.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1);
sword1.setStringAttribute("class_required", "None");
sword1.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy");
sword1.setStringAttribute("cat_wpn_damage.damage", "1100-1200");
sword1.setAttackSpeed(1);
sword1.setMaxRange(5);
sword1.setDamageType("kinetic");
sword1.setMinDamage(1100);
sword1.setMaxDamage(1200);
sword1.setWeaponType(4);
inventory.add(sword1);
return;
case 32: // Ranged Weapons
SWGObject rifle1 = core.objectService.createObject("object/weapon/ranged/rifle/shared_rifle_e11.iff", planet);
WeaponObject rifle1 = (WeaponObject) core.objectService.createObject("object/weapon/ranged/rifle/shared_rifle_e11.iff", planet);
rifle1.setIntAttribute("required_combat_level", 90);
rifle1.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", (float) 0.8);
rifle1.setStringAttribute("class_required", "None");
rifle1.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy");
rifle1.setStringAttribute("cat_wpn_damage.damage", "800-1250");
rifle1.setAttackSpeed((float) 0.8);
rifle1.setMaxRange(64);
rifle1.setDamageType("energy");
rifle1.setMinDamage(800);
rifle1.setMaxDamage(1250);
rifle1.setWeaponType(0);
inventory.add(rifle1);
SWGObject pistol = core.objectService.createObject("object/weapon/ranged/pistol/shared_pistol_cdef.iff", planet);
WeaponObject carbine1 = (WeaponObject) core.objectService.createObject("object/weapon/ranged/carbine/shared_carbine_cdef.iff", planet);
carbine1.setIntAttribute("required_combat_level", 90);
carbine1.setAttackSpeed((float) 0.6);
carbine1.setMaxRange(50);
carbine1.setDamageType("energy");
carbine1.setMinDamage(600);
carbine1.setMaxDamage(937);
carbine1.setWeaponType(1);
inventory.add(carbine1);
WeaponObject pistol = (WeaponObject) core.objectService.createObject("object/weapon/ranged/pistol/shared_pistol_cdef.iff", planet);
pistol.setIntAttribute("required_combat_level", 90);
pistol.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", (float) 0.4);
pistol.setStringAttribute("class_required", "None");
pistol.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy");
pistol.setStringAttribute("cat_wpn_damage.damage", "400-559");
pistol.setAttackSpeed((float) 0.4);
pistol.setMaxRange(35);
pistol.setDamageType("energy");
pistol.setMinDamage(400);
pistol.setMaxDamage(625);
pistol.setWeaponType(2);
inventory.add(pistol);
return;
/* == Disabled until Elemental Damage is implemented. ==
SWGObject heavy = core.objectService.createObject("object/weapon/ranged/heavy/shared_som_lava_cannon_generic.iff", planet);
case 33:
WeaponObject heavy = (WeaponObject) core.objectService.createObject("object/weapon/ranged/heavy/shared_som_lava_cannon_generic.iff", planet);
heavy.setIntAttribute("required_combat_level", 90);
heavy.setFloatAttribute("cat_wpn_damage.wpn_attack_speed", 1);
heavy.setStringAttribute("class_required", "Commando");
heavy.setStringAttribute("cat_wpn_damage.wpn_damage_type", "Energy");
heavy.setStringAttribute("cat_wpn_damage.damage", "700-1400");
inventory.add(heavy);*/
heavy.setStringAttribute("class_required", "Commando");
heavy.setDamageType("kinetic");
heavy.setMinDamage(700);
heavy.setMaxDamage(1400);
heavy.setMaxRange(64);
heavy.setAttackSpeed(1);
heavy.setElementalType("heat");
heavy.setElementalDamage(200);
heavy.setWeaponType(12);
inventory.add(heavy);
return;
case 40:
TangibleObject ring = (TangibleObject) core.objectService.createObject("object/tangible/wearables/ring/shared_ring_s01.iff", planet);
@@ -1203,7 +1239,10 @@ public class DevService implements INetworkDispatch {
deed.setBMR(15);
deed.setAttributes();
inventory.add(deed);
case 125:
TangibleObject genericCraftingTool = (TangibleObject) core.objectService.createObject("object/tangible/crafting/station/shared_generic_tool.iff", planet);
genericCraftingTool.setCustomName("Generic Crafting Tool");
inventory.add(genericCraftingTool);
return;
case 130:
TangibleObject swoopDeed = (TangibleObject) core.objectService.createObject("object/tangible/deed/vehicle_deed/shared_speederbike_swoop_deed.iff", planet);
+2 -8
View File
@@ -278,14 +278,8 @@ public class EquipmentService implements INetworkDispatch {
private int getWeaponCriticalChance(CreatureObject actor, SWGObject item) {
int weaponCriticalChance = 0;
String weaponCriticalSkillMod = (core.scriptService.getMethod("scripts/equipment/", "weapon_critical", item.getStringAttribute("cat_wpn_damage.wpn_category")).__call__().asString());
if(weaponCriticalSkillMod.contains(" "))
weaponCriticalSkillMod.replace(" ", "");
if(weaponCriticalSkillMod.contains("-"))
weaponCriticalSkillMod.replace("-", "");
String weaponCriticalSkillMod = (core.scriptService.getMethod("scripts/equipment/", "weapon_critical", "weap_" + item.getStringAttribute("cat_wpn_damage.wpn_category").replace("@obj_attr_n:wpn_category_", "")).__call__().asString());
if(actor.getSkillMod(weaponCriticalSkillMod) != null)
weaponCriticalChance = actor.getSkillModBase(weaponCriticalSkillMod);
-3
View File
@@ -27,10 +27,7 @@ import java.nio.file.DirectoryStream;
import java.nio.file.DirectoryStream.Filter;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributeView;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+11 -2
View File
@@ -537,7 +537,11 @@ public class PlayerService implements INetworkDispatch {
PlayerObject player = (PlayerObject) creature.getSlottedObject("ghost");
int level = 0;
if (player == null) {
if (creature == null || player == null) {
return;
}
if (profession == null || profession.equals("")) {
return;
}
@@ -562,6 +566,7 @@ public class PlayerService implements INetworkDispatch {
}
grantLevel(creature, level);
player.setProfessionIcon(Professions.get(profession));
}
@@ -598,7 +603,11 @@ public class PlayerService implements INetworkDispatch {
//core.equipmentService.unequip(creature, equipment);
//}
core.buffService.clearBuffs(creature);
for (Buff buff : creature.getBuffList()) {
if (buff.isRemoveOnRespec()) {
core.buffService.removeBuffFromCreature(creature, buff);
}
}
try {
String[] skills;
+9
View File
@@ -763,6 +763,15 @@ public class SimulationService implements INetworkDispatch {
core.combatService.handleEndDuel(object, opponent, true);
}
}
System.out.print(object.getAttachment("activeVehicleID"));
if(object.getAttachment("activeVehicleID") != null)
{
if(object.isMounted()) object.getMountedVehicle().unmount(object);
long vehicleID = ((java.math.BigInteger) object.getAttachment("activeVehicleID")).longValue();
core.objectService.destroyObject(vehicleID);
object.setAttachment("activeVehicleID", null);
}
/*
object.createTransaction(core.getCreatureODB().getEnvironment());
-2
View File
@@ -167,8 +167,6 @@ public class SkillService implements INetworkDispatch {
creature.addAbility(ability);
}
// When leveling, add all new unadded expertise abilities
// It's up to the script to not add abilities that are already added
for (String expertiseName : creature.getSkills()) {
if (expertiseName.startsWith("expertise")) {
if (FileUtilities.doesFileExist("scripts/expertise/" + expertiseName + ".py")) {
-2
View File
@@ -51,7 +51,6 @@ import resources.objects.creature.CreatureObject;
import resources.objects.intangible.IntangibleObject;
import resources.objects.manufacture.ManufactureSchematicObject;
import resources.objects.tangible.TangibleObject;
import protocol.swg.ClientIdMsg;
import protocol.swg.auctionManagerClientListener.AuctionQueryHeadersMessage;
import protocol.swg.auctionManagerClientListener.AuctionQueryHeadersResponseMessage;
import protocol.swg.auctionManagerClientListener.BidAuctionMessage;
@@ -59,7 +58,6 @@ import protocol.swg.auctionManagerClientListener.BidAuctionResponseMessage;
import protocol.swg.auctionManagerClientListener.CancelLiveAuctionMessage;
import protocol.swg.auctionManagerClientListener.CancelLiveAuctionResponseMessage;
import protocol.swg.auctionManagerClientListener.CommoditiesItemTypeListResponse;
import protocol.swg.auctionManagerClientListener.CommoditiesResourceTypeListResponse;
import protocol.swg.auctionManagerClientListener.CreateAuctionMessage;
import protocol.swg.auctionManagerClientListener.GetAuctionDetails;
import protocol.swg.auctionManagerClientListener.GetAuctionDetailsResponse;
-5
View File
@@ -24,7 +24,6 @@ package services.chat;
import java.nio.ByteOrder;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Vector;
@@ -41,7 +40,6 @@ import engine.resources.config.Config;
import engine.resources.config.DefaultConfig;
import engine.resources.database.ObjectDatabase;
import engine.resources.objects.SWGObject;
import engine.resources.scene.Planet;
import engine.resources.scene.Point3D;
import engine.resources.service.INetworkDispatch;
import engine.resources.service.INetworkRemoteEvent;
@@ -51,7 +49,6 @@ import resources.objects.creature.CreatureObject;
import resources.objects.player.PlayerObject;
import protocol.swg.AddIgnoreMessage;
import protocol.swg.ObjControllerMessage;
import protocol.swg.chat.ChatCreateRoom;
import protocol.swg.chat.ChatDeletePersistentMessage;
import protocol.swg.chat.ChatEnterRoomById;
import protocol.swg.chat.ChatFriendsListUpdate;
@@ -59,7 +56,6 @@ import protocol.swg.chat.ChatInstantMessageToCharacter;
import protocol.swg.chat.ChatInstantMessagetoClient;
import protocol.swg.chat.ChatOnAddFriend;
import protocol.swg.chat.ChatOnChangeFriendStatus;
import protocol.swg.chat.ChatOnCreateRoom;
import protocol.swg.chat.ChatOnEnteredRoom;
import protocol.swg.chat.ChatOnSendInstantMessage;
import protocol.swg.chat.ChatOnSendPersistentMessage;
@@ -70,7 +66,6 @@ import protocol.swg.chat.ChatRequestPersistentMessage;
import protocol.swg.chat.ChatRoomList;
import protocol.swg.chat.ChatRoomMessage;
import protocol.swg.chat.ChatSendToRoom;
import protocol.swg.chat.ChatServerStatus;
import protocol.swg.chat.ChatSystemMessage;
import protocol.swg.objectControllerObjects.PlayerEmote;
import protocol.swg.objectControllerObjects.SpatialChat;
+127
View File
@@ -21,6 +21,7 @@
******************************************************************************/
package services.command;
import java.io.UnsupportedEncodingException;
import java.nio.ByteOrder;
import java.util.Map;
import java.util.Vector;
@@ -584,6 +585,132 @@ public class CommandService implements INetworkDispatch {
});
objControllerOpcodes.put(ObjControllerOpcodes.CRAFT_FILLSLOT, new INetworkRemoteEvent() {
@Override
public void handlePacket(IoSession session, IoBuffer data) throws Exception {
data.order(ByteOrder.LITTLE_ENDIAN);
Client client = core.getClient(session);
if(client == null) {
System.out.println("NULL Client");
return;
}
CommandEnqueue commandEnqueue = new CommandEnqueue();
CreatureObject actor = (CreatureObject) client.getParent();
SWGObject target = core.objectService.getObject(commandEnqueue.getTargetID());
// StringBuilder sb = new StringBuilder();
// for (byte b : data.array()) {
// sb.append(String.format("%02X ", b));
// }
// System.out.println(sb.toString());
// 05 00 46 5E CE 80 83 00 00 00 07 01 00 00 72 14
// 09 00 00 00 00 00 00 00 00 00 04 2A 09 00 00 00
// 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00
// 00 00 00 00 00 00 00 00 00 00 00 00
long playerId = data.getLong();
data.getInt(); // 00 00 00 00
long ingredientId = data.getLong();
int slotNumber = data.getInt();
int option = data.getInt();
byte sequence = data.get();
//core.craftingService.handleCraftFillSlot(playerId, ingredientId, slotNumber, option, sequence);
}
});
objControllerOpcodes.put(ObjControllerOpcodes.CRAFT_EMPTYSLOT, new INetworkRemoteEvent() {
@Override
public void handlePacket(IoSession session, IoBuffer data) throws Exception {
data.order(ByteOrder.LITTLE_ENDIAN);
Client client = core.getClient(session);
if(client == null) {
System.out.println("NULL Client");
return;
}
CommandEnqueue commandEnqueue = new CommandEnqueue();
CreatureObject actor = (CreatureObject) client.getParent();
SWGObject target = core.objectService.getObject(commandEnqueue.getTargetID());
long playerId = data.getLong();
data.getInt(); // 00 00 00 00
int slotNumber = data.getInt();
long ingredientId = data.getLong();
byte sequence = data.get();
//core.craftingService.handleCraftEmptySlot(playerId, ingredientId, slotNumber, sequence);
}
});
objControllerOpcodes.put(ObjControllerOpcodes.CRAFT_CUSTOMIZATION, new INetworkRemoteEvent() {
@Override
public void handlePacket(IoSession session, IoBuffer data) throws Exception {
data.order(ByteOrder.LITTLE_ENDIAN);
Client client = core.getClient(session);
if(client == null) {
System.out.println("NULL Client");
return;
}
long playerId = data.getLong();
data.getInt(); // 00 00 00 00 UTF-16LE
String enteredName = "";
int length = 2*data.order(ByteOrder.LITTLE_ENDIAN).getInt();
int bufferPosition = data.position();
try
{
enteredName = new String(data.array(), bufferPosition, length, "UTF-16LE");
}
catch (UnsupportedEncodingException e)
{
System.err.println("UnsupportedEncodingException while reading crafting customization name ");
}
System.err.println("enteredName " + enteredName);
data.position(bufferPosition + length);
byte modelNumber = data.get();
int schematicQuantity = data.getInt();
byte customizationList = data.get();
for (int i=0;i<(int)customizationList;i++){
int customizationSlot = data.getInt();
int customizationValue = data.getInt();
}
//core.craftingService.handleCraftCustomization(playerId,enteredName,modelNumber,schematicQuantity,customizationList);
}
});
// 05 00 46 5E CE 80 83 00 00 00 5A 01 00 00 75 59
// 0F 00 00 00 00 00 00 00 00 00 1D 00 00 00 63 00
// 72 00 61 00 66 00 74 00 69 00 6E 00 67 00 3A 00
// 5B 00 65 00 78 00 6F 00 5F 00 70 00 72 00 6F 00
// 74 00 65 00 69 00 6E 00 5F 00 77 00 61 00 66 00
// 65 00 72 00 73 00 5D 00 FF E8 03 00 00 00 00 00
// 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
// 00 00 00 00 00 00 00 00 00 00 00 00
// USTRING: CustomName
// BYTE: ModelNumber
// INT: SchematicQuantity
// BYTE: CustomizationList
// {
// INT: CustomizationSlot
// INT: CustomizationValue
// }
}
public void shutdown() {
-13
View File
@@ -37,19 +37,14 @@ import java.util.concurrent.ConcurrentHashMap;
import main.NGECore;
import protocol.swg.EnterStructurePlacementModeMessage;
import protocol.swg.SceneCreateObjectByCrc;
import protocol.swg.SceneDestroyObject;
import resources.objects.building.BuildingObject;
import resources.objects.creature.CreatureObject;
import resources.objects.deed.Harvester_Deed;
import resources.objects.deed.Player_House_Deed;
import resources.objects.harvester.HarvesterObject;
import resources.objects.player.PlayerObject;
import resources.objects.tangible.TangibleObject;
import services.sui.SUIWindow;
import services.sui.SUIWindow.SUICallback;
import services.sui.SUIWindow.Trigger;
import engine.resources.common.CRC;
import engine.resources.objects.SWGObject;
import engine.resources.scene.Point3D;
import engine.resources.scene.Quaternion;
@@ -217,7 +212,6 @@ public class HousingService implements INetworkDispatch {
Vector<String> returnList = new Vector<String>();
returnList.add("List.lstList:SelectedRow");
window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
core.suiService.closeSUIWindow(owner, 0);
@@ -225,7 +219,6 @@ public class HousingService implements INetworkDispatch {
}
});
window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
core.suiService.closeSUIWindow(owner, 0);
@@ -255,7 +248,6 @@ public class HousingService implements INetworkDispatch {
returnList.add("txtInput:LocalText");
window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
CreatureObject crafter = (CreatureObject)owner;
@@ -294,7 +286,6 @@ public class HousingService implements INetworkDispatch {
}
});
window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
core.suiService.closeSUIWindow(owner, 0);
@@ -341,7 +332,6 @@ public class HousingService implements INetworkDispatch {
returnList.add("transaction.txtInputFrom:Text");
returnList.add("transaction.txtInputTo:Text");
window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
CreatureObject crafter = (CreatureObject)owner;
@@ -355,7 +345,6 @@ public class HousingService implements INetworkDispatch {
}
});
window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
core.suiService.closeSUIWindow(owner, 0);
@@ -370,7 +359,6 @@ public class HousingService implements INetworkDispatch {
returnList.add("txtInput:LocalText");
final TangibleObject outerSurveyTool = target;
window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
core.housingService.handleSetName((CreatureObject)owner, (TangibleObject)outerSurveyTool,returnList.get(0));
@@ -429,7 +417,6 @@ public class HousingService implements INetworkDispatch {
returnList.add("List.lstList:SelectedRow");
window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
core.suiService.closeSUIWindow(owner, 0);
+31 -2
View File
@@ -100,14 +100,17 @@ import main.NGECore;
import resources.objects.Delta;
import resources.objects.building.BuildingObject;
import resources.objects.cell.CellObject;
import resources.objects.craft.DraftSchematic;
import resources.objects.creature.CreatureObject;
import resources.objects.deed.Harvester_Deed;
import resources.objects.deed.Player_House_Deed;
import resources.objects.factorycrate.FactoryCrateObject;
import resources.objects.group.GroupObject;
import resources.objects.guild.GuildObject;
import resources.objects.harvester.HarvesterObject;
import resources.objects.installation.InstallationObject;
import resources.objects.intangible.IntangibleObject;
import resources.objects.manufacture.ManufactureSchematicObject;
import resources.objects.mission.MissionObject;
import resources.objects.player.PlayerObject;
import resources.objects.resource.GalacticResource;
@@ -388,6 +391,18 @@ public class ObjectService implements INetworkDispatch {
object = new ResourceContainerObject(objectID, planet, Template, position, orientation);
} else if(Template.startsWith("object/factory/shared_factory_crate")) {
object = new FactoryCrateObject(objectID, planet, Template, position, orientation);
} else if(Template.startsWith("object/draft_schematic")) {
object = new DraftSchematic(objectID, planet, Template, position, orientation);
} else if(Template.startsWith("object/manufacture_schematic")) {
object = new ManufactureSchematicObject(objectID, planet, Template, position, orientation);
} else if(Template.startsWith("object/installation/mining_ore/construction")) {
float positionY = core.terrainService.getHeight(planet.getID(), position.x, position.z)-1f;
@@ -658,10 +673,24 @@ public class ObjectService implements INetworkDispatch {
}
public CreatureObject getCreatureFromDB(long objectId) {
return core.getCreatureODB().get(new Long(objectId), Long.class, CreatureObject.class);
CreatureObject object = core.getCreatureODB().get(new Long(objectId), Long.class, CreatureObject.class);
if (object != null && getObject(object.getObjectID()) == null) {
loadServerTemplate(object);
object.viewChildren(object, true, true, new Traverser() {
public void process(SWGObject child) {
loadServerTemplate(child);
}
});
}
return object;
}
private long generateObjectID() {
public long generateObjectID() {
/*Random random = new Random();
long objectID = random.nextInt();
@@ -43,7 +43,6 @@ import protocol.swg.EnterStructurePlacementModeMessage;
import protocol.swg.SceneCreateObjectByCrc;
import protocol.swg.SceneDestroyObject;
import protocol.swg.SceneEndBaselines;
import protocol.swg.objectControllerObjects.CommandEnqueue;
import main.NGECore;
import engine.clients.Client;
import engine.resources.common.CRC;
@@ -272,7 +271,6 @@ public class HarvesterService implements INetworkDispatch {
returnList.add("List.lstList:SelectedRow");
window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
core.suiService.closeSUIWindow(owner, 0);
@@ -319,7 +317,6 @@ public class HarvesterService implements INetworkDispatch {
returnList.add("transaction.txtInputFrom:Text");
returnList.add("transaction.txtInputTo:Text");
window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
CreatureObject crafter = (CreatureObject)owner;
@@ -334,7 +331,6 @@ public class HarvesterService implements INetworkDispatch {
}
});
window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
CreatureObject crafter = (CreatureObject)owner;
@@ -351,7 +347,6 @@ public class HarvesterService implements INetworkDispatch {
returnList.add("txtInput:LocalText");
final TangibleObject outerSurveyTool = target;
window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
core.harvesterService.handleSetName((CreatureObject)owner, (TangibleObject)outerSurveyTool,returnList.get(0));
@@ -399,7 +394,6 @@ public class HarvesterService implements INetworkDispatch {
Vector<String> returnList = new Vector<String>();
returnList.add("List.lstList:SelectedRow");
window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
core.suiService.closeSUIWindow(owner, 0);
@@ -407,7 +401,6 @@ public class HarvesterService implements INetworkDispatch {
}
});
window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
core.suiService.closeSUIWindow(owner, 0);
@@ -438,7 +431,6 @@ public class HarvesterService implements INetworkDispatch {
returnList.add("txtInput:LocalText");
window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
CreatureObject crafter = (CreatureObject)owner;
@@ -480,7 +472,6 @@ public class HarvesterService implements INetworkDispatch {
}
});
window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
core.suiService.closeSUIWindow(owner, 0);
@@ -540,7 +531,6 @@ public class HarvesterService implements INetworkDispatch {
returnList.add("transaction.txtInputFrom:Text");
returnList.add("transaction.txtInputTo:Text");
window.addHandler(0, "", Trigger.TRIGGER_OK, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
CreatureObject crafter = (CreatureObject)owner;
@@ -552,7 +542,6 @@ public class HarvesterService implements INetworkDispatch {
}
});
window.addHandler(1, "", Trigger.TRIGGER_CANCEL, returnList, new SUICallback() {
@SuppressWarnings("unchecked")
@Override
public void process(SWGObject owner, int eventType, Vector<String> returnList) {
core.suiService.closeSUIWindow(owner, 0);
-1
View File
@@ -47,7 +47,6 @@ import resources.objects.tangible.TangibleObject;
import resources.objects.weapon.WeaponObject;
import services.ai.AIActor;
import services.ai.LairActor;
import engine.resources.container.CreatureContainerPermissions;
import engine.resources.container.StaticContainerPermissions;
import engine.resources.scene.Planet;
import engine.resources.scene.Point3D;