sNeaksieGarrett on 15/7/2013 at 18:04
That worked for the breath showing up more regularly, but I'm back to the same issue with guard 611's breathspout. If I have the camera positioned near the bow guard and walk around the corner to see where the guard spawns from, near the odometer, I see a stray breathspout at his spawn point.:erg::eww:
LarryG on 15/7/2013 at 18:15
Ah! That's how you reproduce it! That's what I need to see. Let me investigate and see what that's about. Everything else was just supposition about the cause, but now that I can see it, I can maybe figure it out. Stay tuned.
Edit: OK. The breathspout that is getting left behind definitely is the breathspout that is supposed to be attached to the guard. The thing is that despite it being left behind the A/R values show that it is in some way still attached to the guard, at least as far as the stim distances are concerned, just not as far as the renderer is concerned. Grrrr!
There needs to be some way to make the blessed thing stick where it belongs ... I vaguely recall a similar problem with keys or other items attached via contains links getting left behind when out of sight and there being a fix for it, but I can't dredge it out of the shredded mists of my memories. Maybe RSoul or Yandros or NV or someone else more knowledgeable will happen by and know what I am talking about. But there should be a fix to keep contains linked stuff from doing this ...
sNeaksieGarrett on 15/7/2013 at 18:37
I should be a bit more specific, just to tell you how I reproduce it. (yes, it is a rather finicky, stubborn bug ain't it?)
1. Start your camera either near the bow guard, or on the skylight(?) before getting to the manor.
2. Walk around the back of the manor (not the front) and look toward the green guard's spawn point. You should see some breath.
If you try to look for it by walking to the front of the manor coming from the skylight and the archer fight, it won't appear. Strange I know, but you have to be coming from a certain angle. Also note that it's kind of random, so you may want to walk around and pause for a bit looking to see if there's any breathspouts floating in the air.
This is easy if you turn AI Aware off and then you can observe. Hope that helps.
Oops, I should also note that it's more noticeable with both guards having their breaths being emitted. I had disabled it for the bow guard so that we only had to work with the green guard. With both AIs emitting breath, you might see for example another breath on the right side of the manor closest to the skylight/way you came from in the beginning.
Edit: Hmm, I sure hope there is. None of the other methods of attachment seem to works as well as the Alternate Contains for this. Main reason I'm using that method is because I was told this method and it seems to work (minus this annoying bug of course), but also because it allows me to position it at just the right spot in front of the guard's mouth, since dromed as the AltLinkLocation prop.
LarryG on 15/7/2013 at 19:14
I can reproduce it. And I'm trying to figure out what can be done to fix it ...
What I'm seeing is that contains linked objects are not guaranteed to stay physically attached. They get rendered as thought they are, but they really aren't. For example, the key on the guard's belt is also left behind, but it is rendered as though it were attached.
This leads me to deduce that what you need is not for the emitter to be attached by the contains link, but for the breaths to be so linked when they are created. The only way I know to do that is to use NVCreateAndLink instead of the emitter setup. So instead of TrigRoomObject on the emitter, try a marker which you attach (by some other means than Contains link, so it won't get left behind) to the AI which has the TrigRoomObject and NVCreateAndLink scripts, and the Editor>Design note: NVCreateAndLinkCreate="Breath"; NVCreateAndLinkLinkType="Contains"; NVLinkBuilderLinkData#Field="Alternate"; NVCreateAndLinkLinkSource="whatever the ai's name is". You may need to have NVRelayTrap on the marker as well to convert the TurnOn into a repeating BreathOn command and have NVCreateAndLinkON="BreathOn" to make the breath puffs continue repeating until the marker gets a TurnOff. The thing I'm not certain about is the NVLinkBuilderLinkData#Field="Alternate" bit. The script says:
Quote:
You can specify data for the link by using NVLinkBuilderLinkData#Field and NVLinkBuilderLinkData#Value (where # is a number between 1 and 10, maximum). To specify booleans, use 1 for True and 0 for False; to specify vectors use the format: "0.00, 0.00, 0.00".
If the link you want to create has no fields (such as ScriptParams links), then you must omit NVLinkBuilderLinkData#Field.
To find out the name of the field, create the appropriate flavour of link in DromEd and hit Edit Data. The field name is exactly the same as the label next to each box, including spaces and other special characters. If there are no labels in the Link Data window, then that link flavour has no fields (and you need to omit NVLinkBuilderLinkData#Field).
For example, valid fields on a Flinderize link are: "Count", "Impulse", "Scatter?", and "Offset".
If you specify an invalid link flavour or an invalid field name, DromEd will throw up an error message and possibly crash when this script is triggered. You have been warned.
But the Contains link's data is a dropdown not a series of named boxes, so I'm just guessing that's what you do to specify the "Alternate" selection. The script documentation is not helpful in this case. :p
sNeaksieGarrett on 15/7/2013 at 20:10
I'm confused. If we have the NVCreateAndLink, then why do I need to attach the marker to the ai in some other fashion?:confused:
Also, I don't follow you on the BreathOn? Where does that come from? Do I have to make a new stim or something?
In any case, I just tried setting up a marker using just the NVCreateAndLink properties, even tried putting NVRelayTrap. Nothing shows up at all.
Wait a minute, mid post realization. I'm going to need some more links! The breathspout also links to itself via CD, and it is also Route linked to the room brush.
edit:
But yeah, it seems like all I'd need for the Alternate data is the NVLinkBuilderLinkData#Field="Alternate"; Or maybe not? THe documentation seems to be only talking about links that have field names, whereas the Contains links have no fields, just a dropdown as you said. Hmm.
Well, I just realized something though. Wouldn't a CD link/Route link using NVLinkBuilder require a concrete object and not one freshly created in game mode? I can't use NVCreateAndLink twice, because then it'd create more than one of the breathspout. Problem is, I need to add more links after the first one is created.
Also, I just tried adding these:
Code:
NVCreateAndLinkCreate="BreathSpout"; NVCreateAndLinkLinkType="Contains"; NVLinkBuilderLinkData#Field="Alternate"; NVCreateAndLinkLinkSource="Greeny"; NVCreateAndLinkON="BreathSpout"; NVLinkBuilderLinkType="Route";NVLinkBuilderLinkSource="BreathSpout";NVLinkBuilderLinkDest="FieldstnmnrOutside"; NVLinkBuilderLinkType="ControlDevice";NVLinkBuilderLinkSource="BreathSpout"; NVLinkBuilderLinkDest="BreathSpout";
No luck. Note that I haven't tried linking the marker to the guard at all, because I thought that's what NVCreateAndLink was for. I'm actually not sure how to link it. Maybe mesh attach? I've also tried using the -xxxx format for the Create link and the Source link. Also, Greeny is what I named the guard so I wouldn't have to use 611.
I tried adding NVSpy and I get this:
NVSpy: "DarkGameModeChange" on Marker(2550) from (0)Edit2: Oh, Interesting, the mono window is reporting more that I didn't see in-game:
NVSPy: "Sim" on Marker(2550) from (0)
NVSpy: "ObjRoomTransit" on Marker (255) from (0)
NVSpy: "EndScript" on Marker (2550) from (0)
LarryG on 15/7/2013 at 21:00
The reason you want to attach a marker with all the breath stuff on it is so that the AI doesn't need TrigRoomCreature and have TurnOns sent to it all the time. I thought isolating the breath stuff would make it easier to set up and maintain.
You don't need a new stim. NVRelayTrap can do several things, one of which is turn the generic TurnOn/TurnOff messages into custom messages which are easier to debug. So I'm suggesting that you have NVRelayTrap convert the TurnOn/TurnOff messages generated by TrigRoomObject into BreathOn/BreathOff messages, and that you use the repeating message feature of the script to have the BreathOn messages sent periodically. The destination for the messages is the marker itself via NVRelayTrapTDest="[Me]". That way the NVCreateAndLink will work off of BreathOn and not TurnOn (which you get only on outside room entry).
I don't see why you need any other links on the Breath. Breathspout needed them, but the breath didn't. The marker may need the Route link, but not the breaths.
Another thought, if you aren't using robots in the mission, there is a script RoboTeam that provides the puffs of steam that robots make. Maybe it could be adopted / abused, I don't know, I don;t see a way to turn it off/on when going inside/outside.
Quote:
RoboSteam
gen.osm 2
Turns on and off a RoboSteam particle SFX that links to the object with ParticleAttachement. When a flicker tweq fires, the SFX is activated and is deactivated after the time specified in Script\Timing. When the AI is alerted, the flicker tweq rate will be set to 2000.
You are not using NVCreateAndLink to create breathspouts. You are eliminating the need for breathspouts and using NVCreateAndLink to create breaths that get attached to the AI's mouth and then naturally fade away.
sNeaksieGarrett on 15/7/2013 at 21:23
Oh. I didn't realize that's what you meant, I just figured you were shortening the word to breath, i,'m sorry. I still don't understand what breathOn means. Are you using that as shortcut for something else?
OK wait, I think I get it now. Your saying that breathON is like saying "breath, TurnON", and typing that into the designer note will be the same as telling Breath to turn on, right?
The Watcher on 15/7/2013 at 21:24
If it's possible to position the particles appropriately on the AI using a particleattachement link (much the same setup as the steam puffs for the robots, only in front of the AI's mouths), I could pretty easily put together a script that does a similar job to RoboSteam but with the added ability to turn it on or off as needed. If you want me to do it, yell and I'll see what I can whip up for you.
sNeaksieGarrett on 15/7/2013 at 21:51
ParticleAttachment works, but it emits indefinately by default with my breath, and it has the breath emit on top of the AIs head, instead of in front of his mouth. I'll take a look at a robot.
LarryG on 15/7/2013 at 21:58
I thought the issue with ParticleAttachement was with the emitter idea and not with directly attaching to the AI ... oh wait, was that the case where it always attached to the object and never to the joint?