This commit is contained in:
Light2
2013-12-28 19:17:41 +01:00
55 changed files with 1058 additions and 197 deletions
+2 -2
View File
@@ -2,13 +2,13 @@ import sys
def setup(core, actor, buff):
core.skillModService.addSkillMod(actor, 'expertise_dodge', 35)
core.skillModService.addSkillMod(actor, 'expertise_evasion_chance', 50)
core.skillModService.addSkillMod(actor, 'display_only_evasion', 5000)
core.skillModService.addSkillMod(actor, 'combat_evasion_value', 50)
return
def removeBuff(core, actor, buff):
core.skillModService.deductSkillMod(actor, 'expertise_dodge', 35)
core.skillModService.deductSkillMod(actor, 'expertise_evasion_chance', 50)
core.skillModService.deductSkillMod(actor, 'display_only_evasion', 5000)
core.skillModService.deductSkillMod(actor, 'combat_evasion_value', 50)
return
+6 -1
View File
@@ -5,7 +5,12 @@ def setup():
def run(core, actor, target, commandString):
actorGhost = actor.getSlottedObject("ghost")
chatSrvc = core.chatService
if chatSrvc and actorGhost and commandString:
chatSrvc.addFriend(actorGhost, commandString, 1)
if actorGhost.getFriendList().contains(commandString.split(" ")[0].lower()):
actor.sendSystemMessage(commandString.split(" ")[0].lower() + ' is already in your friend list.', 0)
return
else:
chatSrvc.addFriend(actorGhost, commandString)
return
+9
View File
@@ -6,5 +6,14 @@ def setup():
def run(core, actor, target, commandString):
actorGhost = actor.getSlottedObject("ghost")
chatSrvc = core.chatService
if not actorGhost and chatSrvc and commandString:
return
if actorGhost.getIgnoreList().contains(commandString.split(" ")[0].lower()):
actor.sendSystemMessage(commandString.split(' ')[0].lower() + ' is already in your ignore list.', 0)
return
chatSrvc.addToIgnoreList(actor, commandString)
return
+20
View File
@@ -0,0 +1,20 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_cooldown_line_fs_dm'):
command.setCooldown(command.getCooldown() + (actor.getSkillMod('expertise_cooldown_line_fs_dm').getBase()/10))
if actor.getSkillMod('expertise_damage_line_fs_dm'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillMod('expertise_damage_line_fs_dm').getBase())/100))
if actor.getSkillMod('expertise_critical_line_fs_dm'):
command.setCriticalChance(command.getCriticalChance() + actor.getSkillMod('expertise_critical_line_fs_dm').getBase())
if actor.getSkillMod('expertise_action_line_fs_dm'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillMod('expertise_action_line_fs_dm').getBase())/100))
return
def run(core, actor, target, commandString):
return
+20
View File
@@ -0,0 +1,20 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_cooldown_line_fs_dm'):
command.setCooldown(command.getCooldown() + (actor.getSkillMod('expertise_cooldown_line_fs_dm').getBase()/10))
if actor.getSkillMod('expertise_damage_line_fs_dm'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillMod('expertise_damage_line_fs_dm').getBase())/100))
if actor.getSkillMod('expertise_critical_line_fs_dm'):
command.setCriticalChance(command.getCriticalChance() + actor.getSkillMod('expertise_critical_line_fs_dm').getBase())
if actor.getSkillMod('expertise_action_line_fs_dm'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillMod('expertise_action_line_fs_dm').getBase())/100))
return
def run(core, actor, target, commandString):
return
+20
View File
@@ -0,0 +1,20 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_cooldown_line_fs_dm'):
command.setCooldown(command.getCooldown() + (actor.getSkillMod('expertise_cooldown_line_fs_dm').getBase()/10))
if actor.getSkillMod('expertise_damage_line_fs_dm'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillMod('expertise_damage_line_fs_dm').getBase())/100))
if actor.getSkillMod('expertise_critical_line_fs_dm'):
command.setCriticalChance(command.getCriticalChance() + actor.getSkillMod('expertise_critical_line_fs_dm').getBase())
if actor.getSkillMod('expertise_action_line_fs_dm'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillMod('expertise_action_line_fs_dm').getBase())/100))
return
def run(core, actor, target, commandString):
return
+20
View File
@@ -0,0 +1,20 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_cooldown_line_fs_dm'):
command.setCooldown(command.getCooldown() + (actor.getSkillMod('expertise_cooldown_line_fs_dm').getBase()/10))
if actor.getSkillMod('expertise_damage_line_fs_dm'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillMod('expertise_damage_line_fs_dm').getBase())/100))
if actor.getSkillMod('expertise_critical_line_fs_dm'):
command.setCriticalChance(command.getCriticalChance() + actor.getSkillMod('expertise_critical_line_fs_dm').getBase())
if actor.getSkillMod('expertise_action_line_fs_dm'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillMod('expertise_action_line_fs_dm').getBase())/100))
return
def run(core, actor, target, commandString):
return
+20
View File
@@ -0,0 +1,20 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_cooldown_line_fs_dm'):
command.setCooldown(command.getCooldown() + (actor.getSkillMod('expertise_cooldown_line_fs_dm').getBase()/10))
if actor.getSkillMod('expertise_damage_line_fs_dm'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillMod('expertise_damage_line_fs_dm').getBase())/100))
if actor.getSkillMod('expertise_critical_line_fs_dm'):
command.setCriticalChance(command.getCriticalChance() + actor.getSkillMod('expertise_critical_line_fs_dm').getBase())
if actor.getSkillMod('expertise_action_line_fs_dm'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillMod('expertise_action_line_fs_dm').getBase())/100))
return
def run(core, actor, target, commandString):
return
+20
View File
@@ -0,0 +1,20 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_cooldown_line_fs_dm'):
command.setCooldown(command.getCooldown() + (actor.getSkillMod('expertise_cooldown_line_fs_dm').getBase()/10))
if actor.getSkillMod('expertise_damage_line_fs_dm'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillMod('expertise_damage_line_fs_dm').getBase())/100))
if actor.getSkillMod('expertise_critical_line_fs_dm'):
command.setCriticalChance(command.getCriticalChance() + actor.getSkillMod('expertise_critical_line_fs_dm').getBase())
if actor.getSkillMod('expertise_action_line_fs_dm'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillMod('expertise_action_line_fs_dm').getBase())/100))
return
def run(core, actor, target, commandString):
return
+20
View File
@@ -0,0 +1,20 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_cooldown_line_fs_dm'):
command.setCooldown(command.getCooldown() + (actor.getSkillMod('expertise_cooldown_line_fs_dm').getBase()/10))
if actor.getSkillMod('expertise_damage_line_fs_dm'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillMod('expertise_damage_line_fs_dm').getBase())/100))
if actor.getSkillMod('expertise_critical_line_fs_dm'):
command.setCriticalChance(command.getCriticalChance() + actor.getSkillMod('expertise_critical_line_fs_dm').getBase())
if actor.getSkillMod('expertise_action_line_fs_dm'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillMod('expertise_action_line_fs_dm').getBase())/100))
return
def run(core, actor, target, commandString):
return
+16
View File
@@ -0,0 +1,16 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_damage_line_fs_dm'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillMod('expertise_damage_line_fs_dm').getBase())/100))
if actor.getSkillMod('expertise_critical_line_fs_dm'):
command.setCriticalChance(command.getCriticalChance() + actor.getSkillMod('expertise_critical_line_fs_dm').getBase())
if actor.getSkillMod('expertise_action_line_fs_dm'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillMod('expertise_action_line_fs_dm').getBase())/100))
return
def run(core, actor, target, commandString):
return
+16
View File
@@ -0,0 +1,16 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_damage_line_fs_dm'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillMod('expertise_damage_line_fs_dm').getBase())/100))
if actor.getSkillMod('expertise_critical_line_fs_dm'):
command.setCriticalChance(command.getCriticalChance() + actor.getSkillMod('expertise_critical_line_fs_dm').getBase())
if actor.getSkillMod('expertise_action_line_fs_dm'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillMod('expertise_action_line_fs_dm').getBase())/100))
return
def run(core, actor, target, commandString):
return
+16
View File
@@ -0,0 +1,16 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_damage_line_fs_dm'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillMod('expertise_damage_line_fs_dm').getBase())/100))
if actor.getSkillMod('expertise_critical_line_fs_dm'):
command.setCriticalChance(command.getCriticalChance() + actor.getSkillMod('expertise_critical_line_fs_dm').getBase())
if actor.getSkillMod('expertise_action_line_fs_dm'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillMod('expertise_action_line_fs_dm').getBase())/100))
return
def run(core, actor, target, commandString):
return
+16
View File
@@ -0,0 +1,16 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_damage_line_fs_dm'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillMod('expertise_damage_line_fs_dm').getBase())/100))
if actor.getSkillMod('expertise_critical_line_fs_dm'):
command.setCriticalChance(command.getCriticalChance() + actor.getSkillMod('expertise_critical_line_fs_dm').getBase())
if actor.getSkillMod('expertise_action_line_fs_dm'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillMod('expertise_action_line_fs_dm').getBase())/100))
return
def run(core, actor, target, commandString):
return
+16
View File
@@ -0,0 +1,16 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_damage_line_fs_dm'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillMod('expertise_damage_line_fs_dm').getBase())/100))
if actor.getSkillMod('expertise_critical_line_fs_dm'):
command.setCriticalChance(command.getCriticalChance() + actor.getSkillMod('expertise_critical_line_fs_dm').getBase())
if actor.getSkillMod('expertise_action_line_fs_dm'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillMod('expertise_action_line_fs_dm').getBase())/100))
return
def run(core, actor, target, commandString):
return
+16
View File
@@ -0,0 +1,16 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_damage_line_fs_dm'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillMod('expertise_damage_line_fs_dm').getBase())/100))
if actor.getSkillMod('expertise_critical_line_fs_dm'):
command.setCriticalChance(command.getCriticalChance() + actor.getSkillMod('expertise_critical_line_fs_dm').getBase())
if actor.getSkillMod('expertise_action_line_fs_dm'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillMod('expertise_action_line_fs_dm').getBase())/100))
return
def run(core, actor, target, commandString):
return
+16
View File
@@ -0,0 +1,16 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_damage_line_fs_dm'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillMod('expertise_damage_line_fs_dm').getBase())/100))
if actor.getSkillMod('expertise_critical_line_fs_dm'):
command.setCriticalChance(command.getCriticalChance() + actor.getSkillMod('expertise_critical_line_fs_dm').getBase())
if actor.getSkillMod('expertise_action_line_fs_dm'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillMod('expertise_action_line_fs_dm').getBase())/100))
return
def run(core, actor, target, commandString):
return
+18
View File
@@ -0,0 +1,18 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_cooldown_line_fs_sweep'):
command.setCooldown(command.getCooldown() + (actor.getSkillModBase('expertise_cooldown_line_fs_sweep')/10))
if actor.getSkillMod('expertise_damage_line_fs_sweep'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillModBase('expertise_damage_line_fs_sweep'))/100))
if actor.getSkillMod('expertise_action_line_fs_sweep'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillModBase('expertise_action_line_fs_sweep'))/100))
return
def run(core, actor, target, commandString):
return
+18
View File
@@ -0,0 +1,18 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_cooldown_line_fs_sweep'):
command.setCooldown(command.getCooldown() + (actor.getSkillModBase('expertise_cooldown_line_fs_sweep')/10))
if actor.getSkillMod('expertise_damage_line_fs_sweep'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillModBase('expertise_damage_line_fs_sweep'))/100))
if actor.getSkillMod('expertise_action_line_fs_sweep'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillModBase('expertise_action_line_fs_sweep'))/100))
return
def run(core, actor, target, commandString):
return
+18
View File
@@ -0,0 +1,18 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_cooldown_line_fs_sweep'):
command.setCooldown(command.getCooldown() + (actor.getSkillModBase('expertise_cooldown_line_fs_sweep')/10))
if actor.getSkillMod('expertise_damage_line_fs_sweep'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillModBase('expertise_damage_line_fs_sweep'))/100))
if actor.getSkillMod('expertise_action_line_fs_sweep'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillModBase('expertise_action_line_fs_sweep'))/100))
return
def run(core, actor, target, commandString):
return
+18
View File
@@ -0,0 +1,18 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_cooldown_line_fs_sweep'):
command.setCooldown(command.getCooldown() + (actor.getSkillModBase('expertise_cooldown_line_fs_sweep')/10))
if actor.getSkillMod('expertise_damage_line_fs_sweep'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillModBase('expertise_damage_line_fs_sweep'))/100))
if actor.getSkillMod('expertise_action_line_fs_sweep'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillModBase('expertise_action_line_fs_sweep'))/100))
return
def run(core, actor, target, commandString):
return
+18
View File
@@ -0,0 +1,18 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_cooldown_line_fs_sweep'):
command.setCooldown(command.getCooldown() + (actor.getSkillModBase('expertise_cooldown_line_fs_sweep')/10))
if actor.getSkillMod('expertise_damage_line_fs_sweep'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillModBase('expertise_damage_line_fs_sweep'))/100))
if actor.getSkillMod('expertise_action_line_fs_sweep'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillModBase('expertise_action_line_fs_sweep'))/100))
return
def run(core, actor, target, commandString):
return
+18
View File
@@ -0,0 +1,18 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_cooldown_line_fs_sweep'):
command.setCooldown(command.getCooldown() + (actor.getSkillModBase('expertise_cooldown_line_fs_sweep')/10))
if actor.getSkillMod('expertise_damage_line_fs_sweep'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillModBase('expertise_damage_line_fs_sweep'))/100))
if actor.getSkillMod('expertise_action_line_fs_sweep'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillModBase('expertise_action_line_fs_sweep'))/100))
return
def run(core, actor, target, commandString):
return
+18
View File
@@ -0,0 +1,18 @@
import sys
def setup(core, actor, target, command):
if actor.getSkillMod('expertise_cooldown_line_fs_sweep'):
command.setCooldown(command.getCooldown() + (actor.getSkillModBase('expertise_cooldown_line_fs_sweep')/10))
if actor.getSkillMod('expertise_damage_line_fs_sweep'):
command.setAddedDamage(command.getAddedDamage() + ((command.getAddedDamage() * actor.getSkillModBase('expertise_damage_line_fs_sweep'))/100))
if actor.getSkillMod('expertise_action_line_fs_sweep'):
command.setActionCost(command.getActionCost() - ((command.getActionCost() * actor.getSkillModBase('expertise_action_line_fs_sweep'))/100))
return
def run(core, actor, target, commandString):
return
+26 -3
View File
@@ -1,3 +1,5 @@
from resources.objects.waypoint import WaypointObject
from engine.resources.common import CRC
import sys
def setup():
@@ -11,8 +13,29 @@ def run(core, actor, target, commandString):
friendObj = core.chatService.getObjectByFirstName(friend)
if friendObj is not None:
if friendObj.getSlottedObject('ghost').getFriendList().contains(actor.getCustomName().lower().split(' ')[0]):
fPos = friendObj.getPosition()
core.commandService.callCommand(actor, 'waypoint', None, friendObj.getPlanet().name + ' ' + str(fPos.x) + ' ' + str(fPos.z) + ' ' + str(fPos.y) + ' blue ' + friendObj.getCustomName())
createWaypoint(core, actor, friendObj)
return
return
return
return
def createWaypoint(core, actor, friendObj):
ghost = actor.getSlottedObject('ghost')
friendName = friendObj.getCustomName().split(' ')[0]
wp = WaypointObject()
for wp in ghost.getWaypoints():
if wp.getName() == friendName and wp.getPlanet() == friendObj.getPlanet():
core.commandService.callCommand(actor, 'serverdestroyobject', wp, '')
break
waypoint = core.objectService.createObject('object/waypoint/shared_waypoint.iff', friendObj.getPlanet(), friendObj.getWorldPosition().x, friendObj.getWorldPosition().z, friendObj.getWorldPosition().y)
waypoint.setName(friendName)
waypoint.setActive(True)
waypoint.setColor(WaypointObject.YELLOW)
waypoint.setName(friendName)
waypoint.setPlanetCRC(CRC.StringtoCRC(friendObj.getPlanet().name))
waypoint.setStringAttribute('', '')
ghost.waypointAdd(waypoint)
actor.sendSystemMessage('A waypoint has been created in your datapad at the location.', 0)
return
+3 -3
View File
@@ -5,7 +5,7 @@ def setup():
return
def run(core, actor, target, commandString):
ghost = actor.getSlottedObject('ghost')
friendsListMessage = ChatOnGetFriendsList(ghost)
actor.getClient().getSession().write(friendsListMessage.serialize())
#ghost = actor.getSlottedObject('ghost')
#friendsListMessage = ChatOnGetFriendsList(ghost)
#actor.getClient().getSession().write(friendsListMessage.serialize())
return
-1
View File
@@ -6,6 +6,5 @@ def setup():
def run(core, actor, target, commandString):
ghost = actor.getSlottedObject('ghost')
print ('Command recieved!')
ghost.toggleFlag(PlayerFlags.LFG)
return
+3
View File
@@ -6,6 +6,9 @@ def setup():
def run(core, actor, target, commandString):
##To do make it reset moodanimations when meditation is cancled.
if core.collectionService.isComplete(actor, 'inv_holocron_collection_02') is False:
return
if actor.getPosture() != 0x08:
actor.sendSystemMessage('You need to sit',0)
actor.setMoodAnimation('neutral')
+2 -2
View File
@@ -1,4 +1,4 @@
from resources.common import PlayerFlags
from resources.datatables import PlayerFlags
import sys
def setup():
@@ -7,4 +7,4 @@ def setup():
def run(core, actor, target, commandString):
ghost = actor.getSlottedObject('ghost')
ghost.toggleFlag(PlayerFlags.AFK)
return
return
@@ -1,4 +1,4 @@
from resources.common import PlayerFlags
from resources.datatables import PlayerFlags
import sys
def setup():
@@ -7,4 +7,4 @@ def setup():
def run(core, actor, target, commandString):
ghost = actor.getSlottedObject('ghost')
ghost.toggleFlag(PlayerFlags.FACTIONRANK)
return
return
+3
View File
@@ -4,6 +4,9 @@ def setup():
return
def run(core, actor, target, commandString):
if core.equipmentService.canEquip(actor, target) is False:
return
parsedMsg = commandString.split(' ', 3)
objService = core.objectService
containerID = long(parsedMsg[1])
+3
View File
@@ -4,6 +4,9 @@ def setup():
return
def run(core, actor, target, commandString):
if core.equipmentService.canEquip(actor, target) is False:
return
parsedMsg = commandString.split(' ', 3)
objService = core.objectService
containerID = long(parsedMsg[1])
+3
View File
@@ -4,6 +4,9 @@ def setup():
return
def run(core, actor, target, commandString):
if core.equipmentService.canEquip(actor, target) is False:
return
parsedMsg = commandString.split(' ', 3)
objService = core.objectService
containerID = long(parsedMsg[1])
+6 -3
View File
@@ -22,7 +22,7 @@ def run(core, actor, target, commandString):
planet = core.terrainService.getPlanetByName(commandArgs[0])
waypoint = core.objectService.createObject('object/waypoint/shared_waypoint.iff', planet, float(commandArgs[1]), float(commandArgs[2]), float(commandArgs[3]))
waypoint.setActive(True)
waypoint.setColor(colorCheck(core, actor, target, commandString, commandArgs[4]))
waypoint.setColor(colorCheck(commandArgs[4]))
name = commandString.split(" ", 5)
waypoint.setName(name[5])
waypoint.setPlanetCRC(crc.StringtoCRC(planet.getName()))
@@ -89,7 +89,10 @@ def run(core, actor, target, commandString):
waypoint = core.objectService.createObject('object/waypoint/shared_waypoint.iff', actor.getPlanet(), actor.getWorldPosition().x, actor.getWorldPosition().z, actor.getWorldPosition().y)
waypoint.setActive(True)
waypoint.setColor(WaypointObject.BLUE)
waypoint.setName(commandString)
if commandString == '':
waypoint.setName(actor.getPlanet().name.capitalize())
else:
waypoint.setName(commandString)
waypoint.setPlanetCRC(crc.StringtoCRC(actor.getPlanet().getName()))
waypoint.setStringAttribute('', '') # This simply allows the attributes to display (nothing else has to be done)
actorPlayer.waypointAdd(waypoint)
@@ -98,7 +101,7 @@ def run(core, actor, target, commandString):
return
def colorCheck(core, actor, target, commandString, validcolors):
def colorCheck(validcolors):
if validcolors == "blue":
return WaypointObject.BLUE
if validcolors == "green":
@@ -0,0 +1,13 @@
import sys
def setup(core, object):
object.setStfFilename('static_item_n')
object.setStfName('item_npe_fs_robe_02_02')
object.setDetailFilename('static_item_d')
object.setDetailName('item_npe_fs_robe_02_02')
object.setIntAttribute('cat_stat_mod_bonus.@stat_n:constitution_modified', 21)
object.setStringAttribute('protection_level', 'Faint')
object.setStringAttribute('class_required', 'Jedi')
object.setIntAttribute('required_combat_level', 20)
return
@@ -0,0 +1,12 @@
import sys
def setup(core, object):
object.setCustomName('First Generation Lightsaber')
object.setFloatAttribute('cat_wpn_damage.wpn_attack_speed', 1)
object.setStringAttribute('class_required', 'Jedi')
object.setStringAttribute('cat_wpn_damage.wpn_damage_type', 'Energy')
object.setStringAttribute('cat_wpn_damage.damage', '200-400')
## finish this ##
return
+6 -1
View File
@@ -1,4 +1,9 @@
import sys
def get(name):
return ""
if name == 'item_npe_fs_robe_02_02':
return "object/tangible/wearables/robe/shared_robe_jedi_padawan.iff"
if name == 'weapon_roadmap_lightsaber_02_02':
return "object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_s1.iff"
+49
View File
@@ -0,0 +1,49 @@
import sys
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
#Nym's Stronghold -Fingies
#Outside
nymtech = stcSvc.spawnObject('object/mobile/shared_dressed_nym_technician_2.iff', 'lok', long(0), float(372.87), float(11.99), float(4984.83), float(0.97), float(-0.21))
nymtech.setCustomName2('Nym\'s Fuel Technician')
disgrunt1 = stcSvc.spawnObject('object/mobile/shared_nym_themepark_d_townsperson_lead.iff', 'lok', long(0), float(473.28), float(23.00), float(4945.03), float(0.043), float(0.99))
disgrunt1.setCustomName2('a disgruntled townsperson')
guard1 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_guard_weak_nikto_m.iff', 'lok', long(0), float(472.82), float(22.57), float(4920.00), float(0), float(0))
guard1.setCustomName2('Nym\'s Guard')
guard2 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_guard_weak_hum_m.iff', 'lok', long(0), float(480.74), float(22.64), float(4920.02), float(0), float(0))
guard2.setCustomName2('Nym\'s Guard')
#Nym's Palace - Interior
brawl1 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_brawler_hum_f.iff', 'lok', long(6595511), float(5.7), float(1.3), float(-6.1), float(0.90), float(-0.42))
brawl1.setCustomName2('Nym\'s Brawler')
surv1 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_surveyer_rod_m.iff', 'lok', long(6595511), float(4.5), float(1.3), float(-4.1), float(0.078), float(-0.99))
surv1.setCustomName2('Nym\'s Surveyor')
bodyg1 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_bodyguard_hum_m.iff', 'lok', long(6595511), float(7.8), float(1.3), float(-6.8), float(0.782), float(0.622))
bodyg1.setCustomName2('Nym\'s Bodyguard')
mako = stcSvc.spawnObject('object/mobile/shared_nym_themepark_mako_ghast.iff', 'lok', long(6595511), float(5.5), float(4.1), float(-13.9), float(0.309), float(0.951))
mako.setCustomName2('Mako Ghast')
bodyg2 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_bodyguard_rod_m.iff', 'lok', long(6595511), float(0.3), float(1.3), float(3.2), float(0.707), float(0.707))
bodyg2.setCustomName2('Nym\'s Bodyguard')
bodyg3 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_bodyguard_rod_m.iff', 'lok', long(6595511), float(-1.6), float(1.3), float(3.0), float(0.707), float(-0.707))
bodyg3.setCustomName2('Nym\'s Bodyguard')
surv2 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_surveyer_rod_m.iff', 'lok', long(6595511), float(-9.1), float(1.3), float(-5.9), float(1), float(0))
surv2.setCustomName2('Nym\'s Surveyor')
brawl2 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_brawler_tran_m.iff', 'lok', long(6595511), float(-9.1), float(1.3), float(-3.1), float(0.0087), float(0.999))
brawl2.setCustomName2('Nym\'s Brawler')
guard3 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_guard_weak_hum_m.iff', 'lok', long(6595511), float(-19.7), float(2.3), float(-17.6), float(0.999), float(0.0087))
guard3.setCustomName2('Nym\'s Guard')
creep1 = stcSvc.spawnObject('object/mobile/shared_slicer_kelson_sharphorn.iff', 'lok', long(6595511), float(-4.2), float(2.3), float(7.6), float(0.0174), float(0.9998))
creep1.setCustomName2('Kelson Sharphorn')
guard4 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_guard_weak_hum_m.iff', 'lok', long(6595511), float(24.8), float(2.3), float(7.9), float(0.0174), float(0.9998))
guard4.setCustomName2('Nym\'s Guard')
guard5 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_guard_weak_hum_m.iff', 'lok', long(6595511), float(3.7), float(4.1), float(-9.5), float(0.9998), float(0.0174))
guard5.setCustomName2('Nym\'s Guard')
guard6 = stcSvc.spawnObject('object/mobile/shared_dressed_nym_guard_weak_rod_m.iff', 'lok', long(6595511), float(-3.7), float(4.1), float(-9.5), float(1), float(0))
guard6.setCustomName2('Nym\'s Guard')
+170
View File
@@ -1,8 +1,11 @@
import sys
from resources.datatables import Options
from resources.datatables import StateStatus
def addPlanetSpawns(core, planet):
stcSvc = core.staticService
# Wayfar Life Day, by Wefi
stcSvc.spawnObject('object/mobile/shared_lifeday_saun_dann.iff', 'tatooine', long(0), float(-5037.00), float(75), float(-6561), float(-0.75), float(0)) # Life Day
stcSvc.spawnObject('object/tangible/holiday/life_day/shared_main_lifeday_tree.iff', 'tatooine', long(0), float(-5043.00), float(75), float(-6541.00), float(0.999132931232), float(-0.0416347384453)) # Lifeday Tree
@@ -17,6 +20,173 @@ def addPlanetSpawns(core, planet):
bandtat4.setCustomName2('Sunil Eide')
stcSvc.spawnObject('object/tangible/instrument/shared_nalargon.iff', 'tatooine', long(0), float(-5045.00), float(75), float(-6555), float(0.999132931232), float(-0.0416347384453)) # Drums
stcSvc.spawnObject('object/tangible/instrument/shared_ommni_box.iff', 'tatooine', long(0), float(-5043.00), float(75), float(-6559), float(0.999132931232), float(-0.0416347384453)) # Box
# Mos Eisley Spawns: WORK IN PROGRESS by Levarris
#Cantina Interior
wuher = stcSvc.spawnObject('object/mobile/shared_wuher.iff', 'tatooine', long(1082877), float(8.6), float(-0.9), float(0.4), float(0.71), float(0.71))
wuher.setCustomName2('Wuher')
wuher.addOption(Options.INVULNERABLE)
wuher.setStateBitmask(StateStatus.SittingOnChair)
chadraFanFemale = stcSvc.spawnObject('object/mobile/shared_chadra_fan_female.iff', 'tatooine', long(1082877), float(10.6), float(-0.9), float(-1.5), float(0.42), float(0.90))
chadraFanFemale.setCustomName2('a Chadra Fan Female')
chadraFanMale = stcSvc.spawnObject('object/mobile/shared_chadra_fan_male.iff', 'tatooine', long(1082877), float(10.7), float(-0.9), float(-0.3), float(0.64), float(0.77))
chadraFanMale.setCustomName2('a Chadra Fan Male')
muftak = stcSvc.spawnObject('object/mobile/shared_muftak.iff', 'tatooine', long(1082877), float(20.3), float(-0.9), float(4.9), float(0.82), float(0.57))
muftak.setCustomName2('Muftak')
chissMale1 = stcSvc.spawnObject('object/mobile/ep3/shared_ep3_etyyy_chiss_poacher_01.iff', 'tatooine', long(1082877), float(1.7), float(-0.9), float(-5.0), float(0.71), float(0.71))
chissMale1.setCustomName2('a Chiss Male')
chissMale2 = stcSvc.spawnObject('object/mobile/ep3/shared_ep3_etyyy_chiss_poacher_02.iff', 'tatooine', long(1082877), float(3.4), float(-0.9), float(-4.8), float(0), float(0))
chissMale2.setCustomName2('a Chiss Male')
cantinaStorm = stcSvc.spawnObject('object/mobile/shared_stormtrooper.iff', 'tatooine', long(1082877), float(2.9), float(-0.9), float(-6.5), float(0.71), float(0.71))
cantinaStorm.setCustomName2('a Stormtrooper')
cantinaStormL = stcSvc.spawnObject('object/mobile/shared_stormtrooper_groupleader.iff', 'tatooine', long(1082877), float(3.6), float(-0.9), float(-7.9), float(0.71), float(0.71))
cantinaStormL.setCustomName2('a Stormtrooper Squad Leader')
figrinDan = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(3.7), float(-0.9), float(-14.4), float(0.42), float(0.91))
figrinDan.setCustomName2('Figrin Dan')
techMor = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(4.0), float(-0.9), float(-17.0), float(0.42), float(0.91))
techMor.setCustomName2('Tech M\'or')
doikkNats = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(2.2), float(-0.9), float(-16.4), float(0.42), float(0.91))
doikkNats.setCustomName2('Doikk Na\'ts')
tednDahai = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(1.3), float(-0.9), float(-15.2), float(0.42), float(0.91))
tednDahai.setCustomName2('Tedn Dahai')
nalanCheel = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_figrin_dan.iff', 'tatooine', long(1082880), float(0.5), float(-0.9), float(-17.1), float(0.42), float(0.91))
nalanCheel.setCustomName2('Nalan Cheel')
businessman1 = stcSvc.spawnObject('object/mobile/shared_dressed_businessman_human_male_01.iff', 'tatooine', long(1082877), float(10.7), float(-0.9), float(1.9), float(0.42), float(0.91))
businessman1.setCustomName2('a Businessman')
commoner1 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_aqualish_male_01.iff', 'tatooine', long(1082877), float(10.3), float(-0.9), float(2.7), float(0.42), float(0.91))
commoner1.setCustomName2('a Commoner')
entertainer1 = stcSvc.spawnObject('object/mobile/shared_dressed_entertainer_trainer_twk_female_01.iff', 'tatooine', long(1082877), float(9.4), float(-0.9), float(3.9), float(0.42), float(0.91))
entertainer1.setCustomName2('an Entertainer')
noble1 = stcSvc.spawnObject('object/mobile/shared_dressed_noble_trandoshan_male_01.iff', 'tatooine', long(1082877), float(8.6), float(-0.9), float(4.8), float(0.42), float(0.91))
noble1.setCustomName2('a Noble')
commoner2 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_trandoshan_female_01.iff', 'tatooine', long(1082877), float(4.1), float(-0.9), float(5.7), float(0.42), float(0.91))
commoner2.setCustomName2('a Commoner')
commoner3 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_bothan_female_01.iff', 'tatooine', long(1082877), float(3.1), float(-0.9), float(5.9), float(0.42), float(0.91))
commoner3.setCustomName2('a Commoner')
commoner4 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_fat_twilek_male_01.iff', 'tatooine', long(1082877), float(1.7), float(-0.9), float(6.0), float(0.42), float(0.91))
commoner4.setCustomName2('a Commoner')
commoner5 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_bothan_male_01.iff', 'tatooine', long(1082877), float(-0.4), float(-0.9), float(5.9), float(0.42), float(0.91))
commoner5.setCustomName2('a Commoner')
commoner6 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_05.iff', 'tatooine', long(1082877), float(16.0), float(-0.9), float(4.1), float(0.42), float(0.91))
commoner6.setCustomName2('a Commoner')
commoner7 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_fat_zabrak_male_01.iff', 'tatooine', long(1082877), float(8.8), float(-0.9), float(-6.0), float(0.42), float(0.91))
commoner7.setCustomName2('a Patron')
commoner8 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_08.iff', 'tatooine', long(1082877), float(6.8), float(-0.9), float(-6.5), float(0.42), float(0.91))
commoner8.setCustomName2('a Patron')
commoner9 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_aqualish_male_09.iff', 'tatooine', long(1082877), float(1.1), float(-0.9), float(-7.7), float(0.42), float(0.91))
commoner9.setCustomName2('a Commoner')
commoner10 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_nikto_male_04.iff', 'tatooine', long(1082877), float(2.1), float(-0.9), float(-8.4), float(0.42), float(0.91))
commoner10.setCustomName2('a Commoner')
#Starport Interior
#City Hall Interior
#Lucky Despot Interior
#Medical Center Interior
#Theater Interior
#Miscellaneous Building Interiors
#Outside
businessman2 = stcSvc.spawnObject('object/mobile/shared_dressed_businessman_human_male_01.iff', 'tatooine', long(0), float(3532.7), float(5.0), float(-4788.1), float(0), float(0))
businessman2.setCustomName2('a Businessman')
noble2 = stcSvc.spawnObject('object/mobile/shared_dressed_noble_human_female_01.iff', 'tatooine', long(0), float(3542.3), float(5.0), float(-4826.0), float(0.42), float(0.91))
noble2.setCustomName2('a Noble')
commoner11 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_human_male_06.iff', 'tatooine', long(0), float(3529.1), float(5.0), float(-4900.4), float(0.42), float(0.91))
commoner11.setCustomName2('a Commoner')
businessman3 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_trandoshan_male_02.iff', 'tatooine', long(0), float(3532.7), float(5.0), float(-4788.1), float(0), float(0))
businessman3.setCustomName2('a Businessman')
jawa1 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3663.3), float(5.0), float(-4858.6), float(0), float(0))
jawa1.setCustomName2('a Jawa')
commoner12 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_moncal_male_01.iff', 'tatooine', long(0), float(3532.7), float(5.0), float(-4788.1), float(0), float(0))
commoner12.setCustomName2('a Scientist')
commoner13 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_naboo_zabrak_female_02.iff', 'tatooine', long(0), float(3559.7), float(5.0), float(-4725.9), float(0), float(0))
commoner13.setCustomName2('a Commoner')
commoner14 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_devaronian_male_01.iff', 'tatooine', long(0), float(3527.7), float(5.0), float(-4721.1), float(0), float(0))
commoner14.setCustomName2('a Commoner')
commoner15 = stcSvc.spawnObject('object/mobile/shared_dressed_commoner_tatooine_aqualish_female_01.iff', 'tatooine', long(0), float(3513.7), float(5.0), float(-4740.4), float(0), float(0))
commoner15.setCustomName2('a Commoner')
ltHarburik = stcSvc.spawnObject('object/mobile/tatooine_npc/shared_lt_harburik.iff', 'tatooine', long(0), float(3485.4), float(5.0), float(-4788.1), float(0), float(0))
ltHarburik.setCustomName2('Lieutenant Harburik')
jawa2 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3475.4), float(5.0), float(-4852.7), float(0), float(0))
jawa2.setCustomName2('a Jawa')
jawa3 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3469.3), float(5.0), float(-4861.5), float(0), float(0))
jawa3.setCustomName2('a Jawa')
jawa4 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3486.1), float(5.0), float(-4884.7), float(0), float(0))
jawa4.setCustomName2('a Jawa')
jawa5 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3487.1), float(5.0), float(-4886.0), float(0), float(0))
jawa5.setCustomName2('a Jawa')
jawa6 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3488.8), float(5.0), float(-4884.4), float(0), float(0))
jawa6.setCustomName2('a Jawa')
jawa7 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3472.2), float(5.0), float(-4918.4), float(0), float(0))
jawa7.setCustomName2('a Jawa')
jawa8 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3471.4), float(5.0), float(-4919.5), float(0), float(0))
jawa8.setCustomName2('a Jawa')
jawa9 = stcSvc.spawnObject('object/mobile/shared_jawa.iff', 'tatooine', long(0), float(3470.3), float(5.0), float(-4918.7), float(0), float(0))
jawa9.setCustomName2('a Jawa')
bib = stcSvc.spawnObject('object/mobile/shared_bib_fortuna.iff', 'tatooine', long(0), float(3552.4), float(5.0), float(-4933.2), float(0), float(0))
bib.setCustomName2('Bib Fortuna')
# Mos Espa NPC Spawns
# Mos Entha NPC Spawns
# Bestine NPC Spawns
# Anchorhead NPC Spawns
# Mos Taike NPC Spawns
# Wayfar NPC Spawns
# Jabba's Palace Theme Park Spawns
return
+2 -6
View File
@@ -29,12 +29,8 @@ public class ChatFriendsListUpdate extends SWGMessage {
@Override
public IoBuffer serialize() {
Config config = new Config();
config.setFilePath("nge.cfg");
if (!(config.loadConfigFile())) {
config = DefaultConfig.getConfig();
}
String serverName = config.getString("GALAXY_NAME");
String serverName = NGECore.getInstance().getConfig().getString("GALAXY_NAME");
IoBuffer result = IoBuffer.allocate(50 + friendName.length()).order(ByteOrder.LITTLE_ENDIAN);
result.putShort((short) 3);
+2 -3
View File
@@ -9,6 +9,7 @@ import org.apache.mina.core.buffer.IoBuffer;
import resources.objects.player.PlayerObject;
// This is possibly unused
public class ChatOnGetFriendsList extends SWGMessage {
private List<String> friendList;
@@ -24,8 +25,7 @@ public class ChatOnGetFriendsList extends SWGMessage {
}
@Override
public void deserialize(IoBuffer data) {
// XXX Auto-generated method stub
}
@Override
@@ -51,7 +51,6 @@ public class ChatOnGetFriendsList extends SWGMessage {
int size = buffer.position();
buffer = IoBuffer.allocate(size).put(buffer.array(), 0, size);
buffer.flip();
//System.out.println("ChatOnGetFriendsList: " + buffer.getHexDump());
return buffer;
}
@@ -22,12 +22,12 @@
package resources.objects.player;
import java.nio.ByteOrder;
import java.util.List;
import java.util.Map.Entry;
import org.apache.mina.core.buffer.IoBuffer;
import engine.resources.common.CRC;
import resources.objects.ObjectMessageBuilder;
import resources.objects.waypoint.WaypointObject;
@@ -251,7 +251,7 @@ public class PlayerMessageBuilder extends ObjectMessageBuilder {
if(player.getFriendList().isEmpty()) {
buffer.putInt(0);
buffer.putInt(0);
buffer.putInt(0);
} else {
buffer.putInt(player.getFriendList().size());
buffer.putInt(player.getFriendListUpdateCounter());
@@ -261,7 +261,6 @@ public class PlayerMessageBuilder extends ObjectMessageBuilder {
for(String friend : player.getFriendList()) {
buffer.put(getAsciiString(friend));
}
}
}
@@ -515,60 +514,70 @@ public class PlayerMessageBuilder extends ObjectMessageBuilder {
}
public IoBuffer buildFriendAddDelta(String friend) {
public IoBuffer buildFriendAddDelta(List<String> friends) {
IoBuffer buffer = bufferPool.allocate(13 + (friends.size() * 2), false).order(ByteOrder.LITTLE_ENDIAN);
buffer.setAutoExpand(true);
IoBuffer buffer = bufferPool.allocate(13 + friend.length(), false).order(ByteOrder.LITTLE_ENDIAN);
PlayerObject player = (PlayerObject) object;
buffer.putInt(1);
buffer.putInt(player.getFriendListUpdateCounter());
buffer.put((byte) 1); // updateType (SubType)
buffer.put((byte) 3); // updateType (SubType)
buffer.putShort((short) player.getFriendList().indexOf(friend));
buffer.put(getAsciiString(friend));
buffer.putShort((short) (player.getFriendList().size()));
for (String f : friends) {
buffer.put(getAsciiString(f));
}
int size = buffer.position();
buffer.flip();
buffer = createDelta("PLAY", (byte) 9, (short) 1, (short) 7, buffer, size + 4);
return buffer;
}
public IoBuffer buildFriendRemoveDelta(String friend) {
IoBuffer buffer = bufferPool.allocate(11, false).order(ByteOrder.LITTLE_ENDIAN);
PlayerObject player = (PlayerObject) object;
buffer.putInt(1);
buffer.putInt(player.getFriendListUpdateCounter());
buffer.put((byte) 0); // updateType (SubType)
return buffer;
buffer.putShort((short) player.getFriendList().indexOf(friend));
}
public IoBuffer buildFriendRemoveDelta(List<String> friends) {
IoBuffer buffer = bufferPool.allocate(13 + (friends.size() * 2), false).order(ByteOrder.LITTLE_ENDIAN);
PlayerObject player = (PlayerObject) object;
buffer.putInt(1);
buffer.putInt(player.getFriendListUpdateCounter());
buffer.put((byte) 3); // updateType (SubType)
buffer.putShort((short) friends.size());
for (String f : friends) {
buffer.put(getAsciiString(f));
}
int size = buffer.position();
buffer.flip();
buffer = createDelta("PLAY", (byte) 9, (short) 1, (short) 7, buffer, size + 4);
return buffer;
}
public IoBuffer buildIgnoreAddDelta(String ignoreName) {
IoBuffer buffer = bufferPool.allocate(30, false).order(ByteOrder.LITTLE_ENDIAN);
public IoBuffer buildIgnoreAddDelta(List<String> ignoreList) {
IoBuffer buffer = bufferPool.allocate(13 + (ignoreList.size() * 2) , false).order(ByteOrder.LITTLE_ENDIAN);
buffer.setAutoExpand(true);
PlayerObject player = (PlayerObject) object;
buffer.putInt(1);
buffer.putInt(player.getIgnoreListUpdateCounter());
buffer.put((byte) 1); // updateType (SubType)
buffer.put((byte) 3); // updateType (SubType)
buffer.putShort((short) player.getIgnoreList().indexOf(ignoreName));
buffer.put(getAsciiString(ignoreName));
buffer.putShort((short) ignoreList.size());
for (String ignore : ignoreList) {
buffer.put(getAsciiString(ignore));
}
int size = buffer.position();
buffer.flip();
@@ -578,15 +587,20 @@ public class PlayerMessageBuilder extends ObjectMessageBuilder {
return buffer;
}
public IoBuffer buildIgnoreRemoveDelta(String removeName) {
IoBuffer buffer = bufferPool.allocate(30, false).order(ByteOrder.LITTLE_ENDIAN);
public IoBuffer buildIgnoreRemoveDelta(List<String> ignoreList) {
IoBuffer buffer = bufferPool.allocate(13 + (ignoreList.size() * 2) , false).order(ByteOrder.LITTLE_ENDIAN);
buffer.setAutoExpand(true);
PlayerObject player = (PlayerObject) object;
buffer.putInt(1);
buffer.putInt(player.getIgnoreListUpdateCounter());
buffer.put((byte) 0);
buffer.putShort((short) player.getIgnoreList().indexOf(removeName));
buffer.put((byte) 3); // updateType (SubType)
buffer.putShort((short) ignoreList.size());
for (String ignore : ignoreList) {
buffer.put(getAsciiString(ignore));
}
int size = buffer.position();
buffer.flip();
@@ -427,7 +427,7 @@ public class PlayerObject extends IntangibleObject {
synchronized(objectMutex) {
setFriendListUpdateCounter(getFriendListUpdateCounter() + 1);
friendList.add(friend);
getContainer().getClient().getSession().write(messageBuilder.buildFriendAddDelta(friend));
getContainer().getClient().getSession().write(messageBuilder.buildFriendAddDelta(getFriendList()));
}
}
@@ -435,7 +435,7 @@ public class PlayerObject extends IntangibleObject {
synchronized(objectMutex) {
setFriendListUpdateCounter(getFriendListUpdateCounter() + 1);
friendList.remove(friend);
getContainer().getClient().getSession().write(messageBuilder.buildFriendRemoveDelta(friend));
getContainer().getClient().getSession().write(messageBuilder.buildFriendRemoveDelta(getFriendList()));
}
}
@@ -452,16 +452,16 @@ public class PlayerObject extends IntangibleObject {
public void ignoreAdd(String ignoreName) {
synchronized(objectMutex) {
setIgnoreListUpdateCounter(getIgnoreListUpdateCounter() + 1);
getContainer().getClient().getSession().write(messageBuilder.buildIgnoreAddDelta(ignoreName));
ignoreList.add(ignoreName);
getContainer().getClient().getSession().write(messageBuilder.buildIgnoreAddDelta(getIgnoreList()));
}
}
public void ignoreRemove(String removeName) {
synchronized(objectMutex) {
setIgnoreListUpdateCounter(getIgnoreListUpdateCounter() + 1);
getContainer().getClient().getSession().write(messageBuilder.buildIgnoreRemoveDelta(removeName));
ignoreList.remove(removeName);
getContainer().getClient().getSession().write(messageBuilder.buildIgnoreRemoveDelta(getIgnoreList()));
}
}
@@ -147,6 +147,12 @@ public class TangibleObject extends SWGObject {
}
}
public boolean getOption(int option) {
synchronized(objectMutex) {
return ((optionsBitmask & option) == option);
}
}
public void addOption(int option) {
setOptionsBitmask(getOptionsBitmask() | option);
}
+29
View File
@@ -461,5 +461,34 @@ public class CharacterService implements INetworkDispatch {
}
return characters;
}
/**
* Checks the database for if the name of the player exists. The name is
* formated automatically in the method for checking the database, so no conversion is required.
* @param name Name to check for in the database
* @return Returns True if the player exists
*/
public boolean playerExists(String name) {
if (!name.equals("")) {
if (name.contains(" ")) {
name = name.split(" ")[0];
}
name = name.replace("'", "''");
name = name.toLowerCase();
try {
PreparedStatement ps = databaseConnection.preparedStatement("SELECT id FROM characters WHERE LOWER(\"firstName\")=?");
ps.setString(1, name);
ResultSet resultSet = ps.executeQuery();
boolean isDuplicate = resultSet.next();
resultSet.getStatement().close();
if (isDuplicate) { return true; }
else { return false; }
}
catch (SQLException e) { e.printStackTrace(); }
}
return false;
}
}
+1
View File
@@ -189,6 +189,7 @@ public class ConnectionService implements INetworkDispatch {
object.setInviteCounter(0);
object.setInviteSenderId(0);
object.setInviteSenderName("");
core.groupService.handleGroupDisband(object);
object.setClient(null);
PlayerObject ghost = (PlayerObject) object.getSlottedObject("ghost");
+104 -9
View File
@@ -24,13 +24,16 @@ package services;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
import org.python.core.Py;
import org.python.core.PyObject;
import resources.objects.creature.CreatureObject;
import main.NGECore;
import engine.resources.objects.SWGObject;
import engine.resources.service.INetworkDispatch;
import engine.resources.service.INetworkRemoteEvent;
import resources.objects.player.PlayerObject;
public class EquipmentService implements INetworkDispatch {
@@ -50,26 +53,111 @@ public class EquipmentService implements INetworkDispatch {
}
public void weaponCriticalToDisplay(CreatureObject actor, SWGObject item, boolean add) {
if (add == true) {
switch(item.getStringAttribute("cat_wpn_damage.wpn_category")) {
case "Rifle": actor.addSkillMod("display_only_critical", actor.getSkillModBase("expertise_critical_rifle") * 100); // rifle
case "Carbine": actor.addSkillMod("display_only_critical", actor.getSkillModBase("expertise_critical_carbine") * 100); // carbine
case "Pistol": actor.addSkillMod("display_only_critical", actor.getSkillModBase("expertise_critical_pistol") * 100); // pistol
case "One-Handed Melee": actor.addSkillMod("display_only_critical", ((actor.getSkillModBase("expertise_critical_1h") + actor.getSkillModBase("expertise_critical_melee")) * 100)); // one-handed
case "Two-Handed Melee": actor.addSkillMod("display_only_critical", ((actor.getSkillModBase("expertise_critical_2h") + actor.getSkillModBase("expertise_critical_melee")) * 100)); // two-handed
case "Unarmed": actor.addSkillMod("display_only_critical", ((actor.getSkillModBase("expertise_critical_unarmed") + actor.getSkillModBase("expertise_critical_melee")) * 100)); // unarmed
case "Polearm": actor.addSkillMod("display_only_critical", ((actor.getSkillModBase("expertise_critical_polearm") + actor.getSkillModBase("expertise_critical_melee")) * 100)); // polearm
case "Free Targeting Heavy Weapon": actor.addSkillMod("display_only_critical", actor.getSkillModBase("expertise_critical_heavy") * 100); // Heavy
}
}
if (add == false) {
switch(item.getStringAttribute("cat_wpn_damage.wpn_category")) {
case "Rifle": actor.deductSkillMod("display_only_critical", actor.getSkillModBase("expertise_critical_rifle") * 100); // rifle
case "Carbine": actor.deductSkillMod("display_only_critical", actor.getSkillModBase("expertise_critical_carbine") * 100); // carbine
case "Pistol": actor.deductSkillMod("display_only_critical", actor.getSkillModBase("expertise_critical_pistol") * 100); // pistol
case "One-Handed Melee": actor.deductSkillMod("display_only_critical", ((actor.getSkillModBase("expertise_critical_1h") + actor.getSkillModBase("expertise_critical_melee")) * 100)); // one-handed
case "Two-Handed Melee": actor.deductSkillMod("display_only_critical", ((actor.getSkillModBase("expertise_critical_2h") + actor.getSkillModBase("expertise_critical_melee")) * 100)); // two-handed
case "Unarmed": actor.deductSkillMod("display_only_critical", ((actor.getSkillModBase("expertise_critical_unarmed") + actor.getSkillModBase("expertise_critical_melee")) * 100)); // unarmed
case "Polearm": actor.deductSkillMod("display_only_critical", ((actor.getSkillModBase("expertise_critical_polearm") + actor.getSkillModBase("expertise_critical_melee")) * 100)); // polearm
case "Free Targeting Heavy Weapon": actor.deductSkillMod("display_only_critical", actor.getSkillModBase("expertise_critical_heavy") * 100); // Heavy
}
}
}
public String getFormalProfessionName(String stfName) {
String formalName = "";
switch (stfName) {
case "force_sensitive_1a": formalName = "Jedi"; break;
case "bounty_hunter_1a": formalName = "Bounty Hunter"; break;
case "officer_1a": formalName = "Officer"; break;
case "smuggler_1a": formalName = "Smuggler"; break;
case "entertainer_1a": formalName = "Entertainer"; break;
case "spy_1a": formalName = "Spy"; break;
case "medic_1a": formalName = "Medic"; break;
case "commando_1a": formalName = "Commando"; break;
default: formalName = "Trader"; break; // Ziggy: Trader profession names are a bit irregular, so this is used.
}
return formalName;
}
public boolean canEquip(CreatureObject actor, SWGObject item) {
boolean result = true;
if (item.getStringAttribute("class_required") != null) {
String profession = ((PlayerObject) actor.getSlottedObject("ghost")).getProfession();
if (item.getStringAttribute("class_required").contentEquals(getFormalProfessionName(profession))) {
result = true;
} else{
return false;
}
}
return result;
}
public void equip(CreatureObject actor, SWGObject item) {
//if(replacedItem != null)
// unequip(actor, replacedItem);
String template = item.getTemplate();
String template = ((item.getAttachment("customServerTemplate") == null) ? item.getTemplate() : (item.getTemplate().split("shared_")[0] + "shared_" + ((String) item.getAttachment("customServerTemplate")) + ".iff"));
String serverTemplate = template.replace(".iff", "");
PyObject func = core.scriptService.getMethod("scripts/" + serverTemplate.split("shared_" , 2)[0].replace("shared_", ""), serverTemplate.split("shared_" , 2)[1], "equip");
if(func != null)
func.__call__(Py.java2py(core), Py.java2py(actor), Py.java2py(item));
// TODO: add health/action bonus from crafted weapon with augmentations
// TODO: add health/action bonus from crafted weapon with augmentations (also seen with cybernetics)
// TODO: faction restrictions - You had to be a Combatant as minimum in order to EQUIP an item.
// TODO: Species restrictions
// TODO: Gender restrictions
// TODO: crit enhancement from crafted weapons
// TODO: Jedi robes Force Protection Intensity
// TODO: check for armor category in order to add resistance to certain DoT types
// TODO: Calculate actual armor values (REMINDER: Check if the player is wearing a jedi robe/cloak (look for force protection intensity). If they are, they shouldn't receive any additional protection from other items with armour.)
// TODO: bio-link (assign it by objectID with setAttachment and then just display it as a character name).
// TODO: item level requirement. if actorLevel >= itemLevel
// TODO: refactor equipable items that grant buffs. use setAttachment("itemBuff", "buffname")
if (actor.getSlotNameForObject(item).contentEquals("hold_r") == true)
weaponCriticalToDisplay(actor, item, true);
Map<String, Object> attributes = new TreeMap<String, Object>(item.getAttributes());
for(Entry<String, Object> e : attributes.entrySet()) {
if(e.getKey().startsWith("cat_skill_mod_bonus.@stat_n:")) {
core.skillModService.addSkillMod(actor, e.getKey().replace("cat_skill_mod_bonus.@stat_n:", ""), Integer.parseInt((String) e.getValue()));
}
if(e.getKey().startsWith("cat_attrib_mod_bonus.attr_health")) {
actor.setMaxHealth(actor.getMaxHealth() + Integer.parseInt((String) e.getValue()));
}
if(e.getKey().startsWith("cat_attrib_mod_bonus.attr_action")) {
actor.setMaxAction(actor.getMaxAction() + Integer.parseInt((String) e.getValue()));
}
}
@@ -80,13 +168,14 @@ public class EquipmentService implements INetworkDispatch {
public void unequip(CreatureObject actor, SWGObject item) {
String template = item.getTemplate();
String template = ((item.getAttachment("customServerTemplate") == null) ? item.getTemplate() : (item.getTemplate().split("shared_")[0] + "shared_" + ((String) item.getAttachment("customServerTemplate")) + ".iff"));
String serverTemplate = template.replace(".iff", "");
PyObject func = core.scriptService.getMethod("scripts/" + serverTemplate.split("shared_" , 2)[0].replace("shared_", ""), serverTemplate.split("shared_" , 2)[1], "unequip");
if(func != null)
func.__call__(Py.java2py(core), Py.java2py(actor), Py.java2py(item));
// TODO: remove health/action bonus from crafted weapon with augmentations
if (actor.getSlotNameForObject(item).contentEquals("hold_r") == true)
weaponCriticalToDisplay(actor, item, false);
Map<String, Object> attributes = new TreeMap<String, Object>(item.getAttributes());
@@ -94,7 +183,13 @@ public class EquipmentService implements INetworkDispatch {
if(e.getKey().startsWith("cat_skill_mod_bonus.@stat_n:")) {
core.skillModService.deductSkillMod(actor, e.getKey().replace("cat_skill_mod_bonus.@stat_n:", ""), Integer.parseInt((String) e.getValue()));
}
}
if(e.getKey().startsWith("cat_attrib_mod_bonus.attr_health")) {
actor.setMaxHealth(actor.getMaxHealth() - Integer.parseInt((String) e.getValue()));
}
if(e.getKey().startsWith("cat_attrib_mod_bonus.attr_action")) {
actor.setMaxAction(actor.getMaxAction() - Integer.parseInt((String) e.getValue()));
}
}
+33 -16
View File
@@ -55,6 +55,7 @@ import protocol.swg.LoginEnumCluster;
import protocol.swg.ServerNowEpochTime;
import protocol.swg.StationIdHasJediSlot;
import resources.common.*;
import resources.datatables.PlayerFlags;
import resources.objects.creature.CreatureObject;
@@ -176,26 +177,42 @@ public class LoginService implements INetworkDispatch{
data = data.order(ByteOrder.LITTLE_ENDIAN);
data.position(0);
DeleteCharacterMessage packet = new DeleteCharacterMessage();
packet.deserialize(data);
Client client = core.getClient(session);
PreparedStatement preparedStatement;
preparedStatement = databaseConnection1.preparedStatement("DELETE FROM characters WHERE \"id\"=? AND \"galaxyId\"=? AND \"accountId\"=?");
preparedStatement.setLong(1, packet.getcharId());
preparedStatement.setInt(2, packet.getgalaxyId());
preparedStatement.setInt(3, (int) client.getAccountId());
boolean resultSet = preparedStatement.execute();
//TODO: send deletecharacter failed
if(!resultSet) {
core.getCreatureODB().delete(new Long(packet.getcharId()), Long.class, CreatureObject.class);
DeleteCharacterReplyMessage reply = new DeleteCharacterReplyMessage(0);
session.write(reply.serialize());
}
preparedStatement.close();
PreparedStatement preparedStatement;
preparedStatement = databaseConnection1.preparedStatement("DELETE FROM characters WHERE \"id\"=? AND \"galaxyId\"=? AND \"accountId\"=?");
preparedStatement.setLong(1, packet.getcharId());
preparedStatement.setInt(2, packet.getgalaxyId());
preparedStatement.setInt(3, (int) client.getAccountId());
boolean resultSet = preparedStatement.execute();
//TODO: send deletecharacter failed
if(!resultSet) {
CreatureObject object = core.objectService.getObject(packet.getcharId());
if (object != null) {
if (object.isInQuadtree() && object.getClient() != null) {
core.connectionService.disconnect(object.getClient().getSession());
}
if (object.isInQuadtree()) {
core.simulationService.remove(object, object.getPosition().x, object.getPosition().z, true);
}
core.objectService.destroyObject(object);
}
core.getCreatureODB().delete(new Long(packet.getcharId()), Long.class, CreatureObject.class);
DeleteCharacterReplyMessage reply = new DeleteCharacterReplyMessage(0);
session.write(reply.serialize());
}
preparedStatement.close();
}
});
+1
View File
@@ -55,6 +55,7 @@ public class StaticService implements INetworkDispatch {
spawnPlanetStaticObjs("rori");
spawnPlanetStaticObjs("naboo");
spawnPlanetStaticObjs("tatooine");
spawnPlanetStaticObjs("lok");
}
@Override
+75 -91
View File
@@ -339,8 +339,7 @@ public class ChatService implements INetworkDispatch {
ConcurrentHashMap<IoSession, Client> clients = core.getActiveConnectionsMap();
for(Client client : clients.values()) {
if(client.getParent() == null)
continue;
@@ -360,128 +359,113 @@ public class ChatService implements INetworkDispatch {
}
public void removeFriend(PlayerObject actor, String friendName) {
CreatureObject creature = (CreatureObject) actor.getContainer();
friendName = friendName.split(" ")[0].toLowerCase();
friendName = friendName.toLowerCase();
//SWGObject friendObject = getObjectByFirstName(friendName);
if (actor == null || actor.getContainer() == null)
if (actor == null || creature == null || friendName.equals(""))
return;
List<String> friendList = actor.getFriendList();
if(friendList.contains(friendName)) {
actor.friendRemove(friendName);
ChatOnChangeFriendStatus removeMessage = new ChatOnChangeFriendStatus(actor.getContainer().getObjectID(), friendName, 0);
actor.getContainer().getClient().getSession().write(removeMessage.serialize());
ChatOnGetFriendsList sendFriendsList = new ChatOnGetFriendsList(actor);
actor.getContainer().getClient().getSession().write(sendFriendsList.serialize());
if(actor.getFriendList().contains(friendName)) {
ChatOnChangeFriendStatus removeMessage = new ChatOnChangeFriendStatus(actor.getContainer().getObjectID(), friendName, 0);
creature.getClient().getSession().write(removeMessage.serialize());
actor.friendRemove(friendName);
} else {
creature.sendSystemMessage(friendName + " is not a valid friend name.", (byte) 0);
}
}
public void addFriend(PlayerObject actor, String friendName, boolean notify) {
// ChatOnAddFriend, ChatOnChangeFriendStatus, ChatFriendsListUpdate, ChatSystemMessage, ChatOnGetFriendsList
SWGObject friendObject = getObjectByFirstName(friendName);
public void addFriend(PlayerObject actor, String friend) {
CreatureObject creature = (CreatureObject) actor.getContainer();
PlayerObject friend = (PlayerObject) friendObject.getSlottedObject("ghost");
CreatureObject friendCreature = (CreatureObject) friend.getContainer();
List<String> friendList = actor.getFriendList();
if (actor == null || friendObject.getSlottedObject("ghost") == null)
if (actor == null || creature == null || friend.equals(""))
return;
CreatureObject actorCreature = (CreatureObject) actor.getContainer();
if (actorCreature == null)
return;
friend = friend.toLowerCase();
boolean friendIsOnline = friendObject.isInQuadtree();
String friendShortName = friendCreature.getCustomName().toLowerCase();
if (friendCreature.getCustomName().contains(" ")) {
String[] splitName = friendCreature.getCustomName().toLowerCase().split(" ");
friendShortName = splitName[0];
if (friend.contains(" ")) {
friend = friend.split(" ")[0];
}
if (friendList.contains(friendShortName)) {
actorCreature.sendSystemMessage(friendShortName + " is already on your friends list.", (byte) 0);
return;
}
if (notify) {
ChatOnAddFriend init = new ChatOnAddFriend();
actorCreature.getClient().getSession().write(init.serialize());
if(core.characterService.playerExists(friend)) {
ChatOnChangeFriendStatus addMessage = new ChatOnChangeFriendStatus(actorCreature.getObjectID(), friendShortName, 1);
actorCreature.getClient().getSession().write(addMessage.serialize());
if(friendIsOnline) {
ChatFriendsListUpdate updateStatus = new ChatFriendsListUpdate(friendShortName, (byte)1);
actorCreature.getClient().getSession().write(updateStatus.serialize());
if(actor.getIgnoreList().contains(friend)) {
creature.sendSystemMessage(friend + " is being ignored, unable to put in your friends list.", (byte) 0);
}
}
SWGObject friendObj = getObjectByFirstName(friend);
boolean isOnline = false;
if (friendObj != null && friendObj.isInQuadtree())
isOnline = true;
ChatOnAddFriend init = new ChatOnAddFriend();
creature.getClient().getSession().write(init.serialize());
actor.friendAdd(friendShortName);
if (actor.getFriendList().size() != 0) {
ChatOnGetFriendsList sendFriendsList = new ChatOnGetFriendsList(actor);
actorCreature.getClient().getSession().write(sendFriendsList.serialize());
ChatOnChangeFriendStatus addFriend = new ChatOnChangeFriendStatus(creature.getObjectId(), friend, 1);
creature.getClient().getSession().write(addFriend.serialize());
if (isOnline) {
ChatFriendsListUpdate onlineUpdate = new ChatFriendsListUpdate(friend, (byte) 1);
creature.getClient().getSession().write(onlineUpdate.serialize());
}
actor.friendAdd(friend);
creature.sendSystemMessage(friend + " is now your friend.", (byte) 0);
} else {
creature.sendSystemMessage(friend + " is not a valid friend name.", (byte) 0);
}
actorCreature.sendSystemMessage(friendShortName + " has been added to your friends list.", (byte) 0);
}
public void addToIgnoreList(SWGObject actor, String ignoreName) {
ignoreName = ignoreName.split(" ")[0].toLowerCase();
if (actor == null)
return;
PlayerObject ghost = (PlayerObject) actor.getSlottedObject("ghost");
CreatureObject creature = (CreatureObject) actor;
List<String> ignoreList = ghost.getIgnoreList();
if (ignoreList.contains(ignoreName.toLowerCase())) {
if(ghost == null)
return;
if (ghost.getIgnoreList().contains(ignoreName)) {
creature.sendSystemMessage(ignoreName + " is already in your ignore list.", (byte) 0);
return;
} else {
// TODO: Do check for valid names to ignore
AddIgnoreMessage addIgnore = new AddIgnoreMessage(actor, ignoreName.toLowerCase(), true);
actor.getClient().getSession().write(addIgnore.serialize());
Console.println("Sent the add ignore message!");
ghost.ignoreAdd(ignoreName.toLowerCase());
Console.println("Sent the add ignore delta!");
creature.sendSystemMessage(ignoreName + " is now ignored.", (byte) 0);
}
if(!core.characterService.playerExists(ignoreName)) {
creature.sendSystemMessage(ignoreName + " is not a valid ignore name.", (byte) 0);
return;
}
AddIgnoreMessage addIgnore = new AddIgnoreMessage(actor, ignoreName, true);
actor.getClient().getSession().write(addIgnore.serialize());
ghost.ignoreAdd(ignoreName);
creature.sendSystemMessage(ignoreName + " is now ignored.", (byte) 0);
}
public void removeFromIgnoreList(SWGObject actor, String ignoreName) {
if (actor == null)
return;
PlayerObject ghost = (PlayerObject) actor.getSlottedObject("ghost");
CreatureObject creature = (CreatureObject) actor;
List<String> ignoreList = ghost.getIgnoreList();
if (ignoreList.contains(ignoreName.toLowerCase())) {
for (String name : ignoreList) {
if(name.equalsIgnoreCase(ignoreName)) {
//Console.println("Name found!");
AddIgnoreMessage removeIgnore = new AddIgnoreMessage(actor, ignoreName.toLowerCase(), false);
actor.getClient().getSession().write(removeIgnore.serialize());
//Console.println("Sent AddIgnoreMessage to remove friend!");
ghost.ignoreRemove(ignoreName.toLowerCase());
//Console.println("Sent ignoreRemove delta!");
creature.sendSystemMessage(ignoreName + " is no longer ignored.", (byte) 0);
// TODO: Find out why player must click on name twice in list for name to be removed.
break;
}
}
} else { return; }
if (ghost == null || creature == null)
return;
if (ghost.getIgnoreList().contains(ignoreName)) {
AddIgnoreMessage message = new AddIgnoreMessage(actor, ignoreName, false);
creature.getClient().getSession().write(message.serialize());
ghost.ignoreRemove(ignoreName);
creature.sendSystemMessage(ignoreName + " is no longer ignored.", (byte) 0);
}
}
public void sendPersistentMessageHeader(Client client, Mail mail) {
+19 -5
View File
@@ -673,7 +673,7 @@ public class CombatService implements INetworkDispatch {
if(r <= missChance)
return HitType.MISS;
}
float dodgeChance = (float) target.getSkillModBase("display_only_dodge") / 10000;
float dodgeChance = (float) (target.getSkillModBase("display_only_dodge") - attacker.getSkillModBase("display_only_opp_dodge_reduction")) / 10000;
r = random.nextFloat();
if(r <= dodgeChance)
@@ -683,7 +683,7 @@ public class CombatService implements INetworkDispatch {
WeaponObject weapon2 = (WeaponObject) core.objectService.getObject(((CreatureObject) target).getWeaponId());
if(weapon2 != null && weapon2.isMelee()) {
float parryChance = (float) target.getSkillModBase("display_only_parry") / 10000;
float parryChance = (float) (target.getSkillModBase("display_only_parry") - attacker.getSkillModBase("display_only_parry_reduction"))/ 10000;
r = random.nextFloat();
if(r <= parryChance)
@@ -699,9 +699,23 @@ public class CombatService implements INetworkDispatch {
}
float critChance = (float) (attacker.getSkillModBase("display_only_critical") - target.getSkillModBase("display_only_expertise_critical_hit_reduction")) / 10000;
float critChance = 0;
critChance += (command.getCriticalChance());
critChance += ((float) attacker.getSkillModBase("display_only_critical") / 100);
critChance -= ((float) target.getSkillModBase("display_only_expertise_critical_hit_reduction") / 100);
critChance += ((float) target.getSkillModBase("critical_hit_vulnerable") / 100);
if(target.isPlayer())
critChance += attacker.getSkillModBase("expertise_critical_niche_pvp");
critChance -= ((float) target.getSkillModBase("display_only_expertise_critical_hit_pvp_reduction") / 100);
r = random.nextFloat();
if(r <= critChance)
if(r <= ((float) critChance / 100))
return HitType.CRITICAL;
// TODO: Punishing blow once AI is implemented
@@ -715,7 +729,7 @@ public class CombatService implements INetworkDispatch {
float r;
Random random = new Random();
float blockChance = (float) target.getSkillModBase("display_only_block") / 10000;
float blockChance = (float) (target.getSkillModBase("display_only_block") - attacker.getSkillModBase("display_only_opp_block_reduction"))/ 10000;
r = random.nextFloat();
if(r <= blockChance)
+9
View File
@@ -78,6 +78,7 @@ public class CombatCommand extends BaseSWGCommand {
private float executeTime;
private float warmupTime;
private float vigorCost; // for commando kill meter and bm specials
private float criticalChance;
public CombatCommand(String commandName) {
super(commandName);
@@ -705,6 +706,14 @@ public class CombatCommand extends BaseSWGCommand {
public void setVigorCost(float vigorCost) {
this.vigorCost = vigorCost;
}
public float getCriticalChance() {
return criticalChance;
}
public void setCriticalChance(float criticalChance) {
this.criticalChance = criticalChance;
}
+9 -9
View File
@@ -609,8 +609,8 @@ public class ObjectService implements INetworkDispatch {
PlayerObject ghost = (PlayerObject) creature.getSlottedObject("ghost");
ChatOnGetFriendsList friendsListMessage = new ChatOnGetFriendsList(ghost);
client.getSession().write(friendsListMessage.serialize());
//ChatOnGetFriendsList friendsListMessage = new ChatOnGetFriendsList(ghost);
//client.getSession().write(friendsListMessage.serialize());
if (ghost != null) {
ghost.clearFlagBitmask(PlayerFlags.LD);
@@ -623,19 +623,19 @@ public class ObjectService implements INetworkDispatch {
core.chatService.playerStatusChange(objectShortName, (byte) 1);
if (ghost.getFriendList().isEmpty() == false) {
if (!ghost.getFriendList().isEmpty()) {
// Find out what friends are online/offline
for (String friend : ghost.getFriendList()) {
SWGObject friendObject = (SWGObject) core.chatService.getObjectByFirstName(friend);
if (friendObject == null)
continue;
if(friendObject.isInQuadtree() == true) {
SWGObject friendObject = core.chatService.getObjectByFirstName(friend);
if(friendObject != null && friendObject.isInQuadtree()) {
ChatFriendsListUpdate onlineNotifyStatus = new ChatFriendsListUpdate(friend, (byte) 1);
client.getSession().write(onlineNotifyStatus.serialize());
} else {
ChatOnChangeFriendStatus changeStatus = new ChatOnChangeFriendStatus(creature.getObjectID(), friend, 0);
client.getSession().write(changeStatus.serialize());
ChatFriendsListUpdate onlineNotifyStatus = new ChatFriendsListUpdate(friend, (byte) 0);
client.getSession().write(onlineNotifyStatus.serialize());
}
}
}
+1 -2
View File
@@ -202,8 +202,7 @@ public class TradeService implements INetworkDispatch{
}
else {
if (objectToTrade.getIntAttribute("no_trade") == 1) {
if(objectToTrade.getAttributes().toString().contains("no_trade")) {
return;
}
+20 -1
View File
@@ -25,6 +25,7 @@ import java.nio.ByteOrder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Vector;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
@@ -42,6 +43,8 @@ import engine.clients.Client;
import engine.resources.container.Traverser;
import engine.resources.objects.SWGObject;
import engine.resources.scene.Planet;
import engine.resources.scene.Point3D;
import engine.resources.scene.Quaternion;
import engine.resources.service.INetworkDispatch;
import engine.resources.service.INetworkRemoteEvent;
import main.NGECore;
@@ -319,7 +322,23 @@ public class TravelService implements INetworkDispatch {
public void doTransport(SWGObject actor, TravelPoint tp) {
Planet planet = core.terrainService.getPlanetByName(tp.getPlanetName());
core.simulationService.transferToPlanet(actor, planet, tp.getSpawnLocation().getPosition(), tp.getSpawnLocation().getOrientation(), null);
Random ran = new Random();
float oY = tp.getShuttle().getOrientation().y;
float dirDg = (float) ((Math.acos(oY) * 180 / Math.PI) * 2);
ran.setSeed(32);
dirDg = dirDg - 18 + ran.nextFloat();
float dirRadian = (float) (dirDg * Math.PI / 180);
ran.setSeed(3);
float distance = 13 + ran.nextFloat();
float x = (float) (tp.getSpawnLocation().getPosition().x + Math.sin(dirRadian) * distance);
float y = (float) (tp.getSpawnLocation().getPosition().y + Math.cos(dirRadian) * distance);
Point3D spawnPoint = new Point3D(x, y, tp.getSpawnLocation().getPosition().z);
core.simulationService.transferToPlanet(actor, planet, spawnPoint, new Quaternion(0, 0, 0, 0), null);
}