Mirc Tree Tracker
dialog tree_tracker {
  title "SeeD Player Tracker"
  size -1 -1 233 243
  option dbu
  box "Armor Modifiers", 41, 176 53 56 20
  box "Status Effects", 65, 3 147 228 95
  edit "", 1, 60 17 50 10, center
  edit "", 2, 122 17 50 10, center
  edit "", 3, 60 39 50 10, center
  edit "", 4, 122 39 50 10, center
  edit "", 72, 60 57 50 10, center
  edit "", 73, 122 57 50 10, center
  edit "", 5, 60 79 50 10, center
  edit "#", 6, 60 102 50 10
  edit "", 7, 122 79 50 10, center
  edit "", 8, 122 102 50 10, center
  button "Physical Damage", 9, 5 5 46 12
  button "Magical Damage", 10, 5 17 46 12
  button "Healing", 11, 5 30 46 12
  button "MP Recovery", 12, 5 54 46 12
  button "Cast", 13, 5 42 46 12
  button "Post", 14, 5 78 46 12
  check "Bubble", 15, 179 41 41 10
  check "MP Damage", 17, 179 23 40 10
  check "Piercing Damage", 21, 179 61 50 10
  button "Poison", 22, 5 66 46 12
  button "Regen", 23, 5 116 34 17
  edit "", 24, 211 5 19 10, center
  edit "", 25, 40 124 18 10, center
  button "Refresh", 26, 61 117 34 17
  edit "", 27, 96 125 18 10, center
  button "Gravity", 28, 118 117 34 17
  edit "", 29, 155 125 18 10, center
  edit "", 30, 97 135 25 10
  text "Current HP", 32, 70 6 39 8
  text "Max HP", 33, 133 6 20 8
  text "Current MP", 34, 70 28 29 8
  text "Max MP", 35, 132 28 25 8
  text "Damage", 36, 73 68 25 8
  text "Channel", 37, 71 91 25 8
  text "Armor", 38, 133 68 25 8
  text "M.Armor", 39, 131 91 25 8
  box "Defense Modifiers", 40, 176 74 56 50
  box "HP Modifiers", 42, 176 15 56 37
  text "Character Tier", 43, 176 6 36 8
  text "VIT", 44, 44 116 11 8
  text "SPR", 45, 99 117 11 8
  text "%", 46, 160 117 9 8
  text "Post-Armor Damage", 47, 44 136 52 8
  button "End Of Turn", 48, 5 134 38 12
  edit "", 100, 15 164 50 10
  edit "", 112, 71 164 15 10, center
  edit "", 101, 15 174 50 10
  edit "", 113, 71 174 15 10, center
  text "Status", 66, 31 155 25 8
  text "Dur.", 67, 73 155 11 8
  text "Status", 68, 129 155 25 8
  text "Dur.", 69, 169 155 12 8
  button "Winning Streak /Extend", 70, 187 158 39 32, multi
  check "Element Absorb", 71, 179 32 50 10
  text "Current LP", 74, 72 49 30 8
  text "Max LP", 75, 132 49 25 8
  combo 76, 153 135 79 46, vsbar size drop
  button "Limit Charge", 77, 5 90 46 12
  button "Limit Execute", 78, 5 102 36 12
  text "Limit Type", 79, 126 137 25 8
  edit "", 80, 41 102 11 12, center
  edit "", 102, 15 184 50 10
  edit "", 114, 71 184 15 10, center
  edit "", 103, 15 194 50 10
  edit "", 115, 71 194 15 10, center
  edit "", 104, 15 204 50 10
  edit "", 116, 71 204 15 10, center
  edit "", 105, 15 214 50 10
  edit "", 117, 71 214 15 10, center
  edit "", 106, 112 166 50 10
  edit "", 118, 168 166 15 10, center
  edit "", 107, 112 176 50 10
  edit "", 119, 168 176 15 10, center
  edit "", 108, 112 186 50 10
  edit "", 120, 168 186 15 10, center
  edit "", 109, 112 196 50 10
  edit "", 121, 168 196 15 10, center
  edit "", 110, 112 206 50 10
  edit "", 122, 168 206 15 10, center
  edit "", 111, 112 216 50 10
  edit "", 123, 168 216 15 10, center
  edit "", 31, 99 229 50 10
  text "Stoneskin", 49, 73 229 25 8, right
  button "Boon", 50, 187 191 39 32, multi
  radio "5/5ths", 200, 179 81 50 8
  radio "4/5ths", 201, 179 89 50 8
  radio "3/5ths", 202, 179 97 50 8
  radio "2/5ths", 203, 179 105 50 8
  radio "1/5th", 204, 179 113 50 8
  menu "Menu", 81
  item "End Battle", 82, 81
  item "Open", 83, 81
  item "Save", 84, 81
}

