Closed Norwes1 closed 1 year ago
https://github.com/ParadiseSS13/Paradise/pull/17436 this may be the cause
It's entirely possible, let me take a look.
FWIW I don't like the existing serialization strategy, it relies too heavily on the expected order of slots instead of using perfectly available slot IDs. And ultimately the implementation has zero clue whether or not the result is valid JSON. I might want to tear out a bunch of this at some point.
I tested 3dfa53187cea36cbdd552d782c3d9bb836a1dda6 versus the commit before it, and the returned JSON appears to be "correct":
{"type":"/obj/item/storage/backpack","content":[],"slots":21,"max_w_class":3,"max_c_w_class":21}
I don't think #17436 is the offending change.
JSON was broken by Moths im pretty sure
@Sirryan2002 Nah, as someone who spends ahem amount of time playing with dolls- I MEAN, CREATING FILES FOR USE IN ADMIN EVENTS TOTALLY SERIOUSLY HAHA, this one I'm pretty sure isn't entirely related to the Moth update. The moff update had no effect on inorganic JSON files, as that only fucked with DNA, whereas this bug has to do with icons and how they're displayed in game.
Tthe issue I'm seeing is that due to a recent (i.e. May 2022 or sooner) update, the 'Serialize Marked Datum' button now includes a bunch of newer elements to it. To use the same old example, a serialized dufflebag post-moff update would be:
{"type":"/obj/item/storage/backpack","content":[],"slots":21,"max_w_class":3,"max_c_w_class":21}
After a more recent update, it's now:
{"type":"/obj/item/storage/backpack","color":null,"dir":2,"icon":"icons/obj/storage.dmi","icon_state":"backpack","name":"backpack","pixel_x":0,"pixel_y":0,"content":[],"slots":21,"max_w_class":3,"max_c_w_class":21}
From what I can see, someone had the idea of specifying more things in the JSON files, and it's a more recent change than the Moff update. I unfortunately can't say exactly when, but I'd bet good money on the issue being that the more expanded serialized datums forces BYOND to look in the wrong place, whereas the older datums simply let it default to the right one.
Okay, I just bisected this. The first offending commit is https://github.com/ParadiseSS13/Paradise/commit/78dd3765384e20a868e25b639597231bc256889c. The change in /atom#serialize
is probably what caused the regression.
Thanks very much, @warriorstar-orion! Any thoughts on how to correct it? I'd personally prefer just rolling it back, though I understand the desire to add more serials and specifics to JSON files.
Looking at that changelist, it looks like it's fixing a bunch of places that assume initial() works on list variables. They don't. But the way it 'fixes' it in some cases looks just as bad. For instance, it changes the behaviour of /client/proc/modify_variables for VV_RESTORE_DEFAULT from:
var_new = initial(O.vars[variable])
to:
var_new = O.vars[variable]
var_new is later used in the code to:
O.vv_edit_var(variable, var_new)
Which, if everything is kosher, just calls O.vars[variable] = var_new This means that the former code incorrectly tries to set O.vars[variable] to NULL, but the new version even more incorrectly tries to set O.vars[variable] to O.vars[variable] as the way it handles VV_RESTORE_DEFAULT.
This is not the only place in the changelist that functionality is changed from something that worked wrong to something that is even more wrong.
Therefore, a rollback is probably a good short term solution, but at some point this code should be fixed correctly given that it's making an incorrect assumption.
@AffectedArc07 would you be able to shed some light on this? The change https://github.com/ParadiseSS13/Paradise/commit/78dd3765384e20a868e25b639597231bc256889c was included in #17636, which has already had some of its implementation reverted in #17701 due to issues with the build mode map saver, and it seems to have caused issues here as well.
So, my old jsons still sorta work (despite the hairstyles being wrong), but new serialised mobs do not work properly at ALL after spawning in a working JSON, editing them in the appearence editor, then serialising them again. Compare:
Old character:
{"type":"/mob/living/carbon/human","icon":null,"name":"Lambda","limbs":{"chest":{"type":"/obj/item/organ/external/chest","dir":4,"icon":""},"groin":{"type":"/obj/item/organ/external/groin","dir":4,"icon":""},"head":{"type":"/obj/item/organ/external/head","dir":4,"icon":""},"l_arm":{"type":"/obj/item/organ/external/arm","dir":4,"icon":""},"r_arm":{"type":"/obj/item/organ/external/arm/right","dir":4,"icon":""},"l_leg":{"type":"/obj/item/organ/external/leg","dir":4,"icon":""},"r_leg":{"type":"/obj/item/organ/external/leg/right","dir":4,"icon":""},"l_hand":{"type":"/obj/item/organ/external/hand","dir":4,"icon":""},"r_hand":{"type":"/obj/item/organ/external/hand/right","dir":4,"icon":""},"l_foot":{"type":"/obj/item/organ/external/foot","dir":4,"icon":""},"r_foot":{"type":"/obj/item/organ/external/foot/right","dir":4,"icon":""}},"iorgans":{"heart":{"type":"/obj/item/organ/internal/heart"},"lungs":{"type":"/obj/item/organ/internal/lungs"},"liver":{"type":"/obj/item/organ/internal/liver"},"kidneys":{"type":"/obj/item/organ/internal/kidneys"},"brain":{"type":"/obj/item/organ/internal/brain"},"appendix":{"type":"/obj/item/organ/internal/appendix"},"ears":{"type":"/obj/item/organ/internal/ears"},"hardened X-ray eyes":{"type":"/obj/item/organ/internal/eyes/cybernetic/xray/hardened","status":2,"dna":{"UE":"","SE":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"UI":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"species":"/datum/species/human","blood_type":"A+","real_name":null}},"Anti-drop implant":{"type":"/obj/item/organ/internal/cyberimp/brain/anti_drop","status":2,"dna":{"UE":"","SE":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"UI":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"species":"/datum/species/human","blood_type":"A+","real_name":null}},"Hardened Neural Jumpstarter implant":{"type":"/obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened/compatible","status":2,"dna":{"UE":"","SE":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"UI":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"species":"/datum/species/human","blood_type":"A+","real_name":null}},"breathing tube implant":{"type":"/obj/item/organ/internal/cyberimp/mouth/breathing_tube","status":2,"dna":{"UE":"","SE":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"UI":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"species":"/datum/species/human","blood_type":"A+","real_name":null}},"Hardened CNS Rebooter implant":{"type":"/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened","status":2,"dna":{"UE":"","SE":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"UI":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"species":"/datum/species/human","blood_type":"A+","real_name":null}},"Hardened reviver implant":{"type":"/obj/item/organ/internal/cyberimp/chest/reviver/hardened","status":2,"dna":{"UE":"","SE":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"UI":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"species":"/datum/species/human","blood_type":"A+","real_name":null}},"hardened nutrient pump implant PLUS":{"type":"/obj/item/organ/internal/cyberimp/chest/nutriment/plus/hardened","status":2,"dna":{"UE":"","SE":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"UI":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"species":"/datum/species/human","blood_type":"A+","real_name":null}},"combat cybernetics implant":{"type":"/obj/item/organ/internal/cyberimp/arm/combat","status":2,"dna":{"UE":"","SE":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"UI":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"species":"/datum/species/human","blood_type":"A+","real_name":null}},"Security HUD implant":{"type":"/obj/item/organ/internal/cyberimp/eyes/hud/security","status":2,"dna":{"UE":"","SE":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"UI":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"species":"/datum/species/human","blood_type":"A+","real_name":null}}},"equip":[{"type":"/obj/item/storage/backpack/satchel","content":[{"type":"/obj/item/storage/box/syndie_kit","content":[{"type":"/obj/item/implanter/storage","icon_state":"implanter1"},{"type":"/obj/item/implanter/explosive","icon_state":"implanter1"},{"type":"/obj/item/implanter/freedom","icon_state":"implanter1"},{"type":"/obj/item/implanter/uplink","icon_state":"implanter1"},{"type":"/obj/item/implanter/emp","icon_state":"implanter1"},{"type":"/obj/item/implanter/adrenalin","icon_state":"implanter1"},{"type":"/obj/item/implanter/dust","icon_state":"implanter1"},{"type":"/obj/item/lighter/zippo/gonzofist"},{"type":"/obj/item/storage/box/matches","content":[{"type":"/obj/item/match"},{"type":"/obj/item/match"},{"type":"/obj/item/match"},{"type":"/obj/item/match"},{"type":"/obj/item/match"},{"type":"/obj/item/match"},{"type":"/obj/item/match"},{"type":"/obj/item/match"},{"type":"/obj/item/match"},{"type":"/obj/item/match"}],"slots":10,"max_w_class":1,"max_c_w_class":14},{"type":"/obj/item/flashlight/seclite","dir":4},{"type":"/obj/item/kitchen/knife/combat"},{"type":"/obj/item/stack/telecrystal/fifty"},{"type":"/obj/item/implanter/krav_maga","icon_state":"implanter1"}],"slots":14,"max_w_class":2,"max_c_w_class":28},{"type":"/obj/item/card/emag"}],"slots":21,"max_w_class":3,"max_c_w_class":21},{"type":"/obj/item/clothing/mask/cigarette/cigar/havana"},null,null,null,{"type":"/obj/item/storage/belt/security/webbing","name":"syndicate webbing","content":[{"type":"/obj/item/ammo_box/magazine/m50","icon_state":"50ae-7"},{"type":"/obj/item/ammo_box/magazine/m50","icon_state":"50ae-7"},{"type":"/obj/item/ammo_box/magazine/m50","icon_state":"50ae-7"},{"type":"/obj/item/ammo_box/magazine/m50","icon_state":"50ae-7"},{"type":"/obj/item/ammo_box/magazine/m50","icon_state":"50ae-7"},{"type":"/obj/item/ammo_box/magazine/m50","icon_state":"50ae-7"}],"slots":6,"max_w_class":3,"max_c_w_class":14},{"type":"/obj/item/card/id/syndicate/command","name":"Lambda's ID Card (Syndicate Officer)","sex":"Female","age":27,"btype":"A+","dna_hash":"02b554ecc7bbdf7c3f780c08edc92326","fprint_hash":"1cf3416fcf50bdd0993b82e0ac55fc30","access":[150,151,153],"job":"Syndicate Officer","account":595941,"owner":"Lambda","mining":0},{"type":"/obj/item/radio/headset/syndicate/alt/syndteam"},{"type":"/obj/item/clothing/glasses/hud/health/sunglasses","icon_state":"sun","name":"sunglasses"},{"type":"/obj/item/clothing/gloves/combat"},{"type":"/obj/item/clothing/head/helmet/space/deathsquad/beret","icon_state":"beret","name":"beret"},{"type":"/obj/item/clothing/shoes/space_ninja","dir":8,"icon_state":"noble_boot","name":"combat boots"},{"type":"/obj/item/clothing/suit/space/deathsquad/officer","icon_state":"leatherjacket","name":"leather jacket"},{"type":"/obj/item/clothing/under/syndicate"},{"type":"/obj/item/reagent_containers/hypospray/combat/nanites"},{"type":"/obj/item/tank/internals/emergency_oxygen/double"},{"type":"/obj/item/gun/projectile/automatic/pistol/deagle/camo"},null,null,{"type":"/obj/item/pen/edagger"},{"type":"/obj/item/pinpointer/advpinpointer"},null,null],"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"},"age":27,"ushirt":"Nude","socks":"Stockings (Programmer)","uwear":"Ladies Black"}
New character:
{"type":"/mob/living/carbon/human","color":null,"dir":2,"icon":null,"icon_state":"body_m_s","name":"Lambda","pixel_x":0,"pixel_y":0,"limbs":{"chest":{"type":"/obj/item/organ/external/chest","color":null,"dir":4,"icon":"","icon_state":null,"name":"upper body","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"groin":{"type":"/obj/item/organ/external/groin","color":null,"dir":4,"icon":"","icon_state":null,"name":"lower body","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"head":{"type":"/obj/item/organ/external/head","color":null,"dir":4,"icon":"","icon_state":null,"name":"head","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"l_arm":{"type":"/obj/item/organ/external/arm","color":null,"dir":4,"icon":"","icon_state":null,"name":"left arm","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"r_arm":{"type":"/obj/item/organ/external/arm/right","color":null,"dir":4,"icon":"","icon_state":null,"name":"right arm","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"l_leg":{"type":"/obj/item/organ/external/leg","color":null,"dir":4,"icon":"","icon_state":null,"name":"left leg","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"r_leg":{"type":"/obj/item/organ/external/leg/right","color":null,"dir":4,"icon":"","icon_state":null,"name":"right leg","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"l_hand":{"type":"/obj/item/organ/external/hand","color":null,"dir":4,"icon":"","icon_state":null,"name":"left hand","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"r_hand":{"type":"/obj/item/organ/external/hand/right","color":null,"dir":4,"icon":"","icon_state":null,"name":"right hand","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"l_foot":{"type":"/obj/item/organ/external/foot","color":null,"dir":4,"icon":"","icon_state":null,"name":"left foot","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"r_foot":{"type":"/obj/item/organ/external/foot/right","color":null,"dir":4,"icon":"","icon_state":null,"name":"right foot","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}}},"iorgans":{"heart":{"type":"/obj/item/organ/internal/heart","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"heart-on","name":"heart","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"lungs":{"type":"/obj/item/organ/internal/lungs","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"lungs","name":"lungs","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"liver":{"type":"/obj/item/organ/internal/liver","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"liver","name":"liver","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"kidneys":{"type":"/obj/item/organ/internal/kidneys","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"kidneys","name":"kidneys","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"brain":{"type":"/obj/item/organ/internal/brain","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"brain2","name":"brain","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"appendix":{"type":"/obj/item/organ/internal/appendix","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"appendix","name":"appendix","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"ears":{"type":"/obj/item/organ/internal/ears","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"ears","name":"ears","pixel_x":0,"pixel_y":0,"dna":{"UE":"02b554ecc7bbdf7c3f780c08edc92326","SE":[658,302,653,747,472,551,803,436,189,530,287,558,193,731,351,143,148,852,52,343,899,403,65,375,55,907,828,372,954,225,789,270,566,333,45,587,206,910,241,931,497,273,693,830,62,664,781,172,319,428,93,739,26,476,96],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,280,68,2294,78,3110,3110,3110,0,0],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"}},"hardened X-ray eyes":{"type":"/obj/item/organ/internal/eyes/cybernetic/xray/hardened","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"eyes-c","name":"hardened X-ray eyes","pixel_x":0,"pixel_y":0,"status":2},"Anti-drop implant":{"type":"/obj/item/organ/internal/cyberimp/brain/anti_drop","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"brain_implant","name":"Anti-drop implant","pixel_x":0,"pixel_y":0,"status":2},"Hardened Neural Jumpstarter implant":{"type":"/obj/item/organ/internal/cyberimp/brain/anti_sleep/hardened/compatible","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"brain_implant","name":"Hardened Neural Jumpstarter implant","pixel_x":0,"pixel_y":0,"status":2},"breathing tube implant":{"type":"/obj/item/organ/internal/cyberimp/mouth/breathing_tube","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"implant_mask","name":"breathing tube implant","pixel_x":0,"pixel_y":0,"status":2},"Hardened reviver implant":{"type":"/obj/item/organ/internal/cyberimp/chest/reviver/hardened","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"chest_implant","name":"Hardened reviver implant","pixel_x":0,"pixel_y":0,"status":2},"hardened nutrient pump implant PLUS":{"type":"/obj/item/organ/internal/cyberimp/chest/nutriment/plus/hardened","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"chest_implant","name":"hardened nutrient pump implant PLUS","pixel_x":0,"pixel_y":0,"status":2},"combat cybernetics implant":{"type":"/obj/item/organ/internal/cyberimp/arm/combat","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"implant-toolkit","name":"combat cybernetics implant","pixel_x":0,"pixel_y":0,"status":2},"Security HUD implant":{"type":"/obj/item/organ/internal/cyberimp/eyes/hud/security","color":null,"dir":2,"icon":"icons/obj/surgery.dmi","icon_state":"eye_implant","name":"Security HUD implant","pixel_x":0,"pixel_y":0,"status":2}},"equip":[{"type":"/obj/item/storage/backpack/satchel","color":null,"dir":2,"icon":"icons/obj/storage.dmi","icon_state":"satchel","name":"leather satchel","pixel_x":0,"pixel_y":0,"content":[{"type":"/obj/item/storage/box/syndie_kit","color":null,"dir":2,"icon":"icons/obj/storage.dmi","icon_state":"box_of_doom","name":"box","pixel_x":0,"pixel_y":0,"content":[{"type":"/obj/item/implanter/storage","color":null,"dir":2,"icon":"icons/obj/items.dmi","icon_state":"implanter1","name":"implanter (storage)","pixel_x":0,"pixel_y":0},{"type":"/obj/item/implanter/explosive","color":null,"dir":2,"icon":"icons/obj/items.dmi","icon_state":"implanter1","name":"implanter (explosive)","pixel_x":0,"pixel_y":0},{"type":"/obj/item/implanter/freedom","color":null,"dir":2,"icon":"icons/obj/items.dmi","icon_state":"implanter1","name":"implanter (freedom)","pixel_x":0,"pixel_y":0},{"type":"/obj/item/implanter/uplink","color":null,"dir":2,"icon":"icons/obj/items.dmi","icon_state":"implanter1","name":"implanter (uplink)","pixel_x":0,"pixel_y":0},{"type":"/obj/item/implanter/emp","color":null,"dir":2,"icon":"icons/obj/items.dmi","icon_state":"implanter1","name":"implanter (EMP)","pixel_x":0,"pixel_y":0},{"type":"/obj/item/implanter/adrenalin","color":null,"dir":2,"icon":"icons/obj/items.dmi","icon_state":"implanter1","name":"implanter (adrenalin)","pixel_x":0,"pixel_y":0},{"type":"/obj/item/implanter/dust","color":null,"dir":2,"icon":"icons/obj/items.dmi","icon_state":"implanter1","name":"implanter (Dust-on-death)","pixel_x":0,"pixel_y":0},{"type":"/obj/item/lighter/zippo/gonzofist","color":null,"dir":2,"icon":"icons/obj/items.dmi","icon_state":"gonzozippo","name":"Gonzo Fist zippo","pixel_x":0,"pixel_y":0},{"type":"/obj/item/storage/box/matches","color":null,"dir":2,"icon":"icons/obj/cigarettes.dmi","icon_state":"matchbox","name":"matchbox","pixel_x":0,"pixel_y":0,"content":[{"type":"/obj/item/match","color":null,"dir":2,"icon":"icons/obj/cigarettes.dmi","icon_state":"match_unlit","name":"match","pixel_x":0,"pixel_y":0},{"type":"/obj/item/match","color":null,"dir":2,"icon":"icons/obj/cigarettes.dmi","icon_state":"match_unlit","name":"match","pixel_x":0,"pixel_y":0},{"type":"/obj/item/match","color":null,"dir":2,"icon":"icons/obj/cigarettes.dmi","icon_state":"match_unlit","name":"match","pixel_x":0,"pixel_y":0},{"type":"/obj/item/match","color":null,"dir":2,"icon":"icons/obj/cigarettes.dmi","icon_state":"match_unlit","name":"match","pixel_x":0,"pixel_y":0},{"type":"/obj/item/match","color":null,"dir":2,"icon":"icons/obj/cigarettes.dmi","icon_state":"match_unlit","name":"match","pixel_x":0,"pixel_y":0},{"type":"/obj/item/match","color":null,"dir":2,"icon":"icons/obj/cigarettes.dmi","icon_state":"match_unlit","name":"match","pixel_x":0,"pixel_y":0},{"type":"/obj/item/match","color":null,"dir":2,"icon":"icons/obj/cigarettes.dmi","icon_state":"match_unlit","name":"match","pixel_x":0,"pixel_y":0},{"type":"/obj/item/match","color":null,"dir":2,"icon":"icons/obj/cigarettes.dmi","icon_state":"match_unlit","name":"match","pixel_x":0,"pixel_y":0},{"type":"/obj/item/match","color":null,"dir":2,"icon":"icons/obj/cigarettes.dmi","icon_state":"match_unlit","name":"match","pixel_x":0,"pixel_y":0},{"type":"/obj/item/match","color":null,"dir":2,"icon":"icons/obj/cigarettes.dmi","icon_state":"match_unlit","name":"match","pixel_x":0,"pixel_y":0}],"slots":10,"max_w_class":1,"max_c_w_class":14},{"type":"/obj/item/flashlight/seclite","color":null,"dir":4,"icon":"icons/obj/lighting.dmi","icon_state":"seclite","name":"seclite","pixel_x":0,"pixel_y":0},{"type":"/obj/item/kitchen/knife/combat","color":null,"dir":2,"icon":"icons/obj/kitchen.dmi","icon_state":"combatknife","name":"combat knife","pixel_x":0,"pixel_y":0},{"type":"/obj/item/stack/telecrystal/fifty","color":null,"dir":2,"icon":"icons/obj/telescience.dmi","icon_state":"telecrystal","name":"telecrystal","pixel_x":0,"pixel_y":0},{"type":"/obj/item/implanter/krav_maga","color":null,"dir":2,"icon":"icons/obj/items.dmi","icon_state":"implanter1","name":"implanter (krav maga)","pixel_x":0,"pixel_y":0}],"slots":14,"max_w_class":2,"max_c_w_class":28},{"type":"/obj/item/card/emag","color":null,"dir":2,"icon":"icons/obj/card.dmi","icon_state":"emag","name":"cryptographic sequencer","pixel_x":0,"pixel_y":0}],"slots":21,"max_w_class":3,"max_c_w_class":21},{"type":"/obj/item/clothing/mask/cigarette/cigar/havana","color":null,"dir":2,"icon":"icons/obj/clothing/masks.dmi","icon_state":"cigar2off","name":"Premium Havanian Cigar","pixel_x":0,"pixel_y":0},null,null,null,{"type":"/obj/item/storage/belt/security/webbing","color":null,"dir":2,"icon":"icons/obj/clothing/belts.dmi","icon_state":"securitywebbing","name":"syndicate webbing","pixel_x":0,"pixel_y":0,"content":[{"type":"/obj/item/ammo_box/magazine/m50","color":null,"dir":2,"icon":"icons/obj/ammo.dmi","icon_state":"50ae-7","name":"handgun magazine (.50ae)","pixel_x":0,"pixel_y":0},{"type":"/obj/item/ammo_box/magazine/m50","color":null,"dir":2,"icon":"icons/obj/ammo.dmi","icon_state":"50ae-7","name":"handgun magazine (.50ae)","pixel_x":0,"pixel_y":0},{"type":"/obj/item/ammo_box/magazine/m50","color":null,"dir":2,"icon":"icons/obj/ammo.dmi","icon_state":"50ae-7","name":"handgun magazine (.50ae)","pixel_x":0,"pixel_y":0},{"type":"/obj/item/ammo_box/magazine/m50","color":null,"dir":2,"icon":"icons/obj/ammo.dmi","icon_state":"50ae-7","name":"handgun magazine (.50ae)","pixel_x":0,"pixel_y":0},{"type":"/obj/item/ammo_box/magazine/m50","color":null,"dir":2,"icon":"icons/obj/ammo.dmi","icon_state":"50ae-7","name":"handgun magazine (.50ae)","pixel_x":0,"pixel_y":0},{"type":"/obj/item/ammo_box/magazine/m50","color":null,"dir":2,"icon":"icons/obj/ammo.dmi","icon_state":"50ae-7","name":"handgun magazine (.50ae)","pixel_x":0,"pixel_y":0}],"slots":6,"max_w_class":3,"max_c_w_class":14},{"type":"/obj/item/card/id/syndicate/command","color":null,"dir":2,"icon":"icons/obj/card.dmi","icon_state":"commander","name":"Lambda's ID Card (Syndicate Officer)","pixel_x":0,"pixel_y":0,"sex":"Female","age":27,"btype":"A+","dna_hash":"02b554ecc7bbdf7c3f780c08edc92326","fprint_hash":"1cf3416fcf50bdd0993b82e0ac55fc30","access":[150,151,153],"job":"Syndicate Officer","account":595941,"owner":"Lambda","mining":0},{"type":"/obj/item/radio/headset/syndicate/alt/syndteam","color":null,"dir":2,"icon":"icons/obj/radio.dmi","icon_state":"syndie_headset","name":"syndicate headset","pixel_x":0,"pixel_y":0},{"type":"/obj/item/clothing/glasses/hud/health/sunglasses","color":null,"dir":2,"icon":"icons/obj/clothing/glasses.dmi","icon_state":"sun","name":"sunglasses","pixel_x":0,"pixel_y":0},{"type":"/obj/item/clothing/gloves/combat","color":null,"dir":2,"icon":"icons/obj/clothing/gloves.dmi","icon_state":"combat","name":"combat gloves","pixel_x":0,"pixel_y":0},{"type":"/obj/item/clothing/head/helmet/space/deathsquad/beret","color":null,"dir":2,"icon":"icons/obj/clothing/hats.dmi","icon_state":"beret","name":"beret","pixel_x":0,"pixel_y":0},{"type":"/obj/item/clothing/shoes/space_ninja","color":null,"dir":8,"icon":"icons/obj/clothing/shoes.dmi","icon_state":"noble_boot","name":"combat boots","pixel_x":0,"pixel_y":0},{"type":"/obj/item/clothing/suit/space/deathsquad/officer","color":null,"dir":2,"icon":"icons/obj/clothing/suits.dmi","icon_state":"leatherjacket","name":"leather jacket","pixel_x":0,"pixel_y":0},{"type":"/obj/item/clothing/under/syndicate","color":null,"dir":2,"icon":"icons/obj/clothing/uniforms.dmi","icon_state":"syndicate","name":"tactical turtleneck","pixel_x":0,"pixel_y":0,"accessories":[]},{"type":"/obj/item/reagent_containers/hypospray/combat/nanites","color":null,"dir":2,"icon":"icons/obj/hypo.dmi","icon_state":"combat_hypo","name":"combat stimulant injector","pixel_x":0,"pixel_y":0},{"type":"/obj/item/tank/internals/emergency_oxygen/double","color":null,"dir":2,"icon":"icons/obj/tank.dmi","icon_state":"emergency_double","name":"double emergency oxygen tank","pixel_x":0,"pixel_y":0},{"type":"/obj/item/gun/projectile/automatic/pistol/deagle/camo","color":null,"dir":2,"icon":"icons/obj/guns/projectile.dmi","icon_state":"deaglecamo-7","name":"Desert Eagle","pixel_x":0,"pixel_y":0},null,null,{"type":"/obj/item/pen/edagger","color":null,"dir":2,"icon":"icons/obj/bureaucracy.dmi","icon_state":"pen","name":"pen","pixel_x":0,"pixel_y":0},{"type":"/obj/item/pinpointer/advpinpointer","color":null,"dir":2,"icon":"icons/obj/device.dmi","icon_state":"pinoff","name":"advanced pinpointer","pixel_x":0,"pixel_y":0},null,null],"dna":{"UE":"04a7da3c5b04cad85da1eebb92315b8b","SE":[309,30,660,850,54,900,526,738,585,811,17,102,518,266,370,471,739,36,648,39,695,173,137,665,105,115,387,11,623,728,627,15,581,517,275,648,962,780,1021,239,713,231,327,413,722,401,44,203,166,639,606,987,302,58,40],"UI":[4094,4094,4094,16,16,16,4094,4094,2440,16,16,16,800,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,636,68,2300,4095,3185,3138,38],"species":"/datum/species/human","blood_type":"A+","real_name":"Lambda"},"age":27,"ushirt":"Nude","socks":"Stockings (Programmer)","uwear":"Ladies Black"}
Can confirm all my old ones from last year still work. Anything made currently is completely broken though.
Confirmation from two others (GDN and S34N), along with my own testing that this works properly now and has been fixed
Issue Description: A recent change added a bunch of new variables to serialized files, including the icon directory for each. Issue is, items spawned in won't properly reach out to their directory, causing them to not have a sprite.
Why is this bad/What are the consequences: This effectively breaks new JSON files; old ones pre-change still work fine, but any serialized datums now are effectively unusable, whether carbons or atoms.
Steps to reproduce the problem:
When did the problem start happening: Within ~2 weeks, since a recent change that updated serialized datums.
Extra information: Interestingly, carbons spawned via this method will have their clothes visible on the carbon itself, just not in their inventory (i.e. someone wearing a jumpsuit will appear to have it on, but if you possess the character, the sprite /there/ will be invisible).