Skip to content

Commit

Permalink
The Molten Core
Browse files Browse the repository at this point in the history
Accursed Chalice
Woodcarved Moonstalker
  • Loading branch information
turinpt committed Jun 22, 2024
1 parent f0aaaaf commit 48449a9
Show file tree
Hide file tree
Showing 12 changed files with 185 additions and 22 deletions.
2 changes: 1 addition & 1 deletion dist/js/classes/player.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/js/classes/simulation.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/js/classes/spell.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/js/data/gear_sod.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/js/data/spells.min.js

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions gear/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,11 @@
if (obj.id == 215461) include = true;
if (obj.id == 221442) include = true;
if (obj.id == 220632) include = true;
if (obj.id == 228089) include = true;
if (obj.id == 228122) include = true;
if (obj.id == 228147) include = true;



if (obj.id == 16336) exclude = true;
if (obj.id == 17780) exclude = true;
Expand Down
18 changes: 1 addition & 17 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -41,29 +41,13 @@
<!--
TODO
fight log btn
hoj 2 sec ICD
fix selected item losing dps
dynamic presets from text file
better bloodrage / berserker management?
more execute options?
https://www.wowhead.com/classic/item=228143/shadowflame-sword
https://www.wowhead.com/classic/item=228147/magmadars-horn
https://www.wowhead.com/classic/item=228122/the-molten-core
https://www.wowhead.com/classic/item=228078/accursed-chalice
https://www.wowhead.com/classic/item=228089/woodcarved-moonstalker
https://www.wowhead.com/classic/spell=460940/might-of-stormwind
https://www.wowhead.com/classic/news/new-warrior-raid-buff-provides-rallying-cry-of-the-dragonslayer-lite-in-phase-4-343201#comments
https://www.wowhead.com/classic/news/new-class-and-spell-changes-datamined-on-phase-4-ptr-season-of-discovery-343199
Warrior
Shield Slam now gains 15% of attack power as additional damage
A new ability has been added via spellbook: Valor of Azeroth
Valor of Azeroth grants all party and raid members 1.5x the Warrior’s level in Attack Power (melee and ranged) and 5% crit chance to all spells and attacks. This is not cumulative with Rallying Cry of the Dragonslayer.
later:
sweeping strikes https://hilbert.wordpress.com/sweeping-strikes-guide/
item cooldowns
Expand Down
12 changes: 12 additions & 0 deletions js/classes/player.js
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,10 @@ class Player {
this.base['moddmgdone'] += 2;
if (item.id == 215166)
this.base['moddmgdone'] += 3;
if (item.id == 228089)
this.base['moddmgdone'] += 4;
if (item.id == 228122)
this.spells.themoltencore = new TheMoltenCore(this);

this.items.push(item.id);
}
Expand Down Expand Up @@ -672,6 +676,9 @@ class Player {
if (this.spells.gunaxe) {
this.spells.gunaxe.idmg = 0;
}
if (this.spells.themoltencore) {
this.spells.themoltencore.idmg = 0;
}
this.initStances();
this.update();
}
Expand Down Expand Up @@ -993,6 +1000,8 @@ class Player {
if (this.auras.berserkerforecast && this.auras.berserkerforecast.timer) this.auras.berserkerforecast.step();
if (this.auras.defendersresolve && this.auras.defendersresolve.timer) this.auras.defendersresolve.step();
if (this.auras.singleminded && this.auras.singleminded.timer) this.auras.singleminded.step();
if (this.auras.demontaintedblood && this.auras.demontaintedblood.timer) this.auras.demontaintedblood.step();
if (this.auras.moonstalkerfury && this.auras.moonstalkerfury.timer) this.auras.moonstalkerfury.step();

if (this.mh.windfury && this.mh.windfury.timer) this.mh.windfury.step();
if (this.trinketproc1 && this.trinketproc1.spell && this.trinketproc1.spell.timer) this.trinketproc1.spell.step();
Expand Down Expand Up @@ -1052,6 +1061,8 @@ class Player {
if (this.auras.berserkerforecast && this.auras.berserkerforecast.timer) this.auras.berserkerforecast.end();
if (this.auras.defendersresolve && this.auras.defendersresolve.timer) this.auras.defendersresolve.end();
if (this.auras.singleminded && this.auras.singleminded.timer) this.auras.singleminded.end();
if (this.auras.moonstalkerfury && this.auras.moonstalkerfury.timer) this.auras.moonstalkerfury.end();
if (this.auras.demontaintedblood && this.auras.demontaintedblood.timer) this.auras.demontaintedblood.end();


if (this.mh.windfury && this.mh.windfury.timer) this.mh.windfury.end();
Expand All @@ -1070,6 +1081,7 @@ class Player {
if (this.auras.consumedrage && this.auras.consumedrage.timer) this.auras.consumedrage.end();
if (this.auras.weaponbleedmh && this.auras.weaponbleedmh.timer) this.auras.weaponbleedmh.end();
if (this.auras.weaponbleedoh && this.auras.weaponbleedoh.timer) this.auras.weaponbleedoh.end();


}
rollweapon(weapon) {
Expand Down
10 changes: 10 additions & 0 deletions js/classes/simulation.js
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,10 @@ class Simulation {
if (player.auras.consumedrage && player.rage >= 60)
player.auras.consumedrage.use();
}
if (player.spells.themoltencore && next != 0 && step % 1000 == 0) {
player.spells.themoltencore.use();
}

if (player.target.speed && step % player.target.speed == 0) {
let oldRage = player.rage;
let dmg = rng(player.target.mindmg, player.target.maxdmg);
Expand Down Expand Up @@ -335,6 +339,8 @@ class Simulation {
else if (player.auras.roarguardian && player.auras.roarguardian.canUse()) { player.spelldelay = 1; delayedspell = player.auras.roarguardian; }
else if (player.auras.zandalarian && player.auras.zandalarian.canUse()) { player.spelldelay = 1; delayedspell = player.auras.zandalarian; }
else if (player.auras.relentlessstrength && player.auras.relentlessstrength.canUse()) { player.spelldelay = 1; delayedspell = player.auras.relentlessstrength; }
else if (player.auras.demontaintedblood && player.auras.demontaintedblood.canUse()) { player.spelldelay = 1; delayedspell = player.auras.demontaintedblood; }
else if (player.auras.moonstalkerfury && player.auras.moonstalkerfury.canUse()) { player.spelldelay = 1; delayedspell = player.auras.moonstalkerfury; }

// Use GCD spells
else if (player.timer) { }
Expand Down Expand Up @@ -529,6 +535,7 @@ class Simulation {
if (player.target.speed && (player.target.speed - (step % player.target.speed)) < next) next = player.target.speed - (step % player.target.speed);
if (player.talents.angermanagement && (3000 - (step % 3000)) < next) next = 3000 - (step % 3000);
if (player.vaelbuff && (1000 - (step % 1000)) < next) next = 1000 - (step % 1000);
if (player.spells.themoltencore && (1000 - (step % 1000)) < next) next = 1000 - (step % 1000);
if (player.auras.bloodrage && player.auras.bloodrage.timer && (1000 - ((step - player.auras.bloodrage.starttimer) % 1000)) < next)
next = 1000 - ((step - player.auras.bloodrage.starttimer) % 1000);
if (player.auras.gabbar && player.auras.gabbar.timer && (2000 - ((step - player.auras.gabbar.starttimer) % 2000)) < next)
Expand Down Expand Up @@ -653,6 +660,9 @@ class Simulation {
if (player.spells.gunaxe) {
this.idmg += player.spells.gunaxe.idmg;
}
if (player.spells.themoltencore) {
this.idmg += player.spells.themoltencore.idmg;
}
this.totaldmg += this.idmg;
this.totalduration += this.duration;
let dps = this.idmg / this.duration;
Expand Down
71 changes: 71 additions & 0 deletions js/classes/spell.js
Original file line number Diff line number Diff line change
Expand Up @@ -638,6 +638,23 @@ class Shockwave extends Spell {
}
}

class TheMoltenCore extends Spell {
constructor(player, id) {
super(player, id, 'The Molten Core');
this.useonly = true;
this.proc = { magicdmg: 20 };
this.idmg = 0;
}
use() {
let procdmg = this.player.magicproc(this.proc);
for (let i = 0; i < this.player.adjacent; i++) {
procdmg += this.player.magicproc(this.proc);
}
this.idmg += procdmg;
/* start-log */ if (log) this.player.log(`The Molten Core hit for ${procdmg}`); /* end-log */
}
}


/**************************************************** AURAS ****************************************************/

Expand Down Expand Up @@ -2469,4 +2486,58 @@ class SingleMinded extends Aura {
/* start-log */ if (log) this.player.log(`${this.name} removed`); /* end-log */
}
}
}

class DemonTaintedBlood extends Aura {
constructor(player, id) {
super(player, id, 'Demon-Tainted Blood');
this.duration = 20;
this.stats = { str: 80 };
}
use() {
this.player.itemtimer = this.duration * 1000;
this.timer = step + this.duration * 1000;
this.starttimer = step;
this.player.updateStrength();
/* start-log */ if (log) this.player.log(`${this.name} applied`); /* end-log */
}
step() {
if (step >= this.timer) {
this.uptime += (this.timer - this.starttimer);
this.timer = 0;
this.firstuse = false;
this.player.updateStrength();
/* start-log */ if (log) this.player.log(`${this.name} removed`); /* end-log */
}
}
canUse() {
return this.firstuse && !this.timer && !this.player.itemtimer && step >= this.usestep;
}
}

class MoonstalkerFury extends Aura {
constructor(player, id) {
super(player, id, 'Moonstalker Fury');
this.duration = 15;
this.stats = { str: 60 };
}
use() {
this.player.itemtimer = this.duration * 1000;
this.timer = step + this.duration * 1000;
this.starttimer = step;
this.player.updateStrength();
/* start-log */ if (log) this.player.log(`${this.name} applied`); /* end-log */
}
step() {
if (step >= this.timer) {
this.uptime += (this.timer - this.starttimer);
this.timer = 0;
this.firstuse = false;
this.player.updateStrength();
/* start-log */ if (log) this.player.log(`${this.name} removed`); /* end-log */
}
}
canUse() {
return this.firstuse && !this.timer && !this.player.itemtimer && step >= this.usestep;
}
}
57 changes: 57 additions & 0 deletions js/data/gear_sod.js
Original file line number Diff line number Diff line change
Expand Up @@ -5134,6 +5134,17 @@ var gear = {
"hit": 1,
"crit": 1
},
{
"id": 228147,
"type": "Miscellaneous",
"slot": "neck",
"r": 60,
"q": "4",
"i": "71",
"name": "Magmadar's Horn",
"p": "inv_jewelry_necklace_22",
"sta": 17
},
{
"id": 228249,
"type": "Miscellaneous",
Expand Down Expand Up @@ -45011,6 +45022,29 @@ var gear = {
"name": "Germinating Poisonseed",
"p": "inv_misc_herb_nightmareseed",
"hit": 1
},
{
"id": 228089,
"type": "Miscellaneous",
"slot": "trinket",
"r": 57,
"q": "3",
"i": "62",
"name": "Woodcarved Moonstalker",
"p": "inv_jewelcrafting_blackpearlpanther"
},
{
"id": 228122,
"type": "Miscellaneous",
"slot": "trinket",
"r": 60,
"q": "4",
"i": "75",
"name": "The Molten Core",
"p": "ability_warlock_moltencore",
"resist": {
"fire": 20
}
}
],
"trinket2": [
Expand Down Expand Up @@ -45344,6 +45378,29 @@ var gear = {
"name": "Germinating Poisonseed",
"p": "inv_misc_herb_nightmareseed",
"hit": 1
},
{
"id": 228089,
"type": "Miscellaneous",
"slot": "trinket",
"r": 57,
"q": "3",
"i": "62",
"name": "Woodcarved Moonstalker",
"p": "inv_jewelcrafting_blackpearlpanther"
},
{
"id": 228122,
"type": "Miscellaneous",
"slot": "trinket",
"r": 60,
"q": "4",
"i": "75",
"name": "The Molten Core",
"p": "ability_warlock_moltencore",
"resist": {
"fire": 20
}
}
],
"ranged": [
Expand Down
24 changes: 24 additions & 0 deletions js/data/spells.js
Original file line number Diff line number Diff line change
Expand Up @@ -1374,6 +1374,30 @@ var spells = [
timetostart: 0,
timetostartactive: false,
},
{
id: 228078,
name: 'Accursed Chalice',
classname: 'DemonTaintedBlood',
iconname: 'spell_shadow_demonictactics',
item: true,
aura: true,
timetoend: 21,
timetoendactive: false,
timetostart: 0,
timetostartactive: false,
},
{
id: 228089,
name: 'Woodcarved Moonstalker',
classname: 'MoonstalkerFury',
iconname: 'inv_jewelcrafting_blackpearlpanther',
item: true,
aura: true,
timetoend: 16,
timetoendactive: false,
timetostart: 0,
timetostartactive: false,
},



Expand Down

0 comments on commit 48449a9

Please sign in to comment.