alias treetracker {
  dialog -md tree_tracker tree_tracker
  did -a tree_tracker 76 No Limit
  did -a tree_tracker 76 Ally (2 LP)
  did -a tree_tracker 76 Avenger (40 LP)
  did -a tree_tracker 76 Comrade (3 LP)
  did -a tree_tracker 76 Daredevil [Offense] (8 LP)
  did -a tree_tracker 76 Daredevil [Other] (3 LP)
  did -a tree_tracker 76 Evader [Damage] (10 LP)
  did -a tree_tracker 76 Evader [Status] (4 LP)
  did -a tree_tracker 76 Healer (5 LP)
  did -a tree_tracker 76 Slayer (30 LP)
  did -a tree_tracker 76 Stoic (10 LP)
  did -a tree_tracker 76 Striker [Non-Weapon] (4 LP)
  did -a tree_tracker 76 Striker [Light] (3 LP)
  did -a tree_tracker 76 Striker [Medium] (4 LP)
  did -a tree_tracker 76 Striker [Heavy] (5 LP)
  did -a tree_tracker 76 Striker [Great] (6 LP)
  did -a tree_tracker 76 Tactician [Negative] (6 LP)
  did -a tree_tracker 76 Tactician [Positive] (3 LP)
  did -a tree_tracker 76 Victor (18 LP)
  treeload
}

alias treesave {
  ; Character Save
  if ($did(tree_tracker,1) != $null) { writeini seedcharadv.ini $me currhp $did(tree_tracker,1) }
  if ($did(tree_tracker,2) != $null) { writeini seedcharadv.ini $me maxhp $did(tree_tracker,2) }
  if ($did(tree_tracker,3) != $null) { writeini seedcharadv.ini $me currmp $did(tree_tracker,3) }
  if ($did(tree_tracker,4) != $null) { writeini seedcharadv.ini $me maxmp $did(tree_tracker,4) }
  if ($did(tree_tracker,6) != $null) { writeini seedcharadv.ini $me chan $did(tree_tracker,6) }
  if ($did(tree_tracker,7) != $null) { writeini seedcharadv.ini $me arm $did(tree_tracker,7) }
  if ($did(tree_tracker,8) != $null) { writeini seedcharadv.ini $me marm $did(tree_tracker,8) }
  if ($did(tree_tracker,24) != $null) { writeini seedcharadv.ini $me tier $did(tree_tracker,24) }
  if ($did(tree_tracker,25) != $null) { writeini seedcharadv.ini $me vit $did(tree_tracker,25) }
  if ($did(tree_tracker,27) != $null) { writeini seedcharadv.ini $me spr $did(tree_tracker,27) }
  if ($did(tree_tracker,72) != $null) { writeini seedcharadv.ini $me currlp $did(tree_tracker,72) }
  if ($did(tree_tracker,73) != $null) { writeini seedcharadv.ini $me maxlp $did(tree_tracker,73) }
}

alias treeload {
  ; Character Load
  did -o tree_tracker 1 1 $readini(seedcharadv.ini,$me,currhp)
  did -o tree_tracker 2 1 $readini(seedcharadv.ini,$me,maxhp)
  did -o tree_tracker 3 1 $readini(seedcharadv.ini,$me,currmp)
  did -o tree_tracker 4 1 $readini(seedcharadv.ini,$me,maxmp)
  did -o tree_tracker 6 1 $readini(seedcharadv.ini,$me,chan)
  did -o tree_tracker 7 1 $readini(seedcharadv.ini,$me,arm)
  did -o tree_tracker 8 1 $readini(seedcharadv.ini,$me,marm)
  did -o tree_tracker 24 1 $readini(seedcharadv.ini,$me,tier)
  did -o tree_tracker 25 1 $readini(seedcharadv.ini,$me,vit)
  did -o tree_tracker 27 1 $readini(seedcharadv.ini,$me,spr)
  did -o tree_tracker 72 1 $readini(seedcharadv.ini,$me,currlp)
  did -o tree_tracker 73 1 $readini(seedcharadv.ini,$me,maxlp)
}

alias maxhp {
  if ($did(tree_tracker,15).state) { return $calc($did(tree_tracker,2)*2) }
  else { return $did(tree_tracker,2) }
}

