Refactored currencies
* Removed game class (superseded) * Refactored currencies * Bug fixes
This commit is contained in:
parent
085a4d8e9c
commit
c7f7f6c8a0
29
game/scripts/interface/currency.rpy
Normal file
29
game/scripts/interface/currency.rpy
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
init python:
|
||||||
|
def animate_int_value(st, at, old, new, prefix="G"):
|
||||||
|
if st > 1.0:
|
||||||
|
return Text(f"{prefix} {new}"), None
|
||||||
|
else:
|
||||||
|
if new > old:
|
||||||
|
value = int((new-old)*(1.0-st)) + 1
|
||||||
|
d = Text("{} {}\n+{}".format(prefix, old + int((new-old)*st), value))
|
||||||
|
else:
|
||||||
|
value = int((old-new)*(1.0-st)) + 1
|
||||||
|
d = Text("{} {}\n-{}".format(prefix, old - int((old-new)*st), value))
|
||||||
|
return d, 0.01
|
||||||
|
|
||||||
|
screen currency(old, new, prefix):
|
||||||
|
tag gold
|
||||||
|
zorder 50
|
||||||
|
|
||||||
|
default d = DynamicDisplayable(animate_int_value, old, new, prefix)
|
||||||
|
|
||||||
|
frame:
|
||||||
|
xpadding 10
|
||||||
|
ysize 44
|
||||||
|
xminimum 80
|
||||||
|
background Frame(gui.format("interface/frames/{}/iconmed.webp"), 6, 6)
|
||||||
|
pos (50, 50)
|
||||||
|
|
||||||
|
add d yoffset 3
|
||||||
|
|
||||||
|
timer 3.0 action Hide("currency")
|
@ -7,7 +7,6 @@ init python:
|
|||||||
"Juliasep": (10, 10, 8, 1, 2, 6, 9),
|
"Juliasep": (10, 10, 8, 1, 2, 6, 9),
|
||||||
"Octobrinde": (6, 7, 9, 9, 10, 6, 6),
|
"Octobrinde": (6, 7, 9, 9, 10, 6, 6),
|
||||||
}
|
}
|
||||||
_weather = None
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _interpolate_weights(day, period):
|
def _interpolate_weights(day, period):
|
||||||
@ -29,7 +28,8 @@ init python:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_weather():
|
def get_weather():
|
||||||
return Weather._weather
|
# Proxy
|
||||||
|
return states.env.weather
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def set_weather(value=None):
|
def set_weather(value=None):
|
||||||
@ -45,8 +45,6 @@ init python:
|
|||||||
Weather._weather = value
|
Weather._weather = value
|
||||||
return value
|
return value
|
||||||
|
|
||||||
weather = property(get_weather, set_weather)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def forecast(span=35):
|
def forecast(span=35):
|
||||||
forecast = {}
|
forecast = {}
|
||||||
|
@ -1,87 +0,0 @@
|
|||||||
init -100 python:
|
|
||||||
def show_gold(st, at, old, new):
|
|
||||||
if st > 1.0:
|
|
||||||
return Text(f"G {new}"), None
|
|
||||||
else:
|
|
||||||
if new > old:
|
|
||||||
value = int((new-old)*(1.0-st)) + 1
|
|
||||||
d = Text("G {}\n+{}".format(old + int((new-old)*st), value))
|
|
||||||
else:
|
|
||||||
value = int((old-new)*(1.0-st)) + 1
|
|
||||||
d = Text("G {}\n-{}".format(old - int((old-new)*st), value))
|
|
||||||
return d, 0.01
|
|
||||||
|
|
||||||
class Game(object):
|
|
||||||
weather_types = ("clear", "cloudy", "overcast", "blizzard", "snow", "storm", "rain")
|
|
||||||
weather_weights = (35, 35, 20, 5, 10, 10, 15)
|
|
||||||
|
|
||||||
def __init__(self, gold=0, day=0):
|
|
||||||
# Protected values
|
|
||||||
self._gold = gold
|
|
||||||
self._day = day
|
|
||||||
self._gryf = 0
|
|
||||||
self._slyt = 0
|
|
||||||
self._rave = 0
|
|
||||||
self._huff = 0
|
|
||||||
self._weather = "clear"
|
|
||||||
|
|
||||||
# Normal values
|
|
||||||
self.daytime = True
|
|
||||||
self.difficulty = 2
|
|
||||||
self.cheats = False
|
|
||||||
self.moon = True
|
|
||||||
|
|
||||||
@property
|
|
||||||
def gold(self):
|
|
||||||
return self._gold
|
|
||||||
|
|
||||||
@gold.setter
|
|
||||||
def gold(self, value):
|
|
||||||
old = self._gold
|
|
||||||
self._gold = max(0, min(value, 99999))
|
|
||||||
|
|
||||||
if not renpy.in_rollback() and not _in_replay:
|
|
||||||
renpy.hide_screen("gold")
|
|
||||||
renpy.show_screen("gold", old, self._gold)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def day(self):
|
|
||||||
return self._day
|
|
||||||
|
|
||||||
@day.setter
|
|
||||||
def day(self, value):
|
|
||||||
self._day = max(0, min(value, 99999))
|
|
||||||
|
|
||||||
@property
|
|
||||||
def weather(self):
|
|
||||||
return Weather.get_weather()
|
|
||||||
|
|
||||||
@weather.setter
|
|
||||||
def weather(self, value):
|
|
||||||
Weather.set_weather(value)
|
|
||||||
self.moon = (self.day % 7 == 0)
|
|
||||||
|
|
||||||
screen gold(old, new):
|
|
||||||
tag gold
|
|
||||||
zorder 50
|
|
||||||
|
|
||||||
default d = DynamicDisplayable(show_gold, old, new)
|
|
||||||
|
|
||||||
frame:
|
|
||||||
xpadding 10
|
|
||||||
ysize 44
|
|
||||||
xminimum 80
|
|
||||||
background Frame(gui.format("interface/frames/{}/iconmed.webp"), 6, 6)
|
|
||||||
pos (50, 50)
|
|
||||||
|
|
||||||
add d yoffset 3
|
|
||||||
|
|
||||||
timer 3.0 action Hide("gold")
|
|
||||||
|
|
||||||
init offset = -99
|
|
||||||
|
|
||||||
default game = Game()
|
|
||||||
|
|
||||||
# Points change displayable
|
|
||||||
# Day change displayable
|
|
||||||
# Add one of X generator
|
|
@ -16,7 +16,6 @@ default playercolor_rgb = Color((51, 92, 147, 255))
|
|||||||
default enemycolor_rgb = Color((116, 0, 0, 255))
|
default enemycolor_rgb = Color((116, 0, 0, 255))
|
||||||
|
|
||||||
default geniecard_level = 1
|
default geniecard_level = 1
|
||||||
default tokens = 0
|
|
||||||
default cardgame_eoc = False # End of content flag
|
default cardgame_eoc = False # End of content flag
|
||||||
|
|
||||||
default table_cards = [[None for x in range(0,3)] for y in range(0,3)]
|
default table_cards = [[None for x in range(0,3)] for y in range(0,3)]
|
||||||
|
@ -105,7 +105,7 @@ label hermione_first_duel:
|
|||||||
else:
|
else:
|
||||||
her "This game is stupid, I'm leaving!" ("angry", "closed", "angry", "mid")
|
her "This game is stupid, I'm leaving!" ("angry", "closed", "angry", "mid")
|
||||||
|
|
||||||
$ tokens += 1
|
$ states.env.tokens += 1
|
||||||
|
|
||||||
call her_walk(action="leave")
|
call her_walk(action="leave")
|
||||||
jump end_hermione_event
|
jump end_hermione_event
|
||||||
@ -139,7 +139,7 @@ label hermione_second_duel:
|
|||||||
else:
|
else:
|
||||||
her "This game is stupid, I'm leaving!" ("angry", "closed", "angry", "mid")
|
her "This game is stupid, I'm leaving!" ("angry", "closed", "angry", "mid")
|
||||||
|
|
||||||
$ tokens += 1
|
$ states.env.tokens+= 1
|
||||||
|
|
||||||
call her_walk(action="leave")
|
call her_walk(action="leave")
|
||||||
jump end_hermione_event
|
jump end_hermione_event
|
||||||
@ -195,9 +195,9 @@ label hermione_third_duel:
|
|||||||
$ unlocked_cards += [card_her_librarian]
|
$ unlocked_cards += [card_her_librarian]
|
||||||
call give_reward("You have received a card!", "images/cardgame/t1/hermione/her_librarian_v1.webp")
|
call give_reward("You have received a card!", "images/cardgame/t1/hermione/her_librarian_v1.webp")
|
||||||
|
|
||||||
$ tokens += 3
|
$ states.env.tokens+= 3
|
||||||
else:
|
else:
|
||||||
$ tokens += 1
|
$ states.env.tokens+= 1
|
||||||
|
|
||||||
her "I'll be going now, goodbye."
|
her "I'll be going now, goodbye."
|
||||||
call her_walk(action="leave")
|
call her_walk(action="leave")
|
||||||
@ -260,9 +260,9 @@ label hermione_random_duel:
|
|||||||
|
|
||||||
if states.her.ev.cardgame.stage < 4:
|
if states.her.ev.cardgame.stage < 4:
|
||||||
$ states.her.ev.cardgame.stage = 4
|
$ states.her.ev.cardgame.stage = 4
|
||||||
$ tokens += 3
|
$ states.env.tokens+= 3
|
||||||
else:
|
else:
|
||||||
$ tokens += 1
|
$ states.env.tokens+= 1
|
||||||
|
|
||||||
gen "Seems like I've won this one [name_hermione_genie]." ("base", xpos="far_left", ypos="head")
|
gen "Seems like I've won this one [name_hermione_genie]." ("base", xpos="far_left", ypos="head")
|
||||||
her "I noticed..." ("normal", "base", "worried", "R")
|
her "I noticed..." ("normal", "base", "worried", "R")
|
||||||
|
@ -187,7 +187,7 @@ label snape_first_duel:
|
|||||||
|
|
||||||
if states.sna.ev.cardgame.stage < 1:
|
if states.sna.ev.cardgame.stage < 1:
|
||||||
$ states.sna.ev.cardgame.stage = 1
|
$ states.sna.ev.cardgame.stage = 1
|
||||||
$ tokens += 1
|
$ states.env.tokens+= 1
|
||||||
|
|
||||||
jump main_room_menu
|
jump main_room_menu
|
||||||
|
|
||||||
@ -228,7 +228,7 @@ label snape_second_duel:
|
|||||||
|
|
||||||
if states.sna.ev.cardgame.stage < 2:
|
if states.sna.ev.cardgame.stage < 2:
|
||||||
$ states.sna.ev.cardgame.stage = 2
|
$ states.sna.ev.cardgame.stage = 2
|
||||||
$ tokens += 1
|
$ states.env.tokens+= 1
|
||||||
|
|
||||||
jump main_room_menu
|
jump main_room_menu
|
||||||
|
|
||||||
@ -293,9 +293,9 @@ label snape_third_duel:
|
|||||||
$ states.sna.ev.cardgame.stage = 3
|
$ states.sna.ev.cardgame.stage = 3
|
||||||
$ unlocked_cards += [card_snape]
|
$ unlocked_cards += [card_snape]
|
||||||
call give_reward("You have received a special card!", "images/cardgame/t1/special/snape_v1.webp")
|
call give_reward("You have received a special card!", "images/cardgame/t1/special/snape_v1.webp")
|
||||||
$ tokens += 3
|
$ states.env.tokens+= 3
|
||||||
else:
|
else:
|
||||||
$ tokens += 1
|
$ states.env.tokens+= 1
|
||||||
|
|
||||||
play sound "sounds/door.ogg"
|
play sound "sounds/door.ogg"
|
||||||
call hide_characters
|
call hide_characters
|
||||||
@ -414,7 +414,7 @@ label snape_random_duel:
|
|||||||
with d3
|
with d3
|
||||||
|
|
||||||
$ states.sna.busy = True
|
$ states.sna.busy = True
|
||||||
$ tokens += 1
|
$ states.env.tokens+= 1
|
||||||
|
|
||||||
jump main_room_menu
|
jump main_room_menu
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ label twins_first_duel:
|
|||||||
|
|
||||||
"You return to your office."
|
"You return to your office."
|
||||||
|
|
||||||
$ tokens += 1
|
$ states.env.tokens+= 1
|
||||||
|
|
||||||
jump main_room
|
jump main_room
|
||||||
|
|
||||||
@ -87,11 +87,11 @@ label twins_second_duel:
|
|||||||
$ unlocked_cards += [card_rand_twins[0]]
|
$ unlocked_cards += [card_rand_twins[0]]
|
||||||
call give_reward("You have received a special card!", "images/cardgame/t1/special/%s_v1.webp" % str(card_rand_twins[1]))
|
call give_reward("You have received a special card!", "images/cardgame/t1/special/%s_v1.webp" % str(card_rand_twins[1]))
|
||||||
$ states.twi.ev.cardgame.stage = 2
|
$ states.twi.ev.cardgame.stage = 2
|
||||||
$ tokens += 3
|
$ states.env.tokens+= 3
|
||||||
else:
|
else:
|
||||||
twi "Not again..."
|
twi "Not again..."
|
||||||
gen "Tough luck boys." ("base", xpos="far_left", ypos="head")
|
gen "Tough luck boys." ("base", xpos="far_left", ypos="head")
|
||||||
$ tokens += 1
|
$ states.env.tokens+= 1
|
||||||
|
|
||||||
"You return to your office."
|
"You return to your office."
|
||||||
jump main_room
|
jump main_room
|
||||||
@ -216,16 +216,16 @@ label twins_random_duel:
|
|||||||
call give_reward("You have received 5%% of the twins' profits!", "interface/icons/cards.webp")
|
call give_reward("You have received 5%% of the twins' profits!", "interface/icons/cards.webp")
|
||||||
$ states.twi.ev.cardgame.profit += 0.05
|
$ states.twi.ev.cardgame.profit += 0.05
|
||||||
$ states.twi.ev.cardgame.stage = 3
|
$ states.twi.ev.cardgame.stage = 3
|
||||||
$ tokens += 3
|
$ states.env.tokens+= 3
|
||||||
elif states.twi.ev.cardgame.profit >= 1.2:
|
elif states.twi.ev.cardgame.profit >= 1.2:
|
||||||
fre "Nice job but you've reached the cap I'm afraid."
|
fre "Nice job but you've reached the cap I'm afraid."
|
||||||
ger "Yeah, we don't want to go into the minus, do we?"
|
ger "Yeah, we don't want to go into the minus, do we?"
|
||||||
$ tokens += 1
|
$ states.env.tokens+= 1
|
||||||
else:
|
else:
|
||||||
twi "Not again..."
|
twi "Not again..."
|
||||||
gen "Time to pay up, boys." ("base", xpos="far_left", ypos="head")
|
gen "Time to pay up, boys." ("base", xpos="far_left", ypos="head")
|
||||||
ger "Fine... We'll up your weekly cut by 1%%..."
|
ger "Fine... We'll up your weekly cut by 1%%..."
|
||||||
$ tokens += 1
|
$ states.env.tokens+= 1
|
||||||
$ states.twi.ev.cardgame.profit += 0.01
|
$ states.twi.ev.cardgame.profit += 0.01
|
||||||
|
|
||||||
"You return to your office."
|
"You return to your office."
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
label purchase_item(item):
|
label purchase_item(item):
|
||||||
|
|
||||||
if item.currency == "tokens":
|
if item.currency == "tokens":
|
||||||
if tokens < item.price:
|
if states.env.tokens< item.price:
|
||||||
gen "(I don't have enough tokens.)" ("base", xpos="far_left", ypos="head")
|
gen "(I don't have enough tokens.)" ("base", xpos="far_left", ypos="head")
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
@ -85,7 +85,7 @@ label purchase_item(item):
|
|||||||
play sound "sounds/money.ogg"
|
play sound "sounds/money.ogg"
|
||||||
|
|
||||||
if item.currency == "tokens":
|
if item.currency == "tokens":
|
||||||
$ tokens -= item.price
|
$ states.env.tokens-= item.price
|
||||||
else:
|
else:
|
||||||
$ states.env.gold -= item.price
|
$ states.env.gold -= item.price
|
||||||
$ item.owned += 1
|
$ item.owned += 1
|
||||||
|
@ -212,7 +212,7 @@ screen shop_item_menuitem(xx, yy):
|
|||||||
|
|
||||||
add crop_image_zoom(
|
add crop_image_zoom(
|
||||||
menu_items[i].get_image(), 42, 42,
|
menu_items[i].get_image(), 42, 42,
|
||||||
(menu_items[i].currency != "tokens" or tokens < menu_items[i].price) and (menu_items[i].owned >= 99 or states.env.gold < menu_items[i].price)
|
(menu_items[i].currency != "tokens" or states.env.tokens< menu_items[i].price) and (menu_items[i].owned >= 99 or states.env.gold < menu_items[i].price)
|
||||||
) align (0.5, 0.5)
|
) align (0.5, 0.5)
|
||||||
|
|
||||||
button:
|
button:
|
||||||
@ -226,7 +226,7 @@ screen shop_item_menuitem(xx, yy):
|
|||||||
text str(menu_items[i].owned) size 10 align (0.1, 0.1) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ]
|
text str(menu_items[i].owned) size 10 align (0.1, 0.1) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ]
|
||||||
|
|
||||||
if menu_items[i].currency == "tokens":
|
if menu_items[i].currency == "tokens":
|
||||||
if tokens >= menu_items[i].price:
|
if states.env.tokens>= menu_items[i].price:
|
||||||
text "{color=#2055da}T{/color} [price]" size 10 pos (0.95, 0.95) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ]
|
text "{color=#2055da}T{/color} [price]" size 10 pos (0.95, 0.95) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ]
|
||||||
else:
|
else:
|
||||||
text "{color=#2055da}T{/color} {color=#ff0000}[price]{/color}" size 10 pos (0.95, 0.95) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ]
|
text "{color=#2055da}T{/color} {color=#ff0000}[price]{/color}" size 10 pos (0.95, 0.95) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ]
|
||||||
@ -249,7 +249,7 @@ screen shop_item_menuitem(xx, yy):
|
|||||||
|
|
||||||
add crop_image_zoom(
|
add crop_image_zoom(
|
||||||
current_item.get_image(), 84, 84,
|
current_item.get_image(), 84, 84,
|
||||||
(current_item.currency != "tokens" or tokens < current_item.price) and (current_item.owned >= 99 or states.env.gold < current_item.price)
|
(current_item.currency != "tokens" or states.env.tokens< current_item.price) and (current_item.owned >= 99 or states.env.gold < current_item.price)
|
||||||
) align (0.5, 0.5)
|
) align (0.5, 0.5)
|
||||||
add "interface/achievements/glass_selected.webp" pos (6, 6)
|
add "interface/achievements/glass_selected.webp" pos (6, 6)
|
||||||
|
|
||||||
@ -257,7 +257,7 @@ screen shop_item_menuitem(xx, yy):
|
|||||||
text "[current_item.owned]" size 14 align (0.1, 0.1) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ]
|
text "[current_item.owned]" size 14 align (0.1, 0.1) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ]
|
||||||
|
|
||||||
if current_item.currency == "tokens":
|
if current_item.currency == "tokens":
|
||||||
if tokens >= current_item.price:
|
if states.env.tokens>= current_item.price:
|
||||||
text "{color=#2055da}T{/color} [current_item.price]" size 14 pos (0.9, 0.9) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ]
|
text "{color=#2055da}T{/color} [current_item.price]" size 14 pos (0.9, 0.9) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ]
|
||||||
else:
|
else:
|
||||||
text "{color=#2055da}T{/color} {color=#ff0000}[current_item.price]{/color}" size 14 pos (0.90, 0.90) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ]
|
text "{color=#2055da}T{/color} {color=#ff0000}[current_item.price]{/color}" size 14 pos (0.90, 0.90) anchor (1.0, 1.0) color "#FFFFFF" outlines [ (1, "#000", 0, 0) ]
|
||||||
@ -280,7 +280,7 @@ screen shop_item_menuitem(xx, yy):
|
|||||||
xoffset 45
|
xoffset 45
|
||||||
ypos 374
|
ypos 374
|
||||||
text_size 16
|
text_size 16
|
||||||
sensitive ((current_item.currency == "tokens" and tokens >= current_item.price) or (current_item.owned < 99 and states.env.gold >= current_item.price))
|
sensitive ((current_item.currency == "tokens" and states.env.tokens>= current_item.price) or (current_item.owned < 99 and states.env.gold >= current_item.price))
|
||||||
action Return("buy")
|
action Return("buy")
|
||||||
|
|
||||||
hbox:
|
hbox:
|
||||||
|
@ -36,6 +36,7 @@ init python:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
# Protected values
|
# Protected values
|
||||||
self._gold = 0
|
self._gold = 0
|
||||||
|
self._tokens = 0
|
||||||
self._day = 0
|
self._day = 0
|
||||||
self._gryf = 0
|
self._gryf = 0
|
||||||
self._slyt = 0
|
self._slyt = 0
|
||||||
@ -59,8 +60,21 @@ init python:
|
|||||||
self._gold = max(0, min(value, 99999))
|
self._gold = max(0, min(value, 99999))
|
||||||
|
|
||||||
if not renpy.in_rollback() and not _in_replay:
|
if not renpy.in_rollback() and not _in_replay:
|
||||||
renpy.hide_screen("gold")
|
renpy.hide_screen("currency")
|
||||||
renpy.show_screen("gold", old, self._gold)
|
renpy.show_screen("currency", old, self._gold, "💰")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def tokens(self):
|
||||||
|
return self._tokens
|
||||||
|
|
||||||
|
@tokens.setter
|
||||||
|
def tokens(self, value):
|
||||||
|
old = self._tokens
|
||||||
|
self._tokens = max(0, min(value, 99999))
|
||||||
|
|
||||||
|
if not renpy.in_rollback() and not _in_replay:
|
||||||
|
renpy.hide_screen("currency")
|
||||||
|
renpy.show_screen("currency", old, self._tokens, "🪙")
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def day(self):
|
def day(self):
|
||||||
@ -72,10 +86,10 @@ init python:
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def weather(self):
|
def weather(self):
|
||||||
return Weather.get_weather()
|
return self._weather
|
||||||
|
|
||||||
@weather.setter
|
@weather.setter
|
||||||
def weather(self, value):
|
def weather(self, value):
|
||||||
Weather.set_weather(value)
|
self._weather = Weather.set_weather(value)
|
||||||
|
|
||||||
default states.env = Environment()
|
default states.env = Environment()
|
||||||
|
Loading…
Reference in New Issue
Block a user