Talking to objects

A refuge for those migrating from the fallen DXEditing.com and a place for general discussion relating to Deus Ex editing (coding, mapping, etc).
User avatar
Delta2501
UNATCO
Posts: 124
Joined: Thu Jun 18, 2009 10:52 pm

Talking to objects

Post by Delta2501 »

I just started with DX SDK and am trying to set up some conversations with non-human objects, like the one with the water cooler and toilet in the Malkavian mod. I can get a human or robot convo to work but not objects and decorations (tried with Microscope, HKBuddha and MIBCarcass). Do I need to change some attributes or create a new item class?

For the record the conversations are set to invoke on frob or proximity of 5. I also gave each object a bindname in their conversation properties (same as their item class).
User avatar
Jonas
Off Topic Productions
Off Topic Productions
Posts: 14224
Joined: Sat Apr 24, 2004 9:21 pm
Location: Hafnia

Re: Talking to objects

Post by Jonas »

*Pokes the Malkavian mod thread*
Jonas Wæver
Chief Poking Manager of TNM

I've made some videogames:
Expeditions: Rome
Expeditions: Viking
Expeditions: Conquistador
Clandestine
Hanfling
MJ12
Posts: 406
Joined: Sun Oct 04, 2009 6:54 pm

Re: Talking to objects

Post by Hanfling »

In DeusEx you could talk to DeusEx.AIPrototype which is also a Decoration. Maybe you should lock at the map.
I demand my DXE User ID back. Launcher for DeusEx, Rune, Nerf, Unreal & Botpack. HX on Mod DB. Revision on Steam.
User avatar
Jonas
Off Topic Productions
Off Topic Productions
Posts: 14224
Joined: Sat Apr 24, 2004 9:21 pm
Location: Hafnia

Re: Talking to objects

Post by Jonas »

It's probably just a problem of the decoration being pushable or something like that, which overwrites the conversation event.
Jonas Wæver
Chief Poking Manager of TNM

I've made some videogames:
Expeditions: Rome
Expeditions: Viking
Expeditions: Conquistador
Clandestine
User avatar
Delta2501
UNATCO
Posts: 124
Joined: Thu Jun 18, 2009 10:52 pm

Re: Talking to objects

Post by Delta2501 »

Thanks guys, after a bit of experimentation I found putting bMovable to false or setting orders to idle does indeed mean you can't converse with an actor, I'm guessing this is stopping the Buddha conversation. BTW bIdle="true" does give Silver Dragon a cool look though. He'd make a good decoration (reminds me of Magus's castle in Chrono Trigger for some reason).

I have a few other questions if that is okay:
How to I make actors die/explode as a result of a conversation? I'm thinking of Trestkon's death after the Scara-Narcissus lecture and the killing the dogs (sorry "wolves") in the Malkavian mod. It would also be good if NPCs could be made to explode/become parts as if they had just been blown up. Any ideas?

What sound editors would you guys recommend for editing mp3 and wav files? I'm looking into cutting and pasting bits of convo audio together into new shapes like in the Malk mod/Deus Ex Machinima video.

How do you change the player character? When I open TNM maps in SDK it is always JC as PC and I was wondering how to make Trestkon the player character.

Finally is there by any chance a list of all the audio files in TNM? I went through the 2500 approx lines in the TNMConvos1AudioMission20.u just working out where they all came from (and found some interesting new dialogue I never came across before) but when I got to the end I realised I hadn't even heard all the day 1 convos, let alone the rest. It would save time looking for specific files if there was a list or at least an indication of roughly what is in each of the 10 audio files.
User avatar
Hassat Hunter
Illuminati
Posts: 2182
Joined: Fri Apr 10, 2009 1:20 pm

Re: Talking to objects

Post by Hassat Hunter »

