Proper Usage Of Orpheus's Sash

Eorzea Time
 
 
 
言語: JP EN FR DE
日本語版のFFXIVPRO利用したい場合は、上記の"JP"を設定して、又はjp.ffxivpro.comを直接に利用してもいいです
users online
フォーラム » FFXI » Jobs » Corsair » proper usage of Orpheus's Sash
proper usage of Orpheus's Sash
 Bahamut.Celebrindal
Online
サーバ: Bahamut
Game: FFXI
Posts: 159
By Bahamut.Celebrindal 2019-10-16 13:35:27  
Having difficulties getting my lua to properly use Orpheus's Sash based on distance to target. I've tried the following in my

function precast(spell,action)

section.

if spell.english == "Leaden Salute" and
(spell.target.distance <8) then
equip({waist="Orpheus's Sash"})

without any results. Suggestions on how to properly deploy it? I'd prefer to alter my existing lua vs creating a new one.
 Asura.Barone
Offline
サーバ: Asura
Game: FFXI
user: Barone
Posts: 14
By Asura.Barone 2019-10-16 13:45:52  
Here you go;

sets.precast.WS['Leaden Salute'].Orph = set_combine(sets.precast.WS['Leaden Salute'], {
waist="Orpheus's Sash"})


function job_post_precast(spell, action, spellMap, eventArgs)
if spell.english == 'Leaden Salute' and spell.target.distance <5 then
equip(sets.precast.WS['Leaden Salute'].Orph)
end
end
[+]
 Bahamut.Celebrindal
Online
サーバ: Bahamut
Game: FFXI
Posts: 159
By Bahamut.Celebrindal 2019-10-16 14:37:41  
your help was appreciated. However, here's what I got to work w/ my lua for both Orpheus's Sash AND Hachiryn-no-obi, with preference given to Orpheus's Sash.

----------------------------

if spell.english == 'Leaden Salute' and spell.target.distance <8 then
equipSet = set_combine(equipSet,{waist="Orpheus's Sash"})

elseif spell.english == 'Leaden Salute' and (world.weather_element == 'Dark' or world.day_element == 'Dark') then
add_to_chat(125,'weather mode')
equipSet = set_combine(equipSet,{waist="Hachirin-no-Obi"})
end
 Asura.Barone
Offline
サーバ: Asura
Game: FFXI
user: Barone
Posts: 14
By Asura.Barone 2019-10-16 15:23:08  
Thanks! I was having issue getting the Hachirin to work!
 Bahamut.Qiyana
Offline
サーバ: Bahamut
Game: FFXI
user: Anaurine
By Bahamut.Qiyana 2019-10-16 15:29:07  
Finally you got it! Congrats man! :D
[+]
 Asura.Elizabet
Offline
サーバ: Asura
Game: FFXI
user: Elizabet
Posts: 353
By Asura.Elizabet 2019-10-16 15:38:35  
Hi Celebrindal, here's a nifty function you could add to improve. (specially for Dynamis-D)
Code
-- Function to get the current weather intensity: 0 for none, 1 for single weather, 2 for double weather.
function get_weather_intensity()
    return gearswap.res.weather[world.weather_id].intensity
end


So you can make a rule like:

if get_weather_intensity() == 2 then

so in double weather you could choose obi over orpheus as it yields more bonus. For leaden, you'd also have to make sure weather is dark..

world.weather_element will give you the weather element.


For example here's my enspell weather check:
Code
function EnspellCheck()

    -- Enspell matches double weather
    if Buff['En-Weather'] and get_weather_intensity() == 2 then
        equip(sets.midcast.Obi)
    -- Enspell matches day AND weather
    elseif Buff['En-Weather'] and Buff['En-Day'] then
        equip(sets.midcast.Obi)
    -- Enspell is there but doesnt match a double weather
    elseif Buff['Enspell'] then
        equip(sets.midcast.Orpheus)
    end 
end
 Shiva.Xelltrix
Offline
サーバ: Shiva
Game: FFXI
user: Xelltrix
Posts: 161
By Shiva.Xelltrix 2019-10-16 17:52:29  
I have one tailored for Corsair like so

Code
	-- Handles equipment modifications based of distance and spell weather/day alignment.
    if spell.type == 'WeaponSkill' and magical_ws:contains(spell.name) then
		-- If the spell element does not match either the weather or the day and there is less than 15 yalms between the caster and the target
		if spell.element ~= world.day_element and spell.element ~= world.weather_element then
			if spell.target.distance < (15 - spell.target.model_size) then
				equip { waist="Orpheus's Sash" }
			end
		-- If the element of a spell matches both the day and weather with a net intensity of at least 2
		elseif (spell.element == world.day_element and spell.element == world.weather_element)
				or (spell.element == world.weather_element and get_weather_intensity() == 2 and world.day_element ~= elements.strong_to[spell.element]) then
			equip { waist="Hachirin-no-Obi" }
		-- If the element of a non-helix spell matches either day or weather with a net intensity of 1.	
		elseif (spell.element == world.day_element or (spell.element == world.weather_element and get_weather_intensity() == 1)
				or (spell.element == world.weather_element and get_weather_intensity() == 2 and world.day_element == elements.strong_to[spell.element])) then
			if (spell.target.distance < (7 - spell.target.model_size)) then
				equip { waist="Orpheus's Sash" }
			else
				equip { waist="Hachirin-no-Obi" }
			end
		end	
	end



