Decks are saveable!

This commit is contained in:
SmArtKar
2021-02-17 18:50:23 +03:00
parent 015bd0b145
commit 756be084bc
5 changed files with 84 additions and 34 deletions

View File

@@ -493,24 +493,41 @@ SUBSYSTEM_DEF(job)
if(ishuman(H) && H.client && N)
if(H.client && H.client.prefs && length(H.client.prefs.tcg_cards))
var/obj/item/tcgcard_binder/binder = new(get_turf(H))
if(!H.equip_to_slot_if_possible(binder, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE))
qdel(binder)
else
for(var/card_type in H.client.prefs.tcg_cards)
var/obj/item/tcg_card/card = new(get_turf(H), card_type, H.client.prefs.tcg_cards[card_type])
card.forceMove(binder)
binder.cards.Add(card)
binder.check_for_exodia()
H.equip_to_slot_if_possible(binder, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE)
for(var/card_type in H.client.prefs.tcg_cards)
if(card_type == "decks")
for(var/deck in H.client.prefs.tcg_cards["decks"])
var/obj/item/tcgcard_deck/new_deck = new(get_turf(H))
new_deck.forceMove(binder)
binder.decks.Add(new_deck)
for(var/cardy in deck)
var/obj/item/tcg_card/card = new(get_turf(H), cardy, deck[cardy])
card.forceMove(new_deck)
new_deck.contents.Add(card)
continue
var/obj/item/tcg_card/card = new(get_turf(H), card_type, H.client.prefs.tcg_cards[card_type])
card.forceMove(binder)
binder.cards.Add(card)
binder.check_for_exodia()
else
if(H && N.client.prefs && length(N.client.prefs.tcg_cards))
var/obj/item/tcgcard_binder/binder = new(get_turf(H))
if(!H.equip_to_slot_if_possible(binder, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE))
qdel(binder)
else
for(var/card_type in N.client.prefs.tcg_cards)
var/obj/item/tcg_card/card = new(get_turf(H), card_type, H.client.prefs.tcg_cards[card_type])
card.forceMove(binder)
binder.cards.Add(card)
H.equip_to_slot_if_possible(binder, SLOT_IN_BACKPACK, disable_warning = TRUE, bypass_equip_delay_self = TRUE)
for(var/card_type in N.client.prefs.tcg_cards)
if(card_type == "decks")
for(var/deck in N.client.prefs.tcg_cards["decks"])
var/obj/item/tcgcard_deck/new_deck = new(get_turf(H))
new_deck.forceMove(binder)
binder.decks.Add(new_deck)
for(var/cardy in deck)
var/obj/item/tcg_card/card = new(get_turf(H), cardy, deck[cardy])
card.forceMove(new_deck)
new_deck.contents.Add(card)
continue
var/obj/item/tcg_card/card = new(get_turf(H), card_type, H.client.prefs.tcg_cards[card_type])
card.forceMove(binder)
binder.cards.Add(card)
binder.check_for_exodia()
return H
/*

View File

@@ -361,14 +361,4 @@ SUBSYSTEM_DEF(persistence)
if(!original_human || original_human.stat == DEAD || !(original_human == ending_human))
continue
var/obj/item/tcgcard_binder/binder = locate() in ending_human
if(!binder || !length(binder.cards))
continue
var/list/card_types = list()
for(var/obj/item/tcg_card/card in binder.cards)
//if(!card.illegal) //Uncomment if you want to block syndie cards from saving
card_types[card.datum_type] = card.illegal
ending_human.client.prefs.tcg_cards = card_types
ending_human.client.prefs.save_character(TRUE)
ending_human.SaveTCGCards()

View File

@@ -296,6 +296,12 @@
AM.forceMove(src)
R.module.remove_module(I, TRUE)
else
if(ishuman(mob_occupant))
var/mob/living/carbon/human/H = mob_occupant
if(H.mind && H.client && H.client.prefs && H == H.mind.original_character)
H.SaveTCGCards()
var/list/gear = list()
if(iscarbon(mob_occupant)) // sorry simp-le-mobs deserve no mercy
var/mob/living/carbon/C = mob_occupant

View File

@@ -343,7 +343,6 @@
/datum/supply_pack/costumes_toys/randomised/tcg/generate()
. = ..()
var/cardpacktype
var/list/cardtypes = subtypesof(/obj/item/cardpack)
for(var/cardtype in cardtypes)
var/obj/item/cardpack/pack = new cardtype(.)
@@ -351,5 +350,5 @@
cardtypes.Remove(cardtype)
qdel(pack)
for(var/i in 1 to 10)
cardpacktype = pick(cardtypes)
var/cardpacktype = pick(cardtypes)
new cardpacktype(.)

View File

@@ -278,6 +278,8 @@
card_count = 9
guaranteed_count = 3
illegal = TRUE
guar_rarity = list( //Better chances
"Legendary" = 5,
"Epic" = 10,
@@ -391,7 +393,7 @@
if(21 to INFINITY)
icon_state = "deck_tcg_full"
else
icon_state = "deck_up"
icon_state = "deck_tcg_full"
/obj/item/tcgcard_deck/examine(mob/user)
. = ..()
@@ -549,7 +551,8 @@
icon_state = "binder"
var/list/cards = list()
var/mode = 0 //If 1, will show all the cards even if you don't have em
var/list/decks = list()
var/mode = 0 //If 1, will show all the cards even if you don't have em.
/obj/item/tcgcard_binder/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/tcg_card))
@@ -564,10 +567,8 @@
qdel(I)
if(istype(I, /obj/item/tcgcard_deck))
var/obj/item/tcgcard_deck/deck = I
for(var/obj/item/tcg_card/card in deck.contents)
card.forceMove(src)
cards.Add(card)
qdel(I)
deck.forceMove(src)
decks.Add(deck)
. = ..()
/obj/item/tcgcard_binder/attack_self(mob/living/carbon/user)
@@ -609,6 +610,19 @@
return
. = ..()
/obj/item/tcgcard_binder/AltClick(mob/user)
var/list/choices = list()
for(var/obj/item/tcgcard_deck/deck in decks)
var/obj/item/tcgcard_deck/first_card = locate() in deck
choices[deck] = image(icon = first_card.icon, icon_state = first_card.icon_state)
var/obj/item/tcgcard_deck/choice = show_radial_menu(user, src, choices, require_near = TRUE, tooltips = TRUE)
if(choice && (choice in decks))
choice.forceMove(get_turf(src))
user.put_in_hands(choice)
decks.Remove(choice)
/obj/item/tcgcard_binder/proc/check_for_exodia()
var/list/card_types = list()
for(var/obj/item/tcg_card/card in cards)
@@ -738,6 +752,30 @@
. = ..()
/mob/living/carbon/human/proc/SaveTCGCards()
if(!client)
return
var/obj/item/tcgcard_binder/binder = locate() in src
if(!binder || !length(binder.cards))
return
var/list/card_types = list()
for(var/obj/item/tcg_card/card in binder.cards)
//if(!card.illegal) //Uncomment if you want to block syndie cards from saving
card_types[card.datum_type] = card.illegal
card_types["decks"] = list()
for(var/obj/item/tcgcard_deck/deck in binder.decks)
var/list/cardlist = list()
for(var/obj/item/tcg_card/card in deck.contents)
cardlist[card.datum_type] = card.illegal
card_types["decks"].Add(cardlist)
client.prefs.tcg_cards = card_types
client.prefs.save_character(TRUE)
#undef COMMON_SERIES
#undef TAPPED_ANGLE
#undef UNTAPPED_ANGLE