alias sarmor {
  if ($did(tree_tracker,21).state) { return 0 }
  return $calc($did(tree_tracker,7) + %armmod)
}

alias smarmor {
  if ($did(tree_tracker,21).state) { return 0 }
  return $calc($did(tree_tracker,8) + %marmmod)
}

alias sdamage {
  var %damage = $1
  if ($did(tree_tracker,17).state) { 
    if (%damage >= $did(tree_tracker,3)) { did -o tree_tracker 3 1 0 | var %fdam = 1 }
    else { did -o tree_tracker 3 1 $calc($did(tree_tracker,3) - %damage) | var %fdam = %damage }
  }
  else {
    if (%damage >= $did(tree_tracker,1)) { did -o tree_tracker 1 1 0 | var %fdam = 1 }
    else { did -o tree_tracker 1 1 $calc($did(tree_tracker,1) - %damage) | var %fdam = %damage }
  }
  did -o tree_tracker 30 1 %fdam
}

alias sheal {
  var %heal = $2
  if ($1 == 1) {
    if ($calc(%heal + $did(tree_tracker,1)) >= $maxhp) { did -o tree_tracker 1 1 $maxhp }
    else { did -o tree_tracker 1 1 $calc(%heal + $did(tree_tracker,1)) }
  }
  else {
    if ($calc(%heal + $did(tree_tracker,3)) >= $did(tree_tracker,4)) { did -o tree_tracker 3 1 $did(tree_tracker,4) }
    else { did -o tree_tracker 3 1 $calc(%heal + $did(tree_tracker,3)) }
  }
  ; Usage: heal <HP:1/MP:2>
}

alias scharge {
  ; Limit charging
  if ($calc($1 + $did(tree_tracker,72)) >= $did(tree_tracker,73)) { did -o tree_tracker 72 1 $did(tree_tracker,73) }
  else { did -o tree_tracker 72 1 $calc($did(tree_tracker,72) + $1) }
}

on *:dialog:tree_tracker:sclick:15: {
  if ($did(tree_tracker,15).state) { did -o tree_tracker 1 1 $int($calc($did(tree_tracker,1) * 2)) }
  else { did -o tree_tracker 1 1 $int($calc($did(tree_tracker,1) / 2)) }
}

on *:dialog:tree_tracker:sclick:9: {
  ; Physical Damage button
  if ($did(tree_tracker,200).state) { var %defend = 1 }
  elseif ($did(tree_tracker,201).state) { var %defend = 0.8 }
  elseif ($did(tree_tracker,202).state) { var %defend = 0.6 }
  elseif ($did(tree_tracker,203).state) { var %defend = 0.4 }
  elseif ($did(tree_tracker,204).state) { var %defend = 0.2 }
  else { var %defend = 1 }
  var %damage = $calc(($did(tree_tracker,5) - $sarmor) * %defend)
  if (%damage <= 0) { var %damage = 1 }
  if ($did(tree_tracker,31) > 0) && ($did(tree_tracker,31) isnum) {
    ;Stoneskin Damage
    if (%damage <= $did(tree_tracker,31)) {
      did -o tree_tracker 31 1 $calc($did(tree_tracker,31) - %damage)
      var %damage = 0
    }
    else {
      var %damage = $calc( %damage - $did(tree_tracker,31) )
      did -o tree_tracker 31 1 0
    }
  }
  if ($did(tree_tracker,71).state) { sheal 1 $int(%damage) }
  else { sdamage $int(%damage) }
}

on *:dialog:tree_tracker:sclick:10: {
  ; Magical Damage button
  if ($did(tree_tracker,200).state) { var %defend = 1 }
  elseif ($did(tree_tracker,201).state) { var %defend = 0.8 }
  elseif ($did(tree_tracker,202).state) { var %defend = 0.6 }
  elseif ($did(tree_tracker,203).state) { var %defend = 0.4 }
  elseif ($did(tree_tracker,204).state) { var %defend = 0.2 }
  else { var %defend = 1 }
  var %damage = $calc(($did(tree_tracker,5) - $smarmor) * %defend)
  if (%damage <= 0) { var %damage = 1 }
  if ($did(tree_tracker,31) > 0) && ($did(tree_tracker,31) isnum) {
    ;Stoneskin Damage
    if (%damage <= $did(tree_tracker,31)) {
      did -o tree_tracker 31 1 $calc($did(tree_tracker,31) - %damage)
      var %damage = 0
    }
    else {
      var %damage = $calc( %damage - $did(tree_tracker,31) )
      did -o tree_tracker 31 1 0
    }
  }
  if ($did(tree_tracker,71).state) { sheal 1 $int(%damage) }
  else { sdamage $int(%damage) }
}