Well, I have no DX modding experience at all, but I am going to try and answer some questions anyway :lol:.
Delta2501 wrote:bMovable to false does indeed mean you can't converse with an actor
You mean bMovable to true?
How to I make actors die/explode as a result of a conversation? I'm thinking of Trestkon's death after the Scara-Narcissus lecture and the killing the dogs (sorry "wolves") in the Malkavian mod. It would also be good if NPCs could be made to explode/become parts as if they had just been blown up. Any ideas?
Well, for the explosion part just look up a MIB or WIB or something. They explode. Not sure how.
For the killing, this is probably done by mission script (like uncovering characters and such). Set a flag, and have the script kill the NPC if that flag is set.
Well, that's what I think is done...
How do you change the player character? When I open TNM maps in SDK it is always JC as PC and I was wondering how to make Trestkon the player character.
You realise Trestkon is actually a reskinned JCDenton, right? He is still always listed at JC, which is why you can actually play Trestkon in the original DX campaign with TNM.
No idea how they did it though.
Finally is there by any chance a list of all the audio files in TNM? I went through the 2500 approx lines in the TNMConvos1AudioMission20.u just working out where they all came from (and found some interesting new dialogue I never came across before) but when I got to the end I realised I hadn't even heard all the day 1 convos, let alone the rest. It would save time looking for specific files if there was a list or at least an indication of roughly what is in each of the 10 audio files.
Well, you could just search for the appropriate filename in the TNM SDK folder, no? Or do I miss some bigger picture here?
Also, the folders are structured the *exact* same way as the dialogue files, so it should be rather easy to find what you are looking for if you don't change the structure.

EDIT:
Also searching the con-files myself now and seeing the actor "Python". Is that Jonas' unfound secret? I want to find it! :P
EDIT2:
Then again, no responses in the SDK files on Trestkon's word, so maybe not...
EDIT3:
Wow, that felt good. Man, I hate those pesky board guests. "How do I get on the boat?" STUFF THE FUCKING BOAT UP YOUR ASS, BITCH! Killing those wieners just makes me smile.
Hilarious. Shame it didn't make the game. I recall reading somewhere or read it that the game couldn't detect who Abom killed making this line unused.
Can somebody tell me how I can get a custom avatar?
Oh wait, I already got one...
Morpheus
X-51
Posts: 967
Joined: Thu Jan 27, 2005 9:56 am
Location: A planet near mars

Re: Talking to objects

Post by Morpheus »

You mean bMovable to true?
That would be true if you couldn't move the the "Hitler" plant in Malkavania mod, but you can, so I am not sure thats it, or was the hitler plant made differently than a normal house plant?
How to I make actors die/explode as a result of a conversation? I'm thinking of Trestkon's death after the Scara-Narcissus lecture and the killing the dogs (sorry "wolves") in the Malkavian mod. It would also be good if NPCs could be made to explode/become parts as if they had just been blown up. Any ideas?
For a conversation, if you create the NPC the way WIB or MIB explosion code is done, then use a trigger to kill the NPC, which would kill it, as it dies, it would explode as its coded to explode when it gets killed, not KO'd. Now don't ask me what trigger to do that, not sure.
My nature videos: http://www.youtube.com/user/DynamixWarePro
My whistle/flute videos (and some other videos): http://www.youtube.com/user/DXMorpheus
User avatar
Jonas
Off Topic Productions
Off Topic Productions
Posts: 14224
Joined: Sat Apr 24, 2004 9:21 pm
Location: Hafnia

Re: Talking to objects

Post by Jonas »

Hassat Hunter wrote:Well, for the explosion part just look up a MIB or WIB or something. They explode. Not sure how.
Take a look at tnmmission20and22.uc, I think the function to gib Trestkon after the Narcissus convo is in there. We used Shane's MSCallbackTrigger to hook into the script for events like that, but you can just as well copy the code and trigger it with a flag instead, if you don't want to figure out how the callback trigger works.
You realise Trestkon is actually a reskinned JCDenton, right? He is still always listed at JC, which is why you can actually play Trestkon in the original DX campaign with TNM.
No idea how they did it though.
Well... yes and no. Our player class has a hell of a lot of extra code that Deus Ex's didn't (primarily because a ludicrous amount of Unreal code belongs in the player class), so saying Trestkon is just a reskinned JCDenton isn't really fair, he's more like a hugely upgraded JCDenton. We just maintained his default bind name because there was no reason to change it - it's not visible in-game anyway - being able to use him in Deus Ex was a happy side effect of that.
Well, you could just search for the appropriate filename in the TNM SDK folder, no? Or do I miss some bigger picture here?
Indeed, that's why we released the SDK in the first place. Just look at the .con files for the stuff you need and check the corresponding audio folder for the sound file.
EDIT:
Also searching the con-files myself now and seeing the actor "Python". Is that Jonas' unfound secret? I want to find it! :P
EDIT2:
Then again, no responses in the SDK files on Trestkon's word, so maybe not...
Yeah, that's not in the game, so it's not the secret I meant ;)

