Posted: Wed, 22. Jun 16, 21:26
No CES-compatible version?
Space simulation development
https://forum.egosoft.com/
Code: Select all
<start_script object="$titurel4Commander" name="'player.default'"/>
<start_script object="$titurel4DefenceNPC" name="'fight.defend.capital'"/>
<start_script object="$titurel4Engineer" name="'engineer.ai'"/>
No, DOs do not stop shooting once they have started. Most of the time, they're running fight.defend.capital, and only go into fight.attack.object.capital (or the MICT version in this case) if they are either:iforgotmysocks wrote:1. Defense Officer settings don't do much. On defensive they still keep killing ships, they don't stop with their assigned target.
Yes, drone launch is not connected to the DO setting either. That said, a ship with a DO set to defend shouldn't go into the attack script in the first place unless set to attack or the ship is attacked.iforgotmysocks wrote:Also drones get launched no matter if defensive or not.
This was done because of how capital ship torpedoes were changed in MICT, which won't make as much sense if you don't have those changes. (Hence my question above as to which distribution you went with.) In the full package, torpedoes are extremely long-range, very destructive, and very inaccurate, so they should only be fired if there is a reasonable chance of hitting the target. In this case, it is dependent on the DO setting because a way to control when the DO fires those torpedoes is necessary due to their nature, and their role.iforgotmysocks wrote:2. My Xenon I's suddenly don't use missiles anymore. (Not sure if that goes for other missile boats aswell)
Edit: I found the issue of the missiles:
MICT.fight.attack.object.capital.xml:
<shoot_at object="this.ship" target="$target" slot="tag.secondary_slot" tolerance="15.0deg" locktarget="true" weapontype="combat" additional_targets="$MICT_PrimTargets.list"/>
If they're both running MICT, or if the enemy ship tries to vanilla flee, yes, that can happen.iforgotmysocks wrote:3. 1 fight actually streched over 8 times the enemy cap jumped away. And my cap jumped after it.
I actually recently changed that back, but only for escorts. The squadron commander should only stay as long as the target is within radar range. If that happens to be in the next zone over, why should that matter? They are authorized to attack and they found a target.iforgotmysocks wrote:4. It's kinda odd when i tell my ships to patroll a sector or kill things in a sector and they jump-follow an enemy in the neighbour system and fight him there, while completely ignoring their purpose. :/
As long as they're oriented properly, they fire often enough that I had to add an additional restriction that you can control.iforgotmysocks wrote:U set a 15 degree limit for secondary cap weapons, which are usually missiles. That means they will almost never be able to use them.
If you have a bad DO, chances are your ship's crew isn't using MICT at all. That means that they would use the old tolerances. (I believe that is full 360 degrees? So they would fire whenever the weapon cycles regardless if they can actually hit.)iforgotmysocks wrote:Edit2: Seems bad DOs regulary launch missile slavos while experienced ones only fire missiles now and then (after fixing the tolerance).
I didn't dig into your files deep enough yet, but maybe the vanilla script calls the "shoot secondary" command alot more often than your mict script.
If firing anytime regardless of chance to hit is an improvement? Sure.iforgotmysocks wrote:Maybe this can be improved to get experienced DOs to use missiles effectivly too.
Above. And yes, $allowothertargets isn't connected to the DO attack/defend setting.iforgotmysocks wrote:Edit3:
Regarding the ship going on a rampage even on defensive.
Maybe i'm just rusty in coding, but ... in MICT.fight.attack.object.capital.xml at the end of the script when checking if other targets should be allowed:
I couldn't find anything that stops the ship from going on a rampage because $allowothertargets simply stays enabled.
If i'm just wrong, let me know. As i said, has been years since i worked with this code.
Sounds like they aren't running MICT. Is this with your example above with the bad DO?iforgotmysocks wrote:Edit4: Hmm, seems ships don't move, but their turrets aggress everything red even on defensive without any aggression towards themselfs.
You either went with the Nexus distro and didn't install MICT_supp2 (which is the escort package), or your ships aren't running MICT.iforgotmysocks wrote:Edit5: There also seems to be a problem with fighter squads. In Vanilla fighters (m) engage the enemy, if one set as squadleader gets the order to engage. However with this mod installed, they simply don't.
They keep "escorting" without attacking until the squadleader dies and then try to follow a nonexistent ship.
Hey there, ya, i guess. Was quite tired back then. Keeping everything up to date while the game didn't rly get any better dispite all the frequent patches kinda drove me away. Nice to meet you know, though.w.evans wrote:Hey iforgotmysocks. Good to see you're back. I think I started about the time you left so we haven't really met, but I've heard good things.
I tried both but ended up testing the combined version further.w.evans wrote:First off: which distribution did you go with? Did you get the mod from the Steam Workshop or the Nexus? If the Nexus, which optional files did you install with it?
Honestly, talking with me too much about the different jobs that the ai scripts have is pointless, i don't remember much at all and seeing how many bugs are still around, i'm not gonna start again. ^^w.evans wrote:No, DOs do not stop shooting once they have started. Most of the time, they're running fight.defend.capital, and only go into fight.attack.object.capital (or the MICT version in this case) if they are either:
set to Attack,
or the ship is attacked.
Once they go into the attack script, they stay there until they run out of enemies to attack.
If all of the attack actions in the attack script are made dependent on the DO setting, and they come under attack, they will endlessly loop between fight.defend.capital and fight.attack.object.capital without doing anything.
It would be possible, as you said, to make $allowothertargets dependent on that setting, in which case they will not add anything to their target lists if the DO setting is then set to Defend. But why would you want to do that? They will then still keep attacking the things in their target list and ignore any additional targets unless they shoot first.
Another way would be to make the attack script quit if the DO setting is set to Defend, and keep it there by making the setting an absolute requirement for getting into the attack script in the first place. But in that case, attacked ships won't fire back at all unless their DO's setting is changed.
Hm, if i recall right u stated somewhere that drones wouldn't be launched with a defensive DO setting. ^^ - Gonna look it up later.w.evans wrote:Yes, drone launch is not connected to the DO setting either. That said, a ship with a DO set to defend shouldn't go into the attack script in the first place unless set to attack or the ship is attacked.
Ah i see. I suspected something like that. However, if you wanna keep it "balanced" you should change the regular script too.w.evans wrote:This was done because of how capital ship torpedoes were changed in MICT, which won't make as much sense if you don't have those changes. (Hence my question above as to which distribution you went with.) In the full package, torpedoes are extremely long-range, very destructive, and very inaccurate, so they should only be fired if there is a reasonable chance of hitting the target. In this case, it is dependent on the DO setting because a way to control when the DO fires those torpedoes is necessary due to their nature, and their role.
Particular to the Xenon I, the torpedo launchers are on the sides, and your captain might have judged that they would do more damage from a different angle, hence not firing their torpedoes. As I'm writing this however, the thought occurred to me that they might orient a different side to their target but still try and maintain torpedo range, in which case they won't fire. Was that the case?
I was just suggesting that a cooldown on the jd might be an idea cause it rly wasn't fun chasing down those ships the entire time. ^^iforgotmysocks wrote:3. 1 fight actually streched over 8 times the enemy cap jumped away. And my cap jumped after it.
w.evans wrote:If they're both running MICT, or if the enemy ship tries to vanilla flee, yes, that can happen.
Well, the idea to patroll a sector is kinda to keep it safe. ^^w.evans wrote:I actually recently changed that back, but only for escorts. The squadron commander should only stay as long as the target is within radar range. If that happens to be in the next zone over, why should that matter? They are authorized to attack and they found a target.
Nah all my ships had a 5 star crew and they used the old tolerance, cause i changed it back to test further. Thats when i noticed that caps running the vanilla script still are able to fire missiles alot more frequently than ships running ur script. But that doesn't rly matter much then, anyway. ^^w.evans wrote:If you have a bad DO, chances are your ship's crew isn't using MICT at all. That means that they would use the old tolerances. (I believe that is full 360 degrees? So they would fire whenever the weapon cycles regardless if they can actually hit.)
All with ships running ur script. In vanilla, that actually wouldn't happen, cause they do stop firing. ^^iforgotmysocks wrote:Edit4: Hmm, seems ships don't move, but their turrets aggress everything red even on defensive without any aggression towards themselfs.
w.evans wrote:Sounds like they aren't running MICT. Is this with your example above with the bad DO?
Was the steam version and yes, they did. (Simple fighters though, so pilots also with a fighter-pilot as leader. Not sure if you adjusted them, cause with ur script they can't attack.) ^^iforgotmysocks wrote:Edit5: There also seems to be a problem with fighter squads. In Vanilla fighters (m) engage the enemy, if one set as squadleader gets the order to engage. However with this mod installed, they simply don't.
They keep "escorting" without attacking until the squadleader dies and then try to follow a nonexistent ship.
w.evans wrote:You either went with the Nexus distro and didn't install MICT_supp2 (which is the escort package), or your ships aren't running MICT.
Hope you deactivated the Nexus install then. Come to think of it, nothing bad should happen if both are installed. Part of the mod would be loaded from one folder, part from the other, but since they're identical, should still work. But haven't tried so don't know.iforgotmysocks wrote:I tried both but ended up testing the combined version further.w.evans wrote:First off: which distribution did you go with? Did you get the mod from the Steam Workshop or the Nexus? If the Nexus, which optional files did you install with it?
That bit was actually stolen straight from vanilla. Been trying to keep things working with vanilla until i bother to change something so that all the rest of it keeps vanilla functionality at least.iforgotmysocks wrote:If i'm not mistaken, the vanilla script actually stops firing with a defensive DO, when the attacking ship was destroyed, even if there are more enemies around (and commands like "hold position" make them stop even with the engaged enemy still being alive). And i think ur script even started firing on defensive without any aggression happening.
Code: Select all
<handler comment="update the configuration attack">
<conditions>
<event_object_signalled object="this" param="'update config'" />
</conditions>
<actions>
<remove_value name="$allowothertargets" />
<remove_value name="$attacker" />
<set_value name="$checkrelation" exact="true" comment="check relation by default" />
<abort_called_scripts />
</actions>
</handler>
Yeah. There actually is code in there that makes them stop firing when their target is being boarded, but i kept it commented out because i don't really like the idea. The best implementation of that that I'm aware of was in cicero111's Better Turrets where, if DO is set to defend and a target is being boarded, they would keep firing but only on surface elements. I think beaver1981's CES has something similar.iforgotmysocks wrote:That stuff just drove me mad when i tried ship boarding. ^^ And on defense u kinda only wanna shoot what shoots you. Otherwise the defensive mode would be kinda pointless. That was my thought there.
Was connected with the "Resupply Drones" checkbox in the DO's settings, but that checkbox was taken out with 4.0.iforgotmysocks wrote:Hm, if i recall right u stated somewhere that drones wouldn't be launched with a defensive DO setting. ^^ - Gonna look it up later.
You mean the change to the torpedo? Wasn't so much a balance thing as much as i wanted to change its role somewhat drastically.iforgotmysocks wrote:Ah i see. I suspected something like that. However, if you wanna keep it "balanced" you should change the regular script too.
Just a small correction. They would fire the same torpedoes. Launcher's the same too.iforgotmysocks wrote:Because right now a bad DO, who is not using ur script and flying an I will destroy an I with a DO using ur script just because he can spam the 2 variations of missilelauncher types and your pilot can not.
None. Not in vanilla anyway. Just the Balor and the I.iforgotmysocks wrote:(I don't know how many other Cap ships actually suffer from that missile restriction, so maybe it't not much of an issue, concidering the i was never ment to be owned by the player)
They actually do have a jump drive cool down. Think the only place that's skipped is in the escort script for escorts who have to jump to keep up. That's sorta cheaty though.iforgotmysocks wrote:I was just suggesting that a cooldown on the jd might be an idea cause it rly wasn't fun chasing down those ships the entire time. ^^
Agreed. Squadron leader (or the MICT ship, if not in a squadron) shouldn't pursue beyond radar range, and should go back to patrol when it's done.iforgotmysocks wrote:Well, the idea to patroll a sector is kinda to keep it safe. ^^
If your caps jump off and fight some enemies in another system u couldn't care less about while ur stations get wrecked, it's a little silly.
iforgotmysocks wrote:Nah all my ships had a 5 star crew and they used the old tolerance, cause i changed it back to test further. Thats when i noticed that caps running the vanilla script still are able to fire missiles alot more frequently than ships running ur script. But that doesn't rly matter much then, anyway. ^^
Code: Select all
<do_if value="@this.$config_attackenemies">
<shoot_at object="this.ship" target="$target" slot="tag.secondary_slot" tolerance="15.0deg" locktarget="true" weapontype="combat" additional_targets="$MICT_PrimTargets.list"/>
</do_if>
Were they in a position to fire? They used to move around a lot more, but that was changed a while back. They now tend to try and find a good position and orientation, and stay there relative to their target.iforgotmysocks wrote:All with ships running ur script. In vanilla, that actually wouldn't happen, cause they do stop firing. ^^iforgotmysocks wrote:Edit4: Hmm, seems ships don't move, but their turrets aggress everything red even on defensive without any aggression towards themselfs.
w.evans wrote:Sounds like they aren't running MICT. Is this with your example above with the bad DO?
They would if the leader of the squad is a MICT ship (4/4/4 or better skills). In this case, wanted them to stick with their squad until they're fairly close to their target, so they use their leader's radar and don't engage until they come to within half of their leader's radar range.iforgotmysocks wrote:Was the steam version and yes, they did. (Simple fighters though, so pilots also with a fighter-pilot as leader. Not sure if you adjusted them, cause with ur script they can't attack.) ^^
Heh. Fair enough. To be honest though, I haven't actively been working on the mod since the last update, although that wasn't very long ago. Not much more planned, although there are some optimizations in the DO script that i've been meaning to do.iforgotmysocks wrote:Hm, i hope u could follow some of my thoughts there.
I also hope to be around long enough to see where this mod is going. I like the start, but right now i feel more like i wanna keep half of the vanilla options and half of what ur script is offering. xD
Course i did. ^^w.evans wrote:Hope you deactivated the Nexus install then. Come to think of it, nothing bad should happen if both are installed. Part of the mod would be loaded from one folder, part from the other, but since they're identical, should still work. But haven't tried so don't know.
Hm, gonna test again then, was pretty sure about it though.w.evans wrote:That bit was actually stolen straight from vanilla. Been trying to keep things working with vanilla until i bother to change something so that all the rest of it keeps vanilla functionality at least.
Looking at the vanilla script, $allowothertargets is true by default and is called from fight.defend.capital with allowothertargets set to "@this.$config_attackenemies or @$allowothertargets". Didn't change that. It does have a bunch of interrupt handlers that configure $allowothertargets depending on different conditions, the DO Attack setting being one of them, but those should also hold true with MICT since i didn't change those.
Unless. This looks interesting:No. Thought the signal might be called from the captain's attack script and i didn't include it, but it isn't. Which means that this signal, wherever it's called from, should still be called and work. It would mean that the DO should stop firing if he/she was set to 'defend' to begin with then the ship was ordered to do something other than attack or patrol.Code: Select all
<handler comment="update the configuration attack"> <conditions> <event_object_signalled object="this" param="'update config'" /> </conditions> <actions> <remove_value name="$allowothertargets" /> <remove_value name="$attacker" /> <set_value name="$checkrelation" exact="true" comment="check relation by default" /> <abort_called_scripts /> </actions> </handler>
Won't stop them going postal if the DO was set to 'attack' to begin with though.
That was actually just about the defense mode, not about boarding. ^^iforgotmysocks wrote:That stuff just drove me mad when i tried ship boarding. ^^ And on defense u kinda only wanna shoot what shoots you. Otherwise the defensive mode would be kinda pointless. That was my thought there.w.evans wrote:Yeah. There actually is code in there that makes them stop firing when their target is being boarded, but i kept it commented out because i don't really like the idea. The best implementation of that that I'm aware of was in cicero111's Better Turrets where, if DO is set to defend and a target is being boarded, they would keep firing but only on surface elements. I think beaver1981's CES has something similar.
You could activate it yourself if you want to play around with it. It's the bit that starts with:
<do_elseif value="@$enemies.{$i}.boarder">
Nah, i ment I's themselfs. Read my post again, i think u were missing the point. Right now I's with the bad DOs(vanilla) script are stronger cause they can apply their missile and torp dps (around a third) while MICT DOs can't use them at all if not perfectly aligned down.iforgotmysocks wrote:Ah i see. I suspected something like that. However, if you wanna keep it "balanced" you should change the regular script too.w.evans wrote:You mean the change to the torpedo? Wasn't so much a balance thing as much as i wanted to change its role somewhat drastically.
If you mean the DO firing, having them fire all the time with those torpedoes is dangerous, to any friendly factions or stations that might be close by and to your own ships. (which eMYNOCK would probably attest to)
Nooot anymore. Gonna try to reproduce it soon-ish.w.evans wrote:Agreed. Squadron leader (or the MICT ship, if not in a squadron) shouldn't pursue beyond radar range, and should go back to patrol when it's done.
If it doesn't, got a save? Have some time to debug this weekend.
That happend to a Fulmekron actually and ya, it was in position to fire. ^^w.evans wrote:Sounds like they aren't running MICT. Is this with your example above with the bad DO?
Were they in a position to fire? They used to move around a lot more, but that was changed a while back. They now tend to try and find a good position and orientation, and stay there relative to their target.iforgotmysocks wrote:All with ships running ur script. In vanilla, that actually wouldn't happen, cause they do stop firing. ^^
If they weren't, could this be the case with the I i described earlier where it goes to torpedo range but with some other side oriented?
Otherwise, it's a bug and should be fixed. Save would be nice. Haven't seen that happen, and don't know what could cause it.
Alright, gonna check out the boarding stuff.w.evans wrote:Heh. Fair enough. To be honest though, I haven't actively been working on the mod since the last update, although that wasn't very long ago. Not much more planned, although there are some optimizations in the DO script that i've been meaning to do.
edit: about that boarding thing, it's missing this bit at the end, right before that do_elseif closes:
<remove_from_group group="$enemies" object="$enemies.{$i}"/>
Getting rid of the <break/> right before the end of that do_elseif makes it so that they don't stop firing on anything else hostile in the vicinity.
Code: Select all
w.e_mict
aiscripts
fight.attack.object.fighter.bigtarget.xml
fight.attack.object.fighter.xml
MICT.move.escort.capital.xml
move.escort.capital.xml
move.escort.xml
move.generic.xml
move.refuel.xml
player.default.xml
<DIR> w.e_mict\extensions\carriers\aiscripts\
move.generic.carrier.xml
Code: Select all
<DIR> w.e_mict\extensions\carriers\aiscripts\
move.generic.carrier.xml