Difference between revisions of "Abducted story"
Line 15: | Line 15: | ||
* The alien girl opens the door. | * The alien girl opens the door. | ||
* The alien girl gets into a blowjob pose. | * The alien girl gets into a blowjob pose. | ||
− | |||
* The alien girl start coughing when you eject in her mouth. | * The alien girl start coughing when you eject in her mouth. | ||
+ | * It is detected when you escape. | ||
<li>Most (90%) of the code has been added to the <code>run.dat</code> files for both the player and the alien girl.<br> | <li>Most (90%) of the code has been added to the <code>run.dat</code> files for both the player and the alien girl.<br> | ||
There are also some small changes to some other files, but if you followed the previous tutorials it should be pretty clear what these changes are.</li> | There are also some small changes to some other files, but if you followed the previous tutorials it should be pretty clear what these changes are.</li> | ||
Line 78: | Line 78: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | This will skip the move-away part of the blowjob and directly | + | This will skip the move-away part of the blowjob and directly spring into action. The girl will however look somewhat angry/disgusted. |
+ | </li> | ||
+ | </ol> | ||
+ | |||
+ | ===The alien girl start coughing when you eject in her mouth=== | ||
+ | |||
+ | <ol> | ||
+ | <li>Open the <code>/init/story/alien/brain/run.dat</code> file.</li> | ||
+ | <li>Take a look at the <code>state_run1_check_cough</code> function.<br> | ||
+ | [state.dyn.me.coll.mouth_pen.obj_type != PENIS_OBJ] return; | ||
+ | [state.dyn.me.coll.mouth_deep.obj_par == 0] return; | ||
+ | [state.dyn.me.avatar.fluid_type == 0] return; | ||
+ | |||
+ | stop_task_blowjob(); | ||
+ | |||
+ | loc.task.mood = DISGUSTED; | ||
+ | start_task_funnel(loc.task); | ||
+ | |||
+ | loc.be.obj = PLAYER; | ||
+ | loc.be.id = state.this; | ||
+ | loc.be.action = "cough1"; | ||
+ | SendBaseEvent(loc.be); | ||
+ | </syntaxhighlight> | ||
+ | When the player has penis in mouth and he ejects the blowjob task is stopped. Then the funnel task is started.<br> | ||
+ | The funnel task ends in coughing so we will use that here. We will never end the funnel task so she keeps coughing.<br> | ||
+ | Using the <code>SendBaseEvent</code> function we will notify the player.<br> | ||
+ | This will result in a callback to the player in the <code>ref.dat</code> with function <code>ALIEN.cough1</code>. | ||
+ | </li> | ||
+ | </ol> | ||
+ | |||
+ | ===It is detected when you escape=== | ||
+ | |||
+ | <ol> | ||
+ | <li>Open the <code>/init/story/player/brain/run.dat</code> file.</li> | ||
+ | <li>Take a look at the <code>state_run1_check_escaped</code> function.<br> | ||
+ | <syntaxhighlight lang="cpp"> | ||
+ | loc.go.obj = "PLAYER_VIEWRB"; | ||
+ | loc.go.info = "info1"; | ||
+ | loc.res = GetObjInfo(loc.go); | ||
+ | [!loc.res] return; | ||
+ | </syntaxhighlight> | ||
+ | We have added an info box 'info1' to the scene. This is a rigid body that does not collide and is not rendered. We can use it to check if we are out of the cell.<br> | ||
+ | When the player and the infobox intersect the <code>GetObjInfo</code> function returns true. So when this is the case we go to the <code>RUN2</code> state. | ||
</li> | </li> | ||
</ol> | </ol> |
Revision as of 15:29, 21 January 2015
We added some extra code to finish the abducted story. We will walk over the important parts of the code in this chapter.
It is not really a tutorial, but it is worth reading to gain more knowledge about modding.
An important part of this chapter describes how to get the character to do a (sexual) task.
Contents
What was added to the story
- First copy the complete
pack_abducted
directory from the 'Tutorial resource pack' to your./pack
directory.
You may want to rename your own pack directory from the previous tutorials in order to keep the results.
Now start the story from the beginning and play it to the end. - You will notice that several elements have been added:
- The alien girl reacts to your penis being shown.
- The alien girl opens the door.
- The alien girl gets into a blowjob pose.
- The alien girl start coughing when you eject in her mouth.
- It is detected when you escape.
- Most (90%) of the code has been added to the
run.dat
files for both the player and the alien girl.
There are also some small changes to some other files, but if you followed the previous tutorials it should be pretty clear what these changes are.
The alien girl reacts to your penis being shown
- Open the
/init/story/alien/brain/run.dat
file. - Take a look at the
WAIT_REACTION
state.
[state.dyn.me.avatar.penis_mode > 0] { SetFocusElem(PENIS); do_set_timer(5); state.dyn.me.do.state2 = SEE_PENIS; return; }
When the avatar (player) its penis_mode is larger than 0 (3 = erected), the alien girl focuses on the penis and goes into
SEE_PENIS
state.
The alien girl opens the door
- Open the
/init/story/alien/brain/run.dat
file. - Take a look at the
START1
state.
loc.so.obj = SPACESHIP1:CELL2; loc.so.par = DOOR_SET_STATUS; loc.so.val = DOOR_SETVAL_STATUS_OPEN; SetObject(loc.so);
After the alien girl made a bow like gesture the doors opens using this code. It is the same code we tested at the start of the tutorials.
The alien girl gets into a blowjob pose
- Open the
/init/story/alien/brain/run.dat
file. - Take a look at the
START_BLOWJOB
state.
loc.task.waypoint = SPACESHIP1:INCELL_WP1; loc.task.mood = DISGUSTED; start_task_blowjob(loc.task);
A task is a subroutine that allows you to perform a complex task without much programming.
The task code can be found in the standard libraries of the brain (
The task can often be started using several startup parameters. In this case we want the girl to perform the blowjob at waypointSPACESHIP1:INCELL_WP1
.
Also we want the girl to look somewhat disgusted at your penis during the blowjob.
/init/std/base/char/brain/code/task/task_blowjob.dat
). - Because normally the disgusted mode of the blowjob task starts with nodding to the penis, we need to skip that part.
That is why in theGIVING_BLOWJOB
state we added the code:[state.dyn.me.task.blowjob.state == MOVEAWAY] { set_task_blowjob_state(GIVEHEAD); }
This will skip the move-away part of the blowjob and directly spring into action. The girl will however look somewhat angry/disgusted.
The alien girl start coughing when you eject in her mouth
- Open the
/init/story/alien/brain/run.dat
file. - Take a look at the
state_run1_check_cough
function.
[state.dyn.me.coll.mouth_pen.obj_type != PENIS_OBJ] return; [state.dyn.me.coll.mouth_deep.obj_par == 0] return; [state.dyn.me.avatar.fluid_type == 0] return; stop_task_blowjob(); loc.task.mood = DISGUSTED; start_task_funnel(loc.task); loc.be.obj = PLAYER; loc.be.id = state.this; loc.be.action = "cough1"; SendBaseEvent(loc.be); </syntaxhighlight> When the player has penis in mouth and he ejects the blowjob task is stopped. Then the funnel task is started.
The funnel task ends in coughing so we will use that here. We will never end the funnel task so she keeps coughing.
Using theSendBaseEvent
function we will notify the player.
This will result in a callback to the player in theref.dat
with functionALIEN.cough1
.
It is detected when you escape
- Open the
/init/story/player/brain/run.dat
file. - Take a look at the
state_run1_check_escaped
function.
loc.go.obj = "PLAYER_VIEWRB"; loc.go.info = "info1"; loc.res = GetObjInfo(loc.go); [!loc.res] return;
We have added an info box 'info1' to the scene. This is a rigid body that does not collide and is not rendered. We can use it to check if we are out of the cell.
When the player and the infobox intersect theGetObjInfo
function returns true. So when this is the case we go to theRUN2
state.