From 2693d49870e73a27ff8447bd42041e50e816fb4a Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Mon, 30 Dec 2019 15:05:45 -0600 Subject: [PATCH] feat(content): NYE 2019-20 etc --- migrations/archive/2019/20191231_nye.js | 118 ++++++++++++++++++ website/client/src/assets/scss/variables.scss | 8 +- website/common/locales/en/gear.json | 10 +- website/common/locales/en/subscriber.json | 1 + .../script/content/gear/sets/mystery.js | 12 ++ .../script/content/gear/sets/special/index.js | 6 + website/common/script/content/index.js | 2 + .../script/libs/shops-seasonal.config.js | 1 + .../mystery_202001/back_mystery_202001.png | Bin 0 -> 1290 bytes .../mystery_202001/head_mystery_202001.png | Bin 0 -> 546 bytes .../shop_back_mystery_202001.png | Bin 0 -> 1182 bytes .../shop_head_mystery_202001.png | Bin 0 -> 489 bytes .../shop_set_mystery_202001.png | Bin 0 -> 1448 bytes .../events/winter/head_special_nye2019.png | Bin 0 -> 3297 bytes .../winter/shop/shop_head_special_nye2019.png | Bin 0 -> 543 bytes .../spritesmith/npcs/npc_bailey.png | Bin 3639 -> 3779 bytes .../spritesmith/npcs/npc_justin.png | Bin 4364 -> 4291 bytes .../raw_sprites/spritesmith/npcs/npc_matt.png | Bin 6173 -> 6384 bytes .../spritesmith_large/promo_snowballs.png | Bin 0 -> 9235 bytes website/server/controllers/api-v3/news.js | 64 ++++++---- website/server/models/user/hooks.js | 2 + 21 files changed, 194 insertions(+), 30 deletions(-) create mode 100644 migrations/archive/2019/20191231_nye.js create mode 100644 website/raw_sprites/spritesmith/gear/events/mystery_202001/back_mystery_202001.png create mode 100644 website/raw_sprites/spritesmith/gear/events/mystery_202001/head_mystery_202001.png create mode 100644 website/raw_sprites/spritesmith/gear/events/mystery_202001/shop_back_mystery_202001.png create mode 100644 website/raw_sprites/spritesmith/gear/events/mystery_202001/shop_head_mystery_202001.png create mode 100644 website/raw_sprites/spritesmith/gear/events/mystery_202001/shop_set_mystery_202001.png create mode 100644 website/raw_sprites/spritesmith/gear/events/winter/head_special_nye2019.png create mode 100644 website/raw_sprites/spritesmith/gear/events/winter/shop/shop_head_special_nye2019.png create mode 100644 website/raw_sprites/spritesmith_large/promo_snowballs.png diff --git a/migrations/archive/2019/20191231_nye.js b/migrations/archive/2019/20191231_nye.js new file mode 100644 index 0000000000..805e357d02 --- /dev/null +++ b/migrations/archive/2019/20191231_nye.js @@ -0,0 +1,118 @@ +/* eslint-disable no-console */ +const MIGRATION_NAME = '20191231_nye'; +import { model as User } from '../../../website/server/models/user'; +import { v4 as uuid } from 'uuid'; + +const progressCount = 1000; +let count = 0; + +async function updateUser (user) { + count++; + + const set = {'flags.newStuff': true}; + let push; + + set.migration = MIGRATION_NAME; + + if (typeof user.items.gear.owned.head_special_nye2018 !== 'undefined') { + set['items.gear.owned.head_special_nye2019'] = false; + push = [ + { + type: 'marketGear', + path: 'gear.flat.head_special_nye2019', + _id: uuid(), + }, + ]; + } else if (typeof user.items.gear.owned.head_special_nye2017 !== 'undefined') { + set['items.gear.owned.head_special_nye2018'] = false; + push = [ + { + type: 'marketGear', + path: 'gear.flat.head_special_nye2018', + _id: uuid(), + }, + ]; + } else if (typeof user.items.gear.owned.head_special_nye2016 !== 'undefined') { + set['items.gear.owned.head_special_nye2017'] = false; + push = [ + { + type: 'marketGear', + path: 'gear.flat.head_special_nye2017', + _id: uuid(), + }, + ]; + } else if (typeof user.items.gear.owned.head_special_nye2015 !== 'undefined') { + set['items.gear.owned.head_special_nye2016'] = false; + push = [ + { + type: 'marketGear', + path: 'gear.flat.head_special_nye2016', + _id: uuid(), + }, + ]; + } else if (typeof user.items.gear.owned.head_special_nye2014 !== 'undefined') { + set['items.gear.owned.head_special_nye2015'] = false; + push = [ + { + type: 'marketGear', + path: 'gear.flat.head_special_nye2015', + _id: uuid(), + }, + ]; + } else if (typeof user.items.gear.owned.head_special_nye !== 'undefined') { + set['items.gear.owned.head_special_nye2014'] = false; + push = [ + { + type: 'marketGear', + path: 'gear.flat.head_special_nye2014', + _id: uuid(), + }, + ]; + } else { + set['items.gear.owned.head_special_nye'] = false; + push = [ + { + type: 'marketGear', + path: 'gear.flat.head_special_nye', + _id: uuid(), + }, + ]; + } + + if (count % progressCount === 0) console.warn(`${count} ${user._id}`); + + return await User.update({_id: user._id}, {$set: set, $push: {pinnedItems: {$each: push}}}).exec(); +} + +export default async function processUsers () { + let query = { + migration: {$ne: MIGRATION_NAME}, + }; + + const fields = { + _id: 1, + items: 1, + }; + + while (true) { // eslint-disable-line no-constant-condition + const users = await User // eslint-disable-line no-await-in-loop + .find(query) + .limit(250) + .sort({_id: 1}) + .select(fields) + .lean() + .exec(); + + if (users.length === 0) { + console.warn('All appropriate users found and modified.'); + console.warn(`\n${count} users processed\n`); + break; + } else { + query._id = { + $gt: users[users.length - 1], + }; + } + + await Promise.all(users.map(updateUser)); // eslint-disable-line no-await-in-loop + } +}; diff --git a/website/client/src/assets/scss/variables.scss b/website/client/src/assets/scss/variables.scss index 2a0f49aff9..b91954adc8 100644 --- a/website/client/src/assets/scss/variables.scss +++ b/website/client/src/assets/scss/variables.scss @@ -2,8 +2,8 @@ // possible values are: normal, fall, habitoween, thanksgiving, winter, nye, birthday, valentines, spring, summer // more to be added on future seasons -$npc_market_flavor: 'winter'; -$npc_quests_flavor: 'winter'; -$npc_seasonal_flavor: 'winter'; +$npc_market_flavor: 'nye'; +$npc_quests_flavor: 'nye'; +$npc_seasonal_flavor: 'nye'; $npc_timetravelers_flavor: 'winter'; -$npc_tavern_flavor: 'winter'; +$npc_tavern_flavor: 'nye'; diff --git a/website/common/locales/en/gear.json b/website/common/locales/en/gear.json index ffb4302ca0..4151a264c5 100644 --- a/website/common/locales/en/gear.json +++ b/website/common/locales/en/gear.json @@ -1334,6 +1334,8 @@ "headSpecialFall2019HealerText": "Dark Miter", "headSpecialFall2019HealerNotes": "Don this dark miter to harness the powers of the fearsome Lich. Increases Intelligence by <%= int %>. Limited Edition 2019 Autumn Gear.", + "headSpecialNye2019Text": "Outrageous Party Hat", + "headSpecialNye2019Notes": "You've received an Outrageous Party Hat! Wear it with pride while ringing in the New Year! Confers no benefit.", "headSpecialWinter2020RogueText": "Floofy Stocking Cap", "headSpecialWinter2020RogueNotes": "A Rogue walks down the street in that hat, people know they're not afraid of anything. Increases Perception by <%= per %>. Limited Edition 2019-2020 Winter Gear.", "headSpecialWinter2020WarriorText": "Snow-Dusted Headdress", @@ -1440,8 +1442,10 @@ "headMystery201910Notes": "These flames reveal arcane secrets before your very eyes! Confers no benefit. October 2019 Subscriber Item.", "headMystery201911Text": "Charmed Crystal Hat", "headMystery201911Notes": "Each of the crystal points attached to this hat endows you with a special power: mystic clairvoyance, arcane wisdom, and... sorcerous plate spinning? All right then. Confers no benefit. November 2019 Subscriber Item.", - "headMystery201912Text": "Polar Pixie Crown", - "headMystery201912Notes": "This glittering snowflake grants you resistance to the biting cold no matter how high you fly! Confers no benefit. December 2019 Subscriber Item.", + "headMystery201912Text": "Fabled Fox Ears", + "headMystery201912Notes": "Your hearing will be so sharp, you'll hear the stars twinkling and the moon spinning. Confers no benefit. January 2020 Subscriber Item.", + "headMystery202001Text": "Polar Pixie Crown", + "headMystery202001Notes": "This glittering snowflake grants you resistance to the biting cold no matter how high you fly! Confers no benefit. December 2019 Subscriber Item.", "headMystery301404Text": "Fancy Top Hat", "headMystery301404Notes": "A fancy top hat for the finest of gentlefolk! January 3015 Subscriber Item. Confers no benefit.", "headMystery301405Text": "Basic Top Hat", @@ -1916,6 +1920,8 @@ "backMystery201905Notes": "Fly to untold realms with these iridescent wings. Confers no benefit. May 2019 Subscriber Item.", "backMystery201912Text": "Polar Pixie Wings", "backMystery201912Notes": "Glide silently across sparkling snowfields and shimmering mountains with these icy wings. Confers no benefit. December 2019 Subscriber Item.", + "backMystery202001Text": "Five Tails of Fable", + "backMystery202001Notes": "These fluffy tails contain celestial power, and also a high level of cuteness! Confers no benefit. January 2020 Subscriber Item.", "backSpecialWonderconRedText": "Mighty Cape", "backSpecialWonderconRedNotes": "Swishes with strength and beauty. Confers no benefit. Special Edition Convention Item.", diff --git a/website/common/locales/en/subscriber.json b/website/common/locales/en/subscriber.json index 94d85761eb..bad5adb794 100644 --- a/website/common/locales/en/subscriber.json +++ b/website/common/locales/en/subscriber.json @@ -166,6 +166,7 @@ "mysterySet201910": "Cryptic Flame Set", "mysterySet201911": "Crystal Charmer Set", "mysterySet201912": "Polar Pixie Set", + "mysterySet202001": "Fabled Fox Set", "mysterySet301404": "Steampunk Standard Set", "mysterySet301405": "Steampunk Accessories Set", "mysterySet301703": "Peacock Steampunk Set", diff --git a/website/common/script/content/gear/sets/mystery.js b/website/common/script/content/gear/sets/mystery.js index f7e9b2c898..b6e3a96e84 100644 --- a/website/common/script/content/gear/sets/mystery.js +++ b/website/common/script/content/gear/sets/mystery.js @@ -400,6 +400,12 @@ const back = { mystery: '201912', value: 0, }, + 202001: { + text: t('backMystery202001Text'), + notes: t('backMystery202001Notes'), + mystery: '202001', + value: 0, + }, }; const body = { @@ -775,6 +781,12 @@ const head = { mystery: '201912', value: 0, }, + 202001: { + text: t('headMystery202001Text'), + notes: t('headMystery202001Notes'), + mystery: '202001', + value: 0, + }, 301404: { text: t('headMystery301404Text'), notes: t('headMystery301404Notes'), diff --git a/website/common/script/content/gear/sets/special/index.js b/website/common/script/content/gear/sets/special/index.js index cec5925999..f2f4120c02 100644 --- a/website/common/script/content/gear/sets/special/index.js +++ b/website/common/script/content/gear/sets/special/index.js @@ -2614,6 +2614,12 @@ const head = { value: 60, int: 7, }, + nye2019: { + text: t('headSpecialNye2019Text'), + notes: t('headSpecialNye2019Notes'), + value: 0, + canOwn: ownsItem('head_special_nye2019'), + }, }; const headAccessory = { diff --git a/website/common/script/content/index.js b/website/common/script/content/index.js index 1d33d8af2c..9005fddec3 100644 --- a/website/common/script/content/index.js +++ b/website/common/script/content/index.js @@ -1,5 +1,6 @@ import defaults from 'lodash/defaults'; import each from 'lodash/each'; +import moment from 'moment'; import t from './translation'; import { tasksByCategory } from './tasks'; @@ -117,6 +118,7 @@ api.cardTypes = { nye: { key: 'nye', messageOptions: 5, + yearRound: moment().isBefore('2020-01-02'), }, thankyou: { key: 'thankyou', diff --git a/website/common/script/libs/shops-seasonal.config.js b/website/common/script/libs/shops-seasonal.config.js index 9fef815c1e..99356badff 100644 --- a/website/common/script/libs/shops-seasonal.config.js +++ b/website/common/script/libs/shops-seasonal.config.js @@ -19,6 +19,7 @@ export default { }, availableSpells: [ + 'snowball', ], availableQuests: [ diff --git a/website/raw_sprites/spritesmith/gear/events/mystery_202001/back_mystery_202001.png b/website/raw_sprites/spritesmith/gear/events/mystery_202001/back_mystery_202001.png new file mode 100644 index 0000000000000000000000000000000000000000..04047c4d25bfbd9a3584cade711253bc9bb0fe96 GIT binary patch literal 1290 zcmV+l1@-!gP)RoQHwUS zYtbsmRkVqMFc67C2ulTWglikQ4v4Ce8H0T&D=ilbMW_cXEa;p zjHFsg&Zt$FeWCjLM<>Pc7u^n};vQeRBI5ah+g)3>sfq?uA4d{K zn#J1zQhlIRsngBPKk}C0kdM-AH8Nwbu60|={5d13R`TDf)y$(SME4jAHCt6JGf#)3 zB;`ysFE3xIJ{_2;q8^(McPWbuSQCy#rN(c)o3Qjb_ zM^~Owhf+1DAk-`t3NRzZMLmL-ukPIbEx zbdS%rqgl>Ks+D9D8F|d2+aZ8p-4zQ39&fvd8yk;_I1qTR)GVqJRg4)X76-7Hu(I^s z(s^R>h_cUZ?WaY2;^BSe^`cI7g$T|_!hvK#U<r92PnR99HQV|3SxpGlN6l5ilYR&%)Ekr zYbz95k}8gb4BzW4+fZh+oRNeBNwsbhRFJM#smof!VbGM*rBqy|!9L)%pvG~5kJ+ql zQx<0=;XqQYX#~FlfU3mB_3MiLGr)oK!~8LlUNi%PvnFDdj=Q zN%c}}SEFU@58ghwLx6A~sn#@t+Cl7gX&PM}H5N6_PElVNCoSHi>fHj^t{I)0$w=|N z*dNYF!hxh(Q{bPhETLYc+mu>EO`+nszKXRnADNm1HYf@hkgg zeugE}YTAu`jA5L~c#`DCC7XMsm# zF#`j)FbFd;%$g$s6l5>)^mS!_%p=X9svayldp-jL<9bgQ$B>F!Z*T7Rp6w{Z{=ht{ z$x&0JYjXF+rFoA6ZZ$o4^veFi!J|ig1?J3|)8b?{T~9VfCU&<7S8k@`oscPRAC4z+ zFOuM4+&Fo~cm?ud2xGN^R@$h5z>bHS<0@ ze}1H2-M?GUyjCn{<6bByIiI`q>o21#ujTKnKHt4{(ZrG$YrozOoz}C%BJHt9&-3f6 z#J|_285iz~FIBqeVfF9Ytru*&qt@N`nBLX;h5ygRj{(!~)%%@`oKY89U-(7Ya`~3> z2{EVdM`WnP3aq{9VCeF?;A5zS-QC+e?B5-mw|xHYcQt4Ko{MUK>i^X;JoRFi+ohKm zZ~ZS(Iug6I>fWx7?xbz|-+M}|`*TNVZH9_(#_RO8y1kbpwuGr_-?N&Sp#ly#bmC8E X{O$0b%1izR$sj3DS3j3^P6xs4f5i1S?5I zK~#9!?U_wzR96^=pQ)*dlT2c)Np)(BjVb;l6vU!7l!6u93571Y5GfH#vvuK0anaUI z7j@B1c3pH;XjY{gQ78%`MG;C`4cPb-JGDmC{LLg)xLuriN6+!z`Eg7F?e}gbGxyGS z4tbyZ{hR@l$z(E_OeT}bWHOmdrvH~x%eC;99s8nk*T=4$U6#GQVodmIsMpb2olLLZ z5CJrt`_%tc<=t`Ws;)(SBhtZ)S5%|pB?(~wCCV2v+nitcly2iAKty1 zDn~}|mOUOBKYTI-z*i%~UfhZ4JODo({ID#EN#tt3!w2@)M6wZ5Eg|7ECx?eFTm|5x zY}#}5yN?e6aQCm90OZCmq~ZwK+V?&HtD2et$h36H#;-ulA>+Wq%DOIz985t1=8H37hx!9f77 zk6rZEJJ#PF#gVaY{iawlzWrcV*<5CXELI;PH8y1c`1#Y%VjaIXdB-CoNllHfIzo!? zLoz}#6))Y~>c#ou@JYAs-`A{DT^2&ZIzKa20N}T~V4b5R^AB2(&oeXB>tlPCW;V$-ezW}VA*o$IqT zb=F2mwS**fs8ZOeij|zA4dd)@v z)^=oL2}>d)oQcBDH;EJ@X#vq=*0!q+FnCqiXc% z!R@m57v|@@b+`Au2f*%czK)%V!m4Fe=4E%P>H~g1e#&zyN%ISjV?P%GrP)Nz7YPZ; z$h5S3_lu0MD(UlZf7*B6I@LuYq`lbjz1Gnko8?2N)K^p@D4%y_Aou65vE=Bw2+@6t zUntDQPTS%B!p^nQ6l{dlJMD(KL5_t|PSADr6Uq^=v8wgLIMdS)96@u_vG--#9(y^( zrro6?M2>`gK$t^jW{OT_+C4|>mEvk2B2869IVGHajgY0zAvzHg0jdTI^DeK?%}#me zA)0#SYkuec!@Ydbf&YO<=?BT4sb)-ggBixAcAh0+F zrct~kGLmwI?o)irA&cIJJbeZuzdGPKDW~LUl0(lu)4}gJN$VvkT&LFDVT9CsVpd5> wztq+0&~mS1gqTbwlgVTSAujVPLwQ^}yq=b_|IUYQGBC30*ptu$@huTizt+%9Z>rvHT`=`tyX(hqmvyr}#Wx zlp##~I)lfuHpYs*_DlZNB&QzV_5VSMc*D|-A`HSaOBtHH1REZAE5DABeU#OHXW9lc zDRtF*6*Y2f`+eVMPwjcmP}*@>_RYXdJxBZ>+SKnx6=RMzZ>(;!Uefsmo_V4+> zWuLt~I_vVwcL7dSa|POJm<`_PGko}2a;awX<;~wdpE&IMXuoCt&eJcdG?%wn%$@M% zMGvC}d+WKJEz_oy6tOgXIzLzF(U)S6Zl_WYw3vcst`Q QV5Bg3y85}Sb4q9e0QZp7CIA2c literal 0 HcmV?d00001 diff --git a/website/raw_sprites/spritesmith/gear/events/mystery_202001/shop_set_mystery_202001.png b/website/raw_sprites/spritesmith/gear/events/mystery_202001/shop_set_mystery_202001.png new file mode 100644 index 0000000000000000000000000000000000000000..4a2fab748d7ff6f9e5a0eb2a3c23eb1fa49daf4c GIT binary patch literal 1448 zcmV;Z1y}lsP)aPz>%0ii@fX zYZr=`g&+YJ3c4wng@~J?C=p{7OF&|iXgk#=9cxmWW|H|x+VWi7cgEb?_hvFpX6nE_ zn@QfsxtIC>-v6BQ25i`{VZ(-vii?5iTh74rEvHiQO59_mD^mo6K_?gtI+c>w65miluAwMso zDJrCh;&OgDJMVd)9~r-Au^v*<9%6dQJ8|U|uf=NgD$>!dW|Pw++VNw(J?f83v-%7( z@rRaYy}iQ{Qf@-1jX40@V~+uFdE%6}vb*=`{m8kW0{QY>jQ^mHFUBn)6-`K_agPI# z%FeBiqAn?sPy+y|t7k1C72SsvB4bDQlX+*E$`Yes7A);FZ2WO?$Dr?cPg0%;Hzh!&P$>nxw7BEL%pnq3`=USw?Ayv>u0kDu6^*UKy+rS4R#Lv;Xrcl0Gs#b;)xH8T7nRDGW! z#QonS!z5Gkg(Fcd&xs=^)w=&o*iQAX5MtK(g?aS`?Baz{0JgVxyJwUaw0Gg}~ejTcW*{KRCP0h+1!r|Igc}G=MP*d2i!xiN_9_rDmlk`2Av?A@zU&iw8 zckobe-kHV{Qiu?fjN@Hxtn5%*qhU<}QA9|Qsv}+@)k8wOL#mQ^PsaVdMf#QVlV==& z4I8%t(Ad=CNthoQ=1gREzJ8=wLW-Ss&1bpa=uo8}k*d?$)(Jo?wg-TC{H#Wb5FiAJ z7f7{{YIObDrM%Z?vMFud-JOpEu;BomOQaarswI za^$=aBG*a&OeW-t336Wg3GoQnx~lceJjvuWMNlf~ zd0k!o4b4;Rv|BDhL=m$OFg;{p!BwiRK~r?CA$esVLYh<&@f36VwS<)0L*$K^5FpiH zDXV-vwK%W650R-?lr`ULNQmMstzFuEqP*la$!Kierm9IzL?cPAms!UWQYu2EZZGBD zk?PeU8r`V=aFvxeWQD4Tsa&q3G^&T6XXN?|$!Cxx`Gs6N%aqGQBt(ha*c=FW_8XbB zw`YiQ@|mj^X?>=Ve12s3d4*gj`K^bPybt;B8FcjOfTpAj z6zd(9khQ)sD-?de)D^4H-CoBMV#9_F8#Zi|E&c^hP_nLX2VRN*0000uJ@VVD_UC<6{NG_fI~0ue<-1QkJoA_k0xBC#Thg@9ne9*`iQ#9$Or zQF$}6R&?d%y_c8YA7_1QpS|}zXYYO1x&V;8{kgn!SPFnNo`4_X6{c}T{8k*B#$jdxfFg<9uYy1K45IaYvHg`_dOZM)Sy63ve6hvv z1)yUy0P^?0*fb9UASvow`@mQCp^4`uNg&9uGcn1|&Nk+9SjOUl{-OWr@Hh0;_l(8q z{wNRKos+;6rV8ldy0Owz(}jF`W(JeRp&R{qi2rfmU!TJ;gp(Kmm5I1s5m_f-n#TRsj}B0%?E`vOzxB2#P=n*a3EfYETOrKoe*ICqM@{4K9Go;5xVgZi5G4 z1dM~{UdP6d+Yd3o?MrAqM0Kc|iV92owdyL5UC#5<>aVCa44|hpM4E zs0sQWIt5*Tu0n&*J!lk~f_{hI!w5`*sjxDv4V%CW*ah~3!{C*0BD@;TgA3v9a1~q+ zAA{TB3-ERLHar49hi4Ih5D^-ph8Q6X#0?2VqLBoIkE}zAkxHZUgRb+f=nat zP#6>iMMoK->`~sRLq)(kHo*Vn{;LcG6+edD1=7D>9j^O?D{Qg|tCDK{ym)H7&wDr6*;uGTJg8GHjVbnL{!cWyUB7MT6o-VNo_w8Yq`2<5Ub)hw4L3rj}5@qxMs0 zWMyP6Wy582WNT#4$d1qunl{acmP#w5ouJ*Jy_Zv#bCKi7ZIf$}8d zZdVy&)LYdbX%I9R8VMQ|8r>Q*nyQ)sn)#Z|n)kKvS`4iu ztvy=3T65Yu+7a4Yv^%sXb>ww?bn(=Yu(!=O6^iuTp>)p_Y^{w=i z^lS773}6Fm1Fpe-gF!>Ip{*g$u-szvGhed;vo5pW&GpS$<~8QGEXWp~7V9lKEnZq0SaK{6Sl+dwSOr*Z zvFf(^Xl-N7w{EeXveC4Ov)N}e%%C!Y7^RFWwrE>d+x51mZQt2h+X?JW*!^a2WS?Sx z)P8cQ&Qi|OhNWW;>JChYI)@QQx?`Nj^#uJBl~d&PK+RZLOLos~K(b5>qmrMN0})tOkySZ3_W zICNY@+|jrX%s^&6b2i>5eqa0y%Z;^%^_=a@u3%4b9605ii3Ep)@`TAmhs0fpQ%O!q zl}XcFH*PieWwLj2ZSq`7V9Mc?h17`D)-+sNT-qs~3@?S(ldh7UlRlVXkWrK|vf6I- z?$tAVKYn8-l({mqQ$Q8{O!WzMg`0(=S&msXS#Pt$vrpzo=kRj+a`kh!z=6$;c zwT88(J6|n-WB%w`m$h~4pmp)YIh_ z3ETV2tjiAU!0h1dxU-n=E9e!)6|Z;4?!H=SSy{V>ut&IOq{_dl zbFb#!9eY1iCsp6Bajj|Hr?hX|zPbJE{X++w546-O*Ot`2Kgd0Jx6Z4syT zu9enWavU5N9)I?I-1m1*_?_rJ$vD~agVqoG+9++s?NEDe`%Fht$4F;X=in*dQ{7$m zU2Q)a|9JSc+Uc4zvS-T963!N$T{xF_ZuWe}`RNOZ7sk3{yB}PPym+f8xTpV;-=!;; zJuhGEb?H5K#o@~7t9DmUU1MD9xNd#Dz0azz?I)|B+WM{g+Xrk0I&awC=o(x)cy`EX z=)z6+o0o6-+`4{y+3mqQ%kSJBju{@g%f35#FZJHb`&swrA8dGtepviS>QUumrN{L@ z>;2q1Vm)$Z)P1z?N$8UYW2~{~zhwUMVZ87u`Dx{Z>O|9|`Q+&->FRy-Sjp7DHs zy69KwU-!MxeeuI@&cF4|M9z%AfP?@5 z`Tzg`fam}Kbua(`>RI+y?e7jT@qQ9J+u00v@9M??Vs0RI60puMM)00009a7bBm z000XU000XU0RWnu7ytkO2XskIMF-;y3llL8ad4gx0005(NklR$8fKjR(m@AV|om*(Qe{#+51Rbr0#BIF|@GQ z@%N{r*=VApE21NpeUimOJ}-5tRFryoCDOLNpreTncjt19(}Z{ASP6r}d8RoeDn z7&@BhVCryebOZvIvKT*$su-E>RWb7NtD>g;Pm>P%+6rTaoh6CFf{V-G3DtYI4wIz2ApyHWk{LUa%vaAkD-dj&cfQ}-BN zOC3@|!6T_t4_mf}mqcJl>dl{G)AxvuCOU|Yj!zeQEZmF^NF5%r)L$kq)bn-jIY zHI00~tIs+8YWg%nM-v@HN892;zxMP`g{3~Q{I-V_eR8N5BZj%5p8vd&+A3FV<7Fvw zEOjIIA#^m+L3DH^MocrUk{~(P(%)^G>6-RkOdUiA0000000000000000000000000 f0000005sqa$(wwQj)Kn700000NkvXXu0mjfB~(1D literal 0 HcmV?d00001 diff --git a/website/raw_sprites/spritesmith/gear/events/winter/shop/shop_head_special_nye2019.png b/website/raw_sprites/spritesmith/gear/events/winter/shop/shop_head_special_nye2019.png new file mode 100644 index 0000000000000000000000000000000000000000..26f4f18dfeb8af812a44dddc796e191bcc284a42 GIT binary patch literal 543 zcmeAS@N?(olHy`uVBq!ia0vp^E+EXo1|%(nCvO5$Y)RhkAVF>hmQU3a+JP+20*}aI zpnxz4GcwGYBLNg-FY)wsWq-`WE~F~(?&!jm3=E8GJY5_^DsH{KX6x;gDAE3LwYZj6 zR)?5kM@|o0rjV7OpQFGHp}iJdTeo~+{KcTFt9nsj@5L)BCZ0qjbjt9--~#3}?>iTh!T!K04-P z^wOQ7=%x-stCL*A(x(BZ&#!cPRbm}^tT5%gY3d4r>E{HZ4f8Cfa}_?;Exu;V)v!IE zg`xhVr?Ja+o)1-)3FkKugQ%0;$IeA7Kx4?N$^pim`cw$!I=X3)HP zAH`tR+*NPGI%dl9rB%GW5GZ@$NIf_!&L!DaEM1Y*T&pM_c|FEemkyzTek9S+pnMv z*Uozopr0CTz6Qvd(} literal 0 HcmV?d00001 diff --git a/website/raw_sprites/spritesmith/npcs/npc_bailey.png b/website/raw_sprites/spritesmith/npcs/npc_bailey.png index db86596503f37fb1e6c46c161d98bdf00af70984..d7659dfebee313b31d90938620269649e670c13c 100644 GIT binary patch delta 1099 zcmV-R1ho6N9K#)u7Ybbn1^@s6?sk<#u_1K|f8Pup69OCV4A5Qx00aw3L_t(|+U=Zw zNK;W1$KPry#+n7G&D7P*s69;7ed)rVbQ-7iv$VacFaiD4`fqC_+m}Oq4JzM@EL3FUvAR z)M~Y=Xvb(_Ge8k4-a&H#i`xeVQ2Z=awbESSM<@ofsRC6iLdAnNm-rEiA)BBxGcy@} zIYTeJB1)=A3kx8M5WmRIGX4V%cT3+mf0@61;3CzEw6NJ$#WQWoK-0u z=Id$4=24^Ri)ppm`Bf`ICA3tOviOOOdFXiO+aWaG64A%}lCtBoT2GQHD*kV5ubpd~ zMu6Pw$*tUpN zG58?4Zj_f4Ne{7oJ4N{CR#AjW66bJbD3*kx zVrs>lXkNdy4r{!s-{_J1Xne`FLNvbqSiR(JE{I?IlZRdxL#i0mC>o7MH-;HR1-3A- zt?(r&i}3U1o^U)J=7dzOm^-|g`CA&Y(F^kAc#g`3bmkYO#-ih!x7u`@u$ z!vLbya=2fL2MyMZ4yQ-cLpv6l2|6h$34M5+r5QzA3|RY>xp?xuf3Ar^6Lh-CgyPrk z!jbb=2?<5TpeQm?4VjjmjE;v%8P=0s&prgaCL|OUnV@~a57viJ32XYf`t1w<#{4_{ zA;~}JHluUV_Z3MMCGj&~olb`$2kSslmn|A&(ev8U;czft^dOIREMyb3=)GnUq8{xJ zKnso$AqS0Akx=xpHCD`D!w-BO_4@Z}jObdb6=`A9`0o%isq5%HXj+)q{sKexzb_jT R<_G`)002ovPDHLkV1nTX31R>M delta 958 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 abcRzDT+>DUMrN&3^a0c~&?r`W67+wB7D=4| delta 3456 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 literal 0 HcmV?d00001 diff --git a/website/server/controllers/api-v3/news.js b/website/server/controllers/api-v3/news.js index 9ac39b52c5..3340a62122 100644 --- a/website/server/controllers/api-v3/news.js +++ b/website/server/controllers/api-v3/news.js @@ -4,7 +4,7 @@ const api = {}; // @TODO export this const, cannot export it from here because only routes are exported from // controllers -const LAST_ANNOUNCEMENT_TITLE = 'HABITICA BLOG POSTS: NEW GUILDS AND USING HABITICA’S SOCIAL SPACES'; +const LAST_ANNOUNCEMENT_TITLE = 'DECEMBER LAST CHANCE, SNOWBALLS, NEW YEAR’S RESOLUTION BLOG POST, AND NEW YEAR’S HAT AND CARDS!'; const worldDmg = { // @TODO bailey: false, }; @@ -31,38 +31,54 @@ api.getNews = {

${res.t('newStuff')}

-

12/19/2019 - ${LAST_ANNOUNCEMENT_TITLE}

+

12/31/2019 - ${LAST_ANNOUNCEMENT_TITLE}


-
-

Monthly Guild Spotlight

+
+

Party Hats

- There's a new Guild Spotlight on the blog that highlights yet another selection of - the upcoming Guilds in Habitica dedicated to a variety of topics! Check it out now to - find some of Habitica's best new communities. + In honor of the new year, some free Party Hats are available in your Rewards! Each year + you celebrate New Year's with Habitica, you unlock a new hat. Enjoy, and stay tuned for + the matching robes in late January during our annual Habitica Birthday Bash!

-
by shanaqui
-
-

Use Case Spotlight: Habitica's Social Spaces

+
by Lemoness and SabreCat
+
+

New Year's Cards

- This month's - Use Case Spotlight is about Using Habitica's Social Spaces for Motivation! It - features a number of great suggestions submitted by Habiticans in the Use Case Spotlights Guild. We - hope it helps any of you who might be looking for support and camaraderie as you pursue your goals. + Until January 1st only, the Market is stocking New Year's + Cards! Now you can send cards to your friends (and yourself) to wish them a Happy Habit + New Year. All senders and recipients will receive the Auld Acquaintance badge!

+
by Lemoness and SabreCat
+

Blog Post: Jumpstart your 2020 Resolution with Habitica!

- Plus, we're collecting user submissions for the next spotlight! How do you customize - Habitica to add extra excitement and motivation? We’ll be featuring player-submitted - examples in Use Case Spotlights on the Habitica Blog next month, so post your suggestions - in the Use Case Spotlight Guild now. We look forward to learning more about how you use - Habitica to improve your life and get things done! + Do you have a special resolution or goal for the coming year? Check out a new post on the + Habitica Blog with our best tips and resources to + help you make and keep your 2020 resolution!

-
by shanaqui
+
by Beffymaroo
+
+

Snowballs!

+

+ The Seasonal Shop is also stocking Snowballs for Gold! + Throw them at your friends to have an exciting effect. If you get hit with a snowball, + you earn the Annoying Friends badge. The results of being hit with a Snowball will last + until the end of your day, but you can also reverse them early by buying Salt from the + Rewards column. Snowballs are available until January 31st. +

+
by Shaner and Lemoness
+
+

Last Chance for Polar Pixie Set

+

+ Reminder: the 31st is the final day to + subscribe and receive the Polar Pixie item set! Subscribers also get a cute Jackalope + pet, and the ability to buy Gems with Gold. The longer your subscription, the more Gems + you can get! +

+

Thanks so much for your support! You help keep Habitica running.

+
by Beffymaroo
`, }); diff --git a/website/server/models/user/hooks.js b/website/server/models/user/hooks.js index 4c43b91d69..d8b71984f7 100644 --- a/website/server/models/user/hooks.js +++ b/website/server/models/user/hooks.js @@ -131,6 +131,8 @@ function _setUpNewUser (user) { user.items.quests.dustbunnies = 1; user.purchased.background.violet = true; user.preferences.background = 'violet'; + user.items.gear.owned.head_special_nye = true; + user.items.gear.equipped.head = 'head_special_nye'; user.markModified('items');