code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_27(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "학교옥상"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_27()
#FUNCTION
RETURNF 13

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_27()
#FUNCTION
RETURNF 1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_27()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_27()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_27()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_27()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_27()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_27()
#FUNCTION
RETURNF IS_DAYTIME() ? 2 # 0

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_27()
#FUNCTION
RETURNF IS_DAYTIME() ? 5 # 0

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_27()
#FUNCTION
RETURNF 5

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_27(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_27(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_27(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_27(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "학교복도"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_28(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "학교뒤"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_28()
#FUNCTION
RETURNF 15

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_28()
#FUNCTION
RETURNF 1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_28()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_28()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_28()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_28()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_28()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_28()
#FUNCTION
RETURNF IS_DAYTIME() ? 1 # 0

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_28()
#FUNCTION
RETURNF IS_DAYTIME() ? 5 # 0

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_28()
#FUNCTION
RETURNF 3

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_28(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_28(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_28(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_28(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "학교안뜰"

repo_name: Catalyst/B

license: unknown


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_29(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "학교화장실"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_29()
#FUNCTION
RETURNF 5

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_29()
#FUNCTION
RETURNF 1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_29()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_29()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_29()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_29()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_29()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_29()
#FUNCTION
RETURNF IS_DAYTIME() ? 1 # 0

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_29()
#FUNCTION
RETURNF IS_DAYTIME() ? 2 # 0

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_29()
#FUNCTION
RETURNF 0

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_29(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_29(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_29(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_29(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "학교복도"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_30(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "구교사복도"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_30()
#FUNCTION
RETURNF 13

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_30()
#FUNCTION
RETURNF 5

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_30()
#FUNCTION
RETURNF 8

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_30()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_30()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_30()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_30()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_30()
#FUNCTION
RETURNF 0

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_30()
#FUNCTION
RETURNF 0

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_30()
#FUNCTION
RETURNF 7

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_30(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_30(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_30(targetChara)
#DIM targetChara
RETURN 0

;移動先をカンマ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_30(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "구교사의계단"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_31(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "승강구"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_31()
#FUNCTION
RETURNF 15

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_31()
#FUNCTION
RETURNF 1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_31()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_31()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_31()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_31()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_31()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_31()
#FUNCTION
RETURNF IS_DAYTIME() ? 3 # 0

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_31()
#FUNCTION
RETURNF IS_DAYTIME() ? 5 # 0

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_31()
#FUNCTION
RETURNF IS_DAYTIME() ? 6 # 0

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_31(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_31(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_31(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_31(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "학교안뜰,학교복도"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_32(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "구교사의계단"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_32()
#FUNCTION
RETURNF 13

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_32()
#FUNCTION
RETURNF 1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_32()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_32()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_32()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_32()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_32()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_32()
#FUNCTION
RETURNF IS_DAYTIME() ? 1 # 0

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_32()
#FUNCTION
RETURNF IS_DAYTIME() ? 1 # 0

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_32()
#FUNCTION
RETURNF 7

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_32(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_32(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_32(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_32(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "학교안뜰,구교사복도"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_33(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "폐허"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_33()
#FUNCTION
RETURNF 8

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_33()
#FUNCTION
RETURNF 1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_33()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_33()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_33()
#FUNCTION
RETURNF 4

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_33()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_33()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_33()
#FUNCTION
RETURNF 2

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_33()
#FUNCTION
RETURNF 1

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_33()
#FUNCTION
RETURNF 3

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_33(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_33(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_33(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_33(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "시골길"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_34(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "시골길"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_34()
#FUNCTION
RETURNF 14

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_34()
#FUNCTION
RETURNF 1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_34()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_34()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_34()
#FUNCTION
RETURNF 4

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_34()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_34()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_34()
#FUNCTION
RETURNF 3

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_34()
#FUNCTION
RETURNF 6

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_34()
#FUNCTION
RETURNF 6

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_34(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_34(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_34(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_34(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "폐허,삼림,학교안뜰,해안"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_35(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "삼림"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_35()
#FUNCTION
RETURNF 14

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_35()
#FUNCTION
RETURNF 1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_35()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_35()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_35()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_35()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_35()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_35()
#FUNCTION
RETURNF 1

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_35()
#FUNCTION
RETURNF 2

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_35()
#FUNCTION
RETURNF 4

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_35(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_35(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_35(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_35(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "시골길"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_36(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "해안"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_36()
#FUNCTION
RETURNF 14

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_36()
#FUNCTION
RETURNF 1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_36()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_36()
#FUNCTION
RETURNF -1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_36()
#FUNCTION
RETURNF -1

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_36()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_36()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_36()
#FUNCTION
RETURNF IS_DAYTIME() ? 4 # 0

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_36()
#FUNCTION
RETURNF IS_DAYTIME() ? 5 # 1

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_36()
#FUNCTION
RETURNF 7

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_36(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_36(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_36(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_36(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "시골길,암벽"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_37(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "암벽"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_37()
#FUNCTION
RETURNF 14

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_37()
#FUNCTION
RETURNF 1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_37()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_37()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_37()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_37()
#FUNCTION
RETURNF IS_DAYTIME()

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_37()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_37()
#FUNCTION
RETURNF 1

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_37()
#FUNCTION
RETURNF 5

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_37()
#FUNCTION
RETURNF 2

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_37(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_37(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_37(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_37(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "해안"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_38(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "성당"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_38()
#FUNCTION
RETURNF 13

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_38()
#FUNCTION
RETURNF -1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_38()
#FUNCTION
RETURNF -1

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_38()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_38()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_38()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_38()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_38()
#FUNCTION
RETURNF IS_DAYTIME() ? 2 # 0

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_38()
#FUNCTION
RETURNF IS_DAYTIME() ? 2 # 0

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_38()
#FUNCTION
RETURNF 6

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_38(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_38(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_38(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_38(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "학교복도,참회실"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_39(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "참회실"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_39()
#FUNCTION
RETURNF 9

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_39()
#FUNCTION
RETURNF 1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_39()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_39()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_39()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_39()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_39()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_39()
#FUNCTION
RETURNF IS_DAYTIME() ? 1 # 0

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_39()
#FUNCTION
RETURNF IS_DAYTIME() ? 1 # 0

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_39()
#FUNCTION
RETURNF 1

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_39(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_39(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_39(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_39(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "성당"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_40(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "배전"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_40()
#FUNCTION
RETURNF 13

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_40()
#FUNCTION
RETURNF -1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_40()
#FUNCTION
RETURNF -1

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_40()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_40()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_40()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_40()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_40()
#FUNCTION
RETURNF IS_DAYTIME() ? 2 # 0

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_40()
#FUNCTION
RETURNF IS_DAYTIME() ? 1 # 0

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_40()
#FUNCTION
RETURNF 4

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_40(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_40(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_40(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_40(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "학교복도"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_41(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "유도장"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_41()
#FUNCTION
RETURNF 13

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_41()
#FUNCTION
RETURNF 5

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_41()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_41()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_41()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_41()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_41()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_41()
#FUNCTION
RETURNF IS_DAYTIME() ? 4 # 0

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_41()
#FUNCTION
RETURNF IS_DAYTIME() ? 5 # 0

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_41()
#FUNCTION
RETURNF 6

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_41(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_41(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_41(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_41(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "체육관"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_42(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "검도장"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_42()
#FUNCTION
RETURNF 13

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_42()
#FUNCTION
RETURNF 5

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_42()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_42()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_42()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_42()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_42()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_42()
#FUNCTION
RETURNF IS_DAYTIME() ? 4 # 0

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_42()
#FUNCTION
RETURNF IS_DAYTIME() ? 5 # 0

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_42()
#FUNCTION
RETURNF 6

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_42(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_42(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_42(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_42(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "체육관"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_43(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "주택가"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_43()
#FUNCTION
RETURNF 14

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_43()
#FUNCTION
RETURNF 1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_43()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_43()
#FUNCTION
RETURNF 5

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_43()
#FUNCTION
RETURNF 8

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_43()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_43()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_43()
#FUNCTION
RETURNF 3

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_43()
#FUNCTION
RETURNF 4

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_43()
#FUNCTION
RETURNF 6

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_43(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_43(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_43(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_43(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "노상,맨션의복도,맨션의비상계단"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_44(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "맨션의복도"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_44()
#FUNCTION
RETURNF 14

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_44()
#FUNCTION
RETURNF 1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_44()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_44()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_44()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_44()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_44()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_44()
#FUNCTION
RETURNF 2

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_44()
#FUNCTION
RETURNF 4

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_44()
#FUNCTION
RETURNF 3

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_44(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_44(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_44(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_44(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "주택가.맨션의비상계단"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_45(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "맨션의비상계단"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_45()
#FUNCTION
RETURNF 14

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_45()
#FUNCTION
RETURNF 1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_45()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_45()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_45()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_45()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_45()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_45()
#FUNCTION
RETURNF 1

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_45()
#FUNCTION
RETURNF 3

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_45()
#FUNCTION
RETURNF 2

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_45(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_45(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_45(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_45(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "주택가,맨션의복도"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_46(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF "궁도장"

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_46()
#FUNCTION
RETURNF 15

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_46()
#FUNCTION
RETURNF 5

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_46()
#FUNCTION
RETURNF 10

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_46()
#FUNCTION
RETURNF 1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_46()
#FUNCTION
RETURNF 10

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_46()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_46()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_46()
#FUNCTION
RETURNF IS_DAYTIME() ? 3 # 0

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_46()
#FUNCTION
RETURNF IS_DAYTIME() ? 3 # 0

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_46()
#FUNCTION
RETURNF 5

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_46(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_46(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_46(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_46(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF "학교안뜰"


code:
;地名
;isSimpleNameRequestedの1ビット目：システム呼び出し(移動先判定で使用)　2ビット目：選択肢呼び出し(選択肢表示で使用)
@SP_TRAIN_LOCATION_NAME_locationIndex(isSimpleNameRequested)
#FUNCTIONS
#DIM isSimpleNameRequested
RETURNF ""

;場所の分類
;1bit目:1なら学園内　2bit目：1なら屋外　3bit目：1なら公共施設　4bit目:1なら非プライベート空間
;2～4it目が全て0の場合に限り、屋内調教扱いになる。日中調教の場合、1bit目が同じ施設内しか移動できない
@SP_TRAIN_LOCATION_TYPE_locationIndex()
#FUNCTION
RETURNF 14

;学園規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MIN_LEVEL_locationIndex()
#FUNCTION
RETURNF -1

;学園規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_SCHOOL_MAX_LEVEL_locationIndex()
#FUNCTION
RETURNF -1

;周辺規模レベルの下限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MIN_LEVEL_locationIndex()
#FUNCTION
RETURNF -1

;周辺規模レベルの上限。-1なら学園側で特に指定されない限り出ない
@SP_TRAIN_LOCATION_REQUIRED_AROUND_MAX_LEVEL_locationIndex()
#FUNCTION
RETURNF -1

;その他の侵入条件。日中/夜間など。1を返せば侵入可能
@SP_TRAIN_LOCATION_IS_INTRUDABLE_locationIndex()
#FUNCTION
RETURNF 1

;場所固有の初期化処理
@SP_TRAIN_LOCATION_INIT_locationIndex()
RETURN 1

;周囲の人の量。0～10で指定。0=無人。1=無人だが、壁の向こうなどにはいる。3=普通の道路。5=繁華街の中。8=ちょっと混んだ전차の中。10=満員전차の中
@SP_TRAIN_LOCATION_CROWDLEVEL_locationIndex()
#FUNCTION
RETURNF 1

;騒音レベル。0～10で指定。0=無音。1=도서관くらい。4=落ち着いた찻집。6=道路。8=전차。10=アミューズメント施設
@SP_TRAIN_LOCATION_SOUNDLEVEL_locationIndex()
#FUNCTION
RETURNF 1

;周囲の目。0～10で指定。0=ほぼ見えない。2=物陰。少し動くと見える。4=建物の屋上。もしそちらを見たら丸見え。6=道路。普通に見えている。8=高台。周囲の目を引く。10=ステージ。注目が集まる
@SP_TRAIN_LOCATION_VIEWLEVEL_locationIndex()
#FUNCTION
RETURNF 9

;場所固有の奴隷の反応(周囲の人について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_CROWDED_locationIndex(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(音について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_SOUNDED_locationIndex(targetChara)
#DIM targetChara
RETURN 0

;場所固有の奴隷の反応(周囲の目について)。何かある場合はRETURN 1すると汎用処理に入らない。
@SP_TRAIN_LOCATION_SLAVEREACTION_VIEWED_locationIndex(targetChara)
#DIM targetChara
RETURN 0

;移動先とその条件をセットでカンマ区切り、パイプ区切りで返す
@SP_TRAIN_LOCATION_MOVE_TO_locationIndex(searchKey)
#FUNCTIONS
#DIM searchKey
RETURNF ""


code:
┌┬─┐
││　│
├┼─┤
└┴─┘

初期位置：
所属	時間帯	学園固有設定	キャラ固有設定
*	*	-		あり		(日中/夜)キャラ固有設定
学外	日中	-		なし		뒷골목
学外	夜	-		なし		뒷골목
学内	日中	あり		なし		学園固有設定
学内	夜	あり		なし		뒷골목
学内	日中	なし		なし		빈교실
学内	夜	なし		なし		뒷골목

つまり：
学内かつキャラ固有設定あり→キャラ固有設定参照
学外orキャラ固有設定なし　→夜間→뒷골목
	　　　　　　　　　　日中→学園固有設定あり→学園固有設定
　　　　　　　　　　　　　　　　　学園固有設定なし→学外→뒷골목or폐허(周辺の発展度でどちらか選択)
　　　　　　　　　　　　　　　　　　　　　　　　　　学内→빈교실
学内・学外は「同じ学園所属か」で判定。場所の判定は「MASTERの所属学園」を基準に行う

学内MAPと学外MAPの間の移動は夜間のみ可能
【学外・周辺発展度4以下】
(START)폐허─시골길
　　　　　　　├삼림─(学園固有拡張のみ)*山
　　　　　　　├(学園固有拡張のみ)해안─(日中のみ)암벽
　　　　　　　├(学園固有拡張のみ)*廃神社─*廃神社の배전
　　　　　　　└(夜間のみ)학교안뜰(学内MAPへ)

【学外・周辺発展度5以上】
(START)뒷골목─노상
　　　　│　　　│
　　　폐빌딩　　├(日中のみ)도서관─도서관옥상
　　　　　　　　├공원┬공중화장실
　　　　　　　　│　　└(夜間のみ)街灯下
　　　　　　　　├역전번화가
　　　　　　　　│　├쇼핑몰
　　　　　　　　│　│　├쇼핑몰화장실
　　　　　　　　│　│　├쇼핑몰の屋上駐車場
　　　　　　　　│　│　└쇼핑몰の階段裏
　　　　　　　　│　├駅┬역의화장실
　　　　　　　　│　│　└전차
　　　　　　　　│　└찻집
　　　　　　　　├주택가
　　　　　　　　│　├맨션의복도
　　　　　　　　│　└맨션의비상계단
　　　　　　　　├(夜間のみ)학교안뜰(学内MAPへ)
　　　　　　　　├*教会─*告解室
　　　　　　　　└*神社参道─*神社배전

【学内】
(START)빈교실─학교복도───────┬체육관
　　　　　　　　　　　│　　　　　　　 　│　├체육창고
　　　　　　　　　　　│　　　　　　　　 │　├유도장
　　　　　　　　　　　│　　　　　　　　 │　└검도장
　　　　　　　　　　승강구　　　　　　　 ├보건실
　　　　　　　　　　　│　　　　　　　　 ├(夜間orTARGETが교사)교무실
　　　　(学外MAPへ)학교안뜰　　　　　　├도서실
　　　　　　　　　　　├학교뒤　　　　　 │　└도서준비실
　　　　　　　　　　  ├궁도장 　　　　　├*음악실
　　　　　　　　　　　└구교사의계단　　 │　└(夜間orキャラ固有)*음악준비실
　　　　　　　　　　　　　└구교사복도 ├*理科室
　　　　　　　　　　　　　　　　　　　　 │　└(夜間orキャラ固有)*理科準備室
　　　　　　　　　　　　　　　　　　　　 ├학교옥상
　　　　　　　　　　　　　　　　　 　　　├학교화장실
　　　　　　　　　　　　　　　　　 　　　├*학생회室
　　　　　　　　　　　　　　　　　　　　 ├(学園固有拡張のみ)성당─참회실
　　　　　　　　　　　　　　　　　　　　 └(学園固有拡張のみ)배전


code:
;存在チェック兼。1を返す
@SP_TRAIN_MEETING_EXISTS_1()
RETURN 1

;キャプション。調教対象が学生・교사・사회인・주부の場合があるので返し分ける
@SP_TRAIN_MEETING_NAME_1(isWithRelation)
#FUNCTIONS
#DIM isWithRelation
;ほぼ対等な立場の知人
SELECTCASE 1
	CASE TALENT:TARGET:초등학생 || TALENT:TARGET:중학생 || TALENT:TARGET:고등학생
		RETURNF "친구"
	CASE TALENT:TARGET:대학생
		RETURNF "대학의 친구"
	CASE TALENT:TARGET:교사 || TALENT:TARGET:사회인
		RETURNF "동료"
	CASE TALENT:TARGET:주부
		RETURNF "근처의 주부동료"
	CASEELSE
		THROW 부정한 TARGET : {TARGET}
ENDSELECT

;電話で話す仲の場合は1。モブなので基準はかなり甘めにする
@SP_TRAIN_MEETING_IS_TELEPHONE_1()
#FUNCTION
RETURNF 1

;会って話す仲の場合は1。
@SP_TRAIN_MEETING_IS_MEETING_1()
#FUNCTION
RETURNF 1

;関係性。基準はCSVのRELATION定義に準じる
@SP_TRAIN_MEETING_RELATION_1()
#FUNCTION
RETURNF 120

;学校内調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_IN_SCHOOL_1()
#FUNCTION
#DIMS keyTalent
RETURNF TALENT:TARGET:초등학생 || TALENT:TARGET:중학생 || TALENT:TARGET:고등학생 || TALENT:TARGET:대학생 || TALENT:TARGET:교사

;通常の특수調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_OUT_SCHOOL_1()
#FUNCTION
#DIMS keyTalent
RETURNF TALENT:TARGET:사회인 || TALENT:TARGET:주부

;休日や夜間の특수調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_NIGHT_OR_HOLIDAY_1()
#FUNCTION
#DIMS keyTalent
RETURNF 1


code:
;存在チェック兼。1を返す
@SP_TRAIN_MEETING_EXISTS_2()
RETURN 1

;キャプション。調教対象が学生・교사・사회인・주부の場合があるので返し分ける
@SP_TRAIN_MEETING_NAME_2(isWithRelation)
#FUNCTIONS
#DIM isWithRelation
;目上や目下、あるいは近所の知人など
SELECTCASE 1
	CASE TALENT:TARGET:초등학생 || TALENT:TARGET:중학생 || TALENT:TARGET:고등학생
		RETURNF "교사"
	CASE TALENT:TARGET:대학생
		RETURNF "대학 교수"
	CASE TALENT:TARGET:교사
		RETURNF "제자"
	CASE TALENT:TARGET:사회인
		RETURNF "상사"
	CASE TALENT:TARGET:주부
		RETURNF "근처의 주부"
	CASEELSE
		THROW 부정한 TARGET : {TARGET}
ENDSELECT

;電話で話す仲の場合は1。モブなので基準はかなり甘めにする
@SP_TRAIN_MEETING_IS_TELEPHONE_2()
#FUNCTION
RETURNF 0

;会って話す仲の場合は1。
@SP_TRAIN_MEETING_IS_MEETING_2()
#FUNCTION
RETURNF 1

;関係性。基準はCSVのRELATION定義に準じる
@SP_TRAIN_MEETING_RELATION_2()
#FUNCTION
RETURNF 110

;学校内調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_IN_SCHOOL_2()
#FUNCTION
#DIMS keyTalent
RETURNF 1

;通常の특수調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_OUT_SCHOOL_2()
#FUNCTION
#DIMS keyTalent
RETURNF !TALENT:TARGET:교사

;休日や夜間の특수調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_NIGHT_OR_HOLIDAY_2()
#FUNCTION
#DIMS keyTalent
RETURNF 1


code:
;存在チェック兼。1を返す
@SP_TRAIN_MEETING_EXISTS_3()
RETURN !TALENT:TARGET:천애고독

;キャプション。調教対象が学生・교사・사회인・주부の場合があるので返し分ける
@SP_TRAIN_MEETING_NAME_3(isWithRelation)
#FUNCTIONS
#DIM isWithRelation
;肉親。ただし親子兄弟姉妹や血縁関係の有無などは設定に矛盾する可能性があるのでぼやかす
RETURNF "친척"

;電話で話す仲の場合は1。モブなので基準はかなり甘めにする
@SP_TRAIN_MEETING_IS_TELEPHONE_3()
#FUNCTION
RETURNF 1

;会って話す仲の場合は1。
@SP_TRAIN_MEETING_IS_MEETING_3()
#FUNCTION
RETURNF 1

;関係性。基準はCSVのRELATION定義に準じる
@SP_TRAIN_MEETING_RELATION_3()
#FUNCTION
RETURNF 130

;学校内調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_IN_SCHOOL_3()
#FUNCTION
#DIMS keyTalent
RETURNF 0

;通常の특수調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_OUT_SCHOOL_3()
#FUNCTION
#DIMS keyTalent
RETURNF 1

;休日や夜間の특수調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_NIGHT_OR_HOLIDAY_3()
#FUNCTION
#DIMS keyTalent
RETURNF 0


code:
;存在チェック兼可否チェック。存在する場合1を返す
@SP_TRAIN_MEETING_EXISTS_4()
RETURN TALENT:TARGET:좋아하는사람있음 || TALENT:TARGET:남친있음 || TALENT:TARGET:남편있음

;キャプション。調教対象が学生・교사・사회인・주부の場合があるので返し分ける
@SP_TRAIN_MEETING_NAME_4(isWithRelation)
#FUNCTIONS
#DIM isWithRelation
#DIMS relationText
;彼氏、夫、恋人。そもそもそれらがいない場合は呼ばれない。
IF TALENT:밀회 != 1
	SELECTCASE 1
		CASE TALENT:TARGET:좋아하는사람있음
			relationText = 좋아하는사람
		CASE TALENT:TARGET:남친있음
			relationText = 남친
		CASE TALENT:TARGET:남편있음
			relationText = 남편
	ENDSELECT
ELSE
	relationText = 친구 같은 남자
ENDIF
SELECTCASE isWithRelation
	CASE 1,4
		IF IS_PARTNERNAME_EXIST(TARGET)
			RETURNF relationText
		ELSE
			RETURNF relationText + "인 " + PARTNER_NAME_CORE(TARGET)
		ENDIF
	CASE 2
		RETURNF relationText
	;CASE 3(CALLNAMEのみ)は、分岐させる意味がないのでELSEに統合
	CASEELSE
		RETURNF PARTNER_NAME_CORE(TARGET)
ENDSELECT

;電話で話す仲の場合は1。モブなので基準はかなり甘めにする
@SP_TRAIN_MEETING_IS_TELEPHONE_4()
#FUNCTION
;思い人の間は電話はしない
RETURNF !TALENT:TARGET:좋아하는사람있음

;会って話す仲の場合は1。
@SP_TRAIN_MEETING_IS_MEETING_4()
#FUNCTION
RETURNF 1

;関係性。基準はCSVのRELATION定義に準じる
@SP_TRAIN_MEETING_RELATION_4()
#FUNCTION
RETURNF 150

;学校内調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_IN_SCHOOL_4()
#FUNCTION
#DIMS keyTalent
RETURNF TALENT:TARGET:초등학생 || TALENT:TARGET:중학생 || TALENT:TARGET:고등학생 || TALENT:TARGET:대학생

;通常の특수調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_OUT_SCHOOL_4()
#FUNCTION
#DIMS keyTalent
RETURNF TALENT:TARGET:교사 || TALENT:TARGET:사회인 || TALENT:TARGET:주부

;休日や夜間の특수調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_NIGHT_OR_HOLIDAY_4()
#FUNCTION
#DIMS keyTalent
RETURNF 1


code:
;存在チェック兼。1を返す
@SP_TRAIN_MEETING_EXISTS_5()
RETURN 1

;キャプション。調教対象が学生・교사・사회인・주부の場合があるので返し分ける
@SP_TRAIN_MEETING_NAME_5(isWithRelation)
#FUNCTIONS
#DIM isWithRelation
;ほぼ無関係な他人
RETURNF "낯선 아이"

;電話で話す仲の場合は1。モブなので基準はかなり甘めにする
@SP_TRAIN_MEETING_IS_TELEPHONE_5()
#FUNCTION
RETURNF 0

;会って話す仲の場合は1。
@SP_TRAIN_MEETING_IS_MEETING_5()
#FUNCTION
;욕정が高いと心配して声をかけてくる
RETURNF GETPALAMLV(GETNUM(PALAM,"욕정"),10) > 4

;関係性。基準はCSVのRELATION定義に準じる
@SP_TRAIN_MEETING_RELATION_5()
#FUNCTION
RETURNF 100

;学校内調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_IN_SCHOOL_5()
#FUNCTION
#DIMS keyTalent
RETURNF 0

;通常の특수調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_OUT_SCHOOL_5()
#FUNCTION
#DIMS keyTalent
RETURNF 1

;休日や夜間の특수調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_NIGHT_OR_HOLIDAY_5()
#FUNCTION
#DIMS keyTalent
RETURNF IS_DAYTIME()


code:
;存在チェック兼。1を返す
@SP_TRAIN_MEETING_EXISTS_XX()
RETURN 1

;キャプション。調教対象が学生・교사・사회인・주부の場合があるので返し分ける
@SP_TRAIN_MEETING_NAME_XX(isWithRelation)
#FUNCTIONS
#DIM isWithRelation
;ほぼ対等な立場の知人
SELECTCASE 1
	CASE TALENT:TARGET:초등학생 || TALENT:TARGET:중학생 || TALENT:TARGET:고등학생
		RETURNF ""
	CASE TALENT:TARGET:대학생
		RETURNF ""
	CASE TALENT:TARGET:교사 || TALENT:TARGET:사회인
		RETURNF ""
	CASE TALENT:TARGET:주부
		RETURNF ""
	CASEELSE
		THROW 부정한 TARGET : {TARGET}
ENDSELECT

;電話で話す仲の場合は1。モブなので基準はかなり甘めにする
@SP_TRAIN_MEETING_IS_TELEPHONE_XX()
#FUNCTION
RETURNF 1

;会って話す仲の場合は1。
@SP_TRAIN_MEETING_IS_MEETING_XX()
#FUNCTION
RETURNF 1

;関係性。基準はCSVのRELATION定義に準じる
@SP_TRAIN_MEETING_RELATION_XX()
#FUNCTION
RETURNF 120

;学校内調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_IN_SCHOOL_XX()
#FUNCTION
#DIMS keyTalent
RETURNF TALENT:TARGET:초등학생 || TALENT:TARGET:중학생 || TALENT:TARGET:고등학생 || TALENT:TARGET:대학생 || TALENT:TARGET:교사

;通常の특수調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_OUT_SCHOOL_XX()
#FUNCTION
#DIMS keyTalent
RETURNF TALENT:TARGET:사회인 || TALENT:TARGET:주부

;休日や夜間の특수調教中に出会う可能性があるか。ある場合は1
@SP_TRAIN_MEETING_NIGHT_OR_HOLIDAY_XX()
#FUNCTION
#DIMS keyTalent
RETURNF 1


code:
;存在チェック。基本的に1を返す。隠し職業とかいらんわな
@IS_JOB_EXISTS_0()
RETURN 1

@JOB_NAME_0()
#FUNCTIONS
RETURNF "무직"

;その仕事の主な職場。특수調教時に専用描写があったり、行き先に新しいのが追加される感じ
@JOB_SITUATION_0()

;通常の衣服パターン。日中に呼び出したときはこの服で更新する
@JOB_DEFAULT_WEAR_TYPE_0()


code:
직업은 대략적인 카테고리로 분류해 지문 등에서 사용할 수 있도록 한다

군인
소방관
경찰관
간호사
꽃집
통역사
축구 선수
야구 선수
농구 선수
유도 선수
가라테선수
검도 선수
궁도 선수
작가
비서
엘리베이터 걸
육상 선수
발레리나
메이드
집사
화가
사서
넷아이돌
회사원
요리인
요리사
파티시에
다이버
음악가
만화가
애니메이터
일러스트레이터
웨이트리스
연구자
탐정
기술자
수녀
무녀
여승
코스플레이어
웨딩 플래너
사진사
보모
아이돌
여배우
모델
의류 점원
메이드
스튜어디스
경영인
농가
마피아
조교사
갬블러
운전사


code:
;자동레벨업기능
@AUT_LVUP, ARG
;순종
CALL AUT_ZYU_0
CALL AUT_ZYU_1
CALL AUT_ZYU_2
CALL AUT_ZYU_3
;욕망
CALL AUT_YOKU
;기교
CALL AUT_GI
;C감각
CALL AUT_C
;V감각
CALL AUT_V
;Ａ감각
CALL AUT_A
;Ｂ감각
CALL AUT_B
;봉사정신
CALL AUT_HOU_0
CALL AUT_HOU_1
CALL AUT_HOU_2
;노출증
CALL AUT_RO
;마조끼
CALL AUT_MA_0
CALL AUT_MA_1
;새드끼
CALL AUT_SA
;레즈끼
CALL AUT_RE_0
;요리기능
CALL AUT_RYOU
;촬영기능
CALL AUT_SATU
;가창기능
CALL AUT_KA
;자위중독
CALL AUT_ZI_0
CALL AUT_ZI_1
;정액중독
CALL AUT_SEI_0
CALL AUT_SEI_1
;레즈중독
CALL AUT_REZU
;섹스중독
CALL AUT_SEX
;墳乳中毒
CALL AUT_FU
;호모끼
CALL AUT_HO_0
;게이중독
CALL AUT_GE
;촉수중독
CALL AUT_TEN
;정신의존
CALL AUT_MDD

PRINTW 일괄 레벨업했습니다.

CALL YOKUBO_UP_CHECK
CALL JUJUN_UP_CHECK
;순종
;공포で순종を上げる
@AUT_ZYU_0
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:5 == 0 && TALENT:8 == 0
		REPEAT 5 - ABL:0
		CALL ISABLUP0
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:0 += 1
			JUEL:11 -= A
		REND
ELSE
		REPEAT 10 - ABL:0
		CALL ISABLUP0
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:0 += 1
			JUEL:11 -= A
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(0,ABL:0)
ELSE
ENDIF
;온순で순종を上げる
@AUT_ZYU_1
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:5 == 0 && TALENT:8 == 0
		REPEAT 5 - ABL:0
		CALL ISABLUP0
			IF J != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:0 += 1
			JUEL:5 -= B
		REND

ELSE
		REPEAT 10 - ABL:0
		CALL ISABLUP0
			IF J != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:0 += 1
			JUEL:5 -= B
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(0,ABL:0)
ELSE
ENDIF
;욕정で순종を上げる
@AUT_ZYU_2
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:5 == 0 && TALENT:8 == 0
		REPEAT 5 - ABL:0
		CALL ISABLUP0
			IF K != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:0 += 1
			JUEL:6 -= C
		REND
ELSE
		REPEAT 10 - ABL:0
		CALL ISABLUP0
			IF K != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:0 += 1
			JUEL:6 -= C
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(0,ABL:0)
ELSE
ENDIF
;굴복で순종を上げる
@AUT_ZYU_3
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:5 == 0 && TALENT:8 == 0
		REPEAT 5 - ABL:0
		CALL ISABLUP0
			IF L != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:0 += 1
			JUEL:7 -= D
		REND
ELSE
		REPEAT 10 - ABL:0
		CALL ISABLUP0
			IF L != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:0 += 1
			JUEL:7 -= D
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(0,ABL:0)
ELSE
ENDIF
;욕망を上げる
@AUT_YOKU
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
		REPEAT 5 - ABL:1
		CALL ISABLUP1
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:1 += 1
			JUEL:6 -= A
		REND
ELSE
		REPEAT 10 - ABL:1
		CALL ISABLUP1
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:1 += 1
			JUEL:6 -= A
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(1,ABL:1)
ELSE
ENDIF
;기교を上げる
@AUT_GI
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:5 == 0 && TALENT:8 == 0
		REPEAT 5 - ABL:2
		CALL ISABLUP2
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:2 += 1
			JUEL:8 -= A
		REND
ELSE
		REPEAT 10 - ABL:2
		CALL ISABLUP2
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:2 += 1
			JUEL:8 -= A
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(2,ABL:2)
ELSE
ENDIF
;Ｃ감각
@AUT_C
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
		REPEAT 5 - ABL:3
		CALL ISABLUP3
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:3 += 1
			JUEL:0 -= A
		REND
ELSE
		REPEAT 10 - ABL:3
		CALL ISABLUP3
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:3 += 1
			JUEL:0 -= A
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(3,ABL:3)
ELSE
ENDIF
;∨感깨우침
@AUT_V
LOCAL = 0
IF  TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
		REPEAT 5 - ABL:4
		CALL ISABLUP4
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:4 += 1
			JUEL:1 -= A
		REND
ELSE
		REPEAT 10 - ABL:4
		CALL ISABLUP4
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:4 += 1
			JUEL:1 -= A
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(4,ABL:4)
ELSE
ENDIF

;Ａ감각
@AUT_A
LOCAL = 0
IF  TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
		REPEAT 5 - ABL:5
		CALL ISABLUP5
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:5 += 1
			JUEL:2 -= A
		REND
ELSE
		REPEAT 10 - ABL:5
		CALL ISABLUP5
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:5 += 1
			JUEL:2 -= A
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(5,ABL:5)
ELSE
ENDIF

;Ｂ감각
@AUT_B
LOCAL = 0
IF  TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
		REPEAT 5 - ABL:6
		CALL ISABLUP6
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:6 += 1
			JUEL:3 -= A
		REND
ELSE
		REPEAT 10 - ABL:6
		CALL ISABLUP6
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:6 += 1
			JUEL:3 -= A
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(6,ABL:6)
ELSE
ENDIF

;봉사정신
;굴복で봉사정신を上げる
@AUT_HOU_0
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:5 == 0 && TALENT:8 == 0
		REPEAT 5 - ABL:7
		CALL ISABLUP7
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:7 += 1
			JUEL:7 -= A
		REND
ELSE
		REPEAT 10 - ABL:7
		CALL ISABLUP7
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:7 += 1
			JUEL:7 -= A
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(7,ABL:7)
ELSE
ENDIF

;온순で봉사정신を上げる
@AUT_HOU_1
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:5 == 0 && TALENT:8 == 0
		REPEAT 5 - ABL:7
		CALL ISABLUP7
			IF J != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:7 += 1
			JUEL:5 -= B
		REND
ELSE
		REPEAT 10 - ABL:7
		CALL ISABLUP7
			IF J != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:7 += 1
			JUEL:5 -= B
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(7,ABL:7)
ELSE
ENDIF

;습득で봉사정신を上げる
@AUT_HOU_2
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:5 == 0 && TALENT:8 == 0
		REPEAT 5 - ABL:7
		CALL ISABLUP7
			IF K != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:7 += 1
			JUEL:8 -= C
		REND
ELSE
		REPEAT 10 - ABL:7
		CALL ISABLUP7
			IF K != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:7 += 1
			JUEL:8 -= C
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(7,ABL:7)
ELSE
ENDIF

;노출증
@AUT_RO
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
		REPEAT 5 - ABL:8
		CALL ISABLUP8
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:8 += 1
			JUEL:9 -= A
		REND
ELSE
		REPEAT 10 - ABL:8
		CALL ISABLUP8
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:8 += 1
			JUEL:9 -= A
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(8,ABL:8)
ELSE
ENDIF

;마조끼
@AUT_MA_0
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:5 == 0 && TALENT:8 == 0
		REPEAT 5 - ABL:9
		CALL ISABLUP9
			IF B <= 0 || I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:9 += 1
			JUEL:10 -= A
			JUEL:6 -= B
		REND
ELSE
		REPEAT 10 - ABL:9
		CALL ISABLUP9
			IF B <= 0 || I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:9 += 1
			JUEL:10 -= A
			JUEL:6 -= B
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(9,ABL:9)
ELSE
ENDIF
@AUT_MA_1
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:5 == 0 && TALENT:8 == 0
		REPEAT 5 - ABL:9
		CALL ISABLUP9
			IF D <= 0 || J != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:9 += 1
			JUEL:10 -= D
			JUEL:7 -= E
		REND
ELSE
		REPEAT 10 - ABL:9
		CALL ISABLUP9
			IF D <= 0 || J != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:9 += 1
			JUEL:10 -= D
			JUEL:7 -= E
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(9,ABL:9)
ELSE
ENDIF
;새드끼
@AUT_SA
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:5 == 0 && TALENT:8 == 0
		REPEAT 5 - ABL:10
		CALL ISABLUP10
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:10 += 1
			JUEL:6 -= A
		REND
ELSE
		REPEAT 10 - ABL:10
		CALL ISABLUP10
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:10 += 1
			JUEL:6 -= A
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(10,ABL:10)
ELSE
ENDIF
;레즈끼
@AUT_RE_0
LOCAL = 0
CALL ISABLUP11
IF ABL:11<=2
	REPEAT 2 - ABL:11
CALL DECIDE_ABLUP11
		IF Z==1 && JUEL:6 >= A
			LOCAL += 1
			ABL:11 += 1
			JUEL:6 -= A
			Z=0
		ELSEIF Z==1 && JUEL:0 >= D
					LOCAL += 1
					ABL:11 += 1
					JUEL:0 -= D
					Z=0
		ELSE
		ENDIF
	REND
ELSE
ENDIF
IF ABL:11>=2 && TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
	REPEAT 5 - ABL:11
		CALL DECIDE_ABLUP11
			IF Z==1 && JUEL:6 >= A && JUEL:7 >= C
				LOCAL += 1
				ABL:11 += 1
				JUEL:6 -= A
				JUEL:7 -= C
				Z=0
			ELSE
			ENDIF
	REND
ELSEIF ABL:11>=2
	REPEAT 10 - ABL:11
		CALL DECIDE_ABLUP11
			IF Z==1 && JUEL:6 >= A && JUEL:7 >= C
				LOCAL += 1
				ABL:11 += 1
				JUEL:6 -= A
				JUEL:7 -= C
				Z=0
			ELSE
			ENDIF
	REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(11,ABL:11)
ELSE
ENDIF
;요리기능
@AUT_RYOU
LOCAL = 0
IF TALENT:친애 == 1 && TALENT:연모 == 1
		REPEAT 10 - ABL:12
		CALL ISABLUP12
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:12 += 1
			JUEL:8 -= A
		REND
ELSE

ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(12,ABL:12)
ELSE
ENDIF

;촬영기능
@AUT_SATU
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:5 == 0 && TALENT:8 == 0
		REPEAT 5 - ABL:13
		CALL ISABLUP13
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:13 += 1
			JUEL:8 -= A
		REND
ELSE
		REPEAT 10 - ABL:13
		CALL ISABLUP13
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:13 += 1
			JUEL:8 -= A
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(13,ABL:13)
ELSE
ENDIF

;가창기능
@AUT_KA
LOCAL = 0
IF TALENT:친애 == 1 && TALENT:연모 == 1
		REPEAT 10 - ABL:14
		CALL ISABLUP14
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:14 += 1
			JUEL:8 -= A
		REND
ELSE

ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(14,ABL:14)
ELSE
ENDIF

;자위중독
@AUT_ZI_0
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
		REPEAT 5 - ABL:15
		CALL ISABLUP15
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:15 += 1
			JUEL:6 -= A
			JUEL:0 -= B
			JUEL:9 -= C
		REND
ELSE
		REPEAT 10 - ABL:15
		CALL ISABLUP15
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:15 += 1
			JUEL:6 -= A
			JUEL:0 -= B
			JUEL:9 -= C
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(15,ABL:15)
ELSE
ENDIF

@AUT_ZI_1
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
		REPEAT 5 - ABL:15
		CALL ISABLUP15
			IF J != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:15 += 1
			JUEL:6 -= A
			JUEL:0 -= B
			JUEL:9 -= C
		REND
ELSE
		REPEAT 10 - ABL:15
		CALL ISABLUP15
			IF J != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:15 += 1
			JUEL:6 -= A
			JUEL:0 -= B
			JUEL:9 -= C
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(15,ABL:15)
ELSE
ENDIF

;정액중독
@AUT_SEI_0
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
		REPEAT 5 - ABL:16
		CALL ISABLUP16
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:16 += 1
			JUEL:6 -= A
			JUEL:7 -= B
		REND
ELSE
		REPEAT 10 - ABL:16
		CALL ISABLUP16
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:16 += 1
			JUEL:6 -= A
			JUEL:7 -= B
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(16,ABL:16)
ELSE
ENDIF

@AUT_SEI_1
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
		REPEAT 5 - ABL:16
		CALL ISABLUP16
			IF J != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:16 += 1
			JUEL:6 -= A*3
			JUEL:7 -= B*3
		REND
ELSE
		REPEAT 10 - ABL:16
		CALL ISABLUP16
			IF J != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:16 += 1
			JUEL:6 -= A*3
			JUEL:7 -= B*3
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(16,ABL:16)
ELSE
ENDIF

;레즈중독
@AUT_REZU
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
		REPEAT 5 - ABL:17
		CALL ISABLUP17
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:17 += 1
			JUEL:6 -= A
			JUEL:0 -= B
		REND
ELSE
		REPEAT 10 - ABL:17
		CALL ISABLUP17
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:17 += 1
			JUEL:6 -= A
			JUEL:0 -= B
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(17,ABL:17)
ELSE
ENDIF

;섹스중독
@AUT_SEX
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
		REPEAT 5 - ABL:18
		CALL ISABLUP18
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:18 += 1
			JUEL:6 -= A
			JUEL:1 -= B
			JUEL:7 -= C
		REND
ELSE
		REPEAT 10 - ABL:18
		CALL ISABLUP18
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:18 += 1
			JUEL:6 -= A
			JUEL:1 -= B
			JUEL:7 -= C
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(18,ABL:18)
ELSE
ENDIF
;분유중독
@AUT_FU
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
		REPEAT 5 - ABL:19
		CALL ISABLUP19
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:19 += 1
			JUEL:6 -= A
			JUEL:3 -= B
			JUEL:7 -= C
		REND
ELSE
		REPEAT 10 - ABL:19
		CALL ISABLUP19
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:19 += 1
			JUEL:6 -= A
			JUEL:3 -= B
			JUEL:7 -= C
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(19,ABL:19)
ELSE
ENDIF
;호모끼
@AUT_HO_0
LOCAL = 0
CALL ISABLUP20
IF ABL:20<=2
	REPEAT 2 - ABL:20
CALL DECIDE_ABLUP20
		IF Z==1 && JUEL:6 >= A
			LOCAL += 1
			ABL:20 += 1
			JUEL:6 -= A
			Z=0
		ELSEIF Z==1 && JUEL:0 >= D
					LOCAL += 1
					ABL:20 += 1
					JUEL:0 -= D
					Z=0
		ELSE
		ENDIF
	REND
ELSE
ENDIF
IF ABL:20>=2 && TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
	REPEAT 5 - ABL:20
		CALL DECIDE_ABLUP20
			IF Z==1 && JUEL:6 >= A && JUEL:7 >= C
				LOCAL += 1
				ABL:20 += 1
				JUEL:6 -= A
				JUEL:7 -= C
				Z=0
			ELSE
			ENDIF
	REND
ELSEIF ABL:20>=2
	REPEAT 10 - ABL:20
		CALL DECIDE_ABLUP20
			IF Z==1 && JUEL:6 >= A && JUEL:7 >= C
				LOCAL += 1
				ABL:20 += 1
				JUEL:6 -= A
				JUEL:7 -= C
				Z=0
			ELSE
			ENDIF
	REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(20,ABL:20)
ELSE
ENDIF

;게이중독
@AUT_GE
LOCAL = 0
IF TALENT:3 == 0 && TALENT:6 == 0 && TALENT:4 == 0 && TALENT:7 == 0
		REPEAT 5 - ABL:21
		CALL ISABLUP21
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:21 += 1
			JUEL:6 -= A
			JUEL:0 -= B
		REND
ELSE
		REPEAT 10 - ABL:21
		CALL ISABLUP21
			IF I != 0
				BREAK
			ENDIF
			LOCAL += 1
			ABL:21 += 1
			JUEL:6 -= A
			JUEL:0 -= B
		REND
ENDIF
IF LOCAL++
			CALL PRINT_AUT_ABLUP(21,ABL:21)
ELSE
ENDIF

;촉수중독
@AUT_TEN
LOCAL = 0
WHILE 1
	CALLFORM ISABLUP{GETNUM(ABL,"촉수중독")}()
	SIF RESULT == 0
		BREAK
	LOCAL++
	ABL:촉수중독 += 1
	JUEL:공포 -= A
	JUEL:치정 -= B
WEND
SIF LOCAL > 0
	CALL PRINT_AUT_ABLUP(GETNUM(ABL,"촉수중독"),ABL:촉수중독)

;정신의존
@AUT_MDD
LOCAL = 0
WHILE 1
	CALLFORM ISABLUP{GETNUM(ABL,"정신의존")}()
	SIF RESULT == 0
		BREAK
	LOCAL++
	ABL:정신의존 += 1
	JUEL:온순 -= A
WEND
SIF LOCAL > 0
	CALL PRINT_AUT_ABLUP(GETNUM(ABL,"정신의존"),ABL:정신의존)

@PRINT_AUT_ABLUP(ARG, ARG:1)
SIF ARG:1 < 1
	RETURN 0
PRINTFORML %ABLNAME:ARG%의 레벨이 %숫자처리(ARG:1,"로")% 변했습니다


code:
@GET_WEAR_NAME(clothPosition,clothIndex = -1,isOmitDescription = 0)
#FUNCTIONS
#DIM clothPosition
#DIM clothIndex
#DIM isOmitDescription
RETURNF GET_CLOTH_STR("WEAR_NAME",clothPosition,clothIndex,isOmitDescription)

;원피스の服の場合、相손方のclothIndexを返す。(clothPositionは自明)
;それ以外は-1を返す
@GET_ONEPIECE_PAIR(clothPosition,clothIndex = -1)
#FUNCTION
#DIM clothPosition
#DIM clothIndex
RETURNF GET_CLOTH_VALUE("ONE_PIECE_PAIR",clothPosition,clothIndex)

@SWITCH_CLOTH_POSITION(clothPosition)
#FUNCTION
#DIM clothPosition
RETURNF INRANGE(clothPosition,2,5) ? clothPosition ^ 1 # -1

@GET_WEARING_MESSAGE(clothPosition,clothIndex = -1,isForceRequestNormal = 0)
#FUNCTIONS
#DIM clothPosition
#DIM clothIndex
#DIM isForceRequestNormal
RETURNF GET_CLOTH_STR("WEARING_MESSAGE",clothPosition,clothIndex,isForceRequestNormal)

@GET_UNWEARING_MESSAGE(clothPosition,clothIndex = -1,isForceRequestNormal = 0)
#FUNCTIONS
#DIM clothPosition
#DIM clothIndex
#DIM isForceRequestNormal
RETURNF GET_CLOTH_STR("UNWEARING_MESSAGE",clothPosition,clothIndex,isForceRequestNormal)

;前のボタン(など)を外す/留める時のメッセージ。「○○せる」という形式で表示されるので注意
;外した時の服なら留めるとき、留めた時の服なら外したときのメッセージになる
@GET_FRONTLOCK_CHANGE_MESSAGE(clothPosition,clothIndex = -1,isForceRequestNormal = 0)
#FUNCTIONS
#DIM clothPosition
#DIM clothIndex
#DIM isForceRequestNormal
RETURNF GET_CLOTH_STR("FRONT_LOCKCHANGE_MESSAGE",clothPosition,clothIndex,isForceRequestNormal)

;1の場合、長短ある衣服の長い服であることを意味する。
;특수1 : 未定義(常に0)
;특수2 : ロングタイツやオーバー니삭스など、膝上まで来る長い양말
;상반신 겉옷&하반신 겉옷 : 長소매、膝下まである長い스커트など
;상반신 속옷&하반신 속옷 : 未定義(常に0)
;전신 겉옷 : 膝下まである겉옷類。大きめの코트など
@IS_LONGWEAR(clothPosition,clothIndex = -1)
#FUNCTION
#DIM clothPosition
#DIM clothIndex
RETURNF GET_CLOTH_VALUE("IS_LONGWEAR",clothPosition,clothIndex)

;1の場合、長短ある衣服の短い服であることを意味する。
;특수1 : 未定義(常に1)
;특수2 : くるぶしまでしか覆わない短い양말
;상반신 겉옷&하반신 겉옷 : ノースリーブの셔츠や、부루마のように太ももが노출した겉옷
;상반신 속옷&하반신 속옷 : 未定義(常に1)
;전신 겉옷 : 上半身程度しか覆わない겉옷。ジャンパーなど
@IS_SHORTWEAR(clothPosition,clothIndex = -1)
#FUNCTION
#DIM clothPosition
#DIM clothIndex
RETURNF GET_CLOTH_VALUE("IS_SHORTWEAR",clothPosition,clothIndex)

;1の場合、스커트のようなまくれる服であることを意味する。
;전신 겉옷と하반신 겉옷以外の場合は未定義(常に0)
@IS_SKIRT(clothPosition,clothIndex = -1)
#FUNCTION
#DIM clothPosition
#DIM clothIndex
RETURNF GET_CLOTH_VALUE("IS_SKIRT",clothPosition,clothIndex)

;1の場合、前をはだけることができる服であることを意味する。
@IS_FRONTOPEN(clothPosition,clothIndex = -1)
#FUNCTION
#DIM clothPosition
#DIM clothIndex
RETURNF GET_CLOTH_VALUE("IS_FRONTOPEN",clothPosition,clothIndex)

;ボタンなどで前を止めているか、またそれを外した場合に参照するデータ
;0なら止めていない。正の数なら現在止めていて、外すとそのデータを参照、負の数なら現在外していて、留めるとそのデータを参照
@GET_FRONTLOCK(clothPosition,clothIndex = -1)
#FUNCTION
#DIM clothPosition
#DIM clothIndex
RETURNF GET_CLOTH_VALUE("GET_FRONTLOCK_DATA",clothPosition,clothIndex)

;1以上の場合、穴が空いている、ずらせるなどで性器を노출できる衣服であることを意味する。
;1の場合はずらせる、2の場合は穴が空いている。
;상반신 겉옷・下着、하반신 겉옷・下着以外は未定義(常に1)
@GET_HOLED(clothPosition,clothIndex = -1)
#FUNCTION
#DIM clothPosition
#DIM clothIndex
RETURNF GET_CLOTH_VALUE("GET_HOLED",clothPosition,clothIndex)

;穴を開けられるか。また穴を開けた場合に参照するデータ。
;-1なら穴を開けられない。数値なら参照するデータ番号
@GET_MAKEHOLE(clothPosition,clothIndex = -1)
#FUNCTION
#DIM clothPosition
#DIM clothIndex
RETURNF GET_CLOTH_VALUE("GET_MAKEHOLE_DATA",clothPosition,clothIndex)

;1の場合、襞(プリーツ)がある。
;상반신 겉옷と하반신 겉옷以外は未定義(常に0)
@IS_PLEATED(clothPosition,clothIndex = -1)
#FUNCTION
#DIM clothPosition
#DIM clothIndex
RETURNF GET_CLOTH_VALUE("IS_PLEATED",clothPosition,clothIndex)

;衣服の種類。主に着るシチュエーションによる分類。
@GET_WEAR_TYPE(clothPosition,clothIndex = -1)
#FUNCTION
#DIM clothPosition
#DIM clothIndex
RETURNF GET_CLOTH_VALUE("WEAR_TYPE",clothPosition,clothIndex)

;下着扱いなら1を返す。システム的な取り扱いではなく、当人の認識を意味する。
;たとえば水着はシステム的には下着扱いだが、当人的には겉옷扱い
@GET_AS_UNDERWEAR(clothPosition,clothIndex = -1)
#FUNCTION
#DIM clothPosition
#DIM clothIndex
RETURNF GET_CLOTH_VALUE("AS_UNDERWEAR",clothPosition,clothIndex)

;衣服の可視性。その服の下がどの程度透けて見えるか。(レースの服や穴が開いているなどの理由)
@GET_CLOTH_VISIBILITY(clothPosition,clothIndex = -1)
#FUNCTION
#DIM clothPosition
#DIM clothIndex
RETURNF GET_CLOTH_VALUE("VISIBILITY",clothPosition,clothIndex)

;衣服の防音性。中でしている音をどの程度隠せるか
@GET_CLOTH_SOUNDKEEP(clothPosition,clothIndex = -1)
#FUNCTION
#DIM clothPosition
#DIM clothIndex
RETURNF GET_CLOTH_VALUE("SOUNDKEEP",clothPosition,clothIndex)

;衣服に関係する値を取得する、内部処理用汎用関数。
@GET_CLOTH_VALUE(keyword,clothPosition,clothIndex = -1,isRootWearDataRequest = 0)
#FUNCTION
#DIMS DYNAMIC keyword
#DIM clothPosition
#DIM DYNAMIC clothIndex
#DIM isRootWearDataRequest
SIF clothIndex == -1
	clothIndex = TEQUIP:clothPosition
SIF !isRootWearDataRequest
	clothIndex = GET_TRUE_CLOTH_INDEX(keyword,clothPosition,clothIndex)
RETURNF EVALUATE("CLOTHES_" + keyword + "_" + TOSTR(clothPosition) +"_" + TOSTR(clothIndex) + "()")

;衣服に関係する文字列値を取得する、内部処理用汎用関数。
@GET_CLOTH_STR(keyword,clothPosition,clothIndex = -1,isRootWearDataRequest = 0)
#FUNCTIONS
#DIMS keyword
#DIM clothPosition
#DIM DYNAMIC clothIndex
#DIM isRootWearDataRequest
SIF clothIndex == -1
	clothIndex = TEQUIP:clothPosition
SIF !isRootWearDataRequest
	clothIndex = GET_TRUE_CLOTH_INDEX(keyword,clothPosition,clothIndex)
RETURNF EVALUATE_STR("CLOTHES_" + keyword + "_" + TOSTR(clothPosition) +"_" + TOSTR(clothIndex) + "()")

;衣服のステータスを考慮して正しいindexを取得する
@GET_TRUE_CLOTH_INDEX(keyword,clothPosition,clothIndex)
#FUNCTION
#DIMS keyword
#DIM clothPosition
#DIM clothIndex
SELECTCASE CLOTH_STATUS:clothPosition
	CASE 0
		;通常状態。아무것도안한다
	CASE 1
		;破損状態
		SIF keyword != "GET_MAKEHOLE_DATA" && (GET_CLOTH_VALUE("GET_MAKEHOLE_DATA",clothPosition,clothIndex) != -1)
			clothIndex = GET_CLOTH_VALUE("GET_MAKEHOLE_DATA",clothPosition,clothIndex)
	CASE 2
		;半脱ぎ状態
			SIF keyword != "GET_FRONTLOCK_DATA" && (GET_CLOTH_VALUE("GET_FRONTLOCK_DATA",clothPosition,clothIndex) != -1)
				clothIndex = GET_CLOTH_VALUE("GET_FRONTLOCK_DATA",clothPosition,clothIndex)
	CASEELSE
		THROW 의복 스테이터스가 부정합니다。 : {CLOTH_STATUS:clothPosition}
ENDSELECT
RETURNF clothIndex

@GET_CLOTH_MAX_INDEX(clothPosition)
#FUNCTION
#DIM clothPosition
RETURNF CLOTH_TYPE_MAXINDEX:clothPosition

@IS_CLOTH_POSITION_TOP(clothPosition)
#FUNCTION
#DIM clothPosition
RETURNF GROUPMATCH(clothPosition,3,5,6)

@IS_CLOTH_POSITION_BOTTOM(clothPosition)
#FUNCTION
#DIM clothPosition
RETURNF GROUPMATCH(clothPosition,2,4,6)


code:
#DIM CONST WEAR_TYPE_BEAR = 0		;裸
#DIM CONST WEAR_TYPE_INFORMAL = 1	;カジュアルウェア
#DIM CONST WEAR_TYPE_FORMAL = 2		;(学生服以外の)フォーマルウェア
#DIM CONST WEAR_TYPE_SCHOOL_UNIFORM = 3	;学生服、학교수영복
#DIM CONST WEAR_TYPE_MAID = 4		;메이드복
#DIM CONST WEAR_TYPE_NURSE = 5		;ナース服
#DIM CONST WEAR_TYPE_WEDDING = 6	;ウェディングドレス系
#DIM CONST WEAR_TYPE_POLICE = 7		;警官
#DIM CONST WEAR_TYPE_BUNNY = 8		;바니슈트系
#DIM CONST WEAR_TYPE_MIKO = 9		;무녀복系
#DIM CONST WEAR_TYPE_TENNIS = 10	;테니스웨어
#DIM CONST WEAR_TYPE_BUDOU = 11		;武術
#DIM CONST WEAR_TYPE_FENCING = 12	;フェンシング
#DIM CONST WEAR_TYPE_SWIM = 13		;水泳(水着等)
#DIM CONST WEAR_TYPE_BONDAGE = 14	;ボンテージ
#DIM CONST WEAR_TYPE_PARK = 15		;遊園地等
#DIM CONST WEAR_TYPE_DANCE = 16		;ダンス用の服等
#DIM CONST WEAR_TYPE_SISTER = 17	;수녀복
#DIM CONST WEAR_TYPE_WORKER = 18	;작업복等
#DIM CONST WEAR_TYPE_BASEBALL = 19	;野球유니폼
#DIM CONST WEAR_TYPE_DOCTOR = 20	;医者、研究者
#DIM CONST WEAR_TYPE_SPORTSWEAR	= 21	;(유니폼以外の)スポーツウェア
#DIM CONST WEAR_TYPE_PRIEST = 22	;神父服

;着衣関連CFLAGの開始位置
#DIM CONST WEARING_CFLAG_START = 40

;着衣位置の種類数
#DIM CONST WEARING_POSITION_COUNT = 7

#DIM CONST CLOTH_TYPE_MAXINDEX = 12,7,12,13,53,46,10

#DIMS CONST CLOTH_TYPE_NAME = "上半身특수","下半身특수","하반신 속옷","상반신 속옷","하반신 겉옷","상반신 겉옷","전신 겉옷"

;衣服が破損などしているか。調教終了時及び着替えた時にクリアされる
;0:通常 1:破損 2:半脱ぎ
#DIM CLOTH_STATUS,WEARING_POSITION_COUNT

;今回破損させた衣服の位置
#DIM BREAKED_CLOTH_INDEX

;全体に何らかの追加描写がある場合。
#DIMS CLOTH_SET_DESCRIPT_TEXT = ""


code:
@CLOTHES_CHANGE(targetCharaIndex = -1)
#DIM index
#DIM DYNAMIC nowWearStatusFlag,WEARING_POSITION_COUNT  ; 1;着衣 0:脱衣 2:半脱ぎ
#DIM DYNAMIC afterWearStatusFlag,WEARING_POSITION_COUNT
#DIM lines
#DIM targetCharaIndex
#DIM targetCharaNo
#DIMS statusText
#DIM wearStatus
#DIM ret
#DIM onePiecePair
SIF targetCharaIndex == -1
	targetCharaIndex = TARGET
ret = CLOTHES_GET_NOW_STATUS_MAP(nowWearStatusFlag,targetCharaIndex)
ret = CLOTHES_GET_NOW_STATUS_MAP(afterWearStatusFlag,targetCharaIndex)
while 1
	lines = LINECOUNT
	PRINTFORM %CALLNAME:TARGET%의 착의를 변경합니다。
	CALL SET_COLOR_STATUS,1
	PRINTFORM 【%CLOTHES_GET_CHARA_WEARING_TOTALSTATUS(nowWearStatusFlag,targetCharaIndex)%】
	RESETCOLOR
	PRINTFORM →
	CALL SET_COLOR_STATUS,1
	PRINTFORML 【%CLOTHES_GET_CHARA_WEARING_TOTALSTATUS(afterWearStatusFlag,targetCharaIndex)%】
	RESETCOLOR
	FOR index,WEARING_POSITION_COUNT - 1,-1,-1
		onePiecePair = GET_ONEPIECE_PAIR(index,CFLAG:targetCharaIndex:(40+index))
		IF CFLAG:targetCharaIndex:(40 + index) > 0 && (GROUPMATCH(index,2,4) == 0 || onePiecePair == -1)
			PRINTPLAIN
			PRINTFORM [{index}] : %GET_CHARA_WEAR_NAME(index,targetCharaIndex,1),25,LEFT%
			PRINTPLAIN  :
			CALL CREATE_FLATTED_BUTTON("[" + GET_TOWEAR_MESSAGE(index,targetCharaIndex) + "]",20,TOSTR(index) + ":1",1,afterWearStatusFlag:index != 1,nowWearStatusFlag:index == 1)
			IF GET_CHARA_CLOTH_FRONTLOCK(index,targetCharaIndex) != 0
				CALL CREATE_FLATTED_BUTTON("[" + GET_TOFRONTLOCK_CHANGE_MESSAGE(index,targetCharaIndex) + "]",20,TOSTR(index) + ":2",1,afterWearStatusFlag:index != 2,nowWearStatusFlag:index == 2)
			ELSE
				PRINTPLAINFORM %" "*20%
			ENDIF
			CALL CREATE_FLATTED_BUTTON("[" + GET_TOUNWEAR_MESSAGE(index,targetCharaIndex) + "]",20,TOSTR(index) + ":0",1,afterWearStatusFlag:index != 0,nowWearStatusFlag:index == 0)
		ENDIF
		PRINTL
	NEXT
	PRINTPLAIN
	CALL CREATE_FLATTED_BUTTON("[W:전부 입힌다]",20,"ALL:1",1)
	PRINTPLAIN
	CALL CREATE_FLATTED_BUTTON("[E:반라로 한다]",20,"ALL:2",1)
	PRINTPLAIN
	CALL CREATE_FLATTED_BUTTON("[R:전부 벗긴다]",20,"ALL:0",1)
	PRINTL
	PRINTL
	PRINTPLAIN
	CALL CREATE_FLATTED_BUTTON("[Q:취소]",20,"CANCEL",1)
	PRINTPLAIN
	CALL CREATE_FLATTED_BUTTON("[Z:결정]",20,"OK",1)
	PRINTL
	INPUTS
	SELECTCASE RESULTS
		CASE "OK","Z","z"
			BREAK
		CASE "CANCEL","Q","q"
			RETURN
		CASE "ALL:0","ALL:1","ALL:2","W","E","R","w","e","r"
			SIF STRLENS(RESULTS) == 1
				RESULTS = ALL:{STRFIND("RrWwEe",RESULTS) / 2}
			REPEAT WEARING_POSITION_COUNT
				SIF TOINT(GET_BETWEEN_STRING(RESULTS,":",1)) == 2 && GET_CHARA_CLOTH_FRONTLOCK(COUNT,targetCharaIndex) == 0
					CONTINUE
				afterWearStatusFlag:COUNT = TOINT(GET_BETWEEN_STRING(RESULTS,":",1))
			REND
		CASEELSE
			IF ISNUMERIC(GET_BETWEEN_STRING(RESULTS,":",0)) && INRANGE(TOINT(GET_BETWEEN_STRING(RESULTS,":",0)),0,7)
				index = TOINT(GET_BETWEEN_STRING(RESULTS,":",0))
				IF ISNUMERIC(GET_BETWEEN_STRING(RESULTS,":",1))
					afterWearStatusFlag:index = TOINT(GET_BETWEEN_STRING(RESULTS,":",1))
				ELSE
					afterWearStatusFlag:index++
					SIF afterWearStatusFlag:index == 2 && GET_CHARA_CLOTH_FRONTLOCK(index,targetCharaIndex) == 0
						afterWearStatusFlag:index++
					afterWearStatusFlag:index %= 3
				ENDIF
				onePiecePair = GET_ONEPIECE_PAIR(index,CFLAG:targetCharaIndex:(40+index))
				SIF GROUPMATCH(index,3,5) > 0 && onePiecePair > 0 && (afterWearStatusFlag:index != 2 || GET_CHARA_CLOTH_FRONTLOCK(SWITCH_CLOTH_POSITION(index),targetCharaIndex) != 0)
					afterWearStatusFlag:SWITCH_CLOTH_POSITION(index) = afterWearStatusFlag:index

			ENDIF
	ENDSELECT
	CLEARLINE LINECOUNT - lines
WEND
statusText = %CLOTHES_GET_CHARA_WEARING_TOTALSTATUS(afterWearStatusFlag,targetCharaIndex)%
IF IS_CHARA_OVERWEAR_UNDERCOAT_STATUS(afterWearStatusFlag,targetCharaIndex) && IS_CHARA_UNDERWEAR_STATUS(afterWearStatusFlag,targetCharaIndex) && IS_CHARA_NOOVERWEAR_UNDERCOAT_STATUS(nowWearStatusFlag,targetCharaIndex) && IS_CHARA_NOUNDERWEAR_STATUS(nowWearStatusFlag,targetCharaIndex)
	PRINTFORML %GET_WEAR_TEXT(-1,afterWearStatusFlag:6,targetCharaIndex)%
	FOR index,2,6
		CALL SET_WEAR(index,,targetCharaIndex)
		SIF CLOTH_STATUS:index == 2
			CLOTH_STATUS:index = 0
	NEXT
	CALL WEAR_SP_POSITIONS_STATUS_SET(afterWearStatusFlag,targetCharaIndex)
ELSEIF IS_CHARA_OVERWEAR_UNDERCOAT_STATUS(afterWearStatusFlag,targetCharaIndex) && IS_CHARA_UNDERWEAR_STATUS(afterWearStatusFlag,targetCharaIndex) && IS_CHARA_OVERWEAR_UNDERCOAT_STATUS(nowWearStatusFlag,targetCharaIndex) && IS_CHARA_NOUNDERWEAR_STATUS(nowWearStatusFlag,targetCharaIndex)
	PRINTFORML %GET_WEAR_TEXT(-2,afterWearStatusFlag:6,targetCharaIndex)%
	FOR index,2,4
		CALL SET_WEAR(index,,targetCharaIndex)
		SIF CLOTH_STATUS:index == 2
			CLOTH_STATUS:index = 0
	NEXT
	FOR index,4,6
		SIF afterWearStatusFlag:index == 2
			CLOTH_STATUS:index = 2
	NEXT
	CALL WEAR_SP_POSITIONS_STATUS_SET(afterWearStatusFlag,targetCharaIndex)
ELSEIF IS_CHARA_OVERWEAR_UNDERCOAT_STATUS(afterWearStatusFlag,targetCharaIndex) && IS_CHARA_UNDERWEAR_STATUS(afterWearStatusFlag,targetCharaIndex) && IS_CHARA_NOOVERWEAR_UNDERCOAT_STATUS(nowWearStatusFlag,targetCharaIndex) && IS_CHARA_UNDERWEAR_STATUS(nowWearStatusFlag,targetCharaIndex)
	PRINTFORML %GET_WEAR_TEXT(-3,afterWearStatusFlag:6,targetCharaIndex)%
	FOR index,2,4
		SIF afterWearStatusFlag:index == 2
			CLOTH_STATUS:index = 2
	NEXT
	FOR index,4,6
		CALL SET_WEAR(index,,targetCharaIndex)
		SIF CLOTH_STATUS:index == 2
			CLOTH_STATUS:index = 0
	NEXT
	CALL WEAR_SP_POSITIONS_STATUS_SET(afterWearStatusFlag,targetCharaIndex)
ELSEIF IS_CHARA_NOOVERWEAR_UNDERCOAT_STATUS(afterWearStatusFlag,targetCharaIndex) && IS_CHARA_NOUNDERWEAR_STATUS(afterWearStatusFlag,targetCharaIndex) && IS_CHARA_OVERWEAR_UNDERCOAT_STATUS(nowWearStatusFlag,targetCharaIndex) && IS_CHARA_UNDERWEAR_STATUS(nowWearStatusFlag,targetCharaIndex)
	FOR index,2,6
		CALL RELEASE_WEAR(index,targetCharaIndex)
		SIF CLOTH_STATUS:index == 2
			CLOTH_STATUS:index = 0
	NEXT
	CALL WEAR_SP_POSITIONS_STATUS_SET(afterWearStatusFlag,targetCharaIndex)
	PRINTFORML %GET_UNWEAR_TEXT(-1,afterWearStatusFlag:6,targetCharaIndex)%
ELSEIF IS_CHARA_OVERWEAR_UNDERCOAT_STATUS(afterWearStatusFlag,targetCharaIndex) && IS_CHARA_NOUNDERWEAR_STATUS(afterWearStatusFlag,targetCharaIndex) && IS_CHARA_OVERWEAR_UNDERCOAT_STATUS(nowWearStatusFlag,targetCharaIndex) && IS_CHARA_UNDERWEAR_STATUS(nowWearStatusFlag,targetCharaIndex)
	FOR index,2,4
		CALL RELEASE_WEAR(index,targetCharaIndex)
		SIF CLOTH_STATUS:index == 2
			CLOTH_STATUS:index = 0
	NEXT
	FOR index,4,6
		SIF afterWearStatusFlag:index == 2
			CLOTH_STATUS:index = 2
	NEXT
	CALL WEAR_SP_POSITIONS_STATUS_SET(afterWearStatusFlag,targetCharaIndex)
	PRINTFORML %GET_UNWEAR_TEXT(-2,afterWearStatusFlag:6,targetCharaIndex)%
ELSEIF IS_CHARA_NOOVERWEAR_UNDERCOAT_STATUS(afterWearStatusFlag,targetCharaIndex) && IS_CHARA_UNDERWEAR_STATUS(afterWearStatusFlag,targetCharaIndex) && IS_CHARA_OVERWEAR_UNDERCOAT_STATUS(nowWearStatusFlag,targetCharaIndex) && IS_CHARA_UNDERWEAR_STATUS(nowWearStatusFlag,targetCharaIndex)
	FOR index,2,4
		SIF afterWearStatusFlag:index == 2
			CLOTH_STATUS:index = 2
	NEXT
	FOR index,4,6
		CALL RELEASE_WEAR(index,targetCharaIndex)
		SIF CLOTH_STATUS:index == 2
			 CLOTH_STATUS:index = 0
	NEXT
	CALL WEAR_SP_POSITIONS_STATUS_SET(afterWearStatusFlag,targetCharaIndex)
	PRINTFORML %GET_UNWEAR_TEXT(-3,afterWearStatusFlag:6,targetCharaIndex)%
ELSE
	FOR index,WEARING_POSITION_COUNT - 1,-1,-1
		SIF GET_CHARA_WEARING_CLOTH(index,targetCharaIndex) == 0
			CONTINUE
		SELECTCASE nowWearStatusFlag:index * 4 + afterWearStatusFlag:index
			CASE 0,5,10,15
				;前後変更なし。아무것도안한다
			CASE 1,2,9
				;着せる系の操作なので아무것도안한다
			CASE 3,7,11,12,13,14
				THROW 설정되지 않은 조작입니다。 : {COUNT},{nowWearStatusFlag:COUNT},{afterWearStatusFlag:COUNT}
			CASE 4 ;ちゃんと着ている服を脱がす
				PRINTFORML %GET_UNWEAR_TEXT(index,afterWearStatusFlag:6,targetCharaIndex)%
				CALL RELEASE_WEAR(index,targetCharaIndex)
				SIF CLOTH_STATUS:index == 2
					 CLOTH_STATUS:index = 0
			CASE 6 ;着ていたものを半脱ぎにする
				PRINTFORML %GET_FRONTLOCK_CHANGE_TEXT(index,targetCharaIndex)%
				CLOTH_STATUS:index = 2
			CASE 8 ;半脱ぎの服を脱がす
				PRINTFORML %GET_UNWEAR_TEXT(index,afterWearStatusFlag:6,targetCharaIndex)%
				CALL RELEASE_WEAR(index,targetCharaIndex)
				SIF CLOTH_STATUS:index == 2
					 CLOTH_STATUS:index = 0
			CASEELSE
				THROW 설정되지 않은 조작입니다。 : {COUNT},{nowWearStatusFlag:COUNT},{afterWearStatusFlag:COUNT}
		ENDSELECT
	NEXT
	FOR index,0,WEARING_POSITION_COUNT
		SIF GET_CHARA_WEARING_CLOTH(index,targetCharaIndex) == 0
			CONTINUE
		SELECTCASE nowWearStatusFlag:index * 4 + afterWearStatusFlag:index
			CASE 0,5,10,15
				;前後変更なし。아무것도안한다
			CASE 4,6,8
				;脱がす系の操作なので아무것도안한다
			CASE 3,7,11,12,13,14
				THROW 설정되지 않은 조작입니다。 : {COUNT},{nowWearStatusFlag:COUNT},{afterWearStatusFlag:COUNT}
			CASE 1 ;脱いでいる服をちゃんと着せる
				SIF CLOTH_STATUS:index == 2
					 CLOTH_STATUS:index = 0
				CALL SET_WEAR(index,,targetCharaIndex)
				PRINTFORML %GET_WEAR_TEXT(index,afterWearStatusFlag:6,targetCharaIndex)%
			CASE 2 ;脱いでいる服を半脱ぎで着せる
				CALL SET_WEAR(index,,targetCharaIndex)
				CLOTH_STATUS:index = 2
				PRINTFORML %GET_WEAR_TEXT(index,afterWearStatusFlag:6,targetCharaIndex)%
				;PRINTFORMW %CALLNAME:targetCharaIndex%に%GET_CHARA_WEAR_NAME(index,targetCharaIndex)%を%GET_WEARING_MESSAGE(index,CFLAG:targetCharaIndex:(40+index))%せて、%GET_FRONTLOCK_CHANGE_MESSAGE(index,CFLAG:targetCharaIndex:(40+index))%せた。
			CASE 9 ;半脱ぎの服をちゃんと着せる
				PRINTFORML %GET_FRONTLOCK_CHANGE_TEXT(index,targetCharaIndex)%
				SIF CLOTH_STATUS:index == 2
					 CLOTH_STATUS:index = 0
			CASEELSE
				THROW 설정되지 않은 조작입니다。 : {index},{nowWearStatusFlag:index},{afterWearStatusFlag:index}
		ENDSELECT
	NEXT
ENDIF
PRINTFORMW %타겟호칭은%【%statusText%】%조사만처리(statusText,"가")% 되었습니다。
RETURN

;さしあたり、上下半身특수と전신 겉옷専用で組む。他にも必要になったら汎用化
@WEAR_SP_POSITIONS_STATUS_SET(wearStatusMap,targetChara = -1)
#DIM index
#DIM REF wearStatusMap
#DIM targetChara
#DIM targetPositionList = 0,1,6
SIF targetChara == -1
	targetChara = TARGET
FOR index,0,VARSIZE("targetPositionList")
	SELECTCASE wearStatusMap:(targetPositionList:index)
		CASE 2
			SIF CLOTH_STATUS:(targetPositionList:index) == 2
				 CLOTH_STATUS:(targetPositionList:index) ^= 2
		CASE 1
			SIF CLOTH_STATUS:(targetPositionList:index) == 2
				 CLOTH_STATUS:(targetPositionList:index) = 0
			CALL SET_WEAR((targetPositionList:index),,targetChara)
		CASE 0
			SIF CLOTH_STATUS:(targetPositionList:index) == 2
				 CLOTH_STATUS:(targetPositionList:index) = 0
			CALL RELEASE_WEAR((targetPositionList:index),targetChara)
	ENDSELECT
NEXT

@CLOTHES_GET_NOW_STATUS_MAP(wearStatusMap,targetChara = -1)
#FUNCTION
#DIM targetChara
#DIM REF wearStatusMap
SIF targetChara == -1
	targetChara = TARGET
REPEAT WEARING_POSITION_COUNT
	wearStatusMap:COUNT = CLOTHES_GET_NOW_STATUS(COUNT,targetChara)
REND
RETURNF 1

@CLOTHES_GET_NOW_STATUS(wearPosition,targetChara = -1)
#FUNCTION
#DIM wearPosition
#DIM targetChara
SIF targetChara == -1
	targetChara = TARGET
SELECTCASE 1
	CASE IS_WEARING(wearPosition,targetChara) && CLOTH_STATUS:wearPosition == 2
		RETURNF 2
	CASE IS_WEARING(wearPosition,targetChara)
		RETURNF 1
	CASEELSE
		RETURNF 0
ENDSELECT

@GET_TOWEAR_MESSAGE(clothPosition,targetCharaIndex = -1)
#FUNCTIONS
#DIM clothPosition
#DIM targetCharaIndex
#DIM DYNAMIC nowWearingMap,WEARING_POSITION_COUNT
#DIM backupStatus
#DIM ret
#DIMS answer
SIF targetCharaIndex == -1
	targetCharaIndex = TARGET
ret = CLOTHES_GET_NOW_STATUS_MAP(nowWearingMap,targetCharaIndex)
SELECTCASE nowWearingMap:clothPosition
	CASE 2
		answer = %GET_FRONTLOCK_CHANGE_MESSAGE(clothPosition,CFLAG:targetCharaIndex:(40+clothPosition))%せる
	CASE 1
		answer = 착용중
	CASE 0
		answer = %GET_WEARING_MESSAGE(clothPosition,CFLAG:targetCharaIndex:(40+clothPosition))%せる
	CASEELSE
		THROW 부정한 STATUS입니다。 : {nowWearingMap:clothPosition}
ENDSELECT
RETURNF answer

@GET_TOFRONTLOCK_CHANGE_MESSAGE(clothPosition,targetCharaIndex = -1)
#FUNCTIONS
#DIM clothPosition
#DIM targetCharaIndex
#DIM DYNAMIC nowWearingMap,WEARING_POSITION_COUNT
#DIM ret
#DIMS answer
SIF targetCharaIndex == -1
	targetCharaIndex = TARGET
SIF GROUPMATCH(CLOTH_STATUS:clothPosition,0,2) == 0
	THROW CLOTH:STATUS가 부정합니다。 : {clothPosition}:{CLOTH_STATUS:clothPosition}
ret = CLOTHES_GET_NOW_STATUS_MAP(nowWearingMap,targetCharaIndex)
SELECTCASE nowWearingMap:clothPosition
	CASE 2
		answer = 반라
	CASE 1
		answer = %GET_FRONTLOCK_CHANGE_MESSAGE(clothPosition,CFLAG:targetCharaIndex:(40+clothPosition))%せる
	CASE 0
		;正しいmessageを取るため、一時的に逆転
		CLOTH_STATUS:clothPosition ^= 2
		answer = %GET_WEARING_MESSAGE(clothPosition,CFLAG:targetCharaIndex:(40+clothPosition))%せる
		;戻す。
		CLOTH_STATUS:clothPosition ^= 2
	CASEELSE
		THROW 부정한 STATUS입니다。 : {nowWearingMap:clothPosition}
ENDSELECT
RETURNF answer

@GET_TOUNWEAR_MESSAGE(clothPosition,targetCharaIndex = -1)
#FUNCTIONS
#DIM clothPosition
#DIM targetCharaIndex
#DIM DYNAMIC nowWearingMap,WEARING_POSITION_COUNT
#DIM ret
#DIMS answer
SIF targetCharaIndex == -1
	targetCharaIndex = TARGET
ret = CLOTHES_GET_NOW_STATUS_MAP(nowWearingMap,targetCharaIndex)
SELECTCASE nowWearingMap:clothPosition
	CASE 2
		answer = %GET_UNWEARING_MESSAGE(clothPosition,CFLAG:targetCharaIndex:(40+clothPosition))%せる
	CASE 1
		answer = %GET_UNWEARING_MESSAGE(clothPosition,CFLAG:targetCharaIndex:(40+clothPosition))%せる
	CASE 0
		answer = 탈의중
	CASEELSE
		THROW 부정한 STATUS입니다。 : {nowWearingMap:clothPosition}
ENDSELECT
RETURNF answer

@CLOTHES_GET_CHARA_WEARING_TOTAL(targetChara = -1)
#FUNCTIONS
#DIM targetChara
#DIM DYNAMIC nowWearingMap,WEARING_POSITION_COUNT
#DIM ret
SIF targetChara == -1
	targetChara = TARGET
ret = CLOTHES_GET_NOW_STATUS_MAP(nowWearingMap,targetChara)
RETURNF CLOTHES_GET_CHARA_WEARING_TOTALSTATUS(nowWearingMap,targetChara)

@CLOTHES_GET_CHARA_WEARING_TOTALSTATUS(wearStatusMap,targetChara = -1)
#FUNCTIONS
#DIM targetChara
#DIM REF wearStatusMap
#DIM topIndex
#DIM bottomIndex
#DIMS prefixText
SIF targetChara == -1
	targetChara = TARGET
IF IS_CHARA_OVERWEAR_STATUS(wearStatusMap,targetChara) || IS_CHARA_UNDERWEAR_STATUS(wearStatusMap,targetChara)
	topIndex = (IS_CHARA_OVERWEAR_STATUS(wearStatusMap,targetChara) ? 5 # 3)
	bottomIndex = (IS_CHARA_OVERWEAR_STATUS(wearStatusMap,targetChara) ? 4 # 2)
	SELECTCASE 1
		CASE wearStatusMap:bottomIndex != 2 && wearStatusMap:topIndex != 2
			prefixText =
		CASE wearStatusMap:topIndex != 2
			prefixText = 슬쩍내린
		CASE wearStatusMap:bottomIndex != 2
			prefixText = 벌어진
		CASEELSE
			prefixText = 벗기직전
	ENDSELECT
ENDIF
SELECTCASE 1
	CASE IS_WEARING_STATUS(6,wearStatusMap,targetChara) && IS_CHARA_CLOTH_LONGWEAR(6,targetChara) && !IS_CHARA_TOP_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara) && !IS_CHARA_BOTTOM_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara) && IS_CHARA_NOUNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF GET_CHARA_WEAR_NAME(6,targetChara) + "하반신노출"
	CASE IS_WEARING_STATUS(6,wearStatusMap,targetChara) && IS_CHARA_CLOTH_LONGWEAR(6,targetChara) && !IS_CHARA_TOP_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara) && !IS_CHARA_BOTTOM_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara)
		RETURNF GET_CHARA_WEAR_NAME(6,targetChara) + "하반신속옷"
	CASE IS_WEARING_STATUS(6,wearStatusMap,targetChara) && IS_CHARA_CLOTH_LONGWEAR(6,targetChara)
		RETURNF GET_CHARA_WEAR_NAME(6,targetChara) + "차림"
	CASE IS_WEARING_STATUS(6,wearStatusMap,targetChara) && !IS_CHARA_TOP_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara) && !IS_CHARA_BOTTOM_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara) && IS_CHARA_NOUNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF "알몸" + GET_CHARA_WEAR_NAME(6,targetChara)
	CASE IS_WEARING_STATUS(6,wearStatusMap,targetChara) && !IS_CHARA_TOP_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara) && !IS_CHARA_BOTTOM_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara)
		RETURNF "속옷" + GET_CHARA_WEAR_NAME(6,targetChara)
	CASE IS_WEARING_STATUS(6,wearStatusMap,targetChara) && !IS_CHARA_TOP_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara) && !IS_CHARA_TOP_UNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF GET_CHARA_WEAR_NAME(6,targetChara) + "아래노출"
	CASE IS_WEARING_STATUS(6,wearStatusMap,targetChara) && !IS_CHARA_TOP_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara)
		RETURNF GET_CHARA_WEAR_NAME(6,targetChara) + "하반신속옷"
	CASE IS_CHARA_OVERWEAR_STATUS(wearStatusMap,targetChara) && IS_CHARA_UNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF prefixText + "옷 차림"
	CASE IS_CHARA_OVERWEAR_STATUS(wearStatusMap,targetChara) && IS_CHARA_NOUNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF prefixText + "노팬티 노브라"
	CASE IS_CHARA_OVERWEAR_STATUS(wearStatusMap,targetChara) && !IS_CHARA_TOP_UNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF prefixText + "노브라"
	CASE IS_CHARA_OVERWEAR_STATUS(wearStatusMap,targetChara) && !IS_CHARA_BOTTOM_UNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF prefixText + "노팬티"
	CASE IS_CHARA_NOOVERWEAR_STATUS(wearStatusMap,targetChara) && IS_CHARA_UNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF prefixText + "속옷 차림"
	CASE IS_CHARA_NOOVERWEAR_STATUS(wearStatusMap,targetChara) && IS_CHARA_NOUNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF "전라"
	CASE IS_CHARA_NOOVERWEAR_STATUS(wearStatusMap,targetChara) && !IS_CHARA_TOP_UNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF "팬티 바람"
	CASE IS_CHARA_NOOVERWEAR_STATUS(wearStatusMap,targetChara) && !IS_CHARA_BOTTOM_UNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF "브라 바람"
	CASE !IS_CHARA_TOP_OVERWEAR_STATUS(wearStatusMap,targetChara) && IS_CHARA_TOP_UNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF "상반신 속옷 차림"
	CASE !IS_CHARA_BOTTOM_OVERWEAR_STATUS(wearStatusMap,targetChara) && IS_CHARA_BOTTOM_UNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF "하반신 속옷 차림"
	CASE !IS_CHARA_TOP_OVERWEAR_STATUS(wearStatusMap,targetChara) && !IS_CHARA_TOP_UNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF "상반신 전라"
	CASE !IS_CHARA_BOTTOM_OVERWEAR_STATUS(wearStatusMap,targetChara) && !IS_CHARA_BOTTOM_UNDERWEAR_STATUS(wearStatusMap,targetChara)
		RETURNF "하반신 전라"
	CASEELSE
		THROW 착의상태가 부정합니다。
ENDSELECT

@GET_WEAR_TEXT(clothPosition,isKeepOverWear,targetChara = -1)
#FUNCTIONS
#DIM targetChara
#DIM clothPosition
#DIMS clothName
#DIMS actionName
#DIM isKeepOverWear
#DIMS DYNAMIC answer = ""
SIF targetChara == -1
	targetChara = TARGET
SELECTCASE clothPosition
	CASE -3 ;겉옷のみ
		clothName = %GET_CHARA_WEAR_NAME(5,targetChara,1)%
		actionName = 着
	CASE -2 ;下着のみ
		clothName = 下着
		actionName = 着けさ
	CASE -1 ;全体
		clothName = 服
		actionName = 着
	CASEELSE ;個別部位
		clothName = %GET_CHARA_WEAR_NAME(clothPosition,targetChara,1)%
		actionName = %GET_WEARING_MESSAGE(clothPosition,CFLAG:targetChara:(40+clothPosition))%
ENDSELECT
SIF isKeepOverWear
	answer = %answer%%GET_CHARA_WEAR_NAME(6,targetChara)%의 아래의
answer = %answer%%CALLNAME:targetChara%에게 %조사처리(clothName,"를")% %actionName%せた。
RETURNF answer

@GET_FRONTLOCK_CHANGE_TEXT(clothPosition,targetChara = -1)
#FUNCTIONS
#DIM targetChara
#DIM clothPosition
#DIMS clothName
#DIMS actionName
#DIMS DYNAMIC answer
SIF targetChara == -1
	targetChara = TARGET
SIF GROUPMATCH(CLOTH_STATUS:clothPosition,0,2) == 0
	THROW CLOTH:STATUS가 부정합니다。 : {clothPosition}:{CLOTH_STATUS:clothPosition}
IF clothPosition < 0
	THROW 반라 처리는 일괄 처리가 불가능 합니다。
ELSE
	clothName = %GET_CHARA_WEAR_NAME(clothPosition,targetChara,1)%
	actionName = %GET_FRONTLOCK_CHANGE_MESSAGE(clothPosition,CFLAG:targetChara:(40+clothPosition))%
ENDIF
answer = %CALLNAME:targetChara%에게 %clothName%의 %actionName%せ
;CHEST_DESCとVAGINA_DESCを正しく動かすため、一時的に逆転させる。
CLOTH_STATUS:clothPosition ^= 2
IF CLOTH_STATUS:clothPosition == 2
	SELECTCASE clothPosition
		CASE 6
			answer = %answer%て、%CHEST_DESC(targetChara,1)%と%VAGINA_DESC(targetChara,1)%を 노출시켰다。
		CASE 2,4
			answer = %answer%て、%VAGINA_DESC(targetChara,1)%を 노출시켰다。
		CASE 3,5
			answer = %answer%て、%CHEST_DESC(targetChara,1)%を 노출시켰다。
		CASEELSE
			answer = %answer%た。
	ENDSELECT
ELSE
	answer = %answer%た。
ENDIF
;戻す。実際の変更は後で。
CLOTH_STATUS:clothPosition ^= 2
RETURNF answer

@GET_UNWEAR_TEXT(clothPosition,isKeepOverWear,targetChara = -1)
#FUNCTIONS
#DIM targetChara
#DIM clothPosition
#DIMS clothName
#DIMS actionName
#DIMS DYNAMIC answer
#DIM isKeepOverWear
SIF targetChara == -1
	targetChara = TARGET
SELECTCASE clothPosition
	CASE -3 ;겉옷のみ
		clothName = %GET_CHARA_WEAR_NAME(5,targetChara,1)%
		actionName = 脱が
	CASE -2 ;下着のみ
		clothName = 下着
		actionName = 脱が
	CASE -1 ;全体
		clothName = 服
		actionName = 脱が
	CASEELSE
		clothName = %GET_CHARA_WEAR_NAME(clothPosition,targetChara)%
		actionName = %GET_UNWEARING_MESSAGE(clothPosition,CFLAG:targetChara:(40+clothPosition))%
ENDSELECT
IF TALENT:targetChara:강간 && !IS_FALLEN(targetChara)
	;これだけは後につけないので、そのまま返す
	RETURNF @"완강히 저항하는 %타겟호칭을% 억누르고、%조사처리(clothName,"를")% 억지로 벗겼다。"
ELSEIF IS_LOVING(targetChara)
	answer = 익숙한 모습의 %CALLNAME:targetChara%에게
ELSEIF IS_SEXMIND(targetChara)
	answer = 음란한 기대만으로 흥분하고 있는 %CALLNAME:targetChara%에게
ELSEIF IS_SURRENDER(targetChara)
	answer = %CALLNAME:MASTER%의 눈을 의식하는 %CALLNAME:targetChara%에게
ELSEIF IS_TENTACLE(targetChara)
	answer = 촉수에 대한 기대에 얼굴을 붉힌 %CALLNAME:targetChara%에게
ELSEIF TALENT:targetChara:교제
	answer = 부끄러움에 뺨을 붉힌 %CALLNAME:targetChara%에게
ELSEIF TALENT:targetChara:협박
	answer = 고개를 절레절레 흔드는 %CALLNAME:targetChara%에게、무리하게
ENDIF
SIF isKeepOverWear
	answer = %answer%%GET_CHARA_WEAR_NAME(6,targetChara)%의 아래의
answer = %answer%%조사처리(clothName,"를")%%actionName%せ%\@ clothPosition < 0 ? て、%CLOTHES_GET_CHARA_WEARING_TOTAL(targetChara)%にした。 # た。\@%
RETURNF answer

@IS_WEARING_STATUS(wearPosition,wearStatusMap,targetChara = -1)
#FUNCTION
#DIM wearPosition
#DIM targetChara
#DIM REF wearStatusMap ; 1;着衣 0:脱衣 2:半脱ぎ
SIF targetChara == -1
	targetChara = TARGET
SIF GET_CHARA_WEARING_CLOTH(wearPosition,targetChara) == 0
	RETURNF 0
;一旦半脱ぎは考慮しない
RETURNF wearStatusMap:wearPosition != 0

;下着を身につけている場合に1を返す
@IS_CHARA_UNDERWEAR_STATUS(wearStatusMap,targetChara = -1)
#FUNCTION
#DIM targetChara
#DIM REF wearStatusMap
SIF targetChara == -1
	targetChara = TARGET

RETURNF IS_CHARA_TOP_UNDERWEAR_STATUS(wearStatusMap,targetChara) && IS_CHARA_BOTTOM_UNDERWEAR_STATUS(wearStatusMap,targetChara)

;上下の下着を身につけていない場合に1を返す
@IS_CHARA_NOUNDERWEAR_STATUS(wearStatusMap,targetChara = -1)
#FUNCTION
#DIM targetChara
#DIM REF wearStatusMap
SIF targetChara == -1
	targetChara = TARGET
RETURNF !IS_CHARA_TOP_UNDERWEAR_STATUS(wearStatusMap,targetChara) && !IS_CHARA_BOTTOM_UNDERWEAR_STATUS(wearStatusMap,targetChara)

;상반신 속옷を身につけている場合に1を返す
@IS_CHARA_TOP_UNDERWEAR_STATUS(wearStatusMap,targetChara = -1)
#FUNCTION
#DIM targetChara
#DIM REF wearStatusMap
SIF targetChara == -1
	targetChara = TARGET
RETURNF IS_WEARING_STATUS(3,wearStatusMap,targetChara)

;하반신 속옷を身につけている場合に1を返す
@IS_CHARA_BOTTOM_UNDERWEAR_STATUS(wearStatusMap,targetChara = -1)
#FUNCTION
#DIM targetChara
#DIM REF wearStatusMap
SIF targetChara == -1
	targetChara = TARGET
RETURNF IS_WEARING_STATUS(2,wearStatusMap,targetChara)

;겉옷を着ている状態の場合に1を返す
@IS_CHARA_OVERWEAR_STATUS(wearStatusMap,targetChara = -1)
#FUNCTION
#DIM targetChara
#DIM REF wearStatusMap
SIF targetChara == -1
	targetChara = TARGET
RETURNF IS_CHARA_TOP_OVERWEAR_STATUS(wearStatusMap,targetChara) && IS_CHARA_BOTTOM_OVERWEAR_STATUS(wearStatusMap,targetChara)

;겉옷を着ていない状態の場合に1を返す
@IS_CHARA_NOOVERWEAR_STATUS(wearStatusMap,targetChara = -1)
#FUNCTION
#DIM targetChara
#DIM REF wearStatusMap
SIF targetChara == -1
	targetChara = TARGET
RETURNF !IS_CHARA_TOP_OVERWEAR_STATUS(wearStatusMap,targetChara) && !IS_CHARA_BOTTOM_OVERWEAR_STATUS(wearStatusMap,targetChara)

;겉옷を着ている状態の場合に1を返す
@IS_CHARA_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara = -1)
#FUNCTION
#DIM targetChara
#DIM REF wearStatusMap
SIF targetChara == -1
	targetChara = TARGET
RETURNF IS_CHARA_TOP_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara) && IS_CHARA_BOTTOM_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara)

;겉옷を着ていない状態の場合に1を返す
@IS_CHARA_NOOVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara = -1)
#FUNCTION
#DIM targetChara
#DIM REF wearStatusMap
SIF targetChara == -1
	targetChara = TARGET
RETURNF !IS_CHARA_TOP_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara) && !IS_CHARA_BOTTOM_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara)

;上半身が겉옷を着ている状態の場合に1を返す
@IS_CHARA_TOP_OVERWEAR_STATUS(wearStatusMap,targetChara = -1)
#FUNCTION
#DIM targetChara
#DIM REF wearStatusMap
SIF targetChara == -1
	targetChara = TARGET
RETURNF IS_CHARA_TOP_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara) || IS_WEARING_STATUS(6,wearStatusMap,targetChara) != 0

;下半身が겉옷を着ている状態の場合に1を返す
@IS_CHARA_BOTTOM_OVERWEAR_STATUS(wearStatusMap,targetChara = -1)
#FUNCTION
#DIM targetChara
#DIM REF wearStatusMap
SIF targetChara == -1
	targetChara = TARGET
RETURNF IS_CHARA_BOTTOM_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara) || (IS_WEARING_STATUS(6,wearStatusMap,targetChara) && IS_CHARA_CLOTH_LONGWEAR(6,targetChara))

;上半身が겉옷を着ている状態の場合に1を返す
@IS_CHARA_TOP_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara = -1)
#FUNCTION
#DIM targetChara
#DIM REF wearStatusMap
SIF targetChara == -1
	targetChara = TARGET
RETURNF IS_WEARING_STATUS(5,wearStatusMap,targetChara) || (IS_WEARING_STATUS(3,wearStatusMap,targetChara) && !IS_CHARA_CLOTH_AS_UNDERWEAR(3,targetChara))

;下半身が겉옷を着ている状態の場合に1を返す
@IS_CHARA_BOTTOM_OVERWEAR_UNDERCOAT_STATUS(wearStatusMap,targetChara = -1)
#FUNCTION
#DIM targetChara
#DIM REF wearStatusMap
SIF targetChara == -1
	targetChara = TARGET
RETURNF IS_WEARING_STATUS(4,wearStatusMap,targetChara) || (IS_WEARING_STATUS(2,wearStatusMap,targetChara) && !IS_CHARA_CLOTH_AS_UNDERWEAR(2,targetChara))

;上上	上下	下上	下下
;1	1	1	1	着衣			OK
;1	1	1	0	ノーパン		OK
;0	1	0	1	下着姿			OK
;0	1	0	0	ブラ姿			OK
;0	0	0	1	パンツ姿		OK
;0	0	0	0	전라			OK
;1	0	1	1	ノーブラ		OK
;1	0	1	0	ノーパンノーブラ	OK

;0	0	1	1	上半身전라
;0	0	1	0	上半身전라

;0	1	1	1	상반신 속옷姿
;0	1	1	0	상반신 속옷姿

;1	0	0	1	하반신 속옷姿		OK
;1	1	0	1	하반신 속옷姿		OK

;1	0	0	0	下半身전라
;1	1	0	0	下半身전라