classes: death WIP (handling lose 1 gear piece, 1 stat point). This will

need revisiting and testing
This commit is contained in:
Tyler Renelle
2013-12-06 17:45:02 -07:00
parent acae9c36fe
commit 86dae794b1
2 changed files with 41 additions and 35 deletions
+25 -20
View File
@@ -8770,37 +8770,42 @@ var global=self;/**
});
};
obj.revive = function(user, options) {
var candidate, loseThisItem, owned, paths;
if (options == null) {
options = {};
}
paths = options.paths || {};
obj.revive = function(user) {
var candidate, count, item, k, lostItem, lostStat, v, _ref1;
user.stats.hp = 50;
user.stats.exp = 0;
user.stats.gp = 0;
if (user.stats.lvl > 1) {
user.stats.lvl--;
}
loseThisItem = false;
owned = user.items;
if (~~owned.armor > 0 || ~~owned.head > 0 || ~~owned.shield > 0 || ~~owned.weapon > 0) {
while (!loseThisItem) {
if ((user.stats.str + user.stats.con + user.stats.per + user.stats.int) > 1) {
while (!lostStat) {
candidate = {
0: 'armor',
1: 'head',
2: 'shield',
3: 'weapon'
0: 'str',
1: 'con',
2: 'per',
3: 'int'
}[Math.random() * 4 | 0];
if (owned[candidate] > 0) {
loseThisItem = candidate;
if (user.stats[candidate] > 0) {
lostStat = candidate;
}
}
user.items[loseThisItem] = 0;
user.stats[lostStat]--;
}
return ("stats.hp stats.exp stats.gp stats.lvl items." + loseThisItem).split(' ').forEach(function(path) {
return paths[path] = 1;
});
count = 0;
_ref1 = user.items.gear.owned;
for (k in _ref1) {
v = _ref1[k];
if (Math.random() < (1 / ++count)) {
lostItem = k;
}
}
if (item = items.items.gear.flat[lostItem]) {
delete user.items.gear.owned[lostItem];
user.items.gear.equipped[item.type] = "" + item.type + "_base_0";
user.items.gear.costume[item.type] = "" + item.type + "_base_0";
}
return typeof user.markModified === "function" ? user.markModified('items.gear') : void 0;
};
obj.priorityValue = function(priority) {
+16 -15
View File
@@ -28,8 +28,7 @@ obj.defineComputed = (user) ->
, 0); m
, {})
obj.revive = (user, options={})->
paths = options.paths || {}
obj.revive = (user)->
# Reset stats
user.stats.hp = 50
@@ -37,20 +36,22 @@ obj.revive = (user, options={})->
user.stats.gp = 0
user.stats.lvl-- if user.stats.lvl > 1
## Lose a random item
loseThisItem = false
owned = user.items
# unless they're already at 0-everything
if ~~owned.armor > 0 or ~~owned.head > 0 or ~~owned.shield > 0 or ~~owned.weapon > 0
# find a random item to lose
until loseThisItem
#candidate = {0:'items.armor', 1:'items.head', 2:'items.shield', 3:'items.weapon', 4:'stats.gp'}[Math.random()*5|0]
candidate = {0:'armor', 1:'head', 2:'shield', 3:'weapon'}[Math.random()*4|0]
loseThisItem = candidate if owned[candidate] > 0
user.items[loseThisItem] = 0
"stats.hp stats.exp stats.gp stats.lvl items.#{loseThisItem}".split(' ').forEach (path) ->
paths[path] = 1
# Lose a stat point
if (user.stats.str + user.stats.con + user.stats.per + user.stats.int) > 1
until lostStat
candidate = {0:'str', 1:'con', 2:'per', 3:'int'}[Math.random()*4|0]
lostStat = candidate if user.stats[candidate] > 0
user.stats[lostStat]--
# Lose a gear piece
count = 0
for k,v of user.items.gear.owned
lostItem = k if Math.random() < (1 / ++count)
if item = items.items.gear.flat[lostItem]
delete user.items.gear.owned[lostItem]
user.items.gear.equipped[item.type] = "#{item.type}_base_0"
user.items.gear.costume[item.type] = "#{item.type}_base_0"
user.markModified? 'items.gear'
obj.priorityValue = (priority = '!') ->
switch priority