アイテム番号: SCP-2655-JP
オブジェクトクラス: Euclid
特別収容プロトコル: 解析部門によるオンライン上のSCP-2655-JPの追跡が実行され、新たに市場へ出現したSCP-2655-JP及びその亜種が確認され次第差し止め・効果の抑制が実施されます。常にSCP-2655-JPを含む端末1機をエリア-81JHに非活性状態で確保し、研究用の予備として作成されたデジタルバックアップとともに保管してください。
説明: SCP-2655-JPはGoI-8102(広域指定暴力団東栄曾直系"有村組")によってかつて販売されていた基本プレイ無料のスマートフォン向けアプリゲーム、"ユビ娘 プリティーケジメ"です。SCP-2655-JPはiOS・Android環境下で動作するように開発され、不明な方法でアプリケーションストアの審査をくぐり抜けて配布されるようになったと見られています。
以下は財団によって転写された、ストアにおけるSCP-2655-JPの紹介ページです。
ユビ娘 プリティーケジメ
【★★★☆☆[3.2]】 |
|
<html ng-app="carousel" ng-controller="CarouselController">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.2/angular.min.js"></script>
<script src="https://dog-punch.wikidot.com/local--code/tes%3A10157/3"></script>
<link href="https://d3g0gp89917ko0.cloudfront.net/v--edac79f846ba/common--theme/base/css/style.css" rel="stylesheet">
<link href="https://www.scp-wiki.net/component:theme/code/1" rel="stylesheet">
<link href="https://dog-punch.wikidot.com/local--code/tes%3A10157/2" rel="stylesheet">
</head>
<body>
<div class="wrapper" id="background">
<div class="carousel">
<div class="horsie" ng-repeat="image in images track by $index"
ng-class="[index > $index ? 'past' : null,
index === $index ? 'present' : null,
index < $index ? 'future' : null]">
<img ng-src="{{image}}">
</div>
</div>
<div class="arrow decrementor"
ng-class="index === 0 ? 'inactive' : 'active'"
ng-click="increment(-1)">
<div class="image"></div>
</div>
<div class="arrow incrementor"
ng-class="index === images.length-1 ? 'inactive' : 'active'"
ng-click="increment(1)">
<div class="image"></div>
</div>
<div class="bubble-holder" ng-class="[options === 'yes' ? null : 'invisible']">
<div class="bubble" ng-repeat="image in images track by $index"
ng-class="[index === $index ? 'present' : null]"
ng-click="selectImage($index)">
</div>
</div>
<div class="control play" ng-click="control('play')"
ng-class="[state === 'play' ? 'active' : null,
options === 'yes' ? null : 'invisible']"></div>
<div class="control pause" ng-click="control('pause')"
ng-class="[state === 'pause' ? 'active' : null,
options === 'yes' ? null : 'invisible']"></div>
</div>
</body>
</html>
html {
width: calc(100% - 32px);
height: calc(100% - 4px);
margin: 0;
padding: 0;
}
body {
width: 100%;
height: 100%;
margin: 0;
padding: 2px 16px;
background: transparent
}
.wrapper {
position: relative;
width: 100%;
height: 100%;
}
.carousel {
position: relative;
width: calc(100% - 2px);
height: calc(100% - 10px);
overflow-x: hidden;
box-sizing: content-box;
}
.horsie {
position: absolute;
height: 100%;
width: 100%;
top: 0;
left: 0;
transform: translate(0, 0);
transition: transform 0.3s ease-in-out;
}
.horsie img {
object-fit: contain;
width: 100%;
height: 100%;
}
.horsie.past {
transform: translate(-100%, 0);
}
.horsie.future {
transform: translate(100%, 0);
}
.arrow {
position: absolute;
top: 0;
bottom: 0;
height: 200%;
width: 100%;
right: 0;
transition: .3s ease-in-out;
}
.arrow:hover {
background: #00000021;
}
.arrow .image {
display: none;
}
.arrow.inactive {
display: none;
}
.arrow.inactive .image {
opacity: 0;
}
.decrementor {
left: 0;
transform: translate(-50%, -50%);
right: inherit;
}
.decrementor .image {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAQAAABLCVATAAAAdElEQVR4AezQJwKAMBQD0DCOjAfD9j1BXVUdR0OxkWzCJvHvD/x5aVxEDMZBWVfAIDB1JQwOY96IUSzGYjCaxdgMJuMwOQJ4c51jlnc0HgsCUs5pPbX82csozaQsFqVuSpksSjIpg0OJBdACqlorw7AEowAAblWUrl8sD5AAAAAASUVORK5CYII=');
}
.incrementor {
right: 0;
transform: translate(50%, -50%);
}
.incrementor .image {
background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAQAAABLCVATAAAAcUlEQVR4Ae3QpwJAUACF4WM+sU6xV9M0TdI8mmR389j+07878PfSHOjYnYAETTdtP5Sh4VAik8pZlMSkChYlM6mSRalLKWN2FqolVLNqGgsyOE/zOZ+9i5FZTMFgJBaT34gRWUzGYAABKYMZizvm75W1TreU8DMmtioAAAAASUVORK5CYII=');
}
.bubble-holder {
display: flex;
position: absolute;
width: 100%;
justify-content: space-around;
align-items: flex-end;
flex-wrap: wrap;
align-content: flex-end;
bottom: 1px;
left: 0;
padding-right: 3px;
box-sizing: border-box;
}
.bubble {
transition: all 0.2s ease-in-out;
background-color: white;
width: 8px;
height: 8px;
flex-grow: 1;
border: 1px solid #bfbfbf;
}
.bubble:hover {
opacity: .3;
}
.bubble.present {
background-color: #181818;
border: 1px solid #181818;
}
.bubble-holder:hover .bubble {
cursor: pointer;
width: 11px;
height: 11px;
}
.control {
position: absolute;
height: 10px;
width: 10px;
left: 5px;
bottom: 5px;
background-size: contain;
opacity: 0.3;
cursor: pointer;
}
.control.active {
opacity: 1;
}
.control.play {
display: none;
}
.control.pause {
display: none;
}
function getQueryVariable(variable) {
var query = document.location.href.match(/\?.*$/g)[0].substring(1);
var vars = query.split("&");
for(var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if(pair[0] === variable) return pair[1];
}
return false;
}
(function(){
var carousel = angular
.module('carousel',[])
.controller('CarouselController',CarouselController);
CarouselController.$inject = ['$scope','$timeout'];
function CarouselController($scope,$timeout){
$scope.images = getQueryVariable("images").split(",").map(v=>v.split('@'));
for(var i = 0; i < $scope.images.length; i++) {
$scope.images[i] = `http:
}
$scope.index = 0;
$scope.increment = function(amount) {
if(amount > 0 && $scope.index < $scope.images.length-1) {
$scope.index += amount;
}
if(amount < 0 && $scope.index > 0) {
$scope.index += amount;
}
$scope.state = "pause";
}
var interval = getQueryVariable("interval") || 0;
if(interval === "{$interval}") interval = 0;
$scope.state = "play";
if(interval === 0) $scope.state = "pause";
function oscillate() {
$timeout(function() {
if(!mouseover && $scope.state === "play") {
if($scope.index < $scope.images.length-1) {
$scope.index++;
} else {
$scope.index = 0;
}
}
if($scope.state === "play") {
oscillate();
}
}, interval*1000, true);
}
var mouseover = false;
document.documentElement.onmouseover = function () {
mouseover = true;
}
document.documentElement.onmouseout = function () {
mouseover = false;
}
if($scope.state === "play") {
oscillate();
}
document.getElementById('background').style.background = getQueryVariable("background");
$scope.selectImage = function(index) {
$scope.index = index;
$scope.state = "pause";
}
$scope.control = function(direction) {
switch(direction) {
case "play":
$scope.state = "play";
oscillate();
break;
case "pause":
$scope.state = "pause";
break;
}
}
$scope.options = getQueryVariable("options");
if($scope.options === "{$options}") $scope.options = "yes";
}
})();
(※画像は開発中のものであり、実際のゲーム画面とは異なる場合があります)
ゲーム情報
バージョン: 1.0.2
提供元: 潮汐ソフト
リリース日: 20██/██/██
レビュー (21件)
説明:
|
 |
無明の夜に、進むべき道を指し示せ アーバンファンタジー入り交じる異常世界で抗争を勝ち抜き、可愛い極道少女とともに血なまぐさい闇社会を成り上がろう。日本のヤクザを題材とした本格的かつポップな大ボリュームのシナリオに、タッチするだけでさくさく進むシンプルで軽快なバトル。個性豊かな女の子との交流は、ストーリーに深く没入できる新技術演出でお届け。
さあ、あなたも"契約"の血しぶきを運命の赤い糸とし、怪奇に満ちた少女たちと仁義を結びましょう。時代の潮目は今ここにある。
SCP-2655-JPのゲームジャンルは現代超常社会をモデルとした舞台で展開されるセミオートバトルRPGであり、登場キャラクターの育成と戦闘によって進展するストーリーを主なゲーム内容としています。これらの登場キャラクターは概ねヒト女性を模した造形が為されており、SCP-2655-JP内では"極道少女"と一貫して総称されています。
SCP-2655-JPのストーリーはこの"極道少女"とプレイヤーとの交流をメインとするものです。作中設定においてプレイヤーは架空の暴力団組織における新人構成員であり、偶然迷い込んだ異空間において出会った人型異常存在である極道少女たちを部下にすることで武力衝突や内部抗争に勝利し、所属組織内における"成り上がり"を達成することが物語上の目標となっています。
このストーリー中で重要なアイテムとして設定されているのが、主人公キャラクターの手指です。物語上においてこの指は人ならざる存在である"極道少女"へと捧げる最高位の供物として描写されており、極道少女との契約・戦闘面での補助・呪術的強化や回復・好感を得るための贈答品など、極道少女に関連する事項であればほぼ万能の媒介物として扱われています。
そのため、SCP-2655-JPのプレイヤーは「主人公が唐突に短刀を取り出して自身の指を切り落とす」旨の記述・シーンへと頻繁に遭遇することとなります。その意味づけは大きく異なるものの、形態的類似からこの指に関する設定は日本の暴力団における慣習の一つである"指詰め"を元に創出されたものと推測されており、作中での発言や描写もこれを顕著に暗示するものです。
実際のゲームシステム面では、このような切り落とされた指は"ユビ"という名称の課金アイテムとして取り扱われます。ユビはデフォルメされた第五指(小指)のアイコンで視覚化されており、先述の物語上での位置づけと同様に様々な用途で使用されますが、専らプレイヤーは「契約の仁儀」という名称の新たな"極道少女"を取得するためのランダム型アイテム提供方式のキャラクターコレクション機能に対してこのユビを消費します。
SCP-2655-JPの異常性はこのガチャ機能の使用時に活性化します。指定された手順に従いガチャ画面に進むと、画面中央には三方の上部を描写したと見られるグラフィックが浮かびます。プレイヤーがこの三方をタップした場合、画面上部から短刀の刃が落ちてくるアニメーションが描画され、刃が画面中央を通過する瞬間鈍い切断音のSEと共に画面が暗転し、ガチャ結果画面へと遷移します。この過程で、プレイヤーは画面をタップする際に自身の指の第3関節(付け根)の箇所に鋭い痛みを報告します。
この痛みは瞬間的かつ非常に軽微なものであり、後述する第二の異常性も併せ、ほとんどのプレイヤーがガチャの結果に意識を向けていることから違和感を抱かれることは非常に希です。しかしながらこの過程をハイスピードカメラで撮影したところ、アニメーション演出と同時にプレイヤーの当該部位には切断・傷口の癒合・別の地点への転送といった複合的な異常現象が瞬時に発生していることが判明しました。
SCP-2655-JPプレイ直後に撮影されたD-85461の掌(認識阻害への対抗補正済み)。小指の切断と転送による僅かな空間の歪みが確認出来る。
SCP-2655-JPの異常性による損傷後、この欠損部分にはおよそ3~4時間をかけてシリコーン樹脂で構成された非常に粗雑な代替器官が新たに生成され、プレイヤーの日常生活及びSCP-2655-JPのプレイを補助します。プレイヤー自身を含め適切な対抗処置を受けていない人物は当該部位の欠損と付随する諸現象に対し違和感を抱きません。また、この代替器官でSCP-2655-JPのガチャ機能を使用した場合、プレイヤーのまだ欠損していない指がランダムに異常性の対象となることが判明しています。
補遺: SCP-2655-JPの異常性が発覚してから行われた追跡実験により、指の転送先が日本国兵庫県の山間部に所在する廃棄施設であることが特定され、速やかに財団による襲撃が実施されました。
施設では転送された指を格納・保存するための設備が整えられており、当該部位が以下の用途に利用された/利用される予定であったことが残存資料及び確保されたGoI-8102構成員の証言から判明しています。
- 指紋情報の不正利用
- DNA情報の収集・売却
- "小枝"としての出荷
- 各種超常組織の呪術的需要に対する提供
また「用途未定」とラベリングされた一部の格納容器からは、舌・左の乳頭・男性器・頭部といった通常と異なる操作方法に由来すると推定される指以外の身体部位が発見されています。これらの人物の特定調査が進行中です。