From a8c61f8e50fb14dc2bfb25e98d9e6252d1b976fa Mon Sep 17 00:00:00 2001 From: Light2 Date: Sun, 4 Aug 2013 21:15:12 +0200 Subject: [PATCH] Basic combat works now, fixed /pvp, added waypoint mail attachments, fixed several bugs --- ngengine_public.jar | Bin 27935696 -> 27942876 bytes scripts/commands/pvp.py | 16 ++-- scripts/commands/transferitemweapon.py | 2 +- scripts/demo.py | 78 ++++++++++++++++++ src/main/NGECore.java | 3 + .../swg/ChatPersistentMessageToClient.java | 40 ++++++++- .../swg/ChatPersistentMessageToServer.java | 63 +++++++++++++- src/protocol/swg/ObjControllerMessage.java | 1 + src/protocol/swg/UpdateTransformMessage.java | 5 +- .../swg/UpdateTransformWithParentMessage.java | 6 +- .../objectControllerObjects/CombatAction.java | 25 ++++-- .../objectControllerObjects/StartTask.java | 66 +++++++++++++++ .../creature/CreatureMessageBuilder.java | 6 +- .../objects/creature/CreatureObject.java | 44 ++++++++-- .../objects/tangible/TangibleObject.java | 2 +- .../objects/weapon/WeaponMessageBuilder.java | 5 +- src/services/PlayerService.java | 31 ++++++- src/services/SimulationService.java | 8 +- src/services/chat/ChatService.java | 6 +- src/services/chat/Mail.java | 17 +++- src/services/chat/WaypointAttachment.java | 40 +++++++++ src/services/combat/CombatService.java | 58 ++++++++++++- src/services/command/CombatCommand.java | 61 +++++++++++++- src/services/object/ObjectService.java | 26 +++--- 24 files changed, 547 insertions(+), 62 deletions(-) create mode 100644 src/protocol/swg/objectControllerObjects/StartTask.java create mode 100644 src/services/chat/WaypointAttachment.java diff --git a/ngengine_public.jar b/ngengine_public.jar index 96bf44fbf1aca7b8c9d60a05026198cb8d453034..71c19543ba5311471b7051947b774870eab74177 100644 GIT binary patch delta 611681 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