3 small things !!!
Moderators: winston, another_commander
3 small things !!!
I have always found 3 small details in oolite very annoying
1. The operation of clocking device. To be more specific the fact that when you are cloaked you can fire at enemy ships but you are not awarded with a kill. This is somehow strange and causes a lot of problems (see at random hits foe example)
I think it would be better if you are cloaked to be unable to shoot with your main weapon, missiles etc (like a klingon bird of bray for the fans of star trek ).
2.The fact that you get a bounty and a kill for destroying disabled thargoid robot fighters. This is more like a cheat. The main purpose for disabled robot fighters in the original elite (PC version) was to scoop them as alien artifacts but now nobody does it for the simple reason that they worth more dead than alive. And finally
3.When you destroy a subentity you get a kill. Sometimes when I fight a dark wheel cobra I end up with 4-5 kills.
From what I know the last one is fixed in 1.71 (thanks Ahruman!!!!!! )
So I am wondering if it is also possible for the first two “small details” to be fixed (under the condition that they do not demand a lot of work).
I know that there is an argument for the disabled thargoid fighters in the forum but I really do not know the opinion of the community the operation of the cloaking device.
1. The operation of clocking device. To be more specific the fact that when you are cloaked you can fire at enemy ships but you are not awarded with a kill. This is somehow strange and causes a lot of problems (see at random hits foe example)
I think it would be better if you are cloaked to be unable to shoot with your main weapon, missiles etc (like a klingon bird of bray for the fans of star trek ).
2.The fact that you get a bounty and a kill for destroying disabled thargoid robot fighters. This is more like a cheat. The main purpose for disabled robot fighters in the original elite (PC version) was to scoop them as alien artifacts but now nobody does it for the simple reason that they worth more dead than alive. And finally
3.When you destroy a subentity you get a kill. Sometimes when I fight a dark wheel cobra I end up with 4-5 kills.
From what I know the last one is fixed in 1.71 (thanks Ahruman!!!!!! )
So I am wondering if it is also possible for the first two “small details” to be fixed (under the condition that they do not demand a lot of work).
I know that there is an argument for the disabled thargoid fighters in the forum but I really do not know the opinion of the community the operation of the cloaking device.
-
- Quite Grand Sub-Admiral
- Posts: 6683
- Joined: Wed Feb 28, 2007 7:54 am
I think I have to agree that the cloaking device could function a bit differently. What I really don't like about it is that you can switch it on and slowly kill a ship without it reacting the slightest. I would normally expect it to start a frantic, desperate attempt to get away from whatever it is causing it to lose energy. I find it quite a good idea to disable laser fire when the device is active, or at least cause the laser to overheat at a very high rate. Alternatively, the cloak could be auto-disabled the moment lasers start firing or a missile is launched.
I also agree, In classic Elite, you would also see other ships deploying a cloak, which does not seem to happen now, and the othet issue is that when deployed, the cloaking device only gave you intermittent invisibility, and used to drain your energy banks, now ships with extra energy banks and a naval energy unit can recharge faster than the enrgy is depleted, so you can go into complete invisibility mode, sneak up to a pirate and then blast them to submission, remove the cloak and gain a kill. Not cricket old boy!
The Grey Haired Commander has spoken!
OK so I'm a PC user - "you know whats scary? Out of billions of sperm I was the fastest"
OK so I'm a PC user - "you know whats scary? Out of billions of sperm I was the fastest"
- JensAyton
- Grand Admiral Emeritus
- Posts: 6657
- Joined: Sat Apr 02, 2005 2:43 pm
- Location: Sweden
- Contact:
I’m in favour of disabling the cloak when weapons fire (simple, elegant solution). I see the point on the tharglets, but they used to be treated like cargo pods (1/10th score, no kill) until people complained about that. :-)
E-mail: [email protected]
- Eric Walch
- Slightly Grand Rear Admiral
- Posts: 5536
- Joined: Sat Jun 16, 2007 3:48 pm
- Location: Netherlands
That's up to scripters to give a ship a cloak. e.g in UPS some target ships have cloaking devices. But they are not really useful. Ships leave them on until their energy is almost drained. When you were able to get an glimpse in which direction they fled, you just need to follow them until they de-cloak because of low energy. In this low energy situation a few laser-shots are enough to kill him.TGHC wrote:I also agree, In classic Elite, you would also see other ships deploying a cloak, which does not seem to happen now
The ships scripts do not work well in 1.70, but in 1.71 I'll will try to give them a little more brain by letting them random change course when fleeing cloaked.
I would also vote for this. It also makes the most sense as shooting will give your position away in my feeling. It will not change much though as the player could constantly switch it back on manually. (reactivating after a shot should also have some seconds second delay before it does activate)Ahruman wrote:I’m in favour of disabling the cloak when weapons fire (simple, elegant solution).
UPS-Courier & DeepSpacePirates & others at the box and some older versions
As an alien item they are worth a lot more than the 50Cr for a kill, providing you know where to offload them, but I do agree that they should not count as a kill unless they are firing at you of course.Ahruman wrote:I see the point on the tharglets, but they used to be treated like cargo pods (1/10th score, no kill) until people complained about that.
The Grey Haired Commander has spoken!
OK so I'm a PC user - "you know whats scary? Out of billions of sperm I was the fastest"
OK so I'm a PC user - "you know whats scary? Out of billions of sperm I was the fastest"
the cloak should disable laser fire for sure. I think the AI needs a better reaction to cloaking as well. A frantic search or running away perhaps.
I've accidently killed things when cloaked and then not got the kill because i forgot to decloak...
And Eric is right, more enemies should have cloaking devices
I've accidently killed things when cloaked and then not got the kill because i forgot to decloak...
And Eric is right, more enemies should have cloaking devices
- Eric Walch
- Slightly Grand Rear Admiral
- Posts: 5536
- Joined: Sat Jun 16, 2007 3:48 pm
- Location: Netherlands
Until 1.69 a script can not see if a ship was cloacked. It could be added with a new message.Hoopy wrote:I think the AI needs a better reaction to cloaking as well. A frantic search or running away perhaps.
On line 1358 of the shipEntity.m file it does a shipAI reactToMessage:@"TARGET_LOST" in the update event. One of the reasons of a lost target is that it cloaks. I think this is the point to explicitly also send a new shipAI reactToMessage:@"TARGET_CLOACKED" message. With this a script could react on cloaking. Or was it already on the large list with new eventhandlers for ships.
-----
On second thought. When giving a ship his own script, the "TARGET_LOST" message could start a scrip function were cloaking is checked. This script than could change the AI-STATE to FLEE. So it is already possible to check cloaking and start a flee.
UPS-Courier & DeepSpacePirates & others at the box and some older versions
Yes this is more elegant. If it is also not less simple in the implementation i second that (I do not want the dev team to be distracted from its main goal with my ideas)Eric Walch wrote:(reactivating after a shot should also have some seconds second delay before it does activate)
Otherwise a simple deactivation of the cloak when firing weapons would be nice.
- JensAyton
- Grand Admiral Emeritus
- Posts: 6657
- Joined: Sat Apr 02, 2005 2:43 pm
- Location: Sweden
- Contact:
Added as shipTargetCloaked() and TARGET_CLOAKED (which will be immediately followed by shipLostTarget() and TARGET_LOST).Eric Walch wrote:Until 1.69 a script can not see if a ship was cloacked. It could be added with a new message.
On line 1358 of the shipEntity.m file it does a shipAI reactToMessage:@"TARGET_LOST" in the update event. One of the reasons of a lost target is that it cloaks. I think this is the point to explicitly also send a new shipAI reactToMessage:@"TARGET_CLOACKED" message. With this a script could react on cloaking. Or was it already on the large list with new eventhandlers for ships.
E-mail: [email protected]
- Eric Walch
- Slightly Grand Rear Admiral
- Posts: 5536
- Joined: Sat Jun 16, 2007 3:48 pm
- Location: Netherlands
Nice option. Maybe the pirateAI should already be altered in this way. When an pirate has a target that cloaks it probably is the player. Reacting with just a flee would give the player an easy way to sent the pirates away. So set the AI in a state were it waits for a few seconds. When it gets another attack in that time, perform a flee. He has no chance against a cloaked player. But when not attacked, go further in the lurk state. The player has to de-cloak soon.
Just an idea. I don't know if it will work, but someone with the latest trunk version could test it.
Just an idea. I don't know if it will work, but someone with the latest trunk version could test it.
Code: Select all
"ATTACK_SHIP" = {
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
"ENERGY_LOW" = ("setStateTo: FLEE");
"TARGET_CLOAKED" = ("setStateTo: TARGET_CLOAKED");
ENTER = (performAttack);
EXIT = ();
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
"TARGET_DESTROYED" = ("setStateTo: COLLECT_LOOT");
"TARGET_LOST" = ("setStateTo: COLLECT_LOOT");
"ENTER WORMHOLE" = ("setStateTo: ENTER_WORMHOLE");
UPDATE = ();
};
"TARGET_CLOAKED" = {
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
"ENERGY_LOW" = ("setStateTo: FLEE");
ENTER = ("pauseAI: 5.0");
EXIT = ();
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
"ENTER WORMHOLE" = ("setStateTo: ENTER_WORMHOLE");
UPDATE = ("setStateTo: LURK");
};
UPS-Courier & DeepSpacePirates & others at the box and some older versions
- JensAyton
- Grand Admiral Emeritus
- Posts: 6657
- Joined: Sat Apr 02, 2005 2:43 pm
- Location: Sweden
- Contact:
Eric, this currently doesn’t work as expected because ATTACKED is never sent if the aggressor is cloaked. I’m going to add an experimental new message ATTACKED_BY_CLOAKED/shipBeingAttackedByCloaked() to handle this. The message will be sent at an early point in takeEnergyDamage:from:becauseOf: and won’t do the various bits of special-case handling for police and so forth.
E-mail: [email protected]
I think I have a better proposal for the operation of the cloaking device.Eric Walch wrote:I would also vote for this. It also makes the most sense as shooting will give your position away in my feeling. It will not change much though as the player could constantly switch it back on manually. (reactivating after a shot should also have some seconds second delay before it does activate)Ahruman wrote:I’m in favour of disabling the cloak when weapons fire (simple, elegant solution).
Although disabling the clocking device when firing is somehow a solution, it is not the perfect one.
This way you can sneak behind an enemy ship – decloack – fire and finally get your kill. Not so fair. I totally agree with Eric that what we need is a small delay between decloaking and firing, so your opponent can have a fighting chance.
What about when you decloack your weapon also be overheated so you have to wait before firing (The delay Eric said implemented with a simple - clear solution)
- LittleBear
- ---- E L I T E ----
- Posts: 2882
- Joined: Tue Apr 04, 2006 7:02 pm
- Location: On a survey mission for GalCop. Ship: Cobra Corvette: Hidden Dragon Rated: Deadly.
On the Random Hits point, On V1.1 of Random Hits you (should) still be credited for the kill if you do it cloaked, but you should get a message along the randomised lines of "You have eliminated [name], but the Bounty Hunters Guild fines you [fine] Credits for being a cowardly custard." The fine will take a big bite of your fee. Also you do not improve your reputation by making hits cloaked.
OXPS : The Assassins Guild, Asteroid Storm, The Bank of the Black Monks, Random Hits, The Galactic Almanac, Renegade Pirates can be downloaded from the Elite Wiki here.
- Eric Walch
- Slightly Grand Rear Admiral
- Posts: 5536
- Joined: Sat Jun 16, 2007 3:48 pm
- Location: Netherlands
Ahruman,
Just to let you know that your added messages for Cloaking in 1.71 work well. On my computer I now altered the pirateAI.plist in the next way.:
In all states that have an "ATTACKED" messages I added also a message:
This way the pirates are no more sitting ducks when attacked by a cloaked player but they flee. Not the normal flee, but still keeping scanning so when the player de-cloakes the pirate can immediately proceed attack against a player that drained his own energy banks by cloaking.
In the "ATTACK" state I added the line
This way the pirate is not defaulting to collect loot, but immediately turns to the scanning mode for faster reaction on de-cloacking of the player.
I will add it to the ups_pirates in the next version of UPS. After some better testing it could be used as the default "pirateAI.plist".
When others want to test it: create a folder with name "AIs" in the "AddOns" folder. Put a copy of the original "pirateAI.plist" in this folder. As last, replace the current content with the one listed below. Oolite will now default to the changed copy.
Just to let you know that your added messages for Cloaking in 1.71 work well. On my computer I now altered the pirateAI.plist in the next way.:
In all states that have an "ATTACKED" messages I added also a message:
Code: Select all
"ATTACKED_BY_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
Code: Select all
"FLEE_FOR_CLOAKED" = {
ENTER = ("setDesiredRangeTo: 25600", performFlee);
"DESIRED_RANGE_ACHIEVED" = (performIdle, "setStateTo: LURK");
"INCOMING_MISSILE" = (fightOrFleeMissile);
"REACHED_SAFETY" = ("setSpeedTo: 0.0", performIdle, "pauseAI: 10.0");
"TARGET_FOUND" = (setTargetToFoundTarget, checkGroupOddsVersusTarget);
"ODDS_GOOD" = (groupAttackTarget);
"ODDS_LEVEL" = (groupAttackTarget);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
"ENTER WORMHOLE" = ("setStateTo: ENTER_WORMHOLE");
UPDATE = (scanForRandomMerchantmen, "pauseAI: 5.0");
EXIT = ();
};
Code: Select all
"TARGET_CLOAKED" = ("setStateTo: LURK");
I will add it to the ups_pirates in the next version of UPS. After some better testing it could be used as the default "pirateAI.plist".
When others want to test it: create a folder with name "AIs" in the "AddOns" folder. Put a copy of the original "pirateAI.plist" in this folder. As last, replace the current content with the one listed below. Oolite will now default to the changed copy.
Code: Select all
{
"ATTACK_SHIP" = {
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
"ATTACKED_BY_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
"ENERGY_LOW" = ("setStateTo: FLEE");
"TARGET_CLOAKED" = ("setStateTo: LURK");
ENTER = (performAttack);
EXIT = ();
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
"TARGET_DESTROYED" = ("setStateTo: COLLECT_LOOT");
"TARGET_LOST" = ("setStateTo: COLLECT_LOOT");
"ENTER WORMHOLE" = ("setStateTo: ENTER_WORMHOLE");
UPDATE = ();
};
"COLLECT_LOOT" = {
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
"ATTACKED_BY_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
ENTER = ("setSpeedTo: 0.0", performIdle);
EXIT = ();
"HOLD_FULL" = ("setStateTo: EXIT_SYSTEM");
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: LOOT");
"NOTHING_FOUND" = ("setStateTo: CONSIDER_DOCKING");
"ENTER WORMHOLE" = ("setStateTo: ENTER_WORMHOLE");
UPDATE = (scanForLoot, "pauseAI: 5.0");
};
"EXIT_SYSTEM" = {
ENTER = ();
EXIT = ();
UPDATE = (performHyperSpaceExit);
"WITCHSPACE OKAY" = (wormholeEscorts, wormholeGroup);
"WITCHSPACE BLOCKED" = (setTargetToFoundTarget, setDestinationWithinTarget, "setDesiredRangeTo: 10000.0", performFlyToRangeFromDestination);
"WITCHSPACE UNAVAILABLE" = ("setStateTo: DOCK_WITH_STATION");
};
FLEE = {
ENTER = ("setDesiredRangeTo: 25600", performFlee);
"ENERGY_FULL" = (performIdle, "setStateTo: LURK");
"TARGET_LOST" = (performIdle, "setStateTo: LURK");
"DESIRED_RANGE_ACHIEVED" = (performIdle, "setStateTo: LURK");
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
"REACHED_SAFETY" = ("setSpeedTo: 0.0", performIdle, "pauseAI: 10.0");
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
UPDATE = ();
EXIT = ();
};
"FLEE_FOR_CLOAKED" = {
ENTER = ("setDesiredRangeTo: 25600", performFlee);
"DESIRED_RANGE_ACHIEVED" = (performIdle, "setStateTo: LURK");
"INCOMING_MISSILE" = (fightOrFleeMissile);
"REACHED_SAFETY" = ("setSpeedTo: 0.0", performIdle, "pauseAI: 10.0");
"TARGET_FOUND" = (setTargetToFoundTarget, checkGroupOddsVersusTarget);
"ODDS_GOOD" = (groupAttackTarget);
"ODDS_LEVEL" = (groupAttackTarget);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
"ENTER WORMHOLE" = ("setStateTo: ENTER_WORMHOLE");
UPDATE = (scanForRandomMerchantmen, "pauseAI: 5.0");
EXIT = ();
};
GLOBAL = {ENTER = ("setStateTo: TRAVEL_TO_LURK_AREA"); EXIT = (); UPDATE = (); };
LOOT = {
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
"ATTACKED_BY_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
"CARGO_SCOOPED" = (checkForFullHold, "setStateTo: COLLECT_LOOT");
ENTER = (performCollect);
EXIT = ();
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
"HOLD_FULL" = ("setStateTo: CONSIDER_DOCKING");
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
"TARGET_LOST" = ("setStateTo: COLLECT_LOOT");
"ENTER WORMHOLE" = ("setStateTo: ENTER_WORMHOLE");
UPDATE = ();
};
LURK = {
ENTER = ("setSpeedTo: 0.0", performIdle);
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
"ATTACKED_BY_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
EXIT = ();
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
"NOTHING_FOUND" = ("setStateTo: COLLECT_LOOT");
"TARGET_FOUND" = (setTargetToFoundTarget, checkGroupOddsVersusTarget);
"ODDS_GOOD" = (groupAttackTarget);
"ODDS_LEVEL" = (groupAttackTarget);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
"ENTER WORMHOLE" = ("setStateTo: ENTER_WORMHOLE");
UPDATE = (scanForRandomMerchantmen, "pauseAI: 5.0");
};
"TRAVEL_TO_LURK_AREA" = {
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
"ATTACKED_BY_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: LURK");
ENTER = (
setDestinationToCurrentLocation,
"setDesiredRangeTo: 1500.0",
performFlyToRangeFromDestination
);
EXIT = ();
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
"ENTER WORMHOLE" = ("setStateTo: ENTER_WORMHOLE");
"EXITED WITCHSPACE" = ("switchAITo: enteringPirateAI.plist");
UPDATE = ();
};
"CONSIDER_DOCKING" = {
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
"ATTACKED_BY_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
ENTER = (checkForMotherStation);
"NOTHING_FOUND" = ("setStateTo: LURK");
"STATION_FOUND" = ("setAITo: dockingAI.plist");
EXIT = ();
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
UPDATE = ();
};
"DOCK_WITH_STATION" = {
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
"ATTACKED_BY_CLOAKED" = ("setStateTo: FLEE_FOR_CLOAKED");
ENTER = (checkForMotherStation);
"NOTHING_FOUND" = ("setAITo: route1traderAI.plist");
"STATION_FOUND" = ("setAITo: dockingAI.plist");
EXIT = ();
"INCOMING_MISSILE" = (fightOrFleeMissile, "setStateTo: FLEE");
UPDATE = ();
};
"ENTER_WORMHOLE" = {
ENTER = (setDestinationToTarget, "setDesiredRangeTo: 1.0", "setSpeedFactorTo: 1.0", performFlyToRangeFromDestination);
"PLAYER WITCHSPACE" = (enterTargetWormhole);
UPDATE = ();
EXIT = ();
};
}
UPS-Courier & DeepSpacePirates & others at the box and some older versions