977 lines
33 KiB
Plaintext
977 lines
33 KiB
Plaintext
|
|
||
|
default DRgame = DarkRoomGame()
|
||
|
|
||
|
default DRplayer = DarkRoomCharacter(name="You", hp=8, skills=["strength"], unskilled=["cooking","hunting","sewing"], inventory=["axe"])
|
||
|
default DRstranger = DarkRoomCharacter(name="The Stranger", hp=7, skills=["hunting"], unskilled=["sewing"], inventory=["knife"])
|
||
|
default DRmaid = DarkRoomCharacter(name="The Maiden", hp=3, skills=["sewing"], unskilled=["hunting","strength"])
|
||
|
# default DRmaid = DarkRoomCharacter(name="The Maiden", hp=3, skills=["cooking"], unskilled=["hunting"], inventory=[])
|
||
|
default DRhunter = DarkRoomCharacter(name="The Hunter", hp=7, skills=["hunting","sewing"], unskilled=["cooking"], inventory=["knife","rifle"])
|
||
|
|
||
|
label reset_dark_room_init:
|
||
|
$ reset_variables(
|
||
|
"DRgame",
|
||
|
"DRplayer",
|
||
|
"DRstranger",
|
||
|
"DRmaid",
|
||
|
"DRhunter"
|
||
|
)
|
||
|
return
|
||
|
|
||
|
### A Dark Room ###
|
||
|
|
||
|
label start_dark_room_game:
|
||
|
call play_music("stop")
|
||
|
show screen blkfade
|
||
|
with d9
|
||
|
|
||
|
$ temp_time = game.daytime
|
||
|
|
||
|
$ game.daytime = False
|
||
|
call update_interface_color
|
||
|
|
||
|
call hide_screens
|
||
|
pause 2
|
||
|
|
||
|
centered "{size=+7}{color=#cbcbcb}A Dark Room{/color}{/size}"
|
||
|
|
||
|
pause 2
|
||
|
|
||
|
label dark_room_game_start_menu:
|
||
|
menu:
|
||
|
"-Start a new Game-":
|
||
|
call reset_dark_room_init
|
||
|
jump dark_room_main
|
||
|
"-Continue-" if DRgame.day > 1 and not DRgame.game_over:
|
||
|
jump dark_room_load_save
|
||
|
"-Get coin rewards-" if DRgame.day > 1 and not DRgame.game_over:
|
||
|
">You'll get gold for each day you have survived in the game.\n>This will delete your current Save!"
|
||
|
menu:
|
||
|
"Would you like to delete your save and get gold coins for it?"
|
||
|
"-Yes-":
|
||
|
$ current_payout = DRgame.day*2
|
||
|
$ game.gold += current_payout
|
||
|
">You have received {number=current_payout} gold.\n>Thank you for playing \"A Dark Room\"."
|
||
|
call reset_dark_room_init
|
||
|
jump dark_room_game_start_menu
|
||
|
"-No-":
|
||
|
jump dark_room_game_start_menu
|
||
|
jump dark_room_load_save
|
||
|
"-Never mind-":
|
||
|
$ renpy.end_replay()
|
||
|
|
||
|
label dark_room_main:
|
||
|
show screen blkfade
|
||
|
with d9
|
||
|
|
||
|
#Reset
|
||
|
$ fire_in_fireplace = False
|
||
|
$ fireplace_OBJ.foreground = None
|
||
|
$ DRgame.time = "morning"
|
||
|
$ DRgame.fire = 0
|
||
|
$ read_book = False
|
||
|
call update_DRgame_random_number
|
||
|
call update_DRgame_meat_spoiling
|
||
|
call update_DRgame_needs
|
||
|
|
||
|
label dark_room_load_save:
|
||
|
|
||
|
call play_music("stop")
|
||
|
|
||
|
stop bg_sounds #Stops playing the fire SFX.
|
||
|
stop weather #Stops playing the rain SFX.
|
||
|
if DRgame.day in [1,2,3,6,7]:
|
||
|
$ game.weather = "storm"
|
||
|
elif DRgame.day in [4,5]:
|
||
|
$ game.weather = "clear"
|
||
|
else:
|
||
|
$ game.weather = "random"
|
||
|
call weather_sound
|
||
|
|
||
|
pause 2
|
||
|
centered "{size=+7}{color=#cbcbcb}Day [DRgame.day]{/color}{/size}"
|
||
|
pause 1
|
||
|
|
||
|
label DRgame_resume:
|
||
|
if DRgame.game_over:
|
||
|
show screen blkfade
|
||
|
with d5
|
||
|
pause 1
|
||
|
centered "{size=+7}{color=#cbcbcb}Game Over...{/color}{/size}"
|
||
|
pause 1
|
||
|
centered "{size=+7}{color=#cbcbcb}You made it to day [DRgame.day]!{/color}{/size}"
|
||
|
pause 1
|
||
|
jump dark_room_game_start_menu
|
||
|
|
||
|
show screen weather
|
||
|
show screen dark_room
|
||
|
if DRgame.fire >= 1:
|
||
|
$ fire_in_fireplace = True
|
||
|
$ fireplace_OBJ.foreground = "fireplace_fire"
|
||
|
else:
|
||
|
$ fire_in_fireplace = False
|
||
|
$ fireplace_OBJ.foreground = None
|
||
|
hide screen DRgame_blktone
|
||
|
show screen DRgame_blktone
|
||
|
call DRgame_chibis #Sets up character chibis & positions.
|
||
|
hide screen blkfade
|
||
|
with d9
|
||
|
|
||
|
if DRgame.time == "morning":
|
||
|
call DRgame_random_event
|
||
|
call screen DRgame_menu #Do something.
|
||
|
|
||
|
if DRgame.time == "noon":
|
||
|
call DRgame_leave_for_task #Characters Leave
|
||
|
call DRgame_random_event
|
||
|
call screen DRgame_menu #Do another thing.
|
||
|
|
||
|
if DRgame.time == "afternoon":
|
||
|
call DRgame_return_from_task #Characters Return
|
||
|
call update_DRgame_hunger #Eating
|
||
|
call DRgame_random_event
|
||
|
|
||
|
if DRgame.time == "night":
|
||
|
call update_DRgame_sickness
|
||
|
call DRgame_random_event
|
||
|
|
||
|
if DRgame.game_over:
|
||
|
show screen blkfade
|
||
|
with d5
|
||
|
pause 1
|
||
|
centered "{size=+7}{color=#cbcbcb}Game Over...{/color}{/size}"
|
||
|
pause 1
|
||
|
centered "{size=+7}{color=#cbcbcb}You made it to day [DRgame.day]!{/color}{/size}"
|
||
|
pause 1
|
||
|
jump dark_room_game_start_menu
|
||
|
|
||
|
#Jump next day
|
||
|
call nar(">Night gathers...\nAnd a new day begins.")
|
||
|
$ DRgame.day += 1
|
||
|
jump dark_room_main
|
||
|
|
||
|
|
||
|
|
||
|
label update_DRgame_random_number:
|
||
|
python:
|
||
|
for i in DRgame.characters:
|
||
|
i.random_number = renpy.random.randint(1, 4) #1 is lucky, 4 is not
|
||
|
return
|
||
|
|
||
|
|
||
|
label DRgame_chibis:
|
||
|
|
||
|
call gen_chibi("hide")
|
||
|
call sna_chibi("hide")
|
||
|
|
||
|
#Player
|
||
|
$ genie_chibi.zorder = 1
|
||
|
if DRplayer in DRgame.characters:
|
||
|
call gen_chibi("stand",710,165+250,flip=False)
|
||
|
|
||
|
#Stranger
|
||
|
$ snape_chibi.zorder = 1
|
||
|
if DRstranger in DRgame.characters:
|
||
|
if DRstranger.location != "outside":
|
||
|
call sna_chibi("stand",450,180+250,flip=True)
|
||
|
|
||
|
return
|
||
|
|
||
|
|
||
|
label update_DRgame_needs:
|
||
|
python:
|
||
|
for i in DRgame.characters:
|
||
|
i.hunger -= 1
|
||
|
if i.task == "" and i.hp < 10 and i != DRplayer:
|
||
|
i.hp += 1
|
||
|
|
||
|
for i in DRgame.characters:
|
||
|
if i.sick == False:
|
||
|
if (i.hunger < 5 and i.hp < 6 and i.random_number in [4]) or i.hp < 2:
|
||
|
i.sick = True
|
||
|
if i.name == "You":
|
||
|
renpy.say(None,"You have gotten ill.")
|
||
|
else:
|
||
|
renpy.say(None,"[i.name] has gotten ill.")
|
||
|
if i.sick:
|
||
|
i.force_task = False
|
||
|
i.task = ""
|
||
|
|
||
|
return
|
||
|
|
||
|
|
||
|
label update_DRgame_sickness:
|
||
|
python:
|
||
|
for i in DRgame.characters:
|
||
|
if i.sick:
|
||
|
if i.hp >= 6 and i.hunger >= 3 and DRgame.fire >= 1:
|
||
|
i.sick = False
|
||
|
renpy.say(None,"[i.namse] looks to be a lot healthier. Their sickness seems to be gone.")
|
||
|
|
||
|
return
|
||
|
|
||
|
|
||
|
label update_DRgame_meat_spoiling:
|
||
|
$ random_number = renpy.random.randint(1, 5)
|
||
|
if random_number in [1]:
|
||
|
$ DRgame.meat -= 5
|
||
|
if random_number in [2]:
|
||
|
$ DRgame.meat -= 3
|
||
|
if DRgame.meat < 0:
|
||
|
$ DRgame.meat = 0
|
||
|
return
|
||
|
|
||
|
|
||
|
label update_DRgame_hunger:
|
||
|
if DRgame.meals <= 0:
|
||
|
"There was no food left to eat."
|
||
|
"If this continues, you will starve..."
|
||
|
return
|
||
|
if DRgame.fire <= 0 and DRgame.wood >= 1:
|
||
|
"There was no fire to heat up the meal..."
|
||
|
menu:
|
||
|
"-Stoke the fire-":
|
||
|
$ DRgame.fire = 1
|
||
|
$ DRgame.wood -= 1
|
||
|
$ fire_in_fireplace = True
|
||
|
$ fireplace_OBJ.foreground = "fireplace_fire"
|
||
|
with d5
|
||
|
if DRgame.fire <= 0 and DRgame.wood <= 0:
|
||
|
"You had no more wood to heat up the fire..."
|
||
|
"You turn back to your tasks hungry..."
|
||
|
return
|
||
|
|
||
|
python:
|
||
|
for i in DRgame.characters:
|
||
|
if DRgame.meals >= 1:
|
||
|
if i.sick: #Priority
|
||
|
if i.hunger < 7:
|
||
|
i.hunger += 1
|
||
|
DRgame.meals -= 1
|
||
|
else:
|
||
|
if i.hunger < 7:
|
||
|
i.hunger += 1
|
||
|
DRgame.meals -= 1
|
||
|
for i in DRgame.characters:
|
||
|
if DRgame.meals >= 1:
|
||
|
if i.sick: #Priority
|
||
|
if i.hunger < 10:
|
||
|
i.hunger += 1
|
||
|
DRgame.meals -= 1
|
||
|
else:
|
||
|
if i.hunger < 10:
|
||
|
i.hunger += 1
|
||
|
DRgame.meals -= 1
|
||
|
|
||
|
if DRgame.time in ["afternoon"]:
|
||
|
"A long day of work... it was time to eat..."
|
||
|
if DRgame.meals <= 0:
|
||
|
"All food that was left got eaten..."
|
||
|
|
||
|
return
|
||
|
|
||
|
|
||
|
label DRgame_leave_for_task:
|
||
|
python:
|
||
|
for i in DRgame.characters:
|
||
|
if i.task in ["wood_cutting","hunting"]:
|
||
|
if game.weather in ("clear", "cloudy", "overcast"):
|
||
|
i.location = "outside"
|
||
|
elif i.force_task == True:
|
||
|
i.location = "outside"
|
||
|
else:
|
||
|
i.location = "room"
|
||
|
|
||
|
call DRgame_chibis
|
||
|
with d5
|
||
|
|
||
|
return
|
||
|
|
||
|
label DRgame_return_from_task: #renpy.say(None,"[i.name] has gotten ill.")
|
||
|
python:
|
||
|
for i in DRgame.characters:
|
||
|
if i.location == "outside":
|
||
|
i.location = "room"
|
||
|
|
||
|
call DRgame_chibis
|
||
|
with d5
|
||
|
|
||
|
python:
|
||
|
for i in DRgame.characters:
|
||
|
|
||
|
#Hunting
|
||
|
if i.task == "hunting" and game.weather in ("clear", "cloudy", "overcast") or i.force_task == True: #They were hunting.
|
||
|
temp_item = 2
|
||
|
if game.weather in ("blizzard", "snow", "storm", "rain"):
|
||
|
temp_item -= 1
|
||
|
if i.hp > 1:
|
||
|
i.hp -= 1
|
||
|
if "hunting" in i.unskilled:
|
||
|
temp_item -= 1
|
||
|
if "hunting" in i.skills:
|
||
|
temp_item += 1
|
||
|
if temp_item == 3 or (temp_item == 2 and "knife" in i.inventory):
|
||
|
temp_item += 1
|
||
|
|
||
|
#Deer
|
||
|
if "bow" in i.inventory and "arrows" in i.inventory and "hunting" not in i.unskilled:
|
||
|
if i.random_number in [1,2]:
|
||
|
temp_item = 5 #Deer
|
||
|
else:
|
||
|
temp_item = 4 #Fox
|
||
|
|
||
|
DRgame.meat += temp_item
|
||
|
renpy.say(None,"[i.name] came back from the hunt, hungry and freezing.")
|
||
|
if game.weather in ("blizzard", "snow", "storm", "rain"):
|
||
|
renpy.say(None,"The cold rains have shown its mark on them...")
|
||
|
if temp_item >= 5:
|
||
|
renpy.say(None,"A large deer on their back. This will last a couple of days.")
|
||
|
renpy.say(None,"Its leather seems almost untouched.")
|
||
|
DRgame.leather += renpy.random.randint(2, 3)
|
||
|
elif temp_item in [3,4]:
|
||
|
renpy.say(None,"They found a small fox. Should be good enough to eat...")
|
||
|
renpy.say(None,"Its fur will help with the cold.")
|
||
|
DRgame.fur += renpy.random.randint(1, 2)
|
||
|
elif temp_item == 2:
|
||
|
renpy.say(None,"They found a wild chicken.")
|
||
|
renpy.say(None,"The feathers will make good arrows")
|
||
|
DRgame.feathers += renpy.random.randint(4, 8)
|
||
|
elif temp_item == 1:
|
||
|
renpy.say(None,"They only caught a small rabbit. There won't be much to eat it seems...")
|
||
|
else:
|
||
|
renpy.say(None,"They were unsuccessful and couldn't find any wild animals in the thick snow.")
|
||
|
|
||
|
#Wood Chopping/Gathering
|
||
|
if i.task == "chopping_wood" and game.weather in ("clear", "cloudy", "overcast") or i.force_task == True: #They were gathering wood/chopping wood.
|
||
|
temp_item = 3
|
||
|
if game.weather in ("blizzard", "snow", "storm", "rain"):
|
||
|
temp_item -= 1
|
||
|
if i.hp > 1:
|
||
|
i.hp -= 1
|
||
|
if "strength" in i.unskilled:
|
||
|
temp_item -= 1
|
||
|
if "strength" in i.skills:
|
||
|
temp_item += 1
|
||
|
if "axe" in i.inventory:
|
||
|
temp_item += 1
|
||
|
|
||
|
DRgame.wood += temp_item
|
||
|
if "axe" in i.inventory:
|
||
|
renpy.say(None,"[i.name] came back from chopping wood.")
|
||
|
renpy.say(None,"They chopped [temp_item] piles with their axe.")
|
||
|
else:
|
||
|
renpy.say(None,"[i.name] came back from gathering wood.")
|
||
|
if temp_item == 1:
|
||
|
renpy.say(None,"They gathered [temp_item] pile of wood out in the forest.")
|
||
|
else:
|
||
|
renpy.say(None,"They gathered [temp_item] piles of wood out in the forest.")
|
||
|
|
||
|
return
|
||
|
|
||
|
label DRgame_random_event:
|
||
|
if DRgame.day == 1:
|
||
|
if DRgame.time in ["morning"]:
|
||
|
if "intro" not in DRgame.events:
|
||
|
$ DRgame.events.append("intro")
|
||
|
call play_music("night_outside")
|
||
|
pause 2
|
||
|
"Wind howls throughout the night."
|
||
|
"A merciless cold, creeps into every part of your bones..."
|
||
|
"You've been walking through a raging blizzard for what felt like hours, the cold biting deep into your skin..."
|
||
|
pause 2
|
||
|
"And then you finally found it..."
|
||
|
"An empty wood cabin. No lights. No sound. Not a soul."
|
||
|
pause 1
|
||
|
"Shelter, at last..."
|
||
|
pause 2
|
||
|
call play_music("stop")
|
||
|
call play_sound("door")
|
||
|
pause.5
|
||
|
call gen_chibi("stand","door","base",flip=False)
|
||
|
with d5
|
||
|
pause.8
|
||
|
"The cabin, its walls strong against the harsh winds... but still as cold as the outside..."
|
||
|
"You need to take action... Fast..."
|
||
|
$ DRgame.characters.append(DRplayer)
|
||
|
|
||
|
if DRgame.day in [3,5]:
|
||
|
if DRgame.time in ["noon"]:
|
||
|
if "stranger_intro" not in DRgame.events:
|
||
|
if DRgame.day == 3:
|
||
|
call play_sound("knocking")
|
||
|
pause.2
|
||
|
call gen_chibi("hide")
|
||
|
with d3
|
||
|
call gen_chibi("stand","mid","base")
|
||
|
with d5
|
||
|
pause.5
|
||
|
"A strong knocking halls through the nearly empty cabin."
|
||
|
"It's a man. Stranger, he calls himself..."
|
||
|
"The cold has been taking its toll on him."
|
||
|
"He promises you help, for shelter..."
|
||
|
pause.8
|
||
|
"Will you let him in?"
|
||
|
menu:
|
||
|
"-Let him in-":
|
||
|
$ DRgame.events.append("stranger_intro")
|
||
|
$ DRgame.characters.append(DRstranger)
|
||
|
$ DRstranger.location = "room"
|
||
|
pause.5
|
||
|
call play_sound("door")
|
||
|
call sna_chibi("stand","door","base")
|
||
|
with d5
|
||
|
pause.8
|
||
|
"The stranger is more than thankful to you."
|
||
|
"He'd be happy to help gather wood or hunt meat."
|
||
|
"-Tell him to leave-":
|
||
|
"The stranger reluctantly leaves."
|
||
|
$ DRgame.time = "afternoon"
|
||
|
return
|
||
|
elif DRgame.day == 5:
|
||
|
call play_sound("knocking")
|
||
|
pause.2
|
||
|
call gen_chibi("hide")
|
||
|
with d3
|
||
|
call gen_chibi("stand","mid","base")
|
||
|
with d5
|
||
|
pause.5
|
||
|
"Another loud knocks at the sturdy cabin door."
|
||
|
"Once again, it's the stranger..."
|
||
|
"He has no more food, no more water, so he says..."
|
||
|
"He is making a threat. You will regret this, he tells you..."
|
||
|
pause.8
|
||
|
menu:
|
||
|
"-Let him in-":
|
||
|
$ DRgame.events.append("stranger_intro")
|
||
|
$ DRgame.characters.append(DRstranger)
|
||
|
$ DRstranger.location = "room"
|
||
|
pause.5
|
||
|
call play_sound("door")
|
||
|
call sna_chibi("stand","door","base")
|
||
|
with d5
|
||
|
pause.8
|
||
|
"The stranger is more than thankful to you."
|
||
|
"He'd be happy to help gather wood or hunt for meat."
|
||
|
"-Let him starve-":
|
||
|
"He quietly leaves."
|
||
|
$ DRgame.time = "afternoon"
|
||
|
return
|
||
|
#Afternoon
|
||
|
if DRgame.time in ["afternoon"]:
|
||
|
|
||
|
#Fire goes out.
|
||
|
$ random_number = renpy.random.randint(1, 5)
|
||
|
if random_number in [1,2] and DRgame.fire in [1]:
|
||
|
$ DRgame.fire = 0
|
||
|
stop bg_sounds
|
||
|
hide screen DRgame_blktone
|
||
|
show screen DRgame_blktone
|
||
|
$ fire_in_fireplace = False
|
||
|
$ fireplace_OBJ.foreground = None
|
||
|
with d9
|
||
|
pause.8
|
||
|
call nar(">The fire wasn't strong enough.\nIt failed fighting the bitter cold, and went out...")
|
||
|
pause.8
|
||
|
|
||
|
$ DRgame.time = "night"
|
||
|
|
||
|
#Night
|
||
|
if DRgame.time in ["night"]:
|
||
|
|
||
|
if DRgame.day == 6 and "stranger_intro" not in DRgame.events:
|
||
|
call play_music("night_outside")
|
||
|
show screen blkfade
|
||
|
with d5
|
||
|
pause .8
|
||
|
"In the night, you quietly woke up."
|
||
|
"You thought someone was moving outside of the cabin."
|
||
|
"You heard a clashing sound of metal hitting stone..."
|
||
|
"Followed closely by a sound that was only too familiar..."
|
||
|
call play_music("stop")
|
||
|
pause.8
|
||
|
"The sound that had been the only comfort in the last few days in this cold winter, now made you feel dread..."
|
||
|
"It was fire! The cabin was slowly burning from every side, more, and more."
|
||
|
call play_music("hitman")
|
||
|
"You hurried across the empty room towards the only way that went outside."
|
||
|
"You unhinged the metal locks on the heavy door."
|
||
|
call play_sound("bump")
|
||
|
"But the large door wouldn't move... It was barricaded from the outside..."
|
||
|
call play_sound("bump")
|
||
|
pause.8
|
||
|
call play_sound("bump")
|
||
|
pause.6
|
||
|
call play_sound("bump")
|
||
|
"With no way out, you grabbed your axe and started tearing down the wooden door..."
|
||
|
pause.5
|
||
|
call play_sound("bump")
|
||
|
pause.6
|
||
|
call play_sound("bump")
|
||
|
pause.8
|
||
|
call play_sound("bump")
|
||
|
call play_music("stop")
|
||
|
"The heat grew unbearable. At last, you dropped your axe and sank to the floor."
|
||
|
"The cabin burned down over the night, into a pile of ash and snow..."
|
||
|
"You didn't make it out..."
|
||
|
$ DRgame.game_over = True
|
||
|
|
||
|
if not DRgame.game_over:
|
||
|
$ temp_name = ""
|
||
|
python:
|
||
|
for i in DRgame.characters:
|
||
|
if i.sick:
|
||
|
if i.random_number in [4] and DRgame.fire == 0:
|
||
|
DRgame.characters.remove(i)
|
||
|
temp_name = i.name
|
||
|
if temp_name != "":
|
||
|
show screen blkfade
|
||
|
with d9
|
||
|
"A long-fought battle against illness has been lost..."
|
||
|
pause 2
|
||
|
if DRplayer not in DRgame.characters:
|
||
|
"You died in the night..."
|
||
|
$ DRgame.game_over = True
|
||
|
else:
|
||
|
"[temp_name], has died in the night."
|
||
|
|
||
|
$ DRgame.time = "morning"
|
||
|
|
||
|
return
|
||
|
|
||
|
|
||
|
screen dark_room():
|
||
|
add "images/rooms/_bg_/main_room_night.webp"
|
||
|
|
||
|
add "images/rooms/objects/doors/door_idle_night.webp" at Position(xpos=898, ypos=315, xanchor="center", yanchor="center")
|
||
|
add "images/rooms/objects/fireplace/fireplace_w_shadow.webp" at Position(xpos=693, ypos=277, xanchor="center", yanchor="center")
|
||
|
if read_book:
|
||
|
if DRgame.fire == 0:
|
||
|
add "ch_gen read" xpos 350 ypos 205
|
||
|
else:
|
||
|
add "ch_gen read_near_fire" xpos 350 ypos 205
|
||
|
#else:
|
||
|
#use chair_left
|
||
|
add "images/rooms/main_room/desk_empty.webp" xpos 370 ypos 336 xanchor 0.5 yanchor 0.5
|
||
|
|
||
|
zorder 0
|
||
|
|
||
|
screen DRgame_blktone(): #Use this instead of "blktone", or it will cause issues with chibis.
|
||
|
tag DRgame_blktone
|
||
|
if DRgame.fire <= 0:
|
||
|
add Color("#000", alpha=0.7)
|
||
|
elif DRgame.fire == 1:
|
||
|
add Color("#000", alpha=0.3)
|
||
|
zorder 4
|
||
|
|
||
|
screen DRgame_menu():
|
||
|
tag DRgame_menu
|
||
|
|
||
|
#Door
|
||
|
imagebutton:
|
||
|
xpos 898
|
||
|
ypos 315
|
||
|
focus_mask True
|
||
|
xanchor "center"
|
||
|
yanchor "center"
|
||
|
idle "images/rooms/objects/doors/door_idle.webp"
|
||
|
hover "images/rooms/objects/doors/door_hover.webp"
|
||
|
action [Hide("DRgame_menu"), Jump("DRgame_door")]
|
||
|
|
||
|
#Fireplace
|
||
|
imagebutton:
|
||
|
xpos 693
|
||
|
ypos 277
|
||
|
focus_mask True
|
||
|
xanchor "center"
|
||
|
yanchor "center"
|
||
|
idle "images/rooms/objects/fireplace/fireplace_idle.webp"
|
||
|
hover "images/rooms/objects/fireplace/fireplace_hover.webp"
|
||
|
action [Hide("DRgame_menu"), Jump("DRgame_fireplace")]
|
||
|
|
||
|
#Chair left chair_left
|
||
|
imagebutton:
|
||
|
xpos 332
|
||
|
ypos 300
|
||
|
focus_mask True
|
||
|
xanchor "center"
|
||
|
yanchor "center"
|
||
|
idle "images/rooms/main_room/chair_left_no_shadow.webp"
|
||
|
hover yellow_tint("images/rooms/main_room/chair_left_no_shadow.webp")
|
||
|
action [Hide("DRgame_menu"), Jump("dark_room_chair_left")]
|
||
|
|
||
|
#Desk
|
||
|
imagebutton:
|
||
|
xpos 360
|
||
|
ypos 330
|
||
|
focus_mask True
|
||
|
xanchor "center"
|
||
|
yanchor "center"
|
||
|
idle "images/rooms/main_room/desk_no_shadow.webp"
|
||
|
hover yellow_tint("images/rooms/main_room/desk_no_shadow.webp")
|
||
|
action [Hide("DRgame_menu"), Jump("dark_room_desk")]
|
||
|
|
||
|
#Player
|
||
|
imagebutton:
|
||
|
xpos genie_chibi.pos[0]
|
||
|
ypos genie_chibi.pos[1]
|
||
|
focus_mask True
|
||
|
#xanchor "center"
|
||
|
#yanchor "center"
|
||
|
if not genie_chibi.flip:
|
||
|
idle "ch_gen stand"
|
||
|
hover yellow_tint("ch_gen stand")
|
||
|
else:
|
||
|
idle Transform("ch_gen stand", xzoom=-1.0)
|
||
|
hover yellow_tint( Transform("ch_gen stand", xzoom=-1.0) )
|
||
|
action [Hide("DRgame_menu"), Jump("dark_room_player")]
|
||
|
|
||
|
#Stranger
|
||
|
if DRstranger in DRgame.characters and DRstranger.location not in ["outside"]:
|
||
|
imagebutton:
|
||
|
pos sna_chibi.pos
|
||
|
focus_mask True
|
||
|
#xanchor "center"
|
||
|
#yanchor "center"
|
||
|
if not snape_chibi.flip:
|
||
|
idle "ch_sna stand"
|
||
|
hover yellow_tint("ch_sna stand")
|
||
|
else:
|
||
|
idle Transform("ch_sna stand", xzoom=-1.0)
|
||
|
hover yellow_tint( Transform("ch_sna stand", xzoom=-1.0) )
|
||
|
action [Hide("DRgame_menu"), Jump("dark_room_stranger")]
|
||
|
|
||
|
if DRmaid in DRgame.characters and DRmaid.location in ["room","desk","fireplace"]:
|
||
|
imagebutton:
|
||
|
pos hermione_chibi.pos
|
||
|
focus_mask True
|
||
|
xanchor "center"
|
||
|
yanchor "center"
|
||
|
idle hermione_chibi_blink
|
||
|
hover yellow_tint(hermione_chibi_blink)
|
||
|
action [Hide("DRgame_menu"), Jump("dark_room_maid")]
|
||
|
|
||
|
zorder 1
|
||
|
|
||
|
|
||
|
#Fireplace
|
||
|
label DRgame_fireplace:
|
||
|
if DRgame.wood >= 1 and DRgame.fire <= 0:
|
||
|
$ DRgame.fire += 1
|
||
|
$ DRgame.wood -= 1
|
||
|
$ fire_in_fireplace = True
|
||
|
$ fireplace_OBJ.foreground = "fireplace_fire"
|
||
|
with d9
|
||
|
pause 1
|
||
|
"The fire is burning..."
|
||
|
jump DRgame_fireplace
|
||
|
elif DRgame.wood <= 0 and DRgame.fire <= 0:
|
||
|
call nar(">You don't have any more wood to burn.\nSoon you will all freeze to death.")
|
||
|
jump DRgame_resume
|
||
|
|
||
|
menu:
|
||
|
"-Stoke the fire-" if DRgame.wood >= 1 and DRgame.fire < 2:
|
||
|
$ DRgame.fire += 1
|
||
|
$ DRgame.wood -= 1
|
||
|
pause .2
|
||
|
$ fire_in_fireplace = True
|
||
|
$ fireplace_OBJ.foreground = "fireplace_fire"
|
||
|
with d9
|
||
|
pause 1
|
||
|
if DRgame.fire == 1:
|
||
|
"The fire is burning..."
|
||
|
if DRgame.fire == 2:
|
||
|
"The fire is roaring..."
|
||
|
"It will burn until night falls."
|
||
|
"-Stoke the fire-" (style="disabled") if DRgame.wood < 1 or DRgame.fire >= 2:
|
||
|
if DRgame.fire >= 2:
|
||
|
call nar(">The fire burns more than enough.")
|
||
|
else:
|
||
|
call nar(">You don't have any more wood to burn.\nSoon you will all freeze to death.")
|
||
|
"-Cook some meat-" if DRgame.fire >= 1 and DRgame.meat >= 1:
|
||
|
jump DRgame_cook_meat
|
||
|
"-Cook some meat-" (style="disabled") if DRgame.fire >= 1 and DRgame.meat < 1:
|
||
|
call nar(">You don't have any meat to cook.")
|
||
|
"-Leave the fireplace-":
|
||
|
jump DRgame_resume
|
||
|
jump DRgame_fireplace
|
||
|
|
||
|
label DRgame_cook_meat:
|
||
|
call DRgame_advance_time
|
||
|
|
||
|
$ temp_number = 1
|
||
|
if DRgame.meat == 1:
|
||
|
$ temp_number = 1
|
||
|
elif DRgame.meat == 2:
|
||
|
$ temp_number = 2
|
||
|
elif DRgame.meat >= 3:
|
||
|
$ temp_number = 3
|
||
|
|
||
|
$ DRgame.meat -= temp_number
|
||
|
$ DRgame.meals += temp_number
|
||
|
|
||
|
if temp_number in [1]:
|
||
|
"With barely any meat left, you were able to cook a small stew..."
|
||
|
if temp_number in [2]:
|
||
|
"There was enough meat to cook a decent stew..."
|
||
|
if temp_number in [3]:
|
||
|
"You were able to cook a rather large stew with meat."
|
||
|
jump DRgame_resume
|
||
|
|
||
|
|
||
|
#Door
|
||
|
label DRgame_door:
|
||
|
menu:
|
||
|
"-Chop Wood-":
|
||
|
jump DRgame_chop_wood
|
||
|
"-Hunt for Animals-":
|
||
|
jump DRgame_hunt_animals
|
||
|
"-Leave the door-":
|
||
|
jump DRgame_resume
|
||
|
|
||
|
|
||
|
label DRgame_chop_wood:
|
||
|
call DRgame_advance_time
|
||
|
|
||
|
call play_sound("door")
|
||
|
call gen_chibi("hide")
|
||
|
with d5
|
||
|
pause.2
|
||
|
call play_music("night")
|
||
|
pause.8
|
||
|
|
||
|
|
||
|
$ temp_number = 1
|
||
|
if DRplayer.random_number in [1]:
|
||
|
$ temp_number += 2
|
||
|
if DRplayer.random_number in [2]:
|
||
|
$ temp_number += 1
|
||
|
if DRplayer.random_number in [4]:
|
||
|
$ temp_number -= 1
|
||
|
if "strength" in DRplayer.skills:
|
||
|
$ temp_number += 1
|
||
|
|
||
|
$ DRgame.wood += temp_number
|
||
|
|
||
|
call gen_chibi("stand","door","base",flip=False)
|
||
|
with d5
|
||
|
|
||
|
"Exhausted you return to the cabin..."
|
||
|
"You were able to gather and chop [temp_number] pieces of wood."
|
||
|
|
||
|
if game.weather in ("blizzard", "snow", "storm", "rain"):
|
||
|
$ DRplayer.hp -= 1
|
||
|
"The ruthless weather has shown its mark on you. You shouldn't have gone out there."
|
||
|
"But there was no other choice..."
|
||
|
|
||
|
jump DRgame_resume
|
||
|
|
||
|
|
||
|
label DRgame_hunt_animals:
|
||
|
call DRgame_advance_time
|
||
|
|
||
|
call play_sound("door")
|
||
|
call gen_chibi("hide")
|
||
|
with d5
|
||
|
pause.2
|
||
|
call play_music("night")
|
||
|
pause.8
|
||
|
|
||
|
$ temp_number = 1
|
||
|
if DRplayer.random_number in [1]:
|
||
|
$ temp_number += 2
|
||
|
if DRplayer.random_number in [2]:
|
||
|
$ temp_number += 1
|
||
|
if DRplayer.random_number in [4]:
|
||
|
$ temp_number -= 1
|
||
|
if game.weather in ("blizzard", "snow", "storm", "rain"):
|
||
|
$ temp_number -= 1
|
||
|
|
||
|
$ DRgame.meat += temp_number
|
||
|
|
||
|
call gen_chibi("stand","door","base",flip=False)
|
||
|
with d5
|
||
|
|
||
|
"You returned from the hunt..."
|
||
|
if temp_number <= 0:
|
||
|
"You were unsuccessful, and couldn't find any wild animals in the thick snow."
|
||
|
elif temp_number == 1:
|
||
|
"You only caught a small rabbit."
|
||
|
elif temp_number == 2:
|
||
|
"You found a wild chicken."
|
||
|
else:
|
||
|
"You found a small fox. Should be good enough to eat..."
|
||
|
|
||
|
if game.weather in ("blizzard", "snow", "storm", "rain"):
|
||
|
$ DRplayer.hp -= 1
|
||
|
"The ruthless weather has shown its mark on you. You shouldn't have gone out there."
|
||
|
"But there was no other choice..."
|
||
|
|
||
|
jump DRgame_resume
|
||
|
|
||
|
#Chair Left
|
||
|
label dark_room_chair_left:
|
||
|
call gen_chibi("hide")
|
||
|
hide screen dark_room
|
||
|
$ read_book = True
|
||
|
show screen dark_room
|
||
|
with d5
|
||
|
pause.8
|
||
|
"In a drawer, you found a dusty old book...\nYou decide to read it..."
|
||
|
if DRgame.fire <= 0:
|
||
|
"The words written on the pages, merge with the long darkness of the night."
|
||
|
"For a minute, you stare into the dark, cold, and empty room, wondering if you will ever leave this place alive..."
|
||
|
"You place the book back to where it was..."
|
||
|
else:
|
||
|
"You read through the pages, glued to every word."
|
||
|
if DRgame.characters == [DRplayer]:
|
||
|
"It helps you cope with your new found loneliness..."
|
||
|
if DRplayer.hp < 10:
|
||
|
$ DRplayer.hp += 1
|
||
|
"You feel a bit better..."
|
||
|
|
||
|
hide screen dark_room
|
||
|
$ read_book = False
|
||
|
show screen dark_room
|
||
|
|
||
|
call DRgame_advance_time
|
||
|
jump DRgame_resume
|
||
|
|
||
|
|
||
|
#Player
|
||
|
label dark_room_player:
|
||
|
menu:
|
||
|
"You":
|
||
|
pass
|
||
|
"-Hunger-":
|
||
|
if DRplayer.hunger in [7,8,9,10]:
|
||
|
"You aren't hungry."
|
||
|
elif DRplayer.hunger in [6,5,4]:
|
||
|
"You could do with another meal."
|
||
|
else:
|
||
|
"You feel hungry."
|
||
|
"-Health-":
|
||
|
if DRplayer.sick == True:
|
||
|
"You are sick. Eat enough, leave work to others, and make sure that the fire is always warm..."
|
||
|
"You will die if you don't."
|
||
|
else:
|
||
|
if DRplayer.hp in [6,7,8,9,10]:
|
||
|
"You feel healthy enough."
|
||
|
else:
|
||
|
"You health is fading. You might become sick."
|
||
|
jump DRgame_resume
|
||
|
|
||
|
#Stranger
|
||
|
label dark_room_stranger:
|
||
|
menu:
|
||
|
"Stranger":
|
||
|
pass
|
||
|
"-Hunger-":
|
||
|
if DRstranger.hunger in [7,8,9,10]:
|
||
|
"They aren't hungry."
|
||
|
elif DRstranger.hunger in [6,5,4]:
|
||
|
"They could do with another meal."
|
||
|
else:
|
||
|
"They feel hungry."
|
||
|
"-Health-":
|
||
|
if DRstranger.sick == True:
|
||
|
"They are sick. They will need food and a warm bed..."
|
||
|
"They will die if they don't get help."
|
||
|
else:
|
||
|
if DRstranger.hp in [6,7,8,9,10]:
|
||
|
"They are healthy."
|
||
|
else:
|
||
|
"Their health is fading. They might become sick."
|
||
|
"-Task-":
|
||
|
menu:
|
||
|
"Give them a task."
|
||
|
"-Chopping Wood-":
|
||
|
$ DRstranger.task = "chopping_wood"
|
||
|
"-Hunting-":
|
||
|
$ DRstranger.task = "hunting"
|
||
|
"-Force to do task-" if DRstranger.task in ["chopping_wood","hunting"]:
|
||
|
$ DRstranger.force_task = True
|
||
|
"The stranger reluctantly agreed do their tasks even in bad weather..."
|
||
|
jump DRgame_resume
|
||
|
"-Get better-" if DRstranger.hp < 6:
|
||
|
$ DRstranger.task = ""
|
||
|
$ DRstranger.force_task = False
|
||
|
"You give them their task..."
|
||
|
"They nod."
|
||
|
|
||
|
jump DRgame_resume
|
||
|
|
||
|
#Desk
|
||
|
label dark_room_desk:
|
||
|
menu:
|
||
|
"Resources"
|
||
|
"Day [DRgame.day]":
|
||
|
pass
|
||
|
"-[DRgame.wood] pieces of firewood-":
|
||
|
"Gather some more when the weather allows it."
|
||
|
"-[DRgame.meat] pieces of raw meat-":
|
||
|
"Cook them or they will spoil."
|
||
|
"-[DRgame.meals] cooked meals-":
|
||
|
"Meals don't spoil, but they take time to cook."
|
||
|
"-[DRgame.leather] pieces of leather-":
|
||
|
"Leather from hunting deer."
|
||
|
"Craft a bow and some arrows to hunt them."
|
||
|
"-[DRgame.fur] pieces of fur-":
|
||
|
"Leather from hunting small animals like foxes."
|
||
|
"They can be caught easier with a knife, or by laying out traps."
|
||
|
"-[DRgame.feathers] feathers-":
|
||
|
"Feathers are required to craft arrows."
|
||
|
"-Return to the start menu-":
|
||
|
jump dark_room_game_start_menu
|
||
|
jump DRgame_resume
|
||
|
|
||
|
|
||
|
label DRgame_advance_time:
|
||
|
if DRgame.time == "morning":
|
||
|
$ DRgame.time = "noon"
|
||
|
elif DRgame.time == "noon":
|
||
|
$ DRgame.time = "afternoon"
|
||
|
elif DRgame.time == "afternoon":
|
||
|
$ DRgame.time = "night"
|
||
|
return
|
||
|
|
||
|
|
||
|
init -1 python:
|
||
|
|
||
|
class DarkRoomGame(object):
|
||
|
day = 1
|
||
|
time = ""
|
||
|
characters = []
|
||
|
events = []
|
||
|
fire = 0
|
||
|
wood = 23
|
||
|
meat = 5
|
||
|
meals = 0
|
||
|
leather = 0
|
||
|
fur = 0
|
||
|
feathers = 0
|
||
|
water = 20
|
||
|
gold = 0
|
||
|
game_over = False
|
||
|
|
||
|
def __init__(self, **kwargs):
|
||
|
self.__dict__.update(**kwargs)
|
||
|
|
||
|
def getChar(self):
|
||
|
return self.characters
|
||
|
|
||
|
class DarkRoomCharacter(object):
|
||
|
name = ""
|
||
|
hp = 10
|
||
|
hunger = 5
|
||
|
sick = False
|
||
|
random_number = 1
|
||
|
days_here = 0
|
||
|
friendship = 0
|
||
|
task = "" #chopping_wood, hunting, sewing, cooking, woodworking,
|
||
|
force_task = False #You can tell them to go out in bad weather.
|
||
|
location = ""
|
||
|
skills = []
|
||
|
unskilled = []
|
||
|
inventory = []
|
||
|
|
||
|
def __init__(self, **kwargs):
|
||
|
self.__dict__.update(**kwargs)
|