on *:dialog:tree_tracker:sclick:11: {
  ; Healing button
  sheal 1 $did(tree_tracker,5)
}

on *:dialog:tree_tracker:sclick:13 {
  ; Spellcast button
  if ($did(tree_tracker,5) > $did(tree_tracker,3)) { msg $me MP cost exceeds current MP, cannot cast }
  else { did -o tree_tracker 3 1 $calc($did(tree_tracker,3) - $did(tree_tracker,5)) }
}

on *:dialog:tree_tracker:sclick:12: {
  ; MP Recovery button
  sheal 2 $did(tree_tracker,5)
}

on *:dialog:tree_tracker:sclick:22 {
  ; Poison button
  sdamage $int($calc($did(tree_tracker,1) * 0.2))
}

on *:dialog:tree_tracker:sclick:23: {
  ; Regen button
  sheal 1 $calc($did(tree_tracker,25) * 4 * $did(tree_tracker,24)) 
}

on *:dialog:tree_tracker:sclick:26: {
  ; Refresh button
  sheal 2 $calc($did(tree_tracker,27) * ($did(tree_tracker,24) + 1))
}

on *:dialog:tree_tracker:sclick:28: {
  ; Gravity button
  if ($did(tree_tracker,17).state) {
    var %damage = $calc($did(tree_tracker,3) * ($did(tree_tracker,29)/100))
    if (%damage >= $did(tree_tracker,3)) { var %damage = 0 }
  }
  else {
    var %damage = $calc($did(tree_tracker,1) * ($did(tree_tracker,29)/100))
    if (%damage >= $did(tree_tracker,1)) { var %damage = 0 }
  }
  sdamage $int(%damage)
}

; Status Tracker
on *:dialog:tree_tracker:sclick:48: {
  ; End of Turn
  var %currstatus = 1
  while (%currstatus <= 12) {
    var %currtimer = $calc(%currstatus + 111)
    if ($did(tree_tracker, $+ %currtimer $+) isnum) && ($did(tree_tracker, $+ %currtimer $+) > 0) {
      did -o tree_tracker %currtimer 1 $calc($did(tree_tracker, $+ %currtimer $+) - 1)
    }
    inc %currstatus
  }
}

on *:dialog:tree_tracker:sclick:70: {
  ; Winning Streak button
  var %currstatus = 1
  while (%currstatus <= 12) {
    var %currtimer = $calc(%currstatus + 111)
    if ($did(tree_tracker, $+ %currtimer $+) isnum) && ($did(tree_tracker, $+ %currtimer $+) > 0) && ( ) {
      did -o tree_tracker %currtimer 1 $calc($did(tree_tracker, $+ %currtimer $+) + 2)
    }
    inc %currstatus
  }
}

on *:dialog:tree_tracker:sclick:50: {
  ; Boon button
  var %currstatus = 1
  var %boonlist = Accuracy Up.Bar-Fire.Bar-Ice.Bar-Lightning.Bar-Water.Bar-Holy.Bar-Shadow.Bar-Element.Blink.Bravery.Bubble.Critical Up.Dread Spikes.En-Fire.En-Ice.En-Lightning.En-Holy.En-Shadow.En-Water.Fire Sword.Ice Sword.Lightning Sword.Water Sword.Holy Sword.Dark Sword.Element Sword.Lethargy Sword.Slow Sword.Zombie Sword.Sap Sword.Stun Sword.Sleep Sword.Flare Sword.Drain Sword.Osmoses Sword.Other Sword.Evasion Up.Faith.Float.Haste.Protect.Reflect.Refresh.Regen.Resist.Shell.Tranq.Vanish.Veil.Vigilance
  while (%currstatus <= 12) {
    var %currtimer = $calc(%currstatus + 111)
    var %currname = $calc(%currstatus + 99)
    if ($did(tree_tracker, $+ %currtimer $+) isnum) && ($did(tree_tracker, $+ %currtimer $+) > 0) && ($istok(%boonlist,$did(tree_tracker, $+ %currname $+),46) == $true) {
      did -o tree_tracker %currtimer 1 $calc($did(tree_tracker, $+ %currtimer $+) + 1)
    }
    inc %currstatus
  }
}

