[SKIPSTART] ◆衣装設定の仕様 ・基本的には記法を変えて可読性を上げただけ ・GET_INT/GET_STRを使用することで情報を取得することができる ・1つの衣装につき2関数を使用する(うち1つは存否関数) ・各衣装は衣装カテゴリ(≒EQUIPNAMEと似ているが少し変えた)ごとに管理する ・同じ衣装カテゴリのなかで同一名称の装備品は作れない  逆に言えば、違う衣装カテゴリであるならば名称は重複しても構わない  例)「頭装備」のリボンと「その他衣装」のリボン  ただし、「外衣」の白衣(はくい)と「上半身上着_はだけ不可」の白衣(はくえ、びゃくえ)の場合は  「同一表記で指し示すものが全く違う」ために上半身上着1の側を変更した(まぎらわしいよ) ・衣装カテゴリと装備部位は基本的に一対一の対応関係にある  たとえば「頭装備」はEQUIP:帽子にのみ装備可能  ただし、例外として「その他衣装」はEQUIP:その他1、EQUIP:その他2、EQUIP:その他3の全てに装備できる  この仕様は変えようと思えば変えられるけど@CLOTHES_IDや全衣装IDの再設定が必要になるはず(つまりめんどい) ・衣装の参照の際にはこのようにする  GET_INT(登録番号等, 衣装カテゴリ, 衣装のカテゴリ内ID, 参照したい情報の種類) ・特定の名前の衣装のIDを取得したい時はこのようにする  CLOTHES_ID(装備部位名, 装備名) ・装備部位から該当する衣装カテゴリを取得する時はこのようにする  CLOTHES_PARTS_TO_CATEGORY(装備部位名) ・以上の関数から、装備部位と装備名のみで(番号を使用せずに)装備を参照することができる  GET_INT(登録番号等, CLOTHES_PARTS_TO_CATEGORY(装備部位名), CLOTHES_ID(装備部位名, 装備名), 参照したい情報の種類)  まー、現在装備中の装備の参照ならCLOTHES_IDは不要なんで  GET_INT(登録番号等, CLOTHES_PARTS_TO_CATEGORY(装備部位名), EQUIP:登録番号:装備部位名, 参照したい情報の種類)  こうなる ・自分用の覚書  (下半身下着系はまた別)  おそらくこういう考え方でいいと思う  上半身上着1(はだけ不可)が外側、上半身上着2(はだけ可能)は内側に着用する衣装 ・衣装名取得関数@CLOTHNAME 各装備の設定から引っ張ってこられるようになったので大幅に簡略化 ・服装名取得関数(@SHOW_BOTTOM等) 単に最も上の装備の名前を返すように変更(簡略化)しています 名前とは別にしたいならSTR用で"描写"なりを全衣装で設定すれば簡単に参照できます ・着せ替え関連についても類似の仕様で実装した ・衣装セット関数群  この関数群は着せ替えセットの内容を記述する ・キャラデータ関数群  この関数群は各キャラの個別のデータを一元管理させる  普段着の設定は各キャラで独立しているためにここに記述した  また、アリスの衣装に存在していた年越し和装処理の実現のために  普段着の切替制御の機能も追加した  曜日によって切り替えるとかもやりたければできる  目指せ七色の魔法使い ・衣装設定について  きせかえによって「この服装を毎日着るように」という指定が可能  0   デフォルトのまま  1~99 COORDINATE1~99を指定  100  手動で設定する(CFLAG:600~630)  101~ 特定キャラの真似(特定キャラの普段着を参照する、101なら霊夢) ・パジャマ設定について  パジャマはそんなにこだわってもしかたねーなと思ったので  COORDINATE関数のなかからどれを着させるのかを選ぶ型式にした  ・パジャマ(襦袢)  ・パジャマ(ネグリジェ)  ・パジャマ(ベビードール)  ・パジャマ(ワンピース)  ・パジャマ(ズボン上下)  ・パジャマ(スカート上下)  ・パジャマ(ズボン+フード)  ・パジャマ(スカート+フード)  ただし、例外として"パンイチ"でパンツ一丁、"全裸"ではだかんぼで寝させることができる  (そういう処理が実装されてた娘がいたので) ◆個々の装備品まわりの変更 ・名称変更  ネグリジェ→ロングネグリジェ  画像検索の結果が過激過ぎるので名称変更  ベビードールとの差別化のためにおとなしめな衣装を想定する ・カテゴリ変更  「上半身上着_はだけ不可」の「白衣(はくえ、びゃくえ)」の名称を「白小袖」に変更  衣装セット系では「神官セット」のみが使用しており「保健室の女教師セット」でも「白衣の天使セット」でも使っていない  また、普段着使用キャラもいなかったので変更    さらに、この「白小袖」は内に着こむ衣装であることが考えられるため、  衣装カテゴリを「上半身上着_はだけ可能」に移動した ・追加衣装  頭装備「フード」、パジャマ用に新設  スレでの議論で出てきたアイデアを採用させてもらいました ・追加衣装  腕部装束「アームカバー」、パルスィ用に新設 ・追加衣装  上半身衣装_はだけ不可「水干」、布都ちゃん用に新設  巫女でもつかうところあるみたいね ・追加衣装  上半身衣装_はだけ不可「狩衣」  和っぽい方向を拡充したかった  白だととても神職っぽいですよ ・追加衣装  靴「沓」  神職やら貴族的な装束ということで「水干」「狩衣」とのセットを想定して追加 ・追加衣装  その他「ブローチ」  影狼ちゃんの首元のとても印象的なブローチが無かったので増設した  レティさんにも装備 ◆衣装カテゴリの名前について 仕様がややこしくなってしまうのは承知の上ですが なぜ一部の衣装カテゴリの名前をEQUIPNAMEと変えてあるかといえば それは以下の理由からです  理由1:関数名で@下半身下着12もしくは@下半身下着1_2とかやんのが余りにも気色悪すぎる  理由2:直感的でないEQUIPNAMEがある      ・リボンやカチューシャは「帽子」      ・下半身下着1と下半身下着2の区分の違いがわかりにくい(この番号もマジックナンバー)      ・とりあえず「はだけ可能・はだけ不可」「ずらし可能・ずらし不可」の名前にした      ・どうやらこの分類も不明確であるらしいが番号よりはましか?      ・とりあえず暫定の仕様です  理由3:EQUIPNAME側を弄ろうとすると修正箇所が膨大      追加部分だけ変えたほうがラク 以下、EQUIPNAMEと衣装カテゴリの対応 アクセサリ →アクセサリ  その他は違い、何らかの効果をもつことがある  傘は天候依存で行動時のBASE消費軽減に使われることがある 帽子 →頭装備  帽子だけでなくホワイトブリムやリボンなどといった頭部装飾品を指す 靴 →靴  室内では脱ぐ 靴下 →靴下  一部のキャラはコンフィグによって普段着の衣装がニーソになる 下半身下着1 →下半身下着_ずらし不可 下半身下着2 →下半身下着_ずらし可能  下半身下着(ずらし可能)  いわゆるパンツ(+ビキニの下半身だけ)  独特な処理が多いため、ほかの衣装とは別扱いで管理する 上半身下着1 →上半身下着_はだけ不可 上半身下着2 →上半身下着_はだけ可能 レオタード →レオタード ボディースーツ →ボディースーツ ズボン →ズボン  ずらし不可 下半身上着 →該当装備が少なすぎるので廃止、復活させたい場合はその他なりで追加して下さい スカート →スカート  めくれる下半身装備 上半身上着1 →上半身上着_はだけ不可 上半身上着2 →上半身上着_はだけ可能 ワンピース →ワンピース 着物 →着物 外衣 →外衣  衣服とは別に上から羽織ってる衣装 その他1、その他2、その他3 →1~3を全部まとめて「その他衣装」に統合 腕部装束 →腕部装束  主に手袋系 ◆パンツ 特殊な処理が多そうなので別で処理する ・CFLAG:きょうのパンツ  一日の最初にきょうのぱんつを設定してCFLAGで保持 ・CFLAG:パジャマパンツ  一日の最初にパジャマ用のパンツを設定してCFLAGで保持  パジャマに着替えた時にノーパンであればパジャマパンツを着用する  パジャマパンツを着用した時点でパジャマパンツに0が代入されるため  無限パジャマパンツは不可能です ◆プロパティについて 装備品系クラスのプロパティ CASE "名前" 名前、その衣装の名称(STR) 衣装カテゴリ内で重複させることはできない CALLF MAKE_STR(V_NAME, "眼鏡") CASE "装備部位" その衣装を装備するEQUIP(STR) CALLF MAKE_STR(V_NAME, "「アクセサリ」") CASE "着せ替え可能" パンツ限定、着せ替えコマンドで設定できるかどうか ビキニボトム、マイクロボトム限定 CALLF MAKE_INT(V_NAME, 1) つくったけど手動きせかえ機能が出来てないので実質未実装である CASE "はける" 今日のぱんつでの判定用(INT、というか真偽値1/0) この項目を作らないぱんつはキャラが自発的に履くことはない 衣装セットクラスのプロパティ CASE "名前" 名前、その衣装セットの名称(STR) 衣装セットクラス内で重複させることはできない CASE "各種装備部位" その装備部位に着せる衣装の内容(INT) 項目を作らなかった部位は0とみなされ何も着用しない CASE "基本衣装セット" CASE "パジャマセット" CASE "コスプレ衣装セット" CASE "キャラ特殊衣装セット" これらは全て衣装セットの種類を表す(INT) まー、現状でそれっぽくやっただけです 1にするとその属性の衣装セットだとみなされる リスト表示用の設定です キャラデータクラスのプロパティ CASE "呼び名" 必須、STR 呼び名、そのキャラの名称 キャラデータクラス内で重複させることはできない CASE "今日のパジャマ" 必須、STR 着用するパジャマの種類を記述する パジャマの種類の判定としては 1.まず、例外を処理する(こいしを参照) "パンイチ"を指定した場合、パジャマは着用せずに下着のみを着用する "全裸"を指定した場合、服は何も着ない 2.次に、STRをもとに衣装セットを参照する 一致する衣装セットが存在する場合はその衣装セットを着用する ワイシャツだけとかも可能(パンツの有無は別個で指定のこと) 3.最後に、STRをもとにキャラデータを参照する STR == "普段着"ならそのキャラの普段着が参照される CASE "普段着:各種装備部位" 必須、INT 普段着の衣装設定 その装備部位に着せる衣装の内容 項目を作らなかった部位は0とみなされ何も着用しない 「普段着」以外の衣装のキャラ別指定も可能 例)"年越し:各種装備部位"で年越し用の衣装セットを作成できる ただし、この場合は"今日の衣装", "明日の衣装"を設定する必要がある CASE "今日の衣装", "明日の衣装" 省略可、STR 普段着以外の衣装を設定しない場合には必要ない 特定条件に合わせて衣装を変更させたい時に使用する SIF (DAY:2 == 1 && DAY:3 == 1) || (DAY:2 == 4 && DAY:3 == 31) CALLF MAKE_STR(V_NAME, "年越し") このように記述すると条件に合致する時に「年越し」の衣装を着用する(アリスの処理を参照) "今日の衣装", "明日の衣装"の何が違うかというと 衣装の更新処理はMASTERが起床した際に行うので その時点で睡眠中(=パジャマ姿)なら明日の衣装を設定し その時点で活動中なら現在着用中の普段着を設定することになる 注)機能追加 STRで衣装セットに存在する名前を返した際にはその衣装をセットする機能を追加 衣装指定用の文字列として"推奨", "固定"は使用不可能(別の機能で使用中) CASE "推奨:各種装備部位", "固定:各種装備部位" みじっそう やろうと思えばできる、作ろうか迷ってる 省略可、INT キャラごとの「これは外しちゃダメだろ」という装備用の処理 指定した部位の装備を推奨・強要する Emueraのconfigにおけるdefault/fixみたいなもん この情報は着せ替え関連処理の最後に適用される 例)華扇 ・シニヨンキャップは「推奨」 ・包帯と拘束具は「固定」 推奨を指定した場合、その部位に装備しているものが何もなければ装備を行う 固定を指定した場合、その部位の装備を上書きする ハダカになる時は EQUIP:0 = 0した上で固定装備だけ着用する [SKIPEND] ;EQUIP:X:ARGに装備した ;ARG:1の衣装の名前を返す ;Custom code, ARG:2 capitalizes it @CLOTHNAME(ARG,ARG:1,ARG:2 = 0) #FUNCTIONS ;Custom code, translate RETURNF CLOTHES_TR(GET_STR(, CLOTHES_PARTS_TO_CATEGORY(EQUIPNAME:(ARG:0)), ARG:1, "名前"),ARG:2) ;装備部位から該当する衣装カテゴリを返す @CLOTHES_PARTS_TO_CATEGORY(ARGS) #FUNCTIONS SELECTCASE ARGS [SKIPSTART] ;衣装の統合化 ;途中まで考えたがめんどくてやめた CASE "下半身下着2" RETURNF "パンツ" CASE "着物", "レオタード", "ボディースーツ", "ワンピース" RETURNF "全身衣装" CASE "帽子", "外衣", "腕部装束", "上半身上着1", "上半身上着2", "上半身下着1", "上半身下着2" RETURNF "上半身衣装" CASE "スカート", "ズボン", "靴", "靴下", "下半身下着1" RETURNF "下半身衣装" CASE "アクセサリ", "その他1", "その他2", "その他3" RETURNF "その他衣装" [SKIPEND] CASE "アクセサリ", "靴", "靴下", "レオタード", "ボディースーツ", "ズボン", "スカート", "ワンピース", "着物", "外衣", "腕部装束" RETURNF ARGS CASE "帽子" RETURNF "頭装備" CASE "下半身下着1" RETURNF "下半身下着_ずらし不可" CASE "下半身下着2" RETURNF "下半身下着_ずらし可能" CASE "上半身下着1" RETURNF "上半身下着_はだけ不可" CASE "上半身下着2" RETURNF "上半身下着_はだけ可能" CASE "上半身上着1" RETURNF "上半身上着_はだけ不可" CASE "上半身上着2" RETURNF "上半身上着_はだけ可能" CASE "その他1", "その他2", "その他3" RETURNF "その他衣装" ENDSELECT THROW 不明な部位%ARGS% ;装備部位と衣装名から各衣装のカテゴリ内IDを返す @CLOTHES_ID(PARTS, C_NAME) #FUNCTION #DIMS PARTS #DIMS C_NAME #DIM C_ID C_ID = OBJNAME_TO_ID(, "GET", CLOTHES_PARTS_TO_CATEGORY(PARTS), C_NAME) SIF C_ID == -1 THROW %C_NAME% doesn't exist in %CLOTHES_PARTS_TO_CATEGORY(PARTS)%. RETURNF C_ID ;------------------------------------------------- ;関数名:SHOW_BOTTOM ;概 要:下半身服装名取得関数 ;戻り値:服装名(文字列) ;引数:0 参照するキャラ番号 ;引数:1スカート、2ずらし可、3ずらし不可、4下半身上着ずらし不可の種別(省略した場合は最も露出を妨げているもの) ;備 考:文中関数 ;TEQUIP:0に対応して一番上に着ている衣装の種類を返す ; ;引数:1に複数のビットを指定すればその中から優先されるものを表示させることができる ;引数:1が9ならスカートと下半身上着ずらし不可のどちらか着ているものを表示、など ;COUNTER_MESSAGE.ERB内の@DATUI_MESSAGEが使用例になってるのでピンとこない人は見てね ;------------------------------------------------- @SHOW_BOTTOM(ARG, ARG:1) #FUNCTIONS #DIMS CONST TYPE, 5 = "", "スカート", "ずらし可", "ずらし不可", "下半身上着ずらし不可" #DIMS PARTS #DIM EQUIP_TARGET ;引数1とTEQUIP:0を照らし合わせて表示するものを選ぶ IF ARG:1 EQUIP_TARGET = ARG:1 & TEQUIP:ARG:0 ELSE EQUIP_TARGET = TEQUIP:ARG:0 ENDIF IF EQUIP_TARGET & 8 LOCAL = 4 ;4下半身服装描写_下半身上着ずらし不可 ELSEIF EQUIP_TARGET & 4 ;3下半身服装描写_ずらし不可 LOCAL = 3 ELSEIF EQUIP_TARGET & 2 ;2下半身服装描写_ずらし可 LOCAL = 2 ELSEIF EQUIP_TARGET & 1 ;1下半身服装描写_スカート LOCAL = 1 ELSE LOCAL = 0 ENDIF PARTS '= COVER_CLOTHES(ARG, @"下半身服装描写_%TYPE:LOCAL%") SIF STRLENS(PARTS) ;Custom code, translation RETURNF CLOTHES_TR(GET_STR(ARG, CLOTHES_PARTS_TO_CATEGORY(PARTS), EQUIP:ARG:PARTS, "名前")) ;------------------------------------------------- ;関数名:SHOW_下半身下着 ;概 要:下半身下着名取得関数 ;戻り値:下着名(文字列) ;引数:0 参照するキャラ番号 ;引数:1スカート、2ずらし可、3ずらし不可、4下半身上着ずらし不可の種別(省略した場合は最も露出を妨げているもの) ;備 考:文中関数 ;TEQUIP:0に対応して一番上に着ている衣装の種類を返す ; ;引数:1に複数のビットを指定すればその中から優先されるものを表示させることができる ;引数:1が9ならスカートと下半身上着ずらし不可のどちらか着ているものを表示、など ;COUNTER_MESSAGE.ERB内の@DATUI_MESSAGEが使用例になってるのでピンとこない人は見てね ;------------------------------------------------- @SHOW_下半身下着(ARG, ARG:1) #FUNCTIONS #DIMS CONST TYPE, 5 = "", "スカート", "ずらし可", "ずらし不可", "下半身上着ずらし不可" #DIMS PARTS #DIM EQUIP_TARGET ;引数1とTEQUIP:0を照らし合わせて表示するものを選ぶ IF ARG:1 EQUIP_TARGET = ARG:1 & TEQUIP:ARG:0 ELSE EQUIP_TARGET = TEQUIP:ARG:0 ENDIF IF EQUIP_TARGET & 8 LOCAL = 4 ;4下半身服装描写_下半身上着ずらし不可 ELSEIF EQUIP_TARGET & 4 ;3下半身服装描写_ずらし不可 LOCAL = 3 ELSEIF EQUIP_TARGET & 2 ;2下半身服装描写_ずらし可 LOCAL = 2 ELSEIF EQUIP_TARGET & 1 ;1下半身服装描写_スカート LOCAL = 1 ELSE LOCAL = 0 ENDIF PARTS '= COVER_CLOTHES(ARG, @"下半身下着描写_%TYPE:LOCAL%") SIF STRLENS(PARTS) RETURNF CLOTHES_TR(GET_STR(ARG, CLOTHES_PARTS_TO_CATEGORY(PARTS), EQUIP:ARG:PARTS, "名前")) ;------------------------------------------------- ;関数名:SHOW_TOP ;概 要:上半身服装名取得関数 ;戻り値:服装名(文字列) ;引数:0 参照するキャラ番号 ;引数:1はだけ可、2はだけ不可(省略した場合は最も露出を妨げているもの) ;備 考:文中関数 ;TEQUIP:1に対応して一番上に着ている衣装の種類を返す ;------------------------------------------------- @SHOW_TOP(ARG, ARG:1) #FUNCTIONS #DIMS CONST TYPE, 3 = "", "はだけ可", "はだけ不可" #DIMS PARTS IF ARG:1 LOCAL = ARG:1 ELSEIF TEQUIP:ARG:1 & 2 LOCAL = 2 ELSEIF TEQUIP:ARG:1 & 1 LOCAL = 1 ENDIF PARTS '= COVER_CLOTHES(ARG, @"上半身服装描写_%TYPE:LOCAL%") SIF STRLENS(PARTS) ;Custom code, translation RETURNF CLOTHES_TR(GET_STR(ARG, CLOTHES_PARTS_TO_CATEGORY(PARTS), EQUIP:ARG:PARTS, "名前")) ;------------------------------------------------- ;関数名:SHOW_上半身下着 ;概 要:上半身下着名取得関数 ;戻り値:上半身下着名(文字列) ;引数:0 参照するキャラ番号 ;引数:1はだけ可、2はだけ不可(省略した場合は最も露出を妨げているもの) ;備 考:文中関数 ;TEQUIP:1に対応して一番上に着ている衣装の種類を返す ;------------------------------------------------- @SHOW_上半身下着(ARG, ARG:1) #FUNCTIONS #DIMS CONST TYPE, 3 = "", "はだけ可", "はだけ不可" #DIMS PARTS LOCAL = 0 IF ARG:1 LOCAL = ARG:1 ELSEIF TEQUIP:ARG:1 & 2 LOCAL = 2 ELSEIF TEQUIP:ARG:1 & 1 LOCAL = 1 ENDIF PARTS '= COVER_CLOTHES(ARG, @"上半身下着描写_%TYPE:LOCAL%") SIF STRLENS(PARTS) ;Custom code, translating RETURNF CLOTHES_TR(GET_STR(ARG, CLOTHES_PARTS_TO_CATEGORY(PARTS), EQUIP:ARG:PARTS, "名前")) ;最も露出を妨げている衣装の装備部位を返す ;@SHOW_装備系の判定が煩わしかったので簡略化用に @COVER_CLOTHES(ARG, TYPE) #FUNCTIONS #DIMS TYPE SELECTCASE TYPE CASE "上半身服装描写_はだけ不可" SIF EQUIP:ARG:上半身上着1 RETURNF "上半身上着1" SIF EQUIP:ARG:ワンピース RETURNF "ワンピース" SIF EQUIP:ARG:レオタード RETURNF "レオタード" SIF EQUIP:ARG:ボディースーツ RETURNF "ボディースーツ" SIF EQUIP:ARG:上半身下着1 RETURNF "上半身下着1" RETURNF CASE "上半身服装描写_はだけ可" SIF EQUIP:ARG:上半身上着2 RETURNF "上半身上着2" SIF EQUIP:ARG:着物 RETURNF "着物" SIF EQUIP:ARG:ボディースーツ RETURNF "ボディースーツ" SIF EQUIP:ARG:上半身下着2 RETURNF "上半身下着2" RETURNF CASE "上半身下着描写_はだけ不可" SIF EQUIP:ARG:レオタード RETURNF "レオタード" SIF EQUIP:ARG:ボディースーツ RETURNF "ボディースーツ" SIF EQUIP:ARG:上半身下着1 RETURNF "上半身下着1" RETURNF CASE "上半身下着描写_はだけ可" SIF EQUIP:ARG:上半身下着2 RETURNF "上半身下着2" RETURNF CASE "下半身下着描写_下半身上着ずらし不可" SIF EQUIP:ARG:ボディースーツ RETURNF "ボディースーツ" CASE "下半身下着描写_ずらし不可" SIF EQUIP:ARG:レオタード RETURNF "レオタード" SIF EQUIP:ARG:ボディースーツ RETURNF "ボディースーツ" SIF EQUIP:ARG:下半身下着1 RETURNF "下半身下着1" CASE "下半身下着描写_ずらし可" SIF EQUIP:ARG:レオタード RETURNF "レオタード" SIF EQUIP:ARG:下半身下着2 RETURNF "下半身下着2" CASE "下半身下着描写_スカート" SIF EQUIP:ARG:スカート RETURNF "スカート" SIF EQUIP:ARG:着物 RETURNF "着物" RETURNF CASE "下半身服装描写_下半身上着ずらし不可" SIF EQUIP:ARG:ズボン RETURNF "ズボン" SIF EQUIP:ARG:ボディースーツ RETURNF "ボディースーツ" RETURNF CASE "下半身服装描写_ずらし不可" SIF EQUIP:ARG:ズボン RETURNF "ズボン" SIF EQUIP:ARG:レオタード RETURNF "レオタード" SIF EQUIP:ARG:ボディースーツ RETURNF "ボディースーツ" SIF EQUIP:ARG:下半身下着1 RETURNF "下半身下着1" SIF EQUIP:ARG:下半身下着2 RETURNF "下半身下着2" RETURNF CASE "下半身服装描写_ずらし可" SIF EQUIP:ARG:レオタード RETURNF "レオタード" SIF EQUIP:ARG:下半身上着 RETURNF "下半身上着" SIF EQUIP:ARG:下半身下着2 RETURNF "下半身下着2" RETURNF CASE "下半身服装描写_スカート" SIF EQUIP:ARG:スカート RETURNF "スカート" ;Bug-fix, you can flip skirts when they're wearing ワンピース, but it won't print what you're flipping SIF EQUIP:ARG:ワンピース RETURNF "ワンピース" SIF EQUIP:ARG:着物 RETURNF "着物" SIF EQUIP:ARG:ワンピース RETURNF "ワンピース" RETURNF ENDSELECT ;全キャラの衣装をデフォルトに戻す @RESET_ALL_CLOTHES FOR LOCAL, 0, CHARANUM CFLAG:LOCAL:7 = 0 CALL SELECT_CLOTHES(LOCAL, "今日の衣装") CALL CTRL_CLOTHES_SET(LOCAL, "現在衣装の変更_普段着") CALL CLOTHES_SETTING_TRAIN(LOCAL) NEXT ;EQUIPからTEQUIPに変換 ;このタイミングで靴脱ぎと全裸チェック @CLOTHES_SETTING_TRAIN(ARG) TEQUIP:ARG:0 = 0 TEQUIP:ARG:1 = 0 ;ぶっちゃけここの処理は適当 IF INROOM(CFLAG:ARG:現在位置) SIF EQUIP:ARG:アクセサリ == 6 EQUIP:ARG:アクセサリ = 0 SIF INROOM(CFLAG:ARG:現在位置) == 1 EQUIP:ARG:靴 = 0 ELSE IF CFLAG:ARG:203 EQUIP:ARG:靴 = CFLAG:ARG:203 ELSEIF CFLAG:ARG:603 EQUIP:ARG:靴 = CFLAG:ARG:603 ENDIF IF !EQUIP:ARG:アクセサリ && CFLAG:ARG:201 == 6 && !FLAG:時間停止 EQUIP:ARG:アクセサリ = CFLAG:ARG:201 ELSEIF !EQUIP:ARG:アクセサリ && CFLAG:ARG:601 == 6 && !FLAG:時間停止 EQUIP:ARG:アクセサリ = CFLAG:ARG:601 ENDIF ENDIF IF CHECK_CHARA(ARG, "全裸") EQUIP:ARG:0 = 0 ELSE EQUIP:ARG:0 = 1 ENDIF ;着せ替えが有効でない SIF !EQUIP:ARG:0 RETURN 0 ;下半身 ;TEQUIP:0 下半身着衣状況(ビット0=スカート 1=ずらし可 2=ずらし不可 3=ずらせない下半身上着) ; (ビットを使いたくない人用 0=なし 1=ノーパンスカート 2=パンティのみ 3=スカート+パンティ ; 4=スパッツ(下着)もしくはノーパンズボン 5=スカート+スパッツ 6=ズボン+パンティ 7=フル装備(このバリアントでは無理)) ;EQUIP:5,6 下半身下着 SIF EQUIP:ARG:下半身下着1 TEQUIP:ARG:0 |= 4 SIF EQUIP:ARG:下半身下着2 TEQUIP:ARG:0 |= 2 ;EQUIP:7~9 下半身上着 IF EQUIP:ARG:ズボン TEQUIP:ARG:0 |= 4 TEQUIP:ARG:0 |= 8 ENDIF SIF EQUIP:ARG:下半身上着 TEQUIP:ARG:0 |= 2 SIF EQUIP:ARG:スカート TEQUIP:ARG:0 |= 1 ;EQUIP:14~16 全身上着 IF EQUIP:ARG:ボディースーツ TEQUIP:ARG:0 |= 4 TEQUIP:ARG:0 |= 8 TEQUIP:ARG:0 |= 16 ENDIF SIF EQUIP:ARG:ワンピース TEQUIP:ARG:0 |= 1 SIF EQUIP:ARG:着物 TEQUIP:ARG:0 |= 1 IF EQUIP:ARG:レオタード TEQUIP:ARG:0 |= 2 TEQUIP:ARG:0 |= 16 ENDIF ;上半身 ;TEQUIP:1 上半身着衣状況(0=なし 1=はだけ可 2=はだけ不可 3=突っ込み不可) ; (ビットを使いたくない人用 0=なし 1=ノーブラ和服 2=ブラのみ 3=和服+ブラ) ;EQUIP:10,11 上半身下着 IF EQUIP:ARG:上半身下着1 TEQUIP:ARG:1 |= 2 TEQUIP:ARG:1 |= 4 ENDIF SIF EQUIP:ARG:上半身下着2 TEQUIP:ARG:1 |= 1 ;EQUIP:12,13 上半身上着 IF EQUIP:ARG:上半身上着1 TEQUIP:ARG:1 |= 2 TEQUIP:ARG:1 |= 4 ENDIF SIF EQUIP:ARG:上半身上着2 TEQUIP:ARG:1 |= 1 ;EQUIP:14~16 全身上着 IF EQUIP:ARG:ボディースーツ TEQUIP:ARG:1 |= 2 TEQUIP:ARG:1 |= 4 ENDIF SIF EQUIP:ARG:ワンピース TEQUIP:ARG:1 |= 2 SIF EQUIP:ARG:着物 TEQUIP:ARG:1 |= 1 IF EQUIP:ARG:レオタード TEQUIP:ARG:1 |= 2 TEQUIP:ARG:1 |= 4 ENDIF ;ずらし処理 SIF TEQUIP:ARG:上半身はだけ状態 CLEARBIT TEQUIP:ARG:1, 2 SIF TEQUIP:ARG:4 CLEARBIT TEQUIP:ARG:1, 1 ;特殊衣装への一時きせかえ ;とりあえず衣装セットにあるやつ・もしくは他キャラの普段着だけ ;着替えたらRESULT==1 @EX_COSTUME(C_ID, TYPE) #DIM C_ID #DIM EX_COS #DIMS TYPE EX_COS = GET_INT(C_ID, "キャラデータ", NO:C_ID, @"%TYPE%衣装") ;;#; PRINTFORML Character {C_ID}'s special costume set to %TYPE% {EX_COS} SIF !EX_COS RETURN CALL OKIGAE(C_ID, EX_COS) ;#; CALL SHOW_CLOTHES(C_ID, "現在の衣装") RETURN 1 ;一時お着替え関数 @OKIGAE(C_ID, COS_ID, COS_TYPE) #DIM C_ID ;着せ替えを行うキャラクター #DIM COS_ID ;衣装セットのID、101以上だとキャラ衣装だとみなされる(キャラ衣装を指定したい時はNO + 100にすること) #DIMS COS_TYPE ;参照衣装文字列、キャラデータに記載があるのが前提なので、未実装だと真っ裸になる SIF !TCVAR:C_ID:本来の服装 ;addition custom code, write it only once TCVAR:C_ID:本来の服装 = CFLAG:C_ID:基本服装セット CFLAG:C_ID:基本服装セット = COS_ID IF STRLENS(COS_TYPE) ;文字列指定で普段着以外も指定できるように ;#; PRINTFORML {COS_ID}特殊衣装変更%COS_TYPE% CALL CTRL_CLOTHES_SET(C_ID, "普段着の変更_キャラ衣装", COS_ID, COS_TYPE) CALL CLOTHES_SETTING_TRAIN(C_ID) RETURN ENDIF SELECTCASE COS_ID CASE 100 CALL CTRL_CLOTHES_SET(C_ID, "普段着の変更_おきにいり") CASE 1 TO 99 CALL CTRL_CLOTHES_SET(C_ID, "普段着の変更_衣装セット", COS_ID) CASE 101 TO 100 + キャラクタ数上限 CALL CTRL_CLOTHES_SET(C_ID, "普段着の変更_キャラ衣装", COS_ID - 100, "普段着") CASEELSE THROW Bad clothing ID: {COS_ID} ENDSELECT CALL CHANGE_CLOTHES(C_ID, "衣装リセット") CALL CLOTHES_SETTING_TRAIN(C_ID) @SET_UNDERWEAR(C_ID, TIME_TYPE) #DIM C_ID #DIMS TIME_TYPE CALL SET_PANTS(C_ID, TIME_TYPE) CALL SET_BRA(C_ID, TIME_TYPE) ;パンツセッティング関数 ;CFLAGに設定された衣装を上書きする ;パンツ指定がある場合には下半身下着1を解除し ;下半身下着1が指定されている場合にはパンツよりもそれを優先する @SET_PANTS(C_ID, TIME_TYPE) #DIM C_ID #DIMS TIME_TYPE #DIM P_ID IF TIME_TYPE == "今日のパジャマ" IF CFLAG:C_ID:指定パンツ == 100 P_ID = 0 CFLAG:C_ID:245 = 0 ELSEIF CFLAG:C_ID:指定パンツ P_ID = CFLAG:C_ID:指定パンツ CFLAG:C_ID:245 = 0 ELSEIF CFLAG:C_ID:245 CFLAG:C_ID:246 = 0 RETURN ELSEIF CFLAG:C_ID:246 CFLAG:C_ID:245 = 0 CFLAG:C_ID:パジャマパンツ = CFLAG:C_ID:246 RETURN ELSEIF !GETBIT(TALENT:C_ID:2, 0) P_ID = CLOTHES_ID("下半身下着2", "トランクス") ELSEIF !CFLAG:C_ID:245 P_ID = 今日のぱんつ(C_ID) ENDIF ;PRINTFORMW %CALLNAME:C_ID%のぱじゃまぱんつ:%GET_STR(C_ID, "下半身下着_ずらし可能", P_ID, "名前")% CFLAG:C_ID:パジャマパンツ = P_ID CFLAG:C_ID:246 = P_ID ;addition custom code (by anon) SIF TALENT:MASTER:パンティーセンス && CFLAG:C_ID:神社在住 && CFLAG:C_ID:睡眠 && C_ID > 0 && C_ID < (CHARANUM - 1) && P_ID > 0 && CFLAG:C_ID:(P_ID + パンツ管理) == 0 CALL COLORMESSAGE(@"The sleeping %CALLNAME:C_ID% is wearing %PANTSNAME(P_ID, C_ID, 1)% right now!",C_YELLOW, 1, 1) RETURN ENDIF IF CFLAG:C_ID:指定パンツ == 100 ;ノーパン指定 P_ID = 0 CFLAG:C_ID:205 = 0 ELSEIF CFLAG:C_ID:指定パンツ ;指定パンツがあるなら下半身下着1を剥ぐ CFLAG:C_ID:205 = 0 P_ID = CFLAG:C_ID:指定パンツ ELSEIF CFLAG:C_ID:205 ;下半身下着1が指定ならパンツは無し CFLAG:C_ID:206 = 0 RETURN ELSEIF CFLAG:C_ID:206 ;下半身下着2が指定ならパンツ抽選は無し CFLAG:C_ID:205 = 0 CFLAG:C_ID:きょうのぱんつ = CFLAG:C_ID:206 RETURN ELSEIF !GETBIT(TALENT:C_ID:2, 0) ;オトコならとりあえずトランクスで P_ID = CLOTHES_ID("下半身下着2", "トランクス") ELSEIF !CFLAG:C_ID:205 ;上記以外でパンツ抽選 P_ID = 今日のぱんつ(C_ID) ENDIF CFLAG:C_ID:きょうのぱんつ = P_ID CFLAG:C_ID:206 = P_ID ;addition custom code (by anon) SIF TALENT:MASTER:パンティーセンス && (CFLAG:C_ID:神社在住 || CFLAG:C_ID:翌日来訪)&& C_ID > 0 && C_ID < (CHARANUM - 1) && P_ID > 0 && CFLAG:C_ID:(P_ID + パンツ管理) == 0 CALL COLORMESSAGE(@"%CALLNAME:C_ID% is\@ TIME_TYPE == "明日の衣装" ? %" "%planning on #\@ wearing %PANTSNAME(P_ID, C_ID, 1)% today!",C_YELLOW, 1, 1) @SET_BRA(C_ID, TIME_TYPE) #DIM C_ID #DIMS TIME_TYPE #DIM DYNAMIC B_ID IF TIME_TYPE == "今日のパジャマ" IF CFLAG:C_ID:247 CFLAG:C_ID:248 = 0 B_ID = CFLAG:C_ID:247 ELSEIF CFLAG:C_ID:248 ELSEIF !GETBIT(TALENT:C_ID:2, 0) B_ID = CLOTHES_ID("上半身下着1", "Tシャツ") ELSE B_ID = 今日のブラジャー(C_ID, CFLAG:C_ID:パジャマパンツ) ENDIF CFLAG:C_ID:パジャマブラ = B_ID CFLAG:C_ID:247 = B_ID RETURN ENDIF IF CFLAG:C_ID:207 CFLAG:C_ID:208 = 0 B_ID = CFLAG:C_ID:207 ELSEIF CFLAG:C_ID:208 ELSEIF !GETBIT(TALENT:C_ID:2, 0) B_ID = CLOTHES_ID("上半身下着1", "Tシャツ") ELSE B_ID = 今日のブラジャー(C_ID, CFLAG:C_ID:きょうのぱんつ) ENDIF CFLAG:C_ID:きょうのブラ = B_ID CFLAG:C_ID:207 = B_ID ;今日の衣装決定関数 ;必ず衣装→パジャマでセットで使うこと @SELECT_CLOTHES(C_ID, TIME_TYPE) #DIM C_ID #DIMS TIME_TYPE #DIM 衣装C_ID #DIMS 衣装TYPE VARSET 衣装C_ID VARSET 衣装TYPE ;先にパジャマの設定 IF TIME_TYPE == "今日のパジャマ" SELECTCASE CFLAG:C_ID:パジャマ指定 CASE 300 ;個別設定 CALL CTRL_CLOTHES_SET(C_ID, "パジャマの変更_おきにいり衣装") CALL SET_UNDERWEAR(C_ID, TIME_TYPE) RETURN CASE 301 ;パンイチ 衣装TYPE '= "パンイチ" CASE 302 ;全裸 衣装TYPE '= "全裸" CASE 1 TO 99 ;衣装セットの指定 衣装TYPE '= GET_STR(C_ID, "衣装セット", CFLAG:C_ID:パジャマ指定, "名前") CASE 0 ;デフォルト衣装による設定 IF !(C_ID == MASTER) 衣装C_ID = NO:C_ID 衣装TYPE '= GET_STR(C_ID, "キャラデータ", 衣装C_ID, TIME_TYPE) ELSEIF FLAG:なりきり 衣装C_ID = FLAG:なりきり 衣装TYPE '= GET_STR(C_ID, "キャラデータ", 衣装C_ID, TIME_TYPE) ENDIF ENDSELECT ;未設定ならパジャマズボン SIF !STRLENS(衣装TYPE) 衣装TYPE '= "パジャマ(ズボン)セット" CALL CHANGE_CLOTHES(C_ID, TIME_TYPE, 衣装C_ID, 衣装TYPE) SIF 衣装TYPE == "パンイチ" JUMP SET_PANTS(C_ID, TIME_TYPE) SIF !(衣装TYPE == "全裸") CALL SET_UNDERWEAR(C_ID, TIME_TYPE) RETURN ENDIF ;今日の衣装、明日の衣装 SELECTCASE CFLAG:C_ID:基本服装セット CASE 100 ;個別設定 CALL CTRL_CLOTHES_SET(C_ID, "普段着の変更_おきにいり衣装") CALL SET_UNDERWEAR(C_ID, TIME_TYPE) CASE 1 TO 99 ;衣装セットの指定 衣装TYPE '= GET_STR(C_ID, "衣装セット", CFLAG:C_ID:基本服装セット, "名前") ;念のため SIF !STRLENS(衣装TYPE) GOTO DEFAULT CASE 101 TO 100 + キャラクタ数上限 ;特定キャラの衣装を参照するとき 衣装C_ID = CFLAG:C_ID:基本服装セット - 100 衣装TYPE '= "普段着" ;念のため SIF !EXISTCSV(衣装C_ID) GOTO DEFAULT CASE 0 ;デフォルト衣装による設定 $DEFAULT IF !(C_ID == MASTER) 衣装C_ID = NO:C_ID 衣装TYPE '= GET_STR(C_ID, "キャラデータ", 衣装C_ID, TIME_TYPE) ELSEIF FLAG:なりきり 衣装C_ID = FLAG:なりきり 衣装TYPE '= GET_STR(C_ID, "キャラデータ", 衣装C_ID, TIME_TYPE) ELSEIF GETBIT(TALENT:C_ID:2, 0) ;まんまんがあるときは女装を基本とする 衣装TYPE '= "女装セット" ELSE ;♂は男装を基本とする 衣装TYPE '= "男装セット" ENDIF ;未設定なら普段着 SIF !STRLENS(衣装TYPE) 衣装TYPE '= "普段着" ENDSELECT CALL CHANGE_CLOTHES(C_ID, TIME_TYPE, 衣装C_ID, 衣装TYPE) CALL SET_UNDERWEAR(C_ID, TIME_TYPE) ;衣装更新関数 @CHANGE_CLOTHES(C_ID, TYPE, 衣装C_ID, 衣装TYPE) #DIM C_ID #DIMS TYPE #DIM 衣装C_ID #DIMS 衣装TYPE #DIM 衣装SET_ID 衣装SET_ID = 0 SIF STRLENS(衣装TYPE) 衣装SET_ID = OBJNAME_TO_ID(C_ID, "GET", "衣装セット", 衣装TYPE) SELECTCASE TYPE CASE "今日のパジャマ" SIF 衣装TYPE == "パンイチ" JUMP CTRL_CLOTHES_SET(C_ID, "パジャマの変更_パンイチ", 衣装SET_ID) SIF 衣装TYPE == "全裸" JUMP CTRL_CLOTHES_SET(C_ID, "パジャマの変更_全裸", 衣装SET_ID) IF 衣装SET_ID > 0 CALL CTRL_CLOTHES_SET(C_ID, "パジャマの変更_衣装セット", 衣装SET_ID) ELSE CALL CTRL_CLOTHES_SET(C_ID, "パジャマの変更_キャラ衣装", 衣装C_ID, 衣装TYPE) ENDIF CASE "今日の衣装", "明日の衣装" IF 衣装SET_ID > 0 CALL CTRL_CLOTHES_SET(C_ID, "普段着の変更_衣装セット", 衣装SET_ID) ELSE CALL CTRL_CLOTHES_SET(C_ID, "普段着の変更_キャラ衣装", 衣装C_ID, 衣装TYPE) ENDIF CASE "衣装リセット" ;#;SIF C_ID == TARGET ;#; PRINTFORML TARGET costume reset IF 睡眠時間(C_ID) CALL CTRL_CLOTHES_SET(C_ID, "現在衣装の変更_パジャマ") CFLAG:C_ID:パジャマ = 1 ELSE SELECTCASE CFLAG:C_ID:衣装一時変更 CASE 0 CALL CTRL_CLOTHES_SET(C_ID, "現在衣装の変更_普段着") CASE 100 CALL CTRL_CLOTHES_SET(C_ID, "現在衣装の変更_おきにいり") CASE 1 TO 99 CALL CTRL_CLOTHES_SET(C_ID, "現在衣装の変更_衣装セット", CFLAG:C_ID:衣装一時変更) CASE 101 TO 100 + キャラクタ数上限 CALL CTRL_CLOTHES_SET(C_ID, "現在衣装の変更_キャラ衣装", CFLAG:C_ID:衣装一時変更 - 100, "普段着") ENDSELECT CFLAG:C_ID:パジャマ = 0 ENDIF ENDSELECT [SKIPSTART] 衣装セットのコントロール関数 CFLAGとEQUIPのやりとりを行う EQUIP:0の扱いとしては ・@CLOTHES_SETTING_TRAINの冒頭に更新処理を仕込んだ ・SAVE/LOADの範囲を1~22までにする(EQUIP:0は保存されない) これでだいたいいいと思う [SKIPEND] @CTRL_CLOTHES_SET(C_ID, TYPE, ARG, ARGS) #DIM C_ID #DIMS TYPE SELECTCASE TYPE ;リセット用に記録する CASE "現在衣装の保存_普段着" FOR LOCAL, 1, 23 CFLAG:C_ID:(200 + LOCAL) = EQUIP:C_ID:LOCAL NEXT CASE "現在衣装の保存_パジャマ" FOR LOCAL, 1, 23 CFLAG:C_ID:(240 + LOCAL) = EQUIP:C_ID:LOCAL NEXT CASE "現在衣装の保存_おきにいり" FOR LOCAL, 1, 23 CFLAG:C_ID:(600 + LOCAL) = EQUIP:C_ID:LOCAL NEXT CFLAG:ARG:おきにいり衣装 = 1 ;リセット CASE "おきにいり衣装のリセット" FOR LOCAL, 0, 23 CFLAG:C_ID:(600 + LOCAL) = 0 NEXT SIF CFLAG:C_ID:基本服装セット == 100 CFLAG:C_ID:基本服装セット = 0 SIF CFLAG:C_ID:パジャマ指定 == 300 CFLAG:C_ID:パジャマ指定 = 0 CFLAG:C_ID:おきにいり衣装 = 0 ;セットした衣装をロード ;ここらへんあくまでロード処理であってパジャマフラグはいじらないので注意ね CASE "現在衣装の変更_普段着" FOR LOCAL, 1, 23 EQUIP:C_ID:LOCAL = CFLAG:C_ID:(200 + LOCAL) NEXT CFLAG:C_ID:衣装一時変更 = 0 CALL CTRL_CLOTHES_SET(C_ID, "下着一括設定") CASE "現在衣装の変更_パジャマ" FOR LOCAL, 1, 23 EQUIP:C_ID:LOCAL = CFLAG:C_ID:(240 + LOCAL) NEXT IF CFLAG:C_ID:パジャマパンツ == 100 EQUIP:C_ID:下半身下着1 = 0 EQUIP:C_ID:下半身下着2 = 0 CFLAG:C_ID:245 = 0 CFLAG:C_ID:246 = 0 CFLAG:C_ID:パジャマパンツ = 0 SIF CFLAG:C_ID:ノーパン != 2 ;bug fix CFLAG:C_ID:ノーパン = 1 ELSEIF CFLAG:C_ID:ノーパン && CFLAG:C_ID:パジャマパンツ EQUIP:C_ID:下半身下着1 = 0 EQUIP:C_ID:下半身下着2 = CFLAG:C_ID:パジャマパンツ SIF !CFLAG:C_ID:245 CFLAG:C_ID:246 = CFLAG:C_ID:パジャマパンツ CFLAG:C_ID:パジャマパンツ = 0 SIF CFLAG:C_ID:ノーパン != 2 ;bug fix CFLAG:C_ID:ノーパン = 0 ELSEIF CFLAG:C_ID:ノーパン && (EQUIP:C_ID:下半身下着1 || EQUIP:C_ID:下半身下着2) EQUIP:C_ID:下半身下着1 = 0 EQUIP:C_ID:下半身下着2 = 0 CFLAG:C_ID:245 = 0 CFLAG:C_ID:246 = 0 ENDIF CFLAG:C_ID:衣装一時変更 = 0 CASE "現在衣装の変更_おきにいり" FOR LOCAL, 1, 23 EQUIP:C_ID:LOCAL = CFLAG:C_ID:(600 + LOCAL) NEXT IF CFLAG:C_ID:ノーパン EQUIP:C_ID:下半身下着1 = 0 EQUIP:C_ID:下半身下着2 = 0 ELSEIF EQUIP:C_ID:下半身下着1 EQUIP:C_ID:下半身下着2 = 0 ELSEIF EQUIP:C_ID:下半身下着2 EQUIP:C_ID:下半身下着1 = 0 ELSEIF CFLAG:C_ID:パジャマ EQUIP:C_ID:下半身下着2 = CFLAG:C_ID:246 ELSE EQUIP:C_ID:下半身下着2 = CFLAG:C_ID:206 ENDIF CFLAG:C_ID:衣装一時変更 = 100 CASE "現在衣装の変更_キャラ衣装" ;ARGで指定されたキャラの衣装を参照する CFLAG:C_ID:衣装一時変更 = 100 + ARG FOR LOCAL, 1, 23 EQUIP:C_ID:LOCAL = GET_INT(C_ID, "キャラデータ", ARG, @"%ARGS%:%EQUIPNAME:LOCAL%") NEXT CALL CTRL_CLOTHES_SET(C_ID, "下着一括設定") CASE "現在衣装の変更_衣装セット" ;ARGで指定されたIDの衣装セットを参照する CFLAG:C_ID:衣装一時変更 = ARG FOR LOCAL, 1, 23 EQUIP:C_ID:LOCAL = GET_INT(C_ID, "衣装セット", ARG, EQUIPNAME:LOCAL) NEXT CALL CTRL_CLOTHES_SET(C_ID, "下着一括設定") CASE "下着一括設定" CALL CTRL_CLOTHES_SET(C_ID, "パンツ一括設定") CALL CTRL_CLOTHES_SET(C_ID, "ブラ一括設定") CASE "パンツ一括設定" IF !CFLAG:C_ID:パジャマ IF CFLAG:C_ID:ノーパン EQUIP:C_ID:下半身下着1 = 0 EQUIP:C_ID:下半身下着2 = 0 ELSEIF EQUIP:C_ID:下半身下着1 EQUIP:C_ID:下半身下着2 = 0 ELSE EQUIP:C_ID:下半身下着2 = CFLAG:C_ID:きょうのぱんつ ENDIF ELSE IF CFLAG:C_ID:ノーパン EQUIP:C_ID:下半身下着1 = 0 EQUIP:C_ID:下半身下着2 = 0 ELSEIF EQUIP:C_ID:下半身下着1 EQUIP:C_ID:下半身下着2 = 0 ELSE EQUIP:C_ID:下半身下着2 = CFLAG:C_ID:246 ENDIF ENDIF CASE "ブラ一括設定" IF !CFLAG:C_ID:パジャマ EQUIP:C_ID:上半身下着1 = CFLAG:C_ID:きょうのブラ ELSE EQUIP:C_ID:上半身下着1 = CFLAG:C_ID:247 ENDIF ;脱衣処理 CASE "現在衣装の変更_全裸" FOR LOCAL, 1, 23 SIF LOCAL == 3 && FLAG:時間停止 CONTINUE SIF LOCAL == 4 && EQUIP:C_ID:靴 CONTINUE EQUIP:C_ID:LOCAL = 0 NEXT CASE "現在衣装の変更_下着姿" ;このコードなんか気持ち悪いんだけどとりあえずこのままで FOR LOCAL, 18, 10, -1 EQUIP:C_ID:LOCAL = 0 NEXT EQUIP:C_ID:帽子 = 0 TEQUIP:C_ID:上半身着衣状況 = 2 TEQUIP:C_ID:上着脱衣済み = 1 CASE "現在衣装の変更_半脱ぎ" EQUIP:C_ID:上半身下着1 = 0 TEQUIP:C_ID:上半身はだけ状態 = 1 SIF EQUIP:C_ID:ズボン EQUIP:C_ID:ズボン = 0 CASE "普段着の変更_キャラ衣装" ;ARGで指定されたキャラのARGSで指定された衣装を参照する CFLAG:C_ID:基本服装セット = 100 + ARG FOR LOCAL, 1, 23 CFLAG:C_ID:(200 + LOCAL) = GET_INT(C_ID, "キャラデータ", ARG, @"%ARGS%:%EQUIPNAME:LOCAL%") NEXT CASE "普段着の変更_衣装セット" ;ARGで指定されたIDの衣装セットを参照する CFLAG:C_ID:基本服装セット = ARG FOR LOCAL, 1, 23 CFLAG:C_ID:(200 + LOCAL) = GET_INT(C_ID, "衣装セット", ARG, EQUIPNAME:LOCAL) NEXT CASE "普段着の変更_おきにいり衣装" CFLAG:C_ID:基本服装セット = 100 FOR LOCAL, 1, 23 CFLAG:C_ID:(200 + LOCAL) = CFLAG:C_ID:(600 + LOCAL) NEXT CASE "パジャマの変更_キャラ衣装" ;ARGで指定されたキャラのARGSで指定された衣装を参照する CFLAG:C_ID:パジャマ指定 = 100 + ARG FOR LOCAL, 1, 23 CFLAG:C_ID:(240 + LOCAL) = GET_INT(C_ID, "キャラデータ", ARG, @"%ARGS%:%EQUIPNAME:LOCAL%") NEXT CASE "パジャマの変更_衣装セット" CFLAG:C_ID:パジャマ指定 = ARG FOR LOCAL, 1, 23 CFLAG:C_ID:(240 + LOCAL) = GET_INT(C_ID, "衣装セット", ARG, EQUIPNAME:LOCAL) NEXT CASE "パジャマの変更_おきにいり衣装" CFLAG:C_ID:パジャマ指定 = 300 FOR LOCAL, 1, 23 CFLAG:C_ID:(240 + LOCAL) = CFLAG:C_ID:(600 + LOCAL) NEXT CASE "パジャマの変更_パンイチ" CFLAG:C_ID:パジャマ指定 = 301 FOR LOCAL, 0, 23 CFLAG:C_ID:(240 + LOCAL) = 0 NEXT CFLAG:C_ID:246 = CFLAG:C_ID:パジャマパンツ SIF CFLAG:C_ID:246 == 100 CFLAG:C_ID:246 = 0 CASE "パジャマの変更_全裸" CFLAG:C_ID:パジャマ指定 = 302 FOR LOCAL, 0, 23 CFLAG:C_ID:(240 + LOCAL) = 0 NEXT CFLAG:C_ID:パジャマパンツ = 100 CASE "おきにいり衣装の変更_キャラ衣装" FOR LOCAL, 1, 23 CFLAG:C_ID:(600 + LOCAL) = GET_INT(C_ID, "キャラデータ", ARG, @"%ARGS%:%EQUIPNAME:LOCAL%") NEXT CFLAG:C_ID:おきにいり衣装 = 1 CASE "おきにいり衣装の変更_衣装セット" FOR LOCAL, 1, 23 CFLAG:C_ID:(600 + LOCAL) = GET_INT(C_ID, "衣装セット", ARG, EQUIPNAME:LOCAL) NEXT CFLAG:C_ID:おきにいり衣装 = 1 ENDSELECT ;特定キャラの衣装設定の内容を表示する @SHOW_CHARA_CLOTHES(C_ID, PAGE = 0) #DIM C_ID #DIMS CONST 表示衣装, 4 = "現在の衣装", "今日の衣装", "今日のパジャマ", "おきにいり衣装" #DIM PAGE ;Custom code, translation PRINTFORML %CALLNAME:C_ID%'s %CLOTHES_CAT_TR(表示衣装:PAGE)% SELECTCASE CFLAG:C_ID:指定パンツ CASE 0 PRINTFORML  Current Underwear: Not Specified CASE 100 PRINTFORML  Current Underwear: None CASEELSE ;Custom code, translation PRINTFORML  Current Underwear: %CLOTHES_TR(GET_STR(C_ID, "下半身下着_ずらし可能", CFLAG:C_ID:指定パンツ, "名前"),1)% ENDSELECT PRINTFORML CALL SHOW_CLOTHES(C_ID, 表示衣装:PAGE) PRINTFORML PRINTBUTTON @"[1] - %CLOTHES_CAT_TR(表示衣装:((PAGE + 4 - 1) % 4)), 14%", 1 PRINTFORM            PRINTBUTTON @"[3] - %CLOTHES_CAT_TR(表示衣装:((PAGE + 4 + 1) % 4)), 14%", 3 PRINTFORML PRINTBUTTON "[0] - Back", 0 DO INPUT SELECTCASE RESULT CASE 0 RETURN CASE 1 PAGE = (PAGE + 4 - 1) % 4 CASE 3 PAGE = (PAGE + 4 + 1) % 4 CASEELSE REUSELASTLINE Invalid input. CONTINUE ENDSELECT RESTART LOOP 1 ;衣装系の表示関数 @SHOW_CLOTHES(C_ID, TYPE, ID) #DIM C_ID #DIMS TYPE #DIM ID #DIM 装備部位 #DIM CLOTHES #DIMS 表示内容 { #DIMS CONST 表示部位, 23 = "", "帽子", "アクセサリ", "腕部装束", "外衣", "上半身上着1","上半身上着2", "着物", "ワンピース", "スカート", "下半身上着", "ズボン", "レオタード", "ボディースーツ", "上半身下着1", "上半身下着2", "下半身下着1", "下半身下着2", "その他1", "その他2", "その他3", "靴下", "靴" } { #DIMS CONST 表示ラベル, 23 = "", "  Head        ", "  Decoration     ", "  Arms        ", "  Upper Garment    ", "  Outer Garment ", "  Outer Garment ", "  Kimono       ", "  Full-body      ", "  Undergarment ", "  Undergarment ", "  Undergarment ", "  Full-body Underwear ", "  Full-body Underwear ", "  Underwear(top) ", "  Underwear(top) ", "  Underwear(bot) ", "  Underwear(bot) ", "  Accessory      ", "  Accessory      ", "  Accessory      ", "  Socks        ", "  Shoes        " } SELECTCASE TYPE CASE "現在の衣装" FOR LOCAL, 1, 23 ;装備部位のID取得 装備部位 = FINDELEMENT(EQUIPNAME, 表示部位:LOCAL) SIF 装備部位 < 0 THROW Non-Existent Equipment: %表示部位:LOCAL% ;ノーブラ、ノーパン用の例外処理 ;ここから IF 表示部位:LOCAL == "上半身下着1" && TALENT:C_ID:性別 != 2 && EQUIP:C_ID:上半身下着2 == 0 && EQUIP:C_ID:上半身下着1 == 0 && EQUIP:C_ID:ボディースーツ == 0 && EQUIP:C_ID:レオタード == 0 && EQUIP:C_ID:0 IF 上半身下着表示(C_ID) == 1 PRINTFORML  Underwear(top) [Not used] ELSEIF 下半身下着表示(C_ID) == 1 PRINTFORML  Underwear(top) [?????] ENDIF ENDIF IF 表示部位:LOCAL == "下半身下着1" && EQUIP:C_ID:下半身下着2 == 0 && EQUIP:C_ID:下半身下着1 == 0 && EQUIP:C_ID:ボディースーツ == 0 && EQUIP:C_ID:レオタード == 0 && EQUIP:C_ID:0 IF !上半身下着表示(C_ID) && !下半身下着表示(C_ID) PRINTFORML  Underwear [?????] CONTINUE ELSEIF !下半身下着表示(C_ID) PRINTFORML  Underwear(bot) [?????] ELSE PRINTFORML  Underwear(bot) [\@ CFLAG:C_ID:きょうのぱんつ == 0 ? None # Pilfered \@] ENDIF ENDIF SIF !EQUIP:C_ID:装備部位 CONTINUE IF STRLENS(CSTR:C_ID:(50 + 装備部位)) && !CFLAG:C_ID:パジャマ && CSTR:C_ID:(50 + 装備部位) != "/" ;bug fix 表示内容 '= CSTR:C_ID:(50 + 装備部位) ;パンツは専用処理が必要 ELSEIF 表示部位:LOCAL == "上半身下着1" && !(C_ID == MASTER) && !上半身下着表示(C_ID) SIF !下半身下着表示(C_ID) CONTINUE 表示内容 '= "?????" ELSEIF 表示部位:LOCAL == "下半身下着2" && !(C_ID == MASTER) && !下半身下着表示(C_ID) IF !上半身下着表示(C_ID) PRINTFORML  Underwear [?????] CONTINUE ELSE 表示内容 '= "?????" ENDIF ELSE IF 表示部位:LOCAL == "上半身下着1" 表示内容 '= CAPITALIZE(BRANAME(EQUIP:C_ID:上半身下着1, C_ID)) ELSEIF 表示部位:LOCAL == "下半身下着2" 表示内容 '= CAPITALIZE(PANTSNAME(EQUIP:C_ID:下半身下着2, C_ID)) ELSE 表示内容 '= CAPITALIZE(CLOTHNAME(装備部位, EQUIP:C_ID:装備部位)) ENDIF ENDIF PRINTFORML %表示ラベル:LOCAL%[%表示内容%] NEXT CASE "今日の衣装", "普段着" FOR LOCAL, 1, 23 ;装備部位のID取得 装備部位 = FINDELEMENT(EQUIPNAME, 表示部位:LOCAL) SIF 装備部位 < 0 THROW Non-Existent Equipment: %表示部位:LOCAL% CLOTHES = CFLAG:C_ID:(200 + 装備部位) IF !CLOTHES CONTINUE ELSE ;Custom code, translate 表示内容 '= CLOTHES_TR(GET_STR(C_ID, CLOTHES_PARTS_TO_CATEGORY(表示部位:LOCAL), CLOTHES, "名前"),1) ENDIF PRINTFORML %表示ラベル:LOCAL%:%表示内容% NEXT CASE "今日のパジャマ" FOR LOCAL, 1, 23 ;装備部位のID取得 装備部位 = FINDELEMENT(EQUIPNAME, 表示部位:LOCAL) SIF 装備部位 < 0 THROW Non-Existent Equipment: %表示部位:LOCAL% CLOTHES = CFLAG:C_ID:(240 + 装備部位) SIF 表示部位:LOCAL == "下半身下着2" && !(C_ID == MASTER) CONTINUE IF !CLOTHES CONTINUE ELSE ;Custom code 表示内容 '= CLOTHES_TR(GET_STR(C_ID, CLOTHES_PARTS_TO_CATEGORY(表示部位:LOCAL), CLOTHES, "名前"),1) ENDIF PRINTFORML %表示ラベル:LOCAL%:%表示内容% NEXT CASE "おきにいり衣装" FOR LOCAL, 1, 23 ;装備部位のID取得 装備部位 = FINDELEMENT(EQUIPNAME, 表示部位:LOCAL) SIF 装備部位 < 0 THROW Non-Existent Equipment: %表示部位:LOCAL% CLOTHES = CFLAG:C_ID:(600 + 装備部位) SIF 表示部位:LOCAL == "下半身下着2" && !(C_ID == MASTER) CONTINUE IF !CLOTHES CONTINUE ELSE ;Custom code 表示内容 '= CLOTHES_TR(GET_STR(C_ID, CLOTHES_PARTS_TO_CATEGORY(表示部位:LOCAL), CLOTHES, "名前"),1) ENDIF PRINTFORML %表示ラベル:LOCAL%:%表示内容% NEXT CASE "キャラ普段着" ;キャラ番号IDの普段着の内容を表示する IF !EXISTCSV(ID) PRINTFORML Detected a reference to non-existent characters. RETURN ENDIF PRINTFORML %CALLNAME:ID%'s everyday wear. FOR LOCAL, 1, 23 ;装備部位のID取得 装備部位 = FINDELEMENT(EQUIPNAME, 表示部位:LOCAL) SIF 装備部位 < 0 THROW Non-Existent Equipment: %表示部位:LOCAL% CLOTHES = GET_INT(C_ID, "キャラデータ", ID, @"普段着:%表示部位:(LOCAL)%") SIF 表示部位:LOCAL == "下半身下着2" && !(C_ID == MASTER) CONTINUE IF !CLOTHES CONTINUE ELSE ;Custom code 表示内容 '= CLOTHES_TR(GET_STR(C_ID, CLOTHES_PARTS_TO_CATEGORY(表示部位:LOCAL), CLOTHES, "名前"),1) ENDIF PRINTFORML %表示ラベル:LOCAL%:%表示内容% NEXT CASE "衣装セット" ;衣装セットIDの内容を表示する IF GET_STR(C_ID, "衣装セット" , ID, "名前") == "" PRINTFORML Detected a reference to non-existent clothes. RETURN ENDIF ;Custom code, translate PRINTFORML %LISTING_TR(GET_STR(C_ID, "衣装セット" , ID, "名前"))% FOR LOCAL, 1, 23 ;装備部位のID取得 装備部位 = FINDELEMENT(EQUIPNAME, 表示部位:LOCAL) SIF 装備部位 < 0 THROW Non-Existent Equipment: %表示部位:LOCAL% CLOTHES = GET_INT(C_ID, "衣装セット", ID, 表示部位:LOCAL) SIF 表示部位:LOCAL == "下半身下着2" && !(C_ID == MASTER) CONTINUE IF !CLOTHES CONTINUE ELSE ;Custom code 表示内容 '= CLOTHES_TR(GET_STR(C_ID, CLOTHES_PARTS_TO_CATEGORY(表示部位:LOCAL), CLOTHES, "名前"),1) ENDIF PRINTFORML %表示ラベル:LOCAL%:%表示内容% NEXT ENDSELECT @SPECIAL_OUTFIT(CHARA) #FUNCTION #DIM CHARA IF FESTIVAL() == "バニーの日" RETURNF 55 ELSEIF FLAG:ファッション RETURNF FLAG:ファッション ENDIF RETURNF GET_INT(0, "キャラデータ", CHARA, "特殊衣装着用") @UNIQUE_UNDERWARE_TOP(CHARA) #FUNCTIONS #DIM CHARA RETURNF GET_STR(0, "キャラデータ", CHARA, "固有上半身下着名") @UNIQUE_UNDERWARE_BOTTOM(CHARA) #FUNCTIONS #DIM CHARA SIF GET_STR(0, "キャラデータ", CHARA, "固有下半身下着名") == "" RETURNF "新品のパンツ" RETURNF GET_STR(0, "キャラデータ", CHARA, "固有下半身下着名") @UNIQUE_UNDERWARE_ADJ(CHARA) #FUNCTIONS #DIM CHARA RETURNF GET_STR(0, "キャラデータ", CHARA, "固有下着形容詞") @UNIQUE_UNDERWARE_ABLE(CHARA) #FUNCTION #DIM CHARA RETURNF GET_INT(0, "キャラデータ", CHARA, "固有下着着用条件") @UNIQUE_UNDERWARE_TRANSPARENCY_FRONT(CHARA) #FUNCTION #DIM CHARA RETURNF GET_INT(0, "キャラデータ", CHARA, "固有下着透ける(前)") @UNIQUE_UNDERWARE_TRANSPARENCY_BACK(CHARA) #FUNCTION #DIM CHARA RETURNF GET_INT(0, "キャラデータ", CHARA, "固有下着透ける(後)") @UNIQUE_UNDERWARE_TOP_THICK(CHARA) #FUNCTION #DIM CHARA RETURNF GET_INT(0, "キャラデータ", CHARA, "固有下着生地厚さ") @上半身下着表示(C_ID) #FUNCTION #DIM C_ID SIF !CFLAG:C_ID:睡眠 && CFLAG:C_ID:上半身下着確認 RETURNF 1 SIF CFLAG:C_ID:睡眠 && CFLAG:C_ID:パジャマ上半身下着確認 RETURNF 1 RETURNF 0 @下半身下着表示(C_ID) #FUNCTION #DIM C_ID SIF !CFLAG:C_ID:睡眠 && CFLAG:C_ID:下半身下着確認 RETURNF 1 SIF CFLAG:C_ID:睡眠 && CFLAG:C_ID:パジャマ下半身下着確認 RETURNF 1 RETURNF 0 @上半身下着チェック(C_ID) #FUNCTION #DIM C_ID IF !CFLAG:C_ID:睡眠 CFLAG:C_ID:上半身下着確認 = 1 ELSE CFLAG:C_ID:パジャマ上半身下着確認 = 1 ENDIF @下半身下着チェック(C_ID) #FUNCTION #DIM C_ID IF !CFLAG:C_ID:睡眠 CFLAG:C_ID:下半身下着確認 = 1 ELSE CFLAG:C_ID:パジャマ下半身下着確認 = 1 ENDIF @下着確認リセット(C_ID) #DIM C_ID CFLAG:C_ID:上半身下着確認 = 0 CFLAG:C_ID:下半身下着確認 = 0 CFLAG:C_ID:パジャマ上半身下着確認 = 0 CFLAG:C_ID:パジャマ下半身下着確認 = 0 RETURN