{
(set: $language to "japanese")
(display: "Set FontSpacing")
}<img src="http://nagasaki-kitty.ca/game/images/nagasaki_kitty_title.jpg" class="image_100">
[彼女は娘の言葉がどこから来たのか理解できなかった。けれど、娘が何らかの恐怖に囚われてるような気はした。」
-- 林 京子
::: [[プレリュード]] :::
::: [[ご案内]] :::
Nagasaki Kitty uses the Twine engine and works like a choose your own adventure story. Your goal is to guide Ayako through Nagasaki in the direct aftermath of the atomic bomb. Read the story closely and look at the options at the bottom of the page. Consider your options carefully and click on the one that you think is best. This will take you through the game to one of the multiple endings.
::: [[English]] :::{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Start Timer")
(display: "Register New Game")
<div id="result"></div>
}
Ayako bursts into the kitchen.
<img src="http://nagasaki-kitty.ca/game/images/begin_ayako_Story.jpg" class="image_100">
<u>Ayako</u>: "Mama, Mama!! That mean old cat scratched me again!!"
<u>Mother</u>: "I thought I told you to stay away from that cat. Besides, you are supposed to be helping me with chores anyway."
<u>Ayako</u>: "Sorry Mama. But he just looks so..."
<u>Mother</u>: "Enough!! You'll be fine. It's just a scratch. Now, go get in line for rations. There is a lot to do today."
::: [[Go get in line for rations]] :::
::: [[Try to find the cat]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
Ayako, disappointed that her mother did not even look at the scratch, decides to go get in line for rations.
She hates waiting in line for rations, but it allows her mom to get the other household chores done, especially after her dad was drafted and sent away to war.
<img src="http://nagasaki-kitty.ca/game/images/rations.jpg" class="image_100">
Ayako cuts between two buildings on her way to the ration depot.
She finds herself walking in the shade of a concrete wall, still thinking about the cat, her mom, her dad, school....
Before the flash interrupted everything.
::: [[90min later]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
Ayako, angry that her mother did not even look at her scratch, exits the house and pretends to walk towards the ration station.
As soon as she thinks that it is safe, she cuts down a side street and loops back around to the back of the house.
<img src="http://nagasaki-kitty.ca/game/images/try_to_find_the_cat.jpg" class="image_100">
"Mr. Cat. Where are you?"
Ayako looks in his usual hiding places and exclaims "Are you here?" each time she looks in a new place.
No matter where Ayako looks she can't find the cat. So she decides to hide in hopes that he will show himself eventually.
She soon falls asleep.
::: [[11:02am]] :::
{
(display: "Radiation Exposure")
(display: "Game Log")
}
Far above Nagasaki a B-29 has just released its payload.
At approximately 503 metres above the city it detonates, creating a flash unparalleled in human history.
Thousands are killed, some reduced to ash instantly, including a girl named Ayako and a mean old cat.
::: [[Postgame]] :::
<img src="http://nagasaki-kitty.ca/game/images/11_02_am.jpg" class="image_100">
{
(display: "Show Timer")
}<h3>Statistics</h3>
Time played: <span class="showTimer"></span>
Number of slides: $num_Slides
Radiation level: $currentRadiationLevel
<div id="stats-radiation">(display: "Radiation Meter")</div>
---
This game is based upon actual events that occurred in Nagasaki after the atom bomb was dropped in 1945. To learn more about the project, its goals, and inspirations please visit our website <a href="http://www.nagasaki-kitty.ca" target="_blank">Nagasaki-kitty.ca</a>.
---
<h3><a href="http://nagasaki-kitty.ca/feedback/" target="_blank">Feedback</a></h3>
If you like the game or found any bug or mistake, please leave us a note. We would love to hear your thoughts.
---
<h3>Credits</h3>
<u>Directed and Written:</u> Ryan Scheiding
<u>Artwork:</u> Marilyn Sugiarto
<u>Algorithms:</u> Luciano Frizzera
<u>3D Character Art:</u> Samia Pedraca
<u>Composer:</u> Steven J. S. Bowcott
<u>Japanese Translator:</u> Mimi Okabe
::: [[Restart]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
<img src="http://nagasaki-kitty.ca/game/images/move_in_closer.jpg" class="image_100">
<div id="_90_minutes_later_text1">
Ayako awakes with a splitting pain in her side.
She is wrapped in darkness.
</div>
::: [[Call for help]]
::: [[Try to free yourself]] :::{
(set: $random_rad_bonus to (random: 1,100))
(if: $random_rad_bonus < 2)[(set: $radiation to $radiation + $rad_blast)]
<!--Dice: $random_rad_bonus-->
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
(set: $time to 0)
(live: 1s)[
(set: $time to $time + 1)
Ayako "HELP!!"
(if: $time > 1)["HELP!!"]
(if: $time > 3)["I'm hurt and I..."]
(if: $time > 4)["I... I'm scared."]
(if: $time > 8)[There is no answer.]
(if: $time > 10)[ ::: [[Try to free yourself]] :::]
]
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
Ayako realizes that even if someone can hear her that they won't be able to see her to help anyway.
<img src="http://nagasaki-kitty.ca/game/images/try_to_free_yourself.jpg" class="image_100">
Ayako tries to move her arms and legs and finds that she is incredibly lucky. A concrete slab has fallen at an angle that provided the perfect sized pocket to protect her.
Ayako manages to turn her head and discovers that she was face down. Above a small shaft of light can be seen. It looks like Ayako can squeeze out.
::: [[Climb out]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
Ayako emerges from her sanctuary and finds herself in a waking nightmare.
The city is gone.
A pile of rubble reduced to cinders and ashes.
<img src="http://nagasaki-kitty.ca/game/images/climb_out.jpg" class="image_100">
But that is not the worst part. Strewed around the immediate area are bodies barely reconigable as human.
Ayako thinks that she may be the last person on earth; or the first person in hell. Either way she feels a crushing, empty loneliness at her very core.
As she tries to determine what to do she hears a voice.
"Oh God!! Help!! I feel it getting closer!! HELP!!"
Ayako can't see the screaming person. She can't even determine if the voice is male or female. But she can tell that it is coming from nearby.
Ayako sees a fire slowly encroaching upon a collasped building. The voice is somewhere in the twisted pile of wood and glass.
::: [[Run towards the fire to try to help.]] :::
::: [[It's too dangerous. Move to safety.]] :::
{
(set: $random_rad_bonus to (random: 1,100))
(if: $random_rad_bonus < 6)[(set: $radiation to $radiation + $rad_blast)]
<!--Dice: $random_rad_bonus-->
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
Ayako bravely sprints towards the voice as fast as she can.
"Hold on!! I'm coming!!"
<img src="http://nagasaki-kitty.ca/game/images/run_toward_the_fire_to_try_to_help.jpg" class="image_100">
As she approaches the wreckage she can no longer hear the voice and the fire is much closer than she first thought. It may actually already have made it to its destination. But Ayako still isn't close enough to tell for sure.
::: [[It's too dangerous. Move to safety.]] :::
::: [[Move in closer.]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
Ayako takes one last look at the fire. She takes a step towards the smoldering flames before turning and running as fast as she can.
<u>Ayako</u>: "I'm sorry!! I can't. I'm sorry."
She continues in no particuar direction.
<img src="http://nagasaki-kitty.ca/game/images/its_too_dangerous.jpg" class="image_100">
Ayako: "I'm sorry. I'm sorry. I can't. I'm just little. I'm sorry."
The world passes by in a blur.
<u>Ayako</u>: "I'm sorry. I'm sorry. I'M SORRY!!"
Ayako catches her foot and falls into a heap. Crying.
<u>Ayako</u>: "I'm sorry. I...I..."
Just then she hears another voice.
Unknown Survivor: "Please...Please...It hurts...water..."
::: [[Ayako looks towards the voice]] ::::
{
(display: "Radiation Exposure")
(display: "Game Log")
}
<img src="http://nagasaki-kitty.ca/game/images/move_in_closer.jpg" class="image_100">
<div id="move_in_closer_text1">
Ayako finally gets close enough to the fire to see that it has not reached the rubble, but she still cannot hear the voice any longer.
<u>Ayako</u>: "Hello are you there? Let me help you. I can help you."
</div>
The fire is quickly spreading but Ayako sees a tunnel into the rubble much like the one she just climbed out of. Without thinking she plunges her head in and sees a man passed out in the rubble.
The smoke is thick and the fire is approaching but Ayako does her best to reach the man.
<u>Ayako</u>: "[Cough] Mister, Mister [Cough, Cough] we need to run. The... fire... is..."
Just as Ayako reaches her hand to touch the man's shoulder the smoke becomes too much to handle. She is dizzy and tired.
Her eyelids become heavy, her breathing becomes slow, her muscles refuse to respond and the fire spreads.
::: [[Postgame]] :::{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
Ayako can't believe her eyes. Before her is a... woman? It is nearly impossible to tell. There are no clothes on the body and the hair is gone as well.
Ayako wonders to herself if the flash did this. She always heard the adults talking about American bombs and had been told to hide herself every time that the air raid sirens went off. But no one had ever said that the bombs did this. That they...
Ayakos's thoughts are interrupted.
<img src="http://nagasaki-kitty.ca/game/images/ayako_looks_towards_the_voice.jpg" class="image_100">
<u>Unknown survivor</u>: "Please... water... so... thirsty... water..."
Ayako is surprised that this person is alive at all. It doesn't look like there is much that she can do. But the voice from the fire stops her from leaving immediately."
::: [[Go find water.]] :::
::: [[Comfort the Unknown Survivor]] :::
::: [[I need Mama (Leave)]] :::
{
(set: $random_rad_bonus to (random: 1,100))
(if: $random_rad_bonus < 26)[(set: $radiation to $radiation + $rad_blast)]
<!--Dice: $random_rad_bonus-->
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
<u>Ayako</u>: "I'll go get water for you right away. I'll be back as quickly as I can."
Ayako, having not seen any water before she tripped over the woman, takes off in the opposite direction. She does not know if there will be any water in this direction, but she is determined to help the woman as best she can.
The surrounding area is oddly silent. What is usually a bustling cityscape is empty. Ayako crests the top of a nearby hill and sees the remains of an obliterated house. Sticking out of the rubble is a warped pipe, leaking a steady stream of water.
<img src="http://nagasaki-kitty.ca/game/images/go_find_water.jpg" class="image_100">
Ayako rushes towards the pipe. Luckily a bowl, only partially broken by the flash, is nearby. When it is full Ayako sees that, while not dirty, the water is cloudy as is swishes in the bowl.
Ayako: "I hope that this is okay to drink. Hold on elder sister. I am on my way."
::: [[Comfort the Unknown Survivor]] :::: {
(set: $random_rad_bonus to (random: 1,100))
(if: $random_rad_bonus < 8)[(set: $radiation to $radiation + $rad_blast)]
<!--Dice: $random_rad_bonus-->
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
Ayako looks closer at the woman. She is gone. Another victim of the flash.
::: [[I need Mama (Leave)]] :::
<img src="http://nagasaki-kitty.ca/game/images/comfort_the_unknown_survivor.jpg" class="image_100">{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
Today has been filled with nothing but pain and Ayako feels totally helpless. What can a little girl do to help?
Ayako wished she was bigger. Then she could help everyone. Although, she didn't quite know how. She only knew that if she was bigger, like mama or papa, that everything would be okay.
::: [[It is time to move on]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
The passing thought of mama makes Ayako want to get home even more. She takes a moment to look around. She only just now realizes that she doesn't have any idea where she is.
Other than a few trips to Auntie's in the country, Ayako has spent her entire life in the city and now it is... gone.
<img src="http://nagasaki-kitty.ca/game/images/clocktower1.jpg" class="image_100">
<u>Ayako</u>: "Mama... where are you?"
Ayako looks into the distance. In every direction there is destruction.
But then...
::: [[A building in the distance sticks out to her.]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
<img src="http://nagasaki-kitty.ca/game/images/clocktower3.jpg" class="image_100">
Ayako quickly arrives at the clock tower, still unable to figure out why it looked so different to her. But there was a problem, a large amount of rubble blocked her way. The rubble is piled high and looks unstable.
<u>Ayako</u>: "Oh no. What do I do now?"
::: [[Climb over the rubble]] :::
::: [[Find a way around (right)]] :::
::: [[Find a way around (left)]] :::
{
(display: "Radiation Exposure")
(display: "Game Log")
}
Ayako looks at the rubble, trying to see a way that she can get over. She hesitently places her foot on a small outcropping at the bottom of the wood, metal, and other debris. She finds a place to grab with her left hand, then her right. She finds that she is slowly making progress up the pile.
Suddenly, Ayako hears a creaking noise which quickly grows into a rumble. Her weight, though slight, has caused the debris to shift. Before she can brace against it a large piece of the rubble shifts and falls.
<img src="http://nagasaki-kitty.ca/game/images/climb_over_the_rubble.jpg" class="image_100">
***
Two days later a party collecting, identifying and burning corpses will find Ayako's small body crushed under the rubble. She will never be identified and no one will ever know that she survived the initial blast. She is a faceless, nameless victim of the flash.
A small girl is rendered a statistic.
::: [[Postgame]] :::
{
(set: $random_rad_bonus to (random: 1,100))
(if: $random_rad_bonus < 11)[(set: $radiation to $radiation + $rad_blast)]Dice: <!--$random_rad_bonus-->
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
Ayako thinks briefly about trying to climb the pile. It looks possible to get over, if she was bigger. But Ayako is small and the world is big.
<u>Ayako</u>: "Maybe I can find a way around."
<img src="http://nagasaki-kitty.ca/game/images/find_a_way_around_right.jpg" class="image_100">
Ayako goes to her right and inspects the area. The debris looks just as solid here as the spot where she began so she returns to her starting point. It at least looked a little more manageable.
::: [[Climb over the rubble]] :::
::: [[Find a way around (left)]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
<img src="http://nagasaki-kitty.ca/game/images/find_a_way_around_left.jpg" class="image_100">
Ayako looks to the left of the debris. That is when she sees it. A beam has fallen at an angle that has created a small gap. Most people would not have been able to fit through, but Ayako can go through with ease.
For the first time today Ayako is happy to be small.
::: [[Go through the gap]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
Ayako emerges from the gap hoping that somehow the flash had not reached her street. That somehow it bypassed her house and that she would find mama in the kitchen, doing the chores and waiting for Ayako to return. Ayako even briefly worried that mama would be mad at her for being gone so long... and for not bringing back the rations.
<img src="http://nagasaki-kitty.ca/game/images/go_through_the_gap.jpg" class="image_100">
But when Ayako looked at her street she found it had not been spared by the flash. It too was destroyed. Ayako was starting to feel that she would never be able to find mama.
She felt alone.
::: [[Suddenly a voice calls out]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
The stranger's face bends into a look of anguish.
<u>Stranger</u>: "No... of course you aren't Nozomi... Nozomi... is... not here..."
Ayako is heartbroken at the solemn look on the stranger's face.
<u>Ayako</u>: "Don't worry. I'm sure that you will find Nozomi. I'll try to find her too and if I do I'll tell her that you are looking for her."
The stranger, of course, realized the impossiblity of what Ayako was saying. But he smiled at the young girl's strength. He found himself unable to respond, so he merely smiled at Ayako and walked away.
Ayako looked around. She didn't quite know how but she knew that her home was very close. She could feel it.
::: [[Run home]] :::
{
(display: "Radiation Exposure")
(display: "Game Log")
}
The stranger looks almost surprised by Ayako's words.
<u>Stranger</u>: "Nozomi?"
He asks again. It is clear that even he had not beleived his initial claim. He had just so desperately wanted it to be true.
<u>Ayako</u>: "Yes. It's me. I am Nozomi."
<img src="http://nagasaki-kitty.ca/game/images/father.jpg" class="image_100">
The stranger reached out his hand and Ayako accepted it.
<u>Stranger</u>: "We need to leave this place. I have heard that there is an aid station outside the city. If we get there we will be safe."
The three headed off towards the outskirts of the city.
<u>Ayako</u>: (whisper) "Don't worry mama. I'll be safe."
::: [[Postgame]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
Ayako runs as fast as she can and then she finds it. The house has been destroyed. All that remains is a pile of rubble.
<u>Ayako</u>: "Mama?"
Just then she hears a noise from the rubble.
<u>Noise</u>: "Mrrroow... mrroow..."
::: [[Investigate the noise]] :::
::: [[Look for Mama]] :::
{
(display: "Radiation Exposure")
(display: "Game Log")
}
Ayako wants to find Mama. But she can't ignore the noise.
It isn't hard to find. It is close.
<u>Noise</u>: "Mrroow"
Ayako identifes where the noise is coming from and starts to move pieces of rubble. The noise becomes clearer to her and she soon realizes that it is the cat.
Just this morning Ayako was so mad at the cat. But she couldn't ignore him now. Ayako may have been small but she was big enough to help the cat.
She removed a large block and finally came face to face with the cat.
<img src="http://nagasaki-kitty.ca/game/images/investigate_the_noise.jpg" class="image_100">
<u>Cat</u>: "MRRROOWW! MRRROOWWW!"
The cat was bloodied and beaten. Both of its back legs had been crushed and it was in a great deal of pain.
Ayako scoops up the cat in her arms and sits down.
<u>Cat</u>: "MRRROOWW!"
Ayako stroked the cat's head.
<u>Ayako</u>: (eyes filling with tears) "Shhh! It's okay. I'm here. I'm sorry I was mad before.... It's okay."
::: [[Postgame]] :::
{
(display: "Radiation Exposure")
(display: "Game Log")
}
Whatever the noise is, it isn't Mama, and Ayako is desperate to find her.
Ayako tries to determine where the kitchen was because that must be where Mama is, waiting for her.
<img src="http://nagasaki-kitty.ca/game/images/look_for_mama.jpg" class="image_100">
She finds a spot that must be the kitchen and frantically starts digging at the rubble. She moves piece after piece. When she finds something that is too big to move she roots around in another spot.
Eventually Ayako's digging loses all strategy, all sense. She is desperate to see Mama. She claws at the rubble, cutting herself, breaking her fingernails.
<u>Ayako</u>:
"Mama, I'm coming. Mama, don't worry I'll find you. Mama? Mama! MAMA!!"
::: [[Postgame]] :::
{
(display: "Radiation Exposure")
(display: "Game Log")
}
Ayako continues her journey but she feels lightheaded. Very suddenly she feels sick to her stomach. She rubs sweat from her forehead and brushes some stray hair out of her eyes.
But something feels off...
When she looks in her hand she sees that she is holding a large clump of hair.
She touches her head again and more hair falls out.
The sick feeling in her stomach lurches forward and she vomits. The vomiting is the most intense she has ever experienced. She falls over on her side and vomits again.
<img src="http://nagasaki-kitty.ca/game/images/ayako_starts_to_feel_lightheaded.jpg" class="image_100">
Ayako, clasping a handful of her own hair and with blood streaming from her mouth, manages to let out one final word.
It is no louder than a whisper.
"Mama..."
::: [[Postgame]] :::{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
<u>Ayako</u>: "I know that place! That is the clock tower near our house. But it looks different."
<img src="http://nagasaki-kitty.ca/game/images/clocktower2.jpg" class="image_100">
Due to the extent of the destruction, Ayako did not realize how close to her house that she had been the whole time she was running.
She also did not realize that the 2nd floor of the 2 story clock tower had survived relatively intact while the 1st floor had been obliterated. The building looked different to her because the the clock tower was now on the ground level but she just couldn't quite make the connection.
<u>Ayako</u>: "I'm coming to find you mama! Hold on I'll be there soon!"
::: [[Head towards the clock tower.]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
<u>Stranger</u>: "Nozomi! Nozomi! Over here! I can't believe that you made it. Where have you been?"
It takes Ayako a moment to realize that the stranger is calling to her and that they are not alone. She sees a man, his arm and head heavily injured and raggedly bandaged, calling to her. He is holding a baby with his good arm. It cannot be more than a few months old.
<u>Stranger</u>: "Nozomi, don't you recognize me? It's father."
<img src="http://nagasaki-kitty.ca/game/images/suddenly_a_voice_calls_out.jpg" class="image_100">
The man is clearly injured but Ayako can't tell if he thinks that she is his daughter, or if he just wants her to be.
Suddenly Ayako is not alone. What if she never finds mama? What if she has to be alone forever?
Ayako looks to the stranger and says...
::: [["I'm not Nozomi. I'm Ayako and I need to get home."]] :::
::: [["Father!!]] :::
1. add audio.
just after <body>
<audio autoplay loop>
<source src="http://nagasaki-kitty.ca/game/music/Aftermath.mp3" type="audio/mpeg">
</audio>(set: $num_Slides to 0)
(set: $radiation to 0)
(set: $min_radiation_increase to 1)
(set: $max_radiation_increase to 3)
(set: $rad_blast to 20)
(set: $rad_die_level to 47)
(set: $currentRadiationLevel to 1)
(set: $radiationLevelThreshold to 8)
(display: "Google Analytics")
(display: "easytimer.js")
(display: "js init")
(goto: "Language")
{
(set: $num_Slides to $num_Slides + 1)
(set: $random_rad to (random: $min_radiation_increase,$max_radiation_increase))
(set: $radiation to $radiation + $random_rad)
(if: $radiation > $rad_die_level)[(goto: "Ayako starts to feel lightheaded")]
(set: $currentRadiationLevel to (floor: $radiation/$radiationLevelThreshold))
}<div class="headerPassage">
(display: "Radiation Meter")
</div>(goto: "Init"){
<div class="hidden-radiation-score">$radiation</div>
<!--
radiation: $radiation
currentRadiationLevel: $currentRadiationLevel
-->
(if: $currentRadiationLevel is 5)[
<img src="http://nagasaki-kitty.ca/game/assets/radiation_icon_5.png">
](else-if: $currentRadiationLevel is 4)[
<img src="http://nagasaki-kitty.ca/game/assets/radiation_icon_4.png">
](else-if: $currentRadiationLevel is 3)[
<img src="http://nagasaki-kitty.ca/game/assets/radiation_icon_3.png">
](else-if: $currentRadiationLevel is 2)[
<img src="http://nagasaki-kitty.ca/game/assets/radiation_icon_2.png">
](else-if: $currentRadiationLevel is 1)[
<img src="http://nagasaki-kitty.ca/game/assets/radiation_icon_1.png">
](else:)[
<img src="http://nagasaki-kitty.ca/game/assets/radiation_icon_0.png">
]
}
<script>
/**
* @license easytimer.js v1.0
* Created by Albert González
* Licensed under The MIT License.
*
* @class Timer
*/
var module;
var Timer = (
function (module) {
'use strict';
/*
* Polyfill por IE9, IE10 and IE11
*/
var CustomEvent = typeof window !== 'undefined' ? window.CustomEvent : undefined;
if (typeof window !== 'undefined' && typeof CustomEvent !== "function" ) {
CustomEvent = function ( event, params ) {
params = params || { bubbles: false, cancelable: false, detail: undefined };
var evt = document.createEvent( 'CustomEvent' );
evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );
return evt;
};
CustomEvent.prototype = window.Event.prototype;
window.CustomEvent = CustomEvent;
}
/*
* General functions, variables and constants
*/
var SECOND_TENTHS_PER_SECOND = 10,
SECONDS_PER_MINUTE = 60,
SECOND_TENTHS_PER_MINUTE = 600,
MINUTES_PER_HOUR = 60,
SECONDS_PER_HOUR = 3600,
SECOND_TENTHS_PER_HOUR = 36000,
HOURS_PER_DAY = 24,
SECOND_TENTHS_POSITION = 0,
SECONDS_POSITION = 1,
MINUTES_POSITION = 2,
HOURS_POSITION = 3,
DAYS_POSITION = 4,
SECOND_TENTHS = 'secondTenths',
SECONDS = 'seconds',
MINUTES = 'minutes',
HOURS = 'hours',
DAYS = 'days',
unitsInMilliseconds = {
secondTenths: 100,
seconds: 1000,
minutes: 60000,
hours: 3600000,
days: 86400000
},
events = module && module.exports? require('events') : undefined,
prototype;
function hasDOM() {
return typeof document !== 'undefined';
}
function hasEventEmitter() {
return events;
}
function mod(number, module) {
return ((number % module) + module) % module;
}
function leftPadding(string, padLength, character) {
var i,
characters = '';
for (i = 0; i < padLength; i = i + 1) {
characters += String(character);
}
return (characters + string).slice(-characters.length);
}
/**
* [TimeCounter Stores the units counted by the timer]
*/
function TimeCounter() {
this.secondTenths = 0;
this.seconds = 0;
this.minutes = 0;
this.hours = 0;
this.days = 0;
/**
* [toString convert the counted values on a string]
* @param {[array]} units [array with the units to display]
* @param {[string]} separator [separator of the units]
* @param {[integer]} leftZeroPadding [number of zero padding]
* @return {[string]} [result string]
*/
this.toString = function(units, separator, leftZeroPadding) {
units = units || ['hours', 'minutes', 'seconds'];
separator = separator || ':';
leftZeroPadding = leftZeroPadding || 2;
var stringTime,
arrayTime = [],
i,
zeros = '';
for (i = 0; i < leftZeroPadding; i = i + 1) {
zeros += '0';
}
for (i = 0; i < units.length; i = i + 1) {
if (this[units[i]] !== undefined) {
arrayTime.push(leftPadding(this[units[i]], leftZeroPadding, '0'));
}
}
stringTime = arrayTime.join(separator);
return stringTime;
};
}
/**
* [Timer Timer/Chronometer/Countdown compatible with AMD and NodeJS.
* Can update time values with different time intervals: tenth of seconds,
* seconds, minutes and hours.]
*/
function Timer() {
/*
* PRIVATE Variables and Functions
*/
var counters = new TimeCounter(),
totalCounters =new TimeCounter(),
intervalId,
eventEmitter = hasDOM()? document.createElement('span') :
hasEventEmitter()? new events.EventEmitter() : undefined,
running = false,
paused = false,
precision,
valueToAdd,
customCallback,
timerConfig = {},
target,
startValues,
countdown;
function isCountdownTimer() {
return timerConfig.countdown;
}
function updateCounters(counter, value) {
counters[counter] += value;
totalCounters[counter] += value;
}
function updateDays(value) {
updateCounters(DAYS, value);
dispatchEvent('daysUpdated');
}
function updateHours(value) {
updateCounters(HOURS, value);
counters.hours = mod(counters.hours, HOURS_PER_DAY);
if ((isCountdownTimer() && counters.hours === HOURS_PER_DAY - 1) ||
(!isCountdownTimer() && counters.hours === 0)) {
updateDays(value);
}
if (precision === HOURS) {
totalCounters[MINUTES] += isCountdownTimer() ? -MINUTES_PER_HOUR : MINUTES_PER_HOUR;
totalCounters[SECONDS] += isCountdownTimer() ? -SECONDS_PER_HOUR : SECONDS_PER_HOUR;
totalCounters[SECOND_TENTHS] += isCountdownTimer() ? -SECOND_TENTHS_PER_HOUR : SECOND_TENTHS_PER_HOUR;
}
dispatchEvent('hoursUpdated');
}
function updateMinutes(value) {
updateCounters(MINUTES, value);
counters.minutes = mod(counters.minutes, MINUTES_PER_HOUR);
if ((isCountdownTimer() && counters.minutes === MINUTES_PER_HOUR - 1) ||
(!isCountdownTimer() && counters.minutes === 0)) {
updateHours(value);
}
if (precision === MINUTES) {
totalCounters[SECONDS] += isCountdownTimer() ? -SECONDS_PER_MINUTE : SECONDS_PER_MINUTE;
totalCounters[SECOND_TENTHS] += isCountdownTimer() ? -SECOND_TENTHS_PER_MINUTE : SECOND_TENTHS_PER_MINUTE;
}
dispatchEvent('minutesUpdated');
}
function updateSeconds(value) {
updateCounters(SECONDS, value);
counters.seconds = mod(counters.seconds, SECONDS_PER_MINUTE);
if ((isCountdownTimer() && counters.seconds === SECONDS_PER_MINUTE - 1) ||
(!isCountdownTimer() && counters.seconds === 0)) {
updateMinutes(value);
}
if (precision === SECONDS) {
totalCounters[SECOND_TENTHS] += isCountdownTimer() ? -SECOND_TENTHS_PER_SECOND : SECOND_TENTHS_PER_SECOND;
}
dispatchEvent('secondsUpdated');
}
function updateSecondTenths(value) {
updateCounters(SECOND_TENTHS, value);
counters.secondTenths = mod(counters.secondTenths, SECOND_TENTHS_PER_SECOND);
if ((isCountdownTimer() && counters.secondTenths === SECOND_TENTHS_PER_SECOND - 1) ||
(!isCountdownTimer() && counters.secondTenths === 0)) {
updateSeconds(value);
}
dispatchEvent('secondTenthsUpdated');
}
function stopTimer() {
clearInterval(intervalId);
intervalId = undefined;
running = false;
paused = false;
}
function startTimer() {
var callback,
interval = unitsInMilliseconds[precision];
switch (precision) {
case DAYS:
callback = updateDays;
break;
case HOURS:
callback = updateHours;
break;
case MINUTES:
callback = updateMinutes;
break;
case SECOND_TENTHS:
callback = updateSecondTenths;
break;
default:
callback = updateSeconds;
}
intervalId = setInterval(
function () {
callback(valueToAdd);
customCallback(counters);
if (isTargetAchieved()) {
dispatchEvent('targetAchieved');
stop();
}
},
interval
);
running = true;
paused = false;
}
function isRegularTimerTargetAchieved() {
return counters.days > target[DAYS_POSITION]
|| (counters.days === target[DAYS_POSITION] && (counters.hours > target[MINUTES_POSITION]
|| (counters.hours === target[HOURS_POSITION] && (counters.minutes > target[MINUTES_POSITION]
|| (counters.minutes === target[MINUTES_POSITION] && (counters.seconds >= target[SECONDS_POSITION]
|| (counters.seconds === target[SECONDS] && counters.secondTenths >= target[SECOND_TENTHS_POSITION])))))));
}
function isCountdownTimerTargetAchieved() {
return counters.days < target[DAYS_POSITION]
|| (counters.days === target[DAYS_POSITION] && (counters.hours < target[HOURS_POSITION]
|| (counters.hours === target[HOURS_POSITION] && (counters.minutes < target[MINUTES_POSITION]
|| (counters.minutes === target[MINUTES_POSITION] && (counters.seconds < target[SECONDS_POSITION]
|| (counters.seconds === target[SECONDS_POSITION] && (counters.secondTenths <= target[SECOND_TENTHS_POSITION]))))))));
}
function isTargetAchieved() {
return target instanceof Array &&
(timerConfig.countdown && isCountdownTimerTargetAchieved() || !timerConfig.countdown && isRegularTimerTargetAchieved());
}
function resetCounters() {
for (var counter in counters) {
if(counters.hasOwnProperty(counter) && typeof counters[counter] === 'number'){
counters[counter] = 0;
}
}
for (var counter in totalCounters) {
if(totalCounters.hasOwnProperty(counter) && typeof totalCounters[counter] === 'number'){
totalCounters[counter] = 0;
}
}
}
function setParams(params) {
precision = params && typeof params.precision === 'string' ? params.precision : SECONDS;
customCallback = params && typeof params.callback === 'function'? params.callback : function () {};
valueToAdd = params && params.countdown === true? -1 : 1;
countdown = params && params.countdown == true;
if (params && (typeof params.target === 'object')) { setTarget(params.target)};
if (params && (typeof params.startValues === 'object')) { setStartValues(params.startValues)};
target = target || !countdown? target : [0, 0, 0, 0, 0];
timerConfig = {
precision: precision,
callback: customCallback,
countdown: typeof params === 'object' && params.countdown == true,
target: target,
startValues: startValues
}
}
function configInputValues(inputValues) {
var secondTenths, seconds, minutes, hours, days, values;
if (typeof inputValues === 'object') {
if (inputValues instanceof Array) {
if (inputValues.length != 5) {
throw new Error('Array size not valid');
}
values = inputValues;
} else {
values = [
inputValues.secondTenths || 0, inputValues.seconds || 0,
inputValues.minutes || 0, inputValues.hours || 0,
inputValues.days || 0
];
}
}
for (var i = 0; i < inputValues.length; i = i + 1) {
if (inputValues[i] < 0) {
inputValues[i] = 0;
}
}
secondTenths = values[SECOND_TENTHS_POSITION];
seconds = values[SECONDS_POSITION] + Math.floor(secondTenths / SECOND_TENTHS_PER_SECOND);
minutes = values[MINUTES_POSITION] + Math.floor(seconds / SECONDS_PER_MINUTE);
hours = values[HOURS_POSITION] + Math.floor(minutes / MINUTES_PER_HOUR);
days = values[DAYS_POSITION] + Math.floor(hours / HOURS_PER_DAY);
values[SECOND_TENTHS_POSITION] = secondTenths % SECOND_TENTHS_PER_SECOND;
values[SECONDS_POSITION] = seconds % SECONDS_PER_MINUTE;
values[MINUTES_POSITION] = minutes % MINUTES_PER_HOUR;
values[HOURS_POSITION] = hours % HOURS_PER_DAY;
values[DAYS_POSITION] = days;
return values;
}
function setTarget(inputTarget) {
target = configInputValues(inputTarget);
}
function setStartValues(inputStartValues) {
startValues = configInputValues(inputStartValues);
counters.secondTenths = startValues[SECOND_TENTHS_POSITION];
counters.seconds = startValues[SECONDS_POSITION];
counters.minutes = startValues[MINUTES_POSITION];
counters.hours = startValues[HOURS_POSITION]
counters.days = startValues[DAYS_POSITION]
totalCounters.days = counters.days;
totalCounters.hours = totalCounters.days * HOURS_PER_DAY + counters.hours;
totalCounters.minutes = totalCounters.hours * MINUTES_PER_HOUR + counters.minutes;
totalCounters.seconds = totalCounters.minutes * SECONDS_PER_MINUTE + counters.seconds;
totalCounters.secondTenths = totalCounters.seconds * SECOND_TENTHS_PER_SECOND + counters.secondTenths;
}
/*
* PUBLIC functions
*/
/**
* [stop stops the timer and resets the counters. Dispatch stopped event]
*/
function stop() {
stopTimer();
resetCounters();
dispatchEvent('stopped');
}
/**
* [start starts the timer configured by the params object. Dispatch started event]
* @param {[object]} params [Configuration parameters]
*/
function start(params) {
if (this.isRunning()) {
throw new Error('Timer already running');
}
if (!this.isPaused()) {
setParams(params);
}
if (!isTargetAchieved()) {
startTimer();
dispatchEvent('started');
}
}
/**
* [pause stops the timer without resetting the counters. The timer it can be restarted with start function.
* Dispatch paused event]
* @return {[type]} [description]
*/
function pause() {
stopTimer();
paused = true;
dispatchEvent('paused');
}
/**
* [addEventListener Adds event listener to the timer]
* @param {[string]} event [event to listen]
* @param {[function]} listener [the event listener function]
*/
function addEventListener(event, listener) {
if (hasDOM()) {
eventEmitter.addEventListener(event, listener);
} else if (hasEventEmitter()) {
eventEmitter.on(event, listener)
}
}
/**
* [removeEventListener Removes event listener to the timer]
* @param {[string]} event [event to remove listener]
* @param {[function]} listener [listener to remove]
*/
function removeEventListener(event, listener) {
if (hasDOM()) {
eventEmitter.removeEventListener(event, listener);
} else if (hasEventEmitter()) {
eventEmitter.removeListener(event, listener);
}
}
/**
* [dispatchEvent dispatchs an event]
* @param {string} event [event to dispatch]
*/
function dispatchEvent(event) {
if (hasDOM()) {
eventEmitter.dispatchEvent(new CustomEvent(event));
} else if (hasEventEmitter()) {
eventEmitter.emit(event)
}
}
/**
* [isRunning return true if the timer is running]
* @return {Boolean}
*/
function isRunning() {
return running;
}
/**
* [isPaused returns true if the timer is paused]
* @return {Boolean}
*/
function isPaused() {
return paused;
}
/**
* [getTimeValues returns the counter with the current timer values]
* @return {[TimeCounter]}
*/
function getTimeValues() {
return counters;
};
/**
* [getTotalTimeValues returns the counter with the current timer total values]
* @return {[TimeCounter]}
*/
function getTotalTimeValues() {
return totalCounters;
};
/**
* [getConfig returns the configuration paramameters]
* @return {[type]}
*/
function getConfig () {
return timerConfig;
};
/**
* Public API
* Definition of Timer instance public functions
*/
if (typeof this !== 'undefined') {
this.start= start;
this.pause = pause;
this.stop = stop;
this.isRunning = isRunning;
this.isPaused = isPaused;
this.getTimeValues = getTimeValues;
this.getTotalTimeValues = getTotalTimeValues;
this.getConfig = getConfig;
this.addEventListener = addEventListener
this.removeEventListener = removeEventListener;
}
};
if (module && module.exports) {
module.exports = Timer;
} else if (typeof define === 'function' && define.amd) {
define([], function() {
return Timer;
});
}
return Timer;
}(module)
);
</script>w<script>
var showTimer = $(".showTimer");
showTimer.html(timer.getTimeValues().toString());
</script><script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-1818150-29', 'auto');
ga('send', 'pageview');
</script><script>
var timer = new Timer();
timer.start();
</script><script>
var gameID;
var passageTitle;
var radiationLevel;
</script><script>
radiationLevel = $(".hidden-radiation-score")[0].innerText;
</script>{
(display: "Get PassageTitle")
(display: "Get RaditionLevel")
(display: "Get Language")
<script>
var postData = {
action: "add",
time: timer.getTimeValues().toString(),
lang: language,
radiation: radiationLevel,
slide: passageTitle
};
$.post( "http://nagasaki-kitty.ca/game/php/logManager.php", postData)
.done(function( data ) {
gameID = data.gameID;
/*console.log(data);*/
});
</script>
}{
(display: "Get PassageTitle")
(display: "Get RaditionLevel")
<script>
var postData = {
action: "update",
gameID: gameID,
slide: passageTitle,
time: timer.getTimeValues().toString(),
radiation: radiationLevel
}
</script>
(if: (passage:)'s tags contains "ending")[
<script>
postData.completed = 1;
postData.end_type = passageTitle;
</script>
]
<script>
$.post( "http://nagasaki-kitty.ca/game/php/logManager.php", postData)
.done(function( data ) {
/*console.log(data);*/
});
</script>
}<div class="hidden-passage-title">(print: (passage:)'s name)</div>
<script>
passageTitle = $(".hidden-passage-title")[0].innerText;
</script>(set: $radiation to 0)
(set: $num_Slides to 0)
昭和20年(1945年)八月九日 10:00時
部隊は長崎の熱い真夏の朝。
今日はもうすでにいくつかの空襲警報があった。でも、長崎市民はこのような日常生活に慣れていた。
人々は、食糧をもらいに行くため行列に並んだり、学校では授業が行われていたり、病院で治療を受けてる人もいた。
確かに日常と変わらぬ普通の一日だ。まぁ、それこそ戦争の間の通常通りだ。
十歳の少女がいた。彼女は、学校へ行かず家でお母さんのお手伝いをしている。彼女の名は安夜子。おそらく、今日は、猫と一緒に遊んでいるそうだ。
::: [[安夜子の物語開始]] :::
長崎キティはTwine engineという様々なビジュアルノベル系ゲームや、アドベンチャーストーリーゲーム等をクリエイトできるソフトウェアを使用したゲームです。このゲームは、安夜子と言う少女の物語です。ゲームの目的は、彼女を原爆で破壊された長崎の町の中を案内することです。ページごとに下のオプションを選んでもらい、その選んだ話の続きが読める仕掛けとなっています。違うエンディングがいくつかあるので、何度もゲームをお試し下さい。
::: [[日本語]] :::(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Start Timer")
(display: "Register New Game")
<div id="result"></div>
安夜子は、台所へ飛び込んできた。
<img src="http://nagasaki-kitty.ca/game/images/begin_ayako_Story.jpg" class="image_100">
<u>安夜子</u>: 「ママ、ママ!!また、あの可愛くない猫に引っ掻かれたよ!!」
<u>お母さん</u>: 「しょんなかぁ、あの猫に近寄らないようにとなんども中止したじゃない。それに、今日はママのお手伝いをするって言ってなかった?」
<u>安夜子</u>:「ごめんなさい。でも、あの猫が。。。」
<u>お母さん</u>:「もういい加減にしなさい。大丈夫よ、小さな傷なんだから。さぁ、さっさと食糧をもらいに行きなさい。今日は忙しいんだから。」
::: [[食糧をもらいに出かける]] :::
::: [[猫を探しに行く]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
母親に構ってもらえず、いじけた安夜子は食糧をもらいに出かけることにした。
安夜子は、食糧をもらいに行くため行列に並ぶのが苦手のようだ。でも、その間お母さんが家で別の仕事をやったいるからしょうがいと安夜子は思った。それに、安夜子のお父さんは戦争に起草され、家にはもういなかった。
<img src="http://nagasaki-kitty.ca/game/images/rations.jpg" class="image_100">
安夜子は建物の間を擦り通って、配給倉庫へ向かった。
コンクリートの壁の影を通りながら、安夜子は猫のことや、お母さんのことや、お父さんのことや、学校のことなどで頭がいっぱいだった。。。
その時だった。眩しい光に突然時が止まった。
::: [[90分後]] :::
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
安夜子は、ママに構ってもらえず機嫌が悪かったので、食糧をもらいに出かけるふりをした。
ママが見えないところまで行くと安夜子は、横道を通り、こっそり家の庭へ戻った。
<img src="http://nagasaki-kitty.ca/game/images/try_to_find_the_cat.jpg" class="image_100">
「猫さーん、どこですか?」
猫がよく隠れている場所を安夜子は次々と探った。
「猫さーん、ここかなぁ?」
だが、どこ探しても、猫は見つからなかった。
安夜子は、猫が現れるまで隠れる事にした。
待ちくたびれた安夜子は寝てしまった。
::: [[11:02時]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
<img src="http://nagasaki-kitty.ca/game/images/move_in_closer.jpg" class="image_100">
<div id="_90_minutes_later_text1">
目が覚めると、
安夜子はとんでもない痛みを感じた。
その後、暗闇に包まれていった。
</div>
::: [[助けを求める]] :::
::: [[自分で何とかする]] :::
(set: $radiation to 0)
(set: $num_Slides to 0)
9 August 1945 10am
It is a hot morning in Nagasaki.
There have been several air raid alarms already today, but the citizens of Nagasaki have become used to these daily nuisances. They return to their work as soon as the alarms are called off.
People are lining up for rations, classes are being taught in schools, patients are being treated in hospitals.
It is a normal day. Or as normal as possible when a country is at war.
A girl, aged 10, should be in school but instead stays at home with her mother in order to help around the house. Her name is Ayako and today her "help" has taken the form of playing with a neighborhood cat.
::: [[Begin Ayako's Story]] :::{
(set: $random_rad_bonus to (random: 1,100))
(if: $random_rad_bonus < 2)[(set: $radiation to $radiation + $rad_blast)]
<!--Dice: $random_rad_bonus-->
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
(set: $time to 0)
(live: 1s)[
(set: $time to $time + 1)
安夜子「助けて!」
(if: $time > 1)[「助けて!!」]
(if: $time > 3)[「痛いよ。。。」]
(if: $time > 4)[「怖いよ。。。」]
(if: $time > 8)[返事がない。]
(if: $time > 10)[ ::: [[自分で何とかする]] :::]
]
{(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")}
安夜子は気付いていた。もし、誰かが自分の声を聞こえたとしても、見つかりはしない。
助は来ない。
<img src="http://nagasaki-kitty.ca/game/images/try_to_free_yourself.jpg" class="image_100">
安夜子は腕や足を動かそうとした。信じられないほど運が良かったみたいだ。落ちてきたコンクリートの角度のおかげで、命に別状はなかった。
うつ伏せなっていた安夜子は、顔を上げると、隙間から明かりが光って見えた。なんと、落ちてきたコンクリートの隙間から安夜子は脱出でそうだ。
::: [[脱出する]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
身が安全だった場所から這い出て来た安夜子は、悪夢のような光景を目にした。
町は消えていた。
瓦礫と灰の山になっていた。
<img src="http://nagasaki-kitty.ca/game/images/climb_out.jpg" class="image_100">
だが、これより最悪なものを安夜子は見てしまった。安夜子の周りには、人間と思えない程丸焦げになった死骸が、あちらこちらに散乱していた。
地球上のたった一人の生き残りか、もしくは地獄に立っているのか区別がつかない程だった。どちらかにしても、安夜子の心には孤独感しかなかった。
どうすればいいのかと考えていると、どこからか声が聞こえた。
「助けてくれ!!お願いだ!炎が近寄ってくるぞ!助けてくれ!!」
安夜子には助けを求めている人が見当たらない。女性の声なのか男性の声なのかさえ判断できなかったが、近くにいるとは感じた。
崩壊された建物が燃えていた。安夜子が聞こえた声はその火事の方向を示した。まぎれた木材と砕けたガラスのガラクタの山の方から声がした。
::: [[火事がある方向へ走りながら行く。人を助ける]] :::
::: [[危険なので安全な場所に移動する]] :::
{
(set: $random_rad_bonus to (random: 1,100))
(if: $random_rad_bonus < 6)[(set: $radiation to $radiation + $rad_blast)]
<!--Dice: $random_rad_bonus-->
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
勇気を振り絞って、安夜子は声のする方へ走り出す。
「待ってて!今行くから!」
<img src="http://nagasaki-kitty.ca/game/images/run_toward_the_fire_to_try_to_help.jpg" class="image_100">
安夜子が燃えている建物に近づくにつれて、もはや助けを求める声は聞こえなくなってしまった。炎も広がり、最初に思ったよりもはるかに火事が近かった。
::: [[危険なので安全な場所に移動する]] :::
::: [[残骸に近づく]] :::{(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")}
安夜子は、火事を眺めながら一歩を踏み出そうとしたが、振り向いてその場をすぐさま去った。
<u>安夜子</u>: 「ごめんなさい! うちには無理。ごめんなさい。」
安夜子は行く当てもなく逃げるように走った。
<img src="http://nagasaki-kitty.ca/game/images/its_too_dangerous.jpg" class="image_100">
<u>安夜子</u>:「ごめんなさい。ごめんなさい。 うちには。。。まだ十歳だし。。。ごめんなさい。」
安夜子には周りの風景がぼやけて見えた。
<u>安夜子</u>:「ごめんなさい。ごめんなさい。本当にごめんなさい。」
すると、突然安夜子は自分の足に躓き転んでしまった。
涙が止まらなかった。
<u>安夜子</u>:「ごめんなさい。。。うち。。。うち。。。」
その時、どこからかまた人の声が聞こえた。
<u>被爆者</u>:「お願い。。。誰かお願い。。。痛い。。。水を。。。」
::: [[安夜子は声の方向を見詰める]] ::::
{(display: "Radiation Exposure")
(display: "Game Log")}
<img src="http://nagasaki-kitty.ca/game/images/move_in_closer.jpg" class="image_100">
<div id="move_in_closer_text1">
安夜子はやっとの思いで、瓦礫に近づく事が出来た。
まだ炎に包まれてはいなかった。
しかし、助けを呼ぶ声はもう無かった。
<u>安夜子</u>: 「誰かいませんか?助けに来ました!」
</div>
炎はみるみるうちに広がっていった。安夜子は先ほど脱出した、トンネルのようなものを見つけた。ふと、そのトンネルの中を除くと、意識を失った男性が倒れているのを見つけた。
煙と熱さの中、安夜子は男性に手を指し伸ばした。
<u>安夜子</u>: 「(ゴホン) おじさん!おじさん!(ゴホン ゴホン) 早く逃げないと。。。炎が。。。」
男性の肩にふれようとしたその時、安夜子は煙に巻かれ、ふらふらし始めた。徐々にに力も失ってしまった。
瞼が重く感じ安夜子は、呼吸をするのも辛くなってきた。体が言うことを聞かないまま、炎が広がって行った。
::: [[ポストゲーム]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
安夜子は、目に映っているモノが信じられなかった。目の前にいるのは。。。
女の人?
洋服と髪の毛も焼き焦がされて、区別することは不可能だった。
もしかして、あの光のしわざなの? と安夜子は思った。
空襲警報サイレンが鳴ったら「必ず身を隠すこと」を何回も大人たちに言われたことを思い出したが、まさか、こんな事になるとは。。。アメリカがこんなことを。。。
そう考えている途端。。。
<img src="http://nagasaki-kitty.ca/game/images/ayako_looks_towards_the_voice.jpg" class="image_100">
<u>被爆者</u>: 「おねがい。。。水を。。喉が。。。水を。。。」
安夜子は、びっくりした。このヒトはまだ生きている。でも、安夜子にできる事は限られていた。それでも、助けを求めてるヒトの声につられ、安夜子はその場から逃げ去らなかった。
::: [[水を探しに行く]] :::
::: [[けが人のそばに行く]] :::
::: [[ママに会いたい(逃げる)]] :::
{
(set: $random_rad_bonus to (random: 1,100))
(if: $random_rad_bonus < 26)[(set: $radiation to $radiation + $rad_blast)]
<!--Dice: $random_rad_bonus-->
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
<u>安夜子</u>: 「すぐにお水をもってくるから。すぐに戻ってくるから。。。」
安夜子が水を探しに行くためその場を去ろうとした時、女性の足に躓き転んでしまった。安夜子は、立ち上がって別方向の道を選んだ。水が見つかるとは限らないが、安夜子は出来る限り他の人を助けたいと思った。
周りは妙に静かだった。
普段だったら騒がしい街が今はもう抜け殻のようだ。安夜子が近くの丘を登ると、瓦礫の山になっている家を見つけた。その瓦礫に中から歪んだパイプが出っ張っていて、そこから水が流れ出ていた。
<img src="http://nagasaki-kitty.ca/game/images/go_find_water.jpg" class="image_100">
安夜子は、そのパイプへ急いで向かった。途中、落ちていた傷だらけのお椀を拾い、その中に水を汲んだ。その時、安夜子は水が濁っていることに気付いた。
<u>安夜子</u>:「このお水飲んでも大丈夫かな?お姉さん、今行くからね。」
::: [[けが人のそばに行く]] ::::
{
(set: $random_rad_bonus to (random: 1,100))
(if: $random_rad_bonus < 8)[(set: $radiation to $radiation + $rad_blast)]
<!--Dice: $random_rad_bonus-->
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
安夜子が女性のそばに近づくと、もうすでに、彼女はこの世を去っていた。
また一人、犠牲者が増えた。
::: [[ママに会いたい(逃げる)]] :::
<img src="http://nagasaki-kitty.ca/game/images/comfort_the_unknown_survivor.jpg" class="image_100">{(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")}
今日の一日は、苦しみでいっぱい。
安夜子は、自分の力不足を感じた。
こんな少女にいったいなにが出来るのか?
自分がもうちょっと大きかったら良かったと安夜子は思った。そしたら、皆救えることが出来たはず。もし、ママとパパみたいに大人だったら全てが大丈夫だったはず。
::: [[前へ進む]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
ママの事を思い出した安夜子は、余計に家が恋しくなった。さっとあたりを見まわすと、自分が今どこにいるのかも見覚えがなかった。
田舎のおばさんの家へ遊びに行った以来、安夜子はこの町の事しか知らなかった。
でも、その町はもうない。
<img src="http://nagasaki-kitty.ca/game/images/clocktower1.jpg" class="image_100">
<u>安夜子</u>: 「ママ。。。どこなの?」
安夜子は遠くを眺めた。どこを見ても、町は破壊されていた。
するとその時。。。
::: [[遠くから建物が見えた]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
<u>安夜子</u>: 「あそこ知ってる!家の近くの時計塔だ!でも、なにか違うなぁ」
<img src="http://nagasaki-kitty.ca/game/images/clocktower2.jpg" class="image_100">
実は安夜子は家の近くにいたのだが、破壊された町のせいで辺りを走り回っていただけだったのだ。
時計塔の1階が潰れていた。安夜子が時計塔を見て不思議に思った理由は建物の二階が一階に落ちていたからだ。安夜子はそれに気付いていなかった。
<u>安夜子</u>:「今探しに行くからね、ママ!待っててね。すぐに帰るから!」
::: [[時計塔へ向かう]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
<img src="http://nagasaki-kitty.ca/game/images/clocktower3.jpg" class="image_100">
安夜子は、いつの間にか時計塔までたどり着いたが、なぜ建物が不思議に見えたのかまだ理解できていなかった。問題はもう一つあった。目の前には大きな瓦礫の山が道をふさいでいた。高くて、安定してない瓦礫の山だ。
<u>安夜子</u>: 「ど、どうしよう!?」
::: [[瓦礫の上を通る]] :::
::: [[瓦礫の周りを通る(右)]] :::
::: [[瓦礫の周りを通る(左)]] :::
{
(display: "Radiation Exposure")
(display: "Game Log")
}
安夜子は瓦礫を見つめながら、通れる方向を目で確かめていた。迷いながら、木材や鉄の瓦礫の上を一歩踏み出した。そして、左手で瓦礫をつかみ、右手でつかみ、ゆっくりと瓦礫の山を登って行った。
その時、突然「キー。。。ゴロゴロゴロ」という音がした。体重が軽かった安夜子だが、足元の瓦礫が崩れてしまい、安夜子もそのまま瓦礫と落ちてしまった。。
<img src="http://nagasaki-kitty.ca/game/images/climb_over_the_rubble.jpg" class="image_100">
***
二日後、瓦礫の下敷きとなった安夜子の遺体が捜索隊に発見された。身内や名前なども確認されず、安夜子が実際、閃光を見たことも、誰もが知らぬままこの世から消えてしまった。
犠牲者がもう一人増えた。
::: [[ポストゲーム]] :::
{
(set: $random_rad_bonus to (random: 1,100))
(if: $random_rad_bonus < 11)[(set: $radiation to $radiation + $rad_blast)]Dice: <!--$random_rad_bonus-->
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
安夜子は、瓦礫の山を登ることを一瞬ためらった。通れないわけでもない。。。もし安夜子が大人だったら。しかし、この広い世界の中たった一人で、わずか十歳の少女であった。
<u>安夜子</u>: 「周りから通るしかないみたい。」
<img src="http://nagasaki-kitty.ca/game/images/find_a_way_around_right.jpg" class="image_100">
安夜子は、右側を通ることに決めて辺りを調査した。地面はさっき立っていた所より安定している。
「これなら大丈夫。」
::: [[瓦礫の上を通る]] ::
::: [[瓦礫の周りを通る(左)]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
<img src="http://nagasaki-kitty.ca/game/images/find_a_way_around_left.jpg" class="image_100">
安夜子が瓦礫の左の方を見た時だった。そこには、小さな入り口が斜めに倒れてるビームの間から見えた。小大人では入れない隙間だったが、安夜子はならすっと通れそうだ。
その時、初めて、自分が小さかったことに嬉しかった。
::: [[隙間を通る]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
安夜子は隙間を潜りながら、あの光が家の近所まで届いてないようにと祈った。そして、家には、安夜子の帰りを待ち構えているママが台所にいる姿が頭に浮かんだ。
「ママ怒ってるかな?時間かかったし手ぶらで帰るし。。。」
<img src="http://nagasaki-kitty.ca/game/images/go_through_the_gap.jpg" class="image_100">
けれど安夜子の願いは叶わなかった。家も近所をあの光で破壊された。
安夜子はママを探すのが不可能だと考え始めた。
孤独を感じた。
::: [[その時どこからか声が聞こえた]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
<u>男性</u>: 「希実!希実か?!こっちだ!信じられない。生きてたか。今までどこにいたんだ?」
その時、安夜子は自分が一人でないことに気づいた。振り向くと腕や頭がぼろぼろに包帯されている一人の男性が安夜子をに呼びかけている。男性は片方腕に数か月の赤ん坊を抱いていた。
<u>男性</u>: 「希実、分からないのか。俺だ、おまえのお父さんだ。」
<img src="http://nagasaki-kitty.ca/game/images/suddenly_a_voice_calls_out.jpg" class="image_100">
確かに男性は重症な傷をおっていた。だが、安夜子はこの男性の言葉はただの勘違いなのか思い込みなのか、区別できなかった。
どちらにしても、安夜子はもう一人ではなかった事にほっとした。もしママを見つける事が出来なかったらどうしよう?永遠に一人で暮らすことになるのか?
安夜子男性を見つめながらこう言った。。。
::: [[「うち、希実じゃない。家に戻らなくちゃ」]] :::
::: [[「パパ!」]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
その言葉を聞いた男性は心が折れたかのように表情が変わった。
<u>男性</u>: 「わ。。わかっとっさぁ。君は希実じゃない。。。希実はもう。。。この世にはいないんだ。。。」
男性の悲しげな顔を見つめながら、安夜子の心にも痛みが響いた。
<u>安夜子</u>: 「心配しないで。きっと、希実ちゃんはみつかるよ。うちも協力するから!もし、希実ちゃんを見つけられたら必ず伝えておくよ、お父さんが探しているって。」
男性は、安夜子に慰められていることを知っていた。心強い安夜子に男性は、どう反応していいか分からず、なれりげなく笑顔を返し、去って行った。
自分の周りを見た安夜子は、どこにいるかさえ確実には分からなかったが、家に近いとは感じていた。
::: [[家まで走る]] :::
{
(display: "Radiation Exposure")
(display: "Game Log")
}
男性は安夜子の言葉に驚いた。
<u>男性</u>: 「希実?」
そうでなくて知っていても、男性は目の前にいる少女が希実でいることをきっと心の底から信じたかっただろう。
<u>安夜子</u>: 「うん、うちだよ。希実だよ。」
<img src="http://nagasaki-kitty.ca/game/images/father.jpg" class="image_100">
男性は手を伸ばすと、安夜子はその手をつかんだ。
<u>男性</u>: 「ここから離れよう。助ならこの町の郊外にあると聞いた。そこに行けば安全だ。」
三人は町の郊外へと向かった。
<u>安夜子</u>: 「心配しないでママ。私はもう無事だから。」と安夜子は小さな声で呟いた。
::: [[ポストゲーム]] :::
{
(display: "Radiation Accumulation")
(display: "Radiation Exposure")
(display: "Game Log")
}
安夜子は出来るだけ早く家を探し出した。だが、家があるはずの場所には瓦礫の山になっていた。
<u>安夜子</u>: 「ママ?」
すっと、その途端瓦礫の中から音がした。
(瓦礫の中から聞こえる)
「ニャーニャー」
::: [[音を確かめる]] :::
::: [[ママを探す]] :::{
(display: "Radiation Exposure")
(display: "Game Log")
}
安夜子はママを探しに行きたかったが、音がした方へ進んだ。
歩いていると、また音がした。
「ニャー」
音のありかにたどり着くと、安夜子はその場の瓦礫を掘り始めた。すると、だんだん音がはっきりしてきた。猫の鳴き声だった。
安夜子は、今朝猫にひっかかれことで怒っていたが、今の安夜子は自分ができる限り猫を助けたいと思った。
大きな板をどかしたら、猫の姿がやっと見えた。
<img src="http://nagasaki-kitty.ca/game/images/investigate_the_noise.jpg" class="image_100">
<u>猫</u>: 「ニャーニャー」
猫は傷だらけで血まみれになったいた。後ろの両足が潰されていて、ものすごい痛みを感じていたはずだ。
安夜子は、両手で優しく猫を抱いた。
<u>猫</u>: 「ニャー」
安夜子は、猫の頭を優しくなでた。
<u>安夜子</u>「もう大丈夫だからね。うちがいるから。今朝怒ったりしてごめんね。。。もう気にしてないから。」と涙があ振れ出しながら安夜子は、優しく呟いた。
::: [[ポストゲーム]] :::
{
(display: "Radiation Exposure")
(display: "Game Log")
}
音のする方へたどり着くと、残念ながらママではないことに安夜子は気づいた。
安夜子はママを見つけることに必死だった。
台所を見つけたら、必ずママがそこで安夜子の帰りを待っていると信じていた。
<img src="http://nagasaki-kitty.ca/game/images/look_for_mama.jpg" class="image_100">
台所らしい場所を見つけた安夜子は、その場の瓦礫を一つ一つどかしていった。持ち上げられないものがあったら他の場所へ移動し掘り始めた。
小さな手で瓦礫を夢中で掘り続ける安夜子はママを探すのに必死で、自分の腕にできた傷やちぎれた爪などに気付かなかった。
<u>安夜子</u>:「ママ、絶対に見つけるからね。ママ?!ママ!ママ!」
::: [[ポストゲーム]] :::
{
(display: "Radiation Exposure")
(display: "Game Log")
}
安夜子はママを探し続けるが、体がふらふらし始めた。
急に吐きそうになった安夜子はおでこの汗を手で拭いて、邪魔だった前髪をよかした。
するとその時、何か違和感を感じた。。。
手のひらには抜けた髪の毛のかたまりがあった。
また指で髪をとかすと、髪の毛が抜けた。
吐き気を我慢できず、安夜子は吐き、倒れてしまった。
なぜか吐きが止まらなかった。
<img src="http://nagasaki-kitty.ca/game/images/ayako_starts_to_feel_lightheaded.jpg" class="image_100">
小さな口から、血が流れででていた。
安夜子は、抜け毛を手の中に抱えながら、小さな声で呟いた。
「ママ。。。」
これが少女の最後の言葉だった。
::: [[Postgame]] :::
{
(display: "Radiation Exposure")
(display: "Game Log")
}
その時、長崎の空を飛んでいたB-29号からピカドンが落ちてきた。
地上から約503メートルで原爆は爆発し、歴史的な閃光が発せられた。
何万人という数の人々がその日、命を落とした。灰となって消え去った犠牲者の中に、安夜子という名の一人の少女と一匹の可愛くない猫。
::: [[ポストゲーム]] :::
<img src="http://nagasaki-kitty.ca/game/images/11_02_am.jpg" class="image_100">
<div id="cover">
<div id="cover_image">
<img src="http://nagasaki-kitty.ca/game/images/nagasaki_kitty_title.jpg" width="700px" height="700px">
</div>
<div id="cover_text">
::: [[English]] :::
::: <span class="japanese">[[日本語]]</span> :::
</div>
{
(set: $language to "english")
(display: "Set FontSpacing")
}<img src="http://nagasaki-kitty.ca/game/images/nagasaki_kitty_title.jpg" class="image_100">
“She could not begin to imagine where her daughter’s words came from, but she could understand the terror she had suffered from being condemned by something.”
-- Hayashi Kyoko
::: [[Prelude]] :::
::: [[Instructions]] :::<div class="language">$language</div>
<script>
language = $(".language")[0].innerText;
</script>(display: "Get Language")
<script>
if (language == "japanese") {
$("html").css("letter-spacing", "1px");
} else {
$("html").css("letter-spacing", "-3px");
}
</script>{
(display: "Show Timer")
}<h3>統計</h3>
プレイ回数: <span class="showTimer"></span>
スライド数: $num_Slides
放射レベル: $currentRadiationLevel
<div id="stats-radiation">(display: "Radiation Meter")</div>
---
このゲームの内容は長崎に原爆が落とされた歴史を舞台にしたフィクションです。このプロジェクトについて詳しく知りたい方はぜひ、こちらのウェブサイトご覧下さい。<a href="http://nagasaki-kitty.ca/homepage-japanese/" target="_blank">Nagasaki-kitty.ca</a>.
---
<h3>制作チーム</h3>
<u>ディレクター・作:</u> ライアン シーディング
<u> アートワーク:</u> マリリン スギアルト
<u>アルゴリズム:</u> ルシアノ フレッゼーラ
<u>3Dキャラクターアート:</u> サミア ペドラカ
<u>作曲家:</u> スティーブン ジェー エス ボーコット
<u>日本語翻訳者:</u> ミミ オカベ
::: [[リスタート]] :::
(goto: "Init")