The Black Sacrament -- A Guide To Black Mage

Language: JP EN DE FR
2010-09-08
New Items
users online
Forum » FFXI » Jobs » Black Mage » The Black Sacrament -- A Guide to Black Mage
The Black Sacrament -- A Guide to Black Mage
First Page 2 3 ... 13 14
 Asura.Finbar
Offline
Server: Asura
Game: FFXI
user: Finbar
Posts: 65
By Asura.Finbar 2019-03-13 09:24:21
Link | Quote | Reply
 
Yeah, I was going to edit to put a "maybe" in there, as I'd have to do the math for the INT and MAB vs the MBD2, but I figured I'd let someone correct me. Ea +1 Pigaches has -7 MAB, -28 INT, +6 Macc, and +5 MBD2 compared to Jhakri +2. There's a few too many factors for me to calculate it here at work.
 Lakshmi.Miang
Offline
Server: Lakshmi
Game: FFXI
user: Miang
Posts: 31
By Lakshmi.Miang 2019-03-14 18:57:21
Link | Quote | Reply
 
Been doing Orpheus's Sash testing so I can add it to my BLM lua
Code
Distance	Percent
0	1.148348348
1	1.148348348
2	1.139039039
3	1.12972973
4	1.118318318
5	1.109009009
6	1.0996997
7	1.088288288
8	1.078978979
9	1.069369369
10	1.058258258
11	1.048948949
12	1.039339339
13	1.028228228
14	1.018793574
15	1.009396787
16	1.009396787


Used linear regression to create this function for lua:
Code
function get_orpheus_damage_percent(spell)
	if spell.target.distance < 1 then
		return 1.148348348
	end
	if spell.target.distance > 15 then
		return 1.009396787
	end
	return -0.01 * spell.target.distance + 1.1589
end


Just pass the current spell in during midcast and it will return the % boost you'll get from the sash.

If you want to compare it against Hachirin obi you can use the following function to get the % boost from that too:
Code
opposingElement = T{
	['Water'] = 'Fire',
	['Lightning'] = 'Water',
	['Earth'] = 'Lightning',
	['Wind'] = 'Earth',
	['Ice'] = 'Wind',
	['Fire'] = 'Ice',
	['Light'] = 'Dark',
	['Dark'] = 'Light',
}
stormNames = T{
	['Fire'] = 178,
	['Ice'] = 179,
	['Wind'] = 180,
	['Earth'] = 181,
	['Lightning'] = 182,
	['Water'] = 183,
	['Light'] = 184,
	['Dark'] = 185,
}
storm2Names = T{
	['Fire'] = 589,
	['Ice'] = 590,
	['Wind'] = 591,
	['Earth'] = 592,
	['Lightning'] = 593,
	['Water'] = 594,
	['Light'] = 595,
	['Dark'] = 596,
}
function get_obi_percent(spell)
	local intensity = 1.00

	-- Helix spells are always affected by weather, so obi is never required to force weather proc
	if spell.skill == 'Elemental Magic' and (spell.english:sub(-5) == 'helix' or spell.english:sub(-8) == 'helix II') then
		return intensity
	end

	if buffactive[stormNames[spell.element]] then
		intensity = intensity + 0.1
	elseif buffactive[storm2Names[spell.element]] then
		intensity = intensity + 0.25
	elseif spell.element == world.weather_element then
		if gearswap.res.weather[world.weather_id].intensity == 2 then
			intensity = intensity + 0.25
		elseif gearswap.res.weather[world.weather_id].intensity == 1 then
			intensity = intensity + 0.1
		end
	elseif world.weather_element == opposingElement[spell.element] then
		if gearswap.res.weather[world.weather_id].intensity == 2 then
			intensity = intensity - 0.25
		elseif gearswap.res.weather[world.weather_id].intensity == 1 then
			intensity = intensity - 0.1
		end
	end

	if world.day_element == spell.element then
		intensity = intensity + 0.1
	elseif world.day_element == opposingElement[spell.element] then
		intensity = intensity - 0.1
	end

	return intensity
end


In my midcast section I have the following:
Code
local weatherLevel = get_obi_percent(spell)
if weatherLevel > 1.00 then
    if spell.skill == 'Elemental Magic' and sets.Orpheus.waist and get_orpheus_damage_percent(spell) > weatherLevel then
        equip(sets.Orpheus)
    else
        equip(sets[spell.element])
    end
else
    equip(sets.Orpheus)
end


