Bug fixes and improvements

* Added dev skip for cardgame for testing purposes (I swear!)
* Fixed missing achievement triggers for 'Mad Hatter' and 'Poster Boy'
* Fixed cardgame twins challenge being inaccessible
* Fixed colour picker invoking non-existing image outside wardrobe scope
* Disabled cardgame easter egg (broken, requires refactoring)
* Improved cardgame hints
* Improved cardgame event handling
* Fixed grammar
This commit is contained in:
LoafyLemon 2023-07-08 21:44:35 +01:00
parent 2f136986e2
commit 6e93d8628f
12 changed files with 65 additions and 22 deletions

View File

@ -162,7 +162,7 @@ label hg_tutor_E1:
call her_walk("door", "base") call her_walk("door", "base")
her @ cheeks blush "{size=-4}(I'm glad professor agreed to tutor me!){/size}" ("base", "happyCl", "worried", "mid", xpos="base", ypos="head", flip=False, trans=d3) her @ cheeks blush "{size=-4}(I'm glad the professor agreed to tutor me!){/size}" ("base", "happyCl", "worried", "mid", xpos="base", ypos="head", flip=False, trans=d3)
her "{size=-4}(But pleasure and pain? I don't understand where this is going...){/size}" ("annoyed", "base", "base", "R") her "{size=-4}(But pleasure and pain? I don't understand where this is going...){/size}" ("annoyed", "base", "base", "R")
her "{size=-4}(And what other students is he tutoring?){/size}" ("annoyed", "base", "worried", "L") her "{size=-4}(And what other students is he tutoring?){/size}" ("annoyed", "base", "worried", "L")

View File

@ -4,7 +4,6 @@
default states.twi.ev.cardgame.known = False default states.twi.ev.cardgame.known = False
default states.twi.ev.cardgame.stage = 0 default states.twi.ev.cardgame.stage = 0
default states.twi.ev.cardgame.first_random = True default states.twi.ev.cardgame.first_random = True
default states.twi.ev.cardgame.delay = 7
default states.twi.ev.cardgame.stocked = False default states.twi.ev.cardgame.stocked = False
default states.twi.ev.cardgame.stock_talk = False default states.twi.ev.cardgame.stock_talk = False
default states.twi.ev.cardgame.interest = False default states.twi.ev.cardgame.interest = False

View File

@ -120,11 +120,6 @@ label quests:
# CARDGAME - EVENTS # CARDGAME - EVENTS
# #
if game.day >= states.twi.ev.cardgame.delay:
if states.cardgame.unlocked and states.twi.ev.cardgame.stage >= 1 and not states.twi.ev.cardgame.stocked:
if not game.daytime:
$ letter_cards_store.send()
if geniecard_level < 2 and states.sna.ev.cardgame.stage >= 3 and states.her.ev.cardgame.stage >= 3 and states.twi.ev.cardgame.stage >= 2: if geniecard_level < 2 and states.sna.ev.cardgame.stage >= 3 and states.her.ev.cardgame.stage >= 3 and states.twi.ev.cardgame.stage >= 2:
if not game.daytime: if not game.daytime:
$ letter_cards_tier2.send() $ letter_cards_tier2.send()

View File

@ -36,9 +36,6 @@ screen color_picker(color, alpha, title, pos_xy, color_default):
# Set HSVA variables based on RGBA when screen shows # Set HSVA variables based on RGBA when screen shows
on "show" action Function(color_picker_update_hsva) on "show" action Function(color_picker_update_hsva)
if not renpy.get_screen("wardrobe"):
add "confirm_fade"
frame: frame:
style_prefix gui.theme() style_prefix gui.theme()
if pos_xy and False: if pos_xy and False:

View File

@ -112,7 +112,8 @@ label letter_cards_unlock:
default letter_cards_store = Letter( default letter_cards_store = Letter(
text = "{size=-7}Weasley's Wizard Wheezes shop emporium is now officially partnering with Wizard cards.\nVisit our shop for the best deals on card packs in all of Hogwarts!{/size}", text = "{size=-7}Weasley's Wizard Wheezes shop emporium is now officially partnering with Wizard cards.\nVisit our shop for the best deals on card packs in all of Hogwarts!{/size}",
label = "letter_cards_store" label = "letter_cards_store",
wait = 7
) )
label letter_cards_store: label letter_cards_store:

View File

