2021-01-07 00:36:11 +00:00
/ *
* TESTING SECTION
* /
console . log ( location . href ) ;
/ *
* END testing section
* /
2021-01-07 00:04:16 +00:00
let player _build ;
2021-01-06 22:51:02 +00:00
// Set up item lists for quick access later.
2021-01-06 12:48:41 +00:00
let armorTypes = [ "helmet" , "chestplate" , "leggings" , "boots" ] ;
let accessoryTypes = [ "ring" , "bracelet" , "necklace" ] ;
let weaponTypes = [ "wand" , "spear" , "bow" , "dagger" , "relik" ] ;
2021-01-06 23:33:02 +00:00
let item _fields = [ "name" , "displayName" , "tier" , "set" , "slots" , "type" , "material" , "drop" , "quest" , "restrict" , "nDam" , "fDam" , "wDam" , "aDam" , "tDam" , "eDam" , "atkSpd" , "hp" , "fDef" , "wDef" , "aDef" , "tDef" , "eDef" , "lvl" , "classReq" , "strReq" , "dexReq" , "intReq" , "agiReq" , "defReq" , "hprPct" , "mr" , "sdPct" , "mdPct" , "ls" , "ms" , "xpb" , "lb" , "ref" , "str" , "dex" , "int" , "agi" , "def" , "thorns" , "expoding" , "spd" , "atkTier" , "poison" , "hpBonus" , "spRegen" , "eSteal" , "hprRaw" , "sdRaw" , "mdRaw" , "fDamPct" , "wDamPct" , "aDamPct" , "tDamPct" , "eDamPct" , "fDefPct" , "wDefPct" , "aDefPct" , "tDefPct" , "eDefPct" , "type" , "fixID" , "category" , "spPct1" , "spRaw1" , "spPct2" , "spRaw2" , "spPct3" , "spRaw3" , "spPct4" , "spRaw4" , "rainbowRaw" , "sprint" , "sprintReg" , "jh" , "lq" , "gXp" , "gSpd" ] ;
2021-01-06 12:48:41 +00:00
let itemTypes = armorTypes . concat ( accessoryTypes ) . concat ( weaponTypes ) ;
let itemLists = new Map ( ) ;
for ( const it of itemTypes ) {
itemLists . set ( it , [ ] ) ;
}
let itemMap = new Map ( ) ;
2021-01-06 22:51:02 +00:00
/ *
* Function that takes an item list and populates its corresponding dropdown .
* Used for armors and bracelet / necklace .
* /
2021-01-06 12:48:41 +00:00
function populateItemList ( type ) {
let item _list = document . getElementById ( type + "-items" ) ;
for ( const item of itemLists . get ( type ) ) {
let el = document . createElement ( "option" ) ;
el . value = item ;
item _list . appendChild ( el ) ;
}
}
2021-01-06 22:51:02 +00:00
/ *
* Populate dropdowns , add listeners , etc .
* /
2021-01-06 12:48:41 +00:00
function init ( ) {
2021-01-06 22:46:00 +00:00
let noneItems = [
2021-01-06 23:31:35 +00:00
{ displayName : "No Helmet" , name : "No Helmet" , category : "armor" , type : "helmet" , aDamPct : 0 , aDef : 0 , aDefPct : 0 , agi : 0 , agiReq : 0 , atkTier : 0 , classReq : null , def : 0 , defReq : 0 , dex : 0 , dexReq : 0 , drop : "never" , eDamPct : 0 , eDef : 0 , eDefPct : 0 , eSteal : 0 , exploding : 0 , fDamPct : 0 , fDef : 0 , fDefPct : 0 , fixID : true , gSpd : 0 , gXp : 0 , hp : 0 , hpBonus : 0 , hprPct : 0 , hprRaw : 0 , int : 0 , intReq : 0 , jh : 0 , lb : 0 , lq : 0 , ls : 0 , lvl : 0 , material : null , mdPct : 0 , mdRaw : 0 , mr : 0 , ms : 0 , poison : 0 , quest : null , rainbowRaw : 0 , ref : 0 , sdPct : 0 , sdRaw : 0 , set : null , slots : 0 , spPct1 : 0 , spPct2 : 0 , spPct3 : 0 , spPct4 : 0 , spRaw1 : 0 , spRaw2 : 0 , spRaw3 : 0 , spRaw4 : 0 , spRegen : 0 , spd : 0 , sprintReg : 0 , str : 0 , strReq : 0 , tDamPct : 0 , tDef : 0 , tDefPct : 0 , thorns : 0 , tier : null , wDamPct : 0 , wDef : 0 , wDefPct : 0 , xpb : 0 } ,
{ displayName : "No Chestplate" , name : "No Chesptlate" , category : "armor" , type : "chestplate" , aDamPct : 0 , aDef : 0 , aDefPct : 0 , agi : 0 , agiReq : 0 , atkTier : 0 , classReq : null , def : 0 , defReq : 0 , dex : 0 , dexReq : 0 , drop : "never" , eDamPct : 0 , eDef : 0 , eDefPct : 0 , eSteal : 0 , exploding : 0 , fDamPct : 0 , fDef : 0 , fDefPct : 0 , fixID : true , gSpd : 0 , gXp : 0 , hp : 0 , hpBonus : 0 , hprPct : 0 , hprRaw : 0 , int : 0 , intReq : 0 , jh : 0 , lb : 0 , lq : 0 , ls : 0 , lvl : 0 , material : null , mdPct : 0 , mdRaw : 0 , mr : 0 , ms : 0 , poison : 0 , quest : null , rainbowRaw : 0 , ref : 0 , sdPct : 0 , sdRaw : 0 , set : null , slots : 0 , spPct1 : 0 , spPct2 : 0 , spPct3 : 0 , spPct4 : 0 , spRaw1 : 0 , spRaw2 : 0 , spRaw3 : 0 , spRaw4 : 0 , spRegen : 0 , spd : 0 , sprintReg : 0 , str : 0 , strReq : 0 , tDamPct : 0 , tDef : 0 , tDefPct : 0 , thorns : 0 , tier : null , wDamPct : 0 , wDef : 0 , wDefPct : 0 , xpb : 0 } ,
{ displayName : "No Leggings" , name : "No Leggings" , category : "armor" , type : "leggings" , aDamPct : 0 , aDef : 0 , aDefPct : 0 , agi : 0 , agiReq : 0 , atkTier : 0 , classReq : null , def : 0 , defReq : 0 , dex : 0 , dexReq : 0 , drop : "never" , eDamPct : 0 , eDef : 0 , eDefPct : 0 , eSteal : 0 , exploding : 0 , fDamPct : 0 , fDef : 0 , fDefPct : 0 , fixID : true , gSpd : 0 , gXp : 0 , hp : 0 , hpBonus : 0 , hprPct : 0 , hprRaw : 0 , int : 0 , intReq : 0 , jh : 0 , lb : 0 , lq : 0 , ls : 0 , lvl : 0 , material : null , mdPct : 0 , mdRaw : 0 , mr : 0 , ms : 0 , poison : 0 , quest : null , rainbowRaw : 0 , ref : 0 , sdPct : 0 , sdRaw : 0 , set : null , slots : 0 , spPct1 : 0 , spPct2 : 0 , spPct3 : 0 , spPct4 : 0 , spRaw1 : 0 , spRaw2 : 0 , spRaw3 : 0 , spRaw4 : 0 , spRegen : 0 , spd : 0 , sprintReg : 0 , str : 0 , strReq : 0 , tDamPct : 0 , tDef : 0 , tDefPct : 0 , thorns : 0 , tier : null , wDamPct : 0 , wDef : 0 , wDefPct : 0 , xpb : 0 } ,
{ displayName : "No Boots" , name : "No Boots" , category : "armor" , type : "boots" , aDamPct : 0 , aDef : 0 , aDefPct : 0 , agi : 0 , agiReq : 0 , atkTier : 0 , classReq : null , def : 0 , defReq : 0 , dex : 0 , dexReq : 0 , drop : "never" , eDamPct : 0 , eDef : 0 , eDefPct : 0 , eSteal : 0 , exploding : 0 , fDamPct : 0 , fDef : 0 , fDefPct : 0 , fixID : true , gSpd : 0 , gXp : 0 , hp : 0 , hpBonus : 0 , hprPct : 0 , hprRaw : 0 , int : 0 , intReq : 0 , jh : 0 , lb : 0 , lq : 0 , ls : 0 , lvl : 0 , material : null , mdPct : 0 , mdRaw : 0 , mr : 0 , ms : 0 , poison : 0 , quest : null , rainbowRaw : 0 , ref : 0 , sdPct : 0 , sdRaw : 0 , set : null , slots : 0 , spPct1 : 0 , spPct2 : 0 , spPct3 : 0 , spPct4 : 0 , spRaw1 : 0 , spRaw2 : 0 , spRaw3 : 0 , spRaw4 : 0 , spRegen : 0 , spd : 0 , sprintReg : 0 , str : 0 , strReq : 0 , tDamPct : 0 , tDef : 0 , tDefPct : 0 , thorns : 0 , tier : null , wDamPct : 0 , wDef : 0 , wDefPct : 0 , xpb : 0 } ,
{ displayName : "No Ring 1" , name : "No Ring 1" , category : "accessory" , type : "ring" , aDamPct : 0 , aDef : 0 , aDefPct : 0 , agi : 0 , agiReq : 0 , atkTier : 0 , classReq : null , def : 0 , defReq : 0 , dex : 0 , dexReq : 0 , drop : "never" , eDamPct : 0 , eDef : 0 , eDefPct : 0 , eSteal : 0 , exploding : 0 , fDamPct : 0 , fDef : 0 , fDefPct : 0 , fixID : true , gSpd : 0 , gXp : 0 , hp : 0 , hpBonus : 0 , hprPct : 0 , hprRaw : 0 , int : 0 , intReq : 0 , jh : 0 , lb : 0 , lq : 0 , ls : 0 , lvl : 0 , material : null , mdPct : 0 , mdRaw : 0 , mr : 0 , ms : 0 , poison : 0 , quest : null , rainbowRaw : 0 , ref : 0 , sdPct : 0 , sdRaw : 0 , set : null , slots : 0 , spPct1 : 0 , spPct2 : 0 , spPct3 : 0 , spPct4 : 0 , spRaw1 : 0 , spRaw2 : 0 , spRaw3 : 0 , spRaw4 : 0 , spRegen : 0 , spd : 0 , sprintReg : 0 , str : 0 , strReq : 0 , tDamPct : 0 , tDef : 0 , tDefPct : 0 , thorns : 0 , tier : null , wDamPct : 0 , wDef : 0 , wDefPct : 0 , xpb : 0 } ,
{ displayName : "No Ring 2" , name : "No Ring 2" , category : "accessory" , type : "ring" , aDamPct : 0 , aDef : 0 , aDefPct : 0 , agi : 0 , agiReq : 0 , atkTier : 0 , classReq : null , def : 0 , defReq : 0 , dex : 0 , dexReq : 0 , drop : "never" , eDamPct : 0 , eDef : 0 , eDefPct : 0 , eSteal : 0 , exploding : 0 , fDamPct : 0 , fDef : 0 , fDefPct : 0 , fixID : true , gSpd : 0 , gXp : 0 , hp : 0 , hpBonus : 0 , hprPct : 0 , hprRaw : 0 , int : 0 , intReq : 0 , jh : 0 , lb : 0 , lq : 0 , ls : 0 , lvl : 0 , material : null , mdPct : 0 , mdRaw : 0 , mr : 0 , ms : 0 , poison : 0 , quest : null , rainbowRaw : 0 , ref : 0 , sdPct : 0 , sdRaw : 0 , set : null , slots : 0 , spPct1 : 0 , spPct2 : 0 , spPct3 : 0 , spPct4 : 0 , spRaw1 : 0 , spRaw2 : 0 , spRaw3 : 0 , spRaw4 : 0 , spRegen : 0 , spd : 0 , sprintReg : 0 , str : 0 , strReq : 0 , tDamPct : 0 , tDef : 0 , tDefPct : 0 , thorns : 0 , tier : null , wDamPct : 0 , wDef : 0 , wDefPct : 0 , xpb : 0 } ,
{ displayName : "No Bracelet" , name : "No Bracelet" , category : "accessory" , type : "bracelet" , aDamPct : 0 , aDef : 0 , aDefPct : 0 , agi : 0 , agiReq : 0 , atkTier : 0 , classReq : null , def : 0 , defReq : 0 , dex : 0 , dexReq : 0 , drop : "never" , eDamPct : 0 , eDef : 0 , eDefPct : 0 , eSteal : 0 , exploding : 0 , fDamPct : 0 , fDef : 0 , fDefPct : 0 , fixID : true , gSpd : 0 , gXp : 0 , hp : 0 , hpBonus : 0 , hprPct : 0 , hprRaw : 0 , int : 0 , intReq : 0 , jh : 0 , lb : 0 , lq : 0 , ls : 0 , lvl : 0 , material : null , mdPct : 0 , mdRaw : 0 , mr : 0 , ms : 0 , poison : 0 , quest : null , rainbowRaw : 0 , ref : 0 , sdPct : 0 , sdRaw : 0 , set : null , slots : 0 , spPct1 : 0 , spPct2 : 0 , spPct3 : 0 , spPct4 : 0 , spRaw1 : 0 , spRaw2 : 0 , spRaw3 : 0 , spRaw4 : 0 , spRegen : 0 , spd : 0 , sprintReg : 0 , str : 0 , strReq : 0 , tDamPct : 0 , tDef : 0 , tDefPct : 0 , thorns : 0 , tier : null , wDamPct : 0 , wDef : 0 , wDefPct : 0 , xpb : 0 } ,
{ displayName : "No Necklace" , name : "No Necklace" , category : "accessory" , type : "necklace" , aDamPct : 0 , aDef : 0 , aDefPct : 0 , agi : 0 , agiReq : 0 , atkTier : 0 , classReq : null , def : 0 , defReq : 0 , dex : 0 , dexReq : 0 , drop : "never" , eDamPct : 0 , eDef : 0 , eDefPct : 0 , eSteal : 0 , exploding : 0 , fDamPct : 0 , fDef : 0 , fDefPct : 0 , fixID : true , gSpd : 0 , gXp : 0 , hp : 0 , hpBonus : 0 , hprPct : 0 , hprRaw : 0 , int : 0 , intReq : 0 , jh : 0 , lb : 0 , lq : 0 , ls : 0 , lvl : 0 , material : null , mdPct : 0 , mdRaw : 0 , mr : 0 , ms : 0 , poison : 0 , quest : null , rainbowRaw : 0 , ref : 0 , sdPct : 0 , sdRaw : 0 , set : null , slots : 0 , spPct1 : 0 , spPct2 : 0 , spPct3 : 0 , spPct4 : 0 , spRaw1 : 0 , spRaw2 : 0 , spRaw3 : 0 , spRaw4 : 0 , spRegen : 0 , spd : 0 , sprintReg : 0 , str : 0 , strReq : 0 , tDamPct : 0 , tDef : 0 , tDefPct : 0 , thorns : 0 , tier : null , wDamPct : 0 , wDef : 0 , wDefPct : 0 , xpb : 0 } ,
{ displayName : "No Weapon" , name : "No Weapon" , category : "weapon" , type : "wand" , aDamPct : 0 , aDef : 0 , aDefPct : 0 , agi : 0 , agiReq : 0 , atkTier : 0 , classReq : null , def : 0 , defReq : 0 , dex : 0 , dexReq : 0 , drop : "never" , eDamPct : 0 , eDef : 0 , eDefPct : 0 , eSteal : 0 , exploding : 0 , fDamPct : 0 , fDef : 0 , fDefPct : 0 , fixID : true , gSpd : 0 , gXp : 0 , hp : 0 , hpBonus : 0 , hprPct : 0 , hprRaw : 0 , int : 0 , intReq : 0 , jh : 0 , lb : 0 , lq : 0 , ls : 0 , lvl : 0 , material : null , mdPct : 0 , mdRaw : 0 , mr : 0 , ms : 0 , poison : 0 , quest : null , rainbowRaw : 0 , ref : 0 , sdPct : 0 , sdRaw : 0 , set : null , slots : 0 , spPct1 : 0 , spPct2 : 0 , spPct3 : 0 , spPct4 : 0 , spRaw1 : 0 , spRaw2 : 0 , spRaw3 : 0 , spRaw4 : 0 , spRegen : 0 , spd : 0 , sprintReg : 0 , str : 0 , strReq : 0 , tDamPct : 0 , tDef : 0 , tDefPct : 0 , thorns : 0 , tier : null , wDamPct : 0 , wDef : 0 , wDefPct : 0 , xpb : 0 }
2021-01-06 22:46:00 +00:00
]
2021-01-06 23:31:35 +00:00
items = items . concat ( noneItems ) ;
2021-01-06 12:48:41 +00:00
console . log ( items ) ;
for ( const item of items ) {
2021-01-06 22:51:02 +00:00
itemLists . get ( item . type ) . push ( item . displayName ) ;
itemMap . set ( item . displayName , item ) ;
2021-01-06 12:48:41 +00:00
}
2021-01-06 23:31:35 +00:00
/ * f o r ( c o n s t i t e m o f n o n e I t e m s ) {
2021-01-06 22:46:00 +00:00
itemLists . get ( item . type ) . push ( item . name ) ;
itemMap . set ( item . name , item ) ;
2021-01-06 23:31:35 +00:00
} * /
2021-01-06 12:48:41 +00:00
for ( const armorType of armorTypes ) {
populateItemList ( armorType ) ;
2021-01-06 22:51:02 +00:00
// Add change listener to update armor slots.
2021-01-06 12:48:41 +00:00
document . getElementById ( armorType + "-choice" ) . addEventListener ( "change" , ( event ) => {
let item = itemMap . get ( event . target . value ) ;
if ( item !== undefined ) {
document . getElementById ( armorType + "-slots" ) . textContent = item . slots + " slots" ;
}
else {
document . getElementById ( armorType + "-slots" ) . textContent = "X slots" ;
}
} ) ;
}
let ring1 _list = document . getElementById ( "ring1-items" ) ;
let ring2 _list = document . getElementById ( "ring2-items" ) ;
for ( const ring of itemLists . get ( "ring" ) ) {
let el1 = document . createElement ( "option" ) ;
let el2 = document . createElement ( "option" ) ;
el1 . value = ring ;
el2 . value = ring ;
ring1 _list . appendChild ( el1 ) ;
ring2 _list . appendChild ( el2 ) ;
}
populateItemList ( "bracelet" ) ;
populateItemList ( "necklace" ) ;
let weapon _list = document . getElementById ( "weapon-items" ) ;
for ( const weaponType of weaponTypes ) {
for ( const weapon of itemLists . get ( weaponType ) ) {
let el = document . createElement ( "option" ) ;
el . value = weapon ;
weapon _list . appendChild ( el ) ;
}
}
2021-01-06 22:51:02 +00:00
// Add change listener to update weapon slots.
2021-01-06 12:48:41 +00:00
document . getElementById ( "weapon-choice" ) . addEventListener ( "change" , ( event ) => {
let item = itemMap . get ( event . target . value ) ;
if ( item !== undefined ) {
document . getElementById ( "weapon-slots" ) . textContent = item . slots + " slots" ;
}
else {
document . getElementById ( "weapon-slots" ) . textContent = "X slots" ;
}
} ) ;
}
2021-01-06 20:54:15 +00:00
function calculateBuild ( ) {
2021-01-06 23:31:35 +00:00
/ * T O D O : i m p l e m e n t l e v e l c h a n g i n g
Make this entire function prettier
* /
let helmet = document . getElementById ( "helmet-choice" ) . value ;
let chestplate = document . getElementById ( "chestplate-choice" ) . value ;
let leggings = document . getElementById ( "leggings-choice" ) . value ;
let boots = document . getElementById ( "boots-choice" ) . value ;
let ring1 = document . getElementById ( "ring1-choice" ) . value ;
let ring2 = document . getElementById ( "ring2-choice" ) . value ;
let bracelet = document . getElementById ( "bracelet-choice" ) . value ;
let necklace = document . getElementById ( "necklace-choice" ) . value ;
let weapon = document . getElementById ( "weapon-choice" ) . value ;
if ( helmet === "" ) {
helmet = "No Helmet" ;
}
if ( chestplate === "" ) {
chestplate = "No Chestplate" ;
}
if ( leggings === "" ) {
leggings = "No Leggings" ;
}
if ( boots === "" ) {
boots = "No Boots" ;
}
if ( ring1 === "" ) {
ring1 = "No Ring 1" ;
}
if ( ring2 === "" ) {
ring2 = "No Ring 2" ;
}
if ( bracelet === "" ) {
bracelet = "No Bracelet" ;
}
if ( necklace === "" ) {
necklace = "No Necklace" ;
}
if ( weapon === "" ) {
weapon = "No Weapon" ;
}
2021-01-07 00:04:16 +00:00
player _build = new Build (
2021-01-06 20:54:15 +00:00
106 ,
2021-01-06 23:31:35 +00:00
itemMap . get ( helmet ) ,
itemMap . get ( chestplate ) ,
itemMap . get ( leggings ) ,
itemMap . get ( boots ) ,
itemMap . get ( ring1 ) ,
itemMap . get ( ring2 ) ,
itemMap . get ( bracelet ) ,
itemMap . get ( necklace ) ,
itemMap . get ( weapon ) ,
2021-01-06 20:54:15 +00:00
) ;
2021-01-06 22:46:00 +00:00
console . log ( player _build . toString ( ) ) ;
2021-01-07 00:04:16 +00:00
document . getElementById ( "build-helmet" ) . innerHTML = player _build . helmet . name ;
document . getElementById ( "build-chestplate" ) . innerHTML = player _build . chestplate . name ;
document . getElementById ( "build-leggings" ) . innerHTML = player _build . helmet . name ;
document . getElementById ( "build-boots" ) . innerHTML = player _build . helmet . name ;
document . getElementById ( "build-ring1" ) . innerHTML = player _build . ring1 . name ;
document . getElementById ( "build-ring2" ) . innerHTML = player _build . ring2 . name ;
document . getElementById ( "build-bracelet" ) . innerHTML = player _build . bracelet . name ;
document . getElementById ( "build-necklace" ) . innerHTML = player _build . necklace . name ;
document . getElementById ( "build-weapon" ) . innerHTML = player _build . weapon . name ;
2021-01-06 20:54:15 +00:00
}
function resetFields ( ) {
2021-01-06 23:31:35 +00:00
document . getElementById ( "helmet-choice" ) . value = "" ;
2021-01-06 20:54:15 +00:00
document . getElementById ( "helmet-powder" ) . value = "" ;
2021-01-06 23:31:35 +00:00
document . getElementById ( "chestplate-choice" ) . value = "" ;
2021-01-06 20:54:15 +00:00
document . getElementById ( "chestplate-powder" ) . value = "" ;
2021-01-06 23:31:35 +00:00
document . getElementById ( "leggings-choice" ) . value = "" ;
2021-01-06 20:54:15 +00:00
document . getElementById ( "leggings-powder" ) . value = "" ;
2021-01-06 23:31:35 +00:00
document . getElementById ( "boots-choice" ) . value = "" ;
2021-01-06 20:54:15 +00:00
document . getElementById ( "boots-powder" ) . value = "" ;
2021-01-06 23:31:35 +00:00
document . getElementById ( "ring1-choice" ) . value = "" ;
document . getElementById ( "ring2-choice" ) . value = "" ;
document . getElementById ( "bracelet-choice" ) . value = "" ;
document . getElementById ( "necklace-choice" ) . value = "" ;
document . getElementById ( "weapon-choice" ) . value = "" ;
2021-01-06 20:54:15 +00:00
document . getElementById ( "weapon-powder" ) . value = "" ;
document . getElementById ( "str-skp" ) . value = "" ;
document . getElementById ( "dex-skp" ) . value = "" ;
document . getElementById ( "int-skp" ) . value = "" ;
document . getElementById ( "def-skp" ) . value = "" ;
document . getElementById ( "agi-skp" ) . value = "" ;
2021-01-06 22:46:00 +00:00
}
2021-01-07 00:08:19 +00:00
load _init ( init ) ;