You can replace magical_ws section with Leaden and Wildfire if you don't have one of those. I made it factor in weather intensity so that it will consider when contrary conditions are in effect or when Sash will pull ahead of Obi in single-weather situations.
 Asura.Barone
Offline
サーバ: Asura
Game: FFXI
user: Barone
Posts: 14
By Asura.Barone 2019-10-16 19:18:57  
You may want to consider lowering the distance to around 7 or 8. I was testing it in Dyna and I had better luck with the Svetz [i didn't have hachirin coded yet] over the sash. at about 7 it was optimal.
necroskull Necro Bump Detected! [30 days between previous and next post]
 Bismarck.Sterk
Offline
サーバ: Bismarck
Game: FFXI
user: Llewelyn
Posts: 157
By Bismarck.Sterk 2019-11-15 17:58:02  
Asura.Elizabet said: »
Code
-- Function to get the current weather intensity: 0 for none, 1 for single weather, 2 for double weather.
function get_weather_intensity()
    return gearswap.res.weather[world.weather_id].intensity
end
I'm having trouble getting this to work while I have both double weather and a Storm active. It'll work if I have either:
Double weather
or
Single weather + Storm buff
but with both double weather and storm, it will return with Orpheus's Sash.
Code
function job_post_midcast(spell, action, spellMap, eventArgs)

	if blue_magic_maps.Magical:contains(spell.english) and (spell.element == world.weather_element and get_weather_intensity() == 2) or (spell.element == world.weather_element and spell.element == world.day_element) then
		equip{waist="Hachirin-no-Obi"}
	end
end

Any assistance would be appreciated.
Offline
Posts: 530
By Felgarr 2019-11-15 18:28:48  
This is the logic I have for Orpheus Sash in my AshitaCast <midmagic> set:

Code
<if at_distance="<5">
	<equip set="OrpheusSash" />
</if>
<elseif at_distance="<10" advanced="(%ad_element!=%e_weatherelement)&(%ad_element!=%e_dayelement)">
		<equip set="OrpheusSash" />
</elseif>
<elseif advanced="(%ad_element=%e_weatherelement)|(%ad_element=%e_dayelement)">
	<equip set="Hachirin-no-Obi" />
</elseif>
<else>
	<!-- This is not necessary, as NukeMB set has the default Nuking MAB+ belt -->
</else>
The pseudo-code is:

  • If my target is < 5.0 yalms away, use Orpheus Sash in place of existing waist.

  • Otherwise, if my target < 10 yalms away, with no element-day or element-weather to benefit from, use Sash in place of existing waist item.

  • Otherwise there is weather/day to benefit from and the target is > 10 yalms away), just use Hachirin-no-Obi instead.

  • Otherwise, (no weather to benefit from and greater than 10 yalms away), use existing waist item.


*Thorny helped optimize this logic, just FYI.
[+]
 Asura.Chiaia
VIP
Online
サーバ: Asura
Game: FFXI
user: Demmis
Posts: 1039
By Asura.Chiaia 2019-11-15 21:01:05  
Asura.Elizabet said: »
Code
-- Function to get the current weather intensity: 0 for none, 1 for single weather, 2 for double weather.
function get_weather_intensity()
    return gearswap.res.weather[world.weather_id].intensity
end
That is not needed anymore, you can do world.weather_intensity inside of gearswap. . .
Code
if world.weather_intensity == 2 then
    blah blah blah
end
[+]
Offline
Posts: 13
By DianC 2019-11-27 10:01:28  
Shiva.Xelltrix said: »
I have one tailored for Corsair like so

Code
	-- Handles equipment modifications based of distance and spell weather/day alignment.
    if spell.type == 'WeaponSkill' and magical_ws:contains(spell.name) then
		-- If the spell element does not match either the weather or the day and there is less than 15 yalms between the caster and the target
		if spell.element ~= world.day_element and spell.element ~= world.weather_element then
			if spell.target.distance < (15 - spell.target.model_size) then
				equip { waist="Orpheus's Sash" }
			end
		-- If the element of a spell matches both the day and weather with a net intensity of at least 2
		elseif (spell.element == world.day_element and spell.element == world.weather_element)
				or (spell.element == world.weather_element and get_weather_intensity() == 2 and world.day_element ~= elements.strong_to[spell.element]) then
			equip { waist="Hachirin-no-Obi" }
		-- If the element of a non-helix spell matches either day or weather with a net intensity of 1.	
		elseif (spell.element == world.day_element or (spell.element == world.weather_element and get_weather_intensity() == 1)
				or (spell.element == world.weather_element and get_weather_intensity() == 2 and world.day_element == elements.strong_to[spell.element])) then
			if (spell.target.distance < (7 - spell.target.model_size)) then
				equip { waist="Orpheus's Sash" }
			else
				equip { waist="Hachirin-no-Obi" }
			end
		end	
	end



You can replace magical_ws section with Leaden and Wildfire if you don't have one of those. I made it factor in weather intensity so that it will consider when contrary conditions are in effect or when Sash will pull ahead of Obi in single-weather situations.

anyone mind posting their full cor lua with a similar or just generally a working logic for sash + obi, because I can't get this to work in mine :/