diff --git a/scripts/commands/forage.py b/scripts/commands/forage.py index bce7443e..9fbf9c31 100644 --- a/scripts/commands/forage.py +++ b/scripts/commands/forage.py @@ -12,9 +12,12 @@ def run(core, actor, target, commandString): #if actor.getSkills('Foraging')==0: #actor.sendSystemMessage('@skl_use:sys_forage_noskill'),0) - #if actor.isForaging()==1: - #actor.sendSystemMessage('@skl_use:sys_forage_already',0) - #return + if actor.getAttachment("LastForageTime"): + if actor.getAttachment("LastForageTime")>int(round(time.time() * 1000))-5000: + actor.sendSystemMessage('@skl_use:sys_forage_already',0) + return + + actor.setAttachment("LastForageTime",int(round(time.time() * 1000))) if actor.getCombatFlag()!=0: actor.sendSystemMessage('@skl_use:sys_forage_combatfail',0) diff --git a/scripts/mobiles/forage/goon.py b/scripts/mobiles/forage/goon.py index cb3e63af..2ce75838 100644 --- a/scripts/mobiles/forage/goon.py +++ b/scripts/mobiles/forage/goon.py @@ -13,13 +13,13 @@ def addTemplate(core): mobileTemplate.setCreatureName('forage_goon') mobileTemplate.setLevel(1) mobileTemplate.setDifficulty(Difficulty.ELITE) - mobileTemplate.setMinSpawnDistance(4) mobileTemplate.setMaxSpawnDistance(8) - mobileTemplate.setDeathblow(False) + mobileTemplate.setDeathblow(True) mobileTemplate.setScale(1) mobileTemplate.setAssistRange(12) mobileTemplate.setStalker(False) + mobileTemplate.setSocialGroup("tusken raider") mobileTemplate.setOptionsBitmask(Options.AGGRESSIVE | Options.ATTACKABLE) templates = Vector() @@ -33,16 +33,16 @@ def addTemplate(core): mobileTemplate.setTemplates(templates) weaponTemplates = Vector() - weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_dh17.iff', WeaponType.CARBINE, 0.6, 15, 'kinetic') - weaponTemplates.add(weapontemplate) - weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_dl44.iff', WeaponType.PISTOL, 0.4, 15, 'kinetic') - weaponTemplates.add(weapontemplate) - weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_dlt20a.iff', WeaponType.RIFLE, 0.8, 24, 'kinetic') + #weapontemplate = WeaponTemplate('object/weapon/ranged/carbine/shared_carbine_dh17.iff', WeaponType.CARBINE, 0.6, 15, 'kinetic') + #weaponTemplates.add(weapontemplate) + #weapontemplate = WeaponTemplate('object/weapon/ranged/pistol/shared_pistol_dl44.iff', WeaponType.PISTOL, 0.4, 15, 'kinetic') + #weaponTemplates.add(weapontemplate) + weapontemplate = WeaponTemplate('object/weapon/ranged/rifle/shared_rifle_dlt20a.iff', WeaponType.RIFLE, 1.0, 24, 'kinetic') weaponTemplates.add(weapontemplate) mobileTemplate.setWeaponTemplateVector(weaponTemplates) attacks = Vector() - mobileTemplate.setDefaultAttack('rangedShot') + mobileTemplate.setDefaultAttack('rangedShotrifle') mobileTemplate.setAttacks(attacks) core.spawnService.addMobileTemplate('forage_goon', mobileTemplate) diff --git a/src/resources/common/Forager.java b/src/resources/common/Forager.java index 5f693253..492537e0 100644 --- a/src/resources/common/Forager.java +++ b/src/resources/common/Forager.java @@ -27,6 +27,7 @@ import java.util.List; import java.util.Random; import java.util.Vector; +import engine.resources.common.Stf; import engine.resources.objects.SWGObject; import engine.resources.scene.Point3D; import main.NGECore; @@ -250,7 +251,7 @@ public class Forager { adversaryRoll=999; // adversaryRoll=999; // To test TMs - + if (adversaryRoll<14) { // 14 100 // To test TMs int adversaryTypeRoll = new Random().nextInt(100); if (adversaryTypeRoll<50){ @@ -417,18 +418,17 @@ public class Forager { } - goon.addObserver(forager); +// goon.addObserver(forager); goon.setCustomName(name); goon.setLevel(forager.getLevel()); - goon.setOptions(Options.AGGRESSIVE, true); - goon.setOptions(Options.ATTACKABLE, true); +// goon.setOptions(Options.AGGRESSIVE, true); +// goon.setOptions(Options.ATTACKABLE, true); AIActor actor = (AIActor) goon.getAttachment("AI"); actor.addDefender(forager); forager.sendSystemMessage("@foraging/forage_enemy:" + barkString, DisplayType.Broadcast); - //OutOfBand oob = OutOfBand.ProsePackage("@foraging/forage_enemy:" + barkString)); - OutOfBand oob = OutOfBand.ProsePackage("@jawa_trader:cant_understand"); - forager.sendSystemMessage("@jawa_trader:cant_understand", DisplayType.Broadcast); - NGECore.getInstance().chatService.spatialChat(goon, forager, "", (short)0x0, (short)0x0, 1, oob); + OutOfBand oob = OutOfBand.ProsePackage("@foraging/forage_enemy:" + barkString); + Stf stf = new Stf("@foraging/forage_enemy:" + barkString); + NGECore.getInstance().chatService.spatialChat(goon, forager, stf.getStfValue(), (short)0x0, (short)0x0, 1, oob); } public void handleGuardSpawn(CreatureObject owner, TangibleObject map){ diff --git a/src/services/command/CommandService.java b/src/services/command/CommandService.java index b1f768f7..4126b474 100644 --- a/src/services/command/CommandService.java +++ b/src/services/command/CommandService.java @@ -80,8 +80,9 @@ public class CommandService implements INetworkDispatch { if (actor == null) return false; - if (actor.getClient() == null) - return false; +// if (actor.getClient() == null) +// return false; + // Please consider that AI is calling callCommand too. Thank you. if (command == null) return false; @@ -95,6 +96,7 @@ public class CommandService implements INetworkDispatch { if (actor.hasCooldown(command.getCooldownGroup()) || actor.hasCooldown(command.getCommandName())) return false; + // Causes this service method to return with false after equipping a rifle, not allowing to unequip it anymore // because the client seems to consider rifles invalidweapons for an unkown reason @@ -115,7 +117,7 @@ public class CommandService implements INetworkDispatch { return false; } } - + switch (command.getTargetType()) { case 0: // Target Not Used For This Command break; @@ -251,7 +253,7 @@ public class CommandService implements INetworkDispatch { default: break; } - + switch (command.getTarget()) { case 0: // Ally Only if (target == null) { @@ -318,7 +320,7 @@ public class CommandService implements INetworkDispatch { e.printStackTrace(); } } - + if(command instanceof CombatCommand) { try { processCommand(actor, target, (BaseSWGCommand) command.clone(), actionCounter, commandArgs); diff --git a/src/services/travel/TravelService.java b/src/services/travel/TravelService.java index 14fe66b7..8ced7a88 100644 --- a/src/services/travel/TravelService.java +++ b/src/services/travel/TravelService.java @@ -329,8 +329,8 @@ public class TravelService implements INetworkDispatch { Planet planet = core.terrainService.getPlanetByName(tp.getPlanetName()); Point3D spawnLocation = SpawnPoint.getRandomPosition(tp.getLocation(), 5, 20, actor.getPlanetId()); - core.simulationService.transferToPlanet(actor, planet, spawnLocation, new Quaternion(0, 0, 0, 0), null); - + float positionY = core.terrainService.getHeight(actor.getPlanetId(), spawnLocation.x, spawnLocation.z); + core.simulationService.transferToPlanet(actor, planet, new Point3D(spawnLocation.x, positionY, spawnLocation.z), new Quaternion(0, 0, 0, 0), null); }