').text(scene.notification).appendTo(desc);
-
+
// Draw the wanderer
Events.createFighterDiv('@', World.health, World.getMaxHealth()).attr('id', 'wanderer').appendTo(desc);
-
+
// Draw the enemy
Events.createFighterDiv(scene.chara, scene.health, scene.health).attr('id', 'enemy').appendTo(desc);
-
+
// Draw the action buttons
var btns = $('#buttons', Events.eventPanel());
-
+
var numWeapons = 0;
for(var k in World.Weapons) {
var weapon = World.Weapons[k];
@@ -106,21 +106,21 @@ var Events = {
// No weapons? You can punch stuff!
Events.createAttackButton('fists').prependTo(btns);
}
-
+
Events.createEatMeatButton().appendTo(btns);
if((Path.outfit['medicine'] || 0) !== 0) {
Events.createUseMedsButton().appendTo(btns);
}
-
+
// Set up the enemy attack timer
Events._enemyAttackTimer = Engine.setTimeout(Events.enemyAttack, scene.attackDelay * 1000);
},
-
+
createEatMeatButton: function(cooldown) {
if (cooldown == null) {
cooldown = Events._EAT_COOLDOWN;
}
-
+
var btn = new Button.Button({
id: 'eat',
text: _('eat meat'),
@@ -128,19 +128,19 @@ var Events = {
click: Events.eatMeat,
cost: { 'cured meat': 1 }
});
-
+
if(Path.outfit['cured meat'] === 0) {
Button.setDisabled(btn, true);
}
-
+
return btn;
},
-
+
createUseMedsButton: function(cooldown) {
if (cooldown == null) {
cooldown = Events._MEDS_COOLDOWN;
}
-
+
var btn = new Button.Button({
id: 'meds',
text: _('use meds'),
@@ -148,14 +148,14 @@ var Events = {
click: Events.useMeds,
cost: { 'medicine': 1 }
});
-
+
if((Path.outfit['medicine'] || 0) === 0) {
Button.setDisabled(btn, true);
}
-
+
return btn;
},
-
+
createAttackButton: function(weaponName) {
var weapon = World.Weapons[weaponName];
var cd = weapon.cooldown;
@@ -174,17 +174,17 @@ var Events = {
if(typeof weapon.damage == 'number' && weapon.damage > 0) {
btn.addClass('weaponButton');
}
-
+
for(var k in weapon.cost) {
if(typeof Path.outfit[k] != 'number' || Path.outfit[k] < weapon.cost[k]) {
Button.setDisabled(btn, true);
break;
}
}
-
+
return btn;
},
-
+
drawFloatText: function(text, parent) {
$('
').text(text).addClass('damageText').appendTo(parent).animate({
'bottom': '50px',
@@ -196,7 +196,7 @@ var Events = {
$(this).remove();
});
},
-
+
eatMeat: function() {
if(Path.outfit['cured meat'] > 0) {
Path.outfit['cured meat']--;
@@ -204,12 +204,12 @@ var Events = {
if(Path.outfit['cured meat'] === 0) {
Button.setDisabled($('#eat'), true);
}
-
+
var hp = World.health;
hp += World.meatHeal();
hp = hp > World.getMaxHealth() ? World.getMaxHealth() : hp;
World.setHp(hp);
-
+
if(Events.activeEvent()) {
var w = $('#wanderer');
w.data('hp', hp);
@@ -218,7 +218,7 @@ var Events = {
}
}
},
-
+
useMeds: function() {
if(Path.outfit['medicine'] > 0) {
Path.outfit['medicine']--;
@@ -226,12 +226,12 @@ var Events = {
if(Path.outfit['medicine'] === 0) {
Button.setDisabled($('#meds'), true);
}
-
+
var hp = World.health;
hp += World.medsHeal();
hp = hp > World.getMaxHealth() ? World.getMaxHealth() : hp;
World.setHp(hp);
-
+
if(Events.activeEvent()) {
var w = $('#wanderer');
w.data('hp', hp);
@@ -240,7 +240,7 @@ var Events = {
}
}
},
-
+
useWeapon: function(btn) {
if(Events.activeEvent()) {
var weaponName = btn.attr('id').substring(7).replace('-', ' ');
@@ -255,7 +255,7 @@ var Events = {
} else if($SM.get('character.punches') == 300 && !$SM.hasPerk('unarmed master')) {
$SM.addPerk('unarmed master');
}
-
+
}
if(weapon.cost) {
var mod = {};
@@ -311,7 +311,7 @@ var Events = {
}
}
}
-
+
var attackFn = weapon.type == 'ranged' ? Events.animateRanged : Events.animateMelee;
attackFn($('#wanderer'), dmg, function() {
if($('#enemy').data('hp') <= 0 && !Events.won) {
@@ -321,7 +321,7 @@ var Events = {
});
}
},
-
+
animateMelee: function(fighter, dmg, callback) {
var start, end, enemy;
if(fighter.attr('id') == 'wanderer') {
@@ -333,7 +333,7 @@ var Events = {
end = {'right': '25%'};
enemy = $('#wanderer');
}
-
+
fighter.stop(true, true).animate(start, Events._FIGHT_SPEED, function() {
var enemyHp = enemy.data('hp');
var msg = "";
@@ -359,13 +359,13 @@ var Events = {
}, Events.STUN_DURATION);
}
}
-
+
Events.drawFloatText(msg, $('.hp', enemy));
-
+
$(this).animate(end, Events._FIGHT_SPEED, callback);
});
},
-
+
animateRanged: function(fighter, dmg, callback) {
var start, end, enemy;
if(fighter.attr('id') == 'wanderer') {
@@ -377,7 +377,7 @@ var Events = {
end = {'right': '50%'};
enemy = $('#wanderer');
}
-
+
$('
').css(start).addClass('bullet').text('o').appendTo('#description')
.animate(end, Events._FIGHT_SPEED * 2, 'linear', function() {
var enemyHp = enemy.data('hp');
@@ -404,20 +404,20 @@ var Events = {
}, Events.STUN_DURATION);
}
}
-
+
Events.drawFloatText(msg, $('.hp', enemy));
-
+
$(this).remove();
if(typeof callback == 'function') {
callback();
}
});
},
-
+
enemyAttack: function() {
-
+
var scene = Events.activeEvent().scenes[Events.activeScene];
-
+
if(!$('#enemy').data('stunned')) {
var toHit = scene.hit;
toHit *= $SM.hasPerk('evasive') ? 0.8 : 1;
@@ -425,9 +425,9 @@ var Events = {
if(Math.random() <= toHit) {
dmg = scene.damage;
}
-
+
var attackFn = scene.ranged ? Events.animateRanged : Events.animateMelee;
-
+
attackFn($('#enemy'), dmg, function() {
if($('#wanderer').data('hp') <= 0) {
// Failure!
@@ -437,10 +437,10 @@ var Events = {
}
});
}
-
+
Events._enemyAttackTimer = Engine.setTimeout(Events.enemyAttack, scene.attackDelay * 1000);
},
-
+
winFight: function() {
Events.won = true;
clearTimeout(Events._enemyAttackTimer);
@@ -453,9 +453,9 @@ var Events = {
desc.empty();
btns.empty();
$('
').text(scene.deathMessage).appendTo(desc);
-
+
Events.drawLoot(scene.loot);
-
+
if(scene.buttons) {
// Draw the buttons
Events.drawButtons(scene);
@@ -468,12 +468,12 @@ var Events = {
if(scene.nextScene && scene.nextScene != 'end') {
Events.loadScene(scene.nextScene);
} else {
- Events.endEvent();
+ Events.endEvent();
}
},
text: _('leave')
}).appendTo(btns));
-
+
Events.createEatMeatButton(0).appendTo(btns);
if((Path.outfit['medicine'] || 0) !== 0) {
Events.createUseMedsButton(0).appendTo(btns);
@@ -485,7 +485,7 @@ var Events = {
}, 1000, true);
});
},
-
+
drawLoot: function(lootList) {
var desc = $('#description', Events.eventPanel());
var lootButtons = $('
').attr('id', 'lootButtons');
@@ -503,9 +503,44 @@ var Events = {
$('
').addClass('clear').appendTo(lootButtons);
if(lootButtons.children().length > 1) {
lootButtons.appendTo(desc);
+ var takeAll = new Button.Button({
+ id: 'loot_take_all',
+ text: _('take all'),
+ click: Events.takeAllLoot
+ }).addClass('take-all-button').appendTo(lootButtons);
}
},
-
+
+ takeAllLoot: function(){
+
+ var stoppedEarly = false;
+ $('#lootButtons')
+ .children('.button')
+ .each(function(){
+ if( $(this).hasClass('take-all-button') ) {
+ return;
+ }
+
+ var weight = $(this).data('numLeft') * Path.getWeight($(this).attr('id').substring(5).replace('-', ' '));
+ while( $(this).data('numLeft') > 0 && weight < Path.getFreeSpace() ){
+ $(this).click();
+ }
+
+ if(weight > Path.getFreeSpace()){
+ stoppedEarly = true;
+ return;
+ }
+ });
+
+ if( !stoppedEarly ){
+
+ $('#leave').click();
+ $('#leaveBtn').click();
+
+ }
+
+ },
+
dropStuff: function(e) {
e.stopPropagation();
var btn = $(this);
@@ -513,7 +548,7 @@ var Events = {
var num = btn.data('num');
var lootButtons = $('#lootButtons');
Engine.log('dropping ' + num + ' ' + thing);
-
+
var lootBtn = $('#loot_' + thing.replace(' ', '-'), lootButtons);
if(lootBtn.length > 0) {
var curNum = lootBtn.data('numLeft');
@@ -530,7 +565,7 @@ var Events = {
Events.getLoot(btn.closest('.button'));
World.updateSupplies();
},
-
+
getLoot: function(btn) {
var name = btn.attr('id').substring(5).replace('-', ' ');
if(btn.data('numLeft') > 0) {
@@ -591,42 +626,42 @@ var Events = {
$('#dropMenu').remove();
});
}
- }
+ }
},
-
+
createFighterDiv: function(chara, hp, maxhp) {
var fighter = $('
').addClass('fighter').text(_(chara)).data('hp', hp).data('maxHp', maxhp).data('refname',chara);
$('
').addClass('hp').text(hp+'/'+maxhp).appendTo(fighter);
return fighter;
},
-
+
updateFighterDiv: function(fighter) {
$('.hp', fighter).text(fighter.data('hp') + '/' + fighter.data('maxHp'));
},
-
+
startStory: function(scene) {
// Write the text
var desc = $('#description', Events.eventPanel());
for(var i in scene.text) {
$('
').text(scene.text[i]).appendTo(desc);
}
-
+
if(scene.textarea != null) {
var ta = $('