@ -8,7 +8,7 @@ default tutorial_dict = {
"points": ["House Points", "House points are awarded to students for excelling in their assignments. You can manipulate the points system directly by awarding points to students for completing their tasks, or by befriending the teachers.\n\nSome characters may care about house points more than others so keep that in mind.", False], "points": ["House Points", "House points are awarded to students for excelling in their assignments. You can manipulate the points system directly by awarding points to students for completing their tasks, or by befriending the teachers.\n\nSome characters may care about house points more than others so keep that in mind.", False],
"map": ["Navigation", "The map allows you to traverse the castle by clicking on one of the icons. Highlighted areas indicate a new event on that location. You can access the map from within the desk menu.", False], "map": ["Navigation", "The map allows you to traverse the castle by clicking on one of the icons. Highlighted areas indicate a new event on that location. You can access the map from within the desk menu.", False],
"time": ["Passing Time", "There are many activities you may do at Hogwarts, but occasionally there might not be much to do.\nIf this is the case then you can pass time by clicking on the {color=#204997}{b}pass time button{/b}{/color} located in the top-right corner.\n\n{size=-2}Or you could always rub one out for old time's sake. The choice is yours.{/size}", False], "time": ["Passing Time", "There are many activities you may do at Hogwarts, but occasionally there might not be much to do.\nIf this is the case then you can pass time by clicking on the {color=#204997}{b}pass time button{/b}{/color} located in the top-right corner.\n\n{size=-2}Or you could always rub one out for old time's sake. The choice is yours.{/size}", False],
"mail": ["Mail", "Owls will occasionally bring you letters or parcels. Click on the owl or parcel to interact with it.\n\nUnlike mail pidgeons, owls are tidy creatures and won't shit all over your floors. Theorethically...", False], "mail": ["Mail", "Owls will occasionally bring you letters or parcels. Click on the owl or parcel to interact with it.\n\nUnlike mail pidgeons, owls are tidy creatures and won't shit all over your floors. Theoretically...", False],
"brewing": ["Potions Brewing", "Brewing potions wasn't always an easy task, but thanks to Magic Cauldron incorporated (TM), the entire process became automated. Once you have the required ingredients in your inventory, simply click on the {color=#204997}{b}cauldron{/b}{/color} to make the desired potion.", False], "brewing": ["Potions Brewing", "Brewing potions wasn't always an easy task, but thanks to Magic Cauldron incorporated (TM), the entire process became automated. Once you have the required ingredients in your inventory, simply click on the {color=#204997}{b}cauldron{/b}{/color} to make the desired potion.", False],
"milestones": ["Relationship milestones", "Every milestone is a chance to level up your bond with your virtual companion, leaving your real love life in the dust. Instead of boring old XP, you'll earn a boatload of (s)ass. Now that's what I call an upgrade! No need to go through any awkward first date chat, just advance to the next level.\n\nChoosing this option will progress their story and unlock more favours and events.\n\nBut beware, once you commit, old favours become inaccessible and are replaced with new ones. You may wish to postpone it until you exhaust all content you wish to see on the current level. So choose wisely, my friend.", False], "milestones": ["Relationship milestones", "Every milestone is a chance to level up your bond with your virtual companion, leaving your real love life in the dust. Instead of boring old XP, you'll earn a boatload of (s)ass. Now that's what I call an upgrade! No need to go through any awkward first date chat, just advance to the next level.\n\nChoosing this option will progress their story and unlock more favours and events.\n\nBut beware, once you commit, old favours become inaccessible and are replaced with new ones. You may wish to postpone it until you exhaust all content you wish to see on the current level. So choose wisely, my friend.", False],
} }

View File

@ -99,6 +99,23 @@ init python:
selectenemycard = -1 selectenemycard = -1
return "NewTurn" return "NewTurn"
elif _return == "skip_win":
renpy.show_screen("card_end_message", "You win!")
renpy.sound.play("sounds/card_win.ogg")
renpy.pause(3.0) # Pause before end
renpy.hide_screen("card_end_message")
renpy.hide_screen("card_battle")
renpy.transition(dissolve)
return "win"
elif _return == "skip_lost":
renpy.show_screen("card_end_message", "You lost...")
renpy.pause(3.0) # Pause before end
renpy.hide_screen("card_end_message")
renpy.hide_screen("card_battle")
renpy.transition(dissolve)
return "lost"
else: else:
if not selectcard == -1: if not selectcard == -1:
renpy.sound.play("sounds/card.ogg") renpy.sound.play("sounds/card.ogg")
@ -248,6 +265,11 @@ screen card_battle(l_playerdeck, l_enemydeck, shown_cards):
if not selectenemycard == -1: if not selectenemycard == -1:
use cardrender(l_enemydeck[selectenemycard], 860,17+80*selectenemycard, backside= shown_cards[selectenemycard]) use cardrender(l_enemydeck[selectenemycard], 860,17+80*selectenemycard, backside= shown_cards[selectenemycard])
if config.developer:
vbox:
textbutton "Dev skip (win)" action Return("skip_win")
textbutton "Dev skip (lose)" action Return("skip_lost")
use close_button use close_button
transform cardrender_move(xpos_card, ypos_card, start_xy): transform cardrender_move(xpos_card, ypos_card, start_xy):

