tagnames being stripped

Discussion in 'Fallout Tactics Modding' started by MagnumOpus, Apr 16, 2007.

  1. requiem_for_a_starfury

    requiem_for_a_starfury So Old I'm Losing Radiation Signs

    Apr 3, 2003
    Edit. Nope sorry there doesn't appear to be. <user> is used in the text log window but it doesn't work in the click speech window.

    Oh and in future

    edityourpost

    :shock:
     
  2. MagnumOpus

    MagnumOpus First time out of the vault

    40
    Apr 1, 2007
    oh sorry. did i double post or something?
     
  3. requiem_for_a_starfury

    requiem_for_a_starfury So Old I'm Losing Radiation Signs

    Apr 3, 2003
    Yep.

    Back on topic you'll just have to make your text refer to the characters in a generic way. Though you can change it based on gender or species. Though that's easier done with the main character.
     
  4. MagnumOpus

    MagnumOpus First time out of the vault

    40
    Apr 1, 2007
    so far everything is working famously. I wrote out the entire script first, and then added all the nodes. the innitial clickspeech is always-set clickspeech to default A. I added a second node like you suggested which is speech event default A occoured-change clickspeech to default B which contains all the choices. this prevented double occourences of clickspeech just like you said it would.

    I made the choices red, yellow, green, and blue with the system described by red on DAC, and it looks great.

    I have added "back" to some of the choice menus so that the player can go back to a previous section of the dialogue and make a different choice.

    I'm also adding speech event occoured-change clickspeech to (a previous instance of dialogue) for dead end instances of dialogue so that the player can continue their discussion with the npc.

    My script contains some profanity so i'll edit it with ** or something for the purposes of this forum, and leave it in its origional state on my site.

    when i'm all done i'd really appreciate it if you'd give the tutorial on my site a look over before i post it here so that it will be in proper working order when i post it.
     
  5. requiem_for_a_starfury

    requiem_for_a_starfury So Old I'm Losing Radiation Signs

    Apr 3, 2003
    If it's profane post it on DaC. :twisted:
     
  6. MagnumOpus

    MagnumOpus First time out of the vault

    40
    Apr 1, 2007
    I've been working on the dialogue system for about five hours now. I'm having trouble working out the bugs, but im sure i'll get them straightened out eventually.

    i might be doing something wrong, but it seems that if i add the "what will it be" node to keep the speech from duplicating, the editor forgets the innitial speech event thus repeating what will it be over and over again.

    I also have some instances where the wrong speech comes up, but thats probably due to an error i made somewhere in the nodes, or triggers.

    if i cant make a simple fix with basic triggers then i'll probably go back to variables. I'm about 80% sure i can fix the dialogue duplication with variables.

    This system may end up being a bit more complicated than we had hoped, but the point is that it WILL work eventually.

    i think i've earned myself a break so im going to switch the nerdbox off for a while.
     
  7. requiem_for_a_starfury

    requiem_for_a_starfury So Old I'm Losing Radiation Signs

    Apr 3, 2003
    This is something I keep forgeting myself, but the speech occurred condition isn't like a variable where once it's fired it flips a switch that will affect any future triggers. The speech occurred condition is a now and now only variable. The moment you click on someone and their speech window comes up is the speech occurred event, not the previous event not future events but there and then.

    To put it another way all the speech occurred condition does is tell the game you've spoken to a character, and basically all the speech event does is tell the game which character.

    This is why I said it's so beautifully simple, unlike variables which need to be set true/false and back again it only needs to change the click speech.

    So with the intermediate trigger you need to change the speech event to point at the second event not the first. But really you'd only need to have this a couple of times in the first map so you can add a reminder to the text to unequip the letters before talking to the npc again. Once the player has gotten used to the system then it shouldn't matter about the text repeating itself, unless you prefer it not to.

    So in your example the player talks to Kurt, gets the dialogue choices, this doesn't need any item equipped condition it just needs speech occurred - change click speech. Then the second click speech will need the four triggers with the ABCD equipped conditions.
     
  8. MagnumOpus

    MagnumOpus First time out of the vault

    40
    Apr 1, 2007
    I am thrilled to inform you that after working on the dialogue system all day long it finally works. I changed some things. I used some variables. I had to write a bit of extra code. The end result in my opinion is a functional flexable system that will allow very very complex speech trees. I'm quite proud of it. I will sum it up for you tomorrow. right now i need some rest. I hope you will be as pleased as I am. There may well be a better way to do it, but at least now, those of us interested in making a FOT campaign with some real honest to god rpg content can do just that.
     
  9. requiem_for_a_starfury

    requiem_for_a_starfury So Old I'm Losing Radiation Signs

    Apr 3, 2003
    Dude it already has some real honest to god rpg content... IT HAS STATS!!! :P :roll:

    Seriously though good work. :whistle:
     
  10. MagnumOpus

    MagnumOpus First time out of the vault

    40
    Apr 1, 2007
    STATS LOL!!! good one.

    ok here goes.

    I changed the system to function with variables. the following shows exactly how they look in the editor and what they do.

    -------------------------------choice variables----------------------------------

    ChoiceA = True
    ChoiceA = False
    ChoiceB = True
    ChoiceB = False
    ChoiceC = True
    ChoiceC = False
    ChoiceD = True
    ChoiceD = False

    All the true variables become true when the desired choice item is equipped, and they remain false when no choice item is equipped.

    ----------------------------Dialogue Variables----------------------------------

    C.F.B. Variable 00
    C.F.B. Variable 01
    C.F.B. Variable 02
    C.F.B. Variable 03
    Reset C.F.B.

    each numbered variable is assigned to dialogue instances with multiple choices. the trigger is "Speech event occoured- Set variable [C.F.B.] to [appropriate number]. I created a variable for each branch in the speech tree, so as you can see there are four branches. The Reset C.F.B. variable was for use while testing the speech tree. by equipping choice A, and B at the same time this variable would reset the speech tree allowing me to check for errors if i ran into a dead end.

    here is the dialogue for two branches. I will explain how everything works in parentheses and brackets in between dialogue entries.


    ///
    /// Catfish Bob
    ///

    (When the player clicks on Catfish Bob for the very first time they see the dialogue for Catfish_Bob_DefaultA. the trigger is Always-set clickspeech for Catfish Bob to Catfish_Bob_DefaultA.)

    Catfish_Bob_DefaultA = {Howdy. Heck of a day ain't it?}


    [Branch For C.F.B. Variable 00]

    (Speech event occoured Catfish_Bob_DefaultA-set clickspeech for Catfish Bob to Catfish_Bob_DefaultB changes the clickspeech to the first multiple choice menu)

    Catfish_Bob_DefaultB = {What can I do ya for?\n\n

    <Cr>A. Well uh........ why do they call you catfish bob?<C>\n\n

    <Cy>B. How long have you been living out here in this toxic swamp Catfish Bob?<C>\n\n

    <Cg>C. I noticed that you have a diving board on your porch.... Tell me you don't swim in the toxic swamp.<C>\n\n

    <Cb>D. No offense Catfish Bob, but why do you insist on living in this ghetto f***ing shack? We have plenty of sturdy building materials in the ranger center warehouse.<C>}

    (speech event occoured Catfish_Bob_DefaultB-Set Variable C.F.B. to 00 is used instead of speech event occoured for making your menu selection. It prevents double speech, writing extra nodes to prevent double speech, and instances where the editor would get confused, and post a reply from the wrong menu.)


    (as you will see how easy it is to navigate through the menu selections. because of the way I have the triggers and variables set up one only need equip the tagged item and then un equip it to change the dialogue. the player would then click on Catfish Bob and recieve a new instance of dialogue.

    The triggers are set so that if the player reads a dialogue instance that has another menu of choices, a new variable is assigned so that the player can make new choices. if the player selects a dialogue instance that is a dead end a speech event occoured trigger will set the clickspeech back to the choice menu.

    There is also an option in some menus called "Back". selecting back will set the variable to an unassigned value so that the editor will not display any undesired responses, and set the clickspeech to Catfish_Bob_DefaultA. The player can then click on Catfish Bob again to display the first dialogue choice menu, and reset the variable to 00)

    [Replies according to menu selections]

    (If you select menu option A you wind up on another branch. here are the triggers. Variable ChoiceA is True, Variable C.F.B. is 00- set clickspeech for Catfish Bob to Catfish_Bob_Reply_A.

    once the player clicks on Catfish Bob to display the dialogue a trigger occours to assign a new variable that will allow the player to make choices from the new menu. the trigger is Speech event occoured Catfish_Bob_Reply_A- set variable C.F.B. to 01)

    Catfish_Bob_Reply_A = {Ya know, I don't rightly remember. I reckon my first name is Bob, but I've forgotten the rest. It's probably a nickname i got before they bombarded the earth with all them nukes. Since I can't remember my real name I'm pretty much stuck with this one.\n\n

    <Cr>A. Exactly how old are you?<C>\n\n

    <Cy>B. Can't remember your real name? What are you senile?<C>\n\n

    <Cg>c. Well, as far as nicknames go Catfish Bob is pretty sweet.<C>\n\n

    <Cb>D. Back<C>}

    (The rest of the choices dont lead to any new branches. the triggers to set these dialogues are variable (whichever choice item you decide to equip) is true, Variable C.F.B. is 00-set clickspeech to (whichever dialogue corresponds with the choice item.

    once the player clicks on Catfish Bob to display the dialogue there is another trigger that changes the clickspeech back to the menu so that the player can make more choices. the trigger is speech event occoured (whichever speech event you chose)-set clickspeech to Catfish_Bob_DefaultB.)

    Catfish_Bob_Reply_B = {I'd say I been livin round here bout fifty five years or so. D*** peaceful out here, and the radioactive swamp keeps all the troublemakers out.}

    Catfish_Bob_Reply_C = {Absolutely! Nothin beats a nice radiation bath in the mornin. Keeps the bugs from laying their eggs in my skin.}

    Catfish_Bob_Reply_D = {Lookie here buddy, I preciate yall wantin to do me a favor and all, but i'm doin just fine out here in my cozy little shack. I don't need no fancy schmancy bricks to make me a home. I got everything I need right here.}


    ///
    ///
    ///

    [Branch for C.F.B. Variable 01]

    (The variable for making menu choices is now 01 thus limiting the choices to the new menu, and preventing choices from other menus from displaying.)

    Catfish_Bob_Reply_A = {Ya know, I don't rightly remember. I reckon my first name is Bob, but I've forgotten the rest. It's probably a nickname i got before they bombarded the earth with all them nukes. Since I can't remember my real name I'm pretty much stuck with this one.\n\n

    <Cr>A. Exactly how old are you?<C>\n\n

    <Cy>B. Can't remember your real name? What are you senile?<C>\n\n

    <Cg>c. Well, as far as nicknames go Catfish Bob is pretty sweet.<C>\n\n

    <Cb>D. Back<C>}


    [Replies according to menu selections]

    (The triggers here for changing the clickspeech are the same as above except that the variable is 01 instead of 00 [Variable C.F.B. is 01, Variable (whichever choice you made) is true-change clickspeech to (whichever choice you made)], and as before there is a speech event occoured variable to return the clickspeech to the choice menu.)

    Catfish_Bob_Reply_AA = {I'm one hundred and sixty seven years old. Funny how I can remember my age but not my name doncha think?}

    Catfish_Bob_Reply_AB = {Hey buddy, save yourself some time and jam all your smart alec remarks right up your a**. Otherwise I might be inclined to smack the dog s*** out of you. If you was as old as me you might be inclined to forget a thing or two.}

    (this choice will wind up leading the player to yet another branch, and will change the variable to 02 thus limiting the dialogue options to the new menu)

    Catfish_Bob_Reply_AC = {Well thank ya kindly. Here. Have a Nuka Cola on me. Sit down and take a load off if ya like.\n\n

    <Cr>A. Sounds like a plan. I could use some good conversation.<C>\n\n

    <Cy>B. Sorry man. I'm on duty right now. How bout a rain check?\n\n<C>

    <Cg>C. Back<C>}

    (the trigger for the back option is as follows: Variable C.F.B. is 01, Variable ChoiceD is true- Set variable C.F.B. to 99, Set clickspeech to Catfish_Bob_DefaultA.

    this will take the dialogue back back to the very beginning. setting the variable to 99 keeps unwanted dialogues from occuring because there are no triggers that use variable 99.

    after the player clicks Catfish Bob Again and gets Catfish_Bob_DefaultB the variable resets to 00 and the entire system starts over.)

    Catfish_Bob_Reply_AD = {<Cb>D. Back<C>}

    ------------------------------------------------------------------------------------

    well there you have it. I perfer to use windowed for my nodes because it gives the player time to read everything, and it lets you look at Catfish Bob's cool headshot.

    If you have any questions, or suggestions do let me know. I may have left something out or made an error or two. I'm a touch dislexic so writing detailed, in depth information is quite a task for me. if you see any problems please point them out. I tend to make most of my mistakes with numbers.

    I know this system is a bit different from what we have been discussing, but it works quite well. I'm very proud of it.

    I will begin work on the tutorial with the entire speech file showing all four branches next week some time.
     
  11. requiem_for_a_starfury

    requiem_for_a_starfury So Old I'm Losing Radiation Signs

    Apr 3, 2003
    You'd need to use windowed anyway, floating speech wasn't meant for dialogue.

    I still think just using speech occurred and item tagged equipped is better. Though I need to do some testing to confirm that, but if you are happy with this system go for it, everyone has their own methods. The important thing is using the item equipped ABCD a speech tree can be improvised. :)

    I only suggested to have an intermediate dialogue to teach the player a new system. Unfortunately there will always be players who don't read the manual or do the tutorial maps, so unless the first mission starts in a locked room with the only way out is by getting the player to talk to an instructor, the first few people the player can talk to with multiple options will need an out of character note.

    There isn't actually anything wrong with double speech, even with all the variables the player will still need to learn to equip and unequip the letters before continuing.

    BTW you don't need to end a sentence with <C> when the next sentance begins with a new colour tag.

    With any system the modder will need to write it out before hand and use clear titles for the triggers, speech nodes and speech events to avoid confusion and linking to the wrong events. I would of thought adding variables would add even more opportunity for errors?

    With your example you can do away with the intermediate dialogue and just add the out of character note to the first click speech.



    Then just start Catfish Bob with the Default A speech node as his initial click speech.


    Catfish_Bob_DefaultA = {Howdy. Heck of a day ain't it?}

    Trigger Bob_DefaultA:

    condition:
    speech bob1 occurred

    action:
    change click speech to bob2



    Catfish_Bob_DefaultB = {What can I do ya for?\n\n

    <Cr>A. Well uh........ why do they call you catfish bob?\n\n

    <Cy>B. How long have you been living out here in this toxic swamp Catfish Bob?\n\n

    <Cg>C. I noticed that you have a diving board on your porch.... Tell me you don't swim in the toxic swamp.\n\n

    <Cb>D. No offense Catfish Bob, but why do you insist on living in this ghetto f***ing shack? We have plenty of sturdy building materials in the ranger center warehouse.}

    Trigger Bob_DefaultB Choose A:

    condition:
    speech bob2 occurred
    player has more than 0 items tagged A equipped.

    action:
    change click speech to bob_A

    Trigger Bob_DefaultB Choose B:

    condition:
    speech bob2 occurred
    player has more than 0 items tagged B equipped.

    action:
    change click speech to bob_B

    Trigger Bob_DefaultB Choose C:

    condition:
    speech bob2 occurred
    player has more than 0 items tagged C equipped.

    action:
    change click speech to bob_C

    Trigger Bob_DefaultB Choose D:

    condition:
    speech bob2 occurred
    player has more than 0 items tagged D equipped.

    action:
    change click speech to bob_D



    Catfish_Bob_Reply_A = {Ya know, I don't rightly remember. I reckon my first name is Bob, but I've forgotten the rest. It's probably a nickname i got before they bombarded the earth with all them nukes. Since I can't remember my real name I'm pretty much stuck with this one.\n\n

    <Cr>A. Exactly how old are you?\n\n

    <Cy>B. Can't remember your real name? What are you senile?\n\n

    <Cg>c. Well, as far as nicknames go Catfish Bob is pretty sweet.\n\n

    <Cb>D. Back}

    Trigger Bob_Reply_A Choose A:

    condition:
    speech bob_A occurred
    player has more than 0 items tagged A equipped.

    action:
    change click speech to bob_AA

    Trigger Bob_Reply_A Choose B:

    condition:
    speech bob_A occurred
    player has more than 0 items tagged B equipped.

    action:
    change click speech to bob_AB

    Trigger Bob_Reply_A Choose C:

    condition:
    speech bob_A occurred
    player has more than 0 items tagged C equipped.

    action:
    change click speech to bob_AC

    Trigger Bob_Reply_A Choose D:

    condition:
    speech bob_A occurred
    player has more than 0 items tagged D equipped.

    action:
    change click speech to bob2



    Catfish_Bob_Reply_AC = {Well thank ya kindly. Here. Have a Nuka Cola on me. Sit down and take a load off if ya like.\n\n

    <Cr>A. Sounds like a plan. I could use some good conversation.\n\n

    <Cy>B. Sorry man. I'm on duty right now. How bout a rain check?\n\n

    <Cg>C. Back}

    Trigger Bob_Reply_AC Choose A:

    condition:
    speech bob_AC occurred
    player has more than 0 items tagged A equipped.

    action:
    change click speech to bob_ACA

    Trigger Bob_Reply_AC Choose B:

    condition:
    speech bob_A occurred
    player has more than 0 items tagged B equipped.

    action:
    change click speech to bob_ACB

    Trigger Bob_Reply_AC Choose C:

    condition:
    speech bob_AC occurred
    player has more than 0 items tagged C equipped.

    action:
    change click speech to bob_ACC

    Trigger Bob_Reply_AC Choose D:

    condition:
    speech bob_AC occurred
    player has more than 0 items tagged D equipped.

    action:
    change click speech to bob_A


    All triggers preserved.

    Edit.

    Actually thinking about it there's one way to do it without variables, that will eliminate double speech and won't require extra click speech (though it will require extra speech nodes in the text file) and that is to use the display world text action.

    Have all the click speech nodes use generic text, hell you can even just have dot dot dot and they don't even have to be windowed. Then add to the triggers the action to display world text and then link that to the text that contains the options and replies.

    So for the first click speech.

    Catfish_Bob_DefaultA = {...}

    Trigger Bob_DefaultA:

    condition:
    speech bob1 occurred

    action:
    change click speech to bob2
    display world text Catfish_Bob_DefaultA1


    The the world text would be

    Catfish_Bob_DefaultA1 = {What can I do ya for?\n\n

    <Cr>A. Well uh........ why do they call you catfish bob?\n\n

    <Cy>B. How long have you been living out here in this toxic swamp Catfish Bob?\n\n

    <Cg>C. I noticed that you have a diving board on your porch.... Tell me you don't swim in the toxic swamp.\n\n

    <Cb>D. No offense Catfish Bob, but why do you insist on living in this ghetto f***ing shack? We have plenty of sturdy building materials in the ranger center warehouse.}

    Clickspeech bob2 Catfish_Bob_DefaultB = {...}

    Trigger Bob_DefaultB Choose A:

    condition:
    speech bob2 occurred
    player has more than 0 items tagged A equipped.

    action:
    change click speech to bob_A
    display world text Catfish_Bob_DefaultBA

    Trigger Bob_DefaultB Choose B:

    condition:
    speech bob2 occurred
    player has more than 0 items tagged B equipped.

    action:
    change click speech to bob_B
    display world text Catfish_Bob_DefaultBB


    etc etc

    The display world text opens up a bigger window in the middle of the screen, you'd have to use the image tag to insert the npc's portrait but otherwise it's a much better window to read a lot of text in.

    So basically the player would click on the npc the world text window would open with the npc's response and the multiple choice replies. Then they'd equip a letter and click on the npc again and then get the next world text window and the next set of replies.
     
  12. MagnumOpus

    MagnumOpus First time out of the vault

    40
    Apr 1, 2007
    I hear ya. I just couldn't get it to work the way i wanted it to for some reason. It worked partially but i kept getting errors, and i kept getting double speech no matter what i tried. i agree with you that there is nothing wrong with double speech, but im a bit of an obcessive compulsive psycho, and i feel like a total failure if i dont get things working smoothly lol!

    after sevral hours the point became more about proving that the system would work than anything else. thats the main reason i changed it. i started thinking about binary code; ones and zeros;on and off.

    i realised that if i used variables like switches, the system would work. it just kinda hit me. so i changed it, and it eleminated most of the errors i was having instantly.

    i was left with four errors. one was due to an empty node, one was due to an empty item tagged equipped, and the other two were with the back system because i hadnt put an unused variable in place to keep unwanted speech from triggering when making the selection to go back to a previous menu. those same errors were probably causing some of the problems i had with the origional system.

    Good eye on the unnessecery parts of my system. I will make the appropriate changes in a bit.

    As far as writing the tutorial goes i'm going to wait until you and i can come up with the best working system for dialogue. the good news is that we now have difinitive proof that complex speech trees will work in FOT. in my opinion this is quite a victory.

    -------------------------------------------------------------------------------------

    on a side note, i think i came up with a solution for player tagnames being stripped.

    while my fiance and i were running errands today i remembered when you said that item tagnames can only be stripped by trading them to a quartermaster. i think the solution to the player tagname problem is a player specific item. it could be a book, a photo, a letter whatever. as long as the player keeps the uneque item they can be identified by that item. well in theorey anyway.
     
  13. requiem_for_a_starfury

    requiem_for_a_starfury So Old I'm Losing Radiation Signs

    Apr 3, 2003
    Yeah I've thought of that but you might as well just use the quantity player has trait (rank/reputation) to identify the main player. Or use campaign variables to count the player character's stats at the start of a campaign. But that doesn't help the two triggers that require tagnames force speech and move unit. For instance I devised a set of triggers to simulate a working elevator, it would teleport a single character or the entire squad between floors. You could even take the elevator up but the stairs down and then reuse the elevator to go up again. But it's only good for standalone maps or the first mission in a campaign.

    Check out the edit to my above post. I think the display world text is really the way to go.
     
  14. MagnumOpus

    MagnumOpus First time out of the vault

    40
    Apr 1, 2007
    well that sucks. would it work in the following situation?

    the player meets an npc named dave in some odd location. dave has a special item that identifies him as a uneque entity. dave wants the player to take him by his home town so he can tie up some loose ends. when dave and the main character arrive in daves home town could dave have uneque occourences because of his tag?

    for instance:

    Dave and the main character walk into a bar. the main character speaks to the bartender and orders a drink. the bartender thanks him and the main character goes on about his business.

    now when dave tries to order a drink because he has his uneque tag item the bartender reacts differently to dave. he says "dave you scumbag! you have a lot of nerve showing your sorry face around here. you have about ten seconds to get your sorry butt out of my bar before i put a bowling ball sized hole in your chest.

    if dave doesnt leave the area in ten seconds, the bartender, and a few patrons will attack.

    I havent tried display world text at all yet. I'm gonna go play around with it. sounds pretty cool.
     
  15. requiem_for_a_starfury

    requiem_for_a_starfury So Old I'm Losing Radiation Signs

    Apr 3, 2003
    It would work, but you don't need it for that particular situation and there's always the possibility that even with a hidden item (perhaps especially with a hidden item) the player may transfer it to another character by mistake when sorting their inventories. I mean what's the first thing people do when they get a new party member? Open up their inventory to see what goodies they can give the main player?

    There are lots of ways to get the game to tell who is who but it's having triggers that need the tagnames to affect characters that are the problem.

    Say if Dave is only meant to be a temporary member of your party, if the tagname gets stripped then you can't remove him without a recruit master.
     
  16. MagnumOpus

    MagnumOpus First time out of the vault

    40
    Apr 1, 2007
    omg. dude i just looked at the world text thing. can we manipulate the buttons to make the choices clickable?
     
  17. requiem_for_a_starfury

    requiem_for_a_starfury So Old I'm Losing Radiation Signs

    Apr 3, 2003
    I wouldn't of thought so, not without the source code.

    My take on using the display world text:

    Create four generic items using the ABCD sprites, you can colour these by changing the base colour under image in the entity editor. Tagname them A, B, C & D respectively.

    Plan out your speech tree on paper so that you know which branch leads where. And devise a nomenclature for the speech node headings and speech events so that it's clear in the editor which text links to which event and to which new branches.

    In the text speech file you will need two entries for every dialogue that gives a multiple choice reply. The first entry is for the click speech and can be a single full stop.

    max_1_F = {.}

    The second entry is for the world text and contains the npc's speech and up to four possible replies for the player to choose from. You can colour code these replies to correspond to the letter entities for easy recognition if you so wish.

    max_1_W = {[img:gui/char/max.zar]Hi there I'm Max have you seen my dog Dogmeat around?\n\n
    <Cr>A. I saw a scrawny mongrel back that aways, it had a red bandana around it's neck. Is that your dog?\n\n
    <Cy>B. Sorry I haven't seen any dogs for ages.\n\n
    <Cm>C. The only dogmeat I've seen went in my belly, quite tasty it was too.\n\n
    <Cc>D. Who cares loser, drop your weapons and empty your pockets or I'll blow you away.}

    Use the <> brackets instead of the [] for the image code to include the npc's portrait in the text window.

    In the level editor once you've imported the text file create your new nodes, for the first let's call it Max_Start and the speech event the same or just Max_S leave this as floating text. When you place the entity for max on the map choose this speech node for it's initial click speech. The second Node Max_2, then Max_A, Max_B etc. The world text links directly from the tigger and doesn't need a speech node set up in the level editor.

    Set up a preserved trigger title it something like Max Initial speech.

    Condition:
    Speech Event Max_S Occured

    Action:
    Display Text max_1_W
    Set Click Speech for unit 'Max' to Max_2


    When the player clicks on Max a full stop will appear above his head but will quickly disappear and the player shouldn't notice it because the world text window will open instead of the normal dialogue window. The player will now see Max ask about his dog and have four ways to reply. To choose the reply all the player will need to do is equip the corresponding letter entity and click on Max again.

    For this the text entry for the node Max_2 will be

    max_2_F = {.}

    This time set up four preserved triggers.

    Max Intial Speech Reply A
    Condition:
    Speech Event Max_2 Occured
    Human has More than 0 ItemsTaggedEquipped A at Anywhere

    Action:
    Display Text max_A_W
    Set Click Speech for unit 'Max' to Max_A


    Max Intial Speech Reply B
    Condition:
    Speech Event Max_2 Occured
    Human has More than 0 ItemsTaggedEquipped B at Anywhere

    Action:
    Display Text max_B_W
    Set Click Speech for unit 'Max' to Max_B


    Max Intial Speech Reply C
    Condition:
    Speech Event Max_2 Occured
    Human has More than 0 ItemsTaggedEquipped C at Anywhere

    Action:
    Display Text max_C_W
    Set Click Speech for unit 'Max' to Max_C


    Max Intial Speech Reply D
    Condition:
    Speech Event Max_2 Occured
    Human has More than 0 ItemsTaggedEquipped D at Anywhere

    Action:
    Set Click Speech for unit 'Max' to None
    Change player Max's team to Hostiles


    Now the appropriate world text will appear with new multiple choice replies. So for the first choice when you tell Max you've seen his dog you'll need a new click speech and world text entry. And a new speech node and event Max_A.

    max_A_F = {.}

    max_A_W = {[img:gui/char/max.zar]Yeah that sounds like Dogmeat, can you lead me to him?\n\n
    <Cr>A. Yeah sure follow me it's not far.\n\n
    <Cy>B. Sorry I haven't got the time, but he's not far just down the street and around the corner.\n\n
    <Cm>C. I'll consider it if there's a reward going.\n\n
    <Cc>D. Who cares loser, drop your weapons and empty your pockets or I'll blow you away.}

    Again set up four preserved triggers.

    Max Reply A Choice A
    Condition:
    Speech Event Max_A Occured
    Human has More than 0 ItemsTaggedEquipped A at Anywhere

    Action:
    B Wait 1
    Change unit Max's player to Human


    Max Reply A Choice B
    Condition:
    Speech Event Max_A Occured
    Human has More than 0 ItemsTaggedEquipped B at Anywhere

    Action:
    Display Text max_AB_W
    B wait 1
    Set Max to WayPoint at Dogmeat_wp


    Max Reply A Choice C
    Condition:
    Speech Event Max_A Occured
    Human has More than 0 ItemsTaggedEquipped C at Anywhere

    Action:
    Display Text max_AC_W
    Set Click Speech for unit 'Max' to Max_AC


    Max Reply A Choice D
    Condition:
    Speech Event Max_A Occured
    Human has More than 0 ItemsTaggedEquipped D at Anywhere

    Action:
    Set Click Speech for unit 'Max' to None
    B Wait 1
    Change player Max's team to Hostiles



    For the second reply "Sorry I haven't seen any dogs for ages." the speech node and event will be Max_B.

    Max_B_F = {.}

    Max_B_W = {[img:gui/char/max.zar]Oh okay well if you see him about could you either bring him back or let me know where he is?\n\n
    <Cr>A. Yeah sure I can do that.\n\n
    <Cy>B. Is he friendly? How will I get him to follow a total stranger?\n\n
    <Cm>C. I'll consider it if there's a reward going.\n\n
    <Cc>D. Back.}

    Again set up four preserved triggers.

    Max Reply B Choice A
    Condition:
    Speech Event Max_B Occured
    Human has More than 0 ItemsTaggedEquipped A at Anywhere

    Action:
    Display Text max_BA_W
    Set Click Speech for unit 'Max' to Max_BA


    Max Reply B Choice B
    Condition:
    Speech Event Max_B Occured
    Human has More than 0 ItemsTaggedEquipped B at Anywhere

    Action:
    Display Text max_BB_W
    Set Click Speech for unit 'Max' to Max_BB


    Max Reply B Choice C
    Condition:
    Speech Event Max_B Occured
    Human has More than 0 ItemsTaggedEquipped C at Anywhere

    Action:
    Display Text max_BC_W
    Set Click Speech for unit 'Max' to Max_BC


    Max Reply B Choice D
    Condition:
    Speech Event Max_B Occured
    Human has More than 0 ItemsTaggedEquipped D at Anywhere

    Action:
    Display Text max_1_W
    Set Click Speech for unit 'Max' to Max_2


    I'd use magenta rather than green as it's less confusing since the default text is green, and cyan rather than blue as the dark blue can be hard to read on a black background.
     
  18. MagnumOpus

    MagnumOpus First time out of the vault

    40
    Apr 1, 2007
    well i'd be lieing if i said i wasn't a little jealous of your new system. you're right. this is absolutely the way to go.

    I played around with world text last night a bit, and it seems that the max width for pictures in the window is around 300 pixels.

    this suits my purposes quite well because i like to create my own graphics for characters.

    in addition to looking awesome modders can give the player a much better understanding of what their entities look like.

    im gonna change my system with Catfish Bob to this so I can play around with it.

    Bravo Requiem. this looks great.
     
  19. requiem_for_a_starfury

    requiem_for_a_starfury So Old I'm Losing Radiation Signs

    Apr 3, 2003
    I wouldn't be so quick to praise, that's all off the top of my head. I know the individual components will work but haven't actually tested it all together.

    Let me know how Catfish Bob plays out. If you find anything that breaks the system (other than human error) or have any suggestions for things that need covering post them so I can alter it and post it as a tutorial.

    The main thing to remember is that the click speech for the world text triggers need to be left as floating. Though any end of branch lines can be done as normal windowed click speech.

    IIRC 315 pixels max.
     
  20. MagnumOpus

    MagnumOpus First time out of the vault

    40
    Apr 1, 2007
    I think that for testing purposes i'll just copy your example instead of converting catfish bob, because converting him would take a lot longer. gonna have to wait till tonight sometime to try it.

    i was thinking of trying it with max_1_F = {} without the fullstop because even without it doesnt a speech event still occour? that way even if there were an instance of doublespeech you wouldnt see it.

    its a shame you'd need the source code to change the function of the buttons because it would be really really neat if you could just click away on the world text menu.