code:
;-------------------------------------------------
;;; 攻撃スキル
;-------------------------------------------------
@CC_SP_TOKEN_SKILL_ATTACK(ACTOR_DID, TARGET_DID, SKILL_DID, SOURCE_ACTION_DID)
#DIM  DYNAMIC ACTOR_DID
#DIM  DYNAMIC TARGET_DID
#DIM  DYNAMIC SKILL_DID
#DIM  DYNAMIC SOURCE_ACTION_DID
#DIMS DYNAMIC TARGET_LIST

#DIM  DYNAMIC EFFECT_RATE
#DIM  DYNAMIC ACTION_DID

#DIM TRIGGER_ID
#DIM BLOCK
#DIM DYNAMIC SEQUENCE

EFFECT_RATE = DT_CELL_GET("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "EFFECT_RATE", 1)

;TARGET_DIDが無効かスキル側で指定されている場合はターゲティング実施
IF DT_SELECT("CC_ACTOR", @"id = {TARGET_DID}") == 0 || DT_CELL_GET("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "TARGETING_REQUIRED", 1)
	CALL CLOSE_COMBAT_SET_TARGET(ACTOR_DID, SKILL_DID)
	TARGET_DID  = RESULT
	TARGET_LIST = %CC_MULTI_TARGET_LIST%
ENDIF
;DEBUGPRINTFORML <%DT_CELL_GETS("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "SKILL_DEF_NAME", 1)%>@/C@トークンの効果発動 Target: %TARGET_LIST%
;CALL CC_PRINT(@"@C:{カラー_注意}@<%PARENT_TOKEN_NAME%>@/C@トークンの効果発動！")
CALL CC_TOKEN_SKILL_TRIGGER_INIT(ACTOR_DID, TARGET_DID, SKILL_DID, "ADD_NEW_BLOCK_TO_TOP")
TRIGGER_ID = RESULT

SELECTCASE DT_CELL_GETS("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "SKILL_DEF_NAME", 1)
	CASE "COUNTER_ATTACK"
        ;レアンナスキル処理
        VARI SKILL_LV
        SKILL_LV = HAS_SKILL(CCS_ATK_CHARA_ID, "K30_UNIQUE_SKILL_WITHER_THORN", スキル_大分類_冒険)
        IF SKILL_LV
            VARI M_COUNTER
			M_COUNTER = ABL:CCS_ATK_CHARA_ID:魔術
            CALL SKILL_GET_EFFECT_RATE(スキル_ジャンル_戦闘, "K30_UNIQUE_SKILL_WITHER_THORN", SKILL_LV)
            CCS_EFFECT_RATE += MIN(25, M_COUNTER * RESULT / 100)
            CALL CC_SET_ACT_FLAG_BY_ID(RESULT, "K30_UNIQUE_SKILL_WITHER_THORN", "1")
        ENDIF
		CALL CC_SUB_SP_TOKEN(ACTOR_DID, "COUNTER_ATTACK", 1)
		{
			DT_ROW_ADD "CC_ACTION"
				,"TRIGGER_ID", TRIGGER_ID
				,"SEQUENCE", SEQUENCE++
				,"FUNCTION_NAME", "CC_ACTION_ATTACK"
				,"ACTOR_DID", ACTOR_DID
				,"TARGET_DID", TARGET_DID
				,"DAMAGE_MODIFIER", EFFECT_RATE
		}
		CALL CC_SET_ACT_FLAG_BY_ID(RESULT, "COUNTER_PROHIBITED", "1")
	CASE "ARROW_RAIN"
		CALL CC_SUB_SP_TOKEN(ACTOR_DID, "ARROW_RAIN", 1)
		FOR LOCAL, 0, LIST_COUNT(TARGET_LIST)
			{
				DT_ROW_ADD "CC_ACTION"
					,"TRIGGER_ID", TRIGGER_ID
					,"SEQUENCE", SEQUENCE++
					,"FUNCTION_NAME", "CC_ACTION_ATTACK"
					,"ACTOR_DID", ACTOR_DID
					,"TARGET_DID", LIST_GETINT(TARGET_LIST, LOCAL)
					,"DAMAGE_MODIFIER", EFFECT_RATE
			}
			CALL CC_SET_ACT_FLAG_BY_ID(RESULT, "COUNTER_PROHIBITED", "1")
		NEXT
	CASE "VITAL_POINT_CORPSE_EXPLOSION"
		CALL CC_SET_SP_TOKEN(ACTOR_DID, "VITAL_POINT_CORPSE_EXPLOSION", 0)
		FOR LOCAL, 0, LIST_COUNT(TARGET_LIST)
			{
				DT_ROW_ADD "CC_ACTION"
					,"TRIGGER_ID", TRIGGER_ID
					,"SEQUENCE", SEQUENCE++
					,"FUNCTION_NAME", "CC_ACTION_ATTACK"
					,"ACTOR_DID", ACTOR_DID
					,"TARGET_DID", LIST_GETINT(TARGET_LIST, LOCAL)
					,"DAMAGE_FORMULA", "CC_DAMAGE_FORMULA_VITAL_POINT_CORPSE_EXPLOSION"
			}
			ACTION_DID = RESULT
			CALL CC_SET_ACT_FLAG_BY_ID(ACTION_DID, "COUNTER_PROHIBITED", "1")
			CALL CC_SET_ACT_FLAG_BY_ID(ACTION_DID, "CONTINUE_ATTACK_EVENIF_ATTACKER_DIED", "1")
		NEXT
		;◆ドラゴンキック
	CASE "DRAGON_KICK"
		CC_SE '= "Explode_5.mp3"
		{
			DT_ROW_ADD "CC_ACTION"
				,"TRIGGER_ID", TRIGGER_ID
				,"SEQUENCE", SEQUENCE++
				,"FUNCTION_NAME", "CC_ACTION_ATTACK"
				,"ACTOR_DID", ACTOR_DID
				,"TARGET_DID", TARGET_DID
				,"DAMAGE_MODIFIER", EFFECT_RATE * CC_SP_TOKEN_NUM(ACTOR_DID, "DRAGON_JUMP")
				,"OPTION", "[IGNORE_ARMOR:1]"
		}
		{
			DT_ROW_ADD "CC_ACTION"
				,"TRIGGER_ID", TRIGGER_ID
				,"SEQUENCE", SEQUENCE++
				,"FUNCTION_NAME", "CC_ACTION_INFLICT_ABNORMALITY"
				,"ACTOR_DID", ACTOR_DID
				,"TARGET_DID", ACTOR_DID
				,"TOKEN_NAME", "STUN"
				,"VALUE", 1
				,"SUCCESS_RATE", 100
		}
		IF CC_SP_TOKEN_NUM(ACTOR_DID, "DRAGON_JUMP") > 3
			{
				DT_ROW_ADD "CC_ACTION"
					,"TRIGGER_ID", TRIGGER_ID
					,"SEQUENCE", SEQUENCE++
					,"FUNCTION_NAME", "CC_ACTION_INFLICT_ABNORMALITY"
					,"ACTOR_DID", ACTOR_DID
					,"TARGET_DID", ACTOR_DID
					,"TOKEN_NAME", "BURN"
					,"VALUE", 2
					,"SUCCESS_RATE", 100
			}
		ELSE
			{
				DT_ROW_ADD "CC_ACTION"
					,"TRIGGER_ID", TRIGGER_ID
					,"SEQUENCE", SEQUENCE++
					,"FUNCTION_NAME", "CC_ACTION_INFLICT_ABNORMALITY"
					,"ACTOR_DID", ACTOR_DID
					,"TARGET_DID", ACTOR_DID
					,"TOKEN_NAME", "BURN"
					,"VALUE", 1
					,"SUCCESS_RATE", 100
			}
		ENDIF
		CALL CC_SET_ACT_FLAG_BY_ID(RESULT, "COUNTER_PROHIBITED", "1")
		CALL CC_SET_SP_TOKEN(ACTOR_DID, "DRAGON_JUMP", 0)
		;◆ドラゴンダイブ
	CASE "DRAGON_DIVE"
		CC_SE '= "Explode_5.mp3"
		{
			DT_ROW_ADD "CC_ACTION"
				,"TRIGGER_ID", TRIGGER_ID
				,"SEQUENCE", SEQUENCE++
				,"FUNCTION_NAME", "CC_ACTION_ATTACK"
				,"ACTOR_DID", ACTOR_DID
				,"TARGET_DID", TARGET_DID
				,"DAMAGE_MODIFIER", EFFECT_RATE * CC_SP_TOKEN_NUM(ACTOR_DID, "DRAGON_RISING")
				,"OPTION", "[IGNORE_ARMOR:1]"
		}
		CALL CC_SET_ACT_FLAG_BY_ID(RESULT, "COUNTER_PROHIBITED", "1")
		CALL CC_SET_SP_TOKEN(ACTOR_DID, "DRAGON_RISING", 0)
		;◆ランスチャージ
	CASE "LANCE_CHARGE"
		CC_SE '= "Clash_0.mp3"
		{
			DT_ROW_ADD "CC_ACTION"
				,"TRIGGER_ID", TRIGGER_ID
				,"SEQUENCE", SEQUENCE++
				,"FUNCTION_NAME", "CC_ACTION_ATTACK"
				,"ACTOR_DID", ACTOR_DID
				,"TARGET_DID", TARGET_DID
				,"DAMAGE_MODIFIER", EFFECT_RATE * CC_SP_TOKEN_NUM(ACTOR_DID, "CHARGE_PREP")
		}
		LOCAL:1 = RESULT
		CALL CC_SET_ACT_FLAG_BY_ID(LOCAL:1, "COUNTER_PROHIBITED", "1")
		{
			DT_ROW_ADD "CC_ACTION"
				,"TRIGGER_ID", TRIGGER_ID
				,"SEQUENCE", SEQUENCE++
				,"FUNCTION_NAME", "CC_ACTION_INFLICT_ABNORMALITY"
				,"ACTOR_DID", ACTOR_DID
				,"TARGET_DID", ACTOR_DID
				,"TOKEN_NAME", "STUN"
				,"VALUE", 1
				,"SUCCESS_RATE", 100
		}
		;命中対象の[挑発]を失わせる処理（突撃準備トークン2以上のとき）
		IF CC_SP_TOKEN_NUM(TARGET_DID, "PROVOKE") && CC_SP_TOKEN_NUM(ACTOR_DID, "CHARGE_PREP") > 1
			CALL CC_SET_SP_TOKEN(TARGET_DID, "PROVOKE", 0)
			CALL CC_SET_ACT_FLAG_BY_ID(LOCAL:1, "LOST_PROVOKE_BY_CHARGE", "1")
		ENDIF
		CALL CC_SET_SP_TOKEN(ACTOR_DID, "CHARGE_PREP", 0)
		;◆呪詛の吐血流
	CASE "CURSE_HEMOPTYSIS"
		CC_SE '= "Roar_1.mp3"
		FOR LOCAL, 0, LIST_COUNT(TARGET_LIST)
			{
				DT_ROW_ADD "CC_ACTION"
					,"TRIGGER_ID", TRIGGER_ID
					,"SEQUENCE", SEQUENCE++
					,"FUNCTION_NAME", "CC_ACTION_ATTACK"
					,"ACTOR_DID", ACTOR_DID
					,"TARGET_DID", LIST_GETINT(TARGET_LIST, LOCAL)
					,"DAMAGE_MODIFIER", EFFECT_RATE * CC_SP_TOKEN_NUM(ACTOR_DID, "DEAD_DRIP")
			}
			CALL CC_SET_ACT_FLAG_BY_ID(RESULT, "COUNTER_PROHIBITED", "1")
			;脱力付与ブロック 付与率は[40×死霊の滴りトークン数]％
			IF RAND:100 < (40 * CC_SP_TOKEN_NUM(ACTOR_DID, "DEAD_DRIP"))
				{
					DT_ROW_ADD "CC_ACTION"
						,"TRIGGER_ID", TRIGGER_ID
						,"SEQUENCE", SEQUENCE++
						,"FUNCTION_NAME", "CC_ACTION_ADD_SP_TOKEN"
						,"ACTOR_DID", ACTOR_DID
						,"TARGET_DID", LIST_GETINT(TARGET_LIST, LOCAL)
						,"TOKEN_NAME", "WEAKNESS"
						,"VALUE", 2
				}
			ENDIF
		NEXT
		CALL CC_SET_SP_TOKEN(ACTOR_DID, "DEAD_DRIP", 0)
	CASEELSE

ENDSELECT

RETURN TRIGGER_ID

;-------------------------------------------------
;専用ダメージ計算式
;-------------------------------------------------
;散華
@CC_DAMAGE_FORMULA_VITAL_POINT_CORPSE_EXPLOSION(ACTOR_DID, TARGET_DID, ACTION_DID)
#DIM ACTOR_DID
#DIM TARGET_DID
#DIM ACTION_DID
#DIM SKILL_DID

DT_SELECT "SP_TOKEN_SKILL_PARAMS", "SKILL_DEF_NAME = 'VITAL_POINT_CORPSE_EXPLOSION'",,SKILL_DID
CC_DAMAGE = DT_CELL_GET("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "EFFECT_RATE", 1) * CC_SP_TOKEN_NUM(ACTOR_DID, "VITAL_POINT")


code:
;-------------------------------------------------
;;; 共通パッシブスキル
;;; 自己トークン数減少
;-------------------------------------------------
@CC_SP_TOKEN_SKILL_COMMON_SELF_DECREMENT(ACTOR_DID, TARGET_DID, SKILL_DID, SOURCE_ACTION_DID)
#DIM DYNAMIC ACTOR_DID
#DIM DYNAMIC TARGET_DID
#DIM DYNAMIC SKILL_DID
#DIM DYNAMIC SOURCE_ACTION_DID

#DIM TRIGGER_ID
#DIM BLOCK
#DIM DYNAMIC SEQUENCE

CALL CC_TOKEN_SKILL_TRIGGER_INIT(ACTOR_DID, TARGET_DID, SKILL_DID, "ADD_NEW_BLOCK_TO_TOP")
TRIGGER_ID = RESULT

{
	DT_ROW_ADD "CC_ACTION"
		,"TRIGGER_ID", TRIGGER_ID

		,"SEQUENCE", SEQUENCE
		,"FUNCTION_NAME", "CC_ACTION_SUB_SP_TOKEN"
		,"ACTOR_DID", ACTOR_DID
		,"TARGET_DID", ACTOR_DID
		,"TOKEN_NAME", DT_CELL_GETS("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "PARENT_TOKEN_NAME", 1)
		,"VALUE", DT_CELL_GET("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "EFFECT_RATE", 1)
}

RETURN 0	;TRIGGER口上不要なため
;-------------------------------------------------
;;; 共通パッシブスキル
;;; 自己トークン数減少
;-------------------------------------------------
@CC_SP_TOKEN_SKILL_COMMON_SELF_INCREMENT(ACTOR_DID, TARGET_DID, SKILL_DID, SOURCE_ACTION_DID)
#DIM DYNAMIC ACTOR_DID
#DIM DYNAMIC TARGET_DID
#DIM DYNAMIC SKILL_DID
#DIM DYNAMIC SOURCE_ACTION_DID

#DIM TRIGGER_ID
#DIM BLOCK
#DIM DYNAMIC SEQUENCE

CALL CC_TOKEN_SKILL_TRIGGER_INIT(ACTOR_DID, TARGET_DID, SKILL_DID, "ADD_NEW_BLOCK_TO_TOP")
TRIGGER_ID = RESULT

{
	DT_ROW_ADD "CC_ACTION"
		,"TRIGGER_ID", TRIGGER_ID

		,"SEQUENCE", SEQUENCE
		,"FUNCTION_NAME", "CC_ACTION_ADD_SP_TOKEN"
		,"ACTOR_DID", ACTOR_DID
		,"TARGET_DID", ACTOR_DID
		,"TOKEN_NAME", DT_CELL_GETS("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "PARENT_TOKEN_NAME", 1)
		,"VALUE", DT_CELL_GET("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "EFFECT_RATE", 1)
}

RETURN 0
;-------------------------------------------------
;;; トゲトークン
;;; 攻撃した相手にRATE x 個数 のダメージを与える
;-------------------------------------------------
@CC_SP_TOKEN_SKILL_THORN(ACTOR_DID, TARGET_DID, SKILL_DID, SOURCE_ACTION_DID)
#DIM DYNAMIC ACTOR_DID
#DIM DYNAMIC TARGET_DID
#DIM DYNAMIC SKILL_DID
#DIM DYNAMIC SOURCE_ACTION_DID

#DIM DYNAMIC VALUE
#DIM TRIGGER_ID
#DIM BLOCK
#DIM DYNAMIC SEQUENCE

VALUE = CC_SP_TOKEN_NUM(ACTOR_DID, "THORN") * DT_CELL_GET("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "EFFECT_RATE", 1)

CALL CC_TOKEN_SKILL_TRIGGER_INIT(ACTOR_DID, TARGET_DID, SKILL_DID, "ADD_NEW_BLOCK_TO_TOP")
TRIGGER_ID = RESULT

{
	DT_ROW_ADD "CC_ACTION"
		,"TRIGGER_ID", TRIGGER_ID

		,"SEQUENCE", SEQUENCE
		,"FUNCTION_NAME", "CC_ACTION_THORN"
		,"ACTOR_DID", ACTOR_DID
		,"TARGET_DID", TARGET_DID
		,"VALUE", VALUE
}
CALL CC_SET_ACT_FLAG_BY_ID(RESULT, "SOURCE_ACTION_DID", TOSTR(SOURCE_ACTION_DID))

RETURN TRIGGER_ID
;-------------------------------------------------
;;; 形態変更
;-------------------------------------------------
@CC_SP_TOKEN_SKILL_MODE_CHANGE(ACTOR_DID, TARGET_DID, SKILL_DID, SOURCE_ACTION_DID)
#DIM DYNAMIC ACTOR_DID
#DIM DYNAMIC TARGET_DID
#DIM DYNAMIC SKILL_DID
#DIM DYNAMIC SOURCE_ACTION_DID

#DIMS DYNAMIC PARENT_TOKEN_NAME
#DIMS DYNAMIC SKILL_DEF_NAME
#DIM DYNAMIC EFFECT_RATE
#DIM DYNAMIC DAMAGE

#DIM TRIGGER_ID
#DIM BLOCK
#DIM DYNAMIC SEQUENCE
#DIM ACTION_DID

PARENT_TOKEN_NAME = %DT_CELL_GETS("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "PARENT_TOKEN_NAME", 1)%
SKILL_DEF_NAME = %DT_CELL_GETS("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "SKILL_DEF_NAME", 1)%
EFFECT_RATE = DT_CELL_GET("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "EFFECT_RATE", 1)

DAMAGE = SOURCE_ACTION_DID == -1 ? CC_DAMAGE # CC_GET_ACT_INFO(SOURCE_ACTION_DID, "DAMAGE")	;暫定

CALL CC_TOKEN_SKILL_TRIGGER_INIT(ACTOR_DID, TARGET_DID, SKILL_DID, "ADD_NEW_BLOCK_TO_TOP")
TRIGGER_ID = RESULT

SELECTCASE SKILL_DEF_NAME
	CASE "GUARDIAN_MODE_SHIFT"
		SIF DAMAGE > 0
			CALL CC_SUB_SP_TOKEN(ACTOR_DID, PARENT_TOKEN_NAME, DAMAGE)
		IF CC_SP_TOKEN_NUM(ACTOR_DID, PARENT_TOKEN_NAME) == 0
			{
				DT_ROW_ADD "CC_ACTION"
					,"TRIGGER_ID", TRIGGER_ID

					,"SEQUENCE", SEQUENCE
					,"FUNCTION_NAME", "CC_ACTION_ADD_SP_TOKEN"
					,"ACTOR_DID", ACTOR_DID
					,"TARGET_DID", ACTOR_DID
					,"TOKEN_NAME", "THORN"
					,"VALUE", EFFECT_RATE
			}
		ENDIF
	CASEELSE
		DEBUGPRINTFORML スキル名[%SKILL_DEF_NAME%]の動作が未定義です
ENDSELECT

RETURN TRIGGER_ID

;-------------------------------------------------
;;; 秘孔
;-------------------------------------------------
@CC_SP_TOKEN_SKILL_VITAL_POINT(ACTOR_DID, TARGET_DID, SKILL_DID, SOURCE_ACTION_DID)
#DIM DYNAMIC ACTOR_DID
#DIM DYNAMIC TARGET_DID
#DIM DYNAMIC SKILL_DID
#DIM DYNAMIC SOURCE_ACTION_DID

#DIM TRIGGER_ID
#DIM BLOCK
#DIM DYNAMIC SEQUENCE

CALL CC_TOKEN_SKILL_TRIGGER_INIT(ACTOR_DID, TARGET_DID, SKILL_DID, "ADD_NEW_BLOCK_TO_TOP")
TRIGGER_ID = RESULT
{
	DT_ROW_ADD "CC_ACTION"
		,"TRIGGER_ID", TRIGGER_ID

		,"SEQUENCE", SEQUENCE
		,"FUNCTION_NAME", "CC_ACTION_VITAL_POINT"
		,"ACTOR_DID", ACTOR_DID
		,"TARGET_DID", ACTOR_DID
		,"EFFECT_RATE", DT_CELL_GET("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "EFFECT_RATE", 1)
}

RETURN TRIGGER_ID

;-------------------------------------------------
;;; 状態異常
;-------------------------------------------------
@CC_SP_TOKEN_SKILL_ABNORMALITY(ACTOR_DID, TARGET_DID, SKILL_DID, SOURCE_ACTION_DID)
#DIM DYNAMIC ACTOR_DID
#DIM DYNAMIC TARGET_DID
#DIM DYNAMIC SKILL_DID
#DIM DYNAMIC SOURCE_ACTION_DID

#DIM TRIGGER_ID
#DIM BLOCK
#DIM DYNAMIC SEQUENCE

CALL CC_TOKEN_SKILL_TRIGGER_INIT(ACTOR_DID, TARGET_DID, SKILL_DID, "ADD_NEW_BLOCK_TO_BOTTOM")
TRIGGER_ID = RESULT

SELECTCASE DT_CELL_GETS("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "SKILL_DEF_NAME", 1)
	CASE "TOKEN_SKILL_POISON"
		{
			DT_ROW_ADD "CC_ACTION"
				,"TRIGGER_ID", TRIGGER_ID
				,"SEQUENCE", SEQUENCE ++
				,"FUNCTION_NAME", "CC_ACTION_LOSS_HP"
				,"ACTOR_DID", ACTOR_DID
				,"TARGET_DID", ACTOR_DID
				,"VALUE", DT_CELL_GET("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "EFFECT_RATE", 1)
		}
	CASE "TOKEN_SKILL_BURN"
		{
			DT_ROW_ADD "CC_ACTION"
				,"TRIGGER_ID", TRIGGER_ID
				,"SEQUENCE", SEQUENCE ++
				,"FUNCTION_NAME", "CC_ACTION_LOSS_HP"
				,"ACTOR_DID", ACTOR_DID
				,"TARGET_DID", ACTOR_DID
				,"VALUE", DT_CELL_GET("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "EFFECT_RATE", 1)
		}
	CASE "TOKEN_SKILL_STUN"
        {
            DT_ROW_ADD "CC_ACTION"
                ,"TRIGGER_ID", TRIGGER_ID
                ,"SEQUENCE", SEQUENCE++
                ,"FUNCTION_NAME", "CC_ACTION_SET_ACTOR_STATE"
                ,"ACTOR_DID", ACTOR_DID
                ,"TARGET_DID", ACTOR_DID
                ,"DEF_NAME", "[STATE:行動不能]"
        }
	CASE "TOKEN_SKILL_SLEEP"
        {
            DT_ROW_ADD "CC_ACTION"
                ,"TRIGGER_ID", TRIGGER_ID
                ,"SEQUENCE", SEQUENCE++
                ,"FUNCTION_NAME", "CC_ACTION_SET_ACTOR_STATE"
                ,"ACTOR_DID", ACTOR_DID
                ,"TARGET_DID", ACTOR_DID
                ,"DEF_NAME", "[STATE:行動不能]"
        }
	CASE "TOKEN_SKILL_ORGASM"
        {
            DT_ROW_ADD "CC_ACTION"
                ,"TRIGGER_ID", TRIGGER_ID
                ,"SEQUENCE", SEQUENCE++
                ,"FUNCTION_NAME", "CC_ACTION_ORGASM_TOKEN"
                ,"ACTOR_DID", ACTOR_DID
                ,"TARGET_DID", ACTOR_DID
        }
	CASE "TOKEN_SKILL_ESTRUS"
        {
            DT_ROW_ADD "CC_ACTION"
                ,"TRIGGER_ID", TRIGGER_ID
                ,"SEQUENCE", SEQUENCE++
                ,"FUNCTION_NAME", "CC_ACTION_ESTRUS_TOKEN"
                ,"ACTOR_DID", ACTOR_DID
                ,"TARGET_DID", ACTOR_DID
        }
	CASE "TOKEN_SKILL_BINDINGTRAP"
		CC_SE '= "Rope_0.mp3"
		{
			DT_ROW_ADD "CC_ACTION"
				,"TRIGGER_ID", TRIGGER_ID
				,"SEQUENCE", SEQUENCE++
				,"FUNCTION_NAME", "CC_ACTION_ADD_SP_TOKEN"
				,"ACTOR_DID", ACTOR_DID
				,"TARGET_DID", ACTOR_DID
				,"TOKEN_NAME", "TRAPPED"
				,"VALUE", 2
		}
		{
			DT_ROW_ADD "CC_ACTION"
				,"TRIGGER_ID", TRIGGER_ID
				,"SEQUENCE", SEQUENCE++
				,"FUNCTION_NAME", "CC_ACTION_ADD_ABNORMALITY"
				,"ACTOR_DID", ACTOR_DID
				,"TARGET_DID", ACTOR_DID
				,"TOKEN_NAME", "STUN"
				,"VALUE", 1
				,"SUCCESS_RATE", 70
				,"ENHANCE_REGIST_AFTER_INFLICT", 25
		}
	CASE "TOKEN_SKILL_BEARTRAP"
		CC_SE '= "Slash_4.mp3"
		{
			DT_ROW_ADD "CC_ACTION"
				,"TRIGGER_ID", TRIGGER_ID
				,"SEQUENCE", SEQUENCE ++
				,"FUNCTION_NAME", "CC_ACTION_LOSS_HP"
				,"ACTOR_DID", ACTOR_DID
				,"TARGET_DID", ACTOR_DID
				,"VALUE", DT_CELL_GET("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "EFFECT_RATE", 1)
		}
		{
			DT_ROW_ADD "CC_ACTION"
				,"TRIGGER_ID", TRIGGER_ID
				,"SEQUENCE", SEQUENCE++
				,"FUNCTION_NAME", "CC_ACTION_ADD_SP_TOKEN"
				,"ACTOR_DID", ACTOR_DID
				,"TARGET_DID", ACTOR_DID
				,"TOKEN_NAME", "TRAPPED"
				,"VALUE", 2
		}
		{
			DT_ROW_ADD "CC_ACTION"
				,"TRIGGER_ID", TRIGGER_ID
				,"SEQUENCE", SEQUENCE++
				,"FUNCTION_NAME", "CC_ACTION_ADD_ABNORMALITY"
				,"ACTOR_DID", ACTOR_DID
				,"TARGET_DID", ACTOR_DID
				,"TOKEN_NAME", "STUN"
				,"VALUE", 1
				,"SUCCESS_RATE", 90
				,"ENHANCE_REGIST_AFTER_INFLICT", 40
		}
ENDSELECT
;行数が増えすぎるのでTRIGGERメッセージは出さない
RETURN 0
;RETURN TRIGGER_ID

;-------------------------------------------------
;;; 状態異常
;-------------------------------------------------
@CC_SP_TOKEN_SKILL_ABNORMALITY_AFTER_ATTACK_INSTANT(ACTOR_DID, TARGET_DID, SKILL_DID, SOURCE_ACTION_DID)
#DIM DYNAMIC ACTOR_DID
#DIM DYNAMIC TARGET_DID
#DIM DYNAMIC SKILL_DID
#DIM DYNAMIC SOURCE_ACTION_DID

#DIM TRIGGER_ID
#DIM BLOCK
#DIM DYNAMIC SEQUENCE
#DIM ACTION_DID

CALL CC_TOKEN_SKILL_TRIGGER_INIT(ACTOR_DID, TARGET_DID, SKILL_DID, "INSTANT")
	TRIGGER_ID = RESULT

SELECTCASE DT_CELL_GETS("SP_TOKEN_SKILL_PARAMS", SKILL_DID, "SKILL_DEF_NAME", 1)
	CASE "TOKEN_SKILL_SLEEP_ATTACKED"
		CALL CC_SET_SP_TOKEN(ACTOR_DID, "SLEEP", 0)
        {
            DT_ROW_ADD "CC_ACTION"
                ,"TRIGGER_ID", TRIGGER_ID
                ,"ACTOR_DID", ACTOR_DID
                ,"TARGET_DID", TARGET_DID
        }
        ACTION_DID = RESULT
	CASEELSE

ENDSELECT

;そのまま口上呼び出し
CALL KOJO_XML_COMBAT(ACTION_DID, "EXEC")
CALL KOJO_XML_COMBAT(ACTION_DID, "RESULT")
DT_ROW_REMOVE "CC_TRIGGERED_SKILL", TRIGGER_ID
DT_ROW_REMOVE "CC_ACTION", ACTION_DID

RETURN 0

repo_name: napo/erafl

license: unknown


code:
;愛撫

;-------------------------------------------------
;コマンド名称
;-------------------------------------------------
@COM_NAME0
IF MTAR_NUM >= 2
	LOCALS:0 = 同時愛撫
ELSEIF MPLY_NUM >= 2
	LOCALS:0 = 一斉愛撫
ELSE
	LOCALS:0 = 愛撫
ENDIF

RESULTS:0 = %LOCALS:0%する
RESULTS:1 = %LOCALS:0%させられる
RESULTS:2 = %LOCALS:0%させる
RESULTS:3 = %LOCALS:0%される
RESULTS:4 = %LOCALS:0%させる
RESULTS:5 = %LOCALS:0%見せつけ

;-------------------------------------------------
;選択可否判定
;-------------------------------------------------
@COM_ABLE0
CALL COM_ABLE_COMMON(0)
SIF RESULT == 0
	RETURN 0
;1+
SIF MPLY_NUM <= 0
	RETURN 0
;ターゲットはプレイヤーの倍まで
SIF MTAR_NUM <= 0 || MTAR_NUM > MPLY_NUM * 2
	RETURN 0

FOR LOCAL:0, 0, MPLY_NUM
	FOR LOCAL:1, 0, MTAR_NUM
		SIF !CAN_REACH_BODY(MPLY:(LOCAL:0),MTAR:(LOCAL:1))
			RETURN 0
	NEXT
NEXT
RETURN 1

;-------------------------------------------------
;メイン処理
;-------------------------------------------------
@COM0
;実行判定
CALL COM_ORDER_COMMON
SIF RESULT == 0
	RETURN 0

;●人数補正の設定
LOCAL:10 = 100

SELECTCASE MPLY_NUM
	CASE 2
		TIMES LOCAL:10, 0.75
	CASE 3
		TIMES LOCAL:10, 0.60
	CASE 4
		TIMES LOCAL:10, 0.50
	CASE 5
		TIMES LOCAL:10, 0.45
ENDSELECT

SELECTCASE MTAR_NUM
	CASE 2
		TIMES LOCAL:10, 0.75
ENDSELECT

;●全プレイヤーについて処理
FOR LOCAL:0, 0, MPLY_NUM
	LOCAL:2 = MPLY:(LOCAL:0)

	DOWNBASE:(LOCAL:2):体力 += 100

	EXP:(LOCAL:2):性技経験値 += MAX(MTAR_NUM / 2 + 1, 1)

	SOURCE:(LOCAL:2):奉仕 = SERVE_HOUSHI(LOCAL:2, 100)
	SOURCE:(LOCAL:2):接触 = 100
	SOURCE:(LOCAL:2):性行動 = 90

	;主人公がターゲットなら愛情のソース追加
	IF IS_MTAR(MASTER)
		CALL ADD_SOURCE_AIZYOU(LOCAL:2, 50)
	ENDIF

	;主導権に応じた優越・屈従のソース追加
	CALL ADD_SOURCE_INITIATIVE_U(LOCAL:2, 100, 20)

	;奉仕経験値を得られるコマンドのフラグ
	TCVAR:(LOCAL:2):奉仕経験取得可能 = 1

	;全ターゲットに与える快感系ソースを計算
	FOR LOCAL:1, 0, MTAR_NUM
		LOCAL:3 = MTAR:(LOCAL:1)
		SOURCE:(LOCAL:3):快Ｃ += SENSE_HOUSHI(LOCAL:2, LOCAL:3, 1200) * LOCAL:10 / 100

	NEXT
NEXT

;●全ターゲットについて処理
FOR LOCAL:0, 0, MTAR_NUM
	LOCAL:2 = MTAR:(LOCAL:0)

	DOWNBASE:(LOCAL:2):体力 += 60

	SOURCE:(LOCAL:2):露出 = 100
	SOURCE:(LOCAL:2):接触 = 100
	SOURCE:(LOCAL:2):性行動 = 180

	;主人公がプレイヤーなら愛情のソース追加
	IF IS_MPLY(MASTER)
		CALL ADD_SOURCE_AIZYOU(LOCAL:2, 100)
	ENDIF

	;主導権に応じた優越・屈従のソース追加
	CALL ADD_SOURCE_INITIATIVE_U(LOCAL:2, 60, 0)

NEXT

; ;1-1のときのみキスを追加
; IF MPLY_NUM == 1 && MTAR_NUM == 1
; 	;どちらもキス未経験でない and 口が絡む行為を行っていない and キスができない態勢ではない
; 	IF !TALENT:(MPLY:0):キス未経験 && !TALENT:(MTAR:0):キス未経験 && !IS_EQUIP_PLAYER(MPLY:0, 2, 11, 12, 20, 104) && !IS_EQUIP_PLAYER(MTAR:0, 2, 11, 12, 20, 104) && !IS_RIDDEN(MPLY:0) && !IS_RIDDEN(MTAR:0)
; 		TFLAG:17 = 1

; 		EXP:(MPLY:0):キス経験 += 1
; 		EXP:(MTAR:0):キス経験 += 1

; 		SOURCE:(MPLY:0):快Ｍ = SENSE_HOUSHI(MTAR:0, MPLY:0, 100)
; 		SOURCE:(MTAR:0):快Ｍ = SENSE_HOUSHI(MPLY:0, MTAR:0, 100)

; 		SOURCE:(MTAR:0):奉仕 = SERVE_HOUSHI(LOCAL:2, 50)

; 		TIMES SOURCE:(MPLY:0):愛情, 2.00
; 		TIMES SOURCE:(MTAR:0):愛情, 2.00
; 	ENDIF
; ENDIF

;●全ターゲットについて処理
FOR LOCAL:0, 0, MTAR_NUM
	LOCAL:1 = MTAR:(LOCAL:0)

	;挿入中だと性能低下
	IF IS_INSERT_SINGLE(LOCAL:1, "全")
		TIMES SOURCE:(LOCAL:1):快Ｃ, 0.80
	ENDIF
NEXT

;主導度変化基準値
TFLAG:主導度変化基準値 = 2

;倒錯度変化基準値
TFLAG:倒錯度変化基準値 = -1

;レズ・ＢＬ経験基準値
TFLAG:レズ・ＢＬ経験基準値 = 5

RETURN 1

;-------------------------------------------------
;継続コマンドかどうかを設定
;-------------------------------------------------
@COM_IS_EQUIP0
RETURN 1

;-------------------------------------------------
;継続状態の処理
;-------------------------------------------------
@COM_EQUIP0(ARG:0)
;●人数補正の設定
LOCAL:10 = 100

SELECTCASE MEQUIP_PLAYER_NUM:(ARG:0)
	CASE 2
		TIMES LOCAL:10, 0.75
ENDSELECT

SELECTCASE MEQUIP_TARGET_NUM:(ARG:0)
	CASE 2
		TIMES LOCAL:10, 0.75
ENDSELECT

;●全プレイヤーについて判定
FOR LOCAL:0, 0, MEQUIP_PLAYER_NUM:(ARG:0)
	LOCAL:2 = MEQUIP_PLAYER:(ARG:0):(LOCAL:0)

	DOWNBASE:(LOCAL:2):体力 += 20

	EXP:(LOCAL:2):性技経験値 += MAX(MEQUIP_TARGET_NUM:(ARG:0) / 2 + 1, 1)

	SOURCE:(LOCAL:2):奉仕 += SERVE_HOUSHI(LOCAL:2, 60)
	SOURCE:(LOCAL:2):接触 += 30
	SOURCE:(LOCAL:2):性行動 += 30

	;奉仕経験値を得られるコマンドのフラグ
	TCVAR:(LOCAL:2):奉仕経験取得可能 = 1

	;全ターゲットに与える快感系ソースを計算
	FOR LOCAL:1, 0, MEQUIP_TARGET_NUM:(ARG:0)
		LOCAL:3 = MEQUIP_TARGET:(ARG:0):(LOCAL:1)
		SOURCE:(LOCAL:3):快Ｃ += SENSE_HOUSHI(LOCAL:2, LOCAL:3, 400) * LOCAL:10 / 100

	NEXT

	;倒錯度変化基準値
	TCVAR:(LOCAL:2):倒錯度変化基準値 -= 1
NEXT

;●全ターゲットについて判定
FOR LOCAL:0, 0, MEQUIP_TARGET_NUM:(ARG:0)
	LOCAL:2 = MEQUIP_TARGET:(ARG:0):(LOCAL:0)

	DOWNBASE:(LOCAL:2):体力 += 10

	SOURCE:(LOCAL:2):露出 += 50
	SOURCE:(LOCAL:2):接触 += 30
	SOURCE:(LOCAL:2):性行動 += 60

	; ;1-1のときのみキスを追加
	; IF MPLY_NUM == 1 && MTAR_NUM == 1
	; 	;どちらもキス未経験でない and 口が絡む行為を行っていない and キスができない態勢ではない
	; 	IF !TALENT:(LOCAL:3):キス未経験 && !TALENT:(LOCAL:2):キス未経験 && !IS_EQUIP_PLAYER(LOCAL:3, 2, 11, 12, 20, 104) && !IS_EQUIP_PLAYER(LOCAL:2, 2, 11, 12, 20, 104) && !IS_RIDDEN(LOCAL:3) && !IS_RIDDEN(LOCAL:2)
	; 		TFLAG:17 = 1

	; 		EXP:(LOCAL:3):キス経験 += 1
	; 		EXP:(LOCAL:2):キス経験 += 1

	; 		SOURCE:(LOCAL:3):快Ｍ = SENSE_HOUSHI(LOCAL:2, LOCAL:3, 100)
	; 		SOURCE:(LOCAL:2):快Ｍ = SENSE_HOUSHI(LOCAL:3, LOCAL:2, 100)

	; 		SOURCE:(LOCAL:2):奉仕 = SERVE_HOUSHI(LOCAL:2, 50)

	; 		TIMES SOURCE:(LOCAL:3):愛情, 2.00
	; 		TIMES SOURCE:(LOCAL:2):愛情, 2.00
	; 	ENDIF
	; ENDIF

	;倒錯度変化基準値
	TCVAR:(LOCAL:2):倒錯度変化基準値 -= 1
NEXT

;-------------------------------------------------
;継続中の表示
;-------------------------------------------------
@EQUIP_MESSAGE0(ARG:0)
LOCAL:2 = 0
RESULTS = %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%に愛撫中

;-------------------------------------------------
;継続中の地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE_EQUIP0(ARG:0)

PRINTFORML %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%の身体を弄っている…

;-------------------------------------------------
;継続を解除したときの地の文
;-------------------------------------------------
@COM_TEXT_RELEASE_EQUIP0(ARG:0)

;-------------------------------------------------
;固有の実行判定
;-------------------------------------------------
@COM_ORDER_PLAYER0(ARG:0)
;実行値の設定
TCVAR:(ARG:0):実行値 = 60

;共通部分
CALL COM_ORDER(ARG:0)

CALL COM_ORDER_ELEMENT(ARG:0, @"欲望Lv{ABL:(ARG:0):欲望}", ABL:(ARG:0):欲望 * 1)
CALL COM_ORDER_ELEMENT(ARG:0, @"奉仕Lv{ABL:(ARG:0):奉仕}", ABL:(ARG:0):奉仕 * 4)

LOCAL:0 = GET_PALAMLV(PALAM:(ARG:0):欲情)
CALL COM_ORDER_ELEMENT(ARG:0, @"欲情Lv{LOCAL:0}", MIN(LOCAL:0 * 2, 20))

IF TCVAR:(ARG:0):媚薬
	CALL COM_ORDER_ELEMENT(ARG:0, "媚薬", 6)
ENDIF

IF TALENT:(ARG:0):恥じらい
	CALL COM_ORDER_ELEMENT(ARG:0, "恥じらい", -1)
ENDIF
IF TALENT:(ARG:0):献身的
	CALL COM_ORDER_ELEMENT(ARG:0, "献身的", 6)
ENDIF
IF TALENT:(ARG:0):快感の否定
	CALL COM_ORDER_ELEMENT(ARG:0, "快感の否定", -1)
ENDIF

;合意
IF !TALENT:(ARG:0):合意 && !TALENT:(ARG:0):親友
	CALL COM_ORDER_ELEMENT(ARG:0, "合意なし", -10)
ENDIF
RETURN 1

;-------------------------------------------------
;地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE0
#DIMS DYNAMIC 実行名
#DIMS DYNAMIC 対象名
#DIMS DYNAMIC 下着描写
#DIMS DYNAMIC 潤滑描写
#DIMS DYNAMIC 性器描写

下着描写 = %C_COND_MAP_GETS(MTAR:0, "被覆衣装描写_秘部_下着")%
IF IS_ESTRUS(MTAR:0, 8) && IS_WET(MTAR:0)
	潤滑描写 = %S_R("びしょびしょに濡れた/濡れそぼった/すっかりぬめりを帯びた/ぐっしょりとした/とろとろに湿った")%
ENDIF

IF HAS_PENIS(MTAR:0)
	性器描写 = %BAR_NAME(MTAR:0)%
ELSE
	性器描写 = %S_R(@"%STR_BODY("クリ：感度：装飾", MTAR:0)%/%STR_BODY("陰唇：感度：装飾", MTAR:0)%")%
ENDIF

;1-1のときのみキスを追加
LOCALS:0 =
; IF MPLY_NUM == 1 && MTAR_NUM == 1
; 	;キスをした場合
; 	; IF TFLAG:17
; 	; 	LOCALS:0 = キスをしながら
; 	; ENDIF
; ENDIF

;ターゲットが2人
IF MTAR_NUM == 2
	対象名 = %ANAME(MTAR:0)%と%ANAME(MTAR:1)%
	;ターゲットが1人
ELSE
	対象名 = %ANAME(MTAR:0)%
ENDIF

;プレイヤーが複数
IF MPLY_NUM >= 3
	実行名 = %ANAME(MPLY:0)%達
	;プレイヤーが2人
ELSEIF MPLY_NUM == 2
	実行名 = %ANAME(MPLY:0)%と%ANAME(MPLY:1)%
	;プレイヤーが1人
ELSE
	実行名 = %ANAME(MPLY:0)%
ENDIF

SELECTCASE GET_COM_INITIATIVE()
		;プレイヤーに主導権
	CASE 0
		{
			CALLF PRINT_RANDC(
				@"%実行名%は%対象名%の肌に指を這わせ撫で回し%TARGET_STR("た", "てきた")%…", 1
				,@"%実行名%は%対象名%の肌に優しく指を這わせ撫で回し%TARGET_STR("た", "てきた")%…", !CFLAG:(MTAR:0):凌辱被害者フラグ
				,@"%実行名%は%対象名%の肌にいやらしく指を這わせ撫で回し%TARGET_STR("た", "てきた")%…", CFLAG:(MTAR:0):凌辱被害者フラグ
				,@"%実行名%は%対象名%の%潤滑描写%%下着描写%の上から、秘部に指を這わせ撫で回し%TARGET_STR("た", "てきた")%…", 下着描写 != "" && MTAR_NUM == 1
				,@"%実行名%は%対象名%の%下着描写%の中に手を這わせ、%性器描写%に指を這わせ撫で回し%TARGET_STR("た", "てきた")%…", 下着描写 != ""
				,@"%実行名%は%対象名%の%潤滑描写%%下着描写%の中に指を這わせ、%性器描写%を割れ目にそってなぞりあげ%TARGET_STR("た", "てきた")%…", 下着描写 != "" && !HAS_PENIS(MTAR:0)
				,@"%実行名%は%対象名%の%下着描写%の中に指を這わせ、%性器描写%を弄っ%TARGET_STR("た", "てきた")%…", 下着描写 != "" && !HAS_PENIS(MTAR:0) && MTAR_NUM == 1
				,@"%実行名%は%対象名%の%下着描写%の上から、%潤滑描写%%性器描写%を、わざと水音が響くように撫で回し%TARGET_STR("た", "てきた")%…", 下着描写 != "" && !HAS_PENIS(MTAR:0) && MTAR_NUM == 1
				,@"%実行名%は%対象名%の%下着描写%の上から、%潤滑描写%%性器描写%を、わざとくちゅくちゅと水音を立てて撫で回し%TARGET_STR("た", "てきた")%…", 下着描写 != "" && !HAS_PENIS(MTAR:0) && MTAR_NUM == 1
				,@"%実行名%は%対象名%の内腿からゆっくりと指を這わせ、%潤滑描写%%性器描写%に指の腹をあてると、執拗に弄ん%TARGET_STR("だ", "できた")%…", 下着描写 == "" && !HAS_PENIS(MTAR:0)
				,@"%実行名%は%対象名%の%潤滑描写%%下着描写%の上から、%性器描写%の先端を指で弄ん%TARGET_STR("た", "てきた")%…", 下着描写 != "" && HAS_PENIS(MTAR:0) && MTAR_NUM == 1
				,@"%実行名%は%対象名%の%下着描写%の上から、%性器描写%の鈴口をなぞるように指で愛撫し%TARGET_STR("た", "てきた")%…", 下着描写 != "" && HAS_PENIS(MTAR:0) && MTAR_NUM == 1
				,@"%実行名%は%対象名%の%下着描写%の中に手を伸ばし、%性器描写%に指を絡めて、ゆっくりと上下に摩り上げ%TARGET_STR("た", "てきた")%…", 下着描写 != "" && HAS_PENIS(MTAR:0) && MTAR_NUM == 1
				)
		}
		PRINTL
		;ターゲットに主導権
	CASE 1
		PRINTFORMW %実行名%は%対象名%に言われるまま、%対象名%の肌に触れてゆっくりと撫で回した…
		;第三者に主導権
	CASEELSE
		PRINTFORML %ANAME(TFLAG:主導権所有者)%は%実行名%に%対象名%の体を愛撫するように命令した
		PRINTFORMW %実行名%は%対象名%の肌に優しく指を這わせ撫で回した…
ENDSELECT

IF !HAS_PENIS(MTAR:0) && MTAR_NUM == 1
	{
		CALLF PRINT_RANDC(
			@"%性器描写%を指でなぞられる度に%対象名%は",
			,@"%実行名%が指をクロッチに%S_R("沈めて/押し当て/這わせて")%すりあげるたびに%対象名%は、", C_COND("衣装属性:秘部_下着:パンティ",,MTAR)
			,@"%実行名%が指先を下着の中に滑り込ませて%語彙_秘貝()%を撫で回すと、%対象名%は", C_COND("衣装属性:秘部_下着:パンティ",,MTAR)
			,@"%実行名%が下着の上から割れ目に沿って指先をゆっくりと這わせると、%対象名%は", C_COND("衣装属性:秘部_下着:パンティ",,MTAR)
			,@"%実行名%が鼠径部から秘部の柔肉に向かって指先を這わせると、%対象名%は", C_COND("衣装属性:秘部_下着:パンティ",,MTAR)
			,@"%実行名%が下着の中に手を差し入れて尻から秘部をなぞると%対象名%は", C_COND("衣装属性:秘部_下着:パンティ",,MTAR)
			)
	}
	{
		CALLF PRINT_RANDC(
			@"嫌悪のあまり顔をしかめ、食いしばってこらえている", CHECK_EMOTION(MTAR, "NEGATIVE") && !IS_ESTRUS(MTAR)
			,"嫌悪を滲ませているものの、抗いがたい快楽に時折切なげな声を漏らしている", CHECK_EMOTION(MTAR, "NEGATIVE") && IS_ESTRUS(MTAR)
			,@"快楽に身を任せて%S_R("切なげな吐息を漏らしている/喘いでいる/熱い息を漏らしている")%", CHECK_EMOTION(MTAR, "GOOD")
			,@"快楽に身を震わせて淫らに腰をくねらせ、さらなる快楽を求めている", CHECK_EMOTION(MTAR, "GOOD") && IS_ESTRUS(MTAR)
			,@"身体をぴくりと震わせて、刺激をこらえている", !CHECK_EMOTION(MTAR, "NEGATIVE") && !CHECK_EMOTION(MTAR, "GOOD")
			,@"", 1
			)
	}
ENDIF
WAIT

;--------------------------------------------------------
;地の文(パラメータ・刻印変動後)
;--------------------------------------------------------
@COM_TEXT_LAST0
#DIM  DYNAMIC 対象
#DIMS DYNAMIC 実行名
#DIMS DYNAMIC 対象名
#DIM  DYNAMIC 快感合計
#DIMS DYNAMIC 下着描写
#DIMS DYNAMIC 潤滑描写
#DIMS DYNAMIC 性器描写

下着描写 = %C_COND_MAP_GETS(MTAR:0, "被覆衣装描写_秘部_下着")%
IF IS_ESTRUS(MTAR:0, 8) && IS_WET(MTAR:0)
	潤滑描写 = %S_R("びしょびしょに濡れた/濡れそぼった/すっかりぬめりを帯びた/ぐっしょりとした/とろとろに湿った")%
ENDIF

IF HAS_PENIS(MTAR:0)
	性器描写 = %BAR_NAME(MTAR:0)%
ELSE
	性器描写 = %S_R(@"%STR_BODY("クリ：感度：装飾", MTAR:0)%/%STR_BODY("陰唇：感度：装飾", MTAR:0)%")%
ENDIF

FOR LOCAL:0, 0, MTAR_NUM
	対象 = MTAR:(LOCAL:0)
	対象名 = %ANAME(対象)%

	IF ((対象 != MASTER || CONFIG:441) && !IS_ANIMAL(対象)) && !IS_ANIMAL(対象)
		快感合計 = CUP:(対象):快Ｃ + CUP:(対象):快Ｂ + CUP:(対象):快Ｍ

		IF TCVAR:(対象):52
			;気絶中
			PRINTFORML %ANAME(対象)%は意識を失ったままビクビクと体を震わせている
		ELSEIF 快感合計 < 100
			IF TALENT:(対象):反抗的 && !TALENT:(対象):合意
				PRINTFORML %ANAME(対象)%は愛撫されながらも反抗的な態度を取っている
			ELSE
				PRINTFORML %ANAME(対象)%はむずかゆそうに身体をよじるが快楽を感じるまでには至っていないようだ
			ENDIF
		ELSEIF 快感合計 < 300
			PRINTFORML %ANAME(対象)%はこちらの愛撫に反応して身体を震わせている
		ELSEIF 快感合計 < 1000
			PRINTFORML %ANAME(対象)%は軽い電撃でも身体に走ったかのように小さく震えた
		ELSEIF 快感合計 < 3000
			PRINTFORML %ANAME(対象)%は明らかに快楽を感じている様子で艶やかな喘ぎ声をあげている
		ELSEIF 快感合計 < 6000
			PRINTFORML %ANAME(対象)%は愛撫に激しく快楽を感じ、自らせがむように手を首にまわしてきた
		ELSE
			{
				CALLF PRINT_RANDC(
					@"%対象名%はこちらの愛撫だけで激しく身体を震わせて感じており、さらなる刺激を求めてしなだれかかってきた", 1
					,@"%対象名%はすっかり身体を預け、撫で擦られる度に甘い吐息を漏らしてされるがままになっている", 1
					,@"%対象名%は素肌に少し指が触れるだけで吐息を荒らげ、肩を震わせ享楽に浸っている", 1
					,@"%対象名%は幼く敏感な柔肌をなぞられる度に肩を震わせ、荒い吐息を漏らしている", TALENT:対象:体格 == 体格_子供
					,@"%対象名%は素肌を撫で擦られる度に小さな肢体をふるふると震わせ、悦楽に浸っている", TALENT:対象:体格 <= 体格_小柄
					,@"%対象名%の%潤滑描写%%性器描写%から指の腹を持ち上げると、%語彙_愛液()%が%下着描写%と指の間で糸を引いた", 下着描写 != "" && 潤滑描写 != "" && !HAS_PENIS(対象)
					)
			}
			PRINTL
		ENDIF
	ENDIF
NEXT

;-------------------------------------------------

;コマンド区分
;-------------------------------------------------

@COM_AVAILABLE_WHEN0
IF FLAG:調教モード != 調教_居住区 && FLAG:調教モード != 調教_クエスト
	RETURN コマンド_ウフフ
ELSE
	RETURN コマンド_居住区
ENDIF

;--------------------
;性嗜好用関数
;--------------------
@COM_PREFERENCE_PLAYER_0()
RETURN POWER(2, 性的嗜好_愛撫したい)

@COM_PREFERENCE_TARGET_0()
RETURN POWER(2, 性的嗜好_愛撫されたい)


code:
;自慰

;-------------------------------------------------
;コマンド名称
;-------------------------------------------------
@COM_NAME100
LOCALS:0 =
IF TFLAG:撮影中 == 1
	LOCALS:0 = 撮影
ELSEIF TFLAG:104 >= 2
	LOCALS:0 = 公開
ELSEIF TFLAG:デート場所 == 8
	LOCALS:0 = 野外
ENDIF

IF IS_EQUIP_TARGET(MPLY:0, 61) && IS_EQUIP_TARGET(MPLY:0, 62)
	LOCALS:0 '= LOCALS:0 + "両穴バイブ"
ELSEIF IS_EQUIP_TARGET(MPLY:0, 61)
	LOCALS:0 '= LOCALS:0 +"バイブ"
ELSEIF IS_EQUIP_TARGET(MPLY:0, 62)
	LOCALS:0 '= LOCALS:0 +"アナルバイブ"
ENDIF

LOCALS:0 '= LOCALS:0 + "自慰"
SIF HAS_PENIS(MPLY:0) && HAS_VAGINA(MPLY:0)
	LOCALS:0 += "(C)"

IF IS_SOLO_PLAY()
	RESULTS:0 = %LOCALS:0%する
ELSE
	RESULTS:0 = %LOCALS:0%を見せつける
	RESULTS:1 = %LOCALS:0%させられる
	RESULTS:2 = %LOCALS:0%させる
	RESULTS:3 = %LOCALS:0%を見せつけられる
	RESULTS:4 = %LOCALS:0%させる
	RESULTS:5 = %LOCALS:0%見せつけ
ENDIF

;-------------------------------------------------
;選択可否判定
;-------------------------------------------------
@COM_ABLE100
;共通部分
CALL COM_ABLE_COMMON(100)
SIF RESULT == 0
	RETURN 0
;プレイヤーは1人以上
SIF MPLY_NUM <= 0
	RETURN 0
;複数人いてターゲットなしは不可
SIF MPLY_NUM > 1 && MTAR_NUM == 0
	RETURN 0
;プレイヤーが行動不能なら不可
SIF !IS_PLAYABLE(MPLY:0)
	RETURN 0
;全てのプレイヤーについて判定
FOR LOCAL:0, 0, MPLY_NUM
	;拘束中なら不可
	SIF IS_BIND(MPLY:(LOCAL:0))
		RETURN 0
	;todo this action really needs to be split into penis masturbation and vaginal masturbation to make sense
	SIF !HAS_VAGINA(MPLY:LOCAL)
		RETURN 0
	;既に自慰中なら不可
	SIF IS_EQUIP_PLAYER(MPLY:LOCAL, T_N("Ｃ自慰"))
		RETURN 0
NEXT
RETURN 1

;-------------------------------------------------
;メイン処理
;-------------------------------------------------
@COM100
;実行判定
CALL COM_ORDER_COMMON
SIF RESULT == 0
	RETURN 0

;各プレイヤーの絡む自慰・触手オナニーの継続状態を解除
FOR LOCAL:0, 0, MPLY_NUM
	CALL RELEASE_EQUIP_EX(100, MPLY:(LOCAL:0), -1)
	CALL RELEASE_EQUIP_EX(211, MPLY:(LOCAL:0), -1)
NEXT

;●全てのプレイヤーについて処理
FOR LOCAL:0, 0, MPLY_NUM
	LOCAL:2 = MPLY:(LOCAL:0)

	EXP:(LOCAL:2):自慰経験値 += 3

	SOURCE:(LOCAL:2):露出 = 1300
	SOURCE:(LOCAL:2):逸脱 = 100
	SOURCE:(LOCAL:2):性行動 = 240

	LOCAL:3 = 500

	SELECTCASE ABL:(LOCAL:2):自慰
		CASE 0
			TIMES LOCAL:3, 1.00
		CASE 1
			TIMES LOCAL:3, 1.20
		CASE 2
			TIMES LOCAL:3, 1.50
		CASE 3
			TIMES LOCAL:3, 1.80
		CASE 4
			TIMES LOCAL:3, 2.00
		CASEELSE
			LOCAL:3 = LOCAL:3 * (420 + (ABL:(LOCAL:2):自慰 - 5)) / 200
	ENDSELECT

	SIF GETBIT(TALENT:(LOCAL:2):淫乱系, 素質_淫乱_自慰狂い)
		TIMES LOCAL:3, 2.0

	SOURCE:(LOCAL:2):快Ｃ = SENSE_HOUSHI(LOCAL:2, LOCAL:2, LOCAL:3)
	SOURCE:(LOCAL:2):快Ｂ = SENSE_HOUSHI(LOCAL:2, LOCAL:2, LOCAL:3 / 2)

	;主導権に応じた優越・屈従のソース追加
	CALL ADD_SOURCE_INITIATIVE_U(LOCAL:2, 60, 120)

NEXT

IF !IS_SOLO_PLAY()
	;主導権の所在を取得
	LOCAL:11 = GET_COM_INITIATIVE()

	;●全てのターゲットについて処理
	FOR LOCAL:0, 0, MTAR_NUM
		LOCAL:1 = MTAR:(LOCAL:0)

		SOURCE:(LOCAL:1):性行動 = 120

		;ターゲットに主導権
		IF LOCAL:11 == 1 || LOCAL:11 == 2
			SOURCE:(LOCAL:1):嗜虐 = 60
			;ターゲットに主導権がない
		ELSE
			SOURCE:(LOCAL:1):逸脱 = 60
			SOURCE:(LOCAL:1):恐怖 = MAX(100 - 30 * ABL:(LOCAL:1):欲望, 0)
		ENDIF

		;主導権に応じた優越・屈従のソース追加
		CALL ADD_SOURCE_INITIATIVE_U(LOCAL:1, 80, 80)
	NEXT
ENDIF

;主導度変化基準値
TFLAG:主導度変化基準値 = 3

;倒錯度変化基準値
TFLAG:倒錯度変化基準値 = 1

;レズ・ＢＬ経験基準値
TFLAG:レズ・ＢＬ経験基準値 = 1

RETURN 1

;-------------------------------------------------
;継続コマンドかどうかを設定
;-------------------------------------------------
@COM_IS_EQUIP100
RETURN 1

;-------------------------------------------------
;継続状態の処理
;-------------------------------------------------
@COM_EQUIP100(ARG:0)
;●全プレイヤーについて処理
FOR LOCAL:0, 0, MEQUIP_PLAYER_NUM:(ARG:0)
	LOCAL:2 = MEQUIP_PLAYER:(ARG:0):(LOCAL:0)

	EXP:(LOCAL:2):自慰経験値 += 1

	SIF IS_EQUIP_TARGET(LOCAL:2, 61)
		EXP:(LOCAL:2):自慰経験値 += 1

	SIF IS_EQUIP_TARGET(LOCAL:2, 62)
		EXP:(LOCAL:2):自慰経験値 += 1

	SOURCE:(LOCAL:2):露出 += 600
	SOURCE:(LOCAL:2):逸脱 += 50
	SOURCE:(LOCAL:2):性行動 += 80

	LOCAL:3 = 500

	SELECTCASE ABL:(LOCAL:2):自慰
		CASE 0
			TIMES LOCAL:3, 1.00
		CASE 1
			TIMES LOCAL:3, 1.20
		CASE 2
			TIMES LOCAL:3, 1.50
		CASE 3
			TIMES LOCAL:3, 1.80
		CASE 4
			TIMES LOCAL:3, 2.00
		CASEELSE
			LOCAL:3 = LOCAL:3 * (420 + (ABL:(LOCAL:2):自慰 - 5)) / 200
	ENDSELECT

	SIF GETBIT(TALENT:(LOCAL:2):淫乱系, 素質_淫乱_自慰狂い)
		TIMES LOCAL:3, 2.0

	SOURCE:(LOCAL:2):快Ｃ += SENSE_HOUSHI(LOCAL:2, LOCAL:2, LOCAL:3)
	SOURCE:(LOCAL:2):快Ｂ += SENSE_HOUSHI(LOCAL:2, LOCAL:2, LOCAL:3 / 2)
NEXT

;●全ターゲットについて処理
FOR LOCAL:0, 0, MEQUIP_TARGET_NUM:(ARG:0)
	LOCAL:2 = MEQUIP_TARGET:(ARG:0):(LOCAL:0)

	SOURCE:(LOCAL:2):性行動 += 40
NEXT

;-------------------------------------------------
;継続中の表示
;-------------------------------------------------
@EQUIP_MESSAGE100(ARG:0)

LOCALS:0 =
IF TFLAG:撮影中 == 1
	LOCALS:0 = 撮影
ELSEIF TFLAG:104 >= 2
	LOCALS:0 = 公開
ELSEIF TFLAG:デート場所 == 8
	LOCALS:0 = 野外
ENDIF

IF IS_EQUIP_TARGET(MEQUIP_PLAYER:(ARG:0):0, 61) && IS_EQUIP_TARGET(MEQUIP_PLAYER:(ARG:0):0, 62)
	LOCALS:0 '= LOCALS:0 + "両穴バイブ"
ELSEIF IS_EQUIP_TARGET(MEQUIP_PLAYER:(ARG:0):0, 61)
	LOCALS:0 '= LOCALS:0 +"バイブ"
ELSEIF IS_EQUIP_TARGET(MEQUIP_PLAYER:(ARG:0):0, 62)
	LOCALS:0 '= LOCALS:0 +"アナルバイブ"
ENDIF
LOCALS:0 '= LOCALS:0 + "自慰"
RESULTS = %EQUIP_PLAYER_ANAME(ARG:0)%が%LOCALS:0%中

;-------------------------------------------------
;継続中の地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE_EQUIP100(ARG:0)
LOCAL:2 = 0
FOR LOCAL:0, 0, MEQUIP_PLAYER_NUM:(ARG:0)
	SIF HAS_VAGINA(MEQUIP_PLAYER:(ARG:0):(LOCAL:0))
		LOCAL:2 = 1
NEXT

PRINTFORM %EQUIP_PLAYER_ANAME(ARG:0)%は

IF IS_EQUIP_TARGET(MEQUIP_PLAYER:(ARG:0):0, 61) && IS_EQUIP_TARGET(MEQUIP_PLAYER:(ARG:0):0, 62)
	PRINTFORM 二穴をバイブで弄び、
ELSEIF IS_EQUIP_TARGET(MPLY:0, 61)
	PRINTFORM %STR_BODY("膣", MEQUIP_PLAYER:(ARG:0):0)%をバイブで弄び、
ELSEIF IS_EQUIP_TARGET(MPLY:0, 62)
	PRINTFORM %STR_BODY("アナル", MEQUIP_PLAYER:(ARG:0):0)%をバイブで弄び、
ENDIF
PRINTFORML %STR_BODY("クリ", MEQUIP_PLAYER:(ARG:0):0)%を弄っている…

;-------------------------------------------------
;継続を解除したときの地の文
;-------------------------------------------------
@COM_TEXT_RELEASE_EQUIP100(ARG:0)

;-------------------------------------------------
;固有の実行判定
;-------------------------------------------------
@COM_ORDER_PLAYER100(ARG:0)
;実行値の設定
TCVAR:(ARG:0):実行値 = 80

;共通部分
CALL COM_ORDER(ARG:0)

CALL COM_ORDER_ELEMENT(ARG:0, @"欲望Lv{ABL:(ARG:0):欲望}", ABL:(ARG:0):欲望 * 3)
CALL COM_ORDER_ELEMENT(ARG:0, @"露出Lv{ABL:(ARG:0):露出}", ABL:(ARG:0):露出 * 4)
CALL COM_ORDER_ELEMENT(ARG:0, @"自慰Lv{ABL:(ARG:0):自慰}", ABL:(ARG:0):自慰 * 4)

LOCAL:0 = GET_PALAMLV(PALAM:(ARG:0):欲情)
CALL COM_ORDER_ELEMENT(ARG:0, @"欲情Lv{LOCAL:0}", MIN(LOCAL:0 * 3, 30))

IF TCVAR:(ARG:0):媚薬
	CALL COM_ORDER_ELEMENT(ARG:0, "媚薬", 6)
ENDIF

IF TALENT:(ARG:0):恥じらい
	CALL COM_ORDER_ELEMENT(ARG:0, "恥じらい", -12)
ENDIF
IF TALENT:(ARG:0):恥薄い
	CALL COM_ORDER_ELEMENT(ARG:0, "恥薄い", 8)
ENDIF
IF TALENT:(ARG:0):自制心
	CALL COM_ORDER_ELEMENT(ARG:0, "自制心", -6)
ENDIF
IF TALENT:(ARG:0):目立ちたがり
	CALL COM_ORDER_ELEMENT(ARG:0, "目立ちたがり", 6)
ENDIF
IF TALENT:(ARG:0):自慰しやすい
	CALL COM_ORDER_ELEMENT(ARG:0, "自慰しやすい", 10)
ENDIF
IF TALENT:(ARG:0):快感の否定
	CALL COM_ORDER_ELEMENT(ARG:0, "快感の否定", -2)
ENDIF

IF !TALENT:(ARG:0):合意 && !TALENT:(ARG:0):親友
	CALL COM_ORDER_ELEMENT(ARG:0, "合意なし", -10)
ENDIF

SIF GETBIT(TALENT:(LOCAL:2):淫乱系, 素質_淫乱_自慰狂い)
	CALL COM_ORDER_ELEMENT(ARG:0, "自慰狂い", 20)

RETURN 1

;-------------------------------------------------
;地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE100
#DIM  DYNAMIC 被覆衣装部位
#DIM  DYNAMIC 被覆衣装ID
#DIMS DYNAMIC 被覆衣装描写
#DIMS クリ描写
#DIMS DESC

;下着で秘部が覆われているか確認する
CALL IS_COVERED(MPLY:0, 被覆部位_秘部, 1)
被覆衣装部位 = RESULT:0
被覆衣装ID = RESULT:1
IF (被覆衣装部位 == 衣装部位_下着下) || (被覆衣装部位 == 衣装部位_上下下着)
	TRYCCALLFORM CLOTH_DESC_%CLOTH_PART_NAME_ENG:被覆衣装部位%_{被覆衣装ID}
		被覆衣装描写 '= RESULTS
	CATCH
		TRYCCALLFORM CLOTH_NAME_%CLOTH_PART_NAME_ENG:被覆衣装部位%_{被覆衣装ID}
			被覆衣装描写 '= RESULTS
		CATCH
		ENDCATCH
	ENDCATCH
ELSE
	被覆衣装描写 '= ""
ENDIF

LOCALS:3 =
クリ描写 '= @"%STR_BODY("クリ：欲情", MPLY:0)%"
LOCALS:0 '= @"自身の指で%SPLIT_RAND(@"劣情を慰め/自身を慰め/%クリ描写%を弄り回し")%"

IF !IS_SOLO_PLAY()
	IF MTAR_NUM == 1
		LOCALS:1 = %ANAME(MTAR:0)%
	ELSEIF MTAR_NUM == 2
		LOCALS:1 = %ANAME(MTAR:0)%と%ANAME(MTAR:1)%
	ELSE
		LOCALS:1 = %ANAME(MTAR:0)%たち
	ENDIF
ENDIF

IF MPLY_NUM == 1
	LOCALS:2 = %ANAME(MPLY:0)%
ELSEIF MPLY_NUM == 2
	LOCALS:2 = %ANAME(MPLY:0)%と%ANAME(MPLY:1)%
ELSE
	LOCALS:2 = %ANAME(MPLY:0)%たち
ENDIF

IF TFLAG:撮影中 == 1
	LOCALS:3 = カメラに見えるように、
ELSEIF TFLAG:104 >= 2
	LOCALS:3 = 皆の見ている前で、
ELSEIF TFLAG:デート場所 == 8
	LOCALS:3 = 誰に見られているとも知らない中で、
ELSE
	LOCALS:3 =
ENDIF

;一人で自慰
IF IS_SOLO_PLAY()
	IF (被覆衣装描写 != "")
		PRINTFORML %LOCALS:2%は%被覆衣装描写%%SPLIT_RAND("の上から/越しに/を指でずらし/の中に手を入れて",1)%、自分自身を慰めた…
	ELSE
		PRINTFORML %LOCALS:2%は、自分自身を慰めた…
	ENDIF
	RETURN
ENDIF

SELECTCASE GET_COM_INITIATIVE()
		;プレイヤーに主導権
	CASE 0
		IF TFLAG:リアクションコマンド実行 && SEARCH_EQUIP_M(MTAR:0, MPLY:0, T_N("Ｃ自慰"), T_N("Ｐ自慰")) != -1
			DESC '= @"%ANAME(MPLY:0)%と%ANAME(MTAR:0)%は"
			DESC += @"%S_R("お互いに自身の指で性器を弄り回す姿を見せあいながら/互いの痴態を見せ合いながら/互いの痴態で自身の性感を高めながら")%、"
			DESC += @"%S_R("ぴちゃぴちゃ/にちゃにちゃ/くちゅくちゅ")%と淫らな水音をたてて"
			DESC += @"%S_R("自慰/オナニー/手淫/自身を慰める行為")%に"
			DESC += @"%S_R("耽っている/没頭している/夢中になっている")%…"
			CALLF TAG_PRINT(@"@C:{カラー_白}@%DESC%@/C@", 1)
			PRINTL
			WAIT
		ELSEIF (被覆衣装描写 != "") && (MPLY_NUM == 1)
			PRINTFORMW %LOCALS:2%は%被覆衣装描写%%SPLIT_RAND("の上から/越しに/を指でずらし/の中に手を入れて",1)%、%LOCALS:3%%LOCALS:1%に見せつけながら、指で自身の%クリ描写%や胸を弄り回してオナニーした…
		ELSE
			PRINTFORMW %LOCALS:2%は%LOCALS:3%%LOCALS:1%に見せつけながら、指で自身のクリトリスや胸を弄り回してオナニーした…
		ENDIF
		;ターゲットに主導権
	CASE 1
		PRINTFORML %LOCALS:1%は%LOCALS:2%に、その場でオナニーするように命令した
		IF (被覆衣装描写 != "") && (MPLY_NUM == 1)
			PRINTFORMW %LOCALS:2%は言われるまま%被覆衣装描写%%SPLIT_RAND("の上から/越しに/を指でずらし/の中に手を入れて",1)%、%LOCALS:3%%LOCALS:1%の目の前で%LOCALS:0%た…
		ELSE
			PRINTFORMW %LOCALS:2%は言われるまま、%LOCALS:3%%LOCALS:1%の目の前で%LOCALS:0%た…
		ENDIF
		;第三者に主導権
	CASEELSE
		PRINTFORML %ANAME(TFLAG:主導権所有者)%は%LOCALS:2%に対して、%LOCALS:1%の前でオナニーするように命令した
		PRINTFORMW %LOCALS:2%は言われるまま、%LOCALS:3%%LOCALS:1%の目の前で見せつけるように%LOCALS:0%た…
ENDSELECT

;--------------------------------------------------------
;地の文(パラメータ・刻印変動後)
;--------------------------------------------------------
@COM_TEXT_LAST100
FOR LOCAL:0, 0, MPLY_NUM
	LOCAL:1 = MPLY:(LOCAL:0)

	IF ((LOCAL:1 != MASTER || CONFIG:441) && !IS_ANIMAL(LOCAL:1)) && !CFLAG:(LOCAL:1):TEXT_LAST非表示 && IS_INITIATIVE(LOCAL:1)
		IF ABL:(LOCAL:1):自慰 >= 5 || GETBIT(TALENT:(LOCAL:1):淫乱系, 素質_淫乱_自慰狂い)
			PRINTFORML %ANAME(LOCAL:1)%はすっかりオナニーに没頭し、激しく指を動かして自ら快感を貪っている
		ELSEIF ABL:(LOCAL:1):露出 >= 5
			PRINTFORML %ANAME(LOCAL:1)%は見られることで興奮しているのか、上気した顔で指を動かしている
		ELSEIF ABL:(LOCAL:1):自慰 >= 2
			;捕虜調教のメインターゲット
			IF FLAG:調教モード == 2 && FINDELEMENT(PRISONER_TARGET, MTAR:0) != -1
				PRINTFORML %ANAME(LOCAL:1)%は屈辱に顔を歪めながらも、自ら快感を求めて指を動かしてしまっている
			ELSE
				PRINTFORML %ANAME(LOCAL:1)%は恥ずかしそうにしているが、無意識に快感を求めるように指を動かしている
			ENDIF
		ELSE
			;捕虜調教のメインターゲット
			IF FLAG:調教モード == 2 && FINDELEMENT(PRISONER_TARGET, MTAR:0) != -1
				PRINTFORML %ANAME(LOCAL:1)%は屈辱に耐えながら、おぼつかない手付きで自分の体に指を這わせた
			ELSE
				PRINTFORML %ANAME(LOCAL:1)%は恥ずかしさのあまり目を逸らしながら、おぼつかない手付きで自分の体に指を這わせた
			ENDIF
		ENDIF
	ENDIF
NEXT

;-------------------------------------------------

;コマンド区分
;-------------------------------------------------

@COM_AVAILABLE_WHEN100
IF FLAG:調教モード != 調教_居住区 && FLAG:調教モード != 調教_クエスト
	RETURN コマンド_ウフフ
ELSE
	RETURN コマンド_居住区
ENDIF

;--------------------
;性嗜好用関数
;--------------------
@COM_PREFERENCE_PLAYER_100()
RETURN POWER(2, 性的嗜好_辱められたい) + POWER(2, 性的嗜好_露出したい)

@COM_PREFERENCE_TARGET_100()
RETURN POWER(2, 性的嗜好_辱めたい)

@COM_STACK_SPERM_MPLY_TO_MPLY_100()
RETURN !RAND:3 ? 射精部位_手 # 射精部位_無駄

@COM_STACK_SPERM_MPLY_TO_MTAR_100()
IF MPLY:0 != MTAR:0
	RETURN IFRAND(@"{射精部位_無駄}", 1, @"{射精部位_顔}", RAND:100 < 50, @"{射精部位_髪}", RAND:100 < 50)
ELSE
	RETURN 射精部位_無駄
ENDIF


code:
;顔面騎乗

;-------------------------------------------------
;コマンド名称
;-------------------------------------------------
@COM_NAME101
LOCALS:0 = 顔面騎乗

RESULTS:0 = %LOCALS:0%する
RESULTS:1 = %LOCALS:0%させられる
RESULTS:2 = %LOCALS:0%させる
RESULTS:3 = %LOCALS:0%される
RESULTS:4 = %LOCALS:0%させる
RESULTS:5 = %LOCALS:0%見せつけ

;-------------------------------------------------
;選択可否判定
;-------------------------------------------------
@COM_ABLE101
;共通部分
CALL COM_ABLE_COMMON(101)
SIF RESULT == 0
	RETURN 0
;プレイヤーは最大で1人まで
SIF MPLY_NUM <= 0 || MPLY_NUM > 1
	RETURN 0
;ターゲットは最大で1人まで
SIF MTAR_NUM <= 0 || MTAR_NUM > 1
	RETURN 0
;プレイヤーが行動不能なら不可
SIF !IS_PLAYABLE(MPLY:0)
	RETURN 0
;拘束中なら不可
SIF IS_BIND(MPLY:0)
	RETURN 0
SIF IS_M_HOLD(MTAR:0)
	RETURN 0
;Target is fucking someone in any position except cowgirl/reverse cowgirl
SIF IS_INSERT_SINGLE(MTAR:0, "Ｐ") && !GROUPMATCH(GET_SEX_POSITION_SINGLE(MTAR:0, "Ｐ"), 5, 6)
	RETURN 0
;target being fucked in any position except missionary
SIF IS_INSERT_SINGLE(MTAR:0, "Ｖ") && !GROUPMATCH(GET_SEX_POSITION_SINGLE(MTAR:0, "Ｖ"), 1)
	RETURN 0
;target being fucked in any position except missionary
SIF IS_INSERT_SINGLE(MTAR:0, "Ａ") && !GROUPMATCH(GET_SEX_POSITION_SINGLE(MTAR:0, "Ａ"), 1)
	RETURN 0
;player fucking
SIF IS_INSERT_SINGLE(MPLY:0, "全")
	RETURN 0
;player giving buttjob to anyone
SIF IS_EQUIP_PLAYER(MPLY:0, 15)
	RETURN 0
;player ridden or already riding
SIF IS_RIDDEN(MPLY:0) || IS_RIDE(MPLY:0)
	RETURN 0
;target already ridden or riding
SIF IS_RIDE(MTAR:0) || IS_RIDDEN(MTAR:0)
	RETURN 0
;either is grovelling
SIF IS_EQUIP_PLAYER(MPLY:0, 110) || IS_EQUIP_PLAYER(MTAR:0, 110)
	RETURN 0
;player or target footlicking, buttjob, or foam playing each other
SIF SEARCH_EQUIP_IC_M(MPLY:0, MTAR:0, 5, 15, 104) >= 0
	RETURN 0
RETURN 1

;-------------------------------------------------
;メイン処理
;-------------------------------------------------
@COM101
;実行判定
CALL COM_ORDER_COMMON
SIF RESULT == 0
	RETURN 0

;ターゲット側の屈従のソース基本量
LOCAL:11 = 120

;プレイヤー側の嗜虐のソース基本量
LOCAL:12 = 100

;●プレイヤーについて処理
SOURCE:(MPLY:0):液体追加 = 100
SOURCE:(MPLY:0):露出 = 300
SOURCE:(MPLY:0):逸脱 = 150
SOURCE:(MPLY:0):接触 = 60
SOURCE:(MPLY:0):性行動 = 300
EXP:(MPLY:0):嗜虐経験値 += 1
IF HAS_VAGINA(MPLY:0)
	SOURCE:(MPLY:0):快Ｃ = SENSE_HOUSHI(MTAR:0, MPLY:0, 1000)
ELSE
	LOCAL:11 = 150
	LOCAL:12 = 120
ENDIF

;主導権がプレイヤー側にある場合
IF GET_COM_INITIATIVE() == 0
	SOURCE:(MPLY:0):嗜虐 = LOCAL:12
ENDIF

;主導権に応じた優越・屈従のソース追加
CALL ADD_SOURCE_INITIATIVE_U(MPLY:0, 170, 120)

;●ターゲットについて処理
DOWNBASE:(MTAR:0):体力 += 100

EXP:(MTAR:0):性技経験値 += 1
EXP:(MTAR:0):被虐経験値 += 1
SOURCE:(MTAR:0):奉仕 = SERVE_HOUSHI(MTAR:0, 300)
SOURCE:(MTAR:0):逸脱 = 100
SOURCE:(MTAR:0):接触 = 60
SOURCE:(MTAR:0):性行動 = 300

;主導権に応じた優越・屈従のソース追加
CALL ADD_SOURCE_INITIATIVE_U(MTAR:0, 120, LOCAL:11)

;プレイヤーが１人のとき
IF MPLY_NUM == 1
	IF TALENT:(MTAR:0):舌使い
		TIMES SOURCE:(MPLY:0):快Ｃ, 1.50
	ENDIF
ENDIF

;奉仕経験値を得られるコマンドのフラグ
TCVAR:(MTAR:0):奉仕経験取得可能 = 1

;キス
CALL KISS_COMMON(MTAR:0, @"%ANAME(MPLY:0)%の\@ IS_MALE(MPLY:0) ? 玉 # 秘貝\@", GET_SITUATION_BY_TRAIN_MODE())

;主導度変化基準値
TFLAG:主導度変化基準値 = 3

;倒錯度変化基準値
TFLAG:倒錯度変化基準値 = 2

;レズ・ＢＬ経験基準値
TFLAG:レズ・ＢＬ経験基準値 = 4

RETURN 1

;-------------------------------------------------
;継続コマンドかどうかを設定
;-------------------------------------------------
@COM_IS_EQUIP101
RETURN 1

;-------------------------------------------------
;継続状態の処理
;-------------------------------------------------
@COM_EQUIP101(ARG:0)
;●プレイヤーについて処理
LOCAL:2 = MEQUIP_PLAYER:(ARG:0):0

SOURCE:(LOCAL:2):液体追加 += 100
SOURCE:(LOCAL:2):露出 += 100
SOURCE:(LOCAL:2):逸脱 += 80
SOURCE:(LOCAL:2):接触 += 30
SOURCE:(LOCAL:2):性行動 += 100
EXP:(LOCAL:2):嗜虐経験値 += 1
IF HAS_VAGINA(LOCAL:2)
	SOURCE:(LOCAL:2):快Ｃ += SENSE_HOUSHI(LOCAL:2, MEQUIP_TARGET:(ARG:0):0, 500)
ENDIF

;倒錯度変化
TCVAR:(LOCAL:2):倒錯度変化基準値 += 2

;●ターゲットについて処理
LOCAL:2 = MEQUIP_TARGET:(ARG:0):0

EXP:(LOCAL:2):性技経験値 += 1

SOURCE:(LOCAL:2):奉仕 += SERVE_HOUSHI(LOCAL:2, 100)
SOURCE:(LOCAL:2):逸脱 += 60
SOURCE:(LOCAL:2):接触 += 30
SOURCE:(LOCAL:2):性行動 += 100
EXP:(LOCAL:2):被虐経験値 += 1
;倒錯度変化
TCVAR:(LOCAL:2):倒錯度変化基準値 += 2

;奉仕経験値を得られるコマンドのフラグ
TCVAR:(LOCAL:2):奉仕経験取得可能 = 1

;-------------------------------------------------
;継続中の表示
;-------------------------------------------------
@EQUIP_MESSAGE101(ARG:0)
IF IS_MALE(MEQUIP_PLAYER:(ARG:0):0)
	LOCALS:0 = Ｃ
ELSE
	LOCALS:0 = Ｖ
ENDIF
RESULTS = %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%に顔面騎乗中(%LOCALS%)

;-------------------------------------------------
;継続中の地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE_EQUIP101(ARG:0)
PRINTFORML %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%の顔の上に跨っている…

;-------------------------------------------------
;継続を解除したときの地の文
;-------------------------------------------------
@COM_TEXT_RELEASE_EQUIP101(ARG:0)
PRINTFORMW %EQUIP_PLAYER_ANAME(ARG:0)%は%EQUIP_TARGET_ANAME(ARG:0)%の顔から腰を上げた…

;-------------------------------------------------
;固有の実行判定
;-------------------------------------------------
@COM_ORDER_PLAYER101(ARG:0)
;実行値の設定
TCVAR:(ARG:0):実行値 = 75

;共通部分
CALL COM_ORDER(ARG:0)

CALL COM_ORDER_ELEMENT(ARG:0, @"欲望Lv{ABL:(ARG:0):欲望}", ABL:(ARG:0):欲望 * 1)
CALL COM_ORDER_ELEMENT(ARG:0, @"奉仕Lv{ABL:(ARG:0):奉仕}", ABL:(ARG:0):奉仕 * 4)

LOCAL:0 = GET_PALAMLV(PALAM:(ARG:0):欲情)
CALL COM_ORDER_ELEMENT(ARG:0, @"欲情Lv{LOCAL:0}", MIN(LOCAL:0 * 2, 20))

IF TCVAR:(ARG:0):媚薬
	CALL COM_ORDER_ELEMENT(ARG:0, "媚薬", 6)
ENDIF

IF TALENT:(ARG:0):恥じらい
	CALL COM_ORDER_ELEMENT(ARG:0, "恥じらい", -1)
ENDIF
IF TALENT:(ARG:0):汚臭鈍感
	CALL COM_ORDER_ELEMENT(ARG:0, "汚臭鈍感", 1)
ENDIF
IF TALENT:(ARG:0):汚臭敏感
	CALL COM_ORDER_ELEMENT(ARG:0, "汚臭敏感", -3)
ENDIF
IF TALENT:(ARG:0):献身的
	CALL COM_ORDER_ELEMENT(ARG:0, "献身的", 6)
ENDIF
IF TALENT:(ARG:0):快感の否定
	CALL COM_ORDER_ELEMENT(ARG:0, "快感の否定", -1)
ENDIF
IF TALENT:(ARG:0):女嫌い
	CALL COM_ORDER_ELEMENT(ARG:0, "女嫌い", -7)
ENDIF

;合意
IF !TALENT:(ARG:0):合意 && !TALENT:(ARG:0):親友
	CALL COM_ORDER_ELEMENT(ARG:0, "合意なし", -10)
ENDIF
RETURN 1

;-------------------------------------------------
;地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE101
#DIMS DYNAMIC 実行名
#DIMS DYNAMIC 対象名
#DIMS DYNAMIC 衣装描写
#DIMS DYNAMIC 下着描写
#DIMS DYNAMIC 潤滑描写
#DIMS DYNAMIC 性器描写

衣装描写 = %C_COND_MAP_GETS(MPLY, "被覆衣装描写_秘部")%
下着描写 = %C_COND_MAP_GETS(MPLY, "被覆衣装描写_秘部_下着")%
IF IS_ESTRUS(MPLY, 8) && IS_WET(MPLY)
	潤滑描写 = %S_R("びしょびしょに濡れた/濡れそぼった/すっかりぬめりを帯びた/ぐっしょりと濡れた/とろとろに湿った")%
ENDIF

IF !HAS_VAGINA(MPLY:0)
	性器描写 '= "陰嚢"
ELSE
	性器描写 =
	SELECTCASE CUM_CUR_AMOUNT:(MPLY:0):射精部位_膣内
		CASE IS >= 15
			性器描写 '= @"精液%S_R("まみれの/で満たされた/の溢れる/が留処なくこぼれる")%"
		CASE IS >= 1
			性器描写 '= @"精液%S_R("の滴る/の垂れる/の漏れる")%"
	ENDSELECT
	性器描写 = %性器描写%%STR_BODY("膣", MPLY:0)%
ENDIF

実行名 = %ANAME(MPLY:0)%
対象名 = %ANAME(MTAR:0)%

SELECTCASE GET_COM_INITIATIVE()
		;プレイヤーに主導権
	CASE 0
		{
			CALLF PRINT_RANDC(
				TEXT_CONCATEC(
				@"%実行名%は%対象名%の顔に跨ると", 1
				,@"嗜虐的な笑みを浮かべて", ABL:MPLY:サド >= 3
				,@"快楽を貪るように", C_COND("素質:淫乱",,MPLY)
				,@"恥じらうようにしながらも", !C_COND("素質:恥薄い",,MPLY) && ABL:MPLY:露出 < 3
				,@"、%性器描写%を", 下着描写 == ""
				,@"、%潤滑描写%%下着描写%越しに%性器描写%を", 下着描写 != ""
				,@"%S_R("グリグリと押し付け/口元に擦り付け/口元にあてがい、前後に擦り付け")%", 1
				,@"%TARGET_STR("た", "てきた")%…", 1
				), 1
				,TEXT_CONCATEC(
				@"%実行名%は%衣装描写%をたくし上げて%対象名%の顔に跨ると、", 1
				,@"嗜虐的な笑みを浮かべて", ABL:MPLY:サド >= 3
				,@"快楽を貪るように", C_COND("素質:淫乱",,MPLY)
				,@"恥じらうようにしながらも", !C_COND("素質:恥薄い",,MPLY) && ABL:MPLY:露出 < 3
				,@"、%性器描写%を", 下着描写 == ""
				,@"、%潤滑描写%%下着描写%越しに%性器描写%を", 下着描写 != ""
				,@"%S_R("グリグリと押し付け/口元に擦り付け/口元にあてがい、前後に擦り付け")%", 1
				,@"%TARGET_STR("た", "てきた")%…", 1
				), C_COND("衣装属性:秘部:スカート",,MPLY)
				)
		}
		PRINTW
		;ターゲットに主導権
	CASE 1
		IF !HAS_VAGINA(MPLY:0)
			PRINTFORMW %ANAME(MTAR:0)%は%ANAME(MPLY:0)%を顔の上に跨らせると、玉袋を口に含んでジュルジュルと舐め回し%PLAYER_STR("た", "てきた")%…
		ELSE
			PRINTFORMW %ANAME(MTAR:0)%は%ANAME(MPLY:0)%を顔の上に跨らせると、下からワレメを舐め回して責め立て%PLAYER_STR("た", "てきた")%…
		ENDIF
		;第三者に主導権
	CASEELSE
		PRINTFORML %ANAME(TFLAG:主導権所有者)%は%ANAME(MPLY:0)%に対し、%ANAME(MTAR:0)%の顔に跨って%性器描写%を押し付けるように命令した
		IF !TALENT:(MPLY:0):恥薄い && ABL:(MPLY:0):露出 < 3
			PRINTFORMW %ANAME(MPLY:0)%は恥ずかしがりながらも、言われるまま%ANAME(MTAR:0)%の顔に跨り%性器描写%を押し付けた…
		ELSE
			PRINTFORMW %ANAME(MPLY:0)%は言われるまま、%ANAME(MTAR:0)%の顔に跨り%性器描写%を押し付けた…
		ENDIF
ENDSELECT
IF CUM_CUR_AMOUNT:(MPLY:0):射精部位_膣内
	PRINTFORM %SPLIT_RAND("熱い/粘つく/濃厚な/新鮮な", 1)%精液が

	IF ABL:(MTAR:0):精愛 >= 4
		PRINTFORML %SPLIT_RAND("精液好きの/精愛味覚を得た/精液に飢えた", 1)%%ANAME(MTAR:0)%の口に滴ると、%PRONOUN(MTAR:0)%は悦びの呻き声を漏らした…
	ELSE
		PRINTFORML %ANAME(MTAR:0)%の口に滴るが、%PRONOUN(MTAR:0)%は奉仕を余儀なくされた…
	ENDIF
	;target eats 1/4th + 3 cum, up to 20
	LOCAL = LIMIT(MIN(((CUM_CUR_AMOUNT:(MPLY:0):射精部位_膣内 / 4) + 3), CUM_CUR_AMOUNT:(MPLY:0):射精部位_膣内) , 0, 20)
	CUM_CUR_AMOUNT:(MPLY:0):射精部位_膣内 -= LOCAL
	CUM_CUR_AMOUNT:(MTAR:0):射精部位_口 += LOCAL
	SIF CUM_CUR_AMOUNT:(MPLY:0):射精部位_膣内 == 0
		PRINTFORML %ANAME(MPLY:0)%の%STR_BODY("膣", MPLY:0)%の精液は全て%ANAME(MTAR:0)%が飲み干した
	;Cumlove exp increases by amount of cum
	EXP:(MTAR:0):精愛経験値 += LOCAL
	;Swallowing exp
	SIF ABL:(MTAR:0):精愛 >= 4
		EXP:(MTAR:0):口内射精経験 ++
	WAIT
ENDIF

;--------------------------------------------------------
;地の文(パラメータ・刻印変動後)
;--------------------------------------------------------
@COM_TEXT_LAST101

;-------------------------------------------------

;コマンド区分
;-------------------------------------------------

@COM_AVAILABLE_WHEN101
RETURN コマンド_ウフフ

;--------------------
;性嗜好用関数
;--------------------
@COM_PREFERENCE_PLAYER_101()
RETURN POWER(2, 性的嗜好_辱められたい)

@COM_PREFERENCE_TARGET_101()
RETURN POWER(2, 性的嗜好_辱めたい)


code:
;Ａ顔面騎乗

;-------------------------------------------------
;コマンド名称
;-------------------------------------------------
@COM_NAME102
LOCALS:0 = Ａ顔面騎乗

RESULTS:0 = %LOCALS:0%する
RESULTS:1 = %LOCALS:0%させられる
RESULTS:2 = %LOCALS:0%させる
RESULTS:3 = %LOCALS:0%される
RESULTS:4 = %LOCALS:0%させる
RESULTS:5 = %LOCALS:0%見せつけ

;-------------------------------------------------
;選択可否判定
;-------------------------------------------------
@COM_ABLE102
;共通部分
CALL COM_ABLE_COMMON(102)
SIF RESULT == 0
	RETURN 0
;プレイヤーは最大で1人まで
SIF MPLY_NUM <= 0 || MPLY_NUM > 1
	RETURN 0
;ターゲットは最大で1人まで
SIF MTAR_NUM <= 0 || MTAR_NUM > 1
	RETURN 0
;ターゲットがＰ挿入中かつ体位が騎乗位以外なら不可
SIF IS_INSERT_SINGLE(MTAR:0, "Ｐ") && !GROUPMATCH(GET_SEX_POSITION_SINGLE(MTAR:0, "Ｐ"), 5)
	RETURN 0
;ターゲットがＶ挿入中かつ体位が正常位以外なら不可
SIF IS_INSERT_SINGLE(MTAR:0, "Ｖ") && !GROUPMATCH(GET_SEX_POSITION_SINGLE(MTAR:0, "Ｖ"), 1)
	RETURN 0
;ターゲットがＶ挿入中かつ体位が正常位以外なら不可
SIF IS_INSERT_SINGLE(MTAR:0, "Ａ") && !GROUPMATCH(GET_SEX_POSITION_SINGLE(MTAR:0, "Ａ"), 1)
	RETURN 0
;プレイヤーが行動不能なら不可
SIF !IS_PLAYABLE(MPLY:0)
	RETURN 0
;拘束中なら不可
SIF IS_BIND(MPLY:0)
	RETURN 0
;挿入中は不可
SIF IS_INSERT_SINGLE(MPLY:0, "全")
	RETURN 0
;尻コキ中なら不可
SIF IS_EQUIP_PLAYER(MPLY:0, 15)
	RETURN 0
;プレイヤーが顔面騎乗されているなら不可
SIF IS_RIDDEN(MPLY:0)
	RETURN 0
;プレイヤーが既に他の相手に顔面騎乗しているなら不可
SIF IS_RIDE(MPLY:0) && !(SEARCH_EQUIP(101, MPLY:0, MTAR:0) >= 0 || SEARCH_EQUIP(102, MPLY:0, MTAR:0) >= 0 || SEARCH_EQUIP(105, MPLY:0, MTAR:0) >= 0)
	RETURN 0
;ターゲットが既に他の相手に顔面騎乗されているなら不可
SIF IS_RIDDEN(MTAR:0) && !(SEARCH_EQUIP(101, MPLY:0, MTAR:0) >= 0 || SEARCH_EQUIP(102, MPLY:0, MTAR:0) >= 0 || SEARCH_EQUIP(105, MPLY:0, MTAR:0) >= 0)
	RETURN 0
;プレイヤーからターゲットに足舐め中なら不可
SIF SEARCH_EQUIP(104, MPLY:0, MTAR:0) >= 0
	RETURN 0
;ターゲットが顔面騎乗中なら不可
SIF IS_RIDE(MTAR:0)
	RETURN 0
;プレイヤーが土下座しているなら不可
SIF IS_EQUIP_PLAYER(MPLY:0, 110)
	RETURN 0
;ターゲットが土下座しているなら不可
SIF IS_EQUIP_PLAYER(MTAR:0, 110)
	RETURN 0
;ターゲットがキス中なら不可
SIF IS_EQUIP(MTAR:0, 20)
	RETURN 0
;ターゲットが足舐め中なら不可
SIF IS_EQUIP_PLAYER(MTAR:0, 104)
	RETURN 0
RETURN 1

;-------------------------------------------------
;メイン処理
;-------------------------------------------------
@COM102
;実行判定
CALL COM_ORDER_COMMON
SIF RESULT == 0
	RETURN 0

;クンニ、顔面騎乗、Ｗ顔面騎乗のフラグを解除
FOR LOCAL:0, 0, MPLY_NUM
	FOR LOCAL:1, 0, MTAR_NUM
		CALL RELEASE_EQUIP_EX(2, MTAR:(LOCAL:1), -1)
		CALL RELEASE_EQUIP_EX(101, MPLY:(LOCAL:0), -1)
		CALL RELEASE_EQUIP_EX(105, MPLY:(LOCAL:0), -1)
	NEXT
NEXT

;●プレイヤーについて処理
SOURCE:(MPLY:0):液体追加 = 100
SOURCE:(MPLY:0):露出 = 300
SOURCE:(MPLY:0):逸脱 = 200
SOURCE:(MPLY:0):接触 = 60
SOURCE:(MPLY:0):性行動 = 150
SOURCE:(MPLY:0):快Ａ = SENSE_HOUSHI(MTAR:0, MPLY:0, 1000)
EXP:(MPLY:0):嗜虐経験値 += 1

;主導権がプレイヤー側にある場合
IF GET_COM_INITIATIVE() == 0
	SOURCE:(MPLY:0):嗜虐 = 130
ENDIF

;主導権に応じた優越・屈従のソース追加
CALL ADD_SOURCE_INITIATIVE_U(MPLY:0, 170, 120)

;●ターゲットについて処理
DOWNBASE:(MTAR:0):体力 += 100

EXP:(MTAR:0):性技経験値 += 1
EXP:(MTAR:0):被虐経験値 += 1

SOURCE:(MTAR:0):奉仕 = SERVE_HOUSHI(MTAR:0, 300 + (GET_HIPSIZE(MPLY:0) >= 1 || TALENT:(MPLY:0):美尻) * 100)
SOURCE:(MTAR:0):逸脱 = 150
SOURCE:(MTAR:0):接触 = 60
SOURCE:(MTAR:0):性行動 = 150

;主導権に応じた優越・屈従のソース追加
CALL ADD_SOURCE_INITIATIVE_U(MTAR:0, 120, 140)

IF TALENT:(MTAR:0):舌使い
	TIMES SOURCE:(MPLY:0):快Ａ, 1.50
ENDIF

;奉仕経験値を得られるコマンドのフラグ
TCVAR:(MTAR:0):奉仕経験取得可能 = 1

;アナルへのキス
CALL KISS_COMMON(MTAR:0, @"%ANAME(MPLY:0)%のアナル", GET_SITUATION_BY_TRAIN_MODE())

;主導度変化基準値
TFLAG:主導度変化基準値 = 3

;倒錯度変化基準値
TFLAG:倒錯度変化基準値 = 2

;レズ・ＢＬ経験基準値
TFLAG:レズ・ＢＬ経験基準値 = 4

RETURN 1

;-------------------------------------------------
;継続コマンドかどうかを設定
;-------------------------------------------------
@COM_IS_EQUIP102
RETURN 1

;-------------------------------------------------
;継続状態の処理
;-------------------------------------------------
@COM_EQUIP102(ARG:0)
;●プレイヤーについて処理
LOCAL:2 = MEQUIP_PLAYER:(ARG:0):0

SOURCE:(LOCAL:2):液体追加 += 100
SOURCE:(LOCAL:2):露出 += 150
SOURCE:(LOCAL:2):逸脱 += 100
SOURCE:(LOCAL:2):接触 += 30
SOURCE:(LOCAL:2):性行動 += 50
EXP:(LOCAL:2):嗜虐経験値 += 1
IF HAS_VAGINA(LOCAL:2)
	SOURCE:(LOCAL:2):快Ａ += SENSE_HOUSHI(LOCAL:2, MEQUIP_TARGET:(ARG:0):0, 500)
ENDIF

;倒錯度変化
TCVAR:(LOCAL:2):倒錯度変化基準値 += 2

;●ターゲットについて処理
LOCAL:2 = MEQUIP_TARGET:(ARG:0):0

DOWNBASE:(LOCAL:2):体力 += 10

EXP:(LOCAL:2):性技経験値 += 1

SOURCE:(LOCAL:2):奉仕 += SERVE_HOUSHI(LOCAL:2, 100)
SOURCE:(LOCAL:2):逸脱 += 80
SOURCE:(LOCAL:2):接触 += 30
SOURCE:(LOCAL:2):性行動 += 50
EXP:(LOCAL:2):被虐経験値 += 1

;倒錯度変化
TCVAR:(LOCAL:2):倒錯度変化基準値 += 2

;奉仕経験値を得られるコマンドのフラグ
TCVAR:(LOCAL:2):奉仕経験取得可能 = 1

;-------------------------------------------------
;継続中の表示
;-------------------------------------------------
@EQUIP_MESSAGE102(ARG:0)
RESULTS = %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%に顔面騎乗中(Ａ)

;-------------------------------------------------
;継続中の地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE_EQUIP102(ARG:0)
PRINTFORML %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%の顔の上に跨っている…

;-------------------------------------------------
;継続を解除したときの地の文
;-------------------------------------------------
@COM_TEXT_RELEASE_EQUIP102(ARG:0)
PRINTFORMW %EQUIP_PLAYER_ANAME(ARG:0)%は%EQUIP_TARGET_ANAME(ARG:0)%の顔から腰を上げた…

;-------------------------------------------------
;固有の実行判定
;-------------------------------------------------
@COM_ORDER_PLAYER102(ARG:0)
;実行値の設定
TCVAR:(ARG:0):実行値 = 75

;共通部分
CALL COM_ORDER(ARG:0)

CALL COM_ORDER_ELEMENT(ARG:0, @"欲望Lv{ABL:(ARG:0):欲望}", ABL:(ARG:0):欲望 * 1)
CALL COM_ORDER_ELEMENT(ARG:0, @"奉仕Lv{ABL:(ARG:0):奉仕}", ABL:(ARG:0):奉仕 * 4)

LOCAL:0 = GET_PALAMLV(PALAM:(ARG:0):欲情)
CALL COM_ORDER_ELEMENT(ARG:0, @"欲情Lv{LOCAL:0}", MIN(LOCAL:0 * 2, 20))

IF TCVAR:(ARG:0):媚薬
	CALL COM_ORDER_ELEMENT(ARG:0, "媚薬", 6)
ENDIF

IF TALENT:(ARG:0):恥じらい
	CALL COM_ORDER_ELEMENT(ARG:0, "恥じらい", -1)
ENDIF
IF TALENT:(ARG:0):汚臭鈍感
	CALL COM_ORDER_ELEMENT(ARG:0, "汚臭鈍感", 1)
ENDIF
IF TALENT:(ARG:0):汚臭敏感
	CALL COM_ORDER_ELEMENT(ARG:0, "汚臭敏感", -3)
ENDIF
IF TALENT:(ARG:0):献身的
	CALL COM_ORDER_ELEMENT(ARG:0, "献身的", 6)
ENDIF
IF TALENT:(ARG:0):快感の否定
	CALL COM_ORDER_ELEMENT(ARG:0, "快感の否定", -1)
ENDIF
IF TALENT:(ARG:0):女嫌い
	CALL COM_ORDER_ELEMENT(ARG:0, "女嫌い", -7)
ENDIF

;合意
IF !TALENT:(ARG:0):合意 && !TALENT:(ARG:0):親友
	CALL COM_ORDER_ELEMENT(ARG:0, "合意なし", -10)
ENDIF
RETURN 1

;-------------------------------------------------
;地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE102
LOCALS:0 =
SELECTCASE CUM_CUR_AMOUNT:(MPLY:0):射精部位_アナル
	CASE IS >= 15
		LOCALS:0 = 精液%SPLIT_R("まみれの：の詰まった：の溢れる：が留処なくこぼれる")%
	CASE IS >= 1
		LOCALS:0 = 精液%SPLIT_R("を垂らす：の漏れる")%
ENDSELECT
LOCALS:0 = %LOCALS:0%%STR_BODY("アナル", MPLY:0)%

SELECTCASE GET_COM_INITIATIVE()
	;プレイヤーに主導権
	CASE 0
		IF MPLY:0 == MASTER
			PRINTFORMW %ANAME(MPLY:0)%は%ANAME(MTAR:0)%の顔に跨り、%LOCALS:0%をグリグリと押し付けた…
		ELSEIF ABL:(MPLY:0):サド >= 3
			PRINTFORMW %ANAME(MPLY:0)%はサディスティックな笑みを浮かべながら%ANAME(MTAR:0)%の顔に跨り、%LOCALS:0%をグリグリと押し付け%TARGET_STR("た", "てきた")%…
		ELSEIF GETBIT(TALENT:(MPLY:0):淫乱系, 素質_淫乱_淫乱)
			PRINTFORMW %ANAME(MPLY:0)%は%ANAME(MTAR:0)%の顔に跨り、快感を貪るように%LOCALS:0%をグリグリと押し付け%TARGET_STR("た", "てきた")%…
		ELSEIF !TALENT:(MPLY:0):恥薄い && ABL:(MPLY:0):露出 < 3
			PRINTFORMW %ANAME(MPLY:0)%は恥じらうようにしながらも、%ANAME(MTAR:0)%の顔に跨って%LOCALS:0%を押し付け%TARGET_STR("た", "てきた")%…
		ELSE
			PRINTFORMW %ANAME(MPLY:0)%は%ANAME(MTAR:0)%の顔に跨り、%LOCALS:0%をグリグリと押し付け%TARGET_STR("た", "てきた")%…
		ENDIF
	;ターゲットに主導権
	CASE 1
		PRINTFORMW %ANAME(MTAR:0)%は%ANAME(MPLY:0)%を顔の上に跨らせると、アナルに舌を入れて内部をグリグリと抉っ%PLAYER_STR("た", "てきた")%…
	;第三者に主導権
	CASEELSE
		PRINTFORML %ANAME(TFLAG:主導権所有者)%は%ANAME(MPLY:0)%に対し、%ANAME(MTAR:0)%の顔に跨って%LOCALS:0%を押し付けるように命令した
		IF !TALENT:(MPLY:0):恥薄い && ABL:(MPLY:0):露出 < 3
			PRINTFORMW %ANAME(MPLY:0)%は恥ずかしがりながらも、言われるまま%ANAME(MTAR:0)%の顔に跨り%LOCALS:0%を押し付けた…
		ELSE
			PRINTFORMW %ANAME(MPLY:0)%は言われるまま、%ANAME(MTAR:0)%の顔に跨り%LOCALS:0%を押し付けた…
		ENDIF
ENDSELECT

IF CUM_CUR_AMOUNT:(MPLY:0):射精部位_アナル
	PRINTFORM %SPLIT_RAND("熱い/粘つく/濃厚な/新鮮な", 1)%精液が

	IF ABL:(MTAR:0):精愛 >= 4
		PRINTFORML %SPLIT_RAND("精液好きの/精愛味覚を得た/精液に飢えた", 1)%%ANAME(MTAR:0)%の口に滴ると、%PRONOUN(MTAR:0)%は悦びの呻き声を漏らした…
	ELSE
		PRINTFORML %ANAME(MTAR:0)%の口に滴るが、%PRONOUN(MTAR:0)%は奉仕を余儀なくされた…
	ENDIF
	;target eats 1/4th + 3 cum, up to 20
	LOCAL = LIMIT(MIN(((CUM_CUR_AMOUNT:(MPLY:0):射精部位_アナル / 4) + 3), CUM_CUR_AMOUNT:(MPLY:0):射精部位_アナル) , 0, 20)
	CUM_CUR_AMOUNT:(MPLY:0):射精部位_アナル -= LOCAL
	CUM_CUR_AMOUNT:(MTAR:0):射精部位_口 += LOCAL
	SIF CUM_CUR_AMOUNT:(MPLY:0):射精部位_アナル == 0
		PRINTFORML %ANAME(MPLY:0)%の%STR_BODY("アナル", MPLY:0)%の精液は全て%ANAME(MTAR:0)%が飲み干した
	;Cumlove exp increases by amount of cum
	EXP:(MTAR:0):精愛経験値 += LOCAL
	;Swallowing exp
	SIF ABL:(MTAR:0):精愛 >= 4
		EXP:(MTAR:0):口内射精経験 ++
	WAIT
ENDIF
;--------------------------------------------------------
;地の文(パラメータ・刻印変動後)
;--------------------------------------------------------
@COM_TEXT_LAST102

;-------------------------------------------------

;コマンド区分
;-------------------------------------------------

@COM_AVAILABLE_WHEN102
RETURN コマンド_ウフフ

;--------------------
;性嗜好用関数
;--------------------
@COM_PREFERENCE_PLAYER_102()
RETURN POWER(2, 性的嗜好_辱めたい) + POWER(2, 性的嗜好_虐げられたい)

@COM_PREFERENCE_TARGET_102()
RETURN POWER(2, 性的嗜好_辱められたい) + POWER(2, 性的嗜好_虐げられたい)


code:
;電気按摩

;-------------------------------------------------
;コマンド名称
;-------------------------------------------------
@COM_NAME103
LOCALS:0 = 電気按摩

RESULTS:0 = %LOCALS:0%する
RESULTS:1 = %LOCALS:0%させられる
RESULTS:2 = %LOCALS:0%させる
RESULTS:3 = %LOCALS:0%される
RESULTS:4 = %LOCALS:0%させる
RESULTS:5 = %LOCALS:0%見せつけ

;-------------------------------------------------
;選択可否判定
;-------------------------------------------------
@COM_ABLE103
;共通部分
CALL COM_ABLE_COMMON(103)
SIF RESULT == 0
	RETURN 0
;プレイヤーは最大で1人まで
SIF MPLY_NUM <= 0 || MPLY_NUM > 1
	RETURN 0
;ターゲットは最大で1人まで
SIF MTAR_NUM <= 0 || MTAR_NUM > 1
	RETURN 0
;プレイヤーが行動不能なら不可
SIF !IS_PLAYABLE(MPLY:0)
	RETURN 0
;プレイヤーが拘束中なら不可
SIF IS_BIND(MPLY:0)
	RETURN 0
;プレイヤーが顔面騎乗されているなら不可
SIF IS_RIDDEN(MPLY:0)
	RETURN 0
;either is grovelling
SIF IS_EQUIP_PLAYER(MPLY:0, 110) || IS_EQUIP_PLAYER(MTAR:0, 110)
	RETURN 0
;either is fucking
SIF IS_INSERT_SINGLE(MPLY:0, "全") ||IS_INSERT_SINGLE(MTAR:0, "全")
	RETURN 0
;giving/receiving footlicking or buttjob
SIF SEARCH_EQUIP_IC_M(MPLY:0, MTAR:0, 104, 15) >= 0
	RETURN 0
SIF !P_STACKABLE(MPLY:0, MTAR:0, 103)
	RETURN 0
SIF REACHING_BODY(MPLY:0, MTAR:0) || REACHING_BODY(MTAR:0, MPLY:0)
	RETURN 0
SIF REACHING_GROIN(MPLY:0, MTAR:0) || REACHING_GROIN(MTAR:0, MPLY:0)
	RETURN 0
SIF LICKING_BODY(MPLY:0, MTAR:0) || LICKING_BODY(MTAR:0, MPLY:0)
	RETURN 0
SIF LICKING_GROIN(MPLY:0, MTAR:0) || LICKING_GROIN(MTAR:0, MPLY:0)
	RETURN 0
RETURN 1

;-------------------------------------------------
;メイン処理
;-------------------------------------------------
@COM103
;実行判定
CALL COM_ORDER_COMMON
SIF RESULT == 0
	RETURN 0

;●プレイヤーについて判定
DOWNBASE:(MPLY:0):体力 += 120

EXP:(MPLY:0):性技経験値 += 1

SOURCE:(MPLY:0):奉仕 = SERVE_HOUSHI(MPLY:0, 150)
SOURCE:(MPLY:0):接触 = 60
SOURCE:(MPLY:0):逸脱 = 40
SOURCE:(MPLY:0):性行動 = 150
EXP:(MPLY:0):嗜虐経験値 += 1

;プレイヤー主導の場合
IF GET_COM_INITIATIVE() == 0
	SOURCE:(MPLY:0):嗜虐 = 100
ENDIF

;主導権に応じた優越・屈従のソース追加
CALL ADD_SOURCE_INITIATIVE_U(MPLY:0, 190, 80)

;奉仕経験値を得られるコマンドのフラグ
TCVAR:(MPLY:0):奉仕経験取得可能 = 1

;●ターゲットについて判定
DOWNBASE:(MTAR:0):体力 += 80

SOURCE:(MTAR:0):接触 = 60
SOURCE:(MTAR:0):逸脱 = 40
SOURCE:(MTAR:0):苦痛 = 60
SOURCE:(MTAR:0):露出 = 80
SOURCE:(MTAR:0):性行動 = 150
EXP:(MTAR:0):被虐経験値 += 1

IF HAS_PENIS(MTAR:0)
	SOURCE:(MTAR:0):快Ｐ = SENSE_HOUSHI_P(MPLY:0, MTAR:0, 1200 + TALENT:(MPLY:0):美脚 * 300)
ELSE
	SOURCE:(MTAR:0):快Ｃ = SENSE_HOUSHI(MPLY:0, MTAR:0, 1200 + TALENT:(MPLY:0):美脚 * 300)
ENDIF

;主導権に応じた優越・屈従のソース追加
CALL ADD_SOURCE_INITIATIVE_U(MTAR:0, 80, 140)

;主導度変化基準値
TFLAG:主導度変化基準値 = 3

;倒錯度変化基準値
TFLAG:倒錯度変化基準値 = 3

;レズ・ＢＬ経験基準値
TFLAG:レズ・ＢＬ経験基準値 = 4

RETURN 1

;-------------------------------------------------
;継続コマンドかどうかを設定
;-------------------------------------------------
@COM_IS_EQUIP103
RETURN 1

;-------------------------------------------------
;継続状態の処理
;-------------------------------------------------
@COM_EQUIP103(ARG:0)
LOCAL:2 = MEQUIP_PLAYER:(ARG:0):0
LOCAL:3 = MEQUIP_TARGET:(ARG:0):0

;●プレイヤーの処理
DOWNBASE:(LOCAL:2):体力 += 20

EXP:(LOCAL:2):性技経験値 += 1

SOURCE:(LOCAL:2):奉仕 += SERVE_HOUSHI(LOCAL:2, 50)
SOURCE:(LOCAL:2):接触 += 30
SOURCE:(LOCAL:2):逸脱 += 20
SOURCE:(LOCAL:2):性行動 += 50
EXP:(LOCAL:2):嗜虐経験値 += 1

;プレイヤーに主導権がある場合
IF IS_INITIATIVE(LOCAL:2)
	SOURCE:(LOCAL:2):嗜虐 += 50
ENDIF

;奉仕経験値を得られるコマンドのフラグ
TCVAR:(LOCAL:2):奉仕経験取得可能 = 1

;倒錯度変化基準値
TCVAR:(LOCAL:2):倒錯度変化基準値 += 3

;●ターゲットの処理
DOWNBASE:(LOCAL:3):体力 += 10

SOURCE:(LOCAL:3):接触 += 30
SOURCE:(LOCAL:3):逸脱 += 20
SOURCE:(LOCAL:3):苦痛 += 30
SOURCE:(LOCAL:3):露出 += 40
SOURCE:(LOCAL:3):性行動 += 50
IF HAS_PENIS(LOCAL:3)
	SOURCE:(LOCAL:3):快Ｐ = SENSE_HOUSHI_P(LOCAL:2, LOCAL:3, 400 + TALENT:(LOCAL:2):美脚 * 100)
ELSE
	SOURCE:(LOCAL:3):快Ｃ = SENSE_HOUSHI(LOCAL:2, LOCAL:3, 400 + TALENT:(LOCAL:2):美脚 * 100)
ENDIF
EXP:(LOCAL:3):被虐経験値 += 1

;倒錯度変化基準値
TCVAR:(LOCAL:3):倒錯度変化基準値 += 3

;-------------------------------------------------
;継続中の表示
;-------------------------------------------------
@EQUIP_MESSAGE103(ARG:0)
RESULTS = %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%に電気按摩中

;-------------------------------------------------
;継続中の地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE_EQUIP103(ARG:0)
PRINTFORML %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%の股間を踏みつけ振動を与えている…

;-------------------------------------------------
;継続を解除したときの地の文
;-------------------------------------------------
@COM_TEXT_RELEASE_EQUIP103(ARG:0)
PRINTFORMW %EQUIP_PLAYER_ANAME(ARG:0)%は%EQUIP_TARGET_ANAME(ARG:0)%の股間から足を離した…

;-------------------------------------------------
;固有の実行判定
;-------------------------------------------------
@COM_ORDER_PLAYER103(ARG:0)
;実行値の設定
TCVAR:(ARG:0):実行値 = 85

;共通部分
CALL COM_ORDER(ARG:0)

CALL COM_ORDER_ELEMENT(ARG:0, @"欲望Lv{ABL:(ARG:0):欲望}", ABL:(ARG:0):欲望 * 1)
CALL COM_ORDER_ELEMENT(ARG:0, @"奉仕Lv{ABL:(ARG:0):奉仕}", ABL:(ARG:0):奉仕 * 4)

LOCAL:0 = GET_PALAMLV(PALAM:(ARG:0):欲情)
CALL COM_ORDER_ELEMENT(ARG:0, @"欲情Lv{LOCAL:0}", MIN(LOCAL:0 * 1, 10))

IF TALENT:(ARG:0):恥じらい
	CALL COM_ORDER_ELEMENT(ARG:0, "恥じらい", -2)
ENDIF
IF TALENT:(ARG:0):献身的
	CALL COM_ORDER_ELEMENT(ARG:0, "献身的", 4)
ENDIF
IF TALENT:(ARG:0):快感の否定
	CALL COM_ORDER_ELEMENT(ARG:0, "快感の否定", -1)
ENDIF

;合意
IF !TALENT:(ARG:0):合意 && !TALENT:(ARG:0):親友
	CALL COM_ORDER_ELEMENT(ARG:0, "合意なし", -10)
ENDIF
RETURN 1

;-------------------------------------------------
;地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE103
IF MPLY:0 != MASTER && ABL:(MPLY:0):サド >= 3
	LOCALS:0 = サディスティックな笑みを浮かべながら
ELSE
	LOCALS:0 =
ENDIF
IF TALENT:(MPLY:0):美脚
	LOCALS:3 = すらりとした美しい
ELSEIF TALENT:(MPLY:0):体格 < 0
	LOCALS:3 = %SPLIT_RAND("愛くるしい/可愛らしい/未成熟な/小さな/柔らかな", 1)%
ELSE
	LOCALS:3 =
ENDIF
SELECTCASE GET_COM_INITIATIVE()
	;プレイヤーに主導権
	CASE 0
		IF HAS_PENIS(MTAR:0)
			PRINTFORMW %ANAME(MPLY:0)%は%ANAME(MTAR:0)%の足首を掴んで股を押し開くと、%LOCALS:0%%ANAME(MTAR:0)%のペニスを%LOCALS:3%足で踏みつけて激しく振動させ%TARGET_STR("た", "てきた")%…
		ELSE
			PRINTFORMW %ANAME(MPLY:0)%は%ANAME(MTAR:0)%の足首を掴んで股を押し開くと、%LOCALS:0%%ANAME(MTAR:0)%のワレメを%LOCALS:3%足で踏み付けクリトリスを押し潰すように激しく振動させ%TARGET_STR("た", "てきた")%…
		ENDIF
	;ターゲットに主導権
	CASE 1
		IF HAS_PENIS(MTAR:0)
			PRINTFORML %ANAME(MTAR:0)%は%ANAME(MPLY:0)%の前で股を開き、電気按摩で気持ち良くするように命令した
			PRINTFORMW %ANAME(MPLY:0)%は言われた通り%ANAME(MTAR:0)%のペニスの上に%LOCALS:3%足を置くと、激しく振動させて男性器に快感を与えていった…
		ELSE
			PRINTFORML %ANAME(MTAR:0)%は%ANAME(MPLY:0)%の前で股を開き、電気按摩で気持ち良くするように命令した
			PRINTFORMW %ANAME(MPLY:0)%は言われた通り%ANAME(MTAR:0)%のワレメに%LOCALS:3%足を当てると、クリトリスを中心に激しく振動させて女性器に快感を与えていった…
		ENDIF
	;第三者に主導権
	CASEELSE
		PRINTFORML %ANAME(MTAR:0)%は%ANAME(MPLY:0)%に対し、%ANAME(MTAR:0)%を電気按摩で責めるように命令した
		IF HAS_PENIS(MTAR:0)
			PRINTFORMW %ANAME(MPLY:0)%は言われた通りに%ANAME(MTAR:0)%の足首を掴んで股を押し開くと、%ANAME(MTAR:0)%のペニスを%LOCALS:3%足で踏みつけて激しく振動させ%TARGET_STR("た", "てきた")%…
		ELSE
			PRINTFORMW %ANAME(MPLY:0)%は言われた通りに%ANAME(MTAR:0)%の足首を掴んで股を押し開くと、%ANAME(MTAR:0)%のワレメを%LOCALS:3%足で踏み付けクリトリスを押し潰すように激しく振動させ%TARGET_STR("た", "てきた")%…
		ENDIF
ENDSELECT

;-------------------------------------------------

;コマンド区分
;-------------------------------------------------

@COM_AVAILABLE_WHEN103
RETURN コマンド_ウフフ

;--------------------
;性嗜好用関数
;--------------------
@COM_PREFERENCE_PLAYER_103()
RETURN POWER(2, 性的嗜好_辱めたい)

@COM_PREFERENCE_TARGET_103()
RETURN POWER(2, 性的嗜好_辱められたい) + POWER(2, 性的嗜好_虐げられたい)

@COM_STACK_SPERM_MTAR_TO_MPLY_103()
RETURN 射精部位_足


code:
;足を舐める

;-------------------------------------------------
;コマンド名称
;-------------------------------------------------
@COM_NAME104
RESULTS:0 = 足を舐める
RESULTS:1 = 足を舐めさせられる
RESULTS:2 = 足を舐めさせる
RESULTS:3 = 足を舐められる
RESULTS:4 = 足を舐めさせる
RESULTS:5 = 足舐め見せつけ

;-------------------------------------------------
;選択可否判定
;-------------------------------------------------
@COM_ABLE104
;共通部分
CALL COM_ABLE_COMMON(104)
SIF RESULT == 0
	RETURN 0
;プレイヤーは最大で2人まで
SIF MPLY_NUM <= 0 || MPLY_NUM > 2
	RETURN 0
;ターゲットは最大で2人まで
SIF MTAR_NUM <= 0 || MTAR_NUM > 2
	RETURN 0
;プレイヤーが行動不能なら不可
SIF !IS_PLAYABLE(MPLY:0)
	RETURN 0
;2-2は無理
SIF MPLY_NUM == 2 && MTAR_NUM == 2
	RETURN 0

LOCAL:5 = 0
LOCAL:6 = 0
;全てのプレイヤーについて判定
FOR LOCAL:0, 0, MPLY_NUM
	;顔面騎乗されているなら不可
	SIF IS_RIDDEN(MPLY:(LOCAL:0))
		RETURN 0
	;口枷装着中なら不可
	SIF IS_M_HOLD(MPLY:(LOCAL:0))
		RETURN 0
	;拘束のチェック
	SIF IS_BIND(MPLY:(LOCAL:0))
		LOCAL:5 = 1
NEXT
;全てのターゲットについて判定
FOR LOCAL:0, 0, MTAR_NUM
	SIF IS_BIND(MTAR:(LOCAL:0))
		LOCAL:6 = 1
NEXT

;プレイヤーとターゲットが両方拘束されていれば不可
SIF LOCAL:5 && LOCAL:6
	RETURN 0

FOR LOCAL:0, 0, MPLY_NUM
	FOR LOCAL:1, 0, MTAR_NUM
		;giving/receiving trample or buttjob
		SIF SEARCH_EQUIP_IC_M(MTAR:(LOCAL:1), MPLY:(LOCAL:0), 15, 103) >= 0
			RETURN 0
		;player getting footjob from target
		SIF SEARCH_EQUIP(14, MTAR:(LOCAL:1), MPLY:(LOCAL:0)) >= 0
			RETURN 0
		;mutual insertion is allowed only for the player being fucked by the target in the backwards sitting position, or tribadism/doubledildo
		SIF IS_INSERT_MUTUAL(MPLY:(LOCAL:0), MTAR:(LOCAL:1)) > 0 && (GET_SEX_POSITION(MTAR:(LOCAL:1), MPLY:(LOCAL:0)) != 4) && (GET_SEX_POSITION(MTAR:(LOCAL:1), MPLY:(LOCAL:0)) != 20) && (GET_SEX_POSITION(MPLY:(LOCAL:0), MTAR:(LOCAL:1)) != 20)
			RETURN 0
		SIF REACHING_BODY(MPLY:(LOCAL:0), MTAR:(LOCAL:1)) || REACHING_BODY(MTAR:(LOCAL:1), MPLY:(LOCAL:0))
			RETURN 0
		SIF LICKING_GROIN(MPLY:(LOCAL:0), MTAR:(LOCAL:1)) || LICKING_GROIN(MTAR:(LOCAL:1), MPLY:(LOCAL:0))
			RETURN 0
		SIF LICKING_BODY(MPLY:(LOCAL:0), MTAR:(LOCAL:1)) || LICKING_BODY(MTAR:(LOCAL:1), MPLY:(LOCAL:0))
			RETURN 0
	NEXT
NEXT
RETURN 1

;-------------------------------------------------
;快Ｍソースの倍率を取得する関数 ARG:0=PLAYERのキャラ番号
;-------------------------------------------------
@COM104_RATE_M(ARG:0)
#FUNCTION
LOCAL:5 = 1000
SELECTCASE ABL:(ARG:0):奉仕
	CASE 0
		TIMES LOCAL:5, 0.00
		;TIMES SOURCE:(LOCAL:2):不潔, 4.00
	CASE 1
		TIMES LOCAL:5, 0.10
		;TIMES SOURCE:(LOCAL:2):不潔, 2.50
	CASE 2
		TIMES LOCAL:5, 0.30
		;TIMES SOURCE:(LOCAL:2):不潔, 1.50
	CASE 3
		TIMES LOCAL:5, 0.80
		;TIMES SOURCE:(LOCAL:2):不潔, 1.00
	CASE 4
		TIMES LOCAL:5, 1.00
		;TIMES SOURCE:(LOCAL:2):不潔, 0.50
	CASEELSE
		LOCAL:5 = LOCAL:5 * (100 + (ABL:(ARG:0):奉仕 - 5) * 3) / 100
		;TIMES SOURCE:(LOCAL:2):不潔, 0.10
ENDSELECT

SELECTCASE ABL:(ARG:0):性技
	CASE 0
		TIMES LOCAL:5, 1.00
	CASE 1
		TIMES LOCAL:5, 1.10
	CASE 2
		TIMES LOCAL:5, 1.20
	CASE 3
		TIMES LOCAL:5, 1.30
	CASE 4
		TIMES LOCAL:5, 1.40
	CASEELSE
		LOCAL:5 = LOCAL:5 * ((ABL:(ARG:0):性技 - 5) * 2 + 150) / 100
ENDSELECT

RETURNF LOCAL:5

;-------------------------------------------------
;メイン処理
;-------------------------------------------------
@COM104
;実行判定
CALL COM_ORDER_COMMON
SIF RESULT == 0
	RETURN 0

;●全プレイヤーについて処理
FOR LOCAL:0, 0, MPLY_NUM
	LOCAL:2 = MPLY:(LOCAL:0)

	DOWNBASE:(LOCAL:2):体力 += 80

	SOURCE:(LOCAL:2):奉仕 = SERVE_HOUSHI(LOCAL:2, 150)
	SOURCE:(LOCAL:2):逸脱 = 80
	SOURCE:(LOCAL:2):接触 = 30
	SOURCE:(LOCAL:2):不潔 = 20
	EXP:(LOCAL:2):被虐経験値 += 1

	FOR LOCAL:1, 0, MTAR_NUM
		LOCAL:3 = MTAR:(LOCAL:1)
		SOURCE:(LOCAL:2):快Ｍ = (200 + TALENT:(LOCAL:3):美脚 * 100) * COM104_RATE_M(LOCAL:2) / 1000
	NEXT

	;主導権に応じた優越・屈従のソース追加
	CALL ADD_SOURCE_INITIATIVE_U(LOCAL:2, 50, 160)

	;奉仕経験値を得られるコマンドのフラグ
	TCVAR:(MPLY:0):奉仕経験取得可能 = 1

	;足へのキス
	IF MTAR_NUM == 1
		CALL KISS_COMMON(MPLY:0, @"%ANAME(MTAR:0)%の足", GET_SITUATION_BY_TRAIN_MODE())
	ELSE
		CALL KISS_COMMON(MPLY:0, @"%ANAME(MTAR:0)%たちの足", (GET_SITUATION_BY_TRAIN_MODE() == "和姦" ? "乱交" # "輪姦"))
	ENDIF
NEXT

;●全ターゲットについて処理
FOR LOCAL:0, 0, MTAR_NUM
	LOCAL:2 = MTAR:(LOCAL:0)

	DOWNBASE:(LOCAL:2):体力 += 40

	SOURCE:(LOCAL:2):嗜虐 = 20
	SOURCE:(LOCAL:2):露出 = 30
	SOURCE:(LOCAL:2):逸脱 = 20
	SOURCE:(LOCAL:2):接触 = 30
	EXP:(LOCAL:2):嗜虐経験値 += 1

	;主導権に応じた優越・屈従のソース追加
	CALL ADD_SOURCE_INITIATIVE_U(LOCAL:2, 160, 80)
NEXT

;主導度変化基準値
TFLAG:主導度変化基準値 = 3

;倒錯度変化基準値
TFLAG:倒錯度変化基準値 = 2

;レズ・ＢＬ経験基準値
TFLAG:レズ・ＢＬ経験基準値 = 4

RETURN 1

;-------------------------------------------------
;継続コマンドかどうかを設定
;-------------------------------------------------
@COM_IS_EQUIP104
RETURN 1

;-------------------------------------------------
;継続状態の処理
;-------------------------------------------------
@COM_EQUIP104(ARG:0)
;●全プレイヤーについて判定
FOR LOCAL:0, 0, MEQUIP_PLAYER_NUM:(ARG:0)
	LOCAL:2 = MEQUIP_PLAYER:(ARG:0):(LOCAL:0)

	DOWNBASE:(LOCAL:2):体力 += 10

	SOURCE:(LOCAL:2):奉仕 += SERVE_HOUSHI(LOCAL:2, 50)
	SOURCE:(LOCAL:2):逸脱 += 40
	SOURCE:(LOCAL:2):接触 += 15
	SOURCE:(LOCAL:2):不潔 += 10
	EXP:(LOCAL:2):被虐経験値 += 1

	FOR LOCAL:1, 0, MEQUIP_TARGET_NUM:(ARG:0)
		LOCAL:3 = MEQUIP_TARGET:(ARG:0):(LOCAL:1)
		SOURCE:(LOCAL:2):快Ｍ = (200 + TALENT:(LOCAL:3):美脚 * 100) * COM104_RATE_M(LOCAL:2) / 1000
	NEXT

	;主導権に応じた優越・屈従のソース追加
	CALL ADD_SOURCE_INITIATIVE_U(LOCAL:2, 10, 50)

	;奉仕経験値を得られるコマンドのフラグ
	TCVAR:(LOCAL:2):奉仕経験取得可能 = 1

	;倒錯度変化基準値
	TCVAR:(LOCAL:2):倒錯度変化基準値 += 3
NEXT

;●全ターゲットについて判定
FOR LOCAL:0, 0, MEQUIP_TARGET_NUM:(ARG:0)
	LOCAL:2 = MEQUIP_TARGET:(ARG:0):(LOCAL:0)

	DOWNBASE:(LOCAL:2):体力 += 10

	SOURCE:(LOCAL:2):嗜虐 += 10
	SOURCE:(LOCAL:2):露出 += 15
	SOURCE:(LOCAL:2):逸脱 += 10
	SOURCE:(LOCAL:2):接触 += 15
	EXP:(LOCAL:2):嗜虐経験値 += 1

	;主導権に応じた優越・屈従のソース追加
	CALL ADD_SOURCE_INITIATIVE_U(LOCAL:2, 80, 20)

	;倒錯度変化基準値
	TCVAR:(LOCAL:2):倒錯度変化基準値 += 3
NEXT

;-------------------------------------------------
;継続中の表示
;-------------------------------------------------
@EQUIP_MESSAGE104(ARG:0)
RESULTS = %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%に足舐め中

;-------------------------------------------------
;継続中の地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE_EQUIP104(ARG:0)
LOCAL:2 = 1
FOR LOCAL:0, 0, MEQUIP_TARGET_NUM:(ARG:0)
	IF !IS_INITIATIVE(MEQUIP_TARGET:(ARG:0):(LOCAL:0))
		LOCAL:2 = 0
	ENDIF
NEXT
IF LOCAL:2
	PRINTFORML %EQUIP_TARGET_ANAME(ARG:0)%が%EQUIP_PLAYER_ANAME(ARG:0)%に足を舐めさせている…
ELSE
	PRINTFORML %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%の足を舐めている…
ENDIF

;-------------------------------------------------
;継続を解除したときの地の文
;-------------------------------------------------
@COM_TEXT_RELEASE_EQUIP104(ARG:0)

;-------------------------------------------------
;固有の実行判定
;-------------------------------------------------
@COM_ORDER_PLAYER104(ARG:0)
;実行値の設定
TCVAR:(ARG:0):実行値 = 90

;共通部分
CALL COM_ORDER(ARG:0)

CALL COM_ORDER_ELEMENT(ARG:0, @"欲望Lv{ABL:(ARG:0):欲望}", ABL:(ARG:0):欲望 * 1)
CALL COM_ORDER_ELEMENT(ARG:0, @"奉仕Lv{ABL:(ARG:0):奉仕}", ABL:(ARG:0):奉仕 * 4)
CALL COM_ORDER_ELEMENT(ARG:0, @"マゾLv{ABL:(ARG:0):マゾ}", ABL:(ARG:0):マゾ * 3)

LOCAL:0 = GET_PALAMLV(PALAM:(ARG:0):欲情)
CALL COM_ORDER_ELEMENT(ARG:0, @"欲情Lv{LOCAL:0}", MIN(LOCAL:0 * 1, 10))

IF TALENT:(ARG:0):恥じらい
	CALL COM_ORDER_ELEMENT(ARG:0, "恥じらい", -2)
ENDIF
IF TALENT:(ARG:0):汚臭鈍感
	CALL COM_ORDER_ELEMENT(ARG:0, "汚臭鈍感", 1)
ENDIF
IF TALENT:(ARG:0):汚臭敏感
	CALL COM_ORDER_ELEMENT(ARG:0, "汚臭敏感", -4)
ENDIF
IF TALENT:(ARG:0):献身的
	CALL COM_ORDER_ELEMENT(ARG:0, "献身的", 6)
ENDIF

RETURN 1

;-------------------------------------------------
;地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE104
;ターゲットが２人
IF MTAR_NUM == 2
	LOCALS:0 = %ANAME(MPLY:0)%
	LOCALS:1 = %ANAME(MTAR:0)%と%ANAME(MTAR:1)%
	LOCALS:2 = 交互に

	;ターゲットが１人
ELSE
	;プレイヤーが２人
	IF MPLY_NUM == 2
		LOCALS:0 = %ANAME(MPLY:0)%と%ANAME(MPLY:1)%
		LOCALS:1 = %ANAME(MTAR:0)%
		LOCALS:2 = 交互に
		;プレイヤーが１人
	ELSE
		LOCALS:0 = %ANAME(MPLY:0)%
		LOCALS:1 = %ANAME(MTAR:0)%
		LOCALS:2 =
	ENDIF
ENDIF
IF TALENT:(MTAR:0):美脚
	LOCALS:3 = すらりとした美しい
ELSEIF TALENT:(MPLY:0):体格 < 0
	LOCALS:3 = %SPLIT_RAND("愛くるしい/可愛らしい/未成熟な/小さな/柔らかな", 1)%
ELSE
	LOCALS:3 =
ENDIF
SELECTCASE GET_COM_INITIATIVE()
		;プレイヤーに主導権
	CASE 0
		PRINTFORMW %LOCALS:0%は%LOCALS:1%の%LOCALS:3%足先を口に含み、%LOCALS:2%じゅるじゅると音を立てて舐めしゃぶっ%TARGET_STR("た", "てきた")%…
		;ターゲットに主導権
	CASE 1
		IF MTAR_NUM == 1 && ABL:(MPLY:0):サド >= 3
			PRINTFORMW %LOCALS:1%は嗜虐的な笑みを浮かべながら%LOCALS:0%の口に%LOCALS:3%足を押しこみ、無理やり舐めさせ%PLAYER_STR("た", "てきた")%…
		ELSEIF MTAR_NUM == 1 && ABL:(MTAR:0):主導度Ｕ < 100
			PRINTFORMW %LOCALS:1%は少し緊張した様子で%LOCALS:0%に%LOCALS:3%足を差し出すと、それを%LOCALS:2%舐めさせて奉仕させた…
		ELSE
			PRINTFORMW %LOCALS:1%は%LOCALS:0%に%LOCALS:3%足を向け、無理やり%LOCALS:2%舐めさせて奉仕させた…
		ENDIF
		;第三者に主導権
	CASEELSE
		PRINTFORML %ANAME(TFLAG:主導権所有者)%は%LOCALS:0%に、%LOCALS:1%の%LOCALS:3%足を舐めるように命令した
		PRINTFORMW %LOCALS:0%は言われるまま%LOCALS:1%の%LOCALS:3%足先に舌を這わせて舐め回した…
ENDSELECT

;-------------------------------------------------

;コマンド区分
;-------------------------------------------------

@COM_AVAILABLE_WHEN104
RETURN コマンド_ウフフ

;--------------------
;性嗜好用関数
;--------------------
@COM_PREFERENCE_PLAYER_104()
RETURN POWER(2, 性的嗜好_辱められたい)

@COM_PREFERENCE_TARGET_104()
RETURN POWER(2, 性的嗜好_辱めたい)


code:
;Ｗ顔面騎乗

;-------------------------------------------------
;コマンド名称
;-------------------------------------------------
@COM_NAME105
LOCALS:0 = Ｗ顔面騎乗

RESULTS:0 = %LOCALS:0%する
RESULTS:1 = %LOCALS:0%させられる
RESULTS:2 = %LOCALS:0%させる
RESULTS:3 = %LOCALS:0%される
RESULTS:4 = %LOCALS:0%させる
RESULTS:5 = %LOCALS:0%見せつけ

;-------------------------------------------------
;選択可否判定
;-------------------------------------------------
@COM_ABLE105
;共通部分
CALL COM_ABLE_COMMON(105)
SIF RESULT == 0
	RETURN 0
;プレイヤーが2人のとき限定
SIF MPLY_NUM != 2
	RETURN 0
;ターゲットは最大で1人まで
SIF MTAR_NUM <= 0 || MTAR_NUM > 1
	RETURN 0
;ターゲットがＰ挿入中かつ体位が騎乗位以外なら不可
SIF IS_INSERT_SINGLE(MTAR:0, "Ｐ") && !GROUPMATCH(GET_SEX_POSITION_SINGLE(MTAR:0, "Ｐ"), 5)
	RETURN 0
;ターゲットがＶ挿入中かつ体位が正常位以外なら不可
SIF IS_INSERT_SINGLE(MTAR:0, "Ｖ") && !GROUPMATCH(GET_SEX_POSITION_SINGLE(MTAR:0, "Ｖ"), 1)
	RETURN 0
;ターゲットがＶ挿入中かつ体位が正常位以外なら不可
SIF IS_INSERT_SINGLE(MTAR:0, "Ａ") && !GROUPMATCH(GET_SEX_POSITION_SINGLE(MTAR:0, "Ａ"), 1)
	RETURN 0
;target ridden or riding
SIF IS_RIDE(MTAR:0) || IS_RIDDEN(MTAR:0)
	RETURN 0
;target's mouth occupied
SIF IS_M_HOLD(MTAR:0)
	RETURN 0

;全てのプレイヤーについて判定
FOR LOCAL:0, 0, MPLY_NUM
	;行動不能なら不可
	SIF !IS_PLAYABLE(MPLY:(LOCAL:0))
		RETURN 0
	;拘束中なら不可
	SIF IS_BIND(MPLY:(LOCAL:0))
		RETURN 0
	;挿入中は不可
	SIF IS_INSERT_SINGLE(MPLY:(LOCAL:0), "全")
		RETURN 0
	;尻コキ中なら不可
	SIF IS_EQUIP_PLAYER(MPLY:(LOCAL:0), 15)
		RETURN 0
    ;foam play with target
    SIF SEARCH_EQUIP_IC(5, MPLY:(LOCAL:0), MTAR:0) >= 0
		RETURN 0
	;player ridden or already riding
	SIF IS_RIDDEN(MPLY:(LOCAL:0)) || IS_RIDE(MPLY:(LOCAL:0))
			RETURN 0
	;プレイヤーからターゲットに足舐め中なら不可
	SIF SEARCH_EQUIP(104, MPLY:(LOCAL:0), MTAR:0) >= 0
		RETURN 0
NEXT

RETURN 1

;-------------------------------------------------
;メイン処理
;-------------------------------------------------
@COM105
;実行判定
CALL COM_ORDER_COMMON
SIF RESULT == 0
	RETURN 0

;●プレイヤーについて処理
FOR LOCAL:0, 0, MPLY_NUM
	LOCAL:2 = MPLY:(LOCAL:0)

	SOURCE:(LOCAL:2):露出 = 200
	SOURCE:(LOCAL:2):逸脱 = 150
	SOURCE:(LOCAL:2):接触 = 40
	SOURCE:(LOCAL:2):性行動 = 150
	EXP:(LOCAL:2):嗜虐経験値 += 1

	;主導権がプレイヤー側にある場合
	IF GET_COM_INITIATIVE() == 0
		SOURCE:(MPLY:0):嗜虐 = 130
	ENDIF

	;主導権に応じた優越・屈従のソース追加
	CALL ADD_SOURCE_INITIATIVE_U(MPLY:0, 170, 120)
NEXT

;●ターゲットについて処理
EXP:(MTAR:0):性技経験値 += 1
EXP:(MTAR:0):被虐経験値 += 1

SOURCE:(MTAR:0):奉仕 = SERVE_HOUSHI(MTAR:0, 300)
SOURCE:(MTAR:0):逸脱 = 150
SOURCE:(MTAR:0):接触 = 60
SOURCE:(MTAR:0):性行動 = 150

;主導権に応じた優越・屈従のソース追加
CALL ADD_SOURCE_INITIATIVE_U(MTAR:0, 120, 140)

;奉仕経験値を得られるコマンドのフラグ
TCVAR:(MTAR:0):奉仕経験取得可能 = 1

;主導度変化基準値
TFLAG:主導度変化基準値 = 3

;倒錯度変化基準値
TFLAG:倒錯度変化基準値 = 2

;レズ・ＢＬ経験基準値
TFLAG:レズ・ＢＬ経験基準値 = 4

RETURN 1

;-------------------------------------------------
;継続コマンドかどうかを設定
;-------------------------------------------------
@COM_IS_EQUIP105
RETURN 1

;-------------------------------------------------
;継続状態の処理
;-------------------------------------------------
@COM_EQUIP105(ARG:0)
;●全プレイヤーについて判定
FOR LOCAL:0, 0, MEQUIP_PLAYER_NUM:(ARG:0)
	LOCAL:2 = MEQUIP_PLAYER:(ARG:0):(LOCAL:0)

	SOURCE:(LOCAL:2):露出 += 100
	SOURCE:(LOCAL:2):逸脱 += 80
	SOURCE:(LOCAL:2):接触 += 20
	SOURCE:(LOCAL:2):性行動 += 50
	EXP:(LOCAL:2):嗜虐経験値 += 1

	;倒錯度変化
	TCVAR:(LOCAL:2):倒錯度変化基準値 += 2
NEXT

;●ターゲットについて判定
LOCAL:2 = MEQUIP_TARGET:(ARG:0):0

EXP:(LOCAL:2):性技経験値 += 1
EXP:(LOCAL:2):被虐経験値 += 1

SOURCE:(LOCAL:2):奉仕 += SERVE_HOUSHI(LOCAL:2, 100)
SOURCE:(LOCAL:2):逸脱 += 80
SOURCE:(LOCAL:2):接触 += 30
SOURCE:(LOCAL:2):性行動 += 50

;倒錯度変化
TCVAR:(LOCAL:2):倒錯度変化基準値 += 2

;奉仕経験値を得られるコマンドのフラグ
TCVAR:(LOCAL:2):奉仕経験取得可能 = 1

;-------------------------------------------------
;継続中の表示
;-------------------------------------------------
@EQUIP_MESSAGE105(ARG:0)
RESULTS = %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%に顔面騎乗中(尻)

;-------------------------------------------------
;継続中の地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE_EQUIP105(ARG:0)
PRINTFORML %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%の顔の上に跨っている…

;-------------------------------------------------
;継続を解除したときの地の文
;-------------------------------------------------
@COM_TEXT_RELEASE_EQUIP105(ARG:0)
PRINTFORMW %EQUIP_PLAYER_ANAME(ARG:0)%は%EQUIP_TARGET_ANAME(ARG:0)%の顔から腰を上げた…

;-------------------------------------------------
;固有の実行判定
;-------------------------------------------------
@COM_ORDER_PLAYER105(ARG:0)
;実行値の設定
TCVAR:(ARG:0):実行値 = 75

;共通部分
CALL COM_ORDER(ARG:0)

CALL COM_ORDER_ELEMENT(ARG:0, @"欲望Lv{ABL:(ARG:0):欲望}", ABL:(ARG:0):欲望 * 1)
CALL COM_ORDER_ELEMENT(ARG:0, @"奉仕Lv{ABL:(ARG:0):奉仕}", ABL:(ARG:0):奉仕 * 4)

LOCAL:0 = GET_PALAMLV(PALAM:(ARG:0):欲情)
CALL COM_ORDER_ELEMENT(ARG:0, @"欲情Lv{LOCAL:0}", MIN(LOCAL:0 * 2, 20))

IF TCVAR:(ARG:0):媚薬
	CALL COM_ORDER_ELEMENT(ARG:0, "媚薬", 6)
ENDIF

IF TALENT:(ARG:0):恥じらい
	CALL COM_ORDER_ELEMENT(ARG:0, "恥じらい", -1)
ENDIF
IF TALENT:(ARG:0):汚臭鈍感
	CALL COM_ORDER_ELEMENT(ARG:0, "汚臭鈍感", 1)
ENDIF
IF TALENT:(ARG:0):汚臭敏感
	CALL COM_ORDER_ELEMENT(ARG:0, "汚臭敏感", -3)
ENDIF
IF TALENT:(ARG:0):献身的
	CALL COM_ORDER_ELEMENT(ARG:0, "献身的", 6)
ENDIF
IF TALENT:(ARG:0):快感の否定
	CALL COM_ORDER_ELEMENT(ARG:0, "快感の否定", -1)
ENDIF
IF TALENT:(ARG:0):女嫌い
	CALL COM_ORDER_ELEMENT(ARG:0, "女嫌い", -7)
ENDIF

;合意
IF !TALENT:(ARG:0):合意 && !TALENT:(ARG:0):親友
	CALL COM_ORDER_ELEMENT(ARG:0, "合意なし", -10)
ENDIF
RETURN 1

;-------------------------------------------------
;地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE105
SELECTCASE GET_COM_INITIATIVE()
	;プレイヤーに主導権
	CASE 0
		PRINTFORMW %ANAME(MPLY:0)%と%ANAME(MPLY:1)%は%ANAME(MTAR:0)%の顔に跨り、二人分のお尻で押し潰すように座っ%TARGET_STR("た", "てきた")%…
	;ターゲットに主導権
	CASE 1
		PRINTFORML %ANAME(MTAR:0)%は%ANAME(MPLY:0)%と%ANAME(MPLY:1)%に、二人で顔の上に跨って尻を押し付けるように命令した
		PRINTFORMW %ANAME(MPLY:0)%と%ANAME(MPLY:1)%は言われるまま%ANAME(MTAR:0)%の顔の上に座り込み、二人分のお尻を押し付けた…
	;第三者に主導権
	CASEELSE
		PRINTFORML %ANAME(TFLAG:主導権所有者)%は%ANAME(MPLY:0)%と%ANAME(MPLY:1)%に対して、%ANAME(MTAR:0)%の顔の上に座るように命令した
		PRINTFORMW %ANAME(MPLY:0)%と%ANAME(MPLY:1)%は言われるまま%ANAME(MTAR:0)%の顔の上に跨り、二人分のお尻を押し付けた…
ENDSELECT

;--------------------------------------------------------
;地の文(パラメータ・刻印変動後)
;--------------------------------------------------------
@COM_TEXT_LAST105

;-------------------------------------------------

;コマンド区分
;-------------------------------------------------

@COM_AVAILABLE_WHEN105
RETURN コマンド_ウフフ

;--------------------
;性嗜好用関数
;--------------------
@COM_PREFERENCE_PLAYER_105()
RETURN POWER(2, 性的嗜好_辱められたい)

@COM_PREFERENCE_TARGET_105()
RETURN POWER(2, 性的嗜好_辱めたい)


code:
;亀頭責め手コキ

;-------------------------------------------------
;コマンド名称
;-------------------------------------------------
@COM_NAME106
IF MPLY_NUM == 2
	LOCALS:0 = Ｗ亀頭責め手コキ
ELSE
	LOCALS:0 = 亀頭責め手コキ
ENDIF

RESULTS:0 = %LOCALS:0%する
RESULTS:1 = %LOCALS:0%させられる
RESULTS:2 = %LOCALS:0%させる
RESULTS:3 = %LOCALS:0%される
RESULTS:4 = %LOCALS:0%させる
RESULTS:5 = %LOCALS:0%見せつけ

;-------------------------------------------------
;選択可否判定
;-------------------------------------------------
@COM_ABLE106
;共通部分
CALL COM_ABLE_COMMON(106)
SIF RESULT == 0
	RETURN 0
;プレイヤーは最大で2人まで
SIF MPLY_NUM <= 0 || MPLY_NUM > 2
	RETURN 0
;ターゲットは最大で1人まで
SIF MTAR_NUM <= 0 || MTAR_NUM > 1
	RETURN 0
SIF !HAS_PENIS(MTAR:0)
	RETURN 0
FOR LOCAL:0, 0, MPLY_NUM
	SIF !P_STACKABLE(MPLY:(LOCAL:0), MTAR:0, 106)
		RETURN 0
	SIF !CAN_REACH_GROIN(MPLY:(LOCAL:0), MTAR:0)
		RETURN 0
NEXT
RETURN 1

;-------------------------------------------------
;メイン処理
;-------------------------------------------------
@COM106
;実行判定
CALL COM_ORDER_COMMON
SIF RESULT == 0
	RETURN 0

;●人数補正の設定
LOCAL:10 = 100

SELECTCASE MPLY_NUM
	CASE 2
		TIMES LOCAL:10, 0.75
ENDSELECT

;●全プレイヤーについて判定
FOR LOCAL:0, 0, MPLY_NUM
	LOCAL:2 = MPLY:(LOCAL:0)

	EXP:(LOCAL:2):性技経験値 += 1

	SOURCE:(LOCAL:2):奉仕 = SERVE_HOUSHI(LOCAL:2, 250)
	SOURCE:(LOCAL:2):接触 = 100
	SOURCE:(LOCAL:2):性行動 = 210

	IF IS_INITIATIVE(LOCAL:2)
		SOURCE:(LOCAL:2):嗜虐 = 50
	ENDIF

	SELECTCASE ABL:(LOCAL:2):奉仕
		CASE 0
			TIMES SOURCE:(LOCAL:2):不潔, 4.00
		CASE 1
			TIMES SOURCE:(LOCAL:2):不潔, 2.50
		CASE 2
			TIMES SOURCE:(LOCAL:2):不潔, 1.50
		CASE 3
			TIMES SOURCE:(LOCAL:2):不潔, 1.00
		CASE 4
			TIMES SOURCE:(LOCAL:2):不潔, 0.50
		CASEELSE
			TIMES SOURCE:(LOCAL:2):不潔, 0.10
	ENDSELECT

	;主導権に応じた優越・屈従のソース追加
	CALL ADD_SOURCE_INITIATIVE_U(LOCAL:2, 180, 80)

	;奉仕経験値を得られるコマンドのフラグ
	TCVAR:(LOCAL:2):奉仕経験取得可能 = 1

	;全ターゲットに与える快感系ソースを計算
	FOR LOCAL:1, 0, MTAR_NUM
		LOCAL:3 = MTAR:(LOCAL:1)
		;		SOURCE:(LOCAL:3):快Ｃ += SENSE_HOUSHI(LOCAL:2, LOCAL:3, 1200) * LOCAL:10 / 100
		SOURCE:(LOCAL:3):快Ｐ += SENSE_HOUSHI(LOCAL:2, LOCAL:3, 1200) * LOCAL:10 / 100
	NEXT
NEXT

;●全ターゲットについて判定
FOR LOCAL:0, 0, MTAR_NUM
	LOCAL:1 = MTAR:(LOCAL:0)

	SOURCE:(LOCAL:1):接触 = 50
	SOURCE:(LOCAL:1):性行動 = 180

	;主導権に応じた優越・屈従のソース追加
	CALL ADD_SOURCE_INITIATIVE_U(LOCAL:1, 100, 110)
NEXT

;主導度変化基準値
TFLAG:主導度変化基準値 = 2

;倒錯度変化基準値
TFLAG:倒錯度変化基準値 = 1

;レズ・ＢＬ経験基準値
TFLAG:レズ・ＢＬ経験基準値 = 4

RETURN 1

;-------------------------------------------------
;継続コマンドかどうかを設定
;-------------------------------------------------
@COM_IS_EQUIP106
RETURN 1

;-------------------------------------------------
;継続状態の処理
;-------------------------------------------------
@COM_EQUIP106(ARG:0)
;●人数補正の設定
LOCAL:10 = 100

SELECTCASE MEQUIP_PLAYER_NUM:(ARG:0)
	CASE 2
		TIMES LOCAL:10, 0.75
ENDSELECT

;●全プレイヤーについて判定
FOR LOCAL:0, 0, MEQUIP_PLAYER_NUM:(ARG:0)
	LOCAL:2 = MEQUIP_PLAYER:(ARG:0):(LOCAL:0)

	EXP:(LOCAL:2):性技経験値 += 1

	SOURCE:(LOCAL:2):奉仕 += SERVE_HOUSHI(LOCAL:2, 70)
	SOURCE:(LOCAL:2):接触 += 50
	SOURCE:(LOCAL:2):性行動 += 70

	;奉仕経験値を得られるコマンドのフラグ
	TCVAR:(LOCAL:2):奉仕経験取得可能 = 1

	;全ターゲットに与える快感系ソースを計算
	FOR LOCAL:1, 0, MEQUIP_TARGET_NUM:(ARG:0)
		LOCAL:3 = MEQUIP_TARGET:(ARG:0):(LOCAL:1)
		;		SOURCE:(LOCAL:3):快Ｃ += SENSE_HOUSHI(LOCAL:2, LOCAL:3, 500) * LOCAL:10 / 100
		SOURCE:(LOCAL:3):快Ｐ += SENSE_HOUSHI(LOCAL:2, LOCAL:3, 500) * LOCAL:10 / 100
	NEXT
NEXT

;●全ターゲットについて判定
FOR LOCAL:0, 0, MEQUIP_TARGET_NUM:(ARG:0)
	LOCAL:1 = MEQUIP_TARGET:(ARG:0):(LOCAL:0)

	SOURCE:(LOCAL:1):接触 += 25
	SOURCE:(LOCAL:1):性行動 += 60
NEXT

;-------------------------------------------------
;継続中の表示
;-------------------------------------------------
@EQUIP_MESSAGE106(ARG:0)
RESULTS = %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%に亀頭責め手コキ中

;-------------------------------------------------
;継続中の地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE_EQUIP106(ARG:0)
PRINTFORML %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%の亀頭を掌で撫で回している…

;-------------------------------------------------
;継続を解除したときの地の文
;-------------------------------------------------
@COM_TEXT_RELEASE_EQUIP106(ARG:0)

;-------------------------------------------------
;固有の実行判定
;-------------------------------------------------
@COM_ORDER_PLAYER106(ARG:0)
;実行値の設定
TCVAR:(ARG:0):実行値 = 75

;共通部分
CALL COM_ORDER(ARG:0)

CALL COM_ORDER_ELEMENT(ARG:0, @"欲望Lv{ABL:(ARG:0):欲望}", ABL:(ARG:0):欲望 * 2)
CALL COM_ORDER_ELEMENT(ARG:0, @"奉仕Lv{ABL:(ARG:0):奉仕}", ABL:(ARG:0):奉仕 * 4)

LOCAL:0 = GET_PALAMLV(PALAM:(ARG:0):欲情)
CALL COM_ORDER_ELEMENT(ARG:0, @"欲情Lv{LOCAL:0}", MIN(LOCAL:0 * 2, 20))

IF TCVAR:(ARG:0):媚薬
	CALL COM_ORDER_ELEMENT(ARG:0, "媚薬", 6)
ENDIF

IF TALENT:(ARG:0):恥じらい
	CALL COM_ORDER_ELEMENT(ARG:0, "恥じらい", -1)
ENDIF
IF TALENT:(ARG:0):汚臭鈍感
	CALL COM_ORDER_ELEMENT(ARG:0, "汚臭鈍感", 1)
ENDIF
IF TALENT:(ARG:0):汚臭敏感
	CALL COM_ORDER_ELEMENT(ARG:0, "汚臭敏感", -3)
ENDIF
IF TALENT:(ARG:0):献身的
	CALL COM_ORDER_ELEMENT(ARG:0, "献身的", 6)
ENDIF
IF TALENT:(ARG:0):快感の否定
	CALL COM_ORDER_ELEMENT(ARG:0, "快感の否定", -1)
ENDIF
IF TALENT:(ARG:0):男嫌い
	CALL COM_ORDER_ELEMENT(ARG:0, "男嫌い", -7)
ENDIF

;合意
IF !TALENT:(ARG:0):合意 && !TALENT:(ARG:0):親友
	CALL COM_ORDER_ELEMENT(ARG:0, "合意なし", -10)
ENDIF
RETURN 1

;-------------------------------------------------
;地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE106
;プレイヤーが２人
IF MPLY_NUM == 2
	SELECTCASE GET_COM_INITIATIVE()
			;プレイヤーに主導権
		CASE 0
			PRINTFORMW %ANAME(MPLY:0)%と%ANAME(MPLY:1)%は、それぞれ手のひらを%ANAME(MTAR:0)%の亀頭に押し付けると、亀頭を押し潰すようにしながら擦り上げ%TARGET_STR("た", "てきた")%…
			;ターゲットに主導権
		CASE 1
			PRINTFORML %ANAME(MTAR:0)%は%ANAME(MPLY:0)%と%ANAME(MPLY:1)%に、亀頭責めで気持ち良くするように要求した
			PRINTFORMW %ANAME(MPLY:0)%と%ANAME(MPLY:1)%は二人で分担しながら、それぞれの指で%ANAME(MTAR:0)%の亀頭を撫でまわして奉仕している…
			;第三者に主導権
		CASEELSE
			PRINTFORML %ANAME(TFLAG:主導権所有者)%は%ANAME(MPLY:0)%と%ANAME(MPLY:1)%に対して、%ANAME(MTAR:0)%の亀頭を指で責めるように命令した
			PRINTFORMW %ANAME(MPLY:0)%と%ANAME(MPLY:1)%は二人で分担しながら、それぞれの指で%ANAME(MTAR:0)%の亀頭を撫でまわした…
	ENDSELECT

	;プレイヤーが１人
ELSE
	SELECTCASE GET_COM_INITIATIVE()
			;プレイヤーに主導権
		CASE 0
			IF ABL:(MPLY:0):サド >= 3 && MPLY:0 != MASTER
				PRINTFORMW %ANAME(MPLY:0)%は%ANAME(MTAR:0)%の亀頭を強く握ると、激しく擦り上げて責め立て%TARGET_STR("た", "てきた")%…
			ELSE
				PRINTFORMW %ANAME(MPLY:0)%は%ANAME(MTAR:0)%の亀頭を手のひらで包み込むと、激しく擦り上げて責め立て%TARGET_STR("た", "てきた")%…
			ENDIF
			;ターゲットに主導権
		CASE 1
			PRINTFORML %ANAME(MTAR:0)%は%ANAME(MPLY:0)%に、亀頭責めで気持ち良くするように要求した
			PRINTFORMW %ANAME(MPLY:0)%は%ANAME(MTAR:0)%の亀頭を手のひらで包み込み、優しく撫で回して奉仕している…
			;第三者に主導権
		CASEELSE
			PRINTFORML %ANAME(TFLAG:主導権所有者)%は%ANAME(MPLY:0)%に対して、%ANAME(MTAR:0)%の亀頭を指で責めるように命令した
			PRINTFORMW %ANAME(MPLY:0)%は%ANAME(MTAR:0)%の亀頭を手のひらで包み込むと、激しく擦り上げて責め立てた…
	ENDSELECT
ENDIF

;-------------------------------------------------

;コマンド区分
;-------------------------------------------------

@COM_AVAILABLE_WHEN106
IF FLAG:調教モード != 調教_居住区
	RETURN コマンド_ウフフ
ELSE
	RETURN コマンド_居住区
ENDIF

;--------------------
;性嗜好用関数
;--------------------
@COM_PREFERENCE_PLAYER_106()
RETURN POWER(2, 性的嗜好_奉仕したい)

@COM_PREFERENCE_TARGET_106()
RETURN POWER(2, 性的嗜好_奉仕されたい)

@COM_STACK_SPERM_MTAR_TO_MPLY_106()
RETURN 射精部位_手


code:
;亀頭責めフェラ

;-------------------------------------------------
;コマンド名称
;-------------------------------------------------
@COM_NAME107
IF SEARCH_EQUIP(12, MPLY:0, MTAR:0) >= 0
	IF MPLY_NUM == 3
		LOCALS:0 = Ｔパイズリフェラ
	ELSEIF MPLY_NUM == 2
		LOCALS:0 = Ｗパイズリフェラ
	ELSE
		LOCALS:0 = パイズリフェラ
	ENDIF
ELSEIF MPLY_NUM == 3
	LOCALS:0 = Ｔ亀頭責めフェラ
ELSEIF MPLY_NUM == 2
	LOCALS:0 = Ｗ亀頭責めフェラ
ELSE
	LOCALS:0 = 亀頭責めフェラ
ENDIF

RESULTS:0 = %LOCALS:0%する
RESULTS:1 = %LOCALS:0%させられる
RESULTS:2 = %LOCALS:0%させる
RESULTS:3 = %LOCALS:0%される
RESULTS:4 = %LOCALS:0%させる
RESULTS:5 = %LOCALS:0%見せつけ

IF TFLAG:割込コマンド実行
	IF MPLY_NUM == 1
		RESULTS:3 = 横取り亀頭責めフェラ
	ENDIF
ENDIF

;-------------------------------------------------
;選択可否判定
;-------------------------------------------------
@COM_ABLE107
;共通部分
CALL COM_ABLE_COMMON(107)
SIF RESULT == 0
	RETURN 0
;プレイヤーは最大で2人まで
SIF MPLY_NUM <= 0 || MPLY_NUM > 3
	RETURN 0
;ターゲットは最大で1人まで
SIF MTAR_NUM <= 0 || MTAR_NUM > 1
	RETURN 0
SIF !HAS_PENIS(MTAR:0)
	RETURN 0
FOR LOCAL:0, 0, MPLY_NUM
	SIF !P_STACKABLE(MPLY:(LOCAL:0), MTAR:0, 107)
		RETURN 0
	SIF !CAN_LICK_GROIN(MPLY:(LOCAL:0), MTAR:0)
		RETURN 0
NEXT

RETURN 1

;-------------------------------------------------
;メイン処理
;-------------------------------------------------
@COM107
;実行判定
CALL COM_ORDER_COMMON
SIF RESULT == 0
	RETURN 0

;●人数補正の設定
LOCAL:10 = 100

SELECTCASE MPLY_NUM
	CASE 2
		TIMES LOCAL:10, 0.75
ENDSELECT

;●全プレイヤーについて判定
FOR LOCAL:0, 0, MPLY_NUM
	LOCAL:2 = MPLY:(LOCAL:0)

	DOWNBASE:(LOCAL:2):体力 += 120

	EXP:(LOCAL:2):性技経験値 += 1
	EXP:(LOCAL:2):口淫経験 += 1

	SOURCE:(LOCAL:2):奉仕 = SERVE_HOUSHI(LOCAL:2, 350)
	SOURCE:(LOCAL:2):接触 = 50
	SOURCE:(LOCAL:2):性行動 = 300
	SOURCE:(LOCAL:2):快Ｍ = 150 * COM11_RATE_M(LOCAL:2) / 1000

	IF IS_INITIATIVE(LOCAL:2)
		SOURCE:(LOCAL:2):嗜虐 = 50
	ENDIF

	;主導権に応じた優越・屈従のソース追加
	CALL ADD_SOURCE_INITIATIVE_U(LOCAL:2, 180, 100)

	;奉仕経験値を得られるコマンドのフラグ
	TCVAR:(LOCAL:2):奉仕経験取得可能 = 1

	;全ターゲットに与える快感系ソースを計算
	FOR LOCAL:1, 0, MTAR_NUM
		LOCAL:3 = MTAR:(LOCAL:1)
		LOCAL:4 = SENSE_HOUSHI(LOCAL:2, LOCAL:3, 1400) * LOCAL:10 / 100
		IF TALENT:(LOCAL:2):舌使い
			TIMES LOCAL:4, 1.50
		ENDIF
		SOURCE:(LOCAL:3):快Ｐ += LOCAL:4
		;		SOURCE:(LOCAL:3):快Ｃ += LOCAL:4

	NEXT

	IF HAS_PENIS(MTAR:0)
		;ペニスへのキス
		CALL KISS_COMMON(LOCAL:2, @"%ANAME(MTAR:0)%のペニス", GET_SITUATION_BY_TRAIN_MODE())
	ENDIF
NEXT

;●全ターゲットについて判定
FOR LOCAL:0, 0, MTAR_NUM
	LOCAL:1 = MTAR:(LOCAL:0)

	SOURCE:(LOCAL:1):接触 = 50
	SOURCE:(LOCAL:1):性行動 = 180

	;主導権に応じた優越・屈従のソース追加
	CALL ADD_SOURCE_INITIATIVE_U(LOCAL:1, 110, 120)
NEXT

;主導度変化基準値
TFLAG:主導度変化基準値 = 2

;倒錯度変化基準値
TFLAG:倒錯度変化基準値 = 1

;レズ・ＢＬ経験基準値
TFLAG:レズ・ＢＬ経験基準値 = 7

RETURN 1

;-------------------------------------------------
;継続コマンドかどうかを設定
;-------------------------------------------------
@COM_IS_EQUIP107
RETURN 1

;-------------------------------------------------
;継続状態の処理
;-------------------------------------------------
@COM_EQUIP107(ARG:0)
;●人数補正の設定
LOCAL:10 = 100

SELECTCASE MEQUIP_PLAYER_NUM:(ARG:0)
	CASE 2
		TIMES LOCAL:10, 0.75
ENDSELECT

;●全プレイヤーについて判定
FOR LOCAL:0, 0, MEQUIP_PLAYER_NUM:(ARG:0)
	LOCAL:2 = MEQUIP_PLAYER:(ARG:0):(LOCAL:0)

	EXP:(LOCAL:2):性技経験値 += 1
	EXP:(LOCAL:2):口淫経験 += 1

	SOURCE:(LOCAL:2):奉仕 += SERVE_HOUSHI(LOCAL:2, 100)
	SOURCE:(LOCAL:2):接触 += 25
	SOURCE:(LOCAL:2):性行動 += 100
	SOURCE:(LOCAL:2):快Ｍ += 50 * COM11_RATE_M(LOCAL:2) / 1000

	;奉仕経験値を得られるコマンドのフラグ
	TCVAR:(LOCAL:2):奉仕経験取得可能 = 1

	;全ターゲットに与える快感系ソースを計算
	FOR LOCAL:1, 0, MEQUIP_TARGET_NUM:(ARG:0)
		LOCAL:3 = MEQUIP_TARGET:(ARG:0):(LOCAL:1)
		LOCAL:4 = SENSE_HOUSHI(LOCAL:2, LOCAL:3, 600) * LOCAL:10 / 100
		IF TALENT:(LOCAL:3):舌使い
			TIMES LOCAL:4, 1.50
		ENDIF
		;		SOURCE:(LOCAL:3):快Ｃ += LOCAL:4
		SOURCE:(LOCAL:3):快Ｐ += LOCAL:4

	NEXT
NEXT

;●全ターゲットについて判定
FOR LOCAL:0, 0, MEQUIP_TARGET_NUM:(ARG:0)
	LOCAL:1 = MEQUIP_TARGET:(ARG:0):(LOCAL:0)

	SOURCE:(LOCAL:1):接触 += 25
	SOURCE:(LOCAL:1):性行動 += 60
NEXT

;-------------------------------------------------
;継続中の表示
;-------------------------------------------------
@EQUIP_MESSAGE107(ARG:0)
RESULTS = %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%に亀頭責めフェラ中

;-------------------------------------------------
;継続中の地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE_EQUIP107(ARG:0)
PRINTFORML %EQUIP_PLAYER_ANAME(ARG:0)%が%EQUIP_TARGET_ANAME(ARG:0)%の%S_R("亀頭/鈴口")%%S_R("を舌の先で舐め回して/を舐め回して/にひたすら舌を這わせて/をちろちろと舐め回して")%いる…

;-------------------------------------------------
;継続を解除したときの地の文
;-------------------------------------------------
@COM_TEXT_RELEASE_EQUIP107(ARG:0)

;-------------------------------------------------
;固有の実行判定
;-------------------------------------------------
@COM_ORDER_PLAYER107(ARG:0)
;実行値の設定
TCVAR:(ARG:0):実行値 = 85

;共通部分
CALL COM_ORDER(ARG:0)

CALL COM_ORDER_ELEMENT(ARG:0, @"欲望Lv{ABL:(ARG:0):欲望}", ABL:(ARG:0):欲望 * 2)
CALL COM_ORDER_ELEMENT(ARG:0, @"奉仕Lv{ABL:(ARG:0):奉仕}", ABL:(ARG:0):奉仕 * 4)

LOCAL:0 = GET_PALAMLV(PALAM:(ARG:0):欲情)
CALL COM_ORDER_ELEMENT(ARG:0, @"欲情Lv{LOCAL:0}", MIN(LOCAL:0 * 3, 30))

IF TCVAR:(ARG:0):媚薬
	CALL COM_ORDER_ELEMENT(ARG:0, "媚薬", 6)
ENDIF

IF TALENT:(ARG:0):恥じらい
	CALL COM_ORDER_ELEMENT(ARG:0, "恥じらい", -1)
ENDIF
IF TALENT:(ARG:0):汚臭鈍感
	CALL COM_ORDER_ELEMENT(ARG:0, "汚臭鈍感", 1)
ENDIF
IF TALENT:(ARG:0):汚臭敏感
	CALL COM_ORDER_ELEMENT(ARG:0, "汚臭敏感", -3)
ENDIF
IF TALENT:(ARG:0):献身的
	CALL COM_ORDER_ELEMENT(ARG:0, "献身的", 6)
ENDIF
IF TALENT:(ARG:0):快感の否定
	CALL COM_ORDER_ELEMENT(ARG:0, "快感の否定", -1)
ENDIF
IF TALENT:(ARG:0):男嫌い
	CALL COM_ORDER_ELEMENT(ARG:0, "男嫌い", -7)
ENDIF

;合意
IF !TALENT:(ARG:0):合意 && !TALENT:(ARG:0):親友
	CALL COM_ORDER_ELEMENT(ARG:0, "合意なし", -10)
ENDIF
RETURN 1

;-------------------------------------------------
;地の文(前文)
;-------------------------------------------------
@COM_TEXT_BEFORE107
;プレイヤーが２人
IF MPLY_NUM == 3
	SELECTCASE GET_COM_INITIATIVE()
			;プレイヤーに主導権
		CASE 0
			PRINTFORMW %ANAME(MPLY:0)%と%ANAME(MPLY:1)%と%ANAME(MPLY:2)%は%ANAME(MTAR:0)%のペニスに顔を寄せると、思い思いに亀頭を舐め回して責め立て%TARGET_STR("た", "てきた")%…
			;ターゲットに主導権
		CASE 1
			PRINTFORML %ANAME(MTAR:0)%は%ANAME(MPLY:0)%と%ANAME(MPLY:1)%と%ANAME(MPLY:2)%に、亀頭責めで気持ち良くするように要求した
			PRINTFORMW %ANAME(MPLY:0)%と%ANAME(MPLY:1)%と%ANAME(MPLY:2)%は%ANAME(MTAR:0)%のペニスに顔を寄せ、協力して亀頭を舐め回して奉仕した…
			;第三者に主導権
		CASEELSE
			PRINTFORML %ANAME(TFLAG:主導権所有者)%は%ANAME(MPLY:0)%と%ANAME(MPLY:1)%と%ANAME(MPLY:2)%に対して、%ANAME(MTAR:0)%の亀頭を舌で責めるように命令した
			PRINTFORMW %ANAME(MPLY:0)%と%ANAME(MPLY:1)%と%ANAME(MPLY:2)%は%ANAME(MTAR:0)%のペニスに顔を寄せ、協力して亀頭を舐め回した…
	ENDSELECT
ELSEIF MPLY_NUM == 2
	SELECTCASE GET_COM_INITIATIVE()
			;プレイヤーに主導権
		CASE 0
			PRINTFORMW %ANAME(MPLY:0)%と%ANAME(MPLY:1)%は左右から%ANAME(MTAR:0)%のペニスに顔を寄せると、思い思いに亀頭を舐め回して責め立て%TARGET_STR("た", "てきた")%…
			;ターゲットに主導権
		CASE 1
			PRINTFORML %ANAME(MTAR:0)%は%ANAME(MPLY:0)%と%ANAME(MPLY:1)%に、亀頭責めで気持ち良くするように要求した
			PRINTFORMW %ANAME(MPLY:0)%と%ANAME(MPLY:1)%は左右から%ANAME(MTAR:0)%のペニスに顔を寄せ、協力して亀頭を舐め回して奉仕した…
			;第三者に主導権
		CASEELSE
			PRINTFORML %ANAME(TFLAG:主導権所有者)%は%ANAME(MPLY:0)%と%ANAME(MPLY:1)%に対して、%ANAME(MTAR:0)%の亀頭を舌で責めるように命令した
			PRINTFORMW %ANAME(MPLY:0)%と%ANAME(MPLY:1)%は左右から%ANAME(MTAR:0)%のペニスに顔を寄せ、協力して亀頭を舐め回した…
	ENDSELECT

	;プレイヤーが１人
ELSE
	LOCALS '= @"%ANAME(MPLY:0)%は%ANAME(MTAR:0)%"
	SELECTCASE GET_COM_INITIATIVE()
			;プレイヤーに主導権
		CASE 0
			PRINTDATAW
				DATAFORM %LOCALS%の%語彙_ペニス()%%S_R("を咥え込む/に舌を這わせる/の先端に舌をあてがう")%と、ひたすら%S_R("亀頭/先端/鈴口/鈴口")%だけを%S_R("じゅるじゅる/ちゅぱちゃぱ/ちゅるちゅる")%と音を立てて舐め回し%TARGET_STR("た", "てきた")%…
				DATAFORM %LOCALS%の%S_R("亀頭/鈴口")%%S_R("を咥え込む/に舌を這わせる/に舌の先をあてがう")%と、%S_R("じゅるじゅる/ちゅぱちゃぱ/ちゅるちゅる")%と音を立てて舐め回し%TARGET_STR("た", "てきた")%…
			ENDDATA
			;ターゲットに主導権
		CASE 1
			PRINTFORML %ANAME(MTAR:0)%は%ANAME(MPLY:0)%に、口を使った亀頭責めで気持ち良くするように要求した
			PRINTFORMW %LOCALS%の%語彙_ペニス()%%S_R("を咥え込む/に舌を這わせる/の先端に舌をあてがう")%と、ひたすら%S_R("亀頭/先端/鈴口")%だけを舌で舐め回して奉仕した…
			;第三者に主導権
		CASEELSE
			PRINTFORML %ANAME(TFLAG:主導権所有者)%は%ANAME(MPLY:0)%に対して、%ANAME(MTAR:0)%の亀頭を舌で責めるように命令した
			PRINTFORMW %LOCALS%の%語彙_ペニス()%%S_R("を咥え込む/に舌を這わせる/の先端に舌をあてがう")%と、ひたすら%S_R("亀頭/先端/鈴口")%だけを舌で舐め回して責め立てた…
	ENDSELECT
ENDIF

;-------------------------------------------------

;コマンド区分
;-------------------------------------------------

@COM_AVAILABLE_WHEN107
IF FLAG:調教モード != 調教_居住区
	RETURN コマンド_ウフフ
ELSE
	RETURN コマンド_居住区
ENDIF

;--------------------
;性嗜好用関数
;--------------------
@COM_PREFERENCE_PLAYER_107()
RETURN POWER(2, 性的嗜好_奉仕したい)

@COM_PREFERENCE_TARGET_107()
RETURN POWER(2, 性的嗜好_奉仕されたい)

@COM_STACK_SPERM_MTAR_TO_MPLY_107()
RETURN RAND:3 ? 射精部位_口 # 射精部位_顔