diff --git a/index.html b/index.html
index 4fd0ddc..f0ed19a 100644
--- a/index.html
+++ b/index.html
@@ -8,8 +8,10 @@
JSDSH - Javascript Dungeonslayers Helper
+
+
diff --git a/src/base_ui.js b/src/base_ui.js
index d98d154..90c9eb5 100644
--- a/src/base_ui.js
+++ b/src/base_ui.js
@@ -1,3 +1,3 @@
$(document).ready( function() {
- $('#load').click(function() { $.getScript("src/adventure_01.js");});
+ $('#load').click(function() { $.getScript("src/adventure_01.js"); $('#load').hide();});
});
diff --git a/src/jsds.js b/src/jsds.js
index 195cc25..c1dc90d 100644
--- a/src/jsds.js
+++ b/src/jsds.js
@@ -1,5 +1,8 @@
{
- // OOP-Setup
+ // OOP-Setup, thanks to Florian Rappl for this piece of Code
+ // Source:
+ // http://www.florian-rappl.de/Articles/Page/116/super-mario5-article
+
var reflection = {};
(function(){
@@ -64,6 +67,28 @@
return Class;
};
})();
+
+ // Helper-Funcs
+
+ var clearui = function() {
+ $('#output').empty();
+ $('#ui').empty();
+ };
+
+ var dice = function(probe) {
+ var diceval = Math.floor(Math.random() * (21 - 1)) + 1;
+ if ( diceval <= probe ) {
+ return diceval;
+ }
+ else {
+ if (diceval === 20) {
+ alert ("Patzer!");
+ };
+ return 0;
+ };
+ };
+
+ // Own Classes for Creatures, etc
var Creature = Class.extend({
init: function(info,attributes,properties,drawinfo,battle){
@@ -72,13 +97,10 @@
* properties: strength, hardness, movement, skill, mind, aura
* drawinfo: x,y,w,h,col
*/
- console.log("Creature called!");
this.info = {"pname": info["pname"]+"", "experience": info["experience"]*1, "race":info["race"]+"",
"size":info["size"]*1};
- console.log("Creature Ready!");
this.attributes = {"body": attributes["body"]*1, "agility": attributes["agility"]*1,
"spirit": attributes["spirit"]*1};
- console.log("Problem?");
this.properties = {"strength": properties["strength"]*1 , "hardness": properties["hardness"]*1,
"movement": properties["movement"]*1, "skill": properties["skill"]*1,
"mind": properties["mind"]*1, "aura": properties["aura"]*1};
@@ -102,12 +124,79 @@
this.battle["shoot_chant"] = this.attributes.spirit + this.properties.skill;
};
this.life = this.battle["life"]*1;
+ this.att = "melee";
},
+
attack: function(enem) {
- //console.log("attack");
- console.log(this.info.cname+" greift "+enem.info.cname+" an!");
- console.log("Ergebnis: " + this.battle.melee + ( this.battle.melee > enem.battle.defense ? " > " : " < ") + enem.battle.defense);
+ clearui();
+ var output=$('#output');
+ output.html(this.info.cname+" greift "+enem.info.cname+" an!
");
+ var attack_val = dice(this.battle[this.att]);
+ if (! attack_val ) {
+ output.append('Angriff Fehlgeschlagen!
');
+ }
+ else {
+ output.append(this.info.cname + " trifft mit " + attack_val + "
");
+ var defense_val = dice(this.battle.defense);
+ console.log(attack_val + ", " + defense_val);
+ attack_val -= defense_val;
+ attack_val = Math.max(attack_val, 0);
+ if ( ! defense_val ) {
+ output.append(enem.info.cname + " kann sich nicht wehren!
");
+ }
+ else {
+ output.append(enem.info.cname + " wehrt sich mit " + defense_val+".
");
+ }
+ if ( attack_val === 0 ) {
+ output.append("Vollständig Abgewehrt!
");
+ }
+ else {
+ output.append("Schaden: "+attack_val+"
");
+ };
+ enem.life -= attack_val;
+ if( enem.life <= 0 ) {
+ if ( enem.enem ){
+ output.append(enem.info.cname + " ist besiegt
");
+ enem.die();
+ }
+ else {
+ output.append(enem.info.cname + " ist bewusstlos
");
+ enem.unconsc();
+ };
+ }
+ }
+ },
+
+ die: function() {
+ this.graphelement.destroy();
+ delete(player[this.info.pname]);
+ },
+
+ unconsc: function() {
+ this.graphelement.oldcolor = this.graphelement.color();
+ this.graphelement.color("#A0A0C0");
+ },
+
+ consc: function() {
+ if ( this.graphelement.oldcolor ) {
+ this.graphelement.color(this.graphelement.oldcolor);
+ }
+ },
+
+ sel_att: function() {
+ var outstr="";
+ outstr += "Angriffstyp?
";
+ outstr += "";
+ $('#ui').html(outstr);
+ $('#att').bind("change", function() {cur_sel.att=this.value;});
+ $("#"+this.att).get(0).selected="true";
}
+
});
var Player = Creature.extend({
@@ -124,7 +213,6 @@
// Set default battle-propoerties.
this.extern = {"armor":0,"chant":0,"weapon":0};
- console.log(this.battle.defense);
this.battle.defense += this.extern.armor;
this.battle.melee += this.extern.weapon;
this.battle.shoot += this.extern.weapon;
@@ -132,8 +220,13 @@
this.battle.shoot_chant = this.battle.chant + this.extern.chant - this.extern.armor;
},
printoutput: function() {
- $('#output').empty();
- $('#output').html(this.info.cname+"
"+this.info.pname);
+ outstr = "";
+ outstr += this.info.cname + " (gespielt von "+this.info.pname +")
";
+ outstr += "Greift derzeit durch " + this.att + " mit einer Stärke von "
+ + this.battle[this.att] + " an.
";
+ outstr += "Verteidigungsstärke: " + this.battle.defense + "
";
+ outstr += "Kraftpunkte: " + this.life;
+ $('#output').html(outstr);
}
});
@@ -148,10 +241,17 @@
this._super(info,attributes,properties,drawinfo,battle);
this.info.cname=this.info.pname;
+ this.enem = true;
},
printoutput: function() {
- $('#output').empty();
- $('#output').html(this.info.race+"
"+this.info.pname);
+ clearui();
+ outstr = "";
+ outstr += "Ein "+ this.info.race + "
";
+ outstr += "Greift derzeit durch " + this.att + " mit einer Stärke von "
+ + this.battle[this.att] + " an.
";
+ outstr += "Verteidigungsstärke: " + this.battle.defense + "
";
+ outstr += "Kraftpunkte: " + this.life;
+ $('#output').html(outstr);
}
});
}
diff --git a/src/jsds_crafty.js b/src/jsds_crafty.js
index e3ae1d5..f56066b 100644
--- a/src/jsds_crafty.js
+++ b/src/jsds_crafty.js
@@ -81,7 +81,14 @@
this.enableControl();
};
if(e.mouseButton === Crafty.mouseButtons.RIGHT) {
- cur_sel.attack(player[this.id]);
+ if ( !cur_sel ) { return; };
+ if ( cur_sel == player[this.id] )
+ {
+ cur_sel.sel_att();
+ }
+ else {
+ cur_sel.attack(player[this.id]);
+ };
};
});