kol.js 0.1.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kol.js",
3
- "version": "0.1.8",
3
+ "version": "0.2.0",
4
4
  "main": "src/index.ts",
5
5
  "type": "module",
6
6
  "files": [
@@ -13,7 +13,7 @@
13
13
  "format": "prettier --write ."
14
14
  },
15
15
  "devDependencies": {
16
- "prettier": "^3.5.3",
16
+ "prettier": "^3.6.2",
17
17
  "typescript": "^5.8.2",
18
18
  "vitest": "^3.0.9"
19
19
  },
@@ -142,6 +142,19 @@ describe("LoathingChat", () => {
142
142
  time: new Date(1698809633000),
143
143
  });
144
144
  });
145
+
146
+ test("Can parse updates", async () => {
147
+ json.mockResolvedValueOnce({
148
+ output:
149
+ '<hr><center><font color=green><b>Recent Announcements:</b></font></center><p><b>August 21</b> - That pocast you like is back in style. Get it on iTunes, or from the <A style="text-decoration: underline" target=_blank href=http://radio.kingdomofloathing.com/podcast.php>direct RSS feed</a> or <a style="text-decoration: underline" target=_blank href=http://shows.kingdomofloathing.com/The_KoL_Show_20250819.mp3>download the mp3 directly</a>.<p><b>August 15</b> - On September 1st commendations will be given out for softcore Under the Sea runs. The we\'ll be making some nerfs and the leaderboards will be reset for phase 2. <p><b>August 14</b> - Swim into the fall challenge path, 11,037 Leagues Under the Sea!<p><b>March 07</b> - Check out Jick\'s entry in the 2025 7-Day Roguelike Challenge. It\'s called Catacombo and you can <a href=https://zapjackson.itch.io/catacombo target=_blank style="text-decoration: underline">play it here on itch dot eye oh</a>.<p><b>March 06</b> - KoL\'s own Jick wrote a book, a choose-your-own-adventure about escaping from a wizard. You can <a style="text-decoration: underline" target=_blank href=https://www.amazon.com/Escape-Prison-Tower-Wizard-Adventures/dp/B0CTW34JV1/>buy it on Amazon dot com</a>. <p><hr>',
150
+ msgs: [],
151
+ });
152
+
153
+ const updates = await client.getUpdates();
154
+
155
+ expect(updates[0]).toMatch(/^That pocast you like is back/);
156
+ expect(updates).toHaveLength(5);
157
+ });
145
158
  });
146
159
 
