From 48a92e77be14de0787362ab289fa8f918f7cbd2b Mon Sep 17 00:00:00 2001 From: Sabe Jones Date: Tue, 24 Jul 2018 14:59:49 -0500 Subject: [PATCH] feat(content): July Subscriber Items and Summer Splash Orcas --- migrations/users/mystery-items.js | 4 +- migrations/users/summer-splash-orcas.js | 99 ++++++++++++++++++ website/common/locales/en/gear.json | 4 + .../script/content/gear/sets/mystery.js | 12 +++ website/common/script/content/mystery-sets.js | 4 + .../broad_armor_mystery_201807.png | Bin 0 -> 947 bytes .../mystery_201807/head_mystery_201807.png | Bin 0 -> 875 bytes .../shop_armor_mystery_201807.png | Bin 0 -> 841 bytes .../shop_head_mystery_201807.png | Bin 0 -> 776 bytes .../shop_set_mystery_201807.png | Bin 0 -> 1331 bytes .../slim_armor_mystery_201807.png | Bin 0 -> 965 bytes .../promo_mystery_201806.png | Bin 1882 -> 0 bytes .../promo_mystery_201807.png | Bin 0 -> 1703 bytes .../spritesmith_large/promo_orcas.png | Bin 0 -> 14287 bytes website/server/controllers/api-v3/news.js | 21 ++-- 15 files changed, 132 insertions(+), 12 deletions(-) create mode 100644 migrations/users/summer-splash-orcas.js create mode 100644 website/raw_sprites/spritesmith/gear/events/mystery_201807/broad_armor_mystery_201807.png create mode 100644 website/raw_sprites/spritesmith/gear/events/mystery_201807/head_mystery_201807.png create mode 100644 website/raw_sprites/spritesmith/gear/events/mystery_201807/shop_armor_mystery_201807.png create mode 100644 website/raw_sprites/spritesmith/gear/events/mystery_201807/shop_head_mystery_201807.png create mode 100644 website/raw_sprites/spritesmith/gear/events/mystery_201807/shop_set_mystery_201807.png create mode 100644 website/raw_sprites/spritesmith/gear/events/mystery_201807/slim_armor_mystery_201807.png delete mode 100644 website/raw_sprites/spritesmith_large/promo_mystery_201806.png create mode 100644 website/raw_sprites/spritesmith_large/promo_mystery_201807.png create mode 100644 website/raw_sprites/spritesmith_large/promo_orcas.png diff --git a/migrations/users/mystery-items.js b/migrations/users/mystery-items.js index b1e0b818e6..d03cd8ceec 100644 --- a/migrations/users/mystery-items.js +++ b/migrations/users/mystery-items.js @@ -1,14 +1,14 @@ import monk from 'monk'; import nconf from 'nconf'; -const migrationName = 'mystery-items-201806.js'; // Update per month +const migrationName = 'mystery-items-201807.js'; // Update per month const authorName = 'Sabe'; // in case script author needs to know when their ... const authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; // ... own data is done /* * Award this month's mystery items to subscribers */ -const MYSTERY_ITEMS = ['armor_mystery_201806', 'head_mystery_201806']; +const MYSTERY_ITEMS = ['armor_mystery_201807', 'head_mystery_201807']; const CONNECTION_STRING = nconf.get('MIGRATION_CONNECT_STRING'); let dbUsers = monk(CONNECTION_STRING).get('users', { castIds: false }); diff --git a/migrations/users/summer-splash-orcas.js b/migrations/users/summer-splash-orcas.js new file mode 100644 index 0000000000..58373fe147 --- /dev/null +++ b/migrations/users/summer-splash-orcas.js @@ -0,0 +1,99 @@ +let migrationName = '20180724_summer-splash-orcas.js'; // Update per month +let authorName = 'Sabe'; // in case script author needs to know when their ... +let authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; // ... own data is done + +/* + * Award ladder items to participants in this year's Summer Splash festivities + */ + +import monk from 'monk'; +import nconf from 'nconf'; +const CONNECTION_STRING = nconf.get('MIGRATION_CONNECT_STRING'); +let dbUsers = monk(CONNECTION_STRING).get('users', { castIds: false }); + +function processUsers (lastId) { + // specify a query to limit the affected users (empty for all users): + let query = { + migration: {$ne: migrationName}, + 'auth.timestamps.loggedin': {$gt: new Date('2018-07-01')}, // rerun without date restriction after initial run + }; + + if (lastId) { + query._id = { + $gt: lastId, + }; + } + + dbUsers.find(query, { + sort: {_id: 1}, + limit: 250, + fields: [ + 'items.mounts', + ], // specify fields we are interested in to limit retrieved data (empty if we're not reading data): + }) + .then(updateUsers) + .catch((err) => { + console.log(err); + return exiting(1, `ERROR! ${ err}`); + }); +} + +let progressCount = 1000; +let count = 0; + +function updateUsers (users) { + if (!users || users.length === 0) { + console.warn('All appropriate users found and modified.'); + displayData(); + return; + } + + let userPromises = users.map(updateUser); + let lastUser = users[users.length - 1]; + + return Promise.all(userPromises) + .then(() => { + processUsers(lastUser._id); + }); +} + +function updateUser (user) { + count++; + + let set = {}; + + if (user && user.items && user.items.pets && typeof user.items.pets['Orca-Base'] !== 'undefined') { + set = {migration: migrationName}; + } else if (user && user.items && user.items.mounts && typeof user.items.mounts['Orca-Base'] !== 'undefined') { + set = {migration: migrationName, 'items.pets.Orca-Base': 5}; + } else { + set = {migration: migrationName, 'items.mounts.Orca-Base': true}; + } + + dbUsers.update({_id: user._id}, {$set: set}); + + if (count % progressCount === 0) console.warn(`${count } ${ user._id}`); + if (user._id === authorUuid) console.warn(`${authorName } processed`); +} + +function displayData () { + console.warn(`\n${ count } users processed\n`); + return exiting(0); +} + +function exiting (code, msg) { + code = code || 0; // 0 = success + if (code && !msg) { + msg = 'ERROR!'; + } + if (msg) { + if (code) { + console.error(msg); + } else { + console.log(msg); + } + } + process.exit(code); +} + +module.exports = processUsers; diff --git a/website/common/locales/en/gear.json b/website/common/locales/en/gear.json index c5c040eaf5..cce33a6f68 100644 --- a/website/common/locales/en/gear.json +++ b/website/common/locales/en/gear.json @@ -713,6 +713,8 @@ "armorMystery201802Notes": "This shiny armor reflects your strength of heart and infuses it into any Habiticans nearby who may need encouragement! Confers no benefit. February 2018 Subscriber Item.", "armorMystery201806Text": "Alluring Anglerfish Tail", "armorMystery201806Notes": "This sinuous tail features glowing spots to light your way through the deep. Confers no benefit. June 2018 Subscriber Item.", + "armorMystery201807Text": "Sea Serpent Tail", + "armorMystery201807Notes": "This powerful tail will propel you through the sea at incredible speeds! Confers no benefit. July 2018 Subscriber Item.", "armorMystery301404Text": "Steampunk Suit", "armorMystery301404Notes": "Dapper and dashing, wot! Confers no benefit. February 3015 Subscriber Item.", "armorMystery301703Text": "Steampunk Peacock Gown", @@ -1148,6 +1150,8 @@ "headMystery201805Notes": "This helm will make you the proudest and prettiest (possibly also the loudest) bird in town. Confers no benefit. May 2018 Subscriber Item.", "headMystery201806Text": "Alluring Anglerfish Helm", "headMystery201806Notes": "The mesmerizing light atop this helm will call all the creatures of the sea to your side. We urge you to use your glowy powers of attraction for good! Confers no benefit. June 2018 Subscriber Item.", + "headMystery201807Text": "Sea Serpent Helm", + "headMystery201807Notes": "The strong scales on this helm will protect you from any manner of oceanic foe. Confers no benefit. July 2018 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", diff --git a/website/common/script/content/gear/sets/mystery.js b/website/common/script/content/gear/sets/mystery.js index 7f4d6b2a47..f4fb51452e 100644 --- a/website/common/script/content/gear/sets/mystery.js +++ b/website/common/script/content/gear/sets/mystery.js @@ -199,6 +199,12 @@ let armor = { mystery: '201806', value: 0, }, + 201807: { + text: t('armorMystery201807Text'), + notes: t('armorMystery201807Notes'), + mystery: '201807', + value: 0, + }, 301404: { text: t('armorMystery301404Text'), notes: t('armorMystery301404Notes'), @@ -595,6 +601,12 @@ let head = { mystery: '201806', value: 0, }, + 201807: { + text: t('headMystery201807Text'), + notes: t('headMystery201807Notes'), + mystery: '201807', + value: 0, + }, 301404: { text: t('headMystery301404Text'), notes: t('headMystery301404Notes'), diff --git a/website/common/script/content/mystery-sets.js b/website/common/script/content/mystery-sets.js index b7b294f7b3..b5105b04be 100644 --- a/website/common/script/content/mystery-sets.js +++ b/website/common/script/content/mystery-sets.js @@ -214,6 +214,10 @@ let mysterySets = { start: '2018-06-21', end: '2018-07-02', }, + 201807: { + start: '2018-07-24', + end: '2018-08-02', + }, 301404: { start: '3014-03-24', end: '3014-04-02', diff --git a/website/raw_sprites/spritesmith/gear/events/mystery_201807/broad_armor_mystery_201807.png b/website/raw_sprites/spritesmith/gear/events/mystery_201807/broad_armor_mystery_201807.png new file mode 100644 index 0000000000000000000000000000000000000000..1961ae82f524c81c5e6a00063f880985c30bedc6 GIT binary patch literal 947 zcmeAS@N?(olHy`uVBq!ia0vp^ML=A^!3HGt+?GiLDYhhUcNd2LAh=-f^2tCE&H|6f zVg?3oVGw3ym^DWND9B#o>Fdh=h+R-n%FDrF{I+w+dJMKA%!Bx3zrL- zGYdK?2`_xAl>2as55H%0sE^~q*%K68wS=^sGSZhQ1V(dKDJZ)s+Gc2U`E*}eX>cTM z$tLzxfti6B`l3e?Zq2P0`+xds&K2ug`_+e^o-1wJ|NQvQ|2uuWKt3P@3fTLj?`32y zP{^~gyLk6;;o+~sxpMzcpKNSZi4xAAs2~35-L>O+mU6ZC)xWNKW3!Um_MT?#yyG7y z?zn8aU6<42Z|;Mo?R_lVohq}U)P*;1yurRw+RM!2uXSq3t5*dfS^Mi(u6{hFPbJE6 z%ejIldU9_jRi%_fyxKTt?Yh1It4SHH(mEc?_%Dm(%{_AEmX~`|D@(9;u(qt{mZp`Z zVskC)U0-e9-R!eALD6xG-@LkjRsSw!TCUrFOiH3AZ%)+l`bfiQ`OIm*KAh9qxhz_4 z$0FsV%L?1eqYblxutEp zqJH>q(0`en@;}j5TFwh6$gE$p#>8!f-SU#-dR9U@Di>cJGmn+IlhSkTmDBvt_V+72 zudY|STJ(6ys>fRvZw^0~nQ5u|_4~rYmDTZkCRx=#ve_wR%bj@y(;SVNA6=5SHFm4rC0hj8v6NP ziT=9vwYaP~uh8E2UhYC`6{7wp1-*UM;ZeKp(5>?}m+G!pJg&d`Y*yLt6~Rj%ha7+Z zZ`IyoKbAr~*fP&7|C))H%Ddp_GPft`m)@P*@!0h1l3&WU*9(OctS-OtdAIx0L>KLj zYnf5oH+sD4Ia9Jy{Fj~g-sL;PULE@s)%kQ;`}C(jUSFGF==WA>`bP0l+XkK D4qc_T literal 0 HcmV?d00001 diff --git a/website/raw_sprites/spritesmith/gear/events/mystery_201807/head_mystery_201807.png b/website/raw_sprites/spritesmith/gear/events/mystery_201807/head_mystery_201807.png new file mode 100644 index 0000000000000000000000000000000000000000..04a73e4f53de12a30158ce6171b7895983a79648 GIT binary patch literal 875 zcmeAS@N?(olHy`uVBq!ia0vp^ML=A^!3HGt+?GiLDYhhUcNd2LAh=-f^2tCE&H|6f zVg?3oVGw3ym^DWND9B#o>Fdh=h+R-nS|DY|yDA0-rXQXzjv*Dd-rjcfn4Bnc{9}1w z`w{1L$pUMHYIBAAbCL^Z(b6KQ-UpTrC7T01UoznMOJK z9^X~>KUaLd9d}@KsoBTfd+ZD*zCQBIO=D5&aXI10H{}q0353kCpZ8A0q zSsq@wi!bIc+rQz9<&iEH;ZC;hYbVyNUv^jiX56nsho>CLIkbJoRg1lfrWv{0mp(fr zq%Gv5BBd8~_lM->t4B0JynmN7&ZgweEVHpoxmCSAw>0PCa>Hn`sSh`l{+U{H@7DU{ zSJ^wS9s`=qS>8BTaMxR*)9Wgy8os@|@$$0Thj)rE`}y(B`u5~;jISwA$#I|R6ouSd z*N^qj`sVb`Pjedo@wJb6zN^aY=hKdu=%U?mEmUw;{an+(-^J=fYA)M`Ys~s~eE$A5 z*KKzE*|cm%Y4_#H)B7UUUzg3P_MZGzYVY&~O4CI>wqH!%X;r=P%CvtQZ|=T!cV*S~A1AlCFJAtp_1>POx9{HH%fD6iZdKu`?aJzU(>iOedXI51myLhu`Px%#E4lgII&15wn_HVYT>{vdeoegg#pjyT@~86;J-_xRD(;QSRzp{OjPg&!!NK{%Y%G7W6esS$%EB7V7pJ;skOXoa?I)|v{Ys=VKtMse-PZzzn zQDjh?#LOrk^0_T`eWd8-dDm=zWSrWwt}f+S*zD`OQ^Qm)axJ?0JmOz?;IpGM)_539 fge5S-H19Kh!86ha{pOxg1S$4(^>bP0l+XkK<1>-F literal 0 HcmV?d00001 diff --git a/website/raw_sprites/spritesmith/gear/events/mystery_201807/shop_armor_mystery_201807.png b/website/raw_sprites/spritesmith/gear/events/mystery_201807/shop_armor_mystery_201807.png new file mode 100644 index 0000000000000000000000000000000000000000..5f82349d010da6fc6bcc89331daf187d0f824213 GIT binary patch literal 841 zcmV-P1GfB$P)kEn0@g`H zK~#9!?U`FhlVKc(pHW37Md>OGu_>h;D1*q1LOZD-245HZUhw_;Y-R1B{-2w%_dCJ%@caMX4Fo|D z1VIo4K@bE%5M~#SSlu|qlV?nPKi<*li0AcFWsW!zV?!3WvJHS6?>Ybozv%^FWo8Zl z`3~oApZU-jHteq3y4VB2=l*97F=QrW$YiE;b-e|ku4p{~KNta^G7tv9?Ou`)GsKX1 z8xqZ!g#+yX437)}Fq*X`Ax4NHQJ5F+2Q~zPlVnIRDLxP}L^4DSN$w0eb@mbfr+0ZJ zL&T5?yVlwZC$*;9Kk!t`kg@L(Q))wv036&=Zp3q!D~2RGL)vaW0wC4t1i+Q9_mI>l zVeLHU`_ag>kqnvPhNy44(7VRWkS^N{al11BsM>$nwuh`La2f!QL&LV~3hQw(Bv}nn z(`8dxv1W#vCX3QD0XQD$1K`_0i|u`s0e-(90H4pN8KKsTx9^k;nU)z+=-sFpQkm~E zo9P`hJKSb=lxo?b%xG=v2B4|w1OQ(K#{lT=c@9ACisbJ5Os z=K7J%xd7DM3fW$#vg2!7w(WHJ(@go-J|c$1yQ!|-P+;y|(g2w6`T)T0#%ciSOREil zhWi%*coFn#W>}3WDXGvJszRD-jEMQ~mFoYPyZ34UcrZ7^_Pmcng8;Z*HrpPzPLKa( zgcy=&LljGMQjCea)Yq>%wP|6^1S_#JLJUb3L#(DG$^bD$5ClOG1VIo4VHWTcWz|28 TtPLk200000NkvXXu0mjfNA+%p literal 0 HcmV?d00001 diff --git a/website/raw_sprites/spritesmith/gear/events/mystery_201807/shop_head_mystery_201807.png b/website/raw_sprites/spritesmith/gear/events/mystery_201807/shop_head_mystery_201807.png new file mode 100644 index 0000000000000000000000000000000000000000..bda8f137a99d53cc522a59a656130e8e84fb2aa1 GIT binary patch literal 776 zcmV+j1NZ!iP)NH1_s*jlDhI{~BkDme6Hur3Q*Lw|W2*$!h?N4Q4%n^*3)DDmme8 z2M>4v2|v!o&Tk$-Zsl`>45?>BT6TX0;AG3re8c0UZ^}qTOffTV`QuugyMEl)EXH-JY{?f^lR>l?k1@ zgL{0V{Z$%(J+adOTsZd}fW%ZBfT^dMlH(5d#Q+!|P62TJ=1~BaGWYT(9UgM}j}4Ac ziEJiA!Wv>mWM5AM@L>5z!P9>sw+6t+pTC^;M^|2!G$m-piOWZv-|Z~vh%`FwHjl8z z$dIsE#{Ti{t~L+g%t+iXRYyyjvAFo9;EET+`q^{s?Yjz&Yo^$lHJMEL^IUDv8B)tS zWMMwP0+Xbiy29#@hcA|#{xfGU>?xebudm`}RBah?!yY zQkJQgIwW`>^6bO3v)65h5aO8B$kS#wym?xoO9YKkpcsvc~z_y>D?Wt{ECVG!W{BPKJav z#LQ^=zE;o-%M$&5-HGqbk+)7n;0ZHTf0e~cClR>)ukVWqYt z8AMpH)oeqtMr*i=qNPUOEoCaYiDnt4P_9McozIX^E4q<6L7ysOvhvI+_ug=KwS|zY4(G6>$e( z{LtZ$pA()|u*d;uQsb;EJmUb241F82ganz8yg5GuurhC^+weiNBBjb7YC<|X-U6Vist$m=Z@ivMBP^s$5RjXz-9H|WYv1KQ z>Bk($5;Da~Id_}S_(Xeu2LN}JRRi!s{T=|C+G_x4@9s(3@0yA-02-2q)NMf?TT9b$Yz$1R0$Cx;s-kc*naw~r~4lnIS;_`a~HJs_c!iKN{UIw6EEGb z{Vraza7K>SF7rs07)wa1Sw{Zx;-Y*9;F;PQRjSq{C1Y^#C(no{l3XYEMWeTQ_A8`_ zXSFo9s(FrvtcPT>4mr~2MxcdOt*(&zW5?c;+Vx$}zUY3c?~Q%iG|vzXoIasev8(g} z-+V={gew+k^@xxm^RihcD0PUrAM(+$PVHHjNSpf=6ZIzQNHz%KxG+;T&%ZK zBjevShD%87U`)#%3-abW082yRP_k!#zccC>_W|(8tp(aRGOiGsyLfp@J9L(iR0$C> zmliqCB&~vHC452{}6z;SC$(d(v#6Y#1fJzLZrfNRPS$OuXJem zxaJ`j{~FUOP`^$OSVFSJLwY|y0KoKc7=Xwuy$+dvY(TqC)+Qs?L;mN4NTiF(?^PZ$ z=;X7Co7_Ar4}i_xrvUhKc(-Ri zLO@%a`}V)Ox>_Sb+AAM>(t1c%dPq@uiAG5M(uk@|zf|54Ro0FHk1 z9RT@v-3h>{6XSM2B&!IK>>^}rsdyBC=ej>pp7Hyn$XHx(pCY49Yqxbswh{8*wToVN zh<0t-;aP8pN0_>O?jnth*Baf=ogcsFnSCZ(k61#|MTmGuf2uKIm%4B1H+<3Od7pU4A2a89W|u4Vl&h^r zEFqbyRF@PNs6SFLvd+P`*B6Ud2WA;Tm_&V@*YDzcTT&r187 zyRY_c0ASy>vpui-E$*I3j(oq%^LI0Qq)LP(Bq)T4=FFewT)ImA@rT1&wlF=xl;1>H pLV`w!NlLm2u!LAySy`n~{{Y)WOa;$p)1CkT002ovPDHLkV1k`_cS!&M literal 0 HcmV?d00001 diff --git a/website/raw_sprites/spritesmith/gear/events/mystery_201807/slim_armor_mystery_201807.png b/website/raw_sprites/spritesmith/gear/events/mystery_201807/slim_armor_mystery_201807.png new file mode 100644 index 0000000000000000000000000000000000000000..f43df8cfe06a6e7e392ebff25f8ee87cde3e7d67 GIT binary patch literal 965 zcmeAS@N?(olHy`uVBq!ia0vp^ML=A^!3HGt+?GiLDYhhUcNd2LAh=-f^2tCE&H|6f zVg?3oVGw3ym^DWND9B#o>Fdh=h+R-nN@;6J-);s5<{(cO$B>F!Z|`_}gd|EFD_ncz ztV7F$6D}D$J)$jC%an7k9&K_GbZRm=>9K-iVQaz?mB?uBT_h(QbZz2 zYig`U^NAj(-76K?wpKrH-FNunnTy8%>Q}cPE)3egul;+Cv4kKa(0;For==_8GdBKlcf0el>YREPf|HgPTH>HG5OEd@2pq3#DpG3tqn7s zUHoZ9%>AibJwN@~7k0AQnR!yXu(|iTk3Utfzqfz0!z$H1XzhY1=a|jOGo$9lEq~*& zN;D+9gP-e|(N?RE2j|OrZau{LtmQI)@v}#!C)3N*qI}lYm8nE{1gx#UJYQ_Zj-se_ zueWck`aMr_`L&7j56)W4amCAS$6k-P%bN4K62OM5d!BxKeA41ry_4@OK1XJMxy<+Y z`Yt;@c7FC76B85-Kd%bCp5XS(%XDkmEx)yL{(GKWGThU<)#k41>+0V( z9vdcvyf(36xiMjW?wa7g8|0;@EBtI(@BXQOpW5wu@9?G9Ur&9_%F23->+1KE{M!fn zShzib9+-XZL`?pgYmZFdC49RZJb9J7@2bjUo}t$>i@m4c2@Ws!`n3I@;K|tY@m_wB zyIhL=zh|ge3jxFX)d6RQ*yW*-(W>$v?gm_bIsJdoa_viDtF7*)?`fCi6cgfG753Vn zX~y}Gt;dq5_mr-Bsd?qpqaz{7bLG}^JZpPBJ(r(X?f0Fjz~F1j`rGcgb*rVq&zQOo zHlG77$3AYZ-+MGWYVP8`>Fa`H_g8mw^?p4KcCept)vY~|QMyxixZf>KN$z^`$(r%@ z^(&KKeV?In+qt3BXY)dva!8D+XI$M?a&lv#;iTug>^<+rMyu_#TJMv!^V!4Do&Qd~ zH@&tp^y#x_Z0DoCMu$t~CpWgbNc?%a`Zxcnr@t28{J1UtcjbckO}|SQzx^A=|1~&t zAtd5CbiDc|&AKYzQT2P--5($FOmm}V=82x_TN35C)i3d^)n2We6GOB?$=hd{z0@+x Tea-dU;vlZ4tDnm{r-UW|_yWGE literal 0 HcmV?d00001 diff --git a/website/raw_sprites/spritesmith_large/promo_mystery_201806.png b/website/raw_sprites/spritesmith_large/promo_mystery_201806.png deleted file mode 100644 index 4b6d6a12b7f8079228f6e66983ca0941e99933c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1882 zcmV-g2c`IlP)g$Ew}6000L0Nkl}i5JumN<~|4m|etWfh#LCFU#guZR$TYw=P~%r)z;>Vs1^Bm6E1lPLR|| zDMwL(qe;l6BZq<9?Ju6^S$lu}&OtcW@At2-FYozXczr(S;d$Tp_cItE2=aUxz2PR# z-+nMj)gB#UynrD#7`owCfI)_UYqvr47>#a4KsO>8gA93x{JaFwadv#xXR~fZG6oq! zcI`fhUfynonYeN5mTlzA?^wt;HrywF;M-kBL^6ayhLBx5MYaZY`^(E#?GgXX7M_YE zmoAzq?Y??B+lWYpFvt*a-66@sg)C@Dnfx_Bu0*sv=D4UhL^6ayhJb75qx*ltR3jo8 zgA93zd~zY*xTrX-ZTi#18v?LHzTn)*~!RFV%08LVy(;`X|_ zd-4=?Z5z^##kKq7X99Dab&rT-2!jl{Np}5p@@7KW<|8|)eN^CZ@>w^|Dz9r~#8in> zYR^A(h`hC|Oc&9zeeA>utQu3@<1RhJscQ*}JX2=rJ-_0%*N2(#WF*u+6v_%6%pK5Z)QfaN9 zVct&OG?_4Gx#-Vd6C-S#MbCLU9+3=TkRe|vhTOGPDG_bGZzJC_>M8PP&K^`|$i*K8 zFj)8S|J#fhoAMf#=JHPUU!Lb*LG<2#m09=9>HJmVSNtdWz}_a2`Hv(YY#M}O2!ug~ zJQ3G&>P^bjtFN+u&+a|AC{fQVI@b0-PJU%Uh!V@=->y*}vv7BS?sZCxe>LGY`7dkd zkRRJ8kbF~Xv+_8$#yVxYtEL?h$-p&)Vu+oRm~u3`wzR2tFG@tecO_W-guUfN6Zwd( z+#_suPvtSUKXF&t?(ffql%b|zWY-XI4f#Sb zuvFP!7EJb=5;?mrZz1m~t3eRSz%>M1I|0%5tihJ`@LvxUDQ`#%%i-fkDBI^Q=9M8@ zb!JalYmG<-t|8#M6XodcKiNNaTO#Mb^(9MK>ZD!XQJPFSmT& zwM4YsJ|iWk_I8{|BOf^?fxOnnbJ?DAW*_BO?iq zN4H%P%;W`rGg5e^$MmT$k#B0|J}-W-j(qyZACfP+d5Zkmv;yTd$dx2!vl-bngh7Uo zT|Znm&86g5?n+elsjA`)=A*(#lh4?&k^G=R0|lrV2_-cnIn>cYY5r3 z3o~t*N!ZjYQ<4@V>e z*AQ^+Ldl1zPMW}*#Ov$Z$PXFH_3iS1cpFYYKp*ne)w~_%ddV5`S`SUNXX?`)Iddu# zkqlfz-XM=EhG-%Bg*ERhv*=n|y%Nzf>;7rW=MEJ*v=A+)KD8uwZaxI>oj#R`NCvJU z;M#?1Y~)MN+OdOt+XLQ^-rvNCuB@;r``6XAI&@ySDPAHv^H!PeXOlvQDbbBchA_yG z7vp--`qkur*v!vw8XVL|ptwc1ztLEyd#)#kj3xh9`8D!+$ICfmpUaB?8}9Ql{d@CM z2Qw|DN_2PiqCrG5a18<1F4W=Ac++~neta9^ZMufOef^aETU+_L*5>Qy$ZOTBC88xZ zWpPF#T5GG0d>alT8Nwh#K7#ASb*V}eKgMhH46!Mk@yY^7!4-W(OKBl`enK+!IhvKO zdrUuTIWP7LO;w&t7F!U>5C$1ydDO}fxnOU~q@~o}*2b$lx^?5%2Luk}ZzF3p7e?|g zWRRDO_p~Gt9UuEDwVyiuy+hcS(%QM1o^#O983hnTGH?wcyLO=@TJsGVgu9q2%c#$S zwQrICZTCKbbY5%yNhZHIY*WfS-R&*%xgu4SJf+y!P}3>*b>Uh8A{oLUL*A5K+mm%m zbT>CwknhnWsKf2K`QPY%eLRY~`e}ZMWZ)VCuH78nU6Iuzk|7K-1VIo4L69%&KlH7r UtD&hFA^-pY07*qoM6N<$f;zpBP5=M^ diff --git a/website/raw_sprites/spritesmith_large/promo_mystery_201807.png b/website/raw_sprites/spritesmith_large/promo_mystery_201807.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce6b07fd38a65f3d236bb8f428c0d6610e321be GIT binary patch literal 1703 zcmV;Y23YxtP)arf@MLEKyKxP||g0|OppfN+~H zY$7BgN|cqi;Y}G|Hn&s8ZyY}26_pK&og#ZEfW74=w#j(cx#l2dB;i34A5&}O=vIm6 zM~0ane6j&FyVPTvMV-C_d%(SIhCO$kV@47lB=I@5+VG@id!tikB;i34KUHg4*?SUa zWMoM^;m+G#n)*<)JyaPQs;+;dvr`?%HSxV{dt*it9wf2jwH~3ZO6)PGzD(k=shJY5 z$gY;Spmd4ErIl4~?O{<`s>C^qiX_f2OqRH%s>EnHE<;^s+1#ZrPc^L-+HFQ@k95~u5O7>Ui?#?^U<0EZfVx0)2CNXSLb5|J2_;CItPCjZz-1mn?i=dx{InQ} zvG0mH#ov(`NqCTK2zU{^ul2LWaQI@la|Y~mb=d0#8xK@uNP>*T~>(P>TXakUzJCCBtjJK9XOS+T!M;>Qz0)b&G0 zj8n%uVIAaCShM-0(RE>-seacMq^i~RjHF4dS_u!5c&j0Rm$YhX%T=BByb52X>NK|P z1DNxwL~(I(M#Vc;sC&RU_4W1oniHN^UyFOgJ>!23p;PC0)~=4%4qGhox}4b(Pkec~#MtA- zMgd;N!bY6u{$XU|HUx@NmN2cH{YuUe}d6fg0RBIob01qupS9OXX z_J@Z@O1!r6w8WR&_d328sGgY-_$48jB z@*AjBqoGn=pjN8AdC1|#j_VR1Z~8&vN#h@o`1Gk8e1-twK~k;$*aSeGu1|YJ;+HDF zfa>&*|3#-$W2b>mv(!1vNWz08exz3Wod9}I71@)&P1PxaRj7^o$4pUm`c|HaD?Z=u z*fi+xzAH15Y9&(=J`y)0QR3m@ zVG<9GI4|+yEvqChUa(5ET)N+UaZF29iK$Rmc(+xXHhfK? x%t)%0P_16ntiP+08A-JgLI@#*5JE_Q@(=EIk`Ax%hrR#+002ovPDHLkV1n}ALd^gG literal 0 HcmV?d00001 diff --git a/website/raw_sprites/spritesmith_large/promo_orcas.png b/website/raw_sprites/spritesmith_large/promo_orcas.png new file mode 100644 index 0000000000000000000000000000000000000000..9a116b589c74884bccff3f5d708fdec2dea8b0d2 GIT binary patch literal 14287 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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 0e0bc8593c..aef4ec6855 100644 --- a/website/server/controllers/api-v3/news.js +++ b/website/server/controllers/api-v3/news.js @@ -3,7 +3,7 @@ import { authWithHeaders } from '../../middlewares/auth'; let api = {}; // @TODO export this const, cannot export it from here because only routes are exported from controllers -const LAST_ANNOUNCEMENT_TITLE = 'HABITICA COMIC-CON MEETUP AND WIKI SPOTLIGHT ON THE POMODORO TECHNIQUE'; +const LAST_ANNOUNCEMENT_TITLE = 'ORCAS FOR SUMMER SPLASH AND JULY SUBSCRIBER ITEMS'; const worldDmg = { // @TODO bailey: false, }; @@ -30,26 +30,27 @@ api.getNews = {