And the above will equip the relevant set from these:
Code
sets['Lightning'] = {waist="Hachirin-no-Obi"}
sets['Ice'] = {waist="Hachirin-no-Obi"}
sets['Water'] = {waist="Hachirin-no-Obi"}
sets['Fire'] = {waist="Hachirin-no-Obi"}
sets['Earth'] = {waist="Hachirin-no-Obi"}
sets['Wind'] = {waist="Hachirin-no-Obi"}
sets['Light'] = {waist="Hachirin-no-Obi"}
sets['Dark'] = {waist="Hachirin-no-Obi"}
sets['Orpheus'] = {waist="Orpheus's Sash"}


Just throwing this out there in case anyone else wanted to automate using the sash
 Shiva.Hiep
Offline
Server: Shiva
Game: FFXI
user: Hiepo
Posts: 620
By Shiva.Hiep 2019-03-14 19:04:58
Link | Quote | Reply
 
Does anyone have a function to have Sorcerer's Ring equip under 75% HP? I'd like it for my free nukes!
 Lakshmi.Miang
Offline
Server: Lakshmi
Game: FFXI
user: Miang
Posts: 31
By Lakshmi.Miang 2019-03-15 04:28:11
Link | Quote | Reply
 
Shiva.Hiep said: »
Does anyone have a function to have Sorcerer's Ring equip under 75% HP? I'd like it for my free nukes!
Code
if player.hpp < 75 then
    equip(sets["Sorcerer's Ring"])
end

Put that in your midcast, right after where it equips gear for your nukes
[+]
 Shiva.Hiep
Offline
Server: Shiva
Game: FFXI
user: Hiepo
Posts: 620
By Shiva.Hiep 2019-03-18 02:42:19
Link | Quote | Reply
 
How would I exclude elemental debuffs such as burn?
Code
if player.hpp < 75 and spell.skill == 'Elemental Magic' then
    equip(sets.Sorcerer)
end
 Asura.Byrne
Offline
Server: Asura
Game: FFXI
By Asura.Byrne 2019-03-18 04:05:57
Link | Quote | Reply
 
Lakshmi.Miang said: »
 
Code
 if buffactive[stormNames[spell.element]] then
        intensity = intensity + 0.1
    elseif buffactive[storm2Names[spell.element]] then
        intensity = intensity + 0.25

Damn, I really need to remember to dig into luas for jobs I don't use!

So I'm guessing this can tell the difference between weather 1 and 2?

If so, I should pass it around for all the RDMs, CORs, BST, WARs, and RNGs that want to distinguish them :o

I would like clarification, but you seem to be saying as much; if so, I'd like to say, nice work, and thanks.
 Asura.Chiaia
Offline
Server: Asura
Game: FFXI
user: Demmis
Posts: 949
By Asura.Chiaia 2019-03-18 04:53:11
Link | Quote | Reply
 
his method is overly complex to tell the diff between weather 1 and 2.
 Shiva.Spynx
Offline
Server: Shiva
Game: FFXI
user: auron86
Posts: 333
By Shiva.Spynx 2019-03-18 05:14:50
Link | Quote | Reply
 
Shiva.Hiep said: »
How would I exclude elemental debuffs such as burn?
Code
if player.hpp < 75 and spell.skill == 'Elemental Magic' then
    equip(sets.Sorcerer)
end
Assuming you are using mote:
Code
function job_post_midcast(spell, action, spellMap, eventArgs)
	if player.hpp < 75 and spell.skill == 'Elemental Magic' and spellMap ~= 'ElementalEnfeeble' then
		equip(sets.Sorcerer)	
	end
end
 Lakshmi.Miang
Offline
Server: Lakshmi
Game: FFXI
user: Miang
Posts: 31
By Lakshmi.Miang 2019-03-18 06:17:27
Link | Quote | Reply
 
Asura.Byrne said: »
Lakshmi.Miang said: »
&nbsp;
Code
&nbsp;if buffactive[stormNames[spell.element]] then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intensity = intensity + 0.1
&nbsp;&nbsp;&nbsp;&nbsp;elseif buffactive[storm2Names[spell.element]] then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intensity = intensity + 0.25

Damn, I really need to remember to dig into luas for jobs I don't use!

So I'm guessing this can tell the difference between weather 1 and 2?

If so, I should pass it around for all the RDMs, CORs, BST, WARs, and RNGs that want to distinguish them :o

I would like clarification, but you seem to be saying as much; if so, I'd like to say, nice work, and thanks.

