Item Search
     
BG-Wiki Search
Page 219 of 328 FirstFirst ... 169 209 217 218 219 220 221 229 269 ... LastLast
Results 4361 to 4380 of 6548
  1. #4361
    Relic Weapons
    Join Date
    Sep 2007
    Posts
    377
    BG Level
    4
    FFXIV Character
    Caprese Dionir
    FFXIV Server
    Hyperion
    FFXI Server
    Sylph

    Gave your advanced rule a try, but it didn't work. I don't think there's an advanced variable that can tell you about buffs. The % variables should only have 1 value at any precise moment in time, so even if %buffactive was a variable, it would return the same value twice, I'd think.

    I'm beginning to think there is no good shortcut for this, but the long-hand is working for now.

    Thanks for the help.

  2. #4362
    xXNyteFyreXx420Sharingan
    Join Date
    May 2009
    Posts
    3,709
    BG Level
    7
    FFXI Server
    Fenrir

    I'm not aware of any shortcuts either, unfortunately. Side note, Spellcast can't differentiate between one/two marches. You may want to add a check against a toggle alongside your if buffactive="march" rule in case you're currently buffed with march/scherzo or march/min, or if a march drops, to avoid being forced into the wrong sets in such a situation.

  3. #4363
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Masa, will need to test something when I get home; will reply to your earlier post then.

  4. #4364
    xXNyteFyreXx420Sharingan
    Join Date
    May 2009
    Posts
    3,709
    BG Level
    7
    FFXI Server
    Fenrir

    Did a little digging and found this in the original SC 2.30 thread:

    Added: real functions to advanced statements.
    - regex("what","pattern") for perl,
    - regexpb("what","pattern") for posix basic,
    - regexpe("what","pattern") for posix extended,
    - buffactive("buffs") for checking if buff(s) are active,
    - strmatch("pattern","what") to do the same standard wildcard string matching everything else uses,
    - isarea("areas|to|check|for") to match like Area="" usually does, but for all languages.
    Can't find any documentation on this (or the other commands) though. What's the syntax for checking multiple buffs? How many of these undocumented commands are there?

    EDIT: Couldn't find a way to check two buffs with one command, but
    Code:
    <if advanced='(bool)buffactive("Hasso") AND (bool)buffactive("Last*")'>
    does work. Time to clean up my xml!

  5. #4365
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    @Masamune:

    Ok, working through details...


    <var name="Temp1">q1</var>
    <var name="Temp2">q2</var>
    <var name="Digit">1</var>
    <var name="Test"></var>

    Test = "$Temp" (created the literal string with the $ sign in it, not the value)
    <addtochat>Test=$Test</addtochat> returns:
    Test=$Temp

    <if advanced='"$Temp1" = "$Temp1"> TRUE ["q1" == "q1"]
    <if advanced='"$Temp1" = "$Test1"> TRUE ["$Temp1" == "$Temp1"]
    <if advanced='"$Temp1" = "$Test"> FALSE ["q1" != "$Temp"]

    Test = "$Temp1" (created the literal string with the $ sign in it, not the value)
    <if advanced='"$Temp1" = "$Test"> TRUE ["$Temp1" == "$Temp1"]
    <if advanced='"$Temp1" = "$Test1"> FALSE ["q1" != "$Temp11"]


    <if advanced='$Temp1=$Test'> FALSE
    Also generates a console error:
    Error in expression: Unknown variable q1
    Spellcast:: q1=q1

    I did this to test the results if I didn't force the variables to be strings. This indicates that $Test was evaluated not only to its contained value of $Temp1, but that that was in turn evaluated to its final value of q1 (whereupon it failed because q1 isn't an integer or variable).


    Now:
    Test = "$Temp3" (created the literal string with the $ sign in it, not the value)

    <if advanced='$Test=$Temp3'> FALSE [with console error]
    <if advanced='"$Test"="$Temp3"'> TRUE

    The non-string version is false because $temp3 isn't a known variable or integer. The string version is true because $temp3 isn't a variable, so it ends up comparing the literal strings "$temp3" (from $Test) and "$temp3".


    So doing this as strings, all variables will end up in their most reduced form before evaluation. If the variable exists, it will compare the value of a variable to itself. If the variable doesn't exist, it will compare the name of the variable to itself. In neither case is it possible to determine if the variable existed in the first place.

    However.....

    We can't compare the variable with itself, but it may be possible to analyze the value of the variable. Specifically, using a regex to check to see if the variable starts with a $. Unfortunately the regex parser isn't cooperating, so having to dig through its quirks a step at a time.


    And here we have it.

    <if advanced='Regex("$Test", "^[$]")'>

    If Test holds the value "$Temp1" (variable with value q1), the regex returns false because "q1" doesn't start with $.
    If Test holds the value "$Temp3" (non-existant variable, thus leaving it as the value "$Temp3"), the regex returns true.

    And we can simplify it by removing the intermediary variable.

    Code:
    <var name="Temp1">q1</var>
    <if advanced='Regex("$Temp1", "^[$]")'> FALSE
    <if advanced='Regex("$Temp3", "^[$]")'> TRUE

    So your original code can be accomplished thus:

    Code:
        <var cmd="inc CycleID" />
        <if advanced='Regex("$%Skill$CycleID", "^[$]")'>
            <var cmd="set CycleID 1" />
        </if>
        <var cmd="set NextSpell $%Skill$CycleID" />
        <command When="aftercast">wait $Delay;input /ma "$NextSpell"</command>

  6. #4366
    An exploitable mess of a card game
    Join Date
    Sep 2008
    Posts
    13,197
    BG Level
    9
    FFXIV Character
    Gouka Mekkyaku
    FFXIV Server
    Gilgamesh
    FFXI Server
    Diabolos

    Seems like that would only work for cycling forward (Solution works, but I was thinking of how that could apply to my XML), right? Otherwise, cycling backwards, you wouldn't know what the max # variable is, so you couldn't tell SC to set to the max# if you dip past Var1.

  7. #4367
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Quote Originally Posted by Yugl View Post
    Seems like that would only work for cycling forward (Solution works, but I was thinking of how that could apply to my XML), right? Otherwise, cycling backwards, you wouldn't know what the max # variable is, so you couldn't tell SC to set to the max# if you dip past Var1.
    Correct, though you could brute force it if, going below 1, you then cycle forward until you go past the end of the list, and back up one from that. Of course with no looping mechanism, that gets rather awkward to accomplish.

  8. #4368
    Masamune
    Guest

    Quote Originally Posted by Motenten View Post
    @Masamune:
    If Test holds the value "$Temp3" (non-existant variable, thus leaving it as the value "$Temp3"), the regex returns true.

    And we can simplify it by removing the intermediary variable.

    Code:
    <var name="Temp1">q1</var>
    <if advanced='Regex("$Temp1", "^[$]")'> FALSE
    <if advanced='Regex("$Temp3", "^[$]")'> TRUE

    So your original code can be accomplished thus:

    Code:
        <var cmd="inc CycleID" />
        <if advanced='Regex("$%Skill$CycleID", "^[$]")'>
            <var cmd="set CycleID 1" />
        </if>
        <var cmd="set NextSpell $%Skill$CycleID" />
        <command When="aftercast">wait $Delay;input /ma "$NextSpell"</command>
    Thanks for the regex idea (weird why a simple wildcard wouldnot work?), i got my hopes so high until i tested and... YAY!! Works Good Job Mote as usual :D EDIT: seeing Nightfyre post, could strmatch("", "") work too ? (i didnot test)
    Here is my xml (still not finished, i have some features to add):
    Spoiler: show
    Code:
    <?xml version="1.0" ?>
    
    <Spellcast xmlns:xi="http://www.w3.org/2001/XInclude">
    	<guildwork
    		character="Masamunai"
    		server="Cerberus"
    		description="Magic SkillUp Script v3.0"
    		job="WHM|RDM|BLM|SCH|SMN|BRD|BLU|PLD|NIN"
    	/>
    
    	<config/>
    
    	<variables clear="true">
    		<!-- You can alter these variables -->
    		<var Name="Show.Debug">False</var> <!-- Show Process/Debug Info True/False -->
    		<var Name="Delay">2</var> <!-- Delay in secs between previous Spell end casting time, and next Spell start casting time -->
    		
    		<!-- Spells List used in the cycle, you can change/add/remove them as you need -->
    		<!-- Summons -->
    		<var Name="SummoningMagic1">Carbuncle</var>
    		<var Name="SummoningMagic2">Ifrit</var>
    		<var Name="SummoningMagic3">Titan</var>
    		<var Name="SummoningMagic4">Leviathan</var>
    		<var Name="SummoningMagic5">Garuda</var>
    		<var Name="SummoningMagic6">Shiva</var>
    		<var Name="SummoningMagic7">Ramuh</var>
    		<var Name="SummoningMagic8">Fenrir</var>
    		<var Name="SummoningMagic9">Diabolos</var>
    		<!-- Healing Spells -->
    		<var Name="HealingMagic1">Cure</var>
    		<var Name="HealingMagic2">Cure II</var>
    		<var Name="HealingMagic3">Cure III</var>
    		<!-- Enhancing Spells -->
    		<var Name="EnhancingMagic1">Barfire</var>
    		<var Name="EnhancingMagic2">Barstone</var>
    		<var Name="EnhancingMagic3">Barwater</var>
    		<var Name="EnhancingMagic4">Baraero</var>
    		<var Name="EnhancingMagic5">Barblizzard</var>
    		<var Name="EnhancingMagic6">Barthunder</var>
    		<!-- Blue Magic Spells -->
    		<var Name="BlueMagic1">Fantod</var> <!-- Cocoon, Reactor Cool -->
    		<var Name="BlueMagic2">Pollen</var>
    		<!-- Singing Spells -->
    		<var Name="Singing1">Advancing March</var>
    		<var Name="Singing2">Victory March</var>
    		<!-- Divine Spells -->
    		<var Name="DivineMagic1">Enlight</var>
    		<!-- Ninjutsu -->
    		<var Name="Ninjutsu1"></var>
    		<var Name="Ninjutsu2"></var>
    		<var Name="Ninjutsu3"></var>
    		
    		<!-- DO NOT ALTER those vars -->
    		<var Name="Init">NotDone</var> <!-- First Run Display -->
    		<var Name="CycleID">1</var> <!-- Spell Cycle Number -->	
    	</variables>
    
    	<sets>
    		<!-- Specify Resting / Standard gear if desired -->
    		<!-- Use as much FastCast or Haste or Refresh items or casting time- items -->
    		<!-- prioritize that order when choosing gears: Refresh, then FastCast, then Haste -->
    		<group default="yes" Name="Job">
    			<set name = "Idle">
    				<hands>Serpentes Cuffs</hands>
    				<lear>Loquac. Earring</lear>
    				<rear>Liminus Earring</rear>
    				<lring>Prolix Ring</lring>
    				<head>Zelus Tiara</head>
    				<body>Nashira Manteel</body>
    				<legs>Stearc Subligar</legs>
    				<feet>Serpentes Sabots</feet>
    				<back>Veela Cape</back> <!-- Swith Cape +1 -->
    				<waist>Ninurta's Sash</waist> <!-- Goading/Witful Belt -->
    			<!--	<ammo>Impatiens</ammo> -->
    			</set>
    			<set name = "Resting">
    				<main>Pluto's Staff</main>
    				<sub>Ariesian Grip</sub>
    				<head>Mirror Tiara</head>
    				<neck>Grandiose Chain</neck>
    				<lear>Relaxing Earring</lear>
    				<rear>Antivenom Earring</rear>
    				<body>Errant Hpl.</body>
    				<hands>Oracle's Gloves</hands>
    				<lring>Star Ring</lring>
    				<waist>Austerity Belt</waist>
    				<legs>Nisse Slacks</legs>
    				<feet>Lore Sabots</feet>
    				<ammo>Clarus Stone</ammo>
    				<back>Vita Cape</back>
    			</set>
    		</group>
    		<group Name="WHM|RDM|BLM|SCH|SMN" InHerit="Job"/>
    		<group Name="BRD" InHerit="Job">
    			<set name = "Idle">
    				<range>Pan's Horn</range>
    				<main>Felibre's Dague</main>
    				<head>Aoidos' Calot +2</head>
    				<neck>Aoidos' Matinee</neck>
    				<body>Praeco Doublet</body>
    				<hands>Schellenband</hands>
    				<legs>Aoidos' Rhing. +1</legs>
    				<feet>Rostrum Pumps</feet> <!-- Brd. Slippers +2 -->
    				<rear>Aoidos' Earring</rear>
    			<!--	<waist>Aoidos' Belt</waist> -->
    			</set>
    		</group>
    		<group Name="BLU" InHerit="Job"/>
    		<group Name="NIN" InHerit="Job"/>
    		<group Name="PLD" InHerit="Job"/>
    	</sets>
    
    	<rules>
    	 <!-- TODO List:
    	 1. check for Nightingale
    	 2. Mode "SkillOnEnemy" for Song, Enfeebling, Divine and Ninjutsu
    	 3. Bug between Impatiens in shared group, and instrument if BRD -->
    
    	<equip When="idle|resting|precast" set="%Status" />
    
    	<!-- Setup First Run Notifications -->
    	<if Advanced='"$Init"="NotDone"'>
    		<cancelspell />
    		<if MainJob="WHM|RDM|BLM|SCH|SMN|BRD|BLU|PLD|NIN"> <command>sc Group %MainJob</command> </if>
    		<command>bind ^escape input /echo Exiting.;reload Spellcast;unbind ^escape;</command>
    		<AddToChat Color="121">--- SkillUp.Xml v3, by Masamunai@Cerberus ---</AddToChat>
    		<AddToChat Color="121">Summon once to trigger Summoning Skillup Cycle</AddToChat>
    		<AddToChat Color="121">Cast once an healing spell to trigger Healing Skillup Cycle</AddToChat>
    		<AddToChat Color="121">Cast once an enhancing spell to trigger Enhancing Skillup Cycle</AddToChat>
    		<AddToChat Color="121">Cast once a blue magic spell to trigger Blue Magic Skillup Cycle (don't forget BatteryCharge and auto-refresh/FastCast/ConserveMP spells set)</AddToChat>
    		<AddToChat Color="121">Cast once Enlight to trigger Divine Magic Skillup Cycle</AddToChat>
    		<AddToChat Color="121">Sing once to trigger Singing Magic Skillup Cycle</AddToChat>
    		<AddToChat Color="121">Press CTRL+Escape at anytime to stop SkillUp (will load your job usual xml)</AddToChat>
    		<var cmd="set Init Ready" />
    		<return />
    	</if>
    
    	<if Status="Idle" MPLT="60" NotMainJob="NIN">
    		<if Job="SMN/*|*/SMN" PetIsValid="True">
    			<changespell Spell="Release" />
    			<!-- Debug info -->	<if Advanced='"$Show.Debug"="True"'><AddToChat Color="67">Debug Process:: Releasing avatar before healing MP.</AddToChat></if>
    		</if>
    		<command When="Aftercast">input /heal on;wait 20;input /ma "%Spell" &lt;me&gt;</command>
    		<!-- Debug info -->	<if Advanced='"$Show.Debug"="True"'><AddToChat Color="67">Debug Process:: Resting MP and starting MP autochecks.</AddToChat></if>
    	</if>
    	<elseif Status="Resting">
    		<cancelspell />
    		<if MPPGT="99">
    			<command>input /heal off;wait 2;input /ma "$NextSpell" &lt;me&gt;</command>
    			<!-- Debug info -->	<if Advanced='"$Show.Debug"="True"'><AddToChat Color="67">Debug Process:: Full MP Detected, sending /heal off action.</AddToChat></if>
    		</if>
    		<else>
    			<command>wait 5;input /ma "%Spell" &lt;me&gt;</command>
    			<!-- Debug info -->	<if Advanced='"$Show.Debug"="True"'><AddToChat Color="67">Debug Process:: Nextly Resting, MP is not 100%. Continue resting...</AddToChat></if>
    		</else>
    	</elseif>
    
    	<!-- Check for Haste, then Refresh & Composure -->
    	<elseif NotBuffActive="Haste" Advanced='("%MainJob"="WHM" AND "%MainJobLVL" >= "40") OR ("%MainJob"="RDM" AND "%MainJobLVL" >= "48") OR ("%SubJob"="WHM" AND "%SubJobLVL" >= "40") OR ("%SubJob"="RDM" AND "%SubJobLVL" >= "48")'>
    		<command>wait 7;input /ma "%Spell" &lt;me&gt;</command>
    		<changespell Spell="Haste" />
    		<!-- Debug info -->	<if Advanced='"$Show.Debug"="True"'><AddToChat Color="67">Debug Process:: Changed Spell to Haste.</AddToChat></if>
    	</elseif>
    	<elseif NotBuffActive="Refresh" MPGT="60" Advanced='("%MainJob"="RDM" AND "%MainJobLVL" >= "41") OR ("%MainJob"="BLU" AND "%MainJobLVL" >= "79") OR ("%SubJob"="RDM" AND "%SubJobLVL" >= "41")'>
    		<!-- Debug info -->	<if Advanced='"$Show.Debug"="True"'><AddToChat Color="67">Debug Process:: Checking for Refresh and Composure...</AddToChat></if>
    		<command>wait 7;input /ma "%Spell" &lt;me&gt;</command>
    		<if NotBuffActive="Composure" MainJob="RDM" MLVLGT="49">
    			<changespell Spell="Composure" />
    			<!-- Debug info -->	<if Advanced='"$Show.Debug"="True"'><AddToChat Color="67">Debug Process:: Changed Spell to Composure.</AddToChat></if>
    		</if>
    		<elseif MainJob="RDM" MLVLGT="81">
    			<changespell Spell="Refresh II" />
    			<!-- Debug info -->	<if Advanced='"$Show.Debug"="True"'><AddToChat Color="67">Debug Process:: Changed Spell to Refresh II.</AddToChat></if>
    		</elseif>
    		<elseif MainJob="BLU">
    			<changespell Spell="Battery Charge" />
    			<!-- Debug info -->	<if Advanced='"$Show.Debug"="True"'><AddToChat Color="67">Debug Process:: Changed Spell to Battery Charge.</AddToChat></if>
    		</elseif>
    		<elseif Mode="OR" MainJob="RDM" SubJob="RDM">
    			<changespell Spell="Refresh" />
    			<!-- Debug info -->	<if Advanced='"$Show.Debug"="True"'><AddToChat Color="67">Debug Process:: Changed Spell to Refresh.</AddToChat></if>
    		</elseif>
    	</elseif>
    
    	<elseif NotSpell="Haste|Refresh*|Battery*" Skill="BlueMagic|Singing|Ninjutsu|SummoningMagic|EnhancingMagic|HealingMagic|DivineMagic">
    		<if Advanced='Regex("$NextSpell", "^[$]")'>
    			<AddToChat Color="121">--- %Skill Skillup Cycle Start ! ---</AddToChat>
    			<changespell Spell="$%Skill1" />
    		</if>
    		<var cmd="inc CycleID" />
    		<!-- Debug info -->	<if Advanced='"$Show.Debug"="True"'><AddToChat Color="67">Debug Process:: Skill=%Skill --- \$%Skill$CycleID=$%Skill$CycleID.</AddToChat></if>
    		<if Advanced='Regex("$%Skill$CycleID", "^[$]")'>
    			<var cmd="set CycleID 1" />
    			<!-- Debug info -->	<if Advanced='"$Show.Debug"="True"'><AddToChat Color="67">Debug Process:: Reseting cycle to 1st spell.</AddToChat></if>
    		</if>
    		<var cmd="set NextSpell $%Skill$CycleID" />
    		<!-- Debug info -->	<if Advanced='"$Show.Debug"="True"'><AddToChat Color="67">Debug Process:: NextSpell=$NextSpell.</AddToChat></if>
    		<command When="aftercast">wait $Delay;input /ma "$NextSpell" &lt;me&gt;</command>
    	</elseif>
    
    	</rules>
    </Spellcast>

    The idea is to be able to make a generic skillup code working for any magic, and allowing user to add/remove as many cycling spells they want.

    EDIT: now i'm debugging it, and found 2 problems:
    - if i "forget to set proper spells inv ars, and then launch the cycle attempting to cast spells my current main/sub can NOT cast, this result in a long list of "command error occured...". Any way to check if spells defined in var are actually castable with current main/job combo ?
    - if i'm on blu, and all relevant spells set, launching the cycle works but... spams in console error "changespell can't find spell $BlueMagic1" "changespell can't find spell $BlueMagic2" "changespell can't find spell $BlueMagic1" "changespell can't find spell $BlueMagic2" etc... So far i didnot find what cause this behavior... FIXED: apparently same problem of variable not resolving properly, because it worked changing just the $CycleID portion of changespell with the hardcoded number (here "1"). What is weird is that problem occurs ONLY for blue magic, not other types o.O

  9. #4369
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    - if i "forget to set proper spells inv ars, and then launch the cycle attempting to cast spells my current main/sub can NOT cast, this result in a long list of "command error occured...". Any way to check if spells defined in var are actually castable with current main/job combo ?
    Only if you put in some sort of exhaustive manual check.

    - if i'm on blu, and all relevant spells set, launching the cycle works but... spams in console error "changespell can't find spell $BlueMagic1" "changespell can't find spell $BlueMagic2" "changespell can't find spell $BlueMagic1" "changespell can't find spell $BlueMagic2" etc... So far i didnot find what cause this behavior...
    Sounds like it's not evaluating the formula. I'd add debug lines to see what the program sees at various points along the logic path.

  10. #4370
    An exploitable mess of a card game
    Join Date
    Sep 2008
    Posts
    13,197
    BG Level
    9
    FFXIV Character
    Gouka Mekkyaku
    FFXIV Server
    Gilgamesh
    FFXI Server
    Diabolos

    Not all comparisons switched out the variable. I learned this when developing my new XML using variables towards AddToChat. The color= feature only works if the first piece of the "string" (I think that's what you guys call it) is a number. So Color="52" or Color="52WarningStuff" will work and parse it as Color52. However, Color="$ColorVariable" or Color="Color52" will not work.

    BRAINSTORM TIME!

    *** WAR ***
    Mighty Strikes
    Berserk
    Warcry
    Blood Rage
    Warrior's Charge
    Restraint

    *** THF ***
    Sneak Attack
    Trick Attack
    Hide
    Assassin's Charge

    *** SAM ***
    Meikyo Shisui
    Sekkanoki
    Sengikori
    Hagakure

    *** RNG ***
    Sharpshot
    Unlimited Shot
    Flashy Shot
    Stealth Shot

    *** NIN ***
    Yonin
    Innin

    *** MNK ***
    Boost
    Impetus

    *** DRK ***
    Last Resort
    Souleater

    *** DNC ***
    Flourish
    Saber Dance

    *** COR ***
    Chaos Roll
    Miser's Roll
    Samurai Roll

    ** BRD ***
    Minuet
    These are the list of buffs one may want to account for when using a Weapon Skill. The issue I have is finding a way to code this. The two ways I figure are:

    1. <equip set="%Spell:$WSMode:$BuffName(Active)" />
    2. <equip set="%Spell:$WSMode|$BuffName(WS):%Spell:$WSMode" />
    --------------------------------------------------------------------
    1. The former would embed the buff into the WS set itself. So if you went to add to or remove gear from your WS+Berserk, you would locate the set WS:WSMode:Berserk for EACH WSMode set you have (Can cobble them into one set using WS:*:Berserk).

    2. The latter would have you edit a separate set called Berserk(WS):WSName:WSMode. If you want to add the same berserk piece of gear to your WS set, regardless of the WS or WS mode, you can do Berserk(WS):*:* for the set name.
    --------------------------------------------------------------------
    If both work, what is the issue?

    Consider this hypothetical:

    Victory Smite + Berserk + Impetus set
    --------------------------------------------------------------------
    1. VictorySmite:Mode1:Berserk:Impetus

    What if all I care about is adding Tantra body to the WS regardless of the mode or whether I have berserk up? This is problematic because I can't simply * the modes.

    VictorySmite:*:*:Impetus

    This wouldn't help because it would use this set regardless of the WS Mode and the goal is to use a piece of gear on top of an explicit WS mode.
    --------------------------------------------------------------------
    2. VictorySmite|Berserk(WS)|Impetus(WS)

    We can account for the WS and WSMode by doing Berserk(WS):WSName:WSMode, so this would branch out to

    VictorySmite|Berserk(WS):WSName:WSMode|Impetus(WS) :WSName:WSMode

    The issue is what happens when Berserk and Impetus have competing pieces. Lets say you have

    Impetus(Hand)
    Impetus(Body)

    Berserk(Body)
    Berserk(Hand)

    If you wanted to use Impetus body and hands over Berserk, np.

    If you wanted to use Impetus body and Berserk hands, problem. If you set impetus to override berserk, hands won't equip. If you set up the other way, body won't equip. A workaround using Impetus(WS):WSName:WSMode:Berserk may help, but that is fucking excessive.

  11. #4371
    xXNyteFyreXx420Sharingan
    Join Date
    May 2009
    Posts
    3,709
    BG Level
    7
    FFXI Server
    Fenrir

    I don't understand your concern with the first option. You're creating a set of xmls with thousands of lines of code, anybody who isn't immediately intimidated by their functions is not about to be scared off because they have to fill out a couple extra sets. It's the more accurate option, which is in keeping with the spirit of your xmls.

    I also don't understand your fixation on managing sets based on acc/attack-modifying JAs when it's an inherently inaccurate way to manage said sets. NIN may have capped hitrate with Yonin regardless of the penalty, DRK has incentive to use Last Resort regardless of whether the attack is beneficial or not, and even for something simple like Berserk on WAR, that alone doesn't necessarily mean that your sets should change if you find yourself still below cRatio cap with Berserk up. Use generic hitrate/pDIF variables instead, and have an option for allowing said buffs to automatically adjust said variables up/down as needed if you still insist on using them.

    Impetus, SATA, etc are obviously a different story.

  12. #4372
    An exploitable mess of a card game
    Join Date
    Sep 2008
    Posts
    13,197
    BG Level
    9
    FFXIV Character
    Gouka Mekkyaku
    FFXIV Server
    Gilgamesh
    FFXI Server
    Diabolos

    Did you mean the 2nd option? The first option demands that you recreate sets for each mode (Even if you can baseset them). The second one has the tools needed to make a workaround even if the method is extensive. The buff stuff is only for WS with exception to special abilities that have equipment requiring usage during duration of the buff (Like Impetus body or Blood Rage). I guess I could apply that same logic to WS though. Have ACC and ATT changes apply to the mode.


    *** WAR ***
    Mighty Strikes
    Warrior's Charge

    *** THF ***
    Sneak Attack
    Trick Attack
    Hide
    Assassin's Charge

    *** SAM ***
    Meikyo Shisui
    Sekkanoki
    Sengikori
    Hagakure

    *** RNG ***
    Unlimited Shot
    Flashy Shot

    *** MNK ***
    Impetus

    *** DRK ***
    Souleater

    *** DNC ***
    Saber Dance

    *** COR ***
    Miser's Roll
    Samurai Roll
    That drops the list to the above. This seems more manageable. Should I throw in a WS mode that accounts for 100% critical hit rates as well? Multi-hit buffs?

    Just saw the edit, thanks.

  13. #4373
    xXNyteFyreXx420Sharingan
    Join Date
    May 2009
    Posts
    3,709
    BG Level
    7
    FFXI Server
    Fenrir

    Unless I'm misreading your design, I meant the first. It's basically the same way in which I manage my melee sets. For instance, my NIN xml has %Weaponskill-$Abyssea-$Critrate-$Accuracy-$Attack and my DRK xml has TP-$PDT-$Subjob-$Buffs-$Regain-$Acc along with %Weaponskill-$Acc-$Attack. The only layers I use are for things I want to overlay in a specific configuration every time without regard for how that may conflict with the base set, such as full PDT/MDT, Twilight gear, and movement speed gear. You have to create sets for every combination of variables unless you're completely disregarding a variable (critrate for noncrit ws, accuracy for singlehit WS), but unless layering could both accurately create all sets required and reduce redundancy then you're arguably just reinventing the wheel with layering and potentially increasing the perceived complexity of the design to no functional benefit (Impetus(WS):WSName:WSMode:Berserk ends up bring the same as %Weaponskill-$Mode-$Berserk-$Impetus for instance, but you've got additional perceived complexity in the previous layers and may actually end up generating more sets). If I've misread or misunderstood, please correct me.

  14. #4374
    An exploitable mess of a card game
    Join Date
    Sep 2008
    Posts
    13,197
    BG Level
    9
    FFXIV Character
    Gouka Mekkyaku
    FFXIV Server
    Gilgamesh
    FFXI Server
    Diabolos

    Late, so may be incoherent, but we'll see.

    The issue, as you stated, comes down to whether we can ignore some variables. This will ultimately depend on how complex people make their sets.

    Does having Buff1Buff2Buff3 up matter or is all that matters that have you Buff2Buff3 up? I think this point can be fleshed out better to get at what I want to say, but damn I am tired.

    2. When you ingrain the buff into the set, it becomes mandatory, rather than optional, for them to fill out, at least partially, the additional sets, and based on how they respond to (1), this may mean redundant sets. For instance:

    I have three Variables and 2 levels per variable

    1-1-1
    2-1-1
    1-2-1
    1-1-2
    2-2-1
    1-2-2
    2-1-2
    2-2-2

    What if I don't care about the third variable when the first one is 2? Even with wildcard, I still need to make each set for variable (2) if I still care about that value.

    2-1-*
    2-2-*

    This is easy for two levels, but as the number of levels increases, it becomes more painful. If we're talking about adding one pieces of gear (Like using Tantra when Impetus is up + Sneak attack), this can get redundant easily. However, if that last variable does matter, then it's not so bad. Piping would be easy since you can say Impetus(WS):SneakAttack + Impetus(WS):* to cover everything.

  15. #4375
    An exploitable mess of a card game
    Join Date
    Sep 2008
    Posts
    13,197
    BG Level
    9
    FFXIV Character
    Gouka Mekkyaku
    FFXIV Server
    Gilgamesh
    FFXI Server
    Diabolos

    Slept on it, may go with what you were saying or just have WS:1-N. Since I'm planning on putting all buffs in variables, I may just allow them to go at it with the advanced rules. I'm talking to someone atm, and he's saying his LS uses the DPS calc to make sets per mob even. Having an automated system could work by making them write each 'mode' specifically for each mob, but adding buffs would make it difficult for them to write. The advanced rules method would have people editing the rules section which I wanted to avoid, but it is much more flexible for this.

    Could do <if advanced=$Berserk=Berserk AND $BloodRage=BloodRage> etc etc. The only issue is when it comes to buffs with apostrophes since advanced rules hate apostrophes. I don't want users to need to deal with this and Aikar's autoupgrader, which I use, changes &apos; to ' in the XML. I was hoping to cheap it up by doing

    <if spell="blah">
    <var cmd="set SpellName SpellName" />
    </if>

    However, that will not work for spells with an apostrophe.

    Edit: Tested the buffactive code

    Code:
    <if advanced='(bool)Buffactive("Signet") AND (bool)Buffactive("Cocoon")'>
    In my XML, there is a precast and aftercast check. The precast check works in every case. The aftercast check only works if the buff is an ability. Using Cocoon did not show "CHECK" after casting. Unbridled learning did. Perhaps this is due to <precastdelay>?

    gdi night, didn't see you posting it too.

  16. #4376
    Dragoon Enthusiast
    Join Date
    Jun 2008
    Posts
    1,106
    BG Level
    6
    FFXIV Character
    Dathus Tomar
    FFXIV Server
    Diabolos
    FFXI Server
    Siren

    I apparently am some new level of retard to not be able to get this shit working.

    Recently downloaded Spellcast, copied Yugl's DRG and Include XMLs, named them "DathusDRG" and "Include" in the spellcast folders and after typing in "sc f dathusdrg", got this:

    Spellcast: XML Parsing Error: line 0 - Failed to open file
    Spellcast: Your document failed to load. Please view the error above and once it's correct type /sc reload


    Here is my XML file, and here is my Include. I thought I did everything right. What am I doing wrong? I literally took both of these from Yugl's pastebin, put them in Notepad++, saved them in the Spellcast folder after fixing my personal TP/WS gear in the DRG file, and then this error.

  17. #4377
    An exploitable mess of a card game
    Join Date
    Sep 2008
    Posts
    13,197
    BG Level
    9
    FFXIV Character
    Gouka Mekkyaku
    FFXIV Server
    Gilgamesh
    FFXI Server
    Diabolos

    Try naming the "include" to "Yugl-Include".

  18. #4378
    Dragoon Enthusiast
    Join Date
    Jun 2008
    Posts
    1,106
    BG Level
    6
    FFXIV Character
    Dathus Tomar
    FFXIV Server
    Diabolos
    FFXI Server
    Siren

    That works, but now:

    Spellcast: XML parsing error: line 0 - invalid xpath on the file include and no fallback

    And I keep getting pop up windows with Invalids like:

    XPtr: //include[@name="EleStaffConst']/

  19. #4379
    Sea Torques
    Join Date
    Sep 2007
    Posts
    711
    BG Level
    5
    FFXI Server
    Valefor

    So with the update to Nightingale, songs are near-instant. How might I go about adding a variable that locks me into my song midcast gear if Nightingale is active?

  20. #4380
    Chram
    Join Date
    Sep 2007
    Posts
    2,526
    BG Level
    7
    FFXI Server
    Fenrir

    Quote Originally Posted by Dathus View Post
    That works, but now:

    Spellcast: XML parsing error: line 0 - invalid xpath on the file include and no fallback

    And I keep getting pop up windows with Invalids like:

    XPtr: //include[@name="EleStaffConst']/

    Looks like the job xml you have is for the previous revision (based on work done in fall/winter of last year), while the include file is the current revision (based on Radsources changes that went in last month). If you pulled this from Yugl's pastebin, the include file you want is named "Yugl-Include", while it looks like you grabbed the "BETA: S-Series Include" file.

Page 219 of 328 FirstFirst ... 169 209 217 218 219 220 221 229 269 ... LastLast

Similar Threads

  1. Spellcast Shop Thread
    By Yugl in forum FFXI: Everything
    Replies: 232
    Last Post: 2014-03-18, 04:47
  2. time spent on ls events, helping friends and your own time
    By freewind in forum FFXI: Everything
    Replies: 6
    Last Post: 2005-09-06, 16:42