alias boonlist {
  ; Token separator is . or 46
  var %boonlist = Accuracy Up.Bar-Fire.Bar-Ice.Bar-Lightning.Bar-Water.Bar-Holy.Bar-Shadow.Bar-Element.Blink.Brave.Bravery.Bubble.Critical Up.Dread Spikes.En-Fire.En-Ice.En-Lightning.En-Holy.En-Shadow.En-Water.Fire Sword.Ice Sword.Lightning Sword.Water Sword.Holy Sword.Dark Sword.Element Sword.Lethargy Sword.Slow Sword.Zombie Sword.Sap Sword.Stun Sword.Sleep Sword.Flare Sword.Drain Sword.Osmoses Sword.Other Sword.Evasion Up.Faith.Float.Haste.Protect.Reflect.Refresh.Regen.Resist.Shell.Tranq.Vanish.Veil.Vigilance
  var %boon = $sorttok(%boonlist,46)
  echo $me Boon-supported statuses: $replace(%boon,.,$chr(32) $+ - $+ $chr(32))
}

; End of status tracker

on *:dialog:tree_tracker:sclick:77: {
  ; Limit Charge button
  scharge $gettok(0.2.40.3.8.3.10.4.5.30.10.4.3.4.5.6.6.3.18,$did(tree_tracker,76).sel,46)
}

on *:dialog:tree_tracker:sclick:78:{
  ; Limit Execute button
  if ($did(tree_tracker,80) > 5) { msg $me You idjit, Limits don't go past 5 }
  elseif ($did(tree_tracker,80) < 1) || ($did(tree_tracker,80) = $null) { msg $me Slowpoke, Limits aren't smaller than 1 }
  elseif ($did(tree_tracker,72) < $calc(50 + 50 * $did(tree_tracker,80))) {
    msg $me Unable to perform limit. LP Required: $calc(50 + 50 * $did(tree_tracker,80))
  }
  else {
    did -o tree_tracker 72 1 $calc( $did(tree_tracker,72) - $calc(50 + 50 * $did(tree_tracker,80)) )
  }
  if ($isalias(seedlimit)) { seedlimit }
}

on *:dialog:tree_tracker:menu:83: {
  ; Character Open
  treeload
}

on *:dialog:tree_tracker:menu:84: {
  ; Character Save
  treesave
}

on *:dialog:tree_tracker:menu:82: {
  ; Battle End (Clear Status, Save Character)
  var %currstatus = 1
  while (%currstatus <= 12) {
    var %currtimer = $calc(%currstatus + 111)
    var %currname = $calc(%currstatus + 99)
    did -o tree_tracker %currtimer 1 $null
    did -o tree_tracker %currname 1 $null
    inc %currstatus
  }
  treesave
}

on *:dialog:tree_tracker:sclick:14: {
  ; Post button
  if ($did(tree_tracker,1) <= $calc($maxhp / 10)) { var %color = 4 }
  elseif ($did(tree_tracker,1) <= $calc($maxhp / 4)) { var %color = 7 }
  else { var %color = $null }
  if ($did(tree_tracker,31) > 0) { var %ssline = SS: $chr(91) $+ $did(tree_tracker,31) $+ $chr(93) }
  var %hpline = HP: $+ %color $did(tree_tracker,1) $+ / $+ $maxhp
  var %mpline = MP: $+ $chr(32) $+ $did(tree_tracker,3) $+ / $+ $did(tree_tracker,4)
  var %sos = SoS: $int($calc($maxhp / 4))
  if ($did(tree_tracker,73) > 0 ) { var %lpline = , LP: $did(tree_tracker,72) $+ / $+ $did(tree_tracker,73) }
  else { var %lpline = $null }
  var %currstatus = 1
  while (%currstatus <= 12) {
    ; Status line generator 
    var %currtimer = $calc(%currstatus + 111)
    var %currname = $calc(%currstatus + 99)
    if ($did(tree_tracker, $+ %currname $+ ) != 0) && ($did(tree_tracker, $+ %currname $+ ) != $null) {
      var %statusline = $addtok(%statusline,$did(tree_tracker, $+ %currname $+ ) ( $+ $did(tree_tracker, $+ %currtimer $+ ) $+ ),44)
    }
    inc %currstatus
  }
  if (%statusline == $null) { var %spacer = $null }
  else { var %spacer = $chr(32) - $chr(32) }
  if ($did(tree_tracker,31) > 0) { var %spacer2 = $chr(32) }
  else { var %spacer2 = $null }
  msg $did(tree_tracker,6) (( $+ %ssline $+ %spacer2 $+ %hpline $+ , %mpline $+ %lpline $+ , %sos $+ %spacer $+ %statusline $+ ))
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License