Yeah this will tell the difference between the type of weather, both storm based and world weather based. You'd need to include these variables too though:
Code
opposingElement = T{
    ['Water'] = 'Fire',
    ['Lightning'] = 'Water',
    ['Earth'] = 'Lightning',
    ['Wind'] = 'Earth',
    ['Ice'] = 'Wind',
    ['Fire'] = 'Ice',
    ['Light'] = 'Dark',
    ['Dark'] = 'Light',
}
stormNames = T{
    ['Fire'] = 178,
    ['Ice'] = 179,
    ['Wind'] = 180,
    ['Earth'] = 181,
    ['Lightning'] = 182,
    ['Water'] = 183,
    ['Light'] = 184,
    ['Dark'] = 185,
}
storm2Names = T{
    ['Fire'] = 589,
    ['Ice'] = 590,
    ['Wind'] = 591,
    ['Earth'] = 592,
    ['Lightning'] = 593,
    ['Water'] = 594,
    ['Light'] = 595,
    ['Dark'] = 596,
}


The two stormNames variables convert a spell.element format into a buff id. The opposingElement variable is only needed if you want to track negative consequences too.
 Lakshmi.Miang
Offline
Server: Lakshmi
Game: FFXI
user: Miang
Posts: 31
By Lakshmi.Miang 2019-03-18 06:20:47
Link | Quote | Reply
 
Shiva.Spynx said: »
Shiva.Hiep said: »
How would I exclude elemental debuffs such as burn?
Code
if player.hpp < 75 and spell.skill == 'Elemental Magic' then
    equip(sets.Sorcerer)
end
Assuming you are using mote:
Code
function job_post_midcast(spell, action, spellMap, eventArgs)
	if player.hpp < 75 and spell.skill == 'Elemental Magic' and spellMap ~= 'ElementalEnfeeble' then
		equip(sets.Sorcerer)	
	end
end

If you're not using mote:
Code
if player.hpp < 75 and spell.skill == 'Elemental Magic' and spell.english ~= 'Burn' and spell.english ~= 'Frost' and spell.english ~= 'Choke' and spell.english ~= 'Rasp' and spell.english ~= 'Shock' and spell.english ~= 'Drown') then
    equip(sets.Sorcerer)
end
 Asura.Byrne
Offline
Server: Asura
Game: FFXI
By Asura.Byrne 2019-03-18 15:57:32
Link | Quote | Reply
 
Lakshmi.Miang said: »
Asura.Byrne said: »
Lakshmi.Miang said: »
&nbsp;
Code
&nbsp;if buffactive[stormNames[spell.element]] then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intensity = intensity + 0.1
&nbsp;&nbsp;&nbsp;&nbsp;elseif buffactive[storm2Names[spell.element]] then
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intensity = intensity + 0.25

Damn, I really need to remember to dig into luas for jobs I don't use!

So I'm guessing this can tell the difference between weather 1 and 2?

If so, I should pass it around for all the RDMs, CORs, BST, WARs, and RNGs that want to distinguish them :o

I would like clarification, but you seem to be saying as much; if so, I'd like to say, nice work, and thanks.

Yeah this will tell the difference between the type of weather, both storm based and world weather based. You'd need to include these variables too though:
Code
opposingElement = T{
    ['Water'] = 'Fire',
    ['Lightning'] = 'Water',
    ['Earth'] = 'Lightning',
    ['Wind'] = 'Earth',
    ['Ice'] = 'Wind',
    ['Fire'] = 'Ice',
    ['Light'] = 'Dark',
    ['Dark'] = 'Light',
}
stormNames = T{
    ['Fire'] = 178,
    ['Ice'] = 179,
    ['Wind'] = 180,
    ['Earth'] = 181,
    ['Lightning'] = 182,
    ['Water'] = 183,
    ['Light'] = 184,
    ['Dark'] = 185,
}
storm2Names = T{
    ['Fire'] = 589,
    ['Ice'] = 590,
    ['Wind'] = 591,
    ['Earth'] = 592,
    ['Lightning'] = 593,
    ['Water'] = 594,
    ['Light'] = 595,
    ['Dark'] = 596,
}


The two stormNames variables convert a spell.element format into a buff id. The opposingElement variable is only needed if you want to track negative consequences too.

I'll probably just use buffactive[#] to handle the arguments for Obi on Elemental WS since it's pretty straightforward. I just didn't know what the ID's for weather 2 were, as I had tried to find them in the past and failed. Cheers!

