mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
wip(shared): adapt to v3
This commit is contained in:
291
test/common_old/simulations/passive_active_attrs.js
Normal file
291
test/common_old/simulations/passive_active_attrs.js
Normal file
@@ -0,0 +1,291 @@
|
||||
var _, clearUser, id, party, s, shared, task, user;
|
||||
|
||||
shared = require('../../../common/script/index.js');
|
||||
|
||||
_ = require('lodash');
|
||||
|
||||
id = shared.uuid();
|
||||
|
||||
user = {
|
||||
stats: {
|
||||
"class": 'warrior',
|
||||
buffs: {
|
||||
per: 0,
|
||||
int: 0,
|
||||
con: 0,
|
||||
str: 0
|
||||
}
|
||||
},
|
||||
party: {
|
||||
quest: {
|
||||
key: 'evilsanta',
|
||||
progress: {
|
||||
up: 0,
|
||||
down: 0
|
||||
}
|
||||
}
|
||||
},
|
||||
preferences: {
|
||||
automaticAllocation: false
|
||||
},
|
||||
achievements: {},
|
||||
flags: {
|
||||
levelDrops: {}
|
||||
},
|
||||
items: {
|
||||
eggs: {},
|
||||
hatchingPotions: {},
|
||||
food: {},
|
||||
quests: {},
|
||||
gear: {
|
||||
equipped: {
|
||||
weapon: 'weapon_warrior_4',
|
||||
armor: 'armor_warrior_4',
|
||||
shield: 'shield_warrior_4',
|
||||
head: 'head_warrior_4'
|
||||
}
|
||||
}
|
||||
},
|
||||
habits: [
|
||||
shared.taskDefaults({
|
||||
id: id,
|
||||
value: 0
|
||||
})
|
||||
],
|
||||
dailys: [
|
||||
{
|
||||
"text": "1"
|
||||
}, {
|
||||
"text": "1"
|
||||
}, {
|
||||
"text": "1"
|
||||
}, {
|
||||
"text": "1"
|
||||
}, {
|
||||
"text": "1"
|
||||
}, {
|
||||
"text": "1"
|
||||
}, {
|
||||
"text": "1"
|
||||
}, {
|
||||
"text": "1"
|
||||
}, {
|
||||
"text": "1"
|
||||
}, {
|
||||
"text": "1"
|
||||
}, {
|
||||
"text": "1"
|
||||
}, {
|
||||
"text": "1"
|
||||
}, {
|
||||
"text": "1"
|
||||
}, {
|
||||
"text": "1"
|
||||
}, {
|
||||
"text": "1"
|
||||
}
|
||||
],
|
||||
todos: [],
|
||||
rewards: []
|
||||
};
|
||||
|
||||
shared.wrap(user);
|
||||
|
||||
s = user.stats;
|
||||
|
||||
task = user.tasks[id];
|
||||
|
||||
party = [user];
|
||||
|
||||
console.log("\n\n================================================");
|
||||
|
||||
console.log("New Simulation");
|
||||
|
||||
console.log("================================================\n\n");
|
||||
|
||||
clearUser = function(lvl) {
|
||||
if (lvl == null) {
|
||||
lvl = 1;
|
||||
}
|
||||
_.merge(user.stats, {
|
||||
exp: 0,
|
||||
gp: 0,
|
||||
hp: 50,
|
||||
lvl: lvl,
|
||||
str: lvl * 1.5,
|
||||
con: lvl * 1.5,
|
||||
per: lvl * 1.5,
|
||||
int: lvl * 1.5,
|
||||
mp: 100
|
||||
});
|
||||
_.merge(s.buffs, {
|
||||
str: 0,
|
||||
con: 0,
|
||||
int: 0,
|
||||
per: 0
|
||||
});
|
||||
_.merge(user.party.quest.progress, {
|
||||
up: 0,
|
||||
down: 0
|
||||
});
|
||||
return user.items.lastDrop = {
|
||||
count: 0
|
||||
};
|
||||
};
|
||||
|
||||
_.each([1, 25, 50, 75, 100], function(lvl) {
|
||||
console.log("[LEVEL " + lvl + "] (" + (lvl * 2) + " points total in every attr)\n\n");
|
||||
_.each({
|
||||
red: -25,
|
||||
yellow: 0,
|
||||
green: 35
|
||||
}, function(taskVal, color) {
|
||||
var _party, b4, str;
|
||||
console.log("[task.value = " + taskVal + " (" + color + ")]");
|
||||
console.log("direction\texpΔ\t\thpΔ\tgpΔ\ttask.valΔ\ttask.valΔ bonus\t\tboss-hit");
|
||||
_.each(['up', 'down'], function(direction) {
|
||||
var b4, delta;
|
||||
clearUser(lvl);
|
||||
b4 = {
|
||||
hp: s.hp,
|
||||
taskVal: taskVal
|
||||
};
|
||||
task.value = taskVal;
|
||||
if (direction === 'up') {
|
||||
task.type = 'daily';
|
||||
}
|
||||
delta = user.ops.score({
|
||||
params: {
|
||||
id: id,
|
||||
direction: direction
|
||||
}
|
||||
});
|
||||
return console.log((direction === 'up' ? '↑' : '↓') + "\t\t" + s.exp + "/" + (shared.tnl(s.lvl)) + "\t\t" + ((b4.hp - s.hp).toFixed(1)) + "\t" + (s.gp.toFixed(1)) + "\t" + (delta.toFixed(1)) + "\t\t" + ((task.value - b4.taskVal - delta).toFixed(1)) + "\t\t\t" + (user.party.quest.progress.up.toFixed(1)));
|
||||
});
|
||||
str = '- [Wizard]';
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
b4 = {
|
||||
taskVal: taskVal
|
||||
};
|
||||
shared.content.spells.wizard.fireball.cast(user, task);
|
||||
str += "\tfireball(task.valΔ:" + ((task.value - taskVal).toFixed(1)) + " exp:" + (s.exp.toFixed(1)) + " bossHit:" + (user.party.quest.progress.up.toFixed(2)) + ")";
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
_party = [
|
||||
user, {
|
||||
stats: {
|
||||
mp: 0
|
||||
}
|
||||
}
|
||||
];
|
||||
shared.content.spells.wizard.mpheal.cast(user, _party);
|
||||
str += "\t| mpheal(mp:" + _party[1].stats.mp + ")";
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
shared.content.spells.wizard.earth.cast(user, party);
|
||||
str += "\t\t\t\t| earth(buffs.int:" + s.buffs.int + ")";
|
||||
s.buffs.int = 0;
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
shared.content.spells.wizard.frost.cast(user, {});
|
||||
str += "\t\t\t| frost(N/A)";
|
||||
console.log(str);
|
||||
str = '- [Warrior]';
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
shared.content.spells.warrior.smash.cast(user, task);
|
||||
b4 = {
|
||||
taskVal: taskVal
|
||||
};
|
||||
str += "\tsmash(task.valΔ:" + ((task.value - taskVal).toFixed(1)) + ")";
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
shared.content.spells.warrior.defensiveStance.cast(user, {});
|
||||
str += "\t\t| defensiveStance(buffs.con:" + s.buffs.con + ")";
|
||||
s.buffs.con = 0;
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
shared.content.spells.warrior.valorousPresence.cast(user, party);
|
||||
str += "\t\t\t| valorousPresence(buffs.str:" + s.buffs.str + ")";
|
||||
s.buffs.str = 0;
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
shared.content.spells.warrior.intimidate.cast(user, party);
|
||||
str += "\t\t| intimidate(buffs.con:" + s.buffs.con + ")";
|
||||
s.buffs.con = 0;
|
||||
console.log(str);
|
||||
str = '- [Rogue]';
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
shared.content.spells.rogue.pickPocket.cast(user, task);
|
||||
str += "\tpickPocket(gp:" + (s.gp.toFixed(1)) + ")";
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
shared.content.spells.rogue.backStab.cast(user, task);
|
||||
b4 = {
|
||||
taskVal: taskVal
|
||||
};
|
||||
str += "\t\t| backStab(task.valΔ:" + ((task.value - b4.taskVal).toFixed(1)) + " exp:" + (s.exp.toFixed(1)) + " gp:" + (s.gp.toFixed(1)) + ")";
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
shared.content.spells.rogue.toolsOfTrade.cast(user, party);
|
||||
str += "\t| toolsOfTrade(buffs.per:" + s.buffs.per + ")";
|
||||
s.buffs.per = 0;
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
shared.content.spells.rogue.stealth.cast(user, {});
|
||||
str += "\t\t| stealth(avoiding " + user.stats.buffs.stealth + " tasks)";
|
||||
user.stats.buffs.stealth = 0;
|
||||
console.log(str);
|
||||
str = '- [Healer]';
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
s.hp = 0;
|
||||
shared.content.spells.healer.heal.cast(user, {});
|
||||
str += "\theal(hp:" + (s.hp.toFixed(1)) + ")";
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
shared.content.spells.healer.brightness.cast(user, {});
|
||||
b4 = {
|
||||
taskVal: taskVal
|
||||
};
|
||||
str += "\t\t\t| brightness(task.valΔ:" + ((task.value - b4.taskVal).toFixed(1)) + ")";
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
shared.content.spells.healer.protectAura.cast(user, party);
|
||||
str += "\t\t\t| protectAura(buffs.con:" + s.buffs.con + ")";
|
||||
s.buffs.con = 0;
|
||||
task.value = taskVal;
|
||||
clearUser(lvl);
|
||||
s.hp = 0;
|
||||
shared.content.spells.healer.heallAll.cast(user, party);
|
||||
str += "\t\t| heallAll(hp:" + (s.hp.toFixed(1)) + ")";
|
||||
console.log(str);
|
||||
return console.log('\n');
|
||||
});
|
||||
return console.log('------------------------------------------------------------');
|
||||
});
|
||||
|
||||
|
||||
/*
|
||||
_.each [1,25,50,75,100,125], (lvl) ->
|
||||
console.log "[LEVEL #{lvl}] (#{lvl*2} points in every attr)\n\n"
|
||||
_.each {red:-25,yellow:0,green:35}, (taskVal, color) ->
|
||||
console.log "[task.value = #{taskVal} (#{color})]"
|
||||
console.log "direction\texpΔ\t\thpΔ\tgpΔ\ttask.valΔ\ttask.valΔ bonus\t\tboss-hit"
|
||||
_.each ['up','down'], (direction) ->
|
||||
clearUser(lvl)
|
||||
b4 = {hp:s.hp, taskVal}
|
||||
task.value = taskVal
|
||||
task.type = 'daily' if direction is 'up'
|
||||
delta = user.ops.score params:{id, direction}
|
||||
console.log "#{if direction is 'up' then '↑' else '↓'}\t\t#{s.exp}/#{shared.tnl(s.lvl)}\t\t#{(b4.hp-s.hp).toFixed(1)}\t#{s.gp.toFixed(1)}\t#{delta.toFixed(1)}\t\t#{(task.value-b4.taskVal-delta).toFixed(1)}\t\t\t#{user.party.quest.progress.up.toFixed(1)}"
|
||||
|
||||
task.value = taskVal;clearUser(lvl)
|
||||
shared.content.spells.rogue.stealth.cast(user,{})
|
||||
console.log "\t\t| stealth(avoiding #{user.stats.buffs.stealth} tasks)"
|
||||
user.stats.buffs.stealth = 0
|
||||
|
||||
console.log user.dailys.length
|
||||
*/
|
||||
Reference in New Issue
Block a user