;==================================================================== ;KOJO表示総合管理 ;@KOJO_MESSAGE_SEND ;ARGS => 口上種類 ("ENCOUNTER" "SP_EVENT" "EVENT" "COMMAND" "COUNTER" "PALAM" "MARK" "DIRECT" "SUCCESS" "ENDING") ; => さらに追加分:"ONABARE" "PERMISSION" "DANMAKU" "IRAI" "GIFT" ;ARG:1 => 口上タイミング(イベント番号、PALAM系タイミング番号、COMMAND番号等) ;ARG:2 => 発言者(口上主)ナンバー ;ARG:3 => その他口上向け引数buffer ;ARG:4 => その他口上向け引数buffer2 ;ARGS:1 => 文字列ver.口上タイミング(ARG:1は無視する) ;ARGS:2 => 文字列ver.その他口上向け引数(ARGS:1がある時のみ) ;ARG:5 => その他口上向け引数buffer3 ;ARG:6 => その他口上向け引数buffer4 ;RESULTSによる汎用化に関しては仕様が読めないので取り敢えずベタ移植 ;==================================================================== @KOJO_MESSAGE_SEND(ARGS, ARG:1, ARG:2, ARG:3, ARG:4, ARGS:1, ARGS:2, ARG:5, ARG:6) #DIMS リソース名 #DIM nLocal ;com custom code, retain local for recursive calling IF ARG:2 == MASTER && ARGS == "MUSHI_BATTLE" RESULTS = RETURN -1 ELSEIF ARG:2 == MASTER && ARGS != "COMMAND" RETURN -1 ENDIF RESULT = 0 ;addition custom code RESULTS = VARSET LOCAL ;addition custom code SIF ARGS != "IRAI" && GROUPMATCH(ARGS, "ENCOUNTER", "DIRECT", "EXTRASOURCE", "SUCCESS", "PERMISSION", "LOST_VIRGIN_STOP", "DANMAKU", "GIFT", "DAILY", "DIARY", "MUSHI_BATTLE", "GRAVITY", "ENDING") && cBannedDialogue:(ARG:2):0 RETURN 0 SIF ARGS != "IRAI" && GROUPMATCH(ARGS, "ONABARE", "CHILD") && cBannedDialogue:(ARG:2):0 RETURN 2 SIF ARGS == "IRAI" && cBannedDialogue:(ARG:1):0 RETURN 0 ;-------------------- SELECTCASE ARGS ;------------------------------------------------------------ ;ファーストインプレッション系KOJO出力処理(俗に言うエクストラ構文) ;------------------------------------------------------------ CASE "ENCOUNTER" ;TARGETに発言者設定(現在のTARGETはLOCALへ退避) LOCAL = TARGET TARGET = ARG:2 ;口上の存在判定 and RESULTSに文字列代入 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF ;口上存在しないなら終了 IF !RESULT TARGET = LOCAL RESETCOLOR ;addition custom code RETURN 0 ENDIF ;口上表示設定なら表示 IF FLAG:口上テキスト設定 > 0 SIF FLAG:口上色 TRYCALLFORM M_KOJO%RESULTS%_COLOR_K{NO:TARGET} TRYCALLFORM M_KOJO%RESULTS%_ENCOUNTER_K{NO:TARGET} ENDIF RESETCOLOR TARGET = LOCAL ;------------------------------------------------------------ ;SPイベント系KOJO出力処理 ;------------------------------------------------------------ CASE "SP_EVENT" ;TARGETに発言者設定(現在のTARGETはLOCALへ退避) LOCAL = TARGET TARGET = ARG:2 ;口上未表示なら共通口上へ IF FLAG:口上テキスト設定 <= 0 || cBannedDialogue:(ARG:2):0 ;addition custom code ;共通口上出力 CALLFORM SPEVENT_MESSAGE_{ARG:1}(ARG:3,ARG:4) TARGET = LOCAL RESETCOLOR ;addition custom code RETURN 0 ENDIF RESULT = 0 RESULTS = ;TARGETの発言 ;@M_KOJO_KXにてRESULTSを定義すると口上が被らず起動する ;口上の存在判定 and RESULTSに文字列代入 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF ;口上が存在しないなら共通口上へ IF !RESULT ;口上表示設定なら共通表示 IF FLAG:口上テキスト設定 > 0 ;共通口上出力 CALLFORM SPEVENT_MESSAGE_{ARG:1}(ARG:3,ARG:4) TARGET = LOCAL RESETCOLOR ;addition custom code RETURN 0 ENDIF ENDIF ;口上表示 IF FLAG:口上テキスト設定 > 0 ;TARGET口上出力 ;M_KOJO_KXでRESULTSを定義すると切り替え可 SIF FLAG:口上色 TRYCALLFORM M_KOJO%RESULTS%_COLOR_K{NO:TARGET} TRYCCALLFORM M_KOJO%RESULTS%_SPEVENT_K{NO:TARGET}_{ARG:1}(ARG:3,ARG:4) CATCH RESETCOLOR IF FLAG:口上テキスト設定 > 0 ;共通口上出力 CALLFORM SPEVENT_MESSAGE_{ARG:1}(ARG:3,ARG:4) TARGET = LOCAL RESETCOLOR ;addition custom code RETURN 0 ENDIF ENDCATCH ENDIF RESETCOLOR TARGET = LOCAL ;------------------------------------------------------------ ;イベント系KOJO出力処理 ;------------------------------------------------------------ CASE "EVENT" ;TARGETに発言者設定(現在のTARGETはLOCALへ退避) LOCAL = TARGET TARGET = ARG:2 ;口上未表示なら共通口上へ IF FLAG:口上テキスト設定 <= 0 || cBannedDialogue:(ARG:2):0 ;addition custom code ;共通口上出力 TRYCALLFORM M_KOJO_EVENT_{ARG:1}(ARG:3,ARG:4) TARGET = LOCAL RESETCOLOR ;addition custom code RETURN 0 ENDIF RESULT = 0 RESULTS = ;TARGETの発言 ;口上の存在判定 and RESULTSに文字列代入 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF ;口上が存在しないなら共通口上へ IF !RESULT || (FLAG:70 && !CFLAG:(NO:TARGET):時間停止口上有) || (FLAG:なりきり && !CFLAG:(NO:TARGET):なりきり口上有) ;口上表示設定なら共通表示 IF FLAG:口上テキスト設定 > 0 ;共通口上出力 TRYCALLFORM M_KOJO_EVENT_{ARG:1}(ARG:3,ARG:4) TARGET = LOCAL RESETCOLOR ;addition custom code RETURN 0 ENDIF ENDIF ;口上表示 IF FLAG:口上テキスト設定 > 0 ;TARGET口上出力 SIF FLAG:口上色 TRYCALLFORM M_KOJO%RESULTS%_COLOR_K{NO:TARGET} IF ARGS:1 != "" TRYCALLFORM M_KOJO%RESULTS%_EVENT_K{NO:TARGET}_%ARGS:1%(ARGS:2,ARG:3,ARG:4) ELSE TRYCALLFORM M_KOJO%RESULTS%_EVENT_K{NO:TARGET}_{ARG:1}(ARG:3,ARG:4) ENDIF ENDIF RESETCOLOR TARGET = LOCAL ;------------------------------------------------------------ ;コマンド系KOJO出力処理 ;------------------------------------------------------------ CASE "COMMAND" ;テキスト設定 IF FLAG:口上テキスト設定 <= 0 || cBannedDialogue:(ARG:2):0 ;addition custom code ;情景テキスト出力 SIF FLAG:6 > 0 CALL TRAIN_MESSAGE CALL DISPLAY_COM_IMAGE(リソース名, SELECTCOM) RESETCOLOR ;addition custom code RETURN 0 ENDIF ;ボールギャグ時 IF TEQUIP:(ARG:2):20 && SELECTCOM != 107 SIF FLAG:6 > 0 CALL TRAIN_MESSAGE CALL DISPLAY_COM_IMAGE(リソース名, SELECTCOM) ELSEIF (FLAG:70 && !CFLAG:(ARG:2):時間停止口上有) || (CFLAG:(ARG:2):イタズラ >= 1 && !CFLAG:(ARG:2):眠姦口上有) || (FLAG:なりきり && !CFLAG:(ARG:2):なりきり口上有) SIF FLAG:6 > 0 CALL TRAIN_MESSAGE CALL DISPLAY_COM_IMAGE(リソース名, SELECTCOM) ELSE RESULT = 0 RESULTS = ;口上の存在判定 and RESULTSに文字列代入 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF IF !RESULT SIF FLAG:6 > 0 CALL TRAIN_MESSAGE SIF CFLAG:(NO:TARGET):オート喘ぎ CALL AUTO_AEGI(NO:TARGET) RESETCOLOR ;addition custom code RETURN 0 ENDIF SIF FLAG:口上色 CALL SET_KOJO_COLOR() ;custom tweak, set color here because not all actions show TRAIN_MESSAGE from dialogue IF TFLAG:50 LOCAL = TFLAG:50 LOCALS = SCOM ELSE LOCAL = SELECTCOM LOCALS = COM ENDIF TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_%LOCALS%_K{NO:TARGET}_{LOCAL} CATCH ;埋めていないところは汎用的な処理が可能 RESULT = 0 TRYCALLFORM M_KOJO%RESULTS%_MESSAGE_COM_K{NO:TARGET}_00 IF !RESULT IF FLAG:6 > 0 CALL TRAIN_MESSAGE SIF CFLAG:(NO:TARGET):オート喘ぎ CALL AUTO_AEGI(NO:TARGET) RESETCOLOR RETURN 0 ENDIF ENDIF ENDCATCH ENDIF RESETCOLOR ;------------------------------------------------------------ ;カウンター系KOJO出力処理 ;------------------------------------------------------------ CASE "COUNTER" LOCAL = TARGET TARGET = ARG:2 IF FLAG:口上テキスト設定 <= 0 || cBannedDialogue:(ARG:2):0 ;addition custom code IF FLAG:6 > 0 CALL EVENT_COUNTER_MESSAGE TARGET = LOCAL ENDIF RESETCOLOR ;addition custom code RETURN 0 ENDIF ;ボールギャグ IF TEQUIP:(ARG:2):20 && FLAG:6 > 0 CALL EVENT_COUNTER_MESSAGE TARGET = LOCAL ELSE RESULT = 0 RESULTS = ;口上の存在判定 and RESULTSに文字列代入 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF IF !RESULT || (FLAG:なりきり && !CFLAG:(ARG:2):なりきり口上有) SIF FLAG:6 > 0 CALL EVENT_COUNTER_MESSAGE TARGET = LOCAL RESETCOLOR RETURN 0 ENDIF TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_COUNTER_K{NO:TARGET}_{TCVAR:20} CATCH IF FLAG:6 > 0 CALL EVENT_COUNTER_MESSAGE TARGET = LOCAL RESETCOLOR RETURN 0 ENDIF ENDCATCH TARGET = LOCAL ENDIF RESETCOLOR ;------------------------------------------------------------ ;パラメータ系KOJO出力処理 ;------------------------------------------------------------ CASE "PALAM" SELECTCASE ARG:1 ;==== 射精時口上 ============ CASE 1 VARSET LOCAL IF FLAG:口上テキスト設定 <= 0 || cBannedDialogue:(ARG:2):0 ;addition custom code SIF FLAG:6 > 0 CALL PALAM_MESSAGE_A RESETCOLOR ;addition custom code RETURN 0 ENDIF FOR LOCAL, GET_TARGETNUM(), -1 ,-1 SIF TARGET:LOCAL < 1 CONTINUE ;TARGETを降順に出力 SIF LOCAL > 0 && TARGET:LOCAL == TARGET CONTINUE ;口上出力用のフラグがないと飛ばす SIF !TCVAR:(TARGET:LOCAL):50 CONTINUE SIF cBannedDialogue:(TARGET:LOCAL):0 ;addition custom code CONTINUE ;LOCAL:1 = TARGET ;com custom code nLocal = TARGET TARGET = TARGET:LOCAL RESULT = 0 RESULTS = ;口上の存在判定 and RESULTSに文字列代入 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF IF (!RESULT && FLAG:6 > 0) || (FLAG:70 && !CFLAG:(NO:TARGET):時間停止口上有) || (FLAG:なりきり && !CFLAG:(NO:TARGET):なりきり口上有) CALL PALAM_MESSAGE_A TARGET = nLocal;LOCAL:1 ;com custom code RESETCOLOR ;addition custom code RETURN 0 ENDIF ;射精口上出力ギミック CALL KOJO_MESSAGE_PALAMCNG_A2(LOCAL) RESETCOLOR SIF !RESULT LOCAL:2 ++ TARGET = nLocal;LOCAL:1 ;com custom code ;コンドーム口上は対象一人のみ SIF GETBIT(TFLAG:1,0) BREAK NEXT ;==== 絶頂時口上 ============ CASE 2 IF FLAG:口上テキスト設定 <= 0 || cBannedDialogue:(ARG:2):0 ;addition custom code SIF FLAG:6 > 0 CALL PALAM_MESSAGE_B RESETCOLOR ;addition custom code RETURN 0 ENDIF RESULT = 0 RESULTS = ;口上の存在判定 and RESULTSに文字列代入 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF IF (!RESULT && FLAG:6 > 0) || (FLAG:70 && !CFLAG:(NO:TARGET):時間停止口上有) || (FLAG:なりきり && !CFLAG:(NO:TARGET):なりきり口上有) CALL PALAM_MESSAGE_B RESETCOLOR ;addition custom code RETURN 0 ENDIF IF CFLAG:(NO:TARGET):イタズラ TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_B2_K{NO:TARGET} CATCH CALL PALAM_MESSAGE_B ENDCATCH ELSE TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_B_K{NO:TARGET} CATCH CALL PALAM_MESSAGE_B ENDCATCH ENDIF RESETCOLOR ;==== 調教後口上 ============ CASE 3 IF FLAG:口上テキスト設定 <= 0 || cBannedDialogue:(ARG:2):0 ;addition custom code SIF FLAG:6 > 0 CALL PALAM_MESSAGE_C RESETCOLOR ;addition custom code RETURN 0 ENDIF RESULT = 0 RESULTS = ;口上の存在判定 and RESULTSに文字列代入 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF IF (!RESULT && FLAG:6 > 0) || (FLAG:70 && !CFLAG:(NO:TARGET):時間停止口上有) || (FLAG:なりきり && !CFLAG:(NO:TARGET):なりきり口上有) CALL PALAM_MESSAGE_C RESETCOLOR ;addition custom code RETURN 0 ENDIF TRYCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_C_K{NO:TARGET} RESETCOLOR ;==== パラメータ変動口上 ==== CASE 4 IF FLAG:口上テキスト設定 <= 0 || cBannedDialogue:(ARG:2):0 ;addition custom code SIF FLAG:情景テキスト設定 > 0 CALL PALAM_MESSAGE_D RESETCOLOR ;addition custom code RETURN 0 ENDIF RESULT = 0 RESULTS = IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF IF (!RESULT && FLAG:6 > 0) || (FLAG:70 && !CFLAG:(NO:TARGET):時間停止口上有) || (FLAG:なりきり && !CFLAG:(NO:TARGET):なりきり口上有) CALL PALAM_MESSAGE_D RESETCOLOR ;addition custom code RETURN 0 ENDIF SIF FLAG:口上色 TRYCALLFORM M_KOJO%RESULTS%_COLOR_K{NO:TARGET} TRYCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_D_K{NO:TARGET} RESETCOLOR ;==== 触手の射精 ============ CASE 5 IF FLAG:口上テキスト設定 <= 0 || cBannedDialogue:(ARG:2):0 ;addition custom code SIF FLAG:情景テキスト設定 > 0 CALL PALAM_MESSAGE_E RESETCOLOR ;addition custom code RETURN 0 ENDIF RESULT = 0 RESULTS = ;口上の存在判定 and RESULTSに文字列代入 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF IF !RESULT && FLAG:情景テキスト設定 > 0 CALL PALAM_MESSAGE_E RESETCOLOR ;addition custom code RETURN 0 ENDIF TRYCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_E_K{NO:TARGET} ;==== 焦らし ============ CASE 6 IF FLAG:口上テキスト設定 <= 0 || cBannedDialogue:(ARG:2):0 ;addition custom code SIF FLAG:情景テキスト設定 > 0 CALL PALAM_MESSAGE_F RESETCOLOR ;addition custom code RETURN 0 ENDIF RESULT = 0 RESULTS = ;口上の存在判定 and RESULTSに文字列代入 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF IF !RESULT && FLAG:情景テキスト設定 > 0 CALL PALAM_MESSAGE_F RESETCOLOR ;addition custom code RETURN 0 ENDIF TRYCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_F_K{NO:TARGET} ENDSELECT ; ;刻印系KOJO出力処理 CASE "MARK" IF FLAG:口上テキスト設定 <= 0 || cBannedDialogue:(ARG:2):0 ;addition custom code SIF FLAG:情景テキスト設定 > 0 CALL MARK_MESSAGE RESETCOLOR ;addition custom code RETURN 0 ENDIF RESULT = 0 RESULTS = ;口上の存在判定 and RESULTSに文字列代入 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF IF !RESULT && FLAG:情景テキスト設定 > 0 CALL MARK_MESSAGE RESETCOLOR ;addition custom code RETURN 0 ENDIF TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_MARKCNG_K{NO:TARGET} CATCH CALL MARK_MESSAGE ENDCATCH RESETCOLOR ;コマンド系直接呼び出し CASE "DIRECT" SELECTCASE ARG:1 CASE 351 ;ボールギャグ IF TEQUIP:(ARG:2):20 && SELECTCOM != 107 && FLAG:情景テキスト設定 > 0 RETURN 1 ELSE RESULT = 0 RESULTS = ;口上の存在判定 and RESULTSに文字列代入 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF IF FLAG:口上テキスト設定 > 0 IF FLAG:口上色 TRYCALLFORM M_KOJO%RESULTS%_COLOR_K{NO:TARGET} ELSE RESETCOLOR ENDIF ELSE RESETCOLOR RETURN 1 ENDIF TRYCALLFORM M_KOJO%RESULTS%_MESSAGE_COM_K{NO:TARGET}_351 RESETCOLOR ENDIF ENDSELECT ;口上内でソースを追加する処理,TARGET固定 CASE "EXTRASOURCE" RESULTS = ;口上表示 IF FLAG:口上テキスト設定 > 0 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF IF TFLAG:50 LOCAL = TFLAG:50 LOCALS = SCOM ELSE LOCAL = SELECTCOM LOCALS = COM ENDIF TRYCALLFORM M_KOJO%RESULTS%_EXTRASOURCE_%LOCALS%_K{NO:TARGET}_{LOCAL} ENDIF ;基本フラグ設定 CASE "FLAGSETTING" LOCAL = TARGET TARGET = ARG:2 RESULT = 0 RESULTS = RESULTS:1 = ;口上表示 IF FLAG:口上テキスト設定 > 0 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF IF RESULT CFLAG:TARGET:眠姦口上有 = 0 CFLAG:TARGET:時間停止口上有 = 0 CFLAG:TARGET:なりきり口上有 = 0 CFLAG:TARGET:破瓜キャンセル口上有 = 0 CFLAG:TARGET:口上内抱き寄せ判定_初回 = 0 CFLAG:TARGET:口上内抱き寄せ判定_通常 = 0 CFLAG:TARGET:押し倒し禁止 = 0 CFLAG:TARGET:来訪不能 = 0 TRYCCALLFORM M_KOJO%RESULTS%_FLAGSETTING_K{NO:TARGET} CATCH PRINTFORMW TRYCCALLFORM M_KOJO%RESULTS%_FLAGSETTING_K{NO:TARGET} PRINTFORMW ※警告:(%CALLNAME:TARGET%\@ RESULTS:1 != "" ? _ # \@%RESULTS:1%口上)基本フラグ設定が見つかりません ENDCATCH ENDIF ELSE RESULT = 0 ENDIF TARGET = LOCAL RETURN RESULT ;オナバレ CASE "ONABARE" LOCAL = TARGET TARGET = ARG:2 RESULT = 0 RESULTS = ;口上表示 IF FLAG:口上テキスト設定 > 0 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF ;TARGET口上出力 SIF FLAG:口上色 TRYCALLFORM M_KOJO%RESULTS%_COLOR_K{NO:TARGET} SELECTCASE ARG:1 CASE 1, 2 TRYCCALLFORM M_KOJO%RESULTS%_EVENT_K{NO:TARGET}_ONABARE_{ARG:1}(ARG:3) CATCH ;うっかりRETURN 1しちゃってもカバーできるようにRESULT = 2に設定 RESULT = 2 ENDCATCH CASE 3 TRYCCALLFORM M_KOJO%RESULTS%_EVENT_K{NO:TARGET}_ONABARE_{ARG:1}(ARG:3, ARG:4, ARG:5, ARG:6) CATCH RESULT = 2 ENDCATCH CASE 4 TRYCALLFORM M_KOJO_EVENT_K{NO:TARGET}_26_1(ARGS:1) ENDSELECT RESETCOLOR ELSE RESULT = 2 ENDIF TARGET = LOCAL RETURN RESULT ;コマンド成否口上制御 CASE "SUCCESS" RESULT = 0 RESULTS = ;口上の存在判定 and RESULTSに文字列代入 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF IF !RESULT TFLAG:192 = 0 RESETCOLOR ;addition custom code RETURN 0 ENDIF IF TFLAG:50 LOCAL = TFLAG:50 LOCALS = SCOM ELSE LOCAL = SELECTCOM LOCALS = COM ENDIF TRYCCALLFORM M_KOJO%RESULTS%_SUCCESS_%LOCALS%_K{NO:TARGET}_{LOCAL} CATCH TFLAG:192 = 0 ENDCATCH ;押し倒し成否口上制御,破瓜キャンセル口上制御 CASE "PERMISSION", "LOST_VIRGIN_STOP" LOCAL = TARGET TARGET = ARG:2 RESULT = 0 ;口上表示 IF FLAG:口上テキスト設定 > 0 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF ;TARGET口上出力 SIF FLAG:口上色 TRYCALLFORM M_KOJO%RESULTS%_COLOR_K{NO:TARGET} SELECTCASE ARGS CASE "PERMISSION" TRYCALLFORM M_KOJO%RESULTS%_EVENT_K{NO:TARGET}_PERMISSION_{ARG:1} CASE "LOST_VIRGIN_STOP" TRYCALLFORM M_KOJO%RESULTS%_EVENT_K{NO:TARGET}_LOST_VIRGIN_STOP ENDSELECT RESETCOLOR ENDIF TARGET = LOCAL RETURN RESULT ;育児 CASE "CHILD" LOCAL = TARGET TARGET = ARG:2 RESULT = 0 RESULTS = ;口上表示 IF FLAG:口上テキスト設定 > 0 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF SIF FLAG:口上色 TRYCALLFORM M_KOJO%RESULTS%_COLOR_K{NO:TARGET} SELECTCASE ARGS:1 CASE "DAILY_口上手紙" TRYCCALLFORM M_KOJO%RESULTS%_EVENT_K{NO:TARGET}_CHILD_DAILY_口上手紙(ARG:3) CATCH ;うっかりRETURN 1しちゃってもカバーできるようにRESULT = 2に設定 RESULT = 2 ENDCATCH CASE "DAILY_共通手紙" TRYCCALLFORM M_KOJO%RESULTS%_EVENT_K{NO:TARGET}_CHILD_DAILY_共通手紙(ARG:3, ARGS:2) CATCH RESULT = 2 ENDCATCH CASEELSE TRYCCALLFORM M_KOJO%RESULTS%_EVENT_K{NO:TARGET}_CHILD_%ARGS:1% CATCH RESULT = 2 ENDCATCH ENDSELECT RESETCOLOR ENDIF TARGET = LOCAL RETURN RESULT ;弾幕勝負 CASE "DANMAKU" LOCAL = TARGET TARGET = ARG:2 RESULT = 0 ;エンカウントモブ子用口上表示 IF ARG:3 == 1 && FLAG:口上テキスト設定 > 0 CALL TALK_MOBGIRL(ARGS:1, ARG:1) RESETCOLOR ;口上表示 ELSEIF FLAG:口上テキスト設定 > 0 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF ;TARGET口上出力 SIF FLAG:口上色 TRYCALLFORM M_KOJO%RESULTS%_COLOR_K{NO:TARGET} TRYCALLFORM M_KOJO%RESULTS%_MESSAGE_COM_K{NO:TARGET}_DANMAKU(ARGS:1, ARG:1) RESETCOLOR ENDIF TARGET = LOCAL ;依頼 CASE "IRAI" LOCAL = TARGET TARGET = ARG:1 RESULT = 0 ;口上表示 IF FLAG:口上テキスト設定 > 0 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF ;TARGET口上出力 SIF FLAG:口上色 TRYCALLFORM M_KOJO%RESULTS%_COLOR_K{NO:TARGET} RESULT = 0 TRYCALLFORM M_KOJO%RESULTS%_IRAI_K{NO:TARGET}(ARGS:1, ARGS:2, ARG:2) RESETCOLOR ENDIF TARGET = LOCAL RETURN RESULT ;贈り物 CASE "GIFT" LOCAL = TARGET TARGET = ARG:2 ;口上表示 IF FLAG:口上テキスト設定 > 0 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF ;TARGET口上出力 SIF FLAG:口上色 TRYCALLFORM M_KOJO%RESULTS%_COLOR_K{NO:TARGET} TRYCALLFORM M_KOJO%RESULTS%_EVENT_K{NO:TARGET}_GIFT(ARG:1, ARG:3, ARG:4, ARGS:1, ARGS:2) RESETCOLOR ENDIF TARGET = LOCAL ;デイリーイベント,DIARYと綴り間違えなように CASE "DAILY" LOCAL = TARGET TARGET = ARG:2 RESULT = 0 RESULTS = ;口上表示 IF FLAG:口上テキスト設定 > 0 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF IF RESULT SIF FLAG:口上色 TRYCALLFORM M_KOJO%RESULTS%_COLOR_K{NO:TARGET} TRYCCALLFORM M_KOJO%RESULTS%_DAILY_EVENT_K{NO:TARGET}_{ARG:1}(ARG:2, ARG:3, ARG:4, ARG:5, ARG:6, ARGS:1, ARGS:2) CATCH TRYCALLFORM DAILY_MESSAGE_{ARG:1}(ARG:2, ARG:3, ARG:4, ARG:5, ARG:6, ARGS:1, ARGS:2) ENDCATCH RESETCOLOR ELSE TRYCALLFORM DAILY_MESSAGE_{ARG:1}(ARG:2, ARG:3, ARG:4, ARG:5, ARG:6, ARGS:1, ARGS:2) ENDIF ELSE TRYCALLFORM DAILY_MESSAGE_{ARG:1}(ARG:2, ARG:3, ARG:4, ARG:5, ARG:6, ARGS:1, ARGS:2) ENDIF TARGET = LOCAL RETURN RESULT ;日記 CASE "DIARY" LOCAL = TARGET TARGET = ARG:2 RESULT = 0 RESULTS = ;口上表示 IF FLAG:口上テキスト設定 > 0 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF ;日記の存在判定 RESULT = 0 TRYCALLFORM DIARY%RESULTS%_K{NO:TARGET}_EXIST IF RESULT SIF FLAG:口上色 TRYCALLFORM M_KOJO%RESULTS%_COLOR_K{NO:TARGET} SELECTCASE ARGS:1 CASE "EXIST" RESULT = 1 ;存在判定を通っているので強制呼び出しで関数抜けチェックを兼ねる CASE "BEFORE_CHECK", "AFTER_CHECK" CALLFORM DIARY%RESULTS%_%ARGS:1%_K{NO:TARGET} CASE "TEXT" CALLFORM DIARY%RESULTS%_TEXT_K{NO:TARGET}(ARG:3, ARGS:2, ARG:4) ENDSELECT RESETCOLOR ENDIF ELSE RESULT = 0 ENDIF TARGET = LOCAL RETURN RESULT ;ムシバトル CASE "MUSHI_BATTLE" LOCAL = TARGET TARGET = ARG:2 RESULT = 0 RESULTS = RESULTS:1 = ;口上表示 IF FLAG:口上テキスト設定 > 0 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF ;RESULTSを使うので退避してリセットしておく RESULTS:1 = %RESULTS% RESULTS = MUSHI_NAME = %MUSHI_NAME:(MUSHI_STANDNUM:(ARG:3))% IF ARGS:1 == "口上色" TRYCALLFORM M_KOJO%RESULTS:1%_COLOR_K{NO:TARGET} ELSEIF GROUPMATCH(ARGS:1, "戦場に出した", "攻撃時", "倒れた時", "敗退時") TRYCALLFORM M_KOJO%RESULTS:1%_MESSAGE_COM_K{NO:TARGET}_MUSHI_BATTLE(ARGS:1, ARG:1) IF RESULTS != "" CALL MUSHI_MSGSET(@"%RESULTS%") SIF MUSHI_COLOR:(ARG:3) != MUSHI_COLOR:1 MUSHI_MSGCL:(RESULT) = MUSHI_COLOR:(ARG:3) ENDIF ELSE TRYCALLFORM M_KOJO%RESULTS:1%_MESSAGE_COM_K{NO:TARGET}_MUSHI_BATTLE(ARGS:1, ARG:1) ENDIF ENDIF TARGET = LOCAL ;引力 CASE "GRAVITY" LOCAL = TARGET TARGET = ARG:2 RESULT = 0 ;口上表示 IF FLAG:口上テキスト設定 > 0 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF TRYCALLFORM M_KOJO%RESULTS%_EVENT_K{NO:TARGET}_GRAVITY(ARG:1) ENDIF TARGET = LOCAL ;いつか来る終わりの為に CASE "ENDING" IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF SIF FLAG:口上色 TRYCALLFORM M_KOJO%RESULTS%_COLOR_K{NO:TARGET} TRYCALLFORM M_KOJO%RESULTS%_MESSAGE_ENDING_K{NO:TARGET} RESETCOLOR ENDSELECT ;custom code, return result for some cases where it's checked (like DANMAKU) RETURN RESULT ;------------------------------------------------- ;@KOJO_MESSAGE_PALAMCNG_A2 ;射精口上出力のギミック ;------------------------------------------------- @KOJO_MESSAGE_PALAMCNG_A2(ARG) ;addition custom code SIF cBannedDialogue:TARGET:0 RETURN 0 ;custom code, flush RESULTS RESULTS = ;ARG Wフェラ等でTARGETならARG=0、二人目ならARG=1 IF CFLAG:TARGET:口上セレクタ TRYCALLFORM M_KOJO_K{NO:TARGET}_{CFLAG:TARGET:口上セレクタ} ELSE TRYCALLFORM M_KOJO_K{NO:TARGET} ENDIF ;------------------------------------------------- ;射精対象が非ターゲットかつ非複数キャラSCOMF射精 ;------------------------------------------------- IF MASTER_POSE(0,SET_P) != TARGET && !ARG IF CFLAG:(NO:TARGET):イタズラ TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A2_K{NO:TARGET}_00(ARG) RETURN RESULT CATCH ENDCATCH ELSE TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_00(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ENDIF ;------------------------------------------------- ;コンドーム ;------------------------------------------------- IF GETBIT(TCVAR:50,0) IF CFLAG:(NO:TARGET):イタズラ TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A2_K{NO:TARGET}_0(ARG) RETURN RESULT CATCH ENDCATCH ELSE TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_0(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ENDIF ;------------------------------------------------- ;授乳プレイ ;------------------------------------------------- IF GETBIT(TCVAR:50,26) TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_26(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ;------------------------------------------------- ;イラマチオ ;------------------------------------------------- IF GETBIT(TCVAR:50,23) IF CFLAG:(NO:TARGET):イタズラ TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A2_K{NO:TARGET}_23(ARG) RETURN RESULT CATCH ENDCATCH ELSE TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_23(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ENDIF ;------------------------------------------------- ;シックスナイン ;------------------------------------------------- IF GETBIT(TCVAR:50,22) TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_22(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ;------------------------------------------------- ;パイズリフェラ ;------------------------------------------------- IF GETBIT(TCVAR:50,21) TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_21(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ;------------------------------------------------- ;手淫フェラ ;------------------------------------------------- IF GETBIT(TCVAR:50,20) TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_20(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ;------------------------------------------------- ;アナル奉仕 ;------------------------------------------------- IF GETBIT(TCVAR:50,9) TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_9(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ;------------------------------------------------- ;泡踊り ;------------------------------------------------- IF GETBIT(TCVAR:50,8) TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_8(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ;------------------------------------------------- ;足コキ ;------------------------------------------------- IF GETBIT(TCVAR:50,7) IF CFLAG:(NO:TARGET):イタズラ TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A2_K{NO:TARGET}_7(ARG) RETURN RESULT CATCH ENDCATCH ELSE TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_7(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ENDIF ;------------------------------------------------- ;素股 ;------------------------------------------------- IF GETBIT(TCVAR:50,6) TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_6(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ;------------------------------------------------- ;パイズリ ;------------------------------------------------- IF GETBIT(TCVAR:50,5) IF CFLAG:(NO:TARGET):イタズラ TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A2_K{NO:TARGET}_5(ARG) RETURN RESULT CATCH ENDCATCH ELSE TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_5(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ENDIF ;------------------------------------------------- ;フェラチオ ;------------------------------------------------- IF GETBIT(TCVAR:50,4) IF CFLAG:(NO:TARGET):イタズラ TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A2_K{NO:TARGET}_4(ARG) RETURN RESULT CATCH ENDCATCH ELSE TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_4(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ENDIF ;------------------------------------------------- ;手淫 ;------------------------------------------------- IF GETBIT(TCVAR:50,3) IF CFLAG:(NO:TARGET):イタズラ TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A2_K{NO:TARGET}_3(ARG) RETURN RESULT CATCH ENDCATCH ELSE TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_3(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ENDIF ;------------------------------------------------- ;アナル ;------------------------------------------------- IF GETBIT(TCVAR:50,2) IF CFLAG:(NO:TARGET):イタズラ TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A2_K{NO:TARGET}_2(ARG) RETURN RESULT CATCH ENDCATCH ELSE TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_2(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ENDIF ;------------------------------------------------- ;膣内 ;------------------------------------------------- IF GETBIT(TCVAR:50,1) IF CFLAG:(NO:TARGET):イタズラ TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A2_K{NO:TARGET}_1(ARG) RETURN RESULT CATCH ENDCATCH ELSE TRYCCALLFORM M_KOJO%RESULTS%_MESSAGE_PALAMCNG_A_K{NO:TARGET}_1(ARG) RETURN RESULT CATCH ENDCATCH ENDIF ENDIF CALL PALAM_MESSAGE_A RESETCOLOR RETURN 0 @SILENCE_TSTOP(ARG) #FUNCTION ;時間停止中には喋らないキャラを指定 SIF GROUPMATCH(ARG,39,41,54,86,87,88) RETURNF 1