${res.t('newStuff')}

-

7/19/2018 - ${LAST_ANNOUNCEMENT_TITLE}

+

7/24/2018 - ${LAST_ANNOUNCEMENT_TITLE}


-

Habitica at San Diego Comic Con!

-

Beffymaroo will be representing Habitica at San Diego Comic Con this year. If you’d like to meet her, along with other fellow Habiticans, join us at the Habitica SDCC Meetup! Beffymaroo will be handing out Habitica stickers, promo codes for the Unconventional Armor set, and other exciting special swag (quantities limited!).

-

You can find the meetup on Saturday, July 21, at the San Diego Bayfront Hilton lobby from 12:00-1:00 PM! Look for the purple Gryphon banner. Can’t wait to meet you :)

+

Orcas for Everyone!

+

Sea Serpents aren't the only animals riding the waves around the city of Dilatory: it looks like some friendly Orcas are swimming into Habiticans' stables! In honor of the Summer Splash event, everyone who didn't already have both Orcas gets either the mount or the pet. Enjoy!

+
by Beffymaroo and UncommonCriminal
-
+
-
+
-

Wiki Spotlight: The Pomodoro Technique

-

This month's featured Wiki article is about the Pomodoro Technique! We hope that it will help you as you look for new productivity strategies. Be sure to check it out, and let us know what you think by reaching out on Twitter, Tumblr, and Facebook.

-
by shanaqui and the Wiki Wizards
+

July Subscriber Items Revealed!

+

The July Subscriber Items have been revealed: the Sea Serpent Set! You only have eight days to receive the item set when you subscribe. If you're already an active subscriber, reload the site and then head to Inventory > Items to claim your gear!

+

Subscribers also receive the ability to buy Gems for Gold -- the longer you subscribe, the more gems you can buy per month! There are other perks as well, such as longer access to uncompressed data and a cute Jackalope pet. Best of all, subscriptions let us keep Habitica running. Thank you very much for your support -- it means a lot to us.

+
by Beffymaroo
`, });