//------------------------------------------- case (state.dyn.me.task.blowjob.state) { [START] { // Kneel loc.state.pose_type = KNEEL; loc.state.pose_id = 0; SetCharState(loc.state); SetPose(loc.state.pose_type); state.dyn.me.task.blowjob.state = WAIT_POSE; } [WAIT_POSE] { [state.dyn.me.pose.result == NONE] return; case (state.dyn.me.task.blowjob.mood) { [DISGUSTED] { loc.next_state = MOVEAWAY; loc.def_exp = A_BIT_UNHAPPY; loc.def_exp2 = A_BIT_UNHAPPY; loc.mouth_state = NORMAL; loc.focus_mode = REPEL; } [SCARED] { loc.next_state = MOVEAWAY; loc.def_exp = A_BIT_UNHAPPY; loc.def_exp2 = A_BIT_UNHAPPY; loc.mouth_state = NORMAL; loc.focus_mode = REPEL; } [HESITANT] { loc.next_state = NEUTRAL; loc.def_exp = A_BIT_UNHAPPY; loc.def_exp2 = NONE; loc.mouth_state = NORMAL; loc.focus_mode = NONE; } [NEUTRAL] { loc.next_state = NEUTRAL; loc.def_exp = NONE; loc.def_exp2 = NONE; loc.mouth_state = NORMAL; loc.focus_mode = NONE; } [EAGER] { loc.next_state = PENETRATE; loc.def_exp = SMILE; loc.def_exp2 = NONE; loc.mouth_state = OPEN; loc.focus_mode = FOCUS; } [LIKE] [] { loc.next_state = LICK; loc.def_exp = POLITE; loc.def_exp2 = NONE; loc.mouth_state = CLOSED; loc.focus_mode = NONE; } } // Set state loc.state.mouth_state = loc.mouth_state; [loc.mouth_state == OPEN] loc.state.mouth_v = 0.01; else loc.state.mouth_v = 0.0; loc.state.exp2 = loc.def_exp2; loc.state.def_exp2 = loc.def_exp2; loc.state.focus_obj = "#main:PENIS_BLOW"; loc.state.focus_mode = loc.focus_mode; SetCharState(loc.state); // Set main focus and exp loc.mm.focus_type = STARE; loc.mm.def_exp = loc.def_exp; set_main_mood(loc.mm); // Set exp2 SetExp2(loc.state.exp2); SetDefExp2(loc.state.def_exp2); // Set mouth state loc.ms.state = loc.state.mouth_state; loc.ms.v = loc.state.mouth_v; SetMouthState(loc.ms); // Set focus object SetFocusObj(loc.state.focus_obj); // Set focus mode SetFocusMode(loc.focus_mode); // Init task data state.dyn.me.task.ts = null; state.dyn.me.task.ts2 = null; state.dyn.me.task.ts3 = null; state.dyn.me.task.blowjob.count = 0; state.dyn.me.task.blowjob.count2 = 0; state.dyn.me.task.blowjob.depth_max = 11; state.dyn.me.task.blowjob.depth_min = 5; state.dyn.me.task.blowjob.ts = null; // Goto next state state.dyn.me.task.blowjob.state = loc.next_state; } [PENETRATE] { [state.dyn.me.avatar.penis_mode > 0] { SetFocusObj("#main:PENIS_BLOW"); } else { SetFocusObj(NONE); } [state.dyn.me.coll.mouth_pen.obj_type == PENIS_OBJ] { loc.ms.state = OPEN; loc.ms.v = 0.01; SetMouthState(loc.ms); loc.ts = GetTs(); [state.dyn.me.coll.mouth_deep.obj_par >= state.dyn.me.task.blowjob.depth_max] [loc.ts > state.dyn.me.task.blowjob.ts] { loc.v = GetFocusMode(); [loc.v != REPEL] { state.dyn.me.task.blowjob.ts = null; [state.dyn.me.task.blowjob.count <= 9] { loc.mode = REPEL; loc.speed = state.dyn.me.task.blowjob.count; [loc.speed > 6] loc.speed = 6; loc.speed *= 100; loc.speed += 600; SetFocusMode(loc); state.dyn.me.task.blowjob.count += 1; [state.dyn.me.task.blowjob.count == 9] { state.dyn.me.task.blowjob.depth_max = 15; state.dyn.me.task.blowjob.depth_min = 8; } } else { loc.mode = REPEL; loc.speed = 8.0; loc.dis = 0.5; SetFocusMode(loc); loc.sb.speed = 1.5; loc.sb.scale = 0.5; SetBreath(loc.sb); loc.ms.state = NORMAL; loc.ms.v = 0.0; SetMouthState(loc.ms); mood_cry(3.0); task_set_timer(7); state.dyn.me.task.blowjob.state = OUTOFBREATH; } } } else [state.dyn.me.coll.mouth_deep.obj_par <= state.dyn.me.task.blowjob.depth_min] { loc.v = GetFocusMode(); [loc.v != ATTRACT] { loc.mode = ATTRACT; loc.speed = state.dyn.me.task.blowjob.count; [loc.speed > 6] loc.speed = 6; loc.speed *= 100; loc.speed += 600; [state.dyn.me.task.blowjob.depth_max > 11] loc.dis = 1.3; else loc.dis = 1.0; SetFocusMode(loc); SetMouthMucus(0); } } else [state.dyn.me.coll.mouth_deep.obj_par != null] { [state.dyn.me.task.blowjob.ts == null] { state.dyn.me.task.blowjob.ts = loc.ts; state.dyn.me.task.blowjob.ts += 4000; } } [state.dyn.me.coll.mouth_deep.obj_par >= 4] { [state.dyn.me.task.blowjob.depth_max > 11] loc.mc = 2.0; else loc.mc = 1.0; SetMouthMucus(loc.mc); } } else { SetMouthMucus(0); [state.dyn.me.task.blowjob.mood == EAGER] loc.focus_mode = FOCUS; else loc.focus_mode = NONE; SetFocusMode(loc.focus_mode); // If no object in mouth [state.dyn.me.coll.mouth_pen.obj_type == null] { // Open and close mouth if eager [state.dyn.me.task.blowjob.mood == EAGER] { loc.ts = GetTs(); [loc.ts > state.dyn.me.task.ts3] { loc.open = GetMouthIsOpen(); [loc.open] { loc.ms.state = NORMAL; loc.ms.v = 0.0; loc.v = Rnd(3); loc.v += 1; } else { loc.ms.state = OPEN; loc.ms.v = 0.01; loc.v = Rnd(8); loc.v += 4; } SetMouthState(loc.ms); task_set_timer3(loc.v); } else { [state.dyn.me.task.ts3 == null] task_set_timer3(8); } } } } } [OUTOFBREATH] { loc.ts = GetTs(); [loc.ts <= state.dyn.me.task.ts] return; loc.sb.speed = 0.5; loc.sb.scale = 0.75; SetBreath(loc.sb); mood_cry(0); state.dyn.me.task.ts = null; state.dyn.me.task.ts2 = null; state.dyn.me.task.ts3 = null; state.dyn.me.task.blowjob.count = 0; state.dyn.me.task.blowjob.count2 = 0; state.dyn.me.task.blowjob.depth_max = 11; state.dyn.me.task.blowjob.depth_min = 5; state.dyn.me.task.blowjob.ts = null; state.dyn.me.task.blowjob.state = PENETRATE; } } //------------------------------------------- state.dyn.me.do.task = BLOWJOB; [par == null] state.dyn.me.task.blowjob.mood = LIKE; else state.dyn.me.task.blowjob.mood = par; state.dyn.me.task.blowjob.state = START;