---------------------------
     MPConversations 
---------------------------

Author: Cozmo
Release date: 28/12/2015
Author's site: https://sites.google.com/site/cozzzynet


---------------------------
 What is MPConversations?
---------------------------

MPConversations is a mod-tool that I created for my RPG projects, to speed up the creation of missions for Deus Ex Multiplayer. With this, missions never need to be hard-coded, and can be created from within UnrealEd itself - with no coding required. It reduces the time required to make MP missions from hours of tedious copy-pasting to about 5 minutes of work. Unfotunately, I failed to get it working in 2011 and gave up, but revisited it years later (2014).

Warning: While this mod does work, note that it's not fully tested or polished. I can't work on it any more, so I'm releasing it as-is. If you'd like to use or modify MPConversations - please do! Just see permissions at the bottom.


---------------------------
 Installation
---------------------------

Move MPConvo.u to your DeusEx\System folder.

Open DeusEx\System\DeusEx.ini, use CTRL+F and search for EditPackages=

You will find a list of these lines. Add a new line reading:

EditPackages=MPConvo


---------------------------
 How it works (logic)
---------------------------

To use this mod, there are only two values to understand: Mission Number, and Mission State. These are both just integers.

 * MissionNumber refers to which mission an object is part of (you can have multiple missions in a map). Mission 0 doesn't exist; it must be 1 or higher to work.

 * MissionState refers to the state of the mission (like flags). Objects can behave differently depending on the state of the mission. Each player has their own.


EXAMPLE:

We have a simple (example) mission - a door is locked, and can only be opened by bribing or killing the nearby NPC. How this would work:

 - The default MissionState is 0. The door would ignore you on 0, and only open for 1 or higher.

 - The NPC, at MissionState 0, would offer to open the door for money. If you pay him, MissionState will be 1, and you can now use the door.

 - Additionally, we can set it so that killing him at MissionState 0 will set it to 1 - also unlocking the door (you can add text implying that you took his keys)

That's it! Obviously, you'd flesh it out with dialogue and more options, but functionally, this is all you need to understand. Make sure every object in the mission has the same MissionNumber. See the notes at the bottom.


---------------------------
 How to use
---------------------------

 MPConvo_Essential:

Your map needs (only!) one 'MPConvo_Essential' actor for the mod to function. So first, in the Classes tab, go to Actor>Info>Mutator>MPConvo_Essential and place one anywhere in the map. This object is used to store mission data, but if you right click this object and open its properties, it gives you extra options, such as forcing server settings on augs/skills and setting default player appearance.


 MPConvoPawn:

NPCs in this mod are all MPConvoPawn actors. Add them from Actor>Pawn>ScriptedPawn>MPConvoPawn. In the editor, they will appear as a mannequin. Right click them, and click properties. Open the +MPConvoPawn section, and set their MissionNumber (0 by default, which means no mission), their name (pawnName) and their appearance (AppearAsClass: click the three dots on the far right of the field, and choose a ScriptedPawn class [eg. Manderley]. It will mimic the appearance of the class in-game. Alternatively, you can manually set the model and skins in +Display.)

Under the +MPConvoPawn section, you'll also notice an '+_Interactions' section. Open it, and you'll find 10 more (0-9). These are all the same. Open the top one, and the first value is 'CheckMissionState', 0 by default. This is the MissionState where all the stuff in the section can happen! You can check for an exact value, or a range from CheckMissionState to CheckValue2 (eg. from state 0 to 5, or 2 to 999999). So, if you leave CheckMissionState as 0, and then write some dialogue under +convoMessage, this is the dialogue you'll see when you right-click them in-game.

Basically, anything here starting with convo_ will happen after a successful dialogue (except for CreditsCost [give them credits] and NeedConfirmation [player needs to agree], which are part of it). You will mostly be using convo_Event and convo_SetMissionState (which does nothing at the -999 default).

And anything starting with death_ is stuff that happens if you kill the NPC, of course.


 MOVERS:

Actor>Brush>Mover>DeusExMover>MPConvoMover. It's a normal DeusExMover, except it can be set to only open on certain mission states, and can also set mission state.


 Triggers:

MPConvo comes with a set of useful triggers, which can check/set MissionState and do other stuff like teleport the player, remove their weapons or items, charge them money, give them skills or whatever. Set their Tags, and call them through Events in MPConvoPawn or elsewhere. You can find MPConvo_Trigger (and its useful child-classes!) under Actor>Triggers>Trigger>MPConvo_Trigger. Remember that you can use Triggers to run your own code (see below).


---------------------------
 THINGS TO NOTE:
---------------------------

 * You can have up to 128 missions (MissionNumber) on a map. There is virtually no limit on MissionState (integer limit: over 2 billion).

 * NPCs have 10 maximum '_Interactions'. This means 10 different sets of behaviour, 10 full conversations, etc. It's more than enough.

 * You can make CO-OP missions, but they're -not fully tested-. They behave like normal missions, except MissionState is the same for all players, and dialogue, rewards etc are shared.

 * Remember that you can run your own code through MPConvo. Just use any Event to call your own object, and it will run that object's Triggered() code. Use MPConvo_Trigger to set mission states.


---------------------------
 Permissions
---------------------------

You can modify MPConvo.u, as long as you provide a different Unreal Package name

You can distribute MPConversations, modified or not, as long as you include this readme without modification


