Char init logic moved to newguy.js; ListBox.save no longer needed

This commit is contained in:
Eric Fredricksen
2010-07-12 11:00:03 -07:00
parent 8c9271179b
commit cfbfe714a1
3 changed files with 86 additions and 120 deletions
+28 -1
View File
@@ -219,9 +219,36 @@ function addToRoster(newguy) {
} }
} }
Number.prototype.div = function (divisor) {
var dividend = this / divisor;
return (dividend < 0 ? Math.ceil : Math.floor)(dividend);
};
function LevelUpTime(level) { // seconds
// 20 minutes per level
return 20 * level * 60;
}
var K = {}; var K = {};
K.Stats = ["STR","CON","DEX","INT","WIS","CHA"]; K.Traits = ["Name", "Race", "Class", "Level"];
K.PrimeStats = ["STR","CON","DEX","INT","WIS","CHA"];
K.Stats = K.PrimeStats.slice(0).concat(["HP Max","MP Max"]);
K.Equips = ["Weapon",
"Shield",
"Helm",
"Hauberk",
"Brassairts",
"Vambraces",
"Gauntlets",
"Gambeson",
"Cuisses",
"Greaves",
"Sollerets"];
K.Spells = [ K.Spells = [
"Slime Finger", "Slime Finger",
+22 -106
View File
@@ -299,7 +299,7 @@ function Dequeue() {
var amt = GetI(Inventory, 1) * GetI(Traits,'Level'); var amt = GetI(Inventory, 1) * GetI(Traits,'Level');
if (Pos(' of ', Inventory.label(1)) > 0) if (Pos(' of ', Inventory.label(1)) > 0)
amt *= (1+RandomLow(10)) * (1+RandomLow(GetI(Traits,'Level'))); amt *= (1+RandomLow(10)) * (1+RandomLow(GetI(Traits,'Level')));
Inventory.remove(1); Inventory.remove1();
Add(Inventory, 'Gold', amt); Add(Inventory, 'Gold', amt);
} }
if (Inventory.length() > 1) { if (Inventory.length() > 1) {
@@ -387,11 +387,6 @@ function PutUI(list, key, value) {
item.each(function () {this.scrollIntoView();}); item.each(function () {this.scrollIntoView();});
} }
function LevelUpTime(level) { // seconds
// 20 minutes per level
return 20 * level * 60;
}
function ProgressBar(id) { function ProgressBar(id) {
this.id = id; this.id = id;
@@ -498,31 +493,17 @@ function ListBox(id, columns, fixedkeys) {
return this.rows().length; return this.rows().length;
}; };
this.remove = function (n) { this.remove0 = function (n) {
this.box.find("tr").eq(n).remove(); if (game[this.id])
game[this.id].shift();
this.box.find("tr").first().remove();
}; };
this.remove1 = function (n) {
this.save = function (game) { var t = game[this.id].shift();
return; game[this.id].shift();
var that = this; game[this.id].unshift(t);
var dict = game[this.id]; this.box.find("tr").eq(1).remove();
if (this.fixedkeys) {
if (!dict) dict = {};
this.rows().each(function (index) {
dict[Key(this)] = Value(this);
});
} else {
// Unfixed keys -- need to maintain order
dict = [];
this.rows().each(function (index) {
if (that.columns == 2)
dict.push([Key(this),Value(this)]);
else
dict.push($.trim($(this).text()));
});
}
game[this.id] = dict;
}; };
@@ -556,67 +537,6 @@ var Kill;
var AllBars, AllLists; var AllBars, AllLists;
function InitializeCharacter(sheet) {
// TODO: some of the below is probably redundant
// TODO: just set needed info and then load game?
game = sheet;
randseed(game.seed);
game.tasks = 0;
game.elapsed = 0;
Put(Traits, 'Name', sheet.Traits.Name);
Put(Traits, 'Level', 1);
Put(Traits, 'Race', sheet.Traits.Race);
Put(Traits, 'Class', sheet.Traits.Class);
$.each(K.Stats, function (i,stat) { Put(Stats, stat, sheet.Stats[stat]); });
Put(Stats, 'HP Max', Random(8) + sheet.Stats.CON.div(6));
Put(Stats, 'MP Max', Random(8) + sheet.Stats.INT.div(6));
game.bestequip = 'Sharp Stick';
Put(Equips, 'Weapon', game.bestequip);
Put(Inventory,'Gold',0);
SaveGame();
ClearAllSelections();
// GoButtonClick();
ExpBar.reset(LevelUpTime(1));
game.task = '';
game.questmonster = '';
game.queue = [];
Task('Loading.',2000); // that dot is spotted for later...
Q('task|10|Experiencing an enigmatic and foreboding night vision');
Q("task|6|Much is revealed about that wise old bastard you'd underestimated");
Q('task|6|A shocking series of events leaves you alone and bewildered, but resolute');
Q('task|4|Drawing upon an unexpected reserve of determination, you set out on a long and dangerous journey');
Q('plot|2|Loading');
PlotBar.reset(26);
Plots.AddUI((game.bestplot = 'Prologue'));
game.act = 0;
QuestBar.reset(1);
EncumBar.reset(GetI(Stats, "STR") + 10);
Put(Equips, "Hauberk", "-3 Burlap");
ClearAllSelections();
StartTimer();
Brag('start');
}
function StrToIntDef(s, def) { function StrToIntDef(s, def) {
var result = parseInt(s, 10); var result = parseInt(s, 10);
return isNaN(result) ? def : result; return isNaN(result) ? def : result;
@@ -723,14 +643,14 @@ function WinItem() {
} }
function CompleteQuest() { function CompleteQuest() {
QuestBar.reset(50 + Random(100)); QuestBar.reset(50 + Random(1000));
if (Quests.last().length) { if (Quests.last().length) {
Log('Quest completed: ' + Quests.last().text()); Log('Quest completed: ' + Quests.last().text());
Quests.rows().find("input:checkbox").attr("checked", "true"); Quests.rows().find("input:checkbox").attr("checked", "true");
[WinSpell,WinEquip,WinStat,WinItem][Random(4)](); [WinSpell,WinEquip,WinStat,WinItem][Random(4)]();
} }
while (Quests.length() > 99) while (Quests.length() > 99)
Quests.remove(0); Quests.remove0();
game.questmonster = ''; game.questmonster = '';
var caption; var caption;
@@ -847,7 +767,7 @@ function CompleteAct() {
game.act += 1; game.act += 1;
PlotBar.reset(60 * 60 * (1 + 5 * game.act)); // 1 hr + 5/act PlotBar.reset(60 * 60 * (1 + 5 * game.act)); // 1 hr + 5/act
while (Plots.length() > 99) while (Plots.length() > 99)
Plots.remove(0); Plots.remove0();
Plots.AddUI((game.bestplot = 'Act ' + toRoman(game.act))); Plots.AddUI((game.bestplot = 'Act ' + toRoman(game.act)));
if (game.act > 1) { if (game.act > 1) {
@@ -917,11 +837,6 @@ function Sum(list) {
return result; return result;
} }
Number.prototype.div = function (divisor) {
var dividend = this / divisor;
return (dividend < 0 ? Math.ceil : Math.floor)(dividend);
};
function LevelUp() { function LevelUp() {
Add(Traits,'Level',1); Add(Traits,'Level',1);
@@ -1020,7 +935,6 @@ function FormCreate() {
this.AddUI(i ? 'Act ' + toRoman(i) : "Prologue"); this.AddUI(i ? 'Act ' + toRoman(i) : "Prologue");
}; };
Plots.save = function () {};
AllLists = [Traits,Stats,Spells,Equips,Inventory,Plots,Quests]; AllLists = [Traits,Stats,Spells,Equips,Inventory,Plots,Quests];
@@ -1056,12 +970,7 @@ function LoadCharacter() {
storage = null; storage = null;
} }
if (!sheet.Traits.Level) { LoadGame(sheet);
// New game
InitializeCharacter(sheet);
} else {
LoadGame(sheet);
}
$("#title").text("Progress Quest - " + GameSaveName()); $("#title").text("Progress Quest - " + GameSaveName());
@@ -1119,6 +1028,11 @@ function Cheats() {
WinItem(); WinItem();
}); });
cheat("Clear items", function () {
while (Inventory.length() > 1)
Inventory.remove1();
})
cheat("Spell", function () { cheat("Spell", function () {
WinSpell(); WinSpell();
}); });
@@ -1163,7 +1077,7 @@ function HotOrNot() {
function SaveGame() { function SaveGame() {
Log('Saving game: ' + GameSaveName()); Log('Saving game: ' + GameSaveName());
$.each(AllBars.concat(AllLists), function (i, e) { e.save(game); }); $.each(AllBars, function (i, e) { e.save(game); });
HotOrNot(); HotOrNot();
game.date = ''+new Date(); game.date = ''+new Date();
game.stamp = +new Date(); game.stamp = +new Date();
@@ -1181,6 +1095,8 @@ function LoadGame(sheet) {
this.rows().find("input:checkbox").not(':last').attr("checked", "true"); this.rows().find("input:checkbox").not(':last').attr("checked", "true");
}); });
Log('Loaded game: ' + name); Log('Loaded game: ' + name);
if (!game.elapsed)
Brag('start');
StartTimer(); StartTimer();
} }
+35 -12
View File
@@ -22,13 +22,10 @@ var stats = {"history":[]};
function RollEm() { function RollEm() {
var Total = $("#Total"); var Total = $("#Total");
stats.seed = randseed(); stats.seed = randseed();
stats.total = stats.total = 0;
Roll("STR") + $.each(K.PrimeStats, function () { stats.total += Roll(this); });
Roll("CON") + stats['HP Max'] = Random(8) + stats.CON.div(6);
Roll("DEX") + stats['MP Max'] = Random(8) + stats.INT.div(6);
Roll("INT") +
Roll("WIS") +
Roll("CHA");
Total.text(stats.total); Total.text(stats.total);
var color = var color =
@@ -145,17 +142,43 @@ function sold() {
Traits: { Traits: {
Name: $("#Name").val(), Name: $("#Name").val(),
Race: $("input:radio[name=Race]:checked").val(), Race: $("input:radio[name=Race]:checked").val(),
Class: $("input:radio[name=Class]:checked").val() Class: $("input:radio[name=Class]:checked").val(),
Level: 1
}, },
dna: stats.seed, dna: stats.seed,
seed: stats.seed, seed: stats.seed,
birthday: ''+new Date(), birthday: ''+new Date(),
birthstamp: +new Date(), birthstamp: +new Date(),
Stats: {} Stats: stats,
task: "",
tasks: 0,
elapsed: 0,
bestequip: "Sharp Rock",
Equips: {},
Inventory: [['Gold', 0]],
Spells: [],
act: 0,
Quests: [],
questmonster: "",
kill: "Loading....",
ExpBar: { position: 0, max: LevelUpTime(1) },
EncumBar: { position: 0, max: stats.STR + 10 },
PlotBar: { position: 0, max: 26 },
QuestBar: { position: 0, max: 1 },
TaskBar: { position: 0, max: 2000 },
queue: [
'task|10|Experiencing an enigmatic and foreboding night vision',
"task|6|Much is revealed about that wise old bastard you'd underestimated",
'task|6|A shocking series of events leaves you alone and bewildered, but resolute',
'task|4|Drawing upon an unexpected reserve of determination, you set out on a long and dangerous journey',
'plot|2|Loading'
],
}; };
$.each(K.Stats, function (index,value) {
newguy.Stats[value] = stats[value]; $.each(K.Equips, function (i,equip) { newguy.Equips[equip] = ''; });
}); newguy.Equips.Weapon = newguy.bestequip;
newguy.Equips.Hauberk = "-3 Burlap";
addToRoster(newguy); addToRoster(newguy);
// TODO: cheesy // TODO: cheesy