852 lines
44 KiB
Plaintext
852 lines
44 KiB
Plaintext
default selectcard = -1
|
|
default selectenemycard = -1
|
|
default currentpage = 0
|
|
#Shown Cards is a integer for how many cards should be hidden
|
|
#
|
|
#Sudden Death is where when there is draw then a new round will begin
|
|
#Where you take all card of you color up in you hand
|
|
#
|
|
#Reverse is where the take over is reverse so instead of > it is <
|
|
#
|
|
#Dobelt_number
|
|
# Rules(Shown Cards, Sudden Death, Reverse, Dobelt_number)
|
|
default standard_rules = [0, False, False, False]
|
|
|
|
default playercolor_rgb = Color((51, 92, 147, 255))
|
|
default enemycolor_rgb = Color((116, 0, 0, 255))
|
|
|
|
default geniecard_level = 1
|
|
default tokens = 0
|
|
default cardgame_eoc = False # End of content flag
|
|
|
|
default table_cards = [[None for x in range(0,3)] for y in range(0,3)]
|
|
|
|
#Special Cards
|
|
|
|
default card_genie = Card( imagepath="images/cardgame/t1/special/genie_v1.webp",
|
|
topvalue = 2,
|
|
bottomvalue = 2,
|
|
rightvalue = 5,
|
|
leftvalue = 3,
|
|
title="Genie",
|
|
description = "It's you, looking sexy as fuck. As always.")
|
|
|
|
default card_snape = Card( imagepath="images/cardgame/t1/special/snape_v1.webp",
|
|
topvalue = 4,
|
|
bottomvalue = 1,
|
|
rightvalue = 4,
|
|
leftvalue = 2,
|
|
title="Severus Snape",
|
|
description = "The potions master at Hogwarts. Known to many by his slithering walk and greasy appearance.")
|
|
|
|
default card_dumbledore = Card( imagepath="images/cardgame/t1/special/dumbledore_v1.webp",
|
|
topvalue = 6,
|
|
bottomvalue = 1,
|
|
rightvalue = 3,
|
|
leftvalue = 1,
|
|
title="Albus Dumbledore",
|
|
description = "Some old dude, you have no idea who this is.")
|
|
|
|
default card_fred = Card( imagepath="images/cardgame/t1/special/fred_v1.webp",
|
|
topvalue = 3,
|
|
bottomvalue = 2,
|
|
rightvalue = 4,
|
|
leftvalue = 1,
|
|
title="Fred Weasley",
|
|
description = "One of the Weasley twins, I think it might be George.")
|
|
|
|
default card_george = Card( imagepath="images/cardgame/t1/special/george_v1.webp",
|
|
topvalue = 2,
|
|
bottomvalue = 3,
|
|
rightvalue = 1,
|
|
leftvalue = 4,
|
|
title="George Weasley",
|
|
description = "One of the Weasley twins, I think it might be Fred.")
|
|
|
|
#Special Cards - Alternative
|
|
|
|
default card_jasmine = Card( imagepath="images/cardgame/t1/genie_realm/jas_v%s.webp" % str(geniecard_level),
|
|
topvalue = 2,
|
|
bottomvalue = 3,
|
|
rightvalue = 2,
|
|
leftvalue = 4,
|
|
title="Princess Jasmine",
|
|
description = "One of your favourite sluts, I mean, princesses.")
|
|
|
|
default card_iris = Card( imagepath="images/cardgame/t1/genie_realm/iri_v%s.webp" % str(geniecard_level),
|
|
topvalue = 3,
|
|
bottomvalue = 2,
|
|
rightvalue = 4,
|
|
leftvalue = 2,
|
|
title="Iris",
|
|
description = "Your most devoted fangirl.")
|
|
|
|
default card_azalea = Card( imagepath="images/cardgame/t1/genie_realm/azalea_v%s.webp" % str(geniecard_level),
|
|
topvalue = 4,
|
|
bottomvalue = 2,
|
|
rightvalue = 2,
|
|
leftvalue = 3,
|
|
title="Azalea",
|
|
description = "Your dreamgirl.")
|
|
|
|
default card_dahlia = Card( imagepath="images/cardgame/t1/genie_realm/dahlia_v1.webp",
|
|
topvalue = 3,
|
|
bottomvalue = 3,
|
|
rightvalue = 1,
|
|
leftvalue = 2,
|
|
title="Dahlia",
|
|
description = "She's very (s)experienced.")
|
|
|
|
default card_aladdin = Card( imagepath="images/cardgame/t1/genie_realm/aladdin_v1.webp",
|
|
topvalue = 4,
|
|
bottomvalue = 2,
|
|
rightvalue = 1,
|
|
leftvalue = 4,
|
|
title="Aladdin",
|
|
description = "The biggest cuck in the whole multiverse.")
|
|
|
|
default card_lilly = Card( imagepath="images/cardgame/t1/genie_realm/lilly_v1.webp",
|
|
topvalue = 1,
|
|
bottomvalue = 5,
|
|
rightvalue = 5,
|
|
leftvalue = 5,
|
|
title="Lilly",
|
|
description = "Who's your momma?")
|
|
|
|
default card_maslab = Card( imagepath="images/cardgame/t1/genie_realm/maslab_v1.webp",
|
|
topvalue = 2,
|
|
bottomvalue = 3,
|
|
rightvalue = 4,
|
|
leftvalue = 4,
|
|
title="Maslab",
|
|
description = "\"If you hurt my precious daughter I'll find you!\"")
|
|
|
|
default card_rasul = Card( imagepath="images/cardgame/t1/genie_realm/rasul_v1.webp",
|
|
topvalue = 6,
|
|
bottomvalue = 2,
|
|
rightvalue = 2,
|
|
leftvalue = 2,
|
|
title="Rasul",
|
|
description = "Loyalty has its price.")
|
|
|
|
default card_jafar = Card( imagepath="images/cardgame/t1/genie_realm/jafar_v1.webp",
|
|
topvalue = 4,
|
|
bottomvalue = 1,
|
|
rightvalue = 4,
|
|
leftvalue = 2,
|
|
title="Jafar",
|
|
description = "That silver-tongued motherfucker..")
|
|
|
|
default card_santa = Card( imagepath="images/cardgame/t1/special/santa_v1.webp",
|
|
topvalue = 2,
|
|
bottomvalue = 2,
|
|
rightvalue = 5,
|
|
leftvalue = 1,
|
|
title="Santa",
|
|
description = "Some guy that's been stealing your style. I'll put him on my naughty list.")
|
|
|
|
#Tier 1 cards
|
|
|
|
default card_her_schoolgirl = Card( imagepath="images/cardgame/t1/hermione/her_schoolgirl_v%s.webp" % str(geniecard_level),
|
|
topvalue = 4,
|
|
bottomvalue = 3,
|
|
rightvalue = 2,
|
|
leftvalue = 1,
|
|
title="Hermione Granger",
|
|
description = "The Granger girl wearing her normal school uniform.")
|
|
|
|
default card_her_librarian = Card( imagepath="images/cardgame/t1/hermione/her_librarian_v%s.webp" % str(geniecard_level),
|
|
topvalue = 5,
|
|
bottomvalue = 2,
|
|
rightvalue = 1,
|
|
leftvalue = 4,
|
|
title="Hermione Granger",
|
|
description = "The Granger girl clutching a real page turner.")
|
|
|
|
default card_sus_schoolgirl = Card( imagepath="images/cardgame/t1/susan/sus_schoolgirl_v%s.webp" % str(geniecard_level),
|
|
topvalue = 3,
|
|
bottomvalue = 4,
|
|
rightvalue = 1,
|
|
leftvalue = 2,
|
|
title="Susan Bones",
|
|
description = "Miss Bones, barely contained within her school uniform.")
|
|
|
|
default card_cho_schoolgirl = Card( imagepath="images/cardgame/t1/cho/cho_schoolgirl_v%s.webp" % str(geniecard_level),
|
|
topvalue = 2,
|
|
bottomvalue = 4,
|
|
rightvalue = 3,
|
|
leftvalue = 1,
|
|
title="Cho Chang",
|
|
description = "Miss Chang, sporting her school uniform.")
|
|
|
|
default card_lun_schoolgirl = Card( imagepath="images/cardgame/t1/luna/lun_schoolgirl_v%s.webp" % str(geniecard_level),
|
|
topvalue = 1,
|
|
bottomvalue = 2,
|
|
rightvalue = 4,
|
|
leftvalue = 3,
|
|
title="Luna Lovegood",
|
|
description = "Miss Lovegood, wearing her normal school uniform.")
|
|
|
|
#Item cards
|
|
|
|
default card_item_badge = Card( imagepath="images/cardgame/t1/other/badge_v1.webp",
|
|
topvalue = 3,
|
|
bottomvalue = 1,
|
|
rightvalue = 1,
|
|
leftvalue = 3,
|
|
title="SPEW Badge",
|
|
description="The S.P.E.W Badge, I think it might stand for Sluts for the Pleasuring of Excited Wizards...")
|
|
|
|
default card_item_barbell = Card( imagepath="images/cardgame/t1/other/barbell_v1.webp",
|
|
topvalue = 4,
|
|
bottomvalue = 2,
|
|
rightvalue = 1,
|
|
leftvalue = 1,
|
|
title="Barbell piercing",
|
|
description="A nipple piercing a female student might wear... after some convincing.")
|
|
|
|
default card_item_beads = Card( imagepath="images/cardgame/t1/other/beads_v1.webp",
|
|
topvalue = 2,
|
|
bottomvalue = 4,
|
|
rightvalue = 1,
|
|
leftvalue = 1,
|
|
title="Anal beads",
|
|
description="Some beads, I'm sure you already know where these go... Hogwarts express to brown town.")
|
|
|
|
default card_item_bird = Card( imagepath="images/cardgame/t1/other/bird_v1.webp",
|
|
topvalue = 4,
|
|
bottomvalue = 3,
|
|
rightvalue = 1,
|
|
leftvalue = 1,
|
|
title="Phoenix",
|
|
description="A bird that was here when I arrived. It doesn't say or do much... I like it.")
|
|
|
|
default card_item_bookchairs = Card( imagepath="images/cardgame/t1/other/bookchairs_v1.webp",
|
|
topvalue = 1,
|
|
bottomvalue = 2,
|
|
rightvalue = 2,
|
|
leftvalue = 2,
|
|
title="Book of Chairs",
|
|
description="A book with seemingly sharp pages. I've not dared to open it.")
|
|
|
|
default card_item_bookgala = Card( imagepath="images/cardgame/t1/other/bookgala_v1.webp",
|
|
topvalue = 1,
|
|
bottomvalue = 2,
|
|
rightvalue = 3,
|
|
leftvalue = 1,
|
|
title="Book of Galadrier (Light ED)",
|
|
description="One of the books, waste of printing paper.")
|
|
|
|
default card_item_bookgala2 = Card( imagepath="images/cardgame/t1/other/bookgala2_v1.webp",
|
|
topvalue = 1,
|
|
bottomvalue = 4,
|
|
rightvalue = 2,
|
|
leftvalue = 1,
|
|
title="Book of Galadriel (Hardcore ED)",
|
|
description="One of the books, a culture shock and a half.")
|
|
|
|
default card_item_bookwaifu = Card( imagepath="images/cardgame/t1/other/bookwaifu_v1.webp",
|
|
topvalue = 3,
|
|
bottomvalue = 2,
|
|
rightvalue = 1,
|
|
leftvalue = 2,
|
|
title="Waifu Book",
|
|
description="One of the books, a culture shock and a half.")
|
|
|
|
default card_item_broom = Card( imagepath="images/cardgame/t1/other/broom_v1.webp",
|
|
topvalue = 1,
|
|
bottomvalue = 4,
|
|
rightvalue = 2,
|
|
leftvalue = 2,
|
|
title="Modified Nimbus 2000",
|
|
description="Highly modified broom. I'd call it, \"The Thundersnatch.\"")
|
|
|
|
default card_item_bdsm = Card( imagepath="images/cardgame/t1/other/bdsm_v1.webp",
|
|
topvalue = 3,
|
|
bottomvalue = 2,
|
|
rightvalue = 3,
|
|
leftvalue = 1,
|
|
title="BDSM Kit",
|
|
description="Fetish gear, I like it for the peace and quiet.")
|
|
|
|
default card_item_condoms = Card( imagepath="images/cardgame/t1/other/condoms_v1.webp",
|
|
topvalue = 3,
|
|
bottomvalue = 2,
|
|
rightvalue = 1,
|
|
leftvalue = 3,
|
|
title="Pack of condoms",
|
|
description="Some condoms, I don't need them.")
|
|
|
|
default card_item_desk = Card( imagepath="images/cardgame/t1/other/desk_v1.webp",
|
|
topvalue = 3,
|
|
bottomvalue = 3,
|
|
rightvalue = 3,
|
|
leftvalue = 1,
|
|
title="Office desk",
|
|
description="My desk, with an underside way more glazed than before I arrived.")
|
|
|
|
default card_item_dildo = Card( imagepath="images/cardgame/t1/other/dildo_v1.webp",
|
|
topvalue = 3,
|
|
bottomvalue = 3,
|
|
rightvalue = 1,
|
|
leftvalue = 2,
|
|
title="Magical Dildo",
|
|
description="A Dildo, the perfect gift for any female student.")
|
|
|
|
default card_item_doll = Card( imagepath="images/cardgame/t1/other/doll_v1.webp",
|
|
topvalue = 1,
|
|
bottomvalue = 3,
|
|
rightvalue = 2,
|
|
leftvalue = 2,
|
|
title="Sex Doll",
|
|
description="A sex doll. Wished I had one of these in my lamp...")
|
|
|
|
default card_item_elf = Card( imagepath="images/cardgame/t1/other/elf_v1.webp",
|
|
topvalue = 3,
|
|
bottomvalue = 3,
|
|
rightvalue = 2,
|
|
leftvalue = 2,
|
|
title="House-Elf",
|
|
description="Disgusting creature... Apparently they clean underneath my desk though.")
|
|
|
|
default card_item_eromag = Card( imagepath="images/cardgame/t1/other/eromag_v1.webp",
|
|
topvalue = 4,
|
|
bottomvalue = 2,
|
|
rightvalue = 1,
|
|
leftvalue = 1,
|
|
title="Erotic Magazine",
|
|
description="Perfect way to teach any girl about the more important things in life.")
|
|
|
|
default card_item_girlmag = Card( imagepath="images/cardgame/t1/other/girlmag_v1.webp",
|
|
topvalue = 2,
|
|
bottomvalue = 3,
|
|
rightvalue = 1,
|
|
leftvalue = 1,
|
|
title="Girly Magazine",
|
|
description="A good gift to make you seem hip. Whatever that means.")
|
|
|
|
default card_item_hat = Card( imagepath="images/cardgame/t1/other/hat_v1.webp",
|
|
topvalue = 6,
|
|
bottomvalue = 1,
|
|
rightvalue = 1,
|
|
leftvalue = 1,
|
|
title="Sorting Hat",
|
|
description="One of the weird items in my office. I swear it talked to me once.")
|
|
|
|
default card_item_lingerie = Card( imagepath="images/cardgame/t1/other/lingerie_v1.webp",
|
|
topvalue = 2,
|
|
bottomvalue = 4,
|
|
rightvalue = 2,
|
|
leftvalue = 2,
|
|
title="Lingerie",
|
|
description="If a girl needs to wear any undergarments at all these would be my preferred choice.")
|
|
|
|
default card_item_lipstick = Card( imagepath="images/cardgame/t1/other/lipstick_v1.webp",
|
|
topvalue = 1,
|
|
bottomvalue = 2,
|
|
rightvalue = 1,
|
|
leftvalue = 2,
|
|
title="Lipstick (Red)",
|
|
description="For when a girl wants to feel less naked. Comes in a variety of unnatural colours.")
|
|
|
|
default card_item_lube = Card( imagepath="images/cardgame/t1/other/lube_v1.webp",
|
|
topvalue = 1,
|
|
bottomvalue = 5,
|
|
rightvalue = 1,
|
|
leftvalue = 1,
|
|
title="Jar of lubricant",
|
|
description="A Jar full of lube, I should get a subscription for these.")
|
|
|
|
default card_item_owl = Card( imagepath="images/cardgame/t1/other/owl_v1.webp",
|
|
topvalue = 3,
|
|
bottomvalue = 3,
|
|
rightvalue = 1,
|
|
leftvalue = 1,
|
|
title="Stuffed Owl",
|
|
description="An Owl plush, very popular among the girls.")
|
|
|
|
default card_item_plugs = Card( imagepath="images/cardgame/t1/other/plugs_v1.webp",
|
|
topvalue = 2,
|
|
bottomvalue = 2,
|
|
rightvalue = 3,
|
|
leftvalue = 3,
|
|
title="Set of anal plugs",
|
|
description="A selection of plugs... Bit weird, even for me. ")
|
|
|
|
default card_item_pornmag = Card( imagepath="images/cardgame/t1/other/pornmag_v1.webp",
|
|
topvalue = 4,
|
|
bottomvalue = 3,
|
|
rightvalue = 1,
|
|
leftvalue = 1,
|
|
title="Porno Magazine",
|
|
description="Some porn mags. Perfect gift for the more sophisticated lady. ")
|
|
|
|
default card_item_potions = Card( imagepath="images/cardgame/t1/other/potions_v1.webp",
|
|
topvalue = 3,
|
|
bottomvalue = 2,
|
|
rightvalue = 3,
|
|
leftvalue = 2,
|
|
title="Batch of Potions",
|
|
description="A set of potions. None of my favourites...")
|
|
|
|
default card_item_scroll = Card( imagepath="images/cardgame/t1/other/scroll_v1.webp",
|
|
topvalue = 1,
|
|
bottomvalue = 4,
|
|
rightvalue = 2,
|
|
leftvalue = 3,
|
|
title="Forbidden Scroll",
|
|
description="One of the scrolls from the Weasley's shop.")
|
|
|
|
default card_item_stockings = Card( imagepath="images/cardgame/t1/other/stockings_v1.webp",
|
|
topvalue = 1,
|
|
bottomvalue = 2,
|
|
rightvalue = 3,
|
|
leftvalue = 3,
|
|
title="Pair of stockings",
|
|
description="Pair of stockings, looks great with a short skirt.")
|
|
|
|
default card_item_strapon = Card( imagepath="images/cardgame/t1/other/strapon_v1.webp",
|
|
topvalue = 2,
|
|
bottomvalue = 3,
|
|
rightvalue = 1,
|
|
leftvalue = 4,
|
|
title="Thestral Strap-on",
|
|
description="Don't have any use for these but they're great practice for the ladies.")
|
|
|
|
default card_item_sweets = Card( imagepath="images/cardgame/t1/other/sweets_v1.webp",
|
|
topvalue = 1,
|
|
bottomvalue = 1,
|
|
rightvalue = 2,
|
|
leftvalue = 3,
|
|
title="Pack of Sweets",
|
|
description="Some of the most popular sweets. Including Butter beer, not alcoholic enough in my opinion.")
|
|
|
|
default card_item_wine = Card( imagepath="images/cardgame/t1/other/wine_v1.webp",
|
|
topvalue = 4,
|
|
bottomvalue = 2,
|
|
rightvalue = 1,
|
|
leftvalue = 2,
|
|
title="Bottle of wine",
|
|
description="That wine I keep finding in this cupboard. Not sure if the wine is magically infused or the cupboard.")
|
|
|
|
default enemy_deck = []
|
|
|
|
default card_rand_realm = renpy.random.choice([card_iris, card_jasmine, card_azalea])
|
|
default card_rand_girl = renpy.random.choice([card_her_schoolgirl, card_sus_schoolgirl, card_cho_schoolgirl, card_lun_schoolgirl])
|
|
default card_rand_item1 = renpy.random.choice([card_item_desk, card_item_bird])
|
|
default card_rand_item2 = renpy.random.choice([card_item_beads, card_item_dildo, card_item_doll, card_item_condoms, card_item_plugs])
|
|
default card_rand_item3 = renpy.random.choice([card_item_barbell, card_item_lingerie, card_item_stockings, card_item_badge, card_item_bdsm, card_item_lipstick])
|
|
default card_rand_item4 = renpy.random.choice([card_item_bookchairs, card_item_bookgala, card_item_bookgala2, card_item_bookwaifu, card_item_hat])
|
|
default card_rand_item5 = renpy.random.choice([card_item_eromag, card_item_pornmag, card_item_girlmag, card_item_scroll, card_item_sweets])
|
|
default unlocked_cards = [card_genie, card_rand_realm, card_rand_girl, card_rand_item1, card_rand_item2, card_rand_item3, card_rand_item4, card_rand_item5]
|
|
|
|
default playerdeck = [card_genie, card_rand_realm, card_rand_girl, card_rand_item1, card_rand_item2]
|
|
|
|
default card_rule_reverse = CardGameRule(name="Reverse", description="Instead of a higher number, you need to have the lowest number to take over a card.", icon="images/cardgame/rule_reverse.webp")
|
|
default card_rule_hidden = CardGameRule(name="Hidden", description="The hidden rule means that a certain amount of cards in your enemies deck will be hidden.", icon="images/cardgame/rule_hidden.webp")
|
|
default card_rule_death = CardGameRule(name="Death", description="If your game ends in a draw you pick up the cards that are shown in your colour and play again.", icon="images/cardgame/rule_death.webp")
|
|
default card_rule_double = CardGameRule(name="Double", description="If the card you put down has the same number facing at least 2 other cards (Rather than higher/lower) you'll take over those cards.", icon="images/cardgame/rule_double.webp")
|
|
default card_rule_random = CardGameRule(name="Random", description="Your deck is selected randomly from the available cards.", icon="images/cardgame/rule_random.webp")
|
|
|
|
default cards_realm = [card_genie, card_iris, card_jasmine, card_azalea, card_dahlia, card_maslab, card_aladdin, card_lilly, card_rasul, card_jafar]
|
|
default cards_hogwarts = [card_her_schoolgirl, card_her_librarian, card_lun_schoolgirl, card_sus_schoolgirl, card_cho_schoolgirl, card_fred, card_george, card_snape, card_dumbledore]
|
|
default cards_other = [card_santa]
|
|
default cards_items = [card_item_badge, card_item_barbell, card_item_beads, card_item_bird, card_item_bookchairs, card_item_bookgala, card_item_bookgala2, card_item_bookwaifu, card_item_broom, card_item_bdsm, card_item_condoms, card_item_desk, card_item_dildo, card_item_doll, card_item_elf, card_item_eromag, card_item_girlmag, card_item_hat, card_item_lingerie, card_item_lipstick, card_item_lube, card_item_owl, card_item_plugs, card_item_pornmag, card_item_potions, card_item_scroll, card_item_stockings, card_item_strapon, card_item_sweets, card_item_wine]
|
|
default cards_all = list(cards_realm) + list(cards_hogwarts) + list(cards_other) + list(cards_items)
|
|
|
|
default cards_dynamic = [card_iris, card_jasmine, card_azalea, card_her_schoolgirl, card_her_librarian, card_lun_schoolgirl, card_sus_schoolgirl, card_cho_schoolgirl]
|
|
|
|
default snape_first_deck = [card_snape.clone(), card_item_potions.clone(), card_item_elf.clone(), card_item_wine.clone(), card_item_lipstick.clone()]
|
|
default snape_second_deck = [card_snape.clone(), card_item_potions.clone(), card_item_elf.clone(), card_item_elf.clone(), card_item_eromag.clone()]
|
|
default snape_third_deck = [card_snape.clone(), card_item_potions.clone(), card_item_elf.clone(), card_item_elf.clone(), card_item_elf.clone()]
|
|
|
|
default twins_first_deck = [card_fred.clone(), card_item_sweets.clone(), card_item_beads.clone(), card_item_sweets.clone(), card_item_condoms.clone()]
|
|
default twins_second_deck = [card_george.clone(), card_fred.clone(), card_item_doll.clone(), card_item_sweets.clone(), card_item_broom.clone()]
|
|
|
|
default her_first_deck = [card_her_schoolgirl.clone(), card_item_girlmag.clone(), card_item_bookgala.clone(), card_item_bookgala2.clone(), card_item_bookchairs.clone()]
|
|
default her_second_deck = [card_her_schoolgirl.clone(), card_item_eromag.clone(), card_item_bookgala.clone(), card_item_bookgala2.clone(), card_item_bookchairs.clone()]
|
|
default her_third_deck = [card_her_librarian.clone(), card_item_pornmag.clone(), card_item_bookgala.clone(), card_item_bookgala2.clone(), card_item_bookchairs.clone()]
|
|
|
|
define card_non_spec_char = ["I see you've been practising... So have I!",
|
|
"You've activated my trap card... Wait... it's in my other deck!",
|
|
"You think you're so good, but this school has never seen a player of the likes of me! In this particular office...",
|
|
"Aha! You've walked right into my trap! Take this!",
|
|
"You'll never beat me! The only place you'll find that reward... is in your dreams!",
|
|
"That's impossible... That card is legendary... Wait, it doesn't have a shimmering effect, never mind.",
|
|
"I was so sure my cards were good... Did they release yet another set?",
|
|
"Wait... You've got that card?! I've been such a fool! This is a witchmasters deck!",
|
|
"We're playing reverse rules, right? Lowest amount of cards win?",
|
|
"If only sleight of hand was taught at Hogwarts...",
|
|
"Wait... This can't be right... I must have put my good cards in my other robes!",
|
|
"You should be happy that they banned that card from the Pixie Puffs cereal box promotion... That one was overpowered.",
|
|
"This one's a board sweeper!",
|
|
"I'll just burn this card... I've got better cards coming.",
|
|
"This is a control deck... I'll win in the end, don't you worry.",
|
|
"Perhaps I should have made less of a filler deck... I'll still get you in the end, though.",
|
|
"Your loss is inevitable. It's all in the heart of the cards.",
|
|
"Have you been Netdecking? Did those damn spiders in the forest tell you which cards to play?",
|
|
"I've been metagaming the crap out of you... I can predict every card you'll play... except for that last one.",
|
|
"Oh, it's my turn? I was just thinking about how I'm going to celebrate after your inevitable loss.",
|
|
"I've been slowrolling you this whole time. My last card is a mega ultimate legendary.",
|
|
"What kind of deck is this... Do you even care about synergy?",
|
|
"I see what kind of player you are now... Perhaps a more offensive approach is in order.",
|
|
"I was born to play card games... You merely adopted your enjoyment of them.",
|
|
"*Ha-Ha-Hah*! You don't even know that I have a card with powers that has been locked away for centuries... unfortunately I lost the key...",
|
|
"Prepare for a total wipe... Of your tears once I beat you, that is.",
|
|
"You want to know what imagery is displayed on my cards? What do I like the most? Winning! Which is why this card is going to guarantee my victory.",
|
|
"Life is like a game of Wizard Cards... If you're not winning... you're losing.",
|
|
"Quitters never win, winners never quit, but those who never win and never quit are idiots... I'm not sure which I am.",
|
|
"Go fish...",
|
|
"Do you know of any spells that'd make you better at Wizard Cards? Yeah, didn't think so...",
|
|
"You can smell the roses as much as you want, while I bask in the aroma of victory.",
|
|
"Are you seeing stars yet? Maybe some circling birds? You're getting beaten pretty badly, after all.",
|
|
"Well, your performance in this round is certainly a divine comedy.",
|
|
"The forecast today is calling for my victory, so I'm not worried.",
|
|
"Are you out of juice already?",
|
|
"A fortune cookie told me I would win today... So, I'm not really worried about losing.",
|
|
"Looks like you fell right into your own trap... now look at this!! KAPOW!!",
|
|
"I don't need luck potion to beat you. That's how confident I am in my deck.",
|
|
"I know my deck like the back of my hand... Wait, when did that mole get there?",
|
|
"You fool! Prepare yourself for my ultimate finishing move... But before that... UNO!",
|
|
"I'm so confident in my card collection, I just shuffled and created this deck at random.",
|
|
"Great cards doesn't ensure a win... It's making the right moves that does.",
|
|
"The balance of this game has been broken for centuries... and I possess the cards that exploit that flaw.",
|
|
"The ministry of magic considered banning this game... They mentioned something about loot boxes... Or was it surprise mechanics?",
|
|
"If I told you that I picked my cards while blindfolded, would you believe me? Yes, that's how good they are.",
|
|
"I tried using transfiguration on one of my cards, but it burnt up instead... Hopefully, I'm not the first who has tried that.",
|
|
"Wait! Isn't that card banned? No... the stats aren't the same... *Phew*...",
|
|
"Why does that particular card of yours have a sticky residue on it?",
|
|
"A shiny! Wait... Why has it stuck to the board?",
|
|
"That's nowhere near the best move you could've done. Check this out!",
|
|
"Even a troll would play better than you at this point... No offence.",
|
|
"In a world of half-bloods and pure-bloods, I proudly declare myself a card-playing genius.",
|
|
"That must be a new card... Why haven't I seen that one before?",
|
|
"Wait, my numbers must have changed! Did you jinx my cards?",
|
|
"Hit me... Not literally, of course... I mean't, give me another card.",
|
|
"Ah... That one.... Too bad I have the perfect counter.",
|
|
"So, when do I get to draw a card again?",
|
|
"Someone replaced one of my cards with a joker... I bet it was peeves.",
|
|
"I was told that face cards are the best... But I now realise they were talking about poker.",
|
|
"By Merlin's beard, where did you get that card?",
|
|
"Next time, I'll bring out my aggro deck..."]
|
|
|
|
define snape_speech_card = ["You may have lived for hundreds of years, but my superior intellect will outweigh your otherworldly powers.",
|
|
"When this is over, I think I'll celebrate my victory with one of your more expensive bottles of wine.",
|
|
"You should stick to charming women... Wizard cards is my game.",
|
|
"You said you were from a different world, another reality? Maybe you'd beat me at cards in that reality... But not this one!",
|
|
"We don't stop playing because we grow old, we grow old because we stop playing.",
|
|
"Where did you even find your rubbish cards? In a promotional pamphlet?",
|
|
"Why are my cards so much greasier than yours?"] + card_non_spec_char
|
|
|
|
define twins_speech_card = ["Our cards are fresher than fresh! They were printed last night, so they must be good!",
|
|
"Giving you a percentage of our profit was an easy bet... Since we know you'll never win.",
|
|
"We've weighed our packs before opening them, so our cards must be rare.",
|
|
"Activate twin psychic link!",
|
|
"Some people won't duel a duo because they can't maintain eye contact during play... or eye to card contact.",
|
|
"We're a two-player team, so we get double the cards to choose from, right?",
|
|
"We're not going easy on you just so you won't shut our shop down.",
|
|
"What's on our cards? Sweet, sweet profits, of course.",
|
|
"Hey, that percentage we promised you... Do you mind if we lowered it slightly? I mean, a deal is a deal... but still.",
|
|
"If you beat us, we'd appreciate it if you could give us an endorsement with our supplier.",
|
|
"In hindsight, perhaps we should've cracked open a few boosters, but where's the thrill without a bit of risk?"] + card_non_spec_char
|
|
|
|
define her_speech_card = ["Would you consider doubling the points you award me if I win?",
|
|
"I'm great at wizards chess, so beating you at this shouldn't be a problem...",
|
|
"I should have asked for house points if I beat you... Oh, well... Too late now.",
|
|
"Have you been peeking at my deck? That's cheating! You better whip yours out..."] + card_non_spec_char
|
|
|
|
|
|
init python:
|
|
|
|
def card_exist(unlockedlist, cardobj):
|
|
for elm in unlockedlist:
|
|
if cardobj.title == elm.title:
|
|
return True
|
|
return False
|
|
replace_index = 0
|
|
new_deck = []
|
|
def create_random_deck(min, max, card_pool):
|
|
new_deck = []
|
|
smalles_func = lambda elm1, elm2 : elm1.get_total_value() > elm2.get_total_value()
|
|
gretest_func = lambda elm1, elm2 : elm1.get_total_value() < elm2.get_total_value()
|
|
temp_pool = []
|
|
temp_pool.extend(card_pool)
|
|
for card in range(0,5):
|
|
random_choice = renpy.random.choice(temp_pool)
|
|
|
|
new_deck.append(random_choice)
|
|
del temp_pool[temp_pool.index(random_choice)]
|
|
|
|
while min > get_deck_score(new_deck) or max < get_deck_score(new_deck):
|
|
replace_index = 0
|
|
if get_deck_score(new_deck) < min:
|
|
replace_index = find_index_func(temp_pool, smalles_func)
|
|
else:
|
|
replace_index = find_index_func(temp_pool, gretest_func)
|
|
|
|
|
|
replace_index = clamp(replace_index,0,4)
|
|
random_choice = renpy.random.choice(temp_pool)
|
|
|
|
temp_pool.append(new_deck[replace_index])
|
|
new_deck[replace_index] = (random_choice)
|
|
del temp_pool[temp_pool.index(random_choice)]
|
|
|
|
return new_deck
|
|
def find_index_func(seq, func):
|
|
func_index = 0
|
|
for i in range(0, len(seq)):
|
|
if func(seq[func_index], seq[i]):
|
|
func_index = i
|
|
return func_index
|
|
|
|
def get_deck_score(deck):
|
|
score = 0
|
|
for card in deck:
|
|
score += card.get_total_value()
|
|
return score
|
|
|
|
def get_image_size(image):
|
|
myDisplayable = im.Image(image)
|
|
myRender = renpy.render(myDisplayable, 800, 600, 0, 0)
|
|
sizes = myRender.get_size()
|
|
x = sizes[0]
|
|
y = sizes[1]
|
|
|
|
return (x,y)
|
|
|
|
def get_hex_string(red, green, blue, alpha=1.0):
|
|
red = str(hex( int( math.ceil( red*255))))[2:]
|
|
if not len(red) == 2:
|
|
red = "0"+red
|
|
green = str(hex(int(math.ceil( green * 255))))[2:]
|
|
if not len(green) == 2:
|
|
green = "0"+green
|
|
blue = str(hex(int(math.ceil( blue * 255))))[2:]
|
|
if not len(blue) == 2:
|
|
blue = "0"+blue
|
|
alpha = str(hex(int(math.ceil( alpha * 255))))[2:]
|
|
if not len(alpha) == 2:
|
|
alpha = "0"+alpha
|
|
|
|
return "#" + red + green + blue + alpha
|
|
|
|
def get_hex_string_tuple(color):
|
|
return get_hex_string(color[0], color[1], color[2], color[3])
|
|
|
|
def get_rgb_tuple(hex):
|
|
rgb = get_rgb_list(hex)
|
|
return tuple(rgb)
|
|
|
|
def get_rgb_list(hex):
|
|
hex = hex.lstrip('#')
|
|
hex_len = len(hex)
|
|
rgb = list(int(hex[i:i + hex_len // 3], 16) for i in range(0, hex_len, hex_len // 3))
|
|
if len(rgb) < 4:
|
|
rgb.append(255) # Add alpha
|
|
return rgb
|
|
|
|
def get_width(image):
|
|
return get_image_size(image)[0]
|
|
|
|
def get_height(image):
|
|
return get_image_size(image)[1]
|
|
|
|
def reset_table_cards():
|
|
global table_cards
|
|
|
|
for y in range(0,3):
|
|
for x in range(0,3):
|
|
table_cards[x][y] = None
|
|
return
|
|
|
|
def check_winner(player_deck):
|
|
global table_cards
|
|
playerpoints = len(player_deck)
|
|
|
|
for y in range(0,3):
|
|
for x in range(0,3):
|
|
if table_cards[x][y] and table_cards[x][y].playercard:
|
|
playerpoints += 1
|
|
if playerpoints > 5:
|
|
return "win"
|
|
elif playerpoints == 5:
|
|
return "draw"
|
|
else:
|
|
return "loss"
|
|
|
|
def update_table(x, y, reverse, dobelt_number):
|
|
global table_cards
|
|
if reverse:
|
|
take_over = lambda a, b : a < b
|
|
else:
|
|
take_over = lambda a, b : a > b
|
|
|
|
|
|
if not y == 0 and table_cards[x][y-1] is not None and take_over(table_cards[x][y].topvalue, table_cards[x][y-1].bottomvalue):
|
|
table_cards[x][y-1].playercard = table_cards[x][y].playercard
|
|
|
|
if not y == 2 and table_cards[x][y+1] is not None and take_over(table_cards[x][y].bottomvalue, table_cards[x][y+1].topvalue):
|
|
table_cards[x][y+1].playercard = table_cards[x][y].playercard
|
|
|
|
if not x == 0 and table_cards[x-1][y] is not None and take_over(table_cards[x][y].leftvalue, table_cards[x-1][y].rightvalue):
|
|
table_cards[x-1][y].playercard = table_cards[x][y].playercard
|
|
|
|
if not x == 2 and table_cards[x+1][y] is not None and take_over(table_cards[x][y].rightvalue, table_cards[x+1][y].leftvalue):
|
|
table_cards[x+1][y].playercard = table_cards[x][y].playercard
|
|
|
|
if dobelt_number:
|
|
dobelt_found = []
|
|
if not y == 0 and table_cards[x][y-1] is not None:
|
|
if table_cards[x][y].topvalue == table_cards[x][y-1].bottomvalue:
|
|
dobelt_found.append([x,y-1])
|
|
|
|
if not y == 2 and table_cards[x][y+1] is not None:
|
|
if table_cards[x][y].bottomvalue == table_cards[x][y+1].topvalue:
|
|
dobelt_found.append([x,y+1])
|
|
|
|
if not x == 0 and table_cards[x-1][y] is not None:
|
|
if table_cards[x][y].leftvalue == table_cards[x-1][y].rightvalue:
|
|
dobelt_found.append([x-1,y])
|
|
|
|
|
|
if not x == 2 and table_cards[x+1][y] is not None:
|
|
if table_cards[x][y].rightvalue == table_cards[x+1][y].leftvalue:
|
|
dobelt_found.append([x+1,y])
|
|
|
|
if len(dobelt_found) > 1:
|
|
for card in dobelt_found:
|
|
table_cards[card[0]][card[1]].playercard = table_cards[x][y].playercard
|
|
|
|
def add_card_to_deck(title):
|
|
for card in unlocked_cards:
|
|
if title == card.title:
|
|
card.copies += 1
|
|
|
|
class CardGameRule(object):
|
|
def __init__(self, **kwargs):
|
|
self.name = None
|
|
self.description = None
|
|
self.icon = None
|
|
self.__dict__.update(**kwargs)
|
|
|
|
class Card(object):
|
|
sizes = (320, 480)
|
|
|
|
def __init__(self, **kwargs):
|
|
self.playercard = True
|
|
self.textcolor = "{color=#ffffff}"
|
|
self.copies = 0
|
|
self.description = "Description"
|
|
self.title = "Title"
|
|
self.imagepath = "images/cardgame/card.webp"
|
|
self.backside = "images/cardgame/t1/backside/gryffindor.webp"
|
|
|
|
self.topvalue = 0
|
|
self.bottomvalue = 1
|
|
self.rightvalue = 2
|
|
self.leftvalue = 3
|
|
self.__dict__.update(**kwargs)
|
|
|
|
def get_image(self, backside=False):
|
|
return self.backside if backside else self.imagepath
|
|
|
|
def get_border(self):
|
|
if self.playercard:
|
|
return Transform("images/cardgame/border.webp", matrixcolor=TintMatrix(playercolor_rgb))
|
|
return Transform("images/cardgame/border.webp", matrixcolor=TintMatrix(enemycolor_rgb))
|
|
|
|
def get_title(self):
|
|
return self.textcolor+self.title+"{/color}"
|
|
def get_amount(self):
|
|
return self.textcolor+"amount: " + str(self.copies+1)+"{/color}"
|
|
def get_totalvalue(self):
|
|
return self.textcolor+str(self.topvalue+self.bottomvalue+self.leftvalue+self.rightvalue)+"{/color}"
|
|
def get_total_value(self):
|
|
return self.topvalue+self.bottomvalue+self.leftvalue+self.rightvalue
|
|
|
|
def get_description(self):
|
|
return self.textcolor+self.description+"{/color}"
|
|
|
|
def clone(self):
|
|
return Card(title = self.title,imagepath=self.imagepath, topvalue=self.topvalue, bottomvalue=self.bottomvalue, rightvalue=self.rightvalue, leftvalue=self.leftvalue, playercard = self.playercard)
|
|
|
|
def get_ai_score(self, table_of_cards, reverse, dobelt_number):
|
|
high_score = -1000
|
|
position = (0,0)
|
|
wallscore = 3
|
|
getcardscore = 12
|
|
if reverse:
|
|
score_func = lambda a : 10 - a
|
|
take_over = lambda a, b : a < b
|
|
else:
|
|
score_func = lambda a : a
|
|
take_over = lambda a, b : a > b
|
|
|
|
for y in range(0,3):
|
|
for x in range(0,3):
|
|
score = 0
|
|
if table_cards[x][y] is None:
|
|
if not y == 0 and table_cards[x][y-1] is not None and table_cards[x][y-1].playercard:
|
|
if take_over(self.topvalue, table_cards[x][y-1].bottomvalue):
|
|
score += getcardscore
|
|
else:
|
|
score += score_func(self.topvalue)
|
|
else:
|
|
score += wallscore
|
|
|
|
if not y == 2 and table_cards[x][y+1] is not None and table_cards[x][y+1].playercard:
|
|
if take_over(self.bottomvalue, table_cards[x][y+1].topvalue):
|
|
score += getcardscore
|
|
else:
|
|
score += score_func(self.bottomvalue)
|
|
else:
|
|
score += wallscore
|
|
|
|
if not x == 0 and table_cards[x-1][y] is not None and table_cards[x-1][y].playercard:
|
|
if take_over(self.leftvalue, table_cards[x-1][y].rightvalue):
|
|
score += getcardscore
|
|
else:
|
|
score += score_func(self.leftvalue)
|
|
else:
|
|
score += wallscore
|
|
|
|
if not x == 2 and table_cards[x+1][y] is not None and table_cards[x+1][y].playercard:
|
|
if take_over(self.rightvalue, table_cards[x+1][y].leftvalue):
|
|
score += getcardscore
|
|
else:
|
|
score += score_func(self.rightvalue)
|
|
else:
|
|
score += wallscore
|
|
|
|
if dobelt_number:
|
|
dobelt_found = []
|
|
if not y == 0 and table_cards[x][y-1] is not None:
|
|
if self.topvalue == table_cards[x][y-1].bottomvalue:
|
|
dobelt_found.append(table_cards[x][y-1])
|
|
|
|
if not y == 2 and table_cards[x][y+1] is not None:
|
|
if self.bottomvalue == table_cards[x][y+1].topvalue:
|
|
dobelt_found.append(table_cards[x][y+1])
|
|
|
|
if not x == 0 and table_cards[x-1][y] is not None:
|
|
if self.leftvalue == table_cards[x-1][y].rightvalue:
|
|
dobelt_found.append(table_cards[x-1][y])
|
|
|
|
|
|
if not x == 2 and table_cards[x+1][y] is not None:
|
|
if self.rightvalue == table_cards[x+1][y].leftvalue:
|
|
dobelt_found.append(table_cards[x+1][y])
|
|
|
|
if len(dobelt_found) > 1:
|
|
for card in dobelt_found:
|
|
if card.playercard:
|
|
high_score += getcardscore
|
|
|
|
if score > high_score:
|
|
high_score = score
|
|
position = (x, y)
|
|
|
|
|
|
return [high_score, position]
|