That was just a random joke character I wrote like 6 years ago, but we never implemented him because he was just a tad too silly and pointless (which is saying a lot). I actually made the decision to cut him before Trestkon's lines were recorded, but I neglected to remove him from the Trestkon script, so Trest's audio for the conversation is all there - if anybody wanted to re-implement the character, you'd just have to record Python's lines and place an actor with the bindname somewhere in the game.
EDIT3:
Wow, that felt good. Man, I hate those pesky board guests. "How do I get on the boat?" STUFF THE FUCKING BOAT UP YOUR ASS, BITCH! Killing those wieners just makes me smile.
Hilarious. Shame it didn't make the game. I recall reading somewhere or read it that the game couldn't detect who Abom killed making this line unused.
Yeah there were a couple of problems with that, sadly. First of all, there was no telling where the player would be at that point, so in most cases he would be too far away from Abom to hear the line. We have a shout trigger that makes sure the line is played no matter how far from the line's owner the player is, but Abom might kill the board guest when the player was half-way across the map, and that would create really weird results.

Secondly, we couldn't really check if Abom killed the board guest in question or if somebody else did, so Abom would still use the line if the player killed the board guest, and that would also be weird. I experimented with putting it in a cutscene, but mid-level cutscenes suck, so I never committed the results. It was a nice little bit of characterisation that I was sad to drop, but I'd rather leave it out than force it on the player like that.
Jonas Wæver
Chief Poking Manager of TNM

I've made some videogames:
Expeditions: Rome
Expeditions: Viking
Expeditions: Conquistador
Clandestine
DDL
Traditional Evil Scientist
Traditional Evil Scientist
Posts: 3791
Joined: Mon Oct 17, 2005 10:03 am

Re: Talking to objects

Post by DDL »

Jonas wrote:We just maintained his default bind name because there was no reason to change it - it's not visible in-game anyway - being able to use him in Deus Ex was a happy side effect of that.
Plus the conversation system is actually hardcoded to assume the player always has a bindname of JCDenton: you could change that by recoding consys.u (and indeed TNM has recoded consys.u to let pawns play anims in convos, and the like) but you'd just be changing it to another hardcoded name, so you'd be in the exact same position without the ability to use Trest in DX.
:smile:
User avatar
Delta2501
UNATCO
Posts: 124
Joined: Thu Jun 18, 2009 10:52 pm

Re: Talking to objects

Post by Delta2501 »

I didn't know there was a TNM SDK!
*Runs off to grab box of delights*
User avatar
Jonas
Off Topic Productions
Off Topic Productions
Posts: 14224
Joined: Sat Apr 24, 2004 9:21 pm
Location: Hafnia

Re: Talking to objects

Post by Jonas »

DDL wrote:you could change that by recoding consys.u (and indeed TNM has recoded consys.u to let pawns play anims in convos, and the like) but you'd just be changing it to another hardcoded name, so you'd be in the exact same position without the ability to use Trest in DX.
I am anal enough that we would've probably done this if we'd decided to recode consys.u before we were well into writing the conversations, however. But by the time we started messing with consys.u, way too many conversations had already been written for us to bother changing the player's bindname, even if ConEdit does have a pretty convenient way to handle that sort of stuff.
Jonas Wæver
Chief Poking Manager of TNM

I've made some videogames:
Expeditions: Rome
Expeditions: Viking
Expeditions: Conquistador
Clandestine
User avatar
Hassat Hunter
Illuminati
Posts: 2182
Joined: Fri Apr 10, 2009 1:20 pm

Re: Talking to objects

Post by Hassat Hunter »

