diff --git a/scripts/demo.py b/scripts/demo.py index de9a931d..f3ba6ff0 100644 --- a/scripts/demo.py +++ b/scripts/demo.py @@ -13,21 +13,21 @@ def CreateStartingCharacter(core, object): testObject.setElementalDamage(50) testObject.setIntAttribute('cat_wpn_damage.weapon_dps', testObject.getDamagePerSecond()) testObject.setIntAttribute('cat_skill_mod_bonus.@stat_n:precision_modified', 35) - object.addSkillMod('kinetic' , 10000) - object.addSkillMod('energy' , 10000) - object.addSkillMod('heat' , 6000) - object.addSkillMod('cold' , 6000) - object.addSkillMod('acid' , 6000) - object.addSkillMod('electricity' , 6000) - object.addSkillMod('combat_strikethrough_value' , 50) - object.addSkillMod('display_only_dodge' , 2000) - object.addSkillMod('display_only_parry' , 1000) - object.addSkillMod('display_only_strikethrough' , 500) - object.addSkillMod('display_only_critical' , 2500) - object.addSkillMod('display_only_evasion' , 1000) - object.addSkillMod('display_only_glancing_blow' , 750) - object.addSkillMod('display_only_block' , 2000) - object.addSkillMod('combat_block_value' , 0) + object.addSkillMod('kinetic' , 0) + object.addSkillMod('energy' , 0) + object.addSkillMod('heat' , 0) + object.addSkillMod('cold' , 0) + object.addSkillMod('acid' , 0) + object.addSkillMod('electricity' , 0) + #object.addSkillMod('combat_strikethrough_value' , 50) + #object.addSkillMod('display_only_dodge' , 2000) + #object.addSkillMod('display_only_parry' , 1000) + #object.addSkillMod('display_only_strikethrough' , 500) + #object.addSkillMod('display_only_critical' , 2500) + #object.addSkillMod('display_only_evasion' , 1000) + #object.addSkillMod('display_only_glancing_blow' , 750) + #object.addSkillMod('display_only_block' , 2000) + #object.addSkillMod('combat_block_value' , 0) inventory = object.getSlottedObject('inventory') if not inventory: @@ -166,53 +166,53 @@ def addProfessionAbilities(core, object, profession): inventory.add(testObject) ##Case Sensitive - object.addAbility('fs_sweep_7') - object.addAbility('fs_drain_7') - object.addAbility('forceRun') - object.addAbility('fs_dm_cc_crit_5') - object.addAbility('fs_maelstrom_5') - object.addAbility('fs_ae_dm_cc_6') - object.addAbility('fs_sh_3') - object.addAbility('fs_dm_cc_6') - object.addAbility('fs_dm_7') - object.addAbility('fs_buff_def_1_1') - object.addAbility('fs_buff_ca_1') - object.addAbility('saberBlock') - elif profession == 'medic_1a': - object.addAbility('me_bacta_bomb_5') - object.addAbility('me_bacta_grenade_5') - object.addAbility('me_bacta_ampule_6') - object.addAbility('me_ae_heal_6') - object.addAbility('me_dm_8') - object.addAbility('me_dm_dot_6') - object.addAbility('me_drag_1') - object.addAbility('me_rv_pvp_single') - object.addAbility('me_rv_area') - object.addAbility('me_rv_pvp_area') - object.addAbility('me_reckless_stimulation_6') - object.addAbility('me_sh_1') - object.addAbility('me_stasis_1') - object.addAbility('me_stasis_self_1') - object.addAbility('me_thyroid_rupture_1') - object.addAbility('me_traumatize_5') - object.addAbility('me_induce_insanity_1') - elif profession == 'commando_1a': - object.addAbility('co_del_ae_cc_2_2') - object.addAbility('co_del_ae_dm_3') - object.addAbility('co_del_ae_cc_1_3') - object.addAbility('co_hw_dot') - object.addAbility('co_ae_hw_dot') - elif profession == 'bounty_hunter_1a': - object.addAbility('bh_shields_1') - object.addAbility('bh_dm_8') - object.addAbility('bh_sh_3') - object.addAbility('bh_armor_sprint_1') - object.addAbility('bh_prescience') - object.addAbility('bh_dm_crit_8') - object.addAbility('crippleShot') - object.addAbility('bh_fumble_6') - object.addAbility('bh_intimidate_6') - object.addAbility('bh_flawless_strike') + # object.addAbility('fs_sweep_7') + # object.addAbility('fs_drain_7') + # object.addAbility('forceRun') + # object.addAbility('fs_dm_cc_crit_5') + # object.addAbility('fs_maelstrom_5') + # object.addAbility('fs_ae_dm_cc_6') + # object.addAbility('fs_sh_3') + # object.addAbility('fs_dm_cc_6') + # object.addAbility('fs_dm_7') + # object.addAbility('fs_buff_def_1_1') + # object.addAbility('fs_buff_ca_1') + # object.addAbility('saberBlock') + #elif profession == 'medic_1a': + # object.addAbility('me_bacta_bomb_5') + # object.addAbility('me_bacta_grenade_5') + # object.addAbility('me_bacta_ampule_6') + # object.addAbility('me_ae_heal_6') + # object.addAbility('me_dm_8') + # object.addAbility('me_dm_dot_6') + # object.addAbility('me_drag_1') + # object.addAbility('me_rv_pvp_single') + # object.addAbility('me_rv_area') + # object.addAbility('me_rv_pvp_area') + # object.addAbility('me_reckless_stimulation_6') + # object.addAbility('me_sh_1') + # object.addAbility('me_stasis_1') + # object.addAbility('me_stasis_self_1') + # object.addAbility('me_thyroid_rupture_1') + # object.addAbility('me_traumatize_5') + # object.addAbility('me_induce_insanity_1') + #elif profession == 'commando_1a': + # object.addAbility('co_del_ae_cc_2_2') + # object.addAbility('co_del_ae_dm_3') + # object.addAbility('co_del_ae_cc_1_3') + # object.addAbility('co_hw_dot') + # object.addAbility('co_ae_hw_dot') + #elif profession == 'bounty_hunter_1a': + # object.addAbility('bh_shields_1') + # object.addAbility('bh_dm_8') + # object.addAbility('bh_sh_3') + # object.addAbility('bh_armor_sprint_1') + # object.addAbility('bh_prescience') + # object.addAbility('bh_dm_crit_8') + # object.addAbility('crippleShot') + # object.addAbility('bh_fumble_6') + # object.addAbility('bh_intimidate_6') + # object.addAbility('bh_flawless_strike') direfate1 = core.objectService.createObject('object/tangible/wearables/necklace/shared_necklace_s03.iff', object.getPlanet()) direfate1.setStfFilename('static_item_n') diff --git a/scripts/object/building/tatooine/shuttleport_tatooine.py b/scripts/object/building/tatooine/shuttleport_tatooine.py index 55348477..5a651a1c 100644 --- a/scripts/object/building/tatooine/shuttleport_tatooine.py +++ b/scripts/object/building/tatooine/shuttleport_tatooine.py @@ -3,7 +3,7 @@ import sys def setup(core, object): objSvc = core.objectService - objSvc.createChildObject(object, 'object/tangible/terminal/shared_terminal_travel.iff', -13, 0.6, -10, -0.707107, 0.707107) + objSvc.createChildObject(object, 'object/tangible/terminal/shared_terminal_travel.iff', -13, 0.6, -9, -0.707107, 0.707107) objSvc.createChildObject(object, 'object/creature/npc/theme_park/shared_player_shuttle.iff', 0, 0.6, 0, 1, 0) objSvc.createChildObject(object, 'object/tangible/travel/ticket_collector/shared_ticket_collector.iff', -13, 0.6, 10, -0.707107, 0.707107) diff --git a/src/protocol/swg/EnterTicketPurchaseModeMessage.java b/src/protocol/swg/EnterTicketPurchaseModeMessage.java index 05d53ad5..d5d8d02c 100644 --- a/src/protocol/swg/EnterTicketPurchaseModeMessage.java +++ b/src/protocol/swg/EnterTicketPurchaseModeMessage.java @@ -51,7 +51,6 @@ public class EnterTicketPurchaseModeMessage extends SWGMessage { public IoBuffer serialize() { final NGECore core = NGECore.getInstance(); TravelPoint nearestPoint = core.travelService.getNearestTravelPoint(player); - IoBuffer result = IoBuffer.allocate(20 + planetName.length() + nearestPoint.getName().length()).order(ByteOrder.LITTLE_ENDIAN); result.putShort((short) 3); diff --git a/src/protocol/swg/objectControllerObjects/ObjectMenuRequest.java b/src/protocol/swg/objectControllerObjects/ObjectMenuRequest.java index 85a2d464..901314b9 100644 --- a/src/protocol/swg/objectControllerObjects/ObjectMenuRequest.java +++ b/src/protocol/swg/objectControllerObjects/ObjectMenuRequest.java @@ -47,11 +47,9 @@ public class ObjectMenuRequest extends ObjControllerObject { int listSize = buffer.getInt(); for(int i = 0; i < listSize; i++) { RadialOptions radial = new RadialOptions(); - if(buffer.get() == 0) // option # - return; + buffer.get(); radial.setParentId(buffer.get()); - radial.setOptionId(buffer.get()); - buffer.get(); + radial.setOptionId(buffer.getShort()); radial.setOptionType(buffer.get()); int size = buffer.getInt(); if(size > 0) { diff --git a/src/resources/objects/creature/CreatureObject.java b/src/resources/objects/creature/CreatureObject.java index 9baf46fa..23307378 100644 --- a/src/resources/objects/creature/CreatureObject.java +++ b/src/resources/objects/creature/CreatureObject.java @@ -101,7 +101,7 @@ public class CreatureObject extends TangibleObject implements IPersistent { // CREO6 private byte combatFlag = 0; - private short level = 90; + private short level = 1; private int grantedHealth = 0; private String currentAnimation; private String moodAnimation; diff --git a/src/services/combat/CombatService.java b/src/services/combat/CombatService.java index 5d21e24f..1522fce0 100644 --- a/src/services/combat/CombatService.java +++ b/src/services/combat/CombatService.java @@ -650,15 +650,16 @@ public class CombatService implements INetworkDispatch { if(r <= missChance) return HitType.MISS; } - float dodgeChance = (float) target.getSkillMod("display_only_dodge").getBase() / 10000; - - r = random.nextFloat(); - if(r <= dodgeChance) - return HitType.DODGE; - + if(target.getSkillMod("display_only_dodge") != null) { + float dodgeChance = (float) target.getSkillMod("display_only_dodge").getBase() / 10000; + + r = random.nextFloat(); + if(r <= dodgeChance) + return HitType.DODGE; + } WeaponObject weapon2 = (WeaponObject) core.objectService.getObject(((CreatureObject) target).getWeaponId()); - if(weapon2 != null && weapon2.isMelee()) { + if(weapon2 != null && weapon2.isMelee() && target.getSkillMod("display_only_parry") != null) { float parryChance = (float) target.getSkillMod("display_only_parry").getBase() / 10000; @@ -708,7 +709,7 @@ public class CombatService implements INetworkDispatch { } - if(hitType == HitType.HIT) { + if(hitType == HitType.HIT && target.getSkillMod("display_only_glancing_blow") != null) { float glanceChance = (float) target.getSkillMod("display_only_glancing_blow").getBase() / 10000; diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index 0449ac0b..41ce0c64 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -155,9 +155,10 @@ public class CommandService implements INetworkDispatch { // Check if the person has access to this ability. // Abilities (inc expertise ones) are added automatically as they level // by reading the datatables. - if (!attacker.hasAbility(command.getCommandName())) { - return; - } + // disabled for now (breaks all combat) + //if (!attacker.hasAbility(command.getCommandName())) { + // return; + //} if(FileUtilities.doesFileExist("scripts/commands/combat/" + command.getCommandName() + ".py")) core.scriptService.callScript("scripts/commands/combat/", command.getCommandName(), "setup", core, attacker, target, command);