147
160
  describe("Skill descriptions", () => {
package/src/Client.ts CHANGED
@@ -328,6 +328,15 @@ export class Client extends (EventEmitter as unknown as new () => TypedEmitter<E
328
328
  );
329
329
  }
330
330
 
331
+ async getUpdates() {
332
+ const result = await this.sendChat("/updates");
333
+ return [
334
+ ...(result?.output.matchAll(
335
+ /<p><b>[A-za-z]+ \d+<\/b> - (.*?)(?=<p>(?:<b>|<hr>))/g,
336
+ ) ?? []),
337
+ ].map((m) => m[1]);
338
+ }
339
+
331
340
  async useChatMacro(macro: string) {
332
341
  return await this.sendChat(`/clan ${macro}`);
333
342
  }
@@ -5,7 +5,7 @@
5
5
  <body bgcolor=white text=black link=black alink=black vlink=black>
6
6
  <div id="description">
7
7
 
8
- <font face=Arial,Helvetica size=2><!-- effectid: 23 --><center><img src="/images/itemimages/mandala.gif" width=30 height=30><p><u><a class="hand" style="cursor: pointer;" onclick='window.open("http://kol.coldfront.net/thekolwiki/index.php/Pasta_Oneness", "_blank");window.close();'><b>Pasta Oneness</b></u></a><p></center><blockquote>You feel at one with the forces of the pastaverse. Your fingers pulse with Magicalness.</blockquote><center><font color=blue><b>Mysticality +2</b></font></center></font></font>
8
+ <font face=Arial,Helvetica size=2><!-- effectid: 23 --><center><img src="/images/itemimages/mandala.gif" width=30 height=30><p><u><a class="hand" style="cursor: pointer;" onclick='window.open("https://wiki.kingdomofloathing.com/Pasta_Oneness", "_blank");window.close();'><b>Pasta Oneness</b></u></a><p></center><blockquote>You feel at one with the forces of the pastaverse. Your fingers pulse with Magicalness.</blockquote><center><font color=blue><b>Mysticality +2</b></font></center></font></font>
9
9
  </div>
10
10
  <script type="text/javascript">
11
11
  <!--
@@ -5,7 +5,7 @@
5
5
  <body bgcolor=white text=black link=black alink=black vlink=black>
6
6
  <div id="description">
7
7
 
8
- <font face=Arial,Helvetica size=2><!-- effectid: 1888 --><center><img src="/images/itemimages/handmirror.gif" width=30 height=30><p><u><a class="hand" style="cursor: pointer;" onclick='window.open("http://kol.coldfront.net/thekolwiki/index.php/The_Visible_Adventurer", "_blank");window.close();'><b>The Visible Adventurer</b></u></a><p></center><blockquote>You turned your skin transparent so that you could see what your skeleton looks like. It turns out it look like Charlie Brown's skeleton. Maybe you should see a doctor.</blockquote><center><font color=blue><b>Makes you look like a skeleton</b></font></center></font></font>
8
+ <font face=Arial,Helvetica size=2><!-- effectid: 1888 --><center><img src="/images/itemimages/handmirror.gif" width=30 height=30><p><u><a class="hand" style="cursor: pointer;" onclick='window.open("https://wiki.kingdomofloathing.com/The_Visible_Adventurer", "_blank");window.close();'><b>The Visible Adventurer</b></u></a><p></center><blockquote>You turned your skin transparent so that you could see what your skeleton looks like. It turns out it look like Charlie Brown's skeleton. Maybe you should see a doctor.</blockquote><center><font color=blue><b>Makes you look like a skeleton</b></font></center></font></font>
9
9
  </div>
10
10
  <script type="text/javascript">
11
11
  <!--
@@ -13,7 +13,7 @@ a.hand {
13
13
  <script language="Javascript" src="/basics.js"></script><link rel="stylesheet" href="/basics.1.css" /></head>
14
14
  <body>
15
15
 
16
- <div id="description" class=small><center><img src="/images/itemimages/alienmeat.gif" height=30 width=30 alt="alienmeat"><br><u><a class="hand" style="cursor: pointer;" onclick='window.open("http://kol.coldfront.net/thekolwiki/index.php/alien_meat", "_blank");window.close();'><b>alien meat</b></u></a></center><p><blockquote>This is a slab of meat from an alien animal.<!-- itemid: 9423 --><br><br>(Cooking ingredient)<br>Type: <b>food <font color=green>(good)</font></b><br>Size: <b>1</b><br>Selling Price: <b>8 Meat.</b><p><center><b><font color=blue>Gives 5 Adventures of a random positive effect</font></b></center></blockquote><script type="text/javascript">
16
+ <div id="description" class=small><center><img src="/images/itemimages/alienmeat.gif" height=30 width=30 alt="alienmeat"><br><u><a class="hand" style="cursor: pointer;" onclick='window.open("https://wiki.kingdomofloathing.com/alien_meat", "_blank");window.close();'><b>alien meat</b></u></a></center><p><blockquote>This is a slab of meat from an alien animal.<!-- itemid: 9423 --><br><br>(Cooking ingredient)<br>Type: <b>food <font color=green>(good)</font></b><br>Size: <b>1</b><br>Selling Price: <b>8 Meat.</b><p><center><b><font color=blue>Gives 5 Adventures of a random positive effect</font></b></center></blockquote><script type="text/javascript">
17
17
  <!--
18
18
  var resizetries = 0;
19
19
  var fsckinresize;
@@ -14,7 +14,7 @@ a.hand {
14
14
  <script language="javascript" src="/tcrs.js"></script><link rel="stylesheet" href="/tcrs.css" /><script language="Javascript" src="/basics.js"></script><link rel="stylesheet" href="/basics.1.css" /></head>
15
15
  <body>
16
16
 
17
- <div id="description" class=small><center><img src="/images/itemimages/syringe.gif" height=30 width=30 alt="syringe"><br><u><a class="hand" style="cursor: pointer;" onclick='window.open("http://kol.coldfront.net/thekolwiki/index.php/hypodermic_needle", "_blank");window.close();'><b>hypodermic needle</b></u></a></center><p><blockquote>This is a tiny syringe that has been custom-made to be operated by a mosquito. How, you might ask? Yup, you certainly might ask. This should make the mosquito's blood collection much more efficient.<!-- itemid: 848 --><br><br>Type: <b>familiar equipment</b><br>Familiar: <b>Mosquito</b></b><br>Selling Price: <b>75 Meat.</b><p><center><b><font color=blue>+5 to Familiar Weight<br></font></b></center></blockquote><script type="text/javascript">
17
+ <div id="description" class=small><center><img src="/images/itemimages/syringe.gif" height=30 width=30 alt="syringe"><br><u><a class="hand" style="cursor: pointer;" onclick='window.open("https://wiki.kingdomofloathing.com/hypodermic_needle", "_blank");window.close();'><b>hypodermic needle</b></u></a></center><p><blockquote>This is a tiny syringe that has been custom-made to be operated by a mosquito. How, you might ask? Yup, you certainly might ask. This should make the mosquito's blood collection much more efficient.<!-- itemid: 848 --><br><br>Type: <b>familiar equipment</b><br>Familiar: <b>Mosquito</b></b><br>Selling Price: <b>75 Meat.</b><p><center><b><font color=blue>+5 to Familiar Weight<br></font></b></center></blockquote><script type="text/javascript">
18
18
  <!--
19
19
  var resizetries = 0;
20
20
  var fsckinresize;
@@ -14,7 +14,7 @@ a.hand {
14
14
  <script language="javascript" src="/tcrs.js"></script><link rel="stylesheet" href="/tcrs.css" /><script language="Javascript" src="/basics.js"></script><link rel="stylesheet" href="/basics.1.css" /></head>
15
15
  <body>
16
16
 
17
- <div id="description" class=small><center><img src="/images/itemimages/pl_elephant.gif" height=30 width=30 alt="pl_elephant"><br><u><a class="hand" style="cursor: pointer;" onclick='window.open("http://kol.coldfront.net/thekolwiki/index.php/LOV_Elephant", "_blank");window.close();'><b>LOV Elephant</b></u></a></center><p><blockquote>This cute plush elephant is the L.O.V.'s unofficial mascot. They picked an elephant because it is nigh-impossible to put an elephant in space, and that's the kind of sharp near-irony that nerds crave.<!-- itemid: 9327 --><br><br>Type: <b>off-hand item (shield)</b><br>Damage Reduction: <b>6</b><br>Muscle Required: <b>25</b><br>Selling Price: <b>5 Meat.</b><br><b>Gift Item</b><p><center><b><font color=blue><p><center><b><font color="blue">Damage Reduction: 10</font></b></center></font></b></center></blockquote><script type="text/javascript">
17
+ <div id="description" class=small><center><img src="/images/itemimages/pl_elephant.gif" height=30 width=30 alt="pl_elephant"><br><u><a class="hand" style="cursor: pointer;" onclick='window.open("https://wiki.kingdomofloathing.com/LOV_Elephant", "_blank");window.close();'><b>LOV Elephant</b></u></a></center><p><blockquote>This cute plush elephant is the L.O.V.'s unofficial mascot. They picked an elephant because it is nigh-impossible to put an elephant in space, and that's the kind of sharp near-irony that nerds crave.<!-- itemid: 9327 --><br><br>Type: <b>off-hand item (shield)</b><br>Damage Reduction: <b>6</b><br>Muscle Required: <b>25</b><br>Selling Price: <b>5 Meat.</b><br><b>Gift Item</b><p><center><b><font color=blue><p><center><b><font color="blue">Damage Reduction: 10</font></b></center></font></b></center></blockquote><script type="text/javascript">
18
18
  <!--
19
19
  var resizetries = 0;
20
20
  var fsckinresize;
@@ -14,7 +14,7 @@ a.hand {
14
14
  <script language="javascript" src="/tcrs.js"></script><link rel="stylesheet" href="/tcrs.css" /><script language="Javascript" src="/basics.js"></script><link rel="stylesheet" href="/basics.1.css" /></head>
15
15
  <body>
16
16
 
17
- <div id="description" class=small><center><img data-tcrs="somersault" src="/images/itemimages/potion4.gif" height=30 width=30 alt="potion4"><br><u><a class="hand" style="cursor: pointer;" onclick='window.open("http://kol.coldfront.net/thekolwiki/index.php/magical_mystery_juice", "_blank");window.close();'><b>tumbling mystery juice</b></u></a></center><p><blockquote>This is a potion that's positively bubbling with Magicalness. Roll up! (your sleeves, and drink it.)<!-- itemid: 518 --><br><br>Type: <b>usable (also usable in combat)</b><br>Selling Price: <b>50 Meat.</b><br>Cannot be traded<p><center><b><font color=blue>Restores an amount of MP that increases as you level up</font></b></center></blockquote><script type="text/javascript">
17
+ <div id="description" class=small><center><img data-tcrs="somersault" src="/images/itemimages/potion4.gif" height=30 width=30 alt="potion4"><br><u><a class="hand" style="cursor: pointer;" onclick='window.open("https://wiki.kingdomofloathing.com/magical_mystery_juice", "_blank");window.close();'><b>tumbling mystery juice</b></u></a></center><p><blockquote>This is a potion that's positively bubbling with Magicalness. Roll up! (your sleeves, and drink it.)<!-- itemid: 518 --><br><br>Type: <b>usable (also usable in combat)</b><br>Selling Price: <b>50 Meat.</b><br>Cannot be traded<p><center><b><font color=blue>Restores an amount of MP that increases as you level up</font></b></center></blockquote><script type="text/javascript">
18
18
  <!--
19
19
  var resizetries = 0;
20
20
  var fsckinresize;
@@ -14,7 +14,7 @@ a.hand {
14
14
  <script language="javascript" src="/tcrs.js"></script><link rel="stylesheet" href="/tcrs.css" /><script language="Javascript" src="/basics.js"></script><link rel="stylesheet" href="/basics.1.css" /></head>
15
15
  <body>
16
16
 
17
- <div id="description" class=small><center><img src="/images/itemimages/larva.gif" height=30 width=30 alt="larva"><br><u><a class="hand" style="cursor: pointer;" onclick='window.open("http://kol.coldfront.net/thekolwiki/index.php/mosquito_larva", "_blank");window.close();'><b>mosquito larva</b></u></a></center><p><blockquote>This is the larva of a mosquito. It's very tiny, but with some tender loving care (and perhaps a terrarium,) it could develop into a full-fledged mosquito.<!-- itemid: 275 --><p><center><b>Hatches into:</b><br><table cellpadding=5 style='border: 1px solid black;'><tr><td align=center><a class=nounder href=desc_familiar.php?which=1><img onClick='fam(1)' src="/images/itemimages/familiar1.gif" width=30 height=30 border=0><br><b>Mosquito</b></td></tr></table></center><br><br>Type: <b>familiar</b><Br>Cannot be traded or discarded<br><b>Quest Item</b></blockquote><script type="text/javascript">
17
+ <div id="description" class=small><center><img src="/images/itemimages/larva.gif" height=30 width=30 alt="larva"><br><u><a class="hand" style="cursor: pointer;" onclick='window.open("https://wiki.kingdomofloathing.com/mosquito_larva", "_blank");window.close();'><b>mosquito larva</b></u></a></center><p><blockquote>This is the larva of a mosquito. It's very tiny, but with some tender loving care (and perhaps a terrarium,) it could develop into a full-fledged mosquito.<!-- itemid: 275 --><p><center><b>Hatches into:</b><br><table cellpadding=5 style='border: 1px solid black;'><tr><td align=center><a class=nounder href=desc_familiar.php?which=1><img onClick='fam(1)' src="/images/itemimages/familiar1.gif" width=30 height=30 border=0><br><b>Mosquito</b></td></tr></table></center><br><br>Type: <b>familiar</b><Br>Cannot be traded or discarded<br><b>Quest Item</b></blockquote><script type="text/javascript">
18
18
  <!--
19
19
  var resizetries = 0;
20
20
  var fsckinresize;
@@ -13,7 +13,7 @@ a.hand {
13
13
  <script language="Javascript" src="/basics.js"></script><link rel="stylesheet" href="/basics.1.css" /></head>
14
14
  <body>
15
15
 
16
- <div id="description" class=small><center><img src="/images/itemimages/turkeyleg.gif" height=30 width=30 alt="turkeyleg"><br><u><a class="hand" style="cursor: pointer;" onclick='window.open("http://kol.coldfront.net/thekolwiki/index.php/tofurkey_leg", "_blank");window.close();'><b>tofurkey leg</b></u></a></center><p><blockquote>This is the leg of a bizarre beast made entirely of bean curd and artificial flavoring. It's definitely more fun to say than to try and eat.<!-- itemid: 1365 --><br><br>Type: <b>food <font color=blue>(awesome)</font></b><br>Size: <b>3</b><br>Level required: <b>5</b><br>Selling Price: <b>50 Meat.</b></blockquote><script type="text/javascript">
16
+ <div id="description" class=small><center><img src="/images/itemimages/turkeyleg.gif" height=30 width=30 alt="turkeyleg"><br><u><a class="hand" style="cursor: pointer;" onclick='window.open("https://wiki.kingdomofloathing.com/tofurkey_leg", "_blank");window.close();'><b>tofurkey leg</b></u></a></center><p><blockquote>This is the leg of a bizarre beast made entirely of bean curd and artificial flavoring. It's definitely more fun to say than to try and eat.<!-- itemid: 1365 --><br><br>Type: <b>food <font color=blue>(awesome)</font></b><br>Size: <b>3</b><br>Level required: <b>5</b><br>Selling Price: <b>50 Meat.</b></blockquote><script type="text/javascript">
17
17
  <!--
18
18
  var resizetries = 0;
19
19
  var fsckinresize;
@@ -6,7 +6,7 @@
6
6
  <body bgcolor=white text=black link=black alink=black vlink=black>
7
7
  <div id="description">
8
8
 
9
- <center><img src="/images/itemimages/5alarm.gif" width=30 height=30><br><font face="Arial,Helvetica"><u><a class="hand" style="cursor: pointer;" onclick='window.open("http://kol.coldfront.net/thekolwiki/index.php/Impetuous_Sauciness", "_blank");window.close();'><b>Impetuous Sauciness</b></u></a><p><div id="smallbits" class=small><b>Type:</b> Passive<br><b>MP Cost:</b> N/A</div><p></center><blockquote class=small>You're as saucy as saucy can be. When you drink potions crafted with Scrumptious Reagents, their effects will last 5 Adventures longer for you than they do for less impetuous people.<p><center><font color=blue size=2><b>Makes Sauce Potions last longer</b></font></center></blockquote></font></font>
9
+ <center><img src="/images/itemimages/5alarm.gif" width=30 height=30><br><font face="Arial,Helvetica"><u><a class="hand" style="cursor: pointer;" onclick='window.open("https://wiki.kingdomofloathing.com/Impetuous_Sauciness", "_blank");window.close();'><b>Impetuous Sauciness</b></u></a><p><div id="smallbits" class=small><b>Type:</b> Passive<br><b>MP Cost:</b> N/A</div><p></center><blockquote class=small>You're as saucy as saucy can be. When you drink potions crafted with Scrumptious Reagents, their effects will last 5 Adventures longer for you than they do for less impetuous people.<p><center><font color=blue size=2><b>Makes Sauce Potions last longer</b></font></center></blockquote></font></font>
10
10
  <script type="text/javascript">
11
11
  <!--
12
12
  var resizetries = 0;
@@ -6,7 +6,7 @@
6
6
  <body bgcolor=white text=black link=black alink=black vlink=black>
7
7
  <div id="description">
8
8
 
9
- <center><img src="/images/itemimages/littlefridge.gif" width=30 height=30><br><font face="Arial,Helvetica"><u><a class="hand" style="cursor: pointer;" onclick='window.open("http://kol.coldfront.net/thekolwiki/index.php/Overload_Discarded_Refrigerator", "_blank");window.close();'><b>Overload Discarded Refrigerator</b></u></a><p><div id="smallbits" class=small><b>Type:</b> Combat<br><b>MP Cost:</b> 100</div><p></center><blockquote class=small></blockquote></font></font>
9
+ <center><img src="/images/itemimages/littlefridge.gif" width=30 height=30><br><font face="Arial,Helvetica"><u><a class="hand" style="cursor: pointer;" onclick='window.open("https://wiki.kingdomofloathing.com/Overload_Discarded_Refrigerator", "_blank");window.close();'><b>Overload Discarded Refrigerator</b></u></a><p><div id="smallbits" class=small><b>Type:</b> Combat<br><b>MP Cost:</b> 100</div><p></center><blockquote class=small></blockquote></font></font>
10
10
  <script type="text/javascript">
11
11
  <!--
12
12
  var resizetries = 0;
@@ -0,0 +1 @@
1
+ <html><head><script language=Javascript><!--if (parent.frames.length == 0) location.href="game.php";//--></script><script language=Javascript src="https://d2uyhvukfffg5a.cloudfront.net/scripts/keybinds.min.2.js"></script><script language=Javascript src="https://d2uyhvukfffg5a.cloudfront.net/scripts/window.20111231.js"></script><script language="javascript">function chatFocus(){if(top.chatpane.document.chatform.graf) top.chatpane.document.chatform.graf.focus();}if (typeof defaultBind != 'undefined') { defaultBind(47, 2, chatFocus); defaultBind(190, 2, chatFocus);defaultBind(191, 2, chatFocus); defaultBind(47, 8, chatFocus);defaultBind(190, 8, chatFocus); defaultBind(191, 8, chatFocus); }</script><script language=Javascript src="https://d2uyhvukfffg5a.cloudfront.net/scripts/jquery-1.3.1.min.js"></script><script language=Javascript src="https://d2uyhvukfffg5a.cloudfront.net/scripts/window.js?foo=1"></script> <link rel="stylesheet" type="text/css" href="https://d2uyhvukfffg5a.cloudfront.net/styles.20230117d.css"><style type='text/css'>.faded {zoom: 1;filter: alpha(opacity=35);opacity: 0.35;-khtml-opacity: 0.35;-moz-opacity: 0.35;}</style></head><body><center><table width=95% cellspacing=0 cellpadding=0><tr><td style="background-color: blue" align=center ><b style="color: white">Derplingtons</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td><center><table><tr><td><div class='' style='position: relative'><img crossorigin="Anonymous" src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/murderbotvatar_f.gif" width=60 height=100 border=0></div></td><td valign=center><center><b>Derplingtons</b> (#2506308)<br><span title='Bestowed by Bobby cool (#3428138)'>A home for flowers</span><br>(Level 22)</td><td valign=center align=center><a href=account_tattoos.php><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/sigils/foilheart.gif" alt="Tattoo: foilheart" title="Tattoo: foilheart" width=50 height=50 border=0></a></td></tr></table><table><tr><td colspan=2 height=1 bgcolor=black></td></tr><tr ><td align=right><b>Class:</b></td><td>Pastamancer</td></tr><tr><td align=right><b>Points:</b></td><td>2 (+79)</td></tr><tr><td align=right><b>Sign:</b></td><td>The Platypus</td></tr><tr><td align=right><b>Path:</b></td><td>Two Crazy Random Summer</td></tR><tr><Td align=right><b><a class=nounder href="ascensionhistory.php?back=other&who=2506308">Ascensions</a>:</b></td><td>138</td></tr><tr><td align=right><b>Turns Played (total):</b></td><td>390,283</td></tr><tr><td align=right><b>Turns Played (this run):</b></td><td>2,480</td></tr><tr><td align=right><b>Account Created:</b></td><td>June 13, 2014</td></tr><tr><td align=right><b>Last Login:</b></td><td>June 08, 2025</td></tr><tr><td align=right><b>Favorite Cheese:</b></td><td>Muenster</td></tr><tr><td align=right><b>Favorite Food:</b></td><td>gallon of milk </td></tr><tr><td align=right><b>Favorite Booze:</b></td><td>En Una Fila Tequila </td></tr><tr><td align=right><b>Put a Ring On:</b></td><td><a href='showplayer.php?who=3794651'>Idia Shroud</a></td></tr><tr><td colspan=2 height=1 bgcolor=black></td></tr></table><p><p><center>Equipment:</center><table><tr><td colspan="2" width='250' height=1 bgcolor=black></td></tr><tr><td align="center" colspan="2">This player has elected to make their equipment private, but you can still see their weird diaper-like blessed space codpiece.<table><tr ><td width=30 height=30><img src="https://d2uyhvukfffg5a.cloudfront.net/itemimages/bb_speedo.gif" class=hand onClick='descitem(184362016, 2506308)'></td><td valign=center><b>Protects-Your-Junk</b></td></tr></table></td></tr><tr><td height=1 bgcolor=black colspan="2"></td></tr></table><p>Familiar:<Br><table><tr><td colspan=5 height=1 bgcolor=black></td></tr><tr><td><a href="showfamiliars.php?who=2506308"><img src="https://d2uyhvukfffg5a.cloudfront.net/itemimages/catburglar.gif" width=30 height=30 border=0></a></td><td valign=center><b>The Dashing Protagonist!</b>, the Cat Burglar</td><td><td valign=center><b>(</b></td><td><img src="https://d2uyhvukfffg5a.cloudfront.net/itemimages/cburglarmask.gif" class=hand onClick='descitem(339615758,2506308)'></td><td valign=center><b>)</b></td></td></tr><tr><td colspan=5 height=1 bgcolor=black></td></tr></table><p><table><tr><td colspan=2 height=1 bgcolor=black></td></tr><tr><td colspan=2>Clan: <b><a class=nounder href="showclan.php?whichclan=82072">The Average Clan</a></b><br>Title: <b>Cat Crazed</b></td></tr><tr><td colspan=2 height=1 bgcolor=black></td></tr></table><p><table><tr><td colspan=2 height=1 bgcolor=black></td></tr><tr><td colspan=2>Store: <b><a class=nounder href="mallstore.php?whichstore=2506308">Bargain Bin Boys</a></b></td></tr><tr><td colspan=2 height=1 bgcolor=black></td></tr></table><p><table><tr><td colspan=2 height=1 bgcolor=black></td></tr><tr><td colspan=2>This player owns a <a class=nounder href="displaycollection.php?who=2506308"><b>Display Case</b></a> in the Museum</td></tr><tr><td colspan=2 height=1 bgcolor=black></td></tr></table><p><table><tr><td align="center">Derplingtons has arranged a Magnetic Sculpture:</center></td></tr><tr><td height=1 bgcolor=black></td></tr><tr><td align="center"><style type="text/css">.magneticsculpture { width: 120px; height: 144px; position: relative; }.base { position: absolute; bottom: 0px; left:0px }.mpixel { position: absolute; }</style><div class="magneticsculpture"><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 136; top: 0" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 144; top: 0" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 152; top: 0" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 16; top: 8" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 24; top: 8" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 32; top: 8" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 72; top: 8" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 80; top: 8" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 88; top: 8" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 152; top: 8" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 16; top: 16" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 24; top: 16" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 32; top: 16" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 40; top: 16" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 72; top: 16" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 80; top: 16" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 88; top: 16" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 96; top: 16" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 144; top: 16" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 16; top: 24" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 32; top: 24" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 40; top: 24" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 48; top: 24" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 72; top: 24" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 88; top: 24" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 96; top: 24" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 136; top: 24" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 168; top: 24" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 176; top: 24" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 184; top: 24" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 16; top: 32" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 40; top: 32" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 48; top: 32" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 56; top: 32" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 64; top: 32" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 72; top: 32" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 96; top: 32" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 104; top: 32" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 136; top: 32" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 144; top: 32" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 152; top: 32" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 184; top: 32" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 16; top: 40" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 24; top: 40" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 32; top: 40" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 40; top: 40" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 48; top: 40" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 56; top: 40" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 64; top: 40" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 72; top: 40" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 80; top: 40" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 88; top: 40" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 96; top: 40" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 104; top: 40" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 176; top: 40" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 8; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 16; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 24; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 32; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 40; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 48; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 56; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 64; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 72; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 80; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 88; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 96; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 104; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 128; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 136; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 144; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 168; top: 48" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 8; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 16; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 24; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 32; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 40; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 48; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 56; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 64; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 72; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 80; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 88; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 96; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 104; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 112; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 144; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 168; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 176; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 184; top: 56" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 0; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 8; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 16; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 24; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 32; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 40; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 48; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 56; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 64; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 72; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 80; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 88; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 96; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 104; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 112; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 136; top: 64" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 0; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 8; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 16; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 24; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 32; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 40; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 48; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 56; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 64; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 72; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 80; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 88; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 96; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 104; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 112; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 128; top: 72" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 0; top: 80" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 8; top: 80" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 40; top: 80" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 48; top: 80" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 56; top: 80" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 64; top: 80" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 96; top: 80" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 104; top: 80" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 112; top: 80" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 128; top: 80" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 136; top: 80" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 144; top: 80" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 0; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 8; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 16; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 24; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 32; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 40; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 48; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 56; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 64; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 72; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 80; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 88; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 96; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 104; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 112; top: 88" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 0; top: 96" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 8; top: 96" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 16; top: 96" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 24; top: 96" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 32; top: 96" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 40; top: 96" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 48; top: 96" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 56; top: 96" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 64; top: 96" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 72; top: 96" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 80; top: 96" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 88; top: 96" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 96; top: 96" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 104; top: 96" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 8; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 16; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 24; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 32; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 40; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 48; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 56; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 64; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 72; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 80; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 88; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 96; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 104; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 144; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 152; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 160; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 168; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 176; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 184; top: 104" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 16; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 24; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 32; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 40; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 48; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 56; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 64; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 72; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 80; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 88; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 96; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 136; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 144; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 152; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 160; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 168; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 176; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 184; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 192; top: 112" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 136; top: 120" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 144; top: 120" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 184; top: 120" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 192; top: 120" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 136; top: 128" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 144; top: 128" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel1.gif" style="left: 152; top: 128" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 160; top: 128" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 168; top: 128" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 176; top: 128" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 184; top: 128" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 192; top: 128" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 136; top: 136" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 192; top: 136" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 136; top: 144" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 144; top: 144" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 152; top: 144" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 160; top: 144" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 168; top: 144" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 176; top: 144" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 184; top: 144" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 192; top: 144" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 8; top: 152" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 16; top: 152" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 96; top: 152" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 104; top: 152" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 136; top: 152" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 144; top: 152" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 184; top: 152" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 192; top: 152" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 8; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 16; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 24; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 32; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 80; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 88; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 96; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 104; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 136; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 144; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 152; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 160; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 168; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 176; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 184; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 192; top: 160" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 0; top: 168" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 8; top: 168" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 24; top: 168" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 88; top: 168" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 104; top: 168" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 112; top: 168" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 136; top: 168" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 144; top: 168" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 152; top: 168" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 160; top: 168" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel6.gif" style="left: 168; top: 168" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 176; top: 168" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel9.gif" style="left: 184; top: 168" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 192; top: 168" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 0; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 8; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 16; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 24; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 88; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 96; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 104; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 112; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 136; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 144; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 152; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 160; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel10.gif" style="left: 168; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel5.gif" style="left: 176; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel2.gif" style="left: 184; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel3.gif" style="left: 192; top: 176" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 16; top: 184" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel4.gif" style="left: 24; top: 184" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel7.gif" style="left: 88; top: 184" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magpixel8.gif" style="left: 96; top: 184" class="mpixel" /><img src="https://d2uyhvukfffg5a.cloudfront.net/otherimages/magsculpture/magbase.gif" class="base"></div></td></tr><tr><td height=1 bgcolor=black></td></tr></table><p><p><Center>Profile:</center><table width=70%><tr><td colspan=2 height=1 bgcolor=black></td></tr><tr><td align=right><b>Location:</b></td><td>Anywhere but home</td></tr><tr><td align=right valign=top><b>Website:</b></td><td><a href="http://corru.observer" target="_blank">corru.observer</a></td></tr><tr><td colspan=2 height=1 bgcolor=black></td></tr></table><p><a href="sendmessage.php?toid=2506308">send message</a> / <a href="town_sendgift.php?towho=2506308">send gift</a> / <a href="makeoffer.php?towho=2506308">propose trade</a><br><a href="showplayer.php?pwd=7f404832a73aeb13a3659a0b08ad70ab&who=2506308&addtocontact=true">add to contact list</a> / <a href="showplayer.php?pwd=7f404832a73aeb13a3659a0b08ad70ab&who=2506308&addtoignore=true">add to ignore list</a></td></tr></table></center></td></tr><tr><td height=4></td></tr></table><div style='position: fixed; bottom: 0; left: 0; right: 0; top: 0; pointer-events: none' id="psnowballs"></div><script src="https://cdnjs.cloudflare.com/ajax/libs/matter-js/0.19.0/matter.min.js" integrity="sha512-0z8URjGET6GWnS1xcgiLBZBzoaS8BNlKayfZyQNKz4IRp+s7CKXx0yz7Eco2+TcwoeMBa5KMwmTX7Kus7Fa5Uw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script><script>var snow = function() {var Engine = Matter.Engine,Render = Matter.Render,Runner = Matter.Runner,Composites = Matter.Composites,MouseConstraint = Matter.MouseConstraint,Mouse = Matter.Mouse,Composite = Matter.Composite,Bodies = Matter.Bodies;var engine = Engine.create(),world = engine.world;var width = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;var height = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;// create renderervar render = Render.create({element: document.getElementById("psnowballs"),engine: engine,options: {width: width,height: height,showAngleIndicator: false,wireframes: false,background: 'transparent'}});Render.run(render);// create runnervar runner = Runner.create();Runner.run(runner, engine);var balls_left = 3;var balls = [];var do_ball_batch = function() {var num = Math.min(balls_left, 69);balls_left -= num;for (var i = 0; i < num; i++) {var ball = Bodies.circle(width/2 + (Math.random() * 100), Math.random() * 100, 50, {density: 15.0,friction: 1.5,frictionStatic: 4.5,render: {sprite: {texture: "https://d2uyhvukfffg5a.cloudfront.net/otherimages/snowball.png"}}});Matter.Body.setAngularVelocity(ball, Math.random() * 0.1 - 0.05);balls.push(ball);Composite.add(world, ball);}if (balls_left > 0) setTimeout(do_ball_batch, 7500);}Composite.add(world, [// wallsBodies.rectangle(width / 2, height+26, width * 0.75, 50,{ isStatic: true, angle: Math.PI/90, render: { visible: false }, friction: 1.5, frictionStatic: 4.5, restitution: 0.1 }), //floorBodies.rectangle(-350, height / 2, 50, height,{ isStatic: true, render: { visible: false } }), //left wallBodies.rectangle(width+350, height / 2, 50, height, { isStatic: true, render: { visible: false } }), //right wall]);do_ball_batch();document.body.addEventListener('click', function(event) {// Get the position of the click event relative to the pagevar clickX = event.pageX;var clickY = event.pageY;// Get the element and its position relative to the pagevar element = document.getElementById('psnowballs');var rect = element.getBoundingClientRect();var elementX = rect.left + window.scrollX;var elementY = rect.top + window.scrollY;// Subtract the position of the element from the position of the click eventvar insideX = clickX - elementX;var insideY = clickY - elementY;var mousePosition = { x: insideX, y: insideY };var ballClicked = false;for (var i = 0; i < balls.length; i++) {if (Matter.Vertices.contains(balls[i].vertices, mousePosition)) {Matter.Body.applyForce(balls[i], balls[i].position, {x: (Math.random() * 50000) - 25000, y: -50000.0});ballClicked = true;break;}}if (ballClicked) {event.preventDefault();}});// fit the render viewport to the sceneRender.lookAt(render, {min: { x: 0, y: 0 },max: { x: width, y: height }});// context for MatterTools.Demoreturn {engine: engine,runner: runner,render: render,canvas: render.canvas,stop: function() {Matter.Render.stop(render);Matter.Runner.stop(runner);}};};document.addEventListener("DOMContentLoaded", snow);</script><style>body { padding-bottom: 150px; }</style></center></body></html>
@@ -9,4 +9,11 @@ describe("Avatars", () => {
9
9
  expect(svg).toContain(`title="/images/otherimages/classav11_f.gif"`);
10
10
  expect(svg).toContain(`title="/images/otherimages/moustaches/17.png"`);
11
11
  });
12
+
13
+ it("can parse an avatar with a broken url", async () => {
14
+ const page = await loadFixture(__dirname, "showplayer_broken_avatar.html");
15
+ const svg = await generateAvatarSvg(page);
16
+ console.log(svg);
17
+ expect(svg).toContain(`title="/adventureimages/nopic.gif"`);
18
+ });
12
19
  });
@@ -27,12 +27,25 @@ export async function generateAvatarSvg(profile: string) {
27
27
  for (const imgElement of selectAll("img", block)) {
28
28
  const src = imgElement.attribs.src;
29
29
  if (!src) continue;
30
- const name = src;
31
30
 
32
- const result = await fetch(resolveKoLImage(src));
31
+ let name = src;
32
+ let result = await fetch(resolveKoLImage(src));
33
+ let replaced = false;
34
+
35
+ if (!result.ok) {
36
+ // If this is some decoration that failed, just skip it
37
+ if (images.length > 0) continue;
38
+ // Otherwise let's use nopic
39
+ name = "/adventureimages/nopic.gif";
40
+ result = await fetch(resolveKoLImage(name));
41
+ replaced = true;
42
+ }
43
+
33
44
  const buffer = Buffer.from(await result.arrayBuffer());
34
45
 
35
- const { width = 0, height = 0 } = imageSize(buffer);
46
+ const { width = 0, height = 0 } = !replaced
47
+ ? imageSize(buffer)
48
+ : { width: 60, height: 100 };
36
49
 
37
50
  const href = `data:image/png;base64,${buffer.toString("base64")}`;
38
51
 
@@ -20,8 +20,10 @@ describe("Leaderboards", () => {
20
20
  expect(hardcore.name).toBe(
21
21
  "Fastest Hardcore Way of the Surprising Fist Ascensions",
22
22
  );
23
+
23
24
  expect(hardcore.runs).toHaveLength(35);
24
- expect(hardcore.runs[0].player).toBe("Iron Bob (AT)");
25
+ expect(hardcore.runs[0].playerName).toBe("Iron Bob (AT)");
26
+ expect(hardcore.runs[0].playerId).toBe(592920);
25
27
  expect(hardcore.runs[0].days).toBe("3");
26
28
  expect(hardcore.runs[0].turns).toBe("712");
27
29
  expect(hardcore.updated).toStrictEqual(
@@ -34,7 +36,8 @@ describe("Leaderboards", () => {
34
36
  "Fastest Normal Way of the Surprising Fist Ascensions",
35
37
  );
36
38
  expect(softcore.runs).toHaveLength(35);
37
- expect(softcore.runs[34].player).toBe("Jesusisagurl (SC)");
39
+ expect(softcore.runs[34].playerName).toBe("Jesusisagurl (SC)");
40
+ expect(softcore.runs[34].playerId).toBe(1992917);
38
41
  expect(softcore.runs[34].days).toBe("3");
39
42
  expect(softcore.runs[34].turns).toBe("583");
40
43
  expect(softcore.updated).toStrictEqual(
@@ -1,6 +1,6 @@
1
1
  import { selectAll, selectOne } from "css-select";
2
2
  import { parseDocument } from "htmlparser2";
3
- import { isComment, Text } from "domhandler";
3
+ import { Element, Document, isComment, Text } from "domhandler";
4
4
  import { innerText } from "domutils";
5
5
 
6
6
  export type LeaderboardInfo = {
@@ -15,7 +15,8 @@ export type SubboardInfo = {
15
15
  };
16
16
 
17
17
  type RunInfo = {
18
- player: string;
18
+ playerName: string;
19
+ playerId: number;
19
20
  days: string;
20
21
  turns: string;
21
22
  };
@@ -49,13 +50,18 @@ export function parseLeaderboard(page: string): LeaderboardInfo {
49
50
  const rowText = selectAll("td", node).map((col) =>
50
51
  innerText(col).replace(/&amp;nbsp;/g, ""),
51
52
  );
53
+ const playerLink = (selectOne("a", node) as Element | null)
54
+ ?.attribs.href;
52
55
  const hasTwoNumbers = !!parseInt(rowText[rowText.length - 2]);
53
56
  return {
54
- player: rowText
57
+ playerName: rowText
55
58
  .slice(0, rowText.length - (hasTwoNumbers ? 2 : 1))
56
59
  .join("")
57
60
  .trim()
58
61
  .toString(),
62
+ playerId: Number(
63
+ playerLink?.substring(playerLink.indexOf("who=") + 4) ?? "0",
64
+ ),
59
65
  days: hasTwoNumbers
60
66
  ? rowText[rowText.length - 2].toString() || "0"
61
67
  : "",