aboutsummaryrefslogtreecommitdiffstats
path: root/js/dungeon.js
diff options
context:
space:
mode:
authorpiernov <piernov@piernov.org>2016-05-09 22:06:30 +0200
committerpiernov <piernov@piernov.org>2016-05-09 22:06:30 +0200
commitf10c51f07a755d75a583f85316efbcd3bd1e4b6d (patch)
tree87419a11e12f5b7433459fcb5cb9da5211dcbd9e /js/dungeon.js
parent54635d17eef27eb2546d69599e4107b242509ced (diff)
parent2f32bc3153b7f2c2561e4603f912573921e6449f (diff)
downloadcandybox-f10c51f07a755d75a583f85316efbcd3bd1e4b6d.tar.gz
candybox-f10c51f07a755d75a583f85316efbcd3bd1e4b6d.tar.bz2
candybox-f10c51f07a755d75a583f85316efbcd3bd1e4b6d.tar.xz
candybox-f10c51f07a755d75a583f85316efbcd3bd1e4b6d.zip
Merge branch 'alexichi' of ssh://piernov.org/srv/git/candybox into alexichi
Diffstat (limited to 'js/dungeon.js')
-rw-r--r--js/dungeon.js124
1 files changed, 124 insertions, 0 deletions
diff --git a/js/dungeon.js b/js/dungeon.js
new file mode 100644
index 0000000..2921c7d
--- /dev/null
+++ b/js/dungeon.js
@@ -0,0 +1,124 @@
+var timeout;
+
+function buildDungeon(){
+ sendRequest("craftmine.php", "op=buildDungeon", function(ret) {
+ displayDungeon(0,1,true);//mob 0 in the floor 1 and I access the dungeon for the first time
+ debitAccount(ret.cost);
+ showInfo("You can acces the dungeon now. Good Luck.");
+ });
+}
+
+function displayDungeon(nb,f,firstTime){
+ var tmphtml = "<br/>";
+ tmphtml += "<button id=\"launch\" type=\"button\" class=\"btn btn-success\" onclick=\"launchDungeon("+nb+","+f+","+firstTime+")\">Launch</button>";
+ document.getElementById("tab4").innerHTML = tmphtml;
+}
+
+function launchDungeon(nb,f,firstTime){
+ sendRequest("craftmine.php", "op=launchDungeon&floor="+f, function(ret) {
+ if(nb==0 && firstTime){
+ document.getElementById("launch").style.display = "none";
+ }
+ displayBattle(ret,nb,f);
+ });
+}
+
+function displayBattle(ret,nb,f){
+ var tmphtml = "<div class=\"row\">";
+ tmphtml += "<h4>Battle floor "+ f +"</h4>";
+ tmphtml += "<ul class=\"list-inline\">";
+ tmphtml += "<li>";
+ tmphtml += "<button type=\"button\" class=\"btn btn-success\" id=\"perso\" style=\"margin-left:30px;\"><span class=\"item-icon\">" + data.icon + "</span><br />" + data.name + "<br/> lv: " + data.level + " hp: <span id=\"lifePerso\">" + data.hp + "</span></button>";
+ tmphtml += "<button type=\"button\" class=\"btn btn-success\" id=\"mob\" style=\"margin-left:30px;\">"
+ +"<span class=\"item-icon\">" + ret[nb].icon + "</span><br />" + ret[nb].name + "<br/>"
+ +" lv: " + ret[nb].level + " hp: <span id=\"lifeMob\">" + ret[nb].hp + "</span></button>";
+ tmphtml += "</li>";
+ tmphtml += "</ul>";
+ tmphtml += "</div>";
+ document.getElementById("tab4").innerHTML = tmphtml;
+ displayExit();
+ battle(ret,nb,f);
+}
+
+function battle(ret,nb,f){
+ timeout=window.setTimeout(strike, 1000, ret, nb, f);
+}
+
+function strike(ret,nb, f){
+ var powerDiff = (data.power+data.bonusPower)-parseInt(ret[nb].power);
+ var hitRate = Math.floor((Math.random() * 100) + 1);
+ var mobLife = document.getElementById("lifeMob").innerHTML;
+ var persoLife = document.getElementById("lifePerso").innerHTML;
+ if(mobLife == 0){
+ data.hp = persoLife;
+ data.bonusPower = 0; //à revoir car l'épée doit continuer à apporter un bonus
+ endBattle("perso",nb,f,ret);
+ return;
+ }
+ else if(persoLife == 0){
+ data.hp = 1;
+ data.bonusPower = 0;//when you die you lose your sword and all your power bonus
+ endBattle("mob",nb,f,ret);
+ return;
+ }
+ if(hitRate<50+10*powerDiff){
+ mobLife--;
+ document.getElementById("lifeMob").innerHTML = parseInt(mobLife);
+ }
+ else{
+ persoLife--;
+ document.getElementById("lifePerso").innerHTML = parseInt(persoLife);
+ }
+ battle(ret,nb,f);
+}
+
+function endBattle(v,nb, f, ret){
+ window.clearTimeout(timeout);
+ if(v=="mob")exitDungeon(false);//if you die in the dungeon, you are immediately sent out of the dungeon
+ //To level up you have to obtain 2 xp to go to lv 3, 3 to go to lv 4, etc
+ //A mob level 2 , if defeated gives you 2 xp, ...etc
+ else{
+ levelUp(ret[nb].xp);
+ nb++;//go to the next mob in the same floor
+ if(nb>=3){//floor changing
+ nb=0;//reset the number of the mob
+ f++;//increment the number of the floor
+ if(f>=4){
+ exitDungeon(true);//true means that you have completed the dungeon and not just die or exit by yourself
+ return;
+ }
+ }
+ var tmphtml = "Le " + v + " a gagné.";
+ tmphtml += "<button type=\"button\" class=\"btn btn-success\" onclick=\"launchDungeon("+nb+","+ f +",false)\">Next Battle</button>"
+ document.getElementById("tab4").innerHTML = tmphtml;
+ displayExit();
+ sendRequest("craftmine.php", "op=sendDungeonProgress&floor="+f+"&mob="+nb);
+ }
+ sendRequest("craftmine.php", "op=updatePerso&hp="+data.hp+"&maxHP="+data.maxHP+"&xp="+data.xp+"&lv="+data.level+"&power="+data.power+"&bonusPower="+data.bonusPower, function(){
+ displayPerso(data.hp,data.maxHP,data.xp,data.level,data.power,data.bonusPower);
+ });
+}
+
+function displayExit(){
+ var tmphtml = "<br/><br/>";
+ tmphtml += "<button type=\"button\" class=\"btn btn-success\" onclick=\"exitDungeon(false)\">Exit</button>";
+ document.getElementById("tab4").innerHTML += tmphtml;
+}
+
+function exitDungeon(boss){
+ sendRequest("craftmine.php", "op=exitDungeon", function() {
+ window.clearTimeout(timeout);
+ if(boss){//if the boss is beaten
+ levelUp(20);//you earn 20 xp
+ creditAccount(1000);//you earn 1000 gold coins
+ var tmphtml = "<h3>You have completed the dungeon! CONGRATULATIONS!</h3>";
+ tmphmtl += "<ul>";
+ tmphtml += "<li><h4>You have earned 1000 gold coins</h4></li>"
+ tmphmtl += "<li><h4>You have earned 20 xp</h4></li>";
+ tmphmtl += "</ul>";
+ document.getElementById("tab4").innerHTML = tmphtml;
+ }
+ else document.getElementById("tab4").innerHTML = "<h4>Not available, you have to buy a ticket in the build section.</h4>";
+ showInfo("You have left the dungeon");
+ });
+}