New Content - Implemented January 2016 IotM: X-32-F snowman crate

This unlocks a new location: The Snojo, in the Big Mountains.

Inside it are 4 things: A console, used to change the mode of the snowman (suspect this changes when you ascend, based on your class, if it's set to one of the stat modes - tournament mode probably does NOT reset)
A leaderboard, presumably for tournaments.
Martial arts magazines, which doesn't appear to do anything other than give tips when clicked.
Finally, the snowman fight itself.

The console has 4 modes: Muscle, Mysticality, Moxie, and Tournament. The default console mode appears to be based on your class's main stat.
 
Item from round 6 of fighting a Moxie mode snowman

--------------------
8698 iced plum wine 690208428 icewine.gif drink t,d 5
iced plum wine 1 1 EPIC 0 0 0 0 Unspaded
# Item iced plum wine
--------------------
 
Mafia isn't recognising the ends of the fights correctly :

Code:
[15324] The X-32-F Combat Training Snowman
Encounter: the X-32-F Combat Training Snowman
Round 0: darzil wins initiative!
Round 1: darzil casts CURSE OF WEAKSAUCE!
Round 2: darzil casts STUFFED MORTAR SHELL!
Round 3: darzil attacks!
You gain 4 Soulsauce

[15324] The X-32-F Combat Training Snowman
Encounter: the X-32-F Combat Training Snowman
Round 0: darzil wins initiative!
Round 1: darzil casts STUFFED MORTAR SHELL!
Round 2: darzil casts CURSE OF WEAKSAUCE!
You gain 2 Soulsauce

It's probably as a result of this that running combat scripts is ending a little freakily sometimes

Code:
[15324] The X-32-F Combat Training Snowman
Encounter: the X-32-F Combat Training Snowman
Round 0: darzil wins initiative!
Round 1: darzil executes a macro!
Round 1: darzil casts CURSE OF WEAKSAUCE!
Round 2: darzil executes a macro!
Cannot find monster.

Code:
<html><head><script language=Javascript><!--if (parent.frames.length == 0) location.href="game.php";top.charpane.location.href="charpane.php";//--></script><script language=Javascript src="//images.kingdomofloathing.com/scripts/keybinds.min.2.js"></script><script language=Javascript src="//images.kingdomofloathing.com/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="//images.kingdomofloathing.com/scripts/jquery-1.3.1.min.js"></script><script type="text/javascript">jQuery(function ($) {$(document).ready(function() {throb_out();});});function throb_out() {jQuery(function ($) {$('.throbtext').fadeTo(Math.random()*400,.5);})setTimeout(throb_in,400+Math.random()*200);}function throb_in() {jQuery(function ($) {$('.throbtext').fadeTo(Math.random()*400,Math.min(.95,Math.random()+.5));setTimeout(throb_out,400+Math.random()*200);//setTimeout(throb_out,1200);})}</script><script language="javascript" src="http://images.kingdomofloathing.com/scripts/core.js"></script><script>var onturn = 3;function newpic(pic, name, width, height){var h = height || 100;var w = width || 100;mpic = getObj('monpic');mnam = getObj('monname');mpic.src=pic;mpic.width=w;mpic.height=h;mnam.innerHTML=name;}var waking = false;function killforms(sub) {sub.disabled = true;var is = document.getElementsByTagName("input");for (i=0; i < is.length; i++) {if (is[i].getAttribute('type') == 'submit') { is[i].disabled = true; }}if (waking) { clearTimeout(waking); }waking = setTimeout(function () {for (i=0; i < is.length; i++) {if (is[i].getAttribute('type') == 'submit') { is[i].disabled = false; }}}, 3000);sub.form.submit();return true;}</script><link rel="stylesheet" type="text/css" href="//images.kingdomofloathing.com/styles.20151006.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="color: white;" align=center bgcolor=blue><b>Combat!</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td><div id="shiftleft"></div><div id="shiftright"><center><table><tr><td><div id='monpic'><br><img style='position: relative; z-index: 9998; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/head.png alt="Head: This makes the snowman more relatable as an opponent." title="Head: This makes the snowman more relatable as an opponent."><img style='position: relative; z-index: 9997; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/physarmor.png alt="Reinforced Steel Ball: Gives the snowman 10% resistance to Physical damage." title="Reinforced Steel Ball: Gives the snowman 10% resistance to Physical damage."><img style='position: relative; z-index: 9996; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/physdamager.png alt="High-Speed Broom: Deals Physical damage each round." title="High-Speed Broom: Deals Physical damage each round."><img style='position: relative; z-index: 9995; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/stenchpenetrator.png alt="Jumbo Air Freshener: Lets the snowman penetrate 5 levels of Stench Resistance." title="Jumbo Air Freshener: Lets the snowman penetrate 5 levels of Stench Resistance."><img style='position: relative; z-index: 9994; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/sleazepenetrator.png alt="X-Ray Specs: Lets the snowman penetrate 5 levels of Sleaze Resistance." title="X-Ray Specs: Lets the snowman penetrate 5 levels of Sleaze Resistance."><img style='position: relative; z-index: 9993; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/sleazedamager.png alt="Grease Bucket: Deals Sleaze damage each round." title="Grease Bucket: Deals Sleaze damage each round."><img style='position: relative; z-index: 9992; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/spookyresistor.png alt="Opaque Sunglasses: Gives the snowman 50% resistance to Spooky damage." title="Opaque Sunglasses: Gives the snowman 50% resistance to Spooky damage."><img style='position: relative; z-index: 9991; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/defbeefer.png alt="Giant Boulder: Increases the snowman's Defense." title="Giant Boulder: Increases the snowman's Defense."><img style='position: relative; z-index: 9990; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/mpzapper.png alt="Cattle Prod: Deals physical damage and drains some of your MP each round." title="Cattle Prod: Deals physical damage and drains some of your MP each round."><img style='position: relative; z-index: 9989; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/base.png alt="Base: This part stops the functional parts of the snowman from touching the ground." title="Base: This part stops the functional parts of the snowman from touching the ground."></div></td><td valign="top"></td><td valign=center>You're fighting <span id='monname'>the X-32-F Combat Training Snowman</span></td><td width=30></td><td><table><tr><td width=30><img src=http://images.kingdomofloathing.com/itemimages/nicesword.gif width=30 height=30 alt="Enemy's Attack Power" title="Enemy's Attack Power"></td><td width=50 valign=center align=left><b><font size=+2>77</font></b></td><td><img src=http://images.kingdomofloathing.com/itemimages/sprocket.gif alt="This monster is a Construct" title="This monster is a Construct"></td></tr><tr><td width=30><img src=http://images.kingdomofloathing.com/itemimages/whiteshield.gif width=30 height=30 alt="Enemy's Defense" title="Enemy's Defense"></td><td width=50 valign=center align=left><b><font size=+2>156</font></b></td><td><img src=http://images.kingdomofloathing.com/itemimages/snowflake.gif width=30 height=30 alt="This monster is Cold.  Cold is weak against Hot and Spooky." title="This monster is Cold.  Cold is weak against Hot and Spooky."></td></tr><tr><td width=30><img src=http://images.kingdomofloathing.com/itemimages/hp.gif width=30 height=30 alt="Enemy's Hit Points" title="Enemy's Hit Points"></td><td width=50 valign=center align=left><b><font size=+2>0</font></b></td><td><img src=http://images.kingdomofloathing.com/itemimages/snail.gif alt="Never wins initiative" title="Never wins initiative"></td></tr></table></td><td width=50></td><td valign=center><img src=http://images.kingdomofloathing.com/otherimages/friarplants/plant12.gif alt="Stealing Magnolia (+25% Item drops)" title="Stealing Magnolia (+25% Item drops)"></td><td valign=center><img src=http://images.kingdomofloathing.com/otherimages/friarplants/plant19.gif alt="Aloe Guv'nor (Restores HP after combat)" title="Aloe Guv'nor (Restores HP after combat)"></td><td valign=center><img src=http://images.kingdomofloathing.com/otherimages/friarplants/plant20.gif alt="Pitcher Plant (Restores MP after combat)" title="Pitcher Plant (Restores MP after combat)"></td></tr></table><br><table><tr><Td>You clap your hands, and a sheen of oily black sauce forms on your foe's skin.</td></tr></table><table><tr><Td></td></tr></table><!--familiarmessage--><center><table><tr><td align=center valign=center><img src="http://images.kingdomofloathing.com/itemimages/spelunker.gif" width=30 height=30></td><td valign=center>You hear some pickaxe noises from behind you.  Sunderland Jones tosses you a chunk of ore.<center><table class="item" style="float: none" rel="id=1675&s=25&q=0&d=1&g=0&t=1&n=1&m=0&p=0&u=."><tr><td><img src="http://images.kingdomofloathing.com/itemimages/cardore.gif" alt="cardboard ore" title="cardboard ore" class=hand onClick='descitem(582580469)'></td><td valign=center class=effect>You acquire an item: <b>cardboard ore</b></td></tr></table></center></td></tr></table></center><table><tr><Td></td></tr></table><table><tr><Td><p>There is a deafening shriek, and the mortar shell strikes the ground in front of your foe, bursting open and showering it with vintage erotic video box sets, dealing <font color=blueviolet><b>1872</b></font> damage.</td></tr></table><table><tr><Td><p>The weaksauce seethes and glistens, sapping strength from it.<center><table><tr><td><img src=http://images.kingdomofloathing.com/itemimages/nicesword.gif width=30 height=30 alt="Monster Attack" title="Monster Attack"></td><td valign=center>Monster attack power reduced by <b>6</td></tr></table></center><center><table><tr><td><img src=http://images.kingdomofloathing.com/itemimages/whiteshield.gif width=30 height=30 alt="Monster Defense" title="Monster Defense"></td><td valign=center>Monster defense reduced by <b>4</td></tr></table></center></td></tr></table><p><center>You win the fight!<!--WINWINWIN--><p><p>You absorb 4 Soulsauce from your opponent.<P>The coating of weaksauce explodes.  You draw as much of the energy as you can into yourself before it dissipates.<center><Table><tr><td><img src="http://images.kingdomofloathing.com/itemimages/mp.gif" height=30 width=30></td><td valign=center class=effect>You gain 50 Mana Points.</td></tr></table></center><p>The Stealing Magnolia jokes that there's so much static electricity in the room, it's picking everything up but boys and money. Then it helps you look for more items.<p>The Aloe Guv'nor guzzles some HP sauce, then restores some of your HP.<center><table><tr><td><img src="http://images.kingdomofloathing.com/itemimages/hp.gif" height=30 width=30></td><td valign=center class=effect>You gain 20 hit points.</td></tr></table></center><p>The Pitcher Plant pours you some ginger ale. It's good for what ails you.<center><Table><tr><td><img src="http://images.kingdomofloathing.com/itemimages/mp.gif" height=30 width=30></td><td valign=center class=effect>You gain 6 Mana Points.</td></tr></table></center><!--familiarmessage--><center><table><tr><td align=center valign=center><img src="http://images.kingdomofloathing.com/itemimages/spelunker.gif" width=30 height=30></td><td valign=center>Sunderland Jones surveys the scene from your back and sighs.</td></tr></table></center><!--familiarmessage--><center><table><tr><td align=center valign=center><img src="http://images.kingdomofloathing.com/itemimages/spanglehat.gif" width=30 height=30></td><td valign=center>Gron tosses the hat to the ground and does a kind of disco hat dance around it, shouting "Olé , olé , stayin' alive!"</td></tr></table></center><p>You gain 2 Muscleboundness.<bR>You gain 10 Enchantedness.<bR>You gain 6 Chutzpah.<bR><p><a name="end"></a><p><a href="adventure.php?snarfblat=460">Adventure Again (The X-32-F Combat Training Snowman)</a><p><a href="place.php?whichplace=snojo">Go back to The Snojo</a></center><script>parent.charpane.location.href="charpane.php";</script><script language="javascript">function updateParseItem(iid, field, info) {var tbl = $('#ic'+iid);var data = parseItem(tbl);if (!data) return;data[field] = info;var out = [];for (i in data) {if (!data.hasOwnProperty(i)) continue;out.push(i+'='+data[i]);}tbl.attr('rel', out.join('&'));}function parseItem(tbl) {tbl = $(tbl);var rel = tbl.attr('rel');var data = {};if (!rel) return data;var parts = rel.split('&');for (i in parts) {if (!parts.hasOwnProperty(i)) continue;var kv = parts[i].split('=');tbl.data(kv[0], kv[1]);data[kv[0]] = kv[1];}return data;}</script><script type="text/javascript" src="http://images.kingdomofloathing.com/scripts/pop_query.20130705.js"></script><script type="text/javascript" src="http://images.kingdomofloathing.com/scripts/ircm.20150220.js"></script><script type="text/javascript">function pop_ircm_contents(i, some) {var contents = '',shown = 0,da = ' <a href="#" rel="?" class="small dojaxy">[some]</a> <a href="#" rel="',db = '" class="small dojaxy">[all]</a>',dc = '<div style="width:100%; padding-bottom: 3px;" rel="',dd = '<a href="#" rel="1" class="small dojaxy">[';one = 'one'; ss=some;if (i.d==1 && i.s>0) { shown++;contents += dc + 'sellstuff.php?action=sell&ajax=1&type=quant&whichitem%5B%5D=IID&howmany=NUM&pwd=a788a1be71515189a3d54ccfacf1d6c9" id="pircm_'+i.id+'"><b>Auto-Sell ('+i.s+' meat):</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.q==0 && i.g==0 && i.t==1) { shown++;contents += dc + 'managestore.php?action=additem&qty1=NUM&item1=IID&price1=&limit1=&ajax=1&pwd=a788a1be71515189a3d54ccfacf1d6c9" id="pircm_'+i.id+'"><b>Stock in Mall:</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.q==0 && i.p==0 && i.u=="q" && i.d==1 && i.t==1) { shown++;contents += dc + 'craft.php?action=pulverize&ajax=1&smashitem=IID&qty=NUM&pwd=a788a1be71515189a3d54ccfacf1d6c9" id="pircm_'+i.id+'"><b>Pulverize:</b> '+dd+one+']</a>';if (ss) { contents += da + i.n + db;}contents += '</div>';}one = 'one'; ss=some;if (i.u && i.u != ".") { shown++;contents += dc + 'inv_'+(i.u=="a"?"redir":(lab=(i.u=="u"?"use":(i.u=="e"?"eat":(i.u=="b"?"booze":(i.u=="s"?"spleen":"equip"))))))+'.php?ajax=1&whichitem=IID&itemquantity=NUM&quantity=NUM'+(i.u=="q"?"&action=equip":"")+'&pwd=a788a1be71515189a3d54ccfacf1d6c9" id="pircm_'+i.id+'"><b>'+ucfirst(unescape(i.ou ? i.ou.replace(/\+/g," ") : (lab=="booze"?"drink":lab)))+':</b> '+dd+one+']</a>';if (ss && i.u != 'q' && !(i.u=='u' && i.m==0)) { contents += da + i.n + db;}contents += '</div>';}return [contents, shown];}var todo = [];function nextAction() {var next_todo = todo.shift();if (next_todo) {eval(next_todo);}}function dojax(dourl, afterFunc, hoverCaller, failureFunc, method, params) {$.ajax({type: method || 'GET', url: dourl, cache: false,data: params || null,global: false,success: function (out) {nextAction();if (out.match(/no\|/)) {var parts = out.split(/\|/);if (failureFunc) failureFunc(parts[1]);else if (window.dojaxFailure) window.dojaxFailure(parts[1]);else if (top.chatpane.handleMessage) top.chatpane.handleMessage({type: 'event', msg: 'Oops!  Sorry, Dave, you appear to be ' + parts[1]});else  $('#ChatWindow').append('<font color="green">Oops!  Sorry, Dave, you appear to be ' + parts[1] + '.</font><br />' + "\n");return;}if (hoverCaller)  {float_results(hoverCaller, out);if (afterFunc) { afterFunc(out); }return;}$(top.mainpane.document).find("#effdiv").remove(); if(!window.dontscroll || (window.dontscroll && dontscroll==0)) { window.scroll(0,0);}var $eff = $(top.mainpane.document).find('#effdiv');if ($eff.length == 0) {var d = top.mainpane.document.createElement('DIV');d.id = 'effdiv';var b = top.mainpane.document.body;if ($('#content_').length > 0) {b = $('#content_ div:first')[0];}b.insertBefore(d, b.firstChild);$eff = $(d);}$eff.find('a[name="effdivtop"]').remove().end().prepend('<a name="effdivtop"></a><center>' + out + '</center>').css('display','block');if (!window.dontscroll || (window.dontscroll && dontscroll==0)) {top.mainpane.document.location = top.mainpane.document.location + "#effdivtop";}if (afterFunc) { afterFunc(out); }}});}</script></div><script>jQuery(function ($) { var mon = $("#monpic");$("#shiftleft").append(mon).css("width", 200).css("float" ,"left");$("#shiftright").css("margin-left", 200+ 10).show();});</script></td></tr></table></center></td></tr><tr><td height=4></td></tr></table></center></body></html>
 
Last edited:
To do : snojoSetting should default to mainstat on ascension if snojoAvailable is true. (because this is how it changes on ascension - am not saying we should set it)
 
Last edited:
To do : snojoSetting should default to mainstat on ascension if snojoAvailable is true. (because this is how it changes on ascension - am not saying we should set it)

You could parse that from the console page. When I tried to fight the snowmen without visiting the console first this new ascension, it gave me a message:

Code:
The X-32-F Combat Training Snowman is currently deactivated. You should turn it on using the nearby controle console before you try to fight it.

So you might have to always visit it first?
 
New item:

--------------------
8701 training helmet 689206959 traininghelmet.gif hat q 0
training helmet 100 Mox: 10
Item training helmet Initiative: -50, Item Drop: +25, Moxie Percent: +25
--------------------
 
Getting a bunch of lot of 1 round negative effects in combat:

Code:
--------------------
2033	Bad Haircut	comb.gif	a9a379fdd526c1726e6aa306d3a4fc50
Effect	Bad Haircut	Moxie Percent: -50
--------------------
--------------------
2032	Hypnotized	spiral.gif	cfbc5824bd4c6d04b114aeb3ebb194b7
Effect	Hypnotized	Mysticality Percent: -50
--------------------
--------------------
1992	Bruised	boxinggloves.gif	c535991f2b389b9e91c3ea415ddaa114
Effect	Bruised	Muscle: -100, Mysticality: -100, Moxie: -100
--------------------
--------------------
1767	Half-Drained	lightning.gif	d08b92c0f0b06f462a27f043859a4cb0
Effect	Half-Drained	Maximum MP Percent: -50
--------------------
--------------------
1766	Half-Blooded	moon3.gif	cdfa42736c8d286116cb695d98278a41
Effect	Half-Blooded	Maximum HP Percent: -50
--------------------
--------------------
2024	Relaxed Muscles	notes.gif	7aaa46cc98e6af82f4d6437b1192cd36
Effect	Relaxed Muscles	Muscle Percent: -50
--------------------
 
There is a notable bug with Snojo support at this time. Currently fights in the Snojo are not parsing. Note the following from my session log:

Code:
[47] The X-32-F Combat Training Snowman
Encounter: the X-32-F Combat Training Snowman
Round 0: bale wins initiative!
Round 1: bale casts SUMMON LOVE GNATS!
Round 2: bale casts SUMMON LOVE STINKBUG!
Round 3: bale attacks!
Round 4: bale casts SUMMON LOVE MOSQUITO!

[47] The X-32-F Combat Training Snowman
Encounter: the X-32-F Combat Training Snowman
Round 0: bale wins initiative!
Round 1: bale casts SUMMON LOVE GNATS!
Round 2: bale casts SUMMON LOVE STINKBUG!
Round 3: bale attacks!
Round 4: bale casts SUMMON LOVE MOSQUITO!
Round 5: bale casts LUNGE SMACK!

[47] The X-32-F Combat Training Snowman
Encounter: the X-32-F Combat Training Snowman
Round 0: bale wins initiative!
Round 1: bale casts SUMMON LOVE GNATS!
Round 2: bale casts SUMMON LOVE STINKBUG!
Round 3: bale casts LUNGE SMACK!
Round 4: bale casts LUNGE SMACK!
Round 5: bale casts LUNGE SMACK!

These fights did all take place on turn 47. That much is correct. But note the complete lack of damage numbers and familiar actions! It doesn't even show the experience gained when the fight ended.

Of particular note, my familiar dropped an item in that last fight, but KoL did not parse it and mark it off against my limited drops.

HTML:
<body>
<img src='/images/itemimages/blank.gif' id='dragged'><div id='debug'></div><div class=contextmenu id='skillmenu'></div><div class=contextmenu id='itemsmenu'></div><div id=topbar><center><table class=actionbar cellpadding=0 cellspacing=1><tbody><tr class=label><td></td><td></td><td></td><td></td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>0</td><td>–</td><td>=</td><td></td><td></td><td></td></tr><tr class=blueback><td><a href='adventure.php?snarfblat=460'><img src='/images/itemimages/plexpock.gif'></td><td class=spacer></td><td><img src='/images/itemimages/book3.gif' id='skills'></td><td class=spacer></td><td><img src='/images/itemimages/blank.gif' id='button1'></td><td><img src='/images/itemimages/blank.gif' id='button2'></td><td><img src='/images/itemimages/blank.gif' id='button3'></td><td><img src='/images/itemimages/blank.gif' id='button4'></td><td><img src='/images/itemimages/blank.gif' id='button5'></td><td><img src='/images/itemimages/blank.gif' id='button6'></td><td><img src='/images/itemimages/blank.gif' id='button7'></td><td><img src='/images/itemimages/blank.gif' id='button8'></td><td><img src='/images/itemimages/blank.gif' id='button9'></td><td><img src='/images/itemimages/blank.gif' id='button10'></td><td><img src='/images/itemimages/blank.gif' id='button11'></td><td><img src='/images/itemimages/blank.gif' id='button12'></td><td valign=center align=center class=page><a class=nounder href='javascript:pageup();'><img src='/images/otherimages/tinyup.gif' class=updown></a><br><span id='page_out'></span><br><a class=nounder href='javascript:pagedown();'><img src='/images/otherimages/tinydown.gif' class=updown></a></td><td class=spacer></td><td><img src='/images/itemimages/backpack.gif' id='items'></td></tr><tr class=label><td>again</td><td></td><td>skills</td><td></td><td id='qty1'></td><td id='qty2'></td><td id='qty3'></td><td id='qty4'></td><td id='qty5'></td><td id='qty6'></td><td id='qty7'></td><td id='qty8'></td><td id='qty9'></td><td id='qty10'></td><td id='qty11'></td><td id='qty12'></td><td></td><td></td><td>items</td></tr></tbody></table></center></div><div class=content id='content_'><div id='effdiv' style='display: none'></div><div style='overflow: auto'><center><!--faaaaaaart--><table  width=95%  cellspacing=0 cellpadding=0><tr><td style="color: white;" align=center bgcolor=blue><b>Combat: Round 6!</b></td></tr><tr><td style="padding: 5px; border: 1px solid blue;"><center><table><tr><td><div id="shiftleft"></div><div id="shiftright"><center><table><tr><td><div id='monpic'><br><img style='position: relative; z-index: 9998; margin-top:-8px' src=/images/otherimages/combatsnowman/head.png alt="Head: This makes the snowman more relatable as an opponent." title="Head: This makes the snowman more relatable as an opponent."><img style='position: relative; z-index: 9997; margin-top:-8px' src=/images/otherimages/combatsnowman/hpbeefer.png alt="Ice Ball: Increases the snowman's Maximum HP." title="Ice Ball: Increases the snowman's Maximum HP."><img style='position: relative; z-index: 9996; margin-top:-8px' src=/images/otherimages/combatsnowman/spellarmor.png alt="Chrome Plate: Gives the snowman 10% resistance to spells." title="Chrome Plate: Gives the snowman 10% resistance to spells."><img style='position: relative; z-index: 9995; margin-top:-8px' src=/images/otherimages/combatsnowman/colddamager.png alt="Dual Icicle Knives: Deals Cold damage each round." title="Dual Icicle Knives: Deals Cold damage each round."><img style='position: relative; z-index: 9994; margin-top:-8px' src=/images/otherimages/combatsnowman/base.png alt="Base: This part stops the functional parts of the snowman from touching the ground." title="Base: This part stops the functional parts of the snowman from touching the ground."></div></td><td valign="top"></td><td valign=center>You're fighting <span id='monname'>the X-32-F Combat Training Snowman</span></td><td width=30></td><td><table><tr><td width=30><img src=/images/itemimages/nicesword.gif width=30 height=30 alt="Enemy's Attack Power" title="Enemy's Attack Power"></td><td width=50 valign=center align=left><b><font size=+2>55</font></b></td><td><img src=/images/itemimages/sprocket.gif alt="This monster is a Construct" title="This monster is a Construct"></td></tr><tr><td width=30><img src=/images/itemimages/whiteshield.gif width=30 height=30 alt="Enemy's Defense" title="Enemy's Defense"></td><td width=50 valign=center align=left><b><font size=+2>91</font></b></td><td><img src=/images/itemimages/snowflake.gif width=30 height=30 alt="This monster is Cold.  Cold is weak against Hot and Spooky." title="This monster is Cold.  Cold is weak against Hot and Spooky."></td></tr><tr><td width=30><img src=/images/itemimages/hp.gif width=30 height=30 alt="Enemy's Hit Points" title="Enemy's Hit Points"></td><td width=50 valign=center align=left><b><font size=+2>0</font></b></td><td><img src=/images/itemimages/snail.gif alt="Never wins initiative" title="Never wins initiative"></td></tr></table></td></tr></table><br><table><tr><Td></td></tr></table><table><tr><Td><p>You paw at the ground like a bull (or like a bull seal, maybe,) then lunge toward your foe, smacking it for 26 (<b>+4</b>) (<font color=blue><b>+1</b></font>) damage.<b><font color=blue> BIFF! BOINK! ZOT! ZAP! SMACK! ZAP!</font></b><center><table><tr><td><img src="/images/itemimages/hp.gif" height=30 width=30></td><td valign=center class=effect>You gain 8 hit points.</td></tr></table></center></td></tr></table><table><tr><Td></td></tr></table><table><tr><Td></td></tr></table><table><tr><Td><p>Your love stinkbug simultaneously bites and disgusts your opponent, dealing 8 (<font color=green><b>+9</b></font>) damage.</td></tr></table><script>if (typeof state != 'undefined') state['fightover'] = true; window.fightover = true;</script><div id='fightform' class='hideform'><p><center><table><a name="end"><form name=attack action=fight.php method=post><input type=hidden name=action value="attack"><tr><td align=center><input id='tack' picurl=club onclick="return killforms(this)"  class=button type=submit value="Attack with your seal-clubbing club"></td></tr></form></a><form name=useitem action=fight.php method=post><input type=hidden name=action value="useitem"><tr><td align=left><select name=whichitem><option value=0>(select an item)</option><option picurl=8ball value=1907>8-ball (5)</option><option picurl=poisoncup value=829>anti-anti-antidote (4)</option><option picurl=syringe3 value=7383>DNA extraction syringe (1)</option><option picurl=balm value=232>Doc Galaktik's Ailment Ointment (1)</option><option picurl=elixir value=234>Doc Galaktik's Homeopathic Elixir (1)</option><option picurl=hotashes value=7548>hot ashes (1)</option><option picurl=firecrack value=747>Knob Goblin firecracker (3)</option><option picurl=leftovers value=1777>leftovers of indeterminate origin (1)</option><option picurl=tooth value=2>seal tooth (1)</option></select><br><select name=whichitem2><option value=0>(select an item)</option><option  value=1907>8-ball (5)</option><option  value=829>anti-anti-antidote (4)</option><option  value=7383>DNA extraction syringe (1)</option><option  value=232>Doc Galaktik's Ailment Ointment (1)</option><option  value=234>Doc Galaktik's Homeopathic Elixir (1)</option><option  value=7548>hot ashes (1)</option><option  value=747>Knob Goblin firecracker (3)</option><option  value=1777>leftovers of indeterminate origin (1)</option><option  value=2>seal tooth (1)</option></select> <input class=button type=submit onclick="return killforms(this);" value="Use Item(s)"></td></tr></form><form name=skill action=fight.php method=post><input type=hidden name=action value="skill"><tr><td align=center><select name=whichskill><option value='none'>(select a skill)</option><option value="2" picurl="fireball" >Chronic Indigestion (5 Muscularity Points)</option><option value="15" picurl="commacha" >CLEESH (10 Muscularity Points)</option><option value="19" picurl="snout" >Transcendent Olfaction (40 Muscularity Points)</option><option value="29" picurl="campfire" >Conjure Relaxing Campfire (30 Muscularity Points)</option><option value="31" picurl="snowflake" >Maximum Chill (30 Muscularity Points)</option><option value="37" picurl="wink" >Inappropriate Backrub (30 Muscularity Points)</option><option value="33" picurl="blooddrops" >Mudbath (30 Muscularity Points)</option><option value="43" picurl="creepysleepy" >Creepy Lullaby (30 Muscularity Points)</option><option value="79" picurl="tattle" >Tattle (7 Muscularity Points)</option><option value="117" picurl="rrainbow" >Belch The Rainbow (5 Muscularity Points)</option><option value="93" picurl="pasta" >Carbohydrate Cudgel (30 Muscularity Points)</option><option value="94" picurl="splattersmash" >Splattersmash (25 Muscularity Points)</option><option value="97" picurl="turtleini" >Turtleini (35 Muscularity Points)</option><option value="98" picurl="sauceshell" >Sauceshell (30 Muscularity Points)</option><option value="99" picurl="whispers" >Conspiratorial Whispers (25 Muscularity Points)</option><option value="102" picurl="shadownoodles" >Shadow Noodles (30 Muscularity Points)</option><option value="104" picurl="splashdance" >Splashdance (30 Muscularity Points)</option><option value="1022" picurl="clobber" >Clobber (0 Muscularity Points)</option><option value="1023" picurl="hookspear" >Harpoon! (30 Muscularity Points)</option><option value="1004" picurl="club2" selected>Lunge Smack (1 Muscularity Point)</option><option value="1003" picurl="club" >Thrust-Smack (3 Muscularity Points)</option><option value="1032" picurl="wallop" >Furious Wallop (1 Gal. of Fury)</option><option value="1033" picurl="clubfoot" >Club Foot (8 Muscularity Points)</option><option value="1005" picurl="cudgel" >Lunging Thrust-Smack (8 Muscularity Points)</option><option value="1014" picurl="ballbat" >Batter Up! (5 Gal. Fury)</option><option value="1037" picurl="cavalcade" >Cavalcade of Fury (15 Muscularity Points)</option><option value="1038" picurl="northernexp" >Northern Explosion (16 Muscularity Points)</option><option value="2022" picurl="ssnapper" >Spectral Snapper (20 Muscularity Points)</option><option value="2023" picurl="toss" >Toss (1 Muscularity Point)</option><option value="2024" picurl="leviatuga" >Summon Leviatuga (40 Muscularity Points)</option><option value="2003" picurl="headbutt" >Headbutt (3 Muscularity Points)</option><option value="2028" picurl="shellup" >Shell Up (6 Muscularity Points)</option><option value="2032" picurl="spiritsnap" >Spirit Snap (10 Muscularity Points)</option><option value="2015" picurl="kneebutt" >Kneebutt (4 Muscularity Points)</option><option value="3019" picurl="fearfulfet" >Fearful Fettucini (32 Muscularity Points)</option><option value="3020" picurl="line" >Spaghetti Spear (1 Muscularity Point)</option><option value="3003" picurl="ravshurikens" >Ravioli Shurikens (4 Muscularity Points)</option><option value="3025" picurl="pizzacut" >Utensil Twist (1 Muscularity Point)</option><option value="3004" picurl="entnoodles" >Entangling Noodles (3 Muscularity Points)</option><option value="3009" picurl="lasbandage" >Lasagna Bandages (6 Muscularity Points)</option><option value="3005" picurl="pastacannon" >Cannelloni Cannon (8 Muscularity Points)</option><option value="3007" picurl="stuffshell" >Stuffed Mortar Shell (8 Muscularity Points)</option><option value="3008" picurl="ironspoon" >Weapon of the Pastalord (32 Muscularity Points)</option><option value="4020" picurl="salsaball" >Salsaball (1 Muscularity Point)</option><option value="4024" picurl="scurse1" >Curse of Vichyssoise (2 Muscularity Points)</option><option value="4003" picurl="saucestream" >Stream of Sauce (2 Muscularity Points)</option><option value="4014" picurl="saucysalve" >Saucy Salve (4 Muscularity Points)</option><option value="4005" picurl="raincloud" >Saucestorm (6 Muscularity Points)</option><option value="4029" picurl="scurse3" >Curse of Marinara (4 Muscularity Points)</option><option value="4009" picurl="saucewave" >Wave of Sauce (10 Muscularity Points)</option><option value="4031" picurl="scurse2" >Curse of the Thousand Islands (6 Muscularity Points)</option><option value="4032" picurl="saucecicle" >Saucecicle (12 Muscularity Points)</option><option value="4012" picurl="saucegeyser" >Saucegeyser (24 Muscularity Points)</option><option value="4034" picurl="scurse4" >Curse of Weaksauce (8 Muscularity Points)</option><option value="5019" picurl="terrortango" >Tango of Terror (8 Muscularity Points)</option><option value="5021" picurl="hernia" >Suckerpunch (1 Muscularity Point)</option><option value="5003" picurl="eyepoke" >Disco Eye-Poke (2 Muscularity Points)</option><option value="5005" picurl="dance1" >Disco Dance of Doom (3 Muscularity Points)</option><option value="5008" picurl="dance2" >Disco Dance II: Electric Boogaloo (4 Muscularity Points)</option><option value="5012" picurl="facestab" >Disco Face Stab (8 Muscularity Points)</option><option value="5033" picurl="knifedark" >Knife in the Dark (10 Muscularity Points)</option><option value="5035" picurl="irondagger" >Disco Shank (13 Muscularity Points)</option><option value="5036" picurl="dance3" >Disco Dance 3: Back in the Habit (10 Muscularity Points)</option><option value="5037" picurl="fire" >Disco Inferno (15 Muscularity Points)</option><option value="6025" picurl="breath" >Sing (1 Muscularity Point)</option><option value="6029" picurl="brokenflute" >Dissonant Riff (2 Muscularity Points)</option><option value="6034" picurl="cdlm" >Concerto de los Muertos (8 Muscularity Points)</option><option value="6037" picurl="bawdyrefrain" >Bawdy Refrain (11 Muscularity Points)</option><option value="7245" picurl="lb_mosquito" >Summon Love Mosquito (0 Muscularity Points)</option><option value="17047" picurl="exclam" >Mild Curse (1 Muscularity Point)</option></select> <input class=button type=submit onclick="return killforms(this);" value="Use Skill"></td></tr></form><form name=macro action=fight.php method=post><input type=hidden name=action value="macro"><input type="hidden" name="macrotext" value=""><tr><td align=center><select name=whichmacro><option value='0'>(select a macro)</option><option value="80723" picurl="grimglaive" >Spam Attack</option><option value="139768" picurl="krakfist" >Spam Fist of the Mummy</option><option value="81441" picurl="vampirefangs" >Spam Infection</option><option value="134959" picurl="dv_mark6" >Stasis 'till I Die</option><option value="18415" picurl="heboulder" >Yellow Ray</option></select> <input class=button type=submit onclick="return killforms(this);" value="Execute Macro"></td></tr></form><form name=runaway action=fight.php method=post><input type=hidden name=action value="runaway"><tr><td align=center><input class=button onclick="return killforms(this);" type=submit value="Run Away"></td></tr></form></table></center></div><p><center>You win the fight!<!--WINWINWIN--><p><!--familiarmessage--><center><table><tr><td align=center valign=center><img src="/images/itemimages/lb_dragonfly.gif" width=30 height=30></td><td valign=center>A love dragonfly buzzes softly in your ear.</td></tr></table></center><center><Table><tr><td>You gain 5 Smarm.</td></tr></table></center><!--familiarmessage--><center><table><tr><td align=center valign=center><img src="/images/itemimages/fistturkey.gif" width=30 height=30></td><td valign=center><b>Boo gains a pound!</b></td></tr></table></center><!--familiarmessage--><center><table><tr><td align=center valign=center><img src="/images/itemimages/fistturkey.gif" width=30 height=30></td><td valign=center>Boo does the Funky Turkey, which is like the Funky Chicken, but more violent.</td></tr></table></center><!--familiarmessage--><center><table><tr><td align=center valign=center><img src="/images/itemimages/fistturkey.gif" width=30 height=30></td><td valign=center>Boo squawks, drops into a squat, and stands up with a bottle of booze under its wing. Don't ask where it came from.</td></tr></table></center><center><table class="item" style="float: none" rel="id=7923&s=10&q=0&d=1&g=0&t=1&n=1&m=0&p=0&u=b"><tr><td><img src="/images/itemimages/turkeywhiskey.gif" alt="Agitated Turkey" title="Agitated Turkey" class=hand onClick='descitem(835506983)'></td><td valign=center class=effect>You acquire an item: <b>Agitated Turkey</b> <font size=1>[<a href="javascript:singleUse('inv_booze.php','which=1&whichitem=7923&pwd=534d39f99d8986a0973e0635b4e0de29&ajax=1');void(0);">drink</a>]</font></td></tr></table></center><p>You gain 9 Muscleboundness.<bR>You gain 4 Wizardliness.<bR>You gain 5 Sarcasm.<bR><p><a name="end"></a><p><a href="adventure.php?snarfblat=460">Adventure Again (The X-32-F Combat Training Snowman)</a><p><a href="place.php?whichplace=snojo">Go back to The Snojo</a></center><script>parent.charpane.location.href="charpane.php";</script><script language="javascript">
 
Last edited:
Yup, as I noted in my first post, Mafia isn't parsing the fights - I guess the format differs in some way from other fights which breaks FightRequest.java processing. Hopefully someone will have time to look at it sometime.
 
Looks like the issue is that the fight tables are within a "div", which we seem to be skipping as an html link in processnode() for some reason ?

Am going to remove the check for name.equals( "div" ) and see if that helps.
 
r16588 should fix fight parsing.

I suspect it'll break something else, but the fix we put in for that, whatever it is, will not be skipping everything in top level div's, that's just too likely to break things.
 
Ok, what else do we want here ?

I'm guessing :
Set mode to main stat on ascension, so we don't need to visit the snojo to find out. (saved server hit, increased accuracy on stat mode tracking below)
Track number of free fights had today. Can verify this with a count of number of middle snowman parts. (make sure we use the free fights)
Track free fight wins with each stat mode, reset at ascension. (to measure progress to next consumable, item and/or skill)
Add skill items when known.
 
I notice that I am now fighting "the foul-mouthed, cloned X-32-F Combat Training Snowman". Looks like it has OCRS modifiers.
I also notice that it has Manuel stats of Ark 69 Def 151 HP 219, but KoLmafia says Atk 1 Def 1 HP 1 Type: none.
 
The monpic is all annotated!

Code:
<div id='monpic'><br><img style='position: relative; z-index: 9998; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/head.png alt="Head: This makes the snowman more relatable as an opponent." title="Head: This makes the snowman more relatable as an opponent."><img style='position: relative; z-index: 9997; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/physdamager.png alt="High-Speed Broom: Deals Physical damage each round." title="High-Speed Broom: Deals Physical damage each round."><img style='position: relative; z-index: 9996; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/spookyresistor.png alt="Opaque Sunglasses: Gives the snowman 50% resistance to Spooky damage." title="Opaque Sunglasses: Gives the snowman 50% resistance to Spooky damage."><img style='position: relative; z-index: 9995; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/stenchpenetrator.png alt="Jumbo Air Freshener: Lets the snowman penetrate 5 levels of Stench Resistance." title="Jumbo Air Freshener: Lets the snowman penetrate 5 levels of Stench Resistance."><img style='position: relative; z-index: 9994; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/hotdamager.png alt="Professional-Strength Hair Dryer: Deals Hot damage each round." title="Professional-Strength Hair Dryer: Deals Hot damage each round."><img style='position: relative; z-index: 9993; margin-top:-8px' src=http://images.kingdomofloathing.com/otherimages/combatsnowman/base.png alt="Base: This part stops the functional parts of the snowman from touching the ground." title="Base: This part stops the functional parts of the snowman from touching the ground."></div>
 
The stats stuff we can probably build if the base progression of stats is known, together with counting the number of snowman parts that alter that. Maybe something like some of the modifier code from OCRS can handle the additional bonuses and penalties. We've not done it for the previous areas like this, but if someone wants a project . . .
 
I have a fix to make it parse the "var ocrs".

I notice that the Manuel-style stats are present:

Code:
<table><tr><td width=30><img src=http://images.kingdomofloathing.com/itemimages/nicesword.gif width=30 height=30 alt="Enemy's Attack Power" title="Enemy's Attack Power"></td><td width=50 valign=center align=left><b><font size=+2>69</font></b></td><td><img src=http://images.kingdomofloathing.com/itemimages/sprocket.gif alt="This monster is a Construct" title="This monster is a Construct"></td></tr><tr><td width=30><img src=http://images.kingdomofloathing.com/itemimages/whiteshield.gif width=30 height=30 alt="Enemy's Defense" title="Enemy's Defense"></td><td width=50 valign=center align=left><b><font size=+2>151</font></b></td><td><img src=http://images.kingdomofloathing.com/itemimages/snowflake.gif width=30 height=30 alt="This monster is Cold.  Cold is weak against Hot and Spooky." title="This monster is Cold.  Cold is weak against Hot and Spooky."></td></tr><tr><td width=30><img src=http://images.kingdomofloathing.com/itemimages/hp.gif width=30 height=30 alt="Enemy's Hit Points" title="Enemy's Hit Points"></td><td width=50 valign=center align=left><b><font size=+2>219</font></b></td><td><img src=http://images.kingdomofloathing.com/itemimages/snail.gif alt="Never wins initiative" title="Never wins initiative"></td></tr></table>
but, unlike real Manuel stats, there is not actually a "var monsterstats" present with the hp, def, and atk. Otherwise, we'd just pick them up in FightRequest.processNode via MANUEL_PATTERN.

I've heard that other monsters which don't go into Manuel now also show stats like that.

Perhaps FightRequest.parseFightHTML could look for that kind of table node and parse it to call MonsterStatusTracker.setManuelStats( attack, defense, hp ), if there is no "var monsterstats" in the text.
 
Last edited:
The stats stuff we can probably build if the base progression of stats is known, together with counting the number of snowman parts that alter that. Maybe something like some of the modifier code from OCRS can handle the additional bonuses and penalties. We've not done it for the previous areas like this, but if someone wants a project . . .
Are Dr. Weirdeux monsters annotated the same way?

Seems like we could look at the "monpic" div and build a list of all the images (.png for the snowman) and make that available - or parse and use as appropriate. From my example:

otherimages/combatsnowman/head.png title="Head: This makes the snowman more relatable as an opponent."
otherimages/combatsnowman/physdamager.png title="High-Speed Broom: Deals Physical damage each round."
otherimages/combatsnowman/spookyresistor.png title="Opaque Sunglasses: Gives the snowman 50% resistance to Spooky damage."
otherimages/combatsnowman/stenchpenetrator.png title="Jumbo Air Freshener: Lets the snowman penetrate 5 levels of Stench Resistance."
otherimages/combatsnowman/hotdamager.png title="Professional-Strength Hair Dryer: Deals Hot damage each round."
otherimages/combatsnowman/base.png title="Base: This part stops the functional parts of the snowman from touching the ground."

We'd key on the file name, not the title, which is a user friendly description of what the part does.
 
Back
Top