Edit: Maybe a bit more thought for COR and RNG, but the melee jobs are going to be standing in a range such that Orpheus will beat out anything but double weather. Of course when firing WS at range that will be different so, I'll have to remember to include the whole gamut for those jobs.
Offline
Posts: 20
By Ryoski 2019-03-21 22:28:17
Link | Quote | Reply
 
which is better for magic burst, the Count's Garb or Ea Houpplande?
 Asura.Topace
Offline
Server: Asura
Game: FFXI
user: Topace
Posts: 420
By Asura.Topace 2019-03-21 23:20:27
Link | Quote | Reply
 
EA has higher MAB/Int/Macc/ and MB 1/2. Count's Garb offers nothing. If I remember the formula right the Magic Crit rate/dmg on the count's garb would translate to and and extra 25 MAB 15% of the time. Which really isn't ***. Tho I could be wrong.

Either way EA body shits on it.
 Asura.Toralin
Offline
Server: Asura
Game: FFXI
user: toralin
Posts: 810
By Asura.Toralin 2019-03-22 07:53:35
Link | Quote | Reply
 
Lakshmi.Miang said: »
Been doing Orpheus's Sash testing so I can add it to my BLM lua
Code
Distance	Percent
0	1.148348348
1	1.148348348
2	1.139039039
3	1.12972973
4	1.118318318
5	1.109009009
6	1.0996997
7	1.088288288
8	1.078978979
9	1.069369369
10	1.058258258
11	1.048948949
12	1.039339339
13	1.028228228
14	1.018793574
15	1.009396787
16	1.009396787


Used linear regression to create this function for lua:
Code
function get_orpheus_damage_percent(spell)
	if spell.target.distance < 1 then
		return 1.148348348
	end
	if spell.target.distance > 15 then
		return 1.009396787
	end
	return -0.01 * spell.target.distance + 1.1589
end


Just pass the current spell in during midcast and it will return the % boost you'll get from the sash.

If you want to compare it against Hachirin obi you can use the following function to get the % boost from that too:
Code
opposingElement = T{
	['Water'] = 'Fire',
	['Lightning'] = 'Water',
	['Earth'] = 'Lightning',
	['Wind'] = 'Earth',
	['Ice'] = 'Wind',
	['Fire'] = 'Ice',
	['Light'] = 'Dark',
	['Dark'] = 'Light',
}
stormNames = T{
	['Fire'] = 178,
	['Ice'] = 179,
	['Wind'] = 180,
	['Earth'] = 181,
	['Lightning'] = 182,
	['Water'] = 183,
	['Light'] = 184,
	['Dark'] = 185,
}
storm2Names = T{
	['Fire'] = 589,
	['Ice'] = 590,
	['Wind'] = 591,
	['Earth'] = 592,
	['Lightning'] = 593,
	['Water'] = 594,
	['Light'] = 595,
	['Dark'] = 596,
}
function get_obi_percent(spell)
	local intensity = 1.00

	-- Helix spells are always affected by weather, so obi is never required to force weather proc
	if spell.skill == 'Elemental Magic' and (spell.english:sub(-5) == 'helix' or spell.english:sub(-8) == 'helix II') then
		return intensity
	end

	if buffactive[stormNames[spell.element]] then
		intensity = intensity + 0.1
	elseif buffactive[storm2Names[spell.element]] then
		intensity = intensity + 0.25
	elseif spell.element == world.weather_element then
		if gearswap.res.weather[world.weather_id].intensity == 2 then
			intensity = intensity + 0.25
		elseif gearswap.res.weather[world.weather_id].intensity == 1 then
			intensity = intensity + 0.1
		end
	elseif world.weather_element == opposingElement[spell.element] then
		if gearswap.res.weather[world.weather_id].intensity == 2 then
			intensity = intensity - 0.25
		elseif gearswap.res.weather[world.weather_id].intensity == 1 then
			intensity = intensity - 0.1
		end
	end

	if world.day_element == spell.element then
		intensity = intensity + 0.1
	elseif world.day_element == opposingElement[spell.element] then
		intensity = intensity - 0.1
	end

	return intensity
end


In my midcast section I have the following:
Code
local weatherLevel = get_obi_percent(spell)
if weatherLevel > 1.00 then
    if spell.skill == 'Elemental Magic' and sets.Orpheus.waist and get_orpheus_damage_percent(spell) > weatherLevel then
        equip(sets.Orpheus)
    else
        equip(sets[spell.element])
    end
else
    equip(sets.Orpheus)
end


