- Posts:
- 667
- Group:
- FEFFer
- Member
- #1,400
- Joined:
- July 24, 2007
|
After doing a couple of debate posts I noticed it's pretty tiring and time consuming to repeatedly shift between FEA, Serene's, your text/word document and everything else you need to determine something simple as Guy's offensive stats.
So I build a tool in mIRC that allows you to fill in all relevant stats, and then does the calculating work for you. Just put in HP, Str, Def, etc, as well as weapon properties and relevant supporting affinities and levels, and it'll give you the battle stats you need.
 Guy's stats using a Killing Edge
How to get it:
1) Get mIRC if you haven't already and open it 2) Press Alt + R and you should see the Remote Editor 3) Copypaste all code below into the text field 4) Click OK 5) Just in case, turn the Remote on by typing /remote on
Now, to use it, simply fill in all relevant stats and weapon properties, fill in your unit's name as well as the name of the weapon if you like, and press the Go! button.
There's only 2 errors I know of: - There's a little issue with the spacing in the supporting field. As you can see, 12.5 gets cut off. But that's okay, we know what it means. - There's no way of implementing the class Crt boost.
This one is mostly meant for the GBA FEs obviously. You could use it for FE9 though, just pretend it actually says Str instead of Con. Supports are a lot different there though. FE4 and FE5 have some changes as well but it can still be functional for those if you know how to convert your stuff.
Have fun.
- Code:
-
alias fedi { dialog -m fedi fedi } alias f8 { fedi }
dialog fedi {
;Obligatory stuff for dialogs title "Mekkah's Fire Emblem Stat Calculator" size -l -l 390 230 option dbu
;Boxes box "Primary Stats", 1, 10 10 120 110 box "Supports", 2, 130 10 240 110 box "Weapon", 3, 10 120 120 100 box "Final Stats", 4, 130 120 240 100
;Primary Stats ;Name Editbox edit "", 5, 20 20 40 10 ;Start button button "Go!", 100, 65 20 40 10
;Primary stat editor text "MHP", 6, 20 40 30 10 text "Pow", 7, 20 50 30 10 text "Skl", 8, 20 60 30 10 text "Spd", 9, 20 70 30 10
text "Def", 10, 70 40 30 10 text "Res", 11, 70 50 30 10 text "Luk", 12, 70 60 30 10 text "Con", 13, 70 70 30 10
;Editboxes for stats edit "0", 14, 45 40 20 10 edit "0", 15, 45 50 20 10 edit "0", 16, 45 60 20 10 edit "0", 17, 45 70 20 10
edit "0", 18, 95 40 20 10 edit "0", 19, 95 50 20 10 edit "0", 20, 95 60 20 10 edit "0", 21, 95 70 20 10
;Supports Stuff ;Character support affinity text "Unit Affinity", 22, 140 20 30 10 combo 23, 140 30 40 10, drop
;Supporting unit affinities text "Supporter Affinity", 30, 140 40 50 10 combo 24, 140 50 40 10, drop combo 25, 140 60 40 10, drop combo 26, 140 70 40 10, drop combo 27, 140 80 40 10, drop combo 28, 140 90 40 10, drop
;Character support levels text "Support Level", 29, 200 40 40 10 combo 31, 200 50 20 10, drop combo 32, 200 60 20 10, drop combo 33, 200 70 20 10, drop combo 34, 200 80 20 10, drop combo 35, 200 90 20 10, drop
;Support Bonuses text "Atk", 36, 250 40 50 10 text "0", 37, 250 50 10 10 text "0", 38, 250 60 10 10 text "0", 39, 250 70 10 10 text "0", 40, 250 80 10 10 text "0", 41, 250 90 10 10
text "Def", 42, 270 40 50 10 text "0", 43, 270 50 10 10 text "0", 44, 270 60 10 10 text "0", 45, 270 70 10 10 text "0", 46, 270 80 10 10 text "0", 47, 270 90 10 10
text "Hit", 48, 290 40 50 10 text "0", 49, 290 50 10 10 text "0", 50, 290 60 10 10 text "0", 51, 290 70 10 10 text "0", 52, 290 80 10 10 text "0", 53, 290 90 10 10
text "Avo", 54, 310 40 50 10 text "0", 55, 310 50 10 10 text "0", 56, 310 60 10 10 text "0", 57, 310 70 10 10 text "0", 58, 310 80 10 10 text "0", 59, 310 90 10 10
text "Crt", 60, 330 40 50 10 text "0", 61, 330 50 10 10 text "0", 62, 330 60 10 10 text "0", 63, 330 70 10 10 text "0", 64, 330 80 10 10 text "0", 65, 330 90 10 10
text "CEV", 66, 350 40 50 10 text "0", 67, 350 50 10 10 text "0", 68, 350 60 10 10 text "0", 69, 350 70 10 10 text "0", 70, 350 80 10 10 text "0", 71, 350 90 10 10
;Totals text "Total", 90, 200 105 30 10 text "0", 91, 250 105 10 10 text "0", 92, 270 105 10 10 text "0", 93, 290 105 10 10 text "0", 94, 310 105 10 10 text "0", 95, 330 105 10 10 text "0", 96, 350 105 10 10
;Weapon Properties ;box is at 10 120 120 100
text "Weapon", 72, 20 130 20 10 text "Mt", 73, 20 150 20 10 text "Acc", 74, 20 160 20 10 text "Crt", 75, 20 170 20 10 text "Wt", 76, 20 180 20 10
edit "", 77, 50 130 50 10 edit "", 78, 50 150 30 10 edit "", 79, 50 160 30 10 edit "", 80, 50 170 30 10 edit "", 81, 50 180 30 10
;Final Box ;[Character] with [Weapon] ;Offensively: atk, AS, hit, crt ;Defensively: avo, HP, def, res, crt eva
edit "", 82, 140 130 220 80, multi, return
} ;Start button event, scroll down a lot to see what /goforit does on *:dialog:fedi:sclick:100: { goforit }
on *:dialog:fedi:init:0: {
;Adding affinities to the combo boxes did -a fedi 23,24,25,26,27,28 Fire did -a fedi 23,24,25,26,27,28 Anima did -a fedi 23,24,25,26,27,28 Wind did -a fedi 23,24,25,26,27,28 Light did -a fedi 23,24,25,26,27,28 Thunder did -a fedi 23,24,25,26,27,28 Dark did -a fedi 23,24,25,26,27,28 Ice did -a fedi 23,24,25,26,27,28 (no support)
;Adding A/B/C to the combo boxes did -a fedi 31,32,33,34,35 A did -a fedi 31,32,33,34,35 B did -a fedi 31,32,33,34,35 C did -a fedi 31,32,33,34,35 - } alias supportcalc { ;Calculating support bonuses
;Defining the unit's affinity as %unit.aff set %unit.aff $did(fedi,23)
;Adding bonuses, seperated by rows
;Defining supportlevel for supporting unit #1 var %suplevel.1 $supportlevel($did(fedi,31))
did -o fedi 37 1 $calc( ( ( $affb.atk( %unit.aff ) + $affb.atk( $did(fedi,24) ) ) / 2 ) * %suplevel.1 ) did -o fedi 43 1 $calc( ( ( $affb.def( %unit.aff ) + $affb.def( $did(fedi,24) ) ) / 2 ) * %suplevel.1 ) did -o fedi 49 1 $calc( ( ( $affb.hit( %unit.aff ) + $affb.hit( $did(fedi,24) ) ) / 2 ) * %suplevel.1 ) did -o fedi 55 1 $calc( ( ( $affb.avo( %unit.aff ) + $affb.avo( $did(fedi,24) ) ) / 2 ) * %suplevel.1 ) did -o fedi 61 1 $calc( ( ( $affb.crt( %unit.aff ) + $affb.crt( $did(fedi,24) ) ) / 2 ) * %suplevel.1 ) did -o fedi 67 1 $calc( ( ( $affb.cev( %unit.aff ) + $affb.cev( $did(fedi,24) ) ) / 2 ) * %suplevel.1 )
;Defining supportlevel for supporting unit #2 var %suplevel.1 $supportlevel($did(fedi,32))
did -o fedi 38 1 $calc( ( ( $affb.atk( %unit.aff ) + $affb.atk( $did(fedi,25) ) ) / 2 ) * %suplevel.1 ) did -o fedi 44 1 $calc( ( ( $affb.def( %unit.aff ) + $affb.def( $did(fedi,25) ) ) / 2 ) * %suplevel.1 ) did -o fedi 50 1 $calc( ( ( $affb.hit( %unit.aff ) + $affb.hit( $did(fedi,25) ) ) / 2 ) * %suplevel.1 ) did -o fedi 56 1 $calc( ( ( $affb.avo( %unit.aff ) + $affb.avo( $did(fedi,25) ) ) / 2 ) * %suplevel.1 ) did -o fedi 62 1 $calc( ( ( $affb.crt( %unit.aff ) + $affb.crt( $did(fedi,25) ) ) / 2 ) * %suplevel.1 ) did -o fedi 68 1 $calc( ( ( $affb.cev( %unit.aff ) + $affb.cev( $did(fedi,25) ) ) / 2 ) * %suplevel.1 )
;Defining supportlevel for supporting unit #3 var %suplevel.1 $supportlevel($did(fedi,33))
did -o fedi 39 1 $calc( ( ( $affb.atk( %unit.aff ) + $affb.atk( $did(fedi,26) ) ) / 2 ) * %suplevel.1 ) did -o fedi 45 1 $calc( ( ( $affb.def( %unit.aff ) + $affb.def( $did(fedi,26) ) ) / 2 ) * %suplevel.1 ) did -o fedi 51 1 $calc( ( ( $affb.hit( %unit.aff ) + $affb.hit( $did(fedi,26) ) ) / 2 ) * %suplevel.1 ) did -o fedi 57 1 $calc( ( ( $affb.avo( %unit.aff ) + $affb.avo( $did(fedi,26) ) ) / 2 ) * %suplevel.1 ) did -o fedi 63 1 $calc( ( ( $affb.crt( %unit.aff ) + $affb.crt( $did(fedi,26) ) ) / 2 ) * %suplevel.1 ) did -o fedi 69 1 $calc( ( ( $affb.cev( %unit.aff ) + $affb.cev( $did(fedi,26) ) ) / 2 ) * %suplevel.1 )
;Defining supportlevel for supporting unit #4 var %suplevel.1 $supportlevel($did(fedi,34))
did -o fedi 40 1 $calc( ( ( $affb.atk( %unit.aff ) + $affb.atk( $did(fedi,27) ) ) / 2 ) * %suplevel.1 ) did -o fedi 46 1 $calc( ( ( $affb.def( %unit.aff ) + $affb.def( $did(fedi,27) ) ) / 2 ) * %suplevel.1 ) did -o fedi 52 1 $calc( ( ( $affb.hit( %unit.aff ) + $affb.hit( $did(fedi,27) ) ) / 2 ) * %suplevel.1 ) did -o fedi 58 1 $calc( ( ( $affb.avo( %unit.aff ) + $affb.avo( $did(fedi,27) ) ) / 2 ) * %suplevel.1 ) did -o fedi 64 1 $calc( ( ( $affb.crt( %unit.aff ) + $affb.crt( $did(fedi,27) ) ) / 2 ) * %suplevel.1 ) did -o fedi 70 1 $calc( ( ( $affb.cev( %unit.aff ) + $affb.cev( $did(fedi,27) ) ) / 2 ) * %suplevel.1 )
;Defining supportlevel for supporting unit #5 var %suplevel.1 $supportlevel($did(fedi,35))
did -o fedi 41 1 $calc( ( ( $affb.atk( %unit.aff ) + $affb.atk( $did(fedi,28) ) ) / 2 ) * %suplevel.1 ) did -o fedi 47 1 $calc( ( ( $affb.def( %unit.aff ) + $affb.def( $did(fedi,28) ) ) / 2 ) * %suplevel.1 ) did -o fedi 53 1 $calc( ( ( $affb.hit( %unit.aff ) + $affb.hit( $did(fedi,28) ) ) / 2 ) * %suplevel.1 ) did -o fedi 59 1 $calc( ( ( $affb.avo( %unit.aff ) + $affb.avo( $did(fedi,28) ) ) / 2 ) * %suplevel.1 ) did -o fedi 65 1 $calc( ( ( $affb.crt( %unit.aff ) + $affb.crt( $did(fedi,28) ) ) / 2 ) * %suplevel.1 ) did -o fedi 71 1 $calc( ( ( $affb.cev( %unit.aff ) + $affb.cev( $did(fedi,28) ) ) / 2 ) * %suplevel.1 )
;Adding up the support bonuses
did -o fedi 91 1 $calc( $did(fedi,37) + $did(fedi,38) + $did(fedi,39) + $did(fedi,40) + $did(fedi,41) ) did -o fedi 92 1 $calc( $did(fedi,43) + $did(fedi,44) + $did(fedi,45) + $did(fedi,46) + $did(fedi,47) ) did -o fedi 93 1 $calc( $did(fedi,49) + $did(fedi,50) + $did(fedi,51) + $did(fedi,52) + $did(fedi,53) ) did -o fedi 94 1 $calc( $did(fedi,55) + $did(fedi,56) + $did(fedi,57) + $did(fedi,58) + $did(fedi,59) ) did -o fedi 95 1 $calc( $did(fedi,61) + $did(fedi,62) + $did(fedi,63) + $did(fedi,64) + $did(fedi,65) ) did -o fedi 96 1 $calc( $did(fedi,67) + $did(fedi,68) + $did(fedi,69) + $did(fedi,70) + $did(fedi,71) ) }
;Identifiers that check if an affinity gives a certain boost alias affb.atk { if ( $1 == Fire ) { return 1 } if ( $1 == Anima ) { return 1 } if ( $1 == Wind ) { return 1 } if ( $1 == Light ) { return 1 } else { return 0 } } alias affb.def { if ( $1 == Thunder ) { return 1 } if ( $1 == Anima ) { return 1 } if ( $1 == Ice ) { return 1 } if ( $1 == Light ) { return 1 } else { return 0 } } alias affb.hit { if ( $1 == Thunder ) { return 0 } if ( $1 == Anima ) { return 0 } else { return 5 } } alias affb.avo { if ( $1 == Wind ) { return 0 } if ( $1 == Light ) { return 0 } else { return 5 } } alias affb.crt { if ( $1 == Ice ) { return 0 } if ( $1 == Anima ) { return 0 } else { return 5 } } alias affb.cev { if ( $1 == Light ) { return 0 } if ( $1 == Fire ) { return 0 } else { return 5 } }
alias supportlevel { if ( $1 == A ) { return 3 } if ( $1 == B ) { return 2 } if ( $1 == C ) { return 1 } if ( $1 == - ) { return 0 } } alias goforit { supportcalc
;Final Box ;[Character] with [Weapon] ;Offensively: atk, AS, hit, crt ;Defensively: avo, HP, def, res, crt eva
;Atk ;Atk = Pow + Supports + Mt var %final.atk $calc( $did(fedi,15) + $did(fedi,91) + $did(fedi,78) )
;AS ;if Con > Wt, AS = Spd ;if Con < Wt, AS = Spd - (Con-Wt)
;Check for AS loss var %coner $calc( $did(fedi,21) - $did(fedi,81) ) if ( %coner > 0 ) { var %asloss 0 } else { var %asloss %coner }
;Actual calculating the AS var %final.as $calc( $did(fedi,17) + %asloss )
;Hit ;Hit = (2 * Skl) + (0.5 * Luk) + Weapon Acc + Supports var %final.hit $calc( (2 * $did(fedi,16) ) + ( 0.5 * $did(fedi,20) ) + $did(fedi,79) + $did(fedi,93) )
;Crt ;Crt = (0.5 * Skl) + Weapon Crt + Supports (+Class Bonus) var %final.crt $calc( 0.5 * $did(fedi,16) + $did(fedi,80) + $did(fedi,95) )
;Avo ;Avo = (2 * AS) + Luk + Supports var %final.avo $calc( ( 2 * %final.as ) + $did(fedi,20) + $did(fedi,94) )
;Def ;Actual Def = Def + Supports var %final.def $calc( $did(fedi,18) + $did(fedi,92) )
;Res ;Actual Res = Res + Supports var %final.res $calc( $did(fedi,19) + $did(fedi,92) )
;Crt Avo ;Crt Avo = Luk + Supports var %final.crtavo $calc( $did(fedi,20) + $did(fedi,96) )
;Final did -o fedi 82 1 $did(fedi,5) using $did(fedi,77) did -o fedi 82 2 Offensively: %final.atk Atk, %final.as AS, %final.hit Hit, %final.crt Crt did -o fedi 82 3 Defensively: %final.avo Avoid, $did(fedi,14) HP, %final.def Def, %final.res Res, %final.crtavo Crt Avo }
|