View File

@ -139,13 +139,13 @@ screen deck_builder_screen():
keysym "game_menu" keysym "game_menu"
#Easter egg #Easter egg
hbox: # hbox:
xpos 1020 # xpos 1020
ypos 296 # ypos 296
xsize 40 # xsize 40
ysize 40 # ysize 40
button action Jump("color_change") background "#ffffff00" # button action Jump("color_change") background "#ffffff00"
#add Solid(get_hex_string(playercolor_rgb)) # #add Solid(get_hex_string(playercolor_rgb))
screen deck_builder_gallery(): screen deck_builder_gallery():
zorder 8 zorder 8

View File

@ -28,8 +28,9 @@ label twins_first_duel:
fre "So you better get ready for a rematch!" fre "So you better get ready for a rematch!"
twi "Because we'll win next time!" twi "Because we'll win next time!"
gen "We'll see about that... I can't have students going around showing up to their headmaster, can I?" ("base", xpos="far_left", ypos="head") gen "We'll see about that... I can't have students going around showing up to their headmaster, can I?" ("base", xpos="far_left", ypos="head")
$ states.twi.ev.cardgame.stage = 1 $ states.twi.ev.cardgame.stage = 1
$ states.twi.ev.cardgame.delay = states.twi.ev.cardgame.delay+game.day $ letter_cards_store.send()
pass pass
else: else:
twi "Not again..." twi "Not again..."

View File

@ -90,4 +90,19 @@ label purchase_item(item):
$ game.gold -= item.price $ game.gold -= item.price
$ item.owned += 1 $ item.owned += 1
$ item_store_achievements()
return return
init python:
def item_store_achievements():
# We require a function because lambdas aren't pickleable
if isinstance(item, Decoration):
_posters = filter(lambda x: (x.type == "decoration" and x.placement == poster_OBJ), inventory.items)
_hats = filter(lambda x: (x.type == "decoration" and "hat" in x.name.lower()), inventory.items)
if all(i.owned > 0 for i in _posters):
achievements.unlock("postman")
if all(i.owned > 0 for i in _hats):
achievements.unlock("hats")

View File

@ -203,9 +203,13 @@ label item_store:
menu: menu:
"-First Duel-": "-First Duel-":
jump twins_first_duel jump twins_first_duel
"-Challenge-" if states.twi.ev.cardgame.stage > 1: "-Challenge-" if states.twi.ev.cardgame.stock_talk:
jump twins_second_duel jump twins_second_duel
"-You need to beat the first duel-" (style="disabled") if states.twi.ev.cardgame.stage < 1: "-You need to beat the first duel-" (style="disabled") if not states.twi.ev.cardgame.stock_talk:
if states.twi.ev.cardgame.stage < 1:
gen "(I should beat them at their own game at least once before I try this again...)"
elif not states.twi.ev.cardgame.stock_talk:
gen "(I need to wait for a letter from them before we can continue...)"
jump twins_duel_menu jump twins_duel_menu
"-Never mind-": "-Never mind-":
twi "Your loss professor." twi "Your loss professor."

View File

@ -113,6 +113,15 @@ init python:
j.group = objects j.group = objects
j.is_stale() j.is_stale()
# Fix cardgame events
delattr(states.twi.ev.cardgame, "delay")
if states.twi.ev.cardgame.stage == 1 and not states.twi.ev.cardgame.stock_talk and not letter_cards_store in mailbox.letters:
# In case the player already started the event chain, send the letter early.
letter_cards_store.send()
getattr(store, "letter_cards_store").wait = 7
if current > latest: if current > latest:
raise Exception("Loaded save file is incompatible. (Save Version: {}, Game Version: {})".format(current, latest)) raise Exception("Loaded save file is incompatible. (Save Version: {}, Game Version: {})".format(current, latest))