mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-09 16:07:40 +00:00
Decks are saveable!
This commit is contained in:
@@ -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
|
||||
/*
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(.)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user