Results -9 to 0 of 338

Threaded View

  1. #2
    Player
    pandabearcat's Avatar
    Join Date
    Sep 2013
    Posts
    1,517
    Character
    Alizebeth Bequin
    World
    Brynhildr
    Main Class
    Dancer Lv 90
    This post will detail the grammar and the scripting language (working name FFscript).

    New grammar:

    Code:
    action
       action -> string 
    actionBlock
       actionBlock -> precast 
       actionBlock -> gcd 
       actionBlock -> ogcd 
    actionBlock+
       actionBlock+ -> actionBlock+ actionBlock 
       actionBlock+ -> actionBlock 
    actionBlocks  (Nullable) 
       actionBlocks -> 
       actionBlocks -> actionBlock+ 
    actions  (Nullable) 
       actions -> action 
       actions -> action , actions 
       actions -> 
    actionStatement
       actionStatement -> ( conditionals ) { actions } 
       actionStatement -> comment 
    actionStatement+
       actionStatement+ -> actionStatement+ actionStatement 
       actionStatement+ -> actionStatement 
    actionStatements  (Nullable) 
       actionStatements -> 
       actionStatements -> actionStatement+ 
    actionVar
       actionVar -> nextaction 
    actorListStatement
       actorListStatement -> playersAdd 
       actorListStatement -> targetsAdd 
    actorStatement
       actorStatement -> actor . actorVar = val 
    actorVar
       actorVar -> class 
       actorVar -> attrVar 
       actorVar -> autoattack 
       actorVar -> auraVar 
       actorVar -> gcdVar 
       actorVar -> cdVar 
       actorVar -> actionVar 
    attribute
       attribute -> str 
       attribute -> dex 
       attribute -> sks 
       attribute -> det 
       attribute -> chr 
    attrVar
       attrVar -> attr . attribute 
    auraVar
       auraVar -> aura . string . remaining 
       auraVar -> aura . string 
    boolVar
       boolVar -> actor . actorVar 
       boolVar -> sim . simVar 
    cdVar
       cdVar -> cd . string 
    conditional
       conditional -> boolVar 
       conditional -> notBoolVar 
       conditional -> testVar 
    conditionals  (Nullable) 
       conditionals -> conditional 
       conditionals -> conditional & conditionals 
       conditionals -> 
    gcd
       gcd -> [ actor . GCD ] actionStatements 
    gcdVar
       gcdVar -> lastgcd 
       gcdVar -> nextgcd 
    notBoolVar
       notBoolVar -> ! boolVar 
    ogcd
       ogcd -> [ actor . OGCD ] actionStatements 
    playersAdd
       playersAdd -> *players+= actor 
    precast
       precast -> [ actor . PRECAST ] actionStatements 
    script
       script -> setup actionBlocks 
    script'
       script' -> script EOF 
    setup
       setup -> [SETUP] setupStatements 
    setupStatement
       setupStatement -> actorStatement 
       setupStatement -> actorListStatement 
       setupStatement -> simStatement 
       setupStatement -> comment 
    setupStatement+
       setupStatement+ -> setupStatement+ setupStatement 
       setupStatement+ -> setupStatement 
    setupStatements  (Nullable) 
       setupStatements -> 
       setupStatements -> setupStatement+ 
    simStatement
       simStatement -> sim . simVar = val 
    simVar
       simVar -> duration 
       simVar -> execute 
       simVar -> diagnostic 
       simVar -> trials 
       simVar -> output 
    targetsAdd
       targetsAdd -> *targets+= actor 
    test
       test -> == 
       test -> != 
       test -> < 
       test -> <= 
       test -> > 
       test -> >= 
    testVar
       testVar -> boolVar test val 
    val
       val -> boolean 
       val -> number 
       val -> string 
       val -> stringLit
    New sample script:

    Code:
    [SETUP]
    #sets up an alias for our player
    *players+=p1
    #sets up an alias for our target
    *targets+=t1
    
    #load skills and traits
    p1.class = drg
    
    # setup attributes
    # nonlisted attributes are assumed to be 0
    p1.attr.wd=72
    p1.attr.str=905
    p1.attr.dex=220
    p1.attr.vit=658
    p1.attr.int=96
    p1.attr.mnd=140
    p1.attr.pie=163
    p1.attr.acc=601
    p1.attr.chr=593
    p1.attr.det=381
    p1.attr.sks=607
    p1.attr.sps=354
    p1.attr.aapotency=67.22
    p1.attr.aadelay=2.8
    
    # autoattack, dumbass
    p1.autoattack = true
    
    # setup server variables
    sim.duration=210
    # execute is duration from end of sim
    sim.execute=40
    
    # setup diagnostic or no - diagnostic runs 1 run with log output, for testing your rotation
    sim.diagnostic=false
    
    # otherwise setup sim trials
    sim.trials=10000
    
    # i/o
    sim.output="output.txt"
    
    [p1.PRECAST]
    (){heavy_thrust, battle_litany, blood_for_blood, impulse_drive, draconian_potion_of_strength, disembowel, internal_release, blood_of_the_dragon, chaos_thrust, power_surge, leg_sweep}
    
    [p1.GCD]
    (p1.aura.enhanced_wheeling_thrust){wheeling_thrust}
    (p1.aura.sharper_fang_and_claw){fang_and_claw}
    (p1.aura.heavy_thrust.remaining<4.0){heavy_thrust}
    (t1.aura.phlebotomize.remaining<4.0){phlebotomize}
    (t1.aura.chaos_thrust.remaining<6.0){impulse_drive, disembowel, chaos_thrust}
    (){true_thrust, vorpal_thrust, full_thrust}
    
    [p1.OGCD]
    # don't cast any actions if it will clip
    (p1.nextgcd<1.0){}
    
    # use botd on cd when next ability will proc 4th
    (!p1.aura.blood_of_the_dragon&!p1.cd.blood_of_the_dragon&p1.nextaction==chaos_thrust){blood_of_the_dragon}
    (!p1.aura.blood_of_the_dragon&!p1.cd.blood_of_the_dragon&p1.nextaction==full_thrust){blood_of_the_dragon}
    
    # use geirskogul if we have bfb and botd is > 22 sec or botd cd is < 14 sec
    (p1.aura.blood_of_the_dragon.remaining>=22.0&!p1.cd.geirskogul&p1.aura.blood_for_blood){geirskogul}
    (!p1.cd.geirskogul&p1.aura.blood_of_the_dragon&p1.cd.blood_of_the_dragon.remaining<=14.0&p1.aura.blood_for_blood){geirskogul}
    
    # if we don't have bfb, use geirskogul unless the cd for bfb is <20 sec away
    (!p1.cd.geirskogul&p1.aura.blood_of_the_dragon.remaining>=22.0&p1.cd.blood_for_blood.remaining>=20.0){geirskogul}
    (!p1.cd.geirskogul&p1.aura.blood_of_the_dragon&p1.cd.blood_of_the_dragon.remaining<=14.0&p1.cd.blood_for_blood.remaining>=20.0){geirskogul}
    
    # use dps cooldowns on cooldown
    (!p1.cd.blood_for_blood){blood_for_blood}
    (!p1.cd.internal_release){internal_release}
    (!p1.cd.draconian_potion_of_strength){draconian_potion_of_strength}
    
    # use life surge on ft, wt, or f/c
    (!p1.cd.life_surge&p1.nextaction==full_thrust){life_surge}
    (!p1.cd.life_surge&p1.aura.enhanced_wheeling_thrust){life_surge}
    (!p1.cd.life_surge&p1.aura.sharper_fang_and_claw){life_surge}
    
    # use power surge right before jump
    (!p1.cd.jump&!p1.cd.power_surge){power_surge}
    (!p1.cd.jump){jump}
    
    # use all other ogcd's on cd
    (!p1.cd.spineshatter_dive){spineshatter_dive}
    (!p1.cd.dragonfire_dive){dragonfire_dive}
    (!p1.cd.leg_sweep){leg_sweep}
    
    # note I didn't put in mercy stroke here - it will be added later when marauder abilities are added
    (0)
    Last edited by pandabearcat; 07-10-2015 at 01:23 AM.