From 73b20381fefb3d62e9fcc7e89f9f795ffcc2645e Mon Sep 17 00:00:00 2001 From: Seefo Date: Mon, 31 Mar 2014 14:14:51 -0400 Subject: [PATCH] AI changes, added Stormtrooper and fixed creature names for Krettle, Chuba, and Womprat --- scripts/mobiles/canon/jedi_master.py | 19 ++++++++++++----- scripts/mobiles/canon/stormtrooper.py | 27 +++++++++++++++++++++++++ scripts/mobiles/naboo/chuba.py | 1 + scripts/mobiles/tatooine/kreetle.py | 1 + scripts/mobiles/tatooine/womprat.py | 1 + src/services/ai/states/AttackState.java | 15 ++++++++++++++ src/services/spawn/MobileTemplate.java | 14 ++++++------- src/services/spawn/SpawnService.java | 2 +- 8 files changed, 66 insertions(+), 14 deletions(-) create mode 100644 scripts/mobiles/canon/stormtrooper.py diff --git a/scripts/mobiles/canon/jedi_master.py b/scripts/mobiles/canon/jedi_master.py index 9770c507..d2b65aaf 100644 --- a/scripts/mobiles/canon/jedi_master.py +++ b/scripts/mobiles/canon/jedi_master.py @@ -4,6 +4,12 @@ from java.util import Vector def addTemplate(core): mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('eow_dark_jedi_sentinel_uber') + mobileTemplate.setLevel(90) + mobileTemplate.setDifficulty(2) + mobileTemplate.setAttackRange(6) + templates = Vector() templates.add('object/mobile/shared_dressed_dark_jedi_master_female_twk_01.iff') templates.add('object/mobile/shared_dressed_dark_jedi_master_female_twk_02.iff') @@ -14,13 +20,16 @@ def addTemplate(core): templates.add('object/mobile/shared_dressed_dark_jedi_master_male_human_05.iff') templates.add('object/mobile/shared_dressed_dark_jedi_master_male_human_06.iff') mobileTemplate.setTemplates(templates) - mobileTemplate.setLevel(90) - mobileTemplate.setDifficulty(2) - mobileTemplate.setCustomWeaponTemplate('object/weapon/melee/2h_sword/crafted_saber/shared_sword_lightsaber_two_handed_gen5.iff') + + weaponTemplates = Vector() + weaponTemplates.add('object/weapon/melee/sword/crafted_saber/shared_sword_lightsaber_one_handed_gen5.iff') + weaponTemplates.add('object/weapon/melee/2h_sword/crafted_saber/shared_sword_lightsaber_two_handed_gen5.iff') + weaponTemplates.add('object/weapon/melee/polearm/crafted_saber/shared_sword_lightsaber_polearm_gen5.iff') + mobileTemplate.setWeaponTemplates(weaponTemplates) + attacks = Vector() mobileTemplate.setDefaultAttack('saberHit') mobileTemplate.setAttacks(attacks) - mobileTemplate.setCreatureName('eow_dark_jedi_sentinel_uber') - mobileTemplate.setAttackRange(6) + core.spawnService.addMobileTemplate('jedi_master', mobileTemplate) \ No newline at end of file diff --git a/scripts/mobiles/canon/stormtrooper.py b/scripts/mobiles/canon/stormtrooper.py new file mode 100644 index 00000000..90da938f --- /dev/null +++ b/scripts/mobiles/canon/stormtrooper.py @@ -0,0 +1,27 @@ +import sys +from services.spawn import MobileTemplate +from java.util import Vector + +def addTemplate(core): + mobileTemplate = MobileTemplate() + + mobileTemplate.setCreatureName('stormtrooper') + mobileTemplate.setLevel(90) + mobileTemplate.setDifficulty(0) + mobileTemplate.setAttackRange(24) + + templates = Vector() + templates.add('object/mobile/shared_dressed_stormtrooper_m.iff') + mobileTemplate.setTemplates(templates) + + weaponTemplates = Vector() + weaponTemplates.add('object/weapon/ranged/rifle/shared_rifle_e11.iff') + weaponTemplates.add('object/weapon/ranged/rifle/shared_rifle_t21.iff') + mobileTemplate.setWeaponTemplates(weaponTemplates) + + attacks = Vector() + mobileTemplate.setDefaultAttack('rangedShot') + mobileTemplate.setAttacks(attacks) + + core.spawnService.addMobileTemplate('stormtrooper', mobileTemplate) + \ No newline at end of file diff --git a/scripts/mobiles/naboo/chuba.py b/scripts/mobiles/naboo/chuba.py index c40d2421..085d9e77 100644 --- a/scripts/mobiles/naboo/chuba.py +++ b/scripts/mobiles/naboo/chuba.py @@ -6,6 +6,7 @@ def addTemplate(core): mobileTemplate = MobileTemplate() templates = Vector() templates.add('object/mobile/shared_chuba_hue.iff') + mobileTemplate.setCreatureName('chuba') mobileTemplate.setTemplates(templates) mobileTemplate.setLevel(5) attacks = Vector() diff --git a/scripts/mobiles/tatooine/kreetle.py b/scripts/mobiles/tatooine/kreetle.py index 6d96166b..ec037bd4 100644 --- a/scripts/mobiles/tatooine/kreetle.py +++ b/scripts/mobiles/tatooine/kreetle.py @@ -6,6 +6,7 @@ def addTemplate(core): mobileTemplate = MobileTemplate() templates = Vector() templates.add('object/mobile/shared_kreetle.iff') + mobileTemplate.setCreatureName('kreetle') mobileTemplate.setTemplates(templates) mobileTemplate.setLevel(5) attacks = Vector() diff --git a/scripts/mobiles/tatooine/womprat.py b/scripts/mobiles/tatooine/womprat.py index f1531b4c..836d9922 100644 --- a/scripts/mobiles/tatooine/womprat.py +++ b/scripts/mobiles/tatooine/womprat.py @@ -6,6 +6,7 @@ def addTemplate(core): mobileTemplate = MobileTemplate() templates = Vector() templates.add('object/mobile/shared_womp_rat.iff') + mobileTemplate.setCreatureName('womprat') mobileTemplate.setTemplates(templates) mobileTemplate.setLevel(5) attacks = Vector() diff --git a/src/services/ai/states/AttackState.java b/src/services/ai/states/AttackState.java index 2d49791c..dee11544 100644 --- a/src/services/ai/states/AttackState.java +++ b/src/services/ai/states/AttackState.java @@ -47,6 +47,9 @@ public class AttackState extends AIState { @Override public byte onExit(AIActor actor) { // TODO Auto-generated method stub + actor.getCreature().setLookAtTarget(0); + actor.getCreature().setIntendedTarget(0); + return StateResult.FINISHED; } @@ -100,7 +103,12 @@ public class AttackState extends AIState { if(creature.getPosture() == 14) return StateResult.DEAD; if(creature.getCombatFlag() == 0 || creature.getDefendersList().size() == 0 || actor.getFollowObject() == null) + { + creature.setLookAtTarget(0); + creature.setIntendedTarget(0); + actor.setFollowObject(null); return StateResult.FINISHED; + } CreatureObject target = actor.getFollowObject(); if(target != actor.getHighestDamageDealer() && actor.getHighestDamageDealer() != null) { actor.setFollowObject(actor.getHighestDamageDealer()); @@ -116,7 +124,11 @@ public class AttackState extends AIState { actor.setFollowObject(actor.getHighestDamageDealer()); target = actor.getFollowObject(); if(target == null) + { + creature.setLookAtTarget(0); + creature.setIntendedTarget(0); return StateResult.FINISHED; + } } if(target.getWorldPosition().getDistance(creature.getWorldPosition()) > 128 || target.getPosture() == 13 || target.getPosture() == 14) { actor.removeDefender(target); @@ -141,6 +153,9 @@ public class AttackState extends AIState { Vector attacks = actor.getMobileTemplate().getAttacks(); + creature.setLookAtTarget(target.getObjectId()); + creature.setIntendedTarget(target.getObjectId()); + if(attacks.size() == 0) { core.commandService.callCommand(creature, actor.getMobileTemplate().getDefaultAttack(), target, ""); } else { diff --git a/src/services/spawn/MobileTemplate.java b/src/services/spawn/MobileTemplate.java index 9b1cb401..3e673af0 100644 --- a/src/services/spawn/MobileTemplate.java +++ b/src/services/spawn/MobileTemplate.java @@ -44,7 +44,7 @@ public class MobileTemplate { private float scale = 1; // this is a custom attack Range setting to use for large mobs like krayts private int attackRange; - private String customWeaponTemplate; + private Vector weaponTemplates; public Vector getTemplates() { return templates; @@ -158,13 +158,11 @@ public class MobileTemplate { this.attackRange = attackRange; } - public void setCustomWeaponTemplate(String template) - { - this.customWeaponTemplate = template; + public Vector getWeaponTemplates() { + return weaponTemplates; } - - public String getCustomWeaponTemplate() - { - return customWeaponTemplate; + + public void setWeaponTemplates(Vector weaponTemplates) { + this.weaponTemplates = weaponTemplates; } } diff --git a/src/services/spawn/SpawnService.java b/src/services/spawn/SpawnService.java index c26defae..bc3fbef1 100644 --- a/src/services/spawn/SpawnService.java +++ b/src/services/spawn/SpawnService.java @@ -112,7 +112,7 @@ public class SpawnService { creature.setLevel(level); else creature.setLevel(mobileTemplate.getLevel()); - WeaponObject defaultWeapon = (mobileTemplate.getCustomWeaponTemplate() != null) ? (WeaponObject) core.objectService.createObject(mobileTemplate.getCustomWeaponTemplate(), creature.getPlanet()) : (WeaponObject) core.objectService.createObject("object/weapon/creature/shared_creature_default_weapon.iff", creature.getPlanet()); + WeaponObject defaultWeapon = (mobileTemplate.getWeaponTemplates().size() > 0) ? (WeaponObject) core.objectService.createObject(mobileTemplate.getWeaponTemplates().get(new Random().nextInt(mobileTemplate.getWeaponTemplates().size())), creature.getPlanet()) : (WeaponObject) core.objectService.createObject("object/weapon/creature/shared_creature_default_weapon.iff", creature.getPlanet()); defaultWeapon.setAttackSpeed(2); defaultWeapon.setDamageType("@obj_attr_n:armor_eff_kinetic"); defaultWeapon.setStringAttribute("cat_wpn_damage.damage", "0-0");