From 02e8234cd49ac4d8b120c1d35ae454fc5097601c Mon Sep 17 00:00:00 2001 From: Alberyk Date: Mon, 30 Jan 2017 19:38:41 -0200 Subject: [PATCH] Custom items 29/01 (#1664) Adding the following items: Martian Duster - Yuri Daruski - bv1000 Detective's Credentials - Avery Bell - serveris6 Also, fixing some issues related to synth sprites, mostly ai custom cores not working and some other minor tweaks. --- code/modules/customitems/item_defines.dm | 76 +++++++++++++++--- code/modules/mob/living/silicon/ai/ai.dm | 2 + .../living/silicon/robot/custom_sprites.dm | 7 +- .../modules/mob/living/silicon/robot/robot.dm | 13 ++- icons/obj/custom_items/bell_coat.dmi | Bin 1699 -> 2636 bytes icons/obj/custom_items/bell_hat.dmi | Bin 383 -> 0 bytes icons/obj/custom_items/yuri_duster.dmi | Bin 0 -> 2854 bytes 7 files changed, 82 insertions(+), 16 deletions(-) delete mode 100644 icons/obj/custom_items/bell_hat.dmi create mode 100644 icons/obj/custom_items/yuri_duster.dmi diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 9b35c8c9d88..cf37d1ced15 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -17,11 +17,11 @@ All custom items with worn sprites must follow the contained sprite system: http switch(icon_state) if("pocket_watch_open") icon_state = "pocket_watch_close" - usr << "You close the [src]." + usr << "You close \the [src]." desc = "The design of this pocket watch signals its age, however it seems to retain its pristine quality. The cover is gold, and there appears to be an elegant crest on the outside of the lid." if("pocket_watch_close") icon_state = "pocket_watch_open" - usr << "You open the [src]." + usr << "You open \the [src]." desc = "Inside the pocket watch, there is a collection of numbers, displaying '[worldtime2text()]'. On the inside of the lid, there is another sequence of numbers etched into the lid itself." @@ -74,7 +74,7 @@ All custom items with worn sprites must follow the contained sprite system: http /obj/item/clothing/glasses/fluff/nebula_glasses/attack_self(mob/user as mob) if(chip) user.put_in_hands(chip) - user << "You eject a small, concealed data chip from a small slot in the frames of the [src]." + user << "You eject a small, concealed data chip from a small slot in the frames of \the [src]." chip = null /obj/item/clothing/glasses/fluff/nebula_glasses/attackby(obj/item/weapon/W as obj, mob/user as mob) @@ -85,7 +85,7 @@ All custom items with worn sprites must follow the contained sprite system: http chip = W W.add_fingerprint(user) add_fingerprint(user) - user << "You slot the [W] back into its place in the frames of the [src]." + user << "You slot the [W] back into its place in the frames of \the [src]." /obj/item/weapon/disk/fluff/nebula_chip //data chip - Roxy Wallace - nebulaflare name = "data chip" @@ -109,7 +109,7 @@ All custom items with worn sprites must follow the contained sprite system: http icon = 'icons/obj/custom_items/motaki_datadrive.dmi' icon_state = "motaki_datadrive" item_state = "holobadge-cord" - slot_flags = SLOT_MASK + slot_flags = SLOT_MASK | SLOT_TIE /obj/item/clothing/ears/skrell/fluff/dompesh_cloth //Skrell Purple Head Cloth - Shkor-Dyet Dom'Pesh - mofo1995 @@ -142,7 +142,7 @@ All custom items with worn sprites must follow the contained sprite system: http /obj/item/clothing/head/det/fluff/bell_hat //Brown Hat - Avery Bell - serveris6 name = "brown hat" desc = "A worn mid 20th century brown hat. It seems to have aged very well." - icon = 'icons/obj/custom_items/bell_hat.dmi' + icon = 'icons/obj/custom_items/bell_coat.dmi' icon_state = "bell_hat" item_state = "bell_hat" contained_sprite = 1 @@ -154,6 +154,8 @@ All custom items with worn sprites must follow the contained sprite system: http icon_state = "bell_coat" item_state = "bell_coat" contained_sprite = 1 + allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy,/obj/item/weapon/gun/projectile,/obj/item/ammo_magazine,/obj/item/ammo_casing, + /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/flame/lighter,/obj/item/device/taperecorder, /obj/item/clothing/accessory/badge/fluff/bell_badge) /obj/item/clothing/under/syndicate/tacticool/fluff/jaylor_turtleneck //Borderworlds Turtleneck - Jaylor Rameau - evilbrage @@ -173,7 +175,7 @@ All custom items with worn sprites must follow the contained sprite system: http /obj/item/device/kit/paint/ripley/fluff/zairjah_kit //Hephaestus Industrial Exosuit MK III Customization Kit - Zairjah - alberyk - name = "Hephaestus Industrial Exosuit MK III customization kit" + name = "\"Hephaestus Industrial Exosuit MK III\" APLU customisation kit" desc = "A ripley APLU model manufactured by Hephaestus industries, a common sight in New Gibson nowadays. It shines with chrome painting and a fancy reinforced glass cockpit." new_name = "Hephaestus Industrial Exosuit MK III" new_desc = "An ripley APLU model manufactured by Hephaestus industries, a common sight in New Gibson nowadays. It shines with chrome painting and a fancy reinforced glass cockpit." @@ -203,6 +205,8 @@ All custom items with worn sprites must follow the contained sprite system: http icon_state = "kathleen_glove" item_state = "kathleen_glove" contained_sprite = 1 + gender = NEUTER + body_parts_covered = null /obj/structure/bed/chair/wheelchair/fluff/nomak_scooter //Mobility Scooter - Dubaku Nomak - demonofthefall @@ -392,7 +396,7 @@ All custom items with worn sprites must follow the contained sprite system: http item_state = icon_state usr << "You unzip \the [src]." else - usr << "You attempt to button-up the velcro on your [src], before promptly realising how silly you are." + usr << "You attempt to button-up the velcro on \the [src], before promptly realising how silly you are." return usr.update_inv_wear_suit() @@ -403,7 +407,7 @@ All custom items with worn sprites must follow the contained sprite system: http /obj/item/clothing/accessory/armband/fluff/vittorio_armband //ATLAS Armband - Vittorio Giurifiglio - tytostyris - name = "Atlas armband" + name = "ATLAS armband" desc = "This is an atlas armband showing anyone who sees this person, as a member of the Political party Atlas." icon = 'icons/obj/custom_items/vittorio_armband.dmi' icon_state = "vittorio_armband" @@ -450,7 +454,7 @@ All custom items with worn sprites must follow the contained sprite system: http contained_sprite = 1 -/obj/item/clothing/accessory/badge/holo/cord/fluff/dylan_tags //Dog Tags - Dylan Sutton - sircatnip +/obj/item/clothing/accessory/badge/fluff/dylan_tags //Dog Tags - Dylan Sutton - sircatnip name = "dog tags" desc = "Some black dog tags, engraved on them is the following: \"Wright, Dylan L, O POS, Pacific Union Special Forces\"." icon = 'icons/obj/custom_items/dylan_tags.dmi' @@ -459,6 +463,7 @@ All custom items with worn sprites must follow the contained sprite system: http stored_name = "Wright, Dylan L" badge_string = "Pacific Union Special Forces" contained_sprite = 1 + slot_flags = SLOT_MASK | SLOT_TIE /obj/item/clothing/ears/fluff/rico_stripes //Racing Stripes - Ricochet - nebulaflare @@ -489,6 +494,8 @@ All custom items with worn sprites must follow the contained sprite system: http contained_sprite = 1 clipped = 1 species_restricted = null + gender = NEUTER + body_parts_covered = null /obj/item/clothing/under/dress/fluff/sayyidah_dress //Traditional Jumper Dress - Sayyidah Al-Kateb - alberyk name = "traditional jumper dress" @@ -587,7 +594,6 @@ All custom items with worn sprites must follow the contained sprite system: http /obj/item/clothing/accessory/badge/fluff/caleb_badge //Worn Badge - Caleb Greene - notmegatron name = "worn badge" desc = "A simple gold badge denoting the wearer as Head of Security. It is worn and dulled with age, but the name, \"Caleb Greene\", is still clearly legible." - icon_state = "badge" icon = 'icons/obj/custom_items/caleb_badge.dmi' item_state = "caleb_badge" icon_state = "caleb_badge" @@ -697,7 +703,8 @@ All custom items with worn sprites must follow the contained sprite system: http /obj/item/clothing/suit/storage/toggle/labcoat/fluff/zohjar_jacket //People's Republic Medical Officer Coat - Zohjar Rasateir - lordraven001 name = "people's republic medical officer coat" - desc = "A sterile insulated coat made of leather stitched over fur. It has two gold lapels indicating Officer rank. The a white armband with a scarlet line in the center indicates that the person wearing this coat is medically trained." + desc = "A sterile insulated coat made of leather stitched over fur. It has two gold lapels indicating Officer rank. \ + The a white armband with a scarlet line in the center indicates that the person wearing this coat is medically trained." icon = 'icons/obj/custom_items/zohjar_clothing.dmi' icon_state = "zohjar_jacket" item_state = "zohjar_jacket" @@ -838,7 +845,7 @@ All custom items with worn sprites must follow the contained sprite system: http /obj/item/clothing/accessory/badge/old/fluff/ana_badge //Faded Badge - Ana Roh'hi'tin - suethecake name = "faded badge" - desc = "A faded badge, backed with leather, that reads \"NT Security Force\" across the front. It bears the emblem of the Forensic division." + desc = "A faded badge, backed with leather, that reads \"NT Security Force\" across the front. It bears the emblem of the forensic division." stored_name = "Ana Issek" badge_string = "NanoTrasen Security Department" @@ -903,3 +910,46 @@ All custom items with worn sprites must follow the contained sprite system: http icon_state = "ryan_jacket" item_state = "ryan_jacket" contained_sprite = 1 + + +/obj/item/clothing/suit/storage/fluff/yuri_duster //Martian Duster - Yuri Daruski - bv1000 + name = "martian duster" + desc = "A longer coat made of a tough fabric designed to protect the wearer from the harshness of the Mars badlands \ + found beyond the terraformed areas of said planet. Two scorched holes can be found on the lower back, and three non-scorched holes \ + appear in the upper torso on the back, with two lining up with two in the front." + icon = 'icons/obj/custom_items/yuri_duster.dmi' + icon_state = "yuri_duster" + item_state = "yuri_duster" + contained_sprite = 1 + + +/obj/item/clothing/accessory/badge/fluff/bell_badge //Detective's Credentials - Avery Bell - serveris6 + name = "detective's credentials" + desc = "A laminated card, verifying the denoted as a private investigator licensed in Biesel. A photo of a tan-skinned human male dressed in a brown coat and hat is imprinted." + icon = 'icons/obj/custom_items/bell_coat.dmi' + icon_state = "bell_badge" + item_state = "bell_badge" + contained_sprite = 1 + stored_name = "Avery Bell" + badge_string = "Silhouette Co. Consulting Detective" + + var/investigator = "Avery Bell" + var/occupation = "Consulting Detective" + var/birth_year = "8/8/2426" + var/licensed_systems = "Republic of Biesel, Sol Alliance, Nralakk" + var/supplementary_endorsements = "Licensed Medical Examiner; Sol Alliance, Republic of Biesel - Concealed firearm carry; Sol Alliance, Republic of Biesel" + var/citizenship = "Republic of Biesel" + +/obj/item/clothing/accessory/badge/fluff/bell_badge/verb/read() + set name = "Review credentials" + set category = "Object" + set src in usr + + usr << "\icon[] []: The detective's credentials show:" + usr << "The investigator registered to the credentials is [investigator]." + usr << "The assignment registered on the card is [occupation]." + usr << "The birth date on the card displays [birth_year]." + usr << "The citizenship registered on the card is [citizenship]." + usr << "The systems that the credentials show the user is licensed to investigate in are [licensed_systems]." + usr << "Additional endorsements registered on the card show: [supplementary_endorsements]." + return diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 31a06e91394..115473270c0 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -271,6 +271,8 @@ var/list/ai_verbs_default = list( aiPDA.ownjob = "AI" aiPDA.owner = pickedName aiPDA.name = pickedName + " (" + aiPDA.ownjob + ")" + + setup_icon() //this is because the ai custom name is related to the ai name, so, we just call the setup icon after someone named their ai /* The AI Power supply is a dummy object used for powering the AI since only machinery should be using power. diff --git a/code/modules/mob/living/silicon/robot/custom_sprites.dm b/code/modules/mob/living/silicon/robot/custom_sprites.dm index c3632cd62e7..93698213908 100644 --- a/code/modules/mob/living/silicon/robot/custom_sprites.dm +++ b/code/modules/mob/living/silicon/robot/custom_sprites.dm @@ -26,5 +26,10 @@ var/list/robot_custom_icons if(rname && rname == real_name) custom_sprite = 1 icon = CUSTOM_ITEM_SYNTH + var/list/valid_states = icon_states(icon) if(icon_state == "robot") - icon_state = "[ckey]-Standard" + if("[ckey]-Standard" in valid_states) + icon_state = "[ckey]-Standard" + else + src << "Could not locate [ckey]-Standard sprite." + icon = 'icons/mob/robots.dmi' diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 1a82285359c..15e71df2b0e 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -254,12 +254,21 @@ if(new_sprites && new_sprites.len) module_sprites = new_sprites.Copy() //Custom_sprite check and entry + if (custom_sprite == 1) - module_sprites["Custom"] = "[src.ckey]-[modtype]" - icontype = "Custom" + var/list/valid_states = icon_states(CUSTOM_ITEM_SYNTH) + if("[ckey]-[modtype]" in valid_states) + module_sprites["Custom"] = "[src.ckey]-[modtype]" + icon = CUSTOM_ITEM_SYNTH + icontype = "Custom" + else + icontype = module_sprites[1] + icon = 'icons/mob/robots.dmi' + src << "Custom Sprite Sheet does not contain a valid icon_state for [ckey]-[modtype]" else icontype = module_sprites[1] icon_state = module_sprites[icontype] + updateicon() return module_sprites diff --git a/icons/obj/custom_items/bell_coat.dmi b/icons/obj/custom_items/bell_coat.dmi index 97acb67128b16d7e60f07b2f2ad5bdd107419246..2a3b03c190cb4946cc70ed3518e6b1726510171c 100644 GIT binary patch literal 2636 zcmZ`*c{tSF7yr&Q7<;zJt`v#LUK(3NL}*O16Okd!FoVd9VPZnEy$P?SvQrE~-e@f0 zl_m088e}QPWCo=$*?!aWKELJtr}4Euj>wKeI^*DeSl>_-28Tl50)X3jDgCW{or>ZKb1pUWY0MH67mp+* zL**t#S9_RwF0tT6(~Q!2^85J>{Mxq{7#5FCtb9te&nc9Lsab^K#jh7*dBxoa5eG}H zS_(TJh=}XT(?5K4>PZn-S^)FeA*Sl@%)X}DxHZ~O?Iu<@9qY-W2>mz(f9BiDFT!fv ziE~?05scFPCWw9R9*b-?#sdH^+8S<#yq(9&w-1o{AlE|`v(8daL7YhTP+2x@^=Ax7 zmW@{{c~3Cgg|eCLvC=nvRDaCt#v;&vkh7HiCv}gz1gaROArSAqG3GWx{GhV&Zt+kL zruyr?O?KS$U1QFTy@Y1@l1kOTdSQBV{D?=(B-b?3@k2$tZ5mK3cJ@QkMNx3Mt+ z*JHkZJQ|A+X=2%@rmD(?hyZDs5-FXWh|sO1#m4Ys{nIX?8ho~?slUl;lwc2@2Su;# z-2sU7pc?fUw4;c(56+6Q%<4#9jYzlh6Bwa%tS+yUK+27_NsWPL}YiE2%x&)hsVmmE_}+}%f4c30hI3i7zmEW9!(sjCgmGHyEhtPO5HYr<7J=V(%jkg{>)|m(S{gKpxVy#N`^1_=mVNT-#8VI+C~TQd9Ms+P+m7b z=hfMzrs<-Jan;4^oiulC8V+wn+y2*toxog*FDqR0$mep%tZ+6got}dB2_?F}3 zNcvk-0kUGrd*|E+g*{NFNL!^&e&}9$K)x_yHAH@qXO@Bq-TKir1siDXzl+pl(yv>Lu={$qKe%p9 z)>Vm_AuNZH6dT7I%Ypu`;TpsPQg3qDp)21v^~-mSR@xR+$b8PM8`^RTXOV&vVTT(jY1pPfOwxdOgVa2-{q~_ z5k_w0UD{3>f{_8Gk@o7Aooc5bT0HggD%*^#Plt^XZLb(H&)LuqH8Ag(85e3|Uwf$Y znyyACOdi?V{a$|j*%xxoPhWggS)wIPsgDa19Y<%ylnq7^6k2Fynw_^{9w510OAtqP41!Rdy{AQj$$Vt{& z1SxN&QGp(Vagym}nU~zyo@)B`& zJngI2WrfC%2j7oR#&b~20bt1tzjOAh`p;NxQq-Q7j*BR5wR%eQd(SPJ@x2LAfU=p8 zgn{ONofp$iL~^4uT&~x{NQev+F!Fb&8cd(<#OS-vM#Pz-ezg z289W-uSKkA}yFPBBE67nx(*JTo5Os6kmB0il0;5y@mUXYT@$zuwzb&7mP@LAStGq z2@dt;CI~1-y7D%#drxcJJ-QCC%&2Ma=)GSx?#Y3+?(3^s9#wK+pJgg*3}U zC0C{ooSjdt0We{`kJg0T@Wc=7Z7!xB*H7VL*NGL#;NXnr=Y=@U{DJfPO0GOn>UmgK z|1;Sbp8tLwVH!MD2I^6*7Oufmkw#&@MoZAc@XDx#dzOQP2XsJ_J8VA5tY^m*mX2&q+zC>gl1sw2Y^25DHveP;dPca{;-2 zHX5)32m)M9wSn2;kCrOXWqp78*7oVwOKi`|FlDlkx{`g%jIXfrkvcA4PW@jtJy*ae2HAcGY zkt4IY_CSt8AZv9Xy$s8C&gKVa-p++&#%@~D2nb|%7E-ZTU-9U?53gAloZ-JBqagjKt1sg9+a{K z7I& z@dn)54tFJ1GO}#@*XqKE{_%%M0uD9YXDxJ2K|spD$`c;*|KSaP_m8~ue^ZJfB!+ZY zN-Cfnp9K8->>o7apXUEj$@KU4-`)_`o=$*xlk)TPEpN1+=5!@zXUe8_g8$wBu$2FE f{TG4xr)oz5Sn#n_|5mlip@)FAg&n-w+&k`HE5YLZ literal 1699 zcmV;U23+}xP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex7wuvIWN;^NFm z%}mcIfpCgT5=&AQY!#G}Qgd?Rlk*cxl(;xkGK-28Y!wW-IMa#}b5kK~OqKD)r3l3) zD2kO8T>V@WTzoyb01?qCJruBp1ONa9;Ymb6RCt{2n@wxuMi|Hciu@wmQm_*o65>k| zdd;O@Ag8_b;ESOLFEn7&+ZLDRQdoK@gbfRYu$PpwIh2x;LZIxmr+k4@*z2<1OUy0_ zUWZtAjpe_LID^P3c#39 z0LFv@FeVg$F`)pAiLh=!&?p!4nqArJqcFMXl?`ax9OSzcW ztnApGciVPuDQ#PRc793i1F8^2)F;jtg(!@_$Mp_3AlEM!^P1iNy|fS9IQi`Sa^g9s zI1WMOVqRNY$v{fR@%H_vk@C%rWi;Cz-3e~@M%MN#rGmD$k^unpRL$h@+)^4*p402? zAD%e2?Pvs)i+OExV;LVlHqdN$EbBDe9enuMz~;uXQ`?SVZNE|~XxWSiDH#U^oG5@%dEx{sj5oiwlA&tEtlKBfH;NzSIsG6s+Z}2V9E|{? ze6?1`yH_pz`@3i=Cv!oyRyWmm3!{CbJ-_S|E*dhFu4-APbX8n5WNQ14Ct-4PPhR94 z)pG;V`;6Cp_o{{eUfNH1q#kW37-wHf#!;=+k)BVDt)HGxQQMy=!2aP0SFP1eY3G;U z$fi27(gO(-veHAfRtL>QG!Am}#Qu{PIehV**%4Ou-5LeNzS32ps)Mn0RdoQRt5Vr_ zGy-Uy>6Y^sq??;xkm#H_?cYthPP27AwmvDRvF|tyeSP$X8y-?Uiyq--`uEfRk?C4a zhO{5{d#Yxde0%C$vwr>KZ|@djvjlOpAFFRKnMwe=EW|HZ+aI0_Ce01wa4f*?&bFhB z!f8EPSlh3Z3YwHk004O2>^AaSN+qZ>FUJC0G-QyJ5V+}eot|pyec6nt=fZBI_IoD# zR%A0G)P8Slo%07V+=R&GBHpPL;=;f;hz zw>yF{{sVV0zo%;8`8lNLQ@Ffp0l1q7ocb#;Z^SMd^4Ly5%G`PgH%zm24Iw64K8{e; z0i;v{N>`n@SQ{n~0xU>zs@Q(t6|fz45900v^()E8jFZtt8>&MA7!%k>5f6n>0LBDj z684g#K|Uc~OXRl~Td|2lgIAB|xQA&|r~vf+$3B z-e_TcbrI{Ui^yg~#A30zpouV52qJsstF=1TRx%?m>HR=V3P{8wsMhNGzWiGPH4jWZ z2V68{h)Dqe^qt9m>`)^%67ib^PD~1(Z;9~|SJnal{CMWZWgaC{3D9hJASMOKZ3QQL z{)ZnUa$A9z6l}j8n{}ucVq%;#4f(IW=a7i!u(kr*@3-8<_%X(Hr+;&#J& zY3MN5oxZP`$VEfe!;g_)e*5cw8#Ng~Ex_|Z)s>YBjVOB zx4W~g_jqI5f&x_t5@Hd^ZAHIPl8YP5y~e`E-1BEo2LK?q6-|gmW-dgIW2z9;@ApTX z&yqwu!u9+8Ksla3Er1Y}U$tO20^7;8qM7NFTuMh?H6PuM#+9^f_<4Ie>+N&uzXA36MXK4I_R tc+gh|yj7cm#H0T{Al#h$$O#2t%>O{p0t#f3-`)TK002ovPDHLkV1hK%8!G?+ diff --git a/icons/obj/custom_items/bell_hat.dmi b/icons/obj/custom_items/bell_hat.dmi deleted file mode 100644 index 213ddf4d902a54b3b6b168ccca844eef23820d65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 383 zcmeAS@N?(olHy`uVBq!ia0vp^2|(_z{}NpA@#_;UZ(Xf(XU+$22sOB9{NRz!c^}P_3`IS?J1mTYj4vB|Da?5^>ByuI zgonTl|DT%I5{%d1N?XJO*Pl}jQ5rMwo+K6Ki#A>*loe)E;-Lh=C%1042D zK5)=0%4dQE|KbD@9)$!K?Q@cx*VtFI8e7RTGn}qhuBp)xTQKE+Pg7sZ8VOdQqMoLS a%nS(*l83b#n3{lYWAJqKb6Mw<&;$TeFNwYY diff --git a/icons/obj/custom_items/yuri_duster.dmi b/icons/obj/custom_items/yuri_duster.dmi new file mode 100644 index 0000000000000000000000000000000000000000..a72aeecd7ef146a395cd96f45b5d3a6e02b8faf1 GIT binary patch literal 2854 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 literal 0 HcmV?d00001