Adding words to the NLP

From XStoryPlayer Wiki
Revision as of 15:46, 20 January 2015 by Xwikip (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Now the girl only responds to you by saying you should be quiet. We want the girl to open the cell when you give her a compliment.
A good fitting compliment would be "You have nice spots".
In this tutorial we will add some extra talking to the story. We will also add a word to the NLP.

  1. Open the '/ai/nlp/nlp_object.txt' file.
    Add the following code at the end of the #object_body values:
    #object_body = <spot>  : spot
    #object_body = <spots> : spot
    This will make spots to be allowed in sentences that describe the body.
  2. No lets see what happens when you talk to the alien girl using the new words.
    She does not react on these sentences but the brain results will be traced to the 'trace.txt' file because we are running in debug mode.
    Start the abducted story and when the alien girl is in sight speak the following sentences:
    • "You have lovely spots"
    • "I like your spots"
    • "Beautiful spots"
    Open the 'trace.txt' file. Scroll down and you should see after CTALK: "you have lovely spots" the brain results for that sentence namely:
    [state.code.ref.state.RUN0.]present.spot.pretty.you.info
    [state.code.ref.state.RUN0.]present.spot.pretty.you.if
    [state.code.ref.state.RUN0.]present.spot.pretty.you.get
    [state.code.ref.state.RUN0.]spot.pretty.you.info
    [state.code.ref.state.RUN0.]spot.pretty.you.if
    [state.code.ref.state.RUN0.]spot.pretty.you.get
    [state.code.ref.state.RUN0.]spot.pretty.you.info
    [state.code.ref.state.RUN0.]spot.pretty.you.if
    [state.code.ref.state.RUN0.]spot.pretty.you.get
    [state.code.ref.state.RUN0.]object.pretty.you.info
    [state.code.ref.state.RUN0.]object.pretty.you.if
    [state.code.ref.state.RUN0.]object.pretty.you.get
    [state.code.ref.state.RUN0.]value.pretty.you.info
    [state.code.ref.state.RUN0.]value.pretty.you.if
    [state.code.ref.state.RUN0.]value.pretty.you.get
    [state.code.ref.state.RUN0.]object.adj.you.info
    [state.code.ref.state.RUN0.]object.adj.you.if
    [state.code.ref.state.RUN0.]object.adj.you.get
    [state.code.ref.state.RUN0.]object.adj.actor.info
    [state.code.ref.state.RUN0.]object.adj.actor.if
    [state.code.ref.state.RUN0.]object.adj.actor.get
    [state.code.ref.state.RUN0.]object.adj.value.info
    [state.code.ref.state.RUN0.]object.adj.value.if
    [state.code.ref.state.RUN0.]object.adj.value.get
    [state.code.ref.state.RUN0.]info.get

    The top result is the most detailed one. It says "present.spot.pretty.you.info".
    If you read this backwards its meaning becomes more clear namely: 'Information: you (have) pretty spot (present time).
    The bottom result says: 'You get information'. This is the most generalized result.

    The prefix state.code.ref.state.RUN0 shows that this ref callback function is called if it exists.

    So lets add some code to allow the alien girl respond to the compliment.
  3. Open the /init/story/alien/brain/ref.dat file that contains the callbacks for the sentences. Add the following code:
    spot.pretty.you.get = 
    {
      loc.state.pose_type = STAND;
      loc.state.waypoint  = "waypoint2";
      loc.state.speed     = 0;
      loc.state.exact     = 0;
      SetPose(loc.state);
     
      state.dyn.me.do.prev_state = state.dyn.me.do.state2;
     
      state.dyn.me.do.state2 = GET_COMPLIMENT;
    }  
    spot.you.like.me.get = spot.pretty.you.get;

    This will let the alien walk to your cell and go into the the COMPLIMENT state.
    Add this code to the /init/story/alien/brain/run.dat:

    [GET_COMPLIMENT]
    {
      [state.dyn.me.pose.result == NONE] return;
     
      // Reply to compliment
      talk.s         = "Hmm, thank you.";
      talk.dur       = 4.0;
      talk.rem.s     = "I am not part of the dissection crew, but am curious how the human physiology works.";
      talk.rem.delay = 3.0;
      talk.rem.dur   = 5.0;
     
      do_set_timer(12);
     
      state.dyn.me.do.state2 = GET_COMPLIMENT2;
    }
     
    [GET_COMPLIMENT2]
    {
      loc.ts = GetTs();  
      [loc.ts < state.dyn.me.do.ts] return;
     
      [state.dyn.me.do.prev_state == WALK1]   
        state.dyn.me.do.state2 = WALK2;
      else
        state.dyn.me.do.state2 = WALK1;
    }

    This will let the alien girl respond to your compliment.

  4. You have now seen most of the basic elements used when modding.
    The next chapter contains the finished 'Abducted story'.