Hermes TrisClistos 2021/07/18 20:05

風俗嬢の出勤&休暇パターンをティラノスクリプトで再現する / デリヘル純愛ゲーム(仮)制作日誌

デリヘル嬢の皆さん。兼業であることが多いです。いわゆる「昼職」があって、余裕があるときにデリヘルで働く……という。

だから「本業」にあわせて、デリヘル嬢には各々の「出勤パターン」が存在します。
たとえば「週末のみ」「火曜日のみ」「月末のみ」……など。月1~2回しか出勤しない場合は「レア出勤」などと呼ばれたりします。人気がある嬢ならば予約争奪戦です。

そんなわけで、上記のような「デリヘルの実態」をゲームシステムで再現してみました。

▼まずは動画をご覧ください

嬢の出勤パターンは以下のとおり

//[0]名前 [1]グレード [2]指名料 [3]年齢 [4]新人 [5]生理休暇 1が有効
let arrayShop = [
				[//[0] デリヘル店名
  [defaultShopName1, 'SS', 3000, 19, 'flesh', 0], //放課後メゾンテール
  [defaultShopName2, 'A', 2000, 22, 'used', 0], //ハイッチュ
  [defaultShopName3, 'B', 1000, 42, 'used', 0],
  [defaultShopName4, 'B', 1000, 42, 'used', 0],
  [defaultShopName5, 'B', 1000, 42, 'used', 0],
  [defaultShopName6, 'B', 1000, 42, 'used', 0],
  [defaultShopName7, 'B', 1000, 42, 'used', 0],
  [defaultShopName8, 'B', 1000, 42, 'used', 0]
				], 
                
// [5]生理休暇 1 が有効             
// たとえ当日が出勤日でも、生理休暇(非番)が優先される
    
// [6]出勤パターン
0: 非番
1: 奇数
2: 2の倍数(偶数)
3: 3の倍数(週末のみ
4: 4の倍数(月3回)
5&6: 5&6の倍数(月2回レア)
7: 7の倍数(月1回超レア)
8: 8&10の倍数(月2回レア)
9: 12:月末のみ(月1回超レア)

				[//[1]の所属嬢 放課後メゾンテール
  [defaultLadyName9, 'SS', 3000, 19, 'flesh', 0, 4],
  [defaultLadyName10, 'A', 2000, 22, 'used', 0, 2],
  [defaultLadyName11, 'B', 1000, 42, 'used', 0, 1],
  [defaultLadyName12, 'B', 1000, 42, 'used', 0, 0],
  [defaultLadyName13, 'B', 1000, 42, 'used', 0, 1],
  [defaultLadyName14, 'B', 1000, 42, 'used', 0, 0],
  [defaultLadyName15, 'B', 1000, 42, 'used', 0, 1],
  [defaultLadyName16, 'B', 1000, 42, 'used', 0, 1]
				],
				[//2の所属嬢 ハイッチュ
  [defaultLadyName17, 'SS', 3000, 19, 'flesh', 0, 3],
  [defaultLadyName18, 'A', 2000, 22, 'used', 0, 2],
  [defaultLadyName19, 'B', 1000, 42, 'used', 0, 1],
  [defaultLadyName20, 'B', 1000, 42, 'used', 0, 0],
  [defaultLadyName21, 'B', 1000, 42, 'used', 0, 0],
  [defaultLadyName22, 'B', 1000, 42, 'used', 0, 1],
  [defaultLadyName23, 'B', 1000, 42, 'used', 0, 0],
  [defaultLadyName24, 'B', 1000, 42, 'used', 0, 1]
				]
];

1列目の「彩」は 4の倍数の日だけ出勤する
2列目の「風花」は 2の倍数の日だけ出勤します
3列目の「咲喜」は 奇数の日だけ出勤します
4列目の「ひかる」は 偶数の日だけ出勤します

行動ターン = フェーズ 
これはデリヘル利用日のことです。
フェーズ値と各デリヘル嬢の出勤パターンをifで比較して、出勤か非番かを判定しています。

下記のティラノスクリプトは、出勤/非番を判定するためのコードの一部です。
習熟したプログラマからみれば「めちゃくちゃ」「重複」があるでしょうが、とりあえず動くのでヨシ!としています。

*hanteiStart

;偶数OR奇数を判定する
[if exp="(f.gamePhaseNumber % 2) != 0"]
;フェイズは奇数[emb exp="f.gamePhaseNumber"]です[r]
;嬢の出勤パターンは[emb exp="f.hibanHantei"][p]
	[jump target=*oddMultipleJudge]
[else]
;フェイズは偶数[emb exp="f.gamePhaseNumber"]です[r]
;嬢の出勤パターンは[emb exp="f.hibanHantei"][p]
	[jump target=*evenMultipleJudge]
[endif]	

*oddMultipleJudge
;奇数もしくは奇数の倍数フェーズが出勤日
[if exp="(f.hibanHantei == 7) && ((f.gamePhaseNumber % 7) == 0)"]
;奇数の倍数フェーズ(7)が出勤日[p]
	[jump target=*todayWorker]
[elsif exp="(f.hibanHantei == 5) && ((f.gamePhaseNumber % 5) == 0)"]
;奇数の倍数フェーズ(5)が出勤日[p]
	[jump target=*todayWorker]
[elsif exp="(f.hibanHantei == 3) && ((f.gamePhaseNumber % 3) == 0)"]
;奇数の倍数フェーズ(3)が出勤日[p]
	[jump target=*todayWorker]
[elsif exp="f.hibanHantei == 1"]
;奇数フェーズ(1)のみが出勤日[p]
	[jump target=*todayWorker]
[else]
[endif]

;非番です[p]
[jump target=*hibanStart]

*evenMultipleJudge
;偶数もしくは偶数の倍数フェーズが出勤日
[if exp="(f.hibanHantei == 12) && ((f.gamePhaseNumber % 12) == 0)"]
;偶数の倍数フェーズ(12)が出勤日[p]
	[jump target=*todayWorker]
[elsif exp="(f.hibanHantei == 10) && ((f.gamePhaseNumber % 10) == 0)"]
;偶数倍数フェーズ(10)が出勤日[p]
	[jump target=*todayWorker]
[elsif exp="(f.hibanHantei == 8) && ((f.gamePhaseNumber % 8) == 0)"]
;偶数倍数フェーズ(8)が出勤日[p]
	[jump target=*todayWorker]
[elsif exp="(f.hibanHantei == 7) && ((f.gamePhaseNumber % 7) == 0)"]
;偶数倍数フェーズ 5の倍数 が出勤日[p]
	[jump target=*todayWorker]
[elsif exp="(f.hibanHantei == 6) && ((f.gamePhaseNumber % 6) == 0)"]
;偶数倍数フェーズ(6)が出勤日[p]
	[jump target=*todayWorker]
[elsif exp="(f.hibanHantei == 5) && ((f.gamePhaseNumber % 5) == 0)"]
;偶数倍数フェーズ 5の倍数 が出勤日[p]
	[jump target=*todayWorker]
[elsif exp="(f.hibanHantei == 4) && ((f.gamePhaseNumber % 4) == 0)"]
;偶数倍数フェーズ(4)が出勤日[p]
	[jump target=*todayWorker]
[elsif exp="(f.hibanHantei == 3) && ((f.gamePhaseNumber % 3) == 0)"]
;偶数倍数フェーズ 3の倍数 が出勤日[p]
	[jump target=*todayWorker]
[elsif exp="(f.hibanHantei == 0) || (f.hibanHantei == 2)"]
;偶数フェーズ(x2)のみが出勤日[p]
	[jump target=*todayWorker]
[else]
[endif]	
;非番[p]
[jump target=*hibanStart]

「偶数の倍数」を判定しなければならない←これに気づくまでにいろいろ試行錯誤しました。

たとえば、「フェーズ30」は偶数日ですが、同時に「2の倍数」「3の倍数」「5の倍数」「6の倍数」「10の倍数」……でもあるわけです。このあたりの調整に、かなり手こずりました。

偶数と奇数で判定するだけでは不足です。なぜなら奇数倍である「3の倍数」には偶数である「30の倍数」があるからです。

「フェーズ11」は、「奇数」であり「11の倍数」なので単純と思いきや、一方の「フェーズ110」は、「偶数」であり「5の倍数」であり「10の倍数」であり……。

「フェーズ12」は、「偶数」であり「2の倍数」であり「3の倍数」であり「6の倍数」であり「12の倍数」であり……。

「フェーズ13」は、奇数倍ですが、「フェーズ26」になると偶数倍です。

「フェーズ14」は、「偶数」であり「2の倍数」であり「7の倍数」でもあるわけです。単純に「偶数or奇数」で判定するだけでは条件設定が不足です。

ifでうまく振り分けができず、頭がウワーーーーッ!ってなりました。

ちなみに、たとえ出勤パターンを満たしていても「生理休暇」の場合は「非番」扱いになります。


				[//[1]の所属嬢
  [defaultLadyName9, 'SS', 3000, 19, 'flesh', 0, 4],
  [defaultLadyName10, 'A', 2000, 22, 'used', 0, 2],
  [defaultLadyName11, 'B', 1000, 42, 'used', 0, 1],
  [defaultLadyName12, 'B', 1000, 42, 'used', 1, 0], ← ココ
  [defaultLadyName13, 'B', 1000, 42, 'used', 0, 1],
  [defaultLadyName14, 'B', 1000, 42, 'used', 0, 0],
  [defaultLadyName15, 'B', 1000, 42, 'used', 0, 1],
  [defaultLadyName16, 'B', 1000, 42, 'used', 0, 1]

実際のデリヘルでは「おんなのこ休暇」とも呼ばれていますね。デリヘルあるあるネタなので、この機能を欠くわけにはいきません。実装できて良かったです。

たいへん勉強になりました。このあと他の機能にも活かせそうです。

「出勤パターン」「レア出勤」「おんなのこ休暇」という要素は、ゲームに「複雑性」を付与します。ゲーム性の向上につなげることが出来ました。めでたし、めでたし。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

限定特典から探す

記事を検索