--- upstream/build\game.min.js
+++ browser/build\game.min.js
@@ -468,10 +468,10 @@
b.forEach(function(b){d+=""+b+" "});return d}function g(){var a="",b=0;this.fields.forEach(function(c){if("text"===c.type)a+="";else if("select"===c.type)a+=m.call(this,c.text,c.options,c.id?c.id:b);else if("radio"===c.type)a+=k.call(this,c.text,c.options,c.id?c.id:b);else if("number"===c.type){var d=a,f=c.min,g=c.max;c="";a=d+c}else if("range"===c.type){var d=a,f=c.text,g=c.min,w=c.max,u=c.value;c=(f?""+f+"":"")+"";a=d+c}else"button"===c.type?(d=a,f=c.text,c="",a=d+c):"basic-text"===c.type&&
(a+="
"+c.text+"
");b++}.bind(this));return a}function f(){var a=0;this.fields.forEach(function(b){"button"===b.type&&$("#"+e.call(this,b.id?b.id:a)).click(b.callback);a++}.bind(this))}this.formName="default-form-"+formCounter+"-name-";formCounter++;"object"===typeof c&&(d=b,a=c,b=c=0);this.fields=a;this.header=d?d.header||null:null;this.message=d?d.message||null:null;this.cssClass=d?d.cssClass||null:null;Widget.apply(this,[{x:c,y:b,cssClass:this.cssClass}]);this.getValue=
-function(a){return this.el.find("#"+a).val()};this.values=function(){obj={};this.fields.forEach(function(a){obj[a.text]=this.getValue(a.text)},this);return obj};this.render=function(){this.el.html(g.call(this));this.message&&this.el.prepend(""+this.message+"
");this.header&&this.el.prepend(""+this.header+"
");this.container.append(this.el);f.call(this)}};var SimpleObject=function(c,b){this.x=c;this.y=b;this.spriteSheet;this.animations};var Enemy=function(c,b,a){this.x=c;this.y=b;this.level=a;this.hp=10*a;this.xp=100*a;this.movementSpeed=25*a;this.attackSpeed=1;this.defense=this.attack=a;this.scout=1.25*a;this.magic=a;this.initiative=10;this.vision=1;this.turnCounter=0;this.watchedElements=[];this.counter=0;this.moveSpeed=4;var d=this.hp;this.healthBarMaxWidth=18;this.healthBar=new createjs.Bitmap("../graphics/health_bar.png");this.healthBar.scaleX=this.healthBarMaxWidth/this.healthBar.image.width;this.healthBar.x=this.x;this.healthBar.y=
+function(a){return this.el.find("#"+a).val()};this.values=function(){obj={};this.fields.forEach(function(a){obj[a.text]=this.getValue(a.text)},this);return obj};this.render=function(){this.el.html(g.call(this));this.message&&this.el.prepend(""+this.message+"
");this.header&&this.el.prepend(""+this.header+"
");this.container.append(this.el);f.call(this)}};var SimpleObject=function(c,b){this.x=c;this.y=b;this.spriteSheet;this.animations};var Enemy=function(c,b,a){this.x=c;this.y=b;this.level=a;this.hp=10*a;this.xp=100*a;this.movementSpeed=25*a;this.attackSpeed=1;this.defense=this.attack=a;this.scout=1.25*a;this.magic=a;this.initiative=10;this.vision=1;this.turnCounter=0;this.watchedElements=[];this.counter=0;this.moveSpeed=4;var d=this.hp;this.healthBarMaxWidth=18;this.healthBar=new createjs.Bitmap("graphics/health_bar.png");this.healthBar.scaleX=this.healthBarMaxWidth/this.healthBar.image.width;this.healthBar.x=this.x;this.healthBar.y=
this.y-5;this.doTurn=function(){this.sprite.gotoAndPlay("move");var a=this.getNearestPlayer();a&&(renderer.moveObjectTo(this,a.animations.x-1,a.animations.y-1),calculateDamage(this,a))};this.getNearestPlayer=function(){for(var a=-1,b,c=0;cd)a=d,b=activeObjects[c]}return b};this.turn=function(){this.isWithinMaxDistance()&&this.doTurn();this.turnCounter=
0};this.isWithinMaxDistance=function(){for(var a=0;a=this.hp?(a.gainXP(this.xp),this.die()):(a=this.hp/d*this.healthBarMaxWidth,.2>this.hp/d&&(this.animations.removeChild(this.healthBar),
-this.healthBar=new createjs.Bitmap("../graphics/health_bar_red.png"),this.healthBar.x=this.x,this.healthBar.y=this.y-5,this.animations.addChild(this.healthBar)),0===a&&(a=1),this.healthBar.scaleX=a/this.healthBar.image.width)};this.die=function(){renderer.activeObjectsContainer.removeChild(this.animations);var a=activeObjects.indexOf(this);-1this.defense&&(this.defense=1);this.spriteSheet=new createjs.SpriteSheet({images:[loader.getResult("robot")],frames:{width:14,height:16,count:5},animations:{still:{frames:[0],next:"still",speed:1},move:{frames:[0,1,2],next:"move",speed:1},attack:{frames:[3,4],next:"attack",speed:1}}});this.animations=new createjs.Container;this.sprite=new createjs.Sprite(this.spriteSheet,
"still");this.sprite.x=this.x;this.sprite.y=this.y;this.animations.addChild(this.sprite,this.healthBar);renderer.activeObjectsContainer.addChild(this.animations);this.updateMovementAnimation=function(a,b){0a&&"walk-left"!==this.lastFrameDirection&&(this.lastFrameDirection="walk-left")};this.cleanUpMovement=function(){this.turnCounter=0;this.sprite.gotoAndPlay("still")}};Robot.prototype=new Enemy;
Robot.prototype.constructor=Robot;var Dragon=function(c,b,a){Enemy.call(this,c,b,a);this.vision=4;this.attackSpeed=1;this.movementSpeed=50*a;this.moveLength=4;this.magic=a+30;this.defense=2*a;this.hp=1*a;this.initiative=20;this.healthBar.x=this.x-23;1>this.defense&&(this.defense=1);this.spriteSheet=new createjs.SpriteSheet({images:[loader.getResult("dragon")],frames:{width:34,height:20,count:3},animations:{still:{frames:[0],next:"still",speed:3}}});this.animations=new createjs.Container;this.sprite=new createjs.Sprite(this.spriteSheet,
--- upstream/complexobjects\enemy.js
+++ browser/complexobjects\enemy.js
@@ -31,7 +31,7 @@
var maxHp = this.hp; // never changes once initialized
this.healthBarMaxWidth = 18;
- this.healthBar = new createjs.Bitmap("../graphics/health_bar.png");
+ this.healthBar = new createjs.Bitmap("graphics/health_bar.png");
this.healthBar.scaleX = this.healthBarMaxWidth / this.healthBar.image.width;
this.healthBar.x = this.x;
this.healthBar.y = this.y - 5;
@@ -127,7 +127,7 @@
if (this.hp / maxHp < 0.2) { // less than 20% hp, make the health bar red
this.animations.removeChild(this.healthBar);
- this.healthBar = new createjs.Bitmap("../graphics/health_bar_red.png");
+ this.healthBar = new createjs.Bitmap("graphics/health_bar_red.png");
this.healthBar.x = this.x;
this.healthBar.y = this.y - 5;
this.animations.addChild(this.healthBar);