And the above will equip the relevant set from these:
Code
sets['Lightning'] = {waist="Hachirin-no-Obi"}
sets['Ice'] = {waist="Hachirin-no-Obi"}
sets['Water'] = {waist="Hachirin-no-Obi"}
sets['Fire'] = {waist="Hachirin-no-Obi"}
sets['Earth'] = {waist="Hachirin-no-Obi"}
sets['Wind'] = {waist="Hachirin-no-Obi"}
sets['Light'] = {waist="Hachirin-no-Obi"}
sets['Dark'] = {waist="Hachirin-no-Obi"}
sets['Orpheus'] = {waist="Orpheus's Sash"}


Just throwing this out there in case anyone else wanted to automate using the sash


So whats the tipping point here? Orph is better if single weather and inside 15 range?
 Asura.Byrne
Offline
Server: Asura
Game: FFXI
By Asura.Byrne 2019-03-22 23:54:56
Link | Quote | Reply
 
Right, seems like it doesn't get quite as much use on BLM, but hey if it's put in with arguments, it should only swap when it was the optimal choice... It's a little easier to find uses on melees for sure.
necroskull Necro Bump Detected! [39 days between previous and next post]
Offline
Posts: 1
By swagster 2019-04-30 22:19:00
Link | Quote | Reply
 
In the Burst Max Dmg set, I'm counting only 39 MBD. Am I missing a source somewhere, or is it just worth giving up that 1 MBD to get lots more MBD2?
 Bahamut.Lordshaxx
Online
Server: Bahamut
Game: FFXI
user: Crescens
Posts: 20
By Bahamut.Lordshaxx 2019-04-30 23:45:49
Link | Quote | Reply
 
swagster said: »
In the Burst Max Dmg set, I'm counting only 39 MBD. Am I missing a source somewhere, or is it just worth giving up that 1 MBD to get lots more MBD2?

Didn't go back to look at the set but the value of MBD 1 and MBD 2 are the same. Maximize the sum of MBD1 and MBD2 (subject to a 40 max of MBD1 of course). Giving up one MBD1 for one MBD2 will net exactly zero change.
[+]
Offline
Posts: 106
By olson2189 2019-05-17 21:24:05
Link | Quote | Reply
 
Why Terra's staff in the BiS Manawall set? Seems like the iLvl hit would make that a terrible choice over something like Mafic Cudgel + Genmei shield.
 Asura.Eiryl
Offline
Server: Asura
Game: FFXI
user: Eiryl
By Asura.Eiryl 2019-05-17 21:29:04
Link | Quote | Reply
 
Moar DT with staff+grip

BiS would probably have the ambuscade grip in there btw (updated etc)

Also, possibly important, you can't myrkr with a club, and myrkr is cure for mana wall. Myrkr > Moonlight
Offline
Posts: 106
By olson2189 2019-05-18 00:04:00
Link | Quote | Reply
 
Asura.Eiryl said: »
Moar DT with staff+grip

BiS would probably have the ambuscade grip in there btw (updated etc)

Also, possibly important, you can't myrkr with a club, and myrkr is cure for mana wall. Myrkr > Moonlight

But his set has -45% PDT without the staff. A i119 staff, such as this one would still get you to the DT cap and access to myrkr, but without the iLvl hit.
 Asura.Eiryl
Offline
Server: Asura
Game: FFXI
user: Eiryl
By Asura.Eiryl 2019-05-18 00:21:47
Link | Quote | Reply
 
The set is also pretty old, I'm pretty sure it doesn't even account for resin aug on the cape. so.

Best probably doesn't even need to change weapons anymore. Su4/5 would be better with an updated set.
Offline
Posts: 706
By Chimerawizard 2019-05-18 00:34:26
Link | Quote | Reply
 
ItemSet 343718
Posted it two pages ago.
however, it's far more expensive to make than the one on page1 for a set you'll barely ever use, hence insane.
[+]
Offline
Posts: 106
By olson2189 2019-05-18 10:57:01
Link | Quote | Reply
 
Chimerawizard said: »
ItemSet 343718
Posted it two pages ago.
however, it's far more expensive to make than the one on page1 for a set you'll barely ever use, hence insane.

Thanks for sharing. For path C on Kaumodaki, BG says "Damage Taken - +15%". The way they wrote that up is very confusing, is it -15% DT or +15% DT?
Offline
Posts: 706
By Chimerawizard 2019-05-18 12:07:53
Link | Quote | Reply
 
I don't own one, however it should be DT- as there are no other SU5 weapons or JSE necks that have a detrimental augment on them.
First Page 2 3 ... 13 14
Log in to post.