Jonas wrote:Well... yes and no. Our player class has a hell of a lot of extra code that Deus Ex's didn't (primarily because a ludicrous amount of Unreal code belongs in the player class), so saying Trestkon is just a reskinned JCDenton isn't really fair, he's more like a hugely upgraded JCDenton. We just maintained his default bind name because there was no reason to change it - it's not visible in-game anyway - being able to use him in Deus Ex was a happy side effect of that.
Well, I was talking about the skin, not so much the underlying code. Although that might not even be true either in the uncoated version (re-skinned NSF I read it was?). But regardless; a long time ago even I managed to make JC look different with one of Tack's tutorials. And if I can... :P
Then again I ran into troubles with ConEdit only accepting JCDenton and I gave up on making a minor mod (combined with the fact I can't design any decent maps anyway).
Yeah, that's not in the game, so it's not the secret I meant ;)
Darn... Well, more snooping to do I guess.
We have a shout trigger that makes sure the line is played no matter how far from the line's owner the player is, but Abom might kill the board guest when the player was half-way across the map, and that would create really weird results.
:lol:
That would have been hilarious, but I can see the problem. Just walking around Downtown and suddenly hearing *that* out of the blue is certain to freak some people out.
I am assuming "You saved boardguest [Long numer]" is related to saving the guy from Abom, and are thus never played ingame either?
Morpheus wrote:That would be true if you couldn't move the the "Hitler" plant in Malkavania mod, but you can, so I am not sure thats it, or was the hitler plant made differently than a normal house plant?
Have you opened up the Gotem map in the SDK? I am going to assume trigger here. Probably combined with a destroytrigger for that trigger if Hitler is killed.
Same with the UN flag that precedes it.
However I doubt the guy is a regular plant either, considering the massive explosion that follows.
For a conversation, if you create the NPC the way WIB or MIB explosion code is done, then use a trigger to kill the NPC, which would kill it, as it dies, it would explode as its coded to explode when it gets killed, not KO'd. Now don't ask me what trigger to do that, not sure.
What are you asking, how to knock down a NPC with code? Set their HP to 0 and bUnconscious to true. Like happens in DX' tutorial, harvest that missionscript for the exact things to set.
Or do you want to make them explode even when knocked unconscious? In that case I have no idea...

EDIT. Or not listen to me and just refer the code so you don't mess up.
Mission00 Script, Section 'Knocking down an UNATCO Agent':

Code: Select all

	if (localURL == "00_TRAINING")
	{
		// knock this guy out
		foreach AllActors(class'UNATCOTroop', troop, 'Test_Subject')
		{
			troop.HealthTorso = 0;
			troop.Health = 0;
			troop.bStunned = True;
			troop.TakeDamage(1, troop, troop.Location, vect(0,0,0), 'KnockedOut');
		}
	}
Can somebody tell me how I can get a custom avatar?
Oh wait, I already got one...
User avatar
Jonas
Off Topic Productions
Off Topic Productions
Posts: 14224
Joined: Sat Apr 24, 2004 9:21 pm
Location: Hafnia

Re: Talking to objects

Post by Jonas »

Hassat Hunter wrote:I am assuming "You saved boardguest [Long numer]" is related to saving the guy from Abom, and are thus never played ingame either?
Exactly. It was the beginnings of a small subplot involving a secret organisation of board guests, but we scrapped that idea and it became the inspiration for the N00Bz side mission instead :)
Jonas Wæver
Chief Poking Manager of TNM

I've made some videogames:
Expeditions: Rome
Expeditions: Viking
Expeditions: Conquistador
Clandestine
User avatar
Delta2501
UNATCO
Posts: 124
Joined: Thu Jun 18, 2009 10:52 pm

Re: Talking to objects

Post by Delta2501 »

I was wondering how to trigger the death of a character in a convo, presumably by using a trigger. By looking at the convo file I found the death trigger is "Trigger KillTrestkonDelay", but I'm not sure how this would work.

Can someone recommend a tutorial to expain how to make a trigger such as a switch do different things like open door, trigger explosion, kill an NPC etc? Are there any other useful tutorials besides Tack's and the Universal Constructor?

Also could one use a trigger (ideally in a conversation) to create the same effect as the summon/spawnmass command so that a load of live grenades are spawned?

Speaking of grenades, what is the Vortex Grenade name and how do I place them (I can't find it under the TNM ammo in UnrealED)? Is it also possible to edit what kinds of NPC they effect (e.g. make them effect robots)?
DDL
Traditional Evil Scientist
Traditional Evil Scientist
Posts: 3791
Joined: Mon Oct 17, 2005 10:03 am

Re: Talking to objects

Post by DDL »

Vortex nades are plasmanades I believe.

As for doing stuff in convos, you can fire off triggers from convos and do it that way, but you end up needing a vast number of fairly context specific triggers. I would tend to simply set a flag in the convo and then check it via missionscript in timer(). For example:

Code: Select all

class Asplodyconvoscript extends missionscript;

function timer()
{
     local scriptedpawn P;

     super.timer();

     if(flags.getbool('TiemToDie') && !flags.getbool('PawnAsploded'))
     {
          foreach Allactors(Class'scriptedpawn',P,'YourPawnTagHere')
          {  
               P.HealthTorso = 0;
               P.Health = 0;
               P.TakeDamage(10000, P, P.Location, vect(0,0,0), 'Exploded');
          }
          flags.setbool('PawnAsploded',true);
     }
}
Post Reply