Welcome to the DFO World Wiki. With many major updates since the release of DFO, many items are missing. Visit Item Database Project to learn more.
Please remember to click "show preview" before saving the page.
Thanks for the updated logo snafuPop!
Difference between revisions of "User:Altair"
m (→Generic Skill Growth Formatting) |
m (→Blade Dance Test) |
||
Line 1,052: | Line 1,052: | ||
If you wish to alter the span of certain rows or columns, please refer to the given examples below. | If you wish to alter the span of certain rows or columns, please refer to the given examples below. | ||
===[[Blade Dance]] Test=== | ===[[Blade Dance]] Test=== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<pre> | <pre> | ||
{{#arraydefine:maxrow|1,2,3,4,5,6,7,8,9,10}}<!--Create an array named "maxrow" and fill it with 10 values-->{{#vardefine:cancelcount|2}}<!--Create variable "cancelcount" that holds the values of number of cancels--> | {{#arraydefine:maxrow|1,2,3,4,5,6,7,8,9,10}}<!--Create an array named "maxrow" and fill it with 10 values-->{{#vardefine:cancelcount|2}}<!--Create variable "cancelcount" that holds the values of number of cancels--> | ||
Line 1,076: | Line 1,070: | ||
|} | |} | ||
</pre> | </pre> | ||
− | {{#arraydefine:maxrow|1,2,3,4,5,6,7,8,9,10}}<!--Create an array named "maxrow" and fill it with 10 values--> | + | {{#arraydefine:maxrow|1,2,3,4,5,6,7,8,9,10}}<!--Create an array named "maxrow" and fill it with 10 values-->{{#vardefine:cancelcount|2}}<!--Create variable "cancelcount" that holds the values of number of cancels--> |
− | {{#vardefine:cancelcount|2}}<!--Create variable "cancelcount" that holds the values of number of cancels--> | ||
{|{{SkillTableHeader}} | {|{{SkillTableHeader}} | ||
!Level | !Level | ||
Line 1,093: | Line 1,086: | ||
}} | }} | ||
|} | |} | ||
+ | |||
+ | This example, creates a span of rows that updates the Cancellation Count every 3 levels, starting at level 1. To do this, it requires some general knowledge about If then/Else statements. To read more about this, refer to this [https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions##if link]. | ||
+ | *Generally, If then/Else Statements follow this format: | ||
+ | **'''If''' a specified condition is met, '''then''' something happens. Otherwise, something '''Else''' happens. | ||
+ | **For this particular scenario, we are testing an expression, so we will be using the Mediawiki <code>#ifexpr:</code> function. | ||
+ | ***<pre>{{#ifexpr: CONDITION | THEN: value if CONDITION is true | ELSE: value if CONDITION is false }}</pre> | ||
+ | *The condition we want is for the table to show and update the Cancellation Count once every 3 levels. | ||
+ | **To do this, we must first instantiate a variable that holds our default number for the Cancellation Count. This can be done with the following code: <pre>{{#vardefine:cancelcount|2}}</pre> '''Note:''' Make sure that this variable is instantiated outside and before the <code>#arrayprint</code> function. | ||
+ | **As for the condition, we must find the first row of every three rows. It can be coded as follows: <pre>{{#var:i}} mod 3 = 1</pre> | ||
+ | ***The mathematical operation we are using is called "modulo", it finds the remainder of the dividend and the divisor. | ||
+ | ****It can be particularly useful when finding odd or even values. For example: for some integer value "x", if x mod 2 = 1, then x is odd. If x mod 2 = 0, then x is even. | ||
+ | ***The "3" represents the every three levels, and the "1" represents the first row of each 3 levels. | ||
+ | ****If we wanted to find the second row, we'd use the condition: <pre>{{#var:i}} mod 3 = 2</pre> | ||
+ | ****If we wanted to find the third row, we'd use the condition: <pre>{{#var:i}} mod 3 = 0</pre> | ||
+ | **Now that we have our condition, we can find our '''THEN''', what we want to happen when the condition is met. We want the table to output a column that takes up three rows and displays the Cancellation Count. To do this, we can use the following code: <pre>{{!}} rowspan="3"{{!}}{{#var:cancelcount}}{{#vardefine:cancelcount|{{#expr: {{#var:cancelcount}} + 1}} }}</pre> | ||
+ | ***<pre>{{!}}</pre> Generates a new column. | ||
+ | ***<pre>rowspan="3"{{!}}{{#var:cancelcount}}</pre> Generates a column that takes up 3 rows, and outputs the Cancellation Count once. | ||
+ | ***<pre>{{#vardefine:cancelcount|{{#expr: {{#var:cancelcount}} + 1}}</pre> Increments Cancellation Count, it's basically the same as typing the following in other computing languages: <pre>cancelcount = cancelcount + 1</pre> | ||
+ | **Since we don't want the table to output anything for the '''ELSE''', we leave it blank. Thus we get the final line of code: <pre>{{#ifexpr: {{#var:i}} mod 3 = 1 | {{!}} rowspan="3"{{!}}{{#var:cancelcount}}{{#vardefine:cancelcount|{{#expr: {{#var:cancelcount}} + 1 }} }} }}</pre> |
Revision as of 16:18, 9 November 2018
Altair | |
---|---|
![]() | |
Race | toro Capsicum annuum |
Server | DFOG - Cain
|
Explorer Club | Lorekeeper
|
/u/Zactor
| |
Discord | Eckhart#2353
|
Greetings~ ಠ_ರೃ
I am one of the editors on the wiki. If you have any questions, suggestions, or complaints about the format or information, send them to me. I'll try to get back to you whenever I'm available. Note, I can only update when I have free time and as fast as I can level my characters; so please be patient when it comes to updating outdated pages.
If you have any questions/require help in game/want to talk about something, send me a message. I'm usually on Discord. I'll be happy to comply.
Notification(s):
- I will be updating the PvP values after I'm done with my PvE class skill update quota. Until I can find the PvP skill growth scalar values for Independent Atk., this will be delayed.
Contents
[hide]- 1 Outdated/Incorrect Information
- 2 What I do...
- 3 Other Neat Things
- 4 Need Help Acquiring Skill Data?
- 5 Testing Grounds
Outdated/Incorrect Information
- If for any reason you find my information on the Wiki outdated or incorrect, just send me a message. I will make sure to update the information ASAP.
- As for the information, I will be updating the data as soon as I can. I won't be able to update everything on my priorities list since I only update as fast I can level my characters. Feel free to change page data when necessary to update outdated information.
What I do...
- Update Pages: Cleaning up and updating Quest and Skill pages.
- Create Pages: I hate dead or non-existent links, particularly if the page is rather crucial to the wiki. I usually create skeletons for new pages that will hopefully be updated in the future.
- Note: If there is an influx of edits pertaining to a particular page, I am apologize in advance. I have a problem with obsessing over consistent formatting. Either that, or I am tired and miss things while editing.
Other Neat Things
- If you want to learn how to make tables you can look here: Nue talk page. Not all the formats work for all table sizes, so you have to experiment. Another alternative is ASCII, but I don't recommend it due to it being kind of messy. If you have any questions feel free to message me.
- Here's some helpful tips:
- You can declare a table with:
- class="wikitable" style="background-color: #aaaaaa; text-align:center;"
- Note: Be sure to surround your table with brackets: {| at the beginning, |} at the end.
- class="wikitable" style="background-color: #aaaaaa; text-align:center;"
- You can declare a row/column with:
- !Row/ColumnName
- You can manipulate maximum row width with:
- width="NUMBER" |RowName
- You can manipulate row span and column span with:
- rowspan="NUMBER" |RowName
- This is useful when dealing with differences between PvE and PvP.
- colspan="NUMBER" |ColumnName
- This is useful when you have various attributes to cover. Ex: Elemental Shift
- rowspan="NUMBER" |RowName
- You can declare a table with:
- Here's some helpful tips:
- If you want to learn how to change the colors of your table cells, it follows X11 color names (i.e. hexadecimal code) located here: List of X11 codes. For example: #e6e6fa is lavender.
- You can use the function: style="background-color: #[INSERT X11 COLOR CODE HERE];" while declaring a row/column. This changes the color of the particular cell. Of course, take off the brackets when inserting the X11 code.
Other Sources of Information
- If you want a skill planner you can use the following link(s):
- EXRPG.DNF It's a bit outdated, but it enables you to have a pretty good understanding of your basic skill priorities. It does show how the TP skills affect the growth of your skills. It also provides a link to items that boost the level of your skills. Note: This builder does not include the classes for Knight or Second Awakenings. Also, the QP system is outdated.
- dnf.duowan It's a more recent builder. This builder contains everything, but I can't seem to find a way to display the stats for PvP... Note: Some of the data on this builder has a tendency to be misrepresented or be wrong.
- Arad Senki Wiki: link
- DnF Nexon Site: link
- Namu Wiki: link
- CDnF Wiki: link
Quest Table Format
The table below is based off of Tea's EpicQuest2 Table template Template:EpicQuest2.
Level | Quest level |
---|---|
Quest Giver | Quest giver |
Prerequisite | How to obtain the quest (optional) |
Dungeon | Which dungeon do the quest take place (optional) |
Briefing | Text of quest briefing, as presented in quest details in-game (not your personal briefing). |
Objectives | Steps required to complete the quest, as presented in quest details in-game. |
Dungeon Dialogue | Text of quest during the dungeon (optional) |
Upon Completion | Text of quest after completing the quest (optional) |
Rewards | |
Notes | Additional information |
Need Help Acquiring Skill Data?
If you ever require skill data up to 85, here's a helpful guide on how to get it through normal means without leveling your character to 85:
- 1) Get a character to Lv. 50
- 2) Go to Arena
- 3) Go through the skill levels with options F4 and F7 enabled to Dungeon. Hover your cursor over the skill icon in your HUD to receive these values. You must save changes to update the values.
- 4) Record data
- For fixed damage skills, use the AbsoluteDamage Template with your BAS as the value given in PvP Arena, not the value in Town.
- This process doesn't work to get the lv. 1 skill values affected by passives that increase skill level such as Unshackle. This value can only be found in town, by saving the skill level to something greater than 1 and decreasing it to 0.
- Note: Certain skills may be disabled in Arena. If so, edit as much as you are able for the values in Town.
- Note: This process is intended for basic class skills, NOT Awakening skills. If you have Awakening skill values, send them to me, I'll see if I can find any builders online that have the values. Worst case scenario is that the data may need to be manually inputted, but this is quite rare.
Awakening Values
Awakening Skills cannot be decreased in level. However, with the Mathematical expression format, it is easier to use a growth formula to track these values rather than leveling a character manually every 5 levels. Instead, if you already have the class character at Lv. 85~90 to get the Lv 9 bonuses, you can create a level 15 character and record the base Awakening values there. Making multiple Lv 15 characters is unnecessary as you can "Try" out multiple different sub-classes and record the values there.
Testing Grounds
Test Timeline: Arad Adventure Era
Sort Testing
Maps:
{{#ask: [[Category:Metro Center Dungeons]] |format=list |sep= {{!}} |sort=Has dungeon entrance level requirement }}
Bloody Lane | Time Square | Valley of the Half-breeds | Chamber of Terror | Wind Canyon | Red Witch's Forest | Pandemonium Rift
{{#ask: [[Category:Metro Center Dungeons]][[Category:!Special Dungeons]] |format=list |sep= {{!}} |sort=Has dungeon entrance level requirement }}
Bloody Lane | Time Square | Valley of the Half-breeds | Chamber of Terror | Wind Canyon | Red Witch's Forest | Pandemonium Rift
NPCs:
{{#ask: [[Category:NPCs]][[Has location::Elvenguard]] |format=list |sep= {{!}} }}
Blacksmith Linus | Errand Runner Toby | Herbalist Shireen | Miraz, the Healer in the Forest
Template: Story Characters
Template: NpcList
Template: DungeonList - Old
[hide]Dungeons | |
---|---|
Lorien (LV 1~61) |
Lorien Forest (LV 1~2) • Lorien Hollow (LV 2~3) • Vilmark - Area 50(LV 55~58) • Screaming Cavern (LV 58~61)
|
Grand Flores (LV 3~16) |
Mirkwood (LV 3~5) • Mirkwood Hollow (LV 3~6) • Thunderland (LV 5~8) • Poison Thunderland (LV 7~10) • Mirkwood Frost (LV 8~11) • Grakqarak (LV 10~13) • Blazing Grakqarak (LV 12~15) • Shadow Thunderland (LV 14~17) • Full Moon Thunderland (LV 18)(Special)
|
Sky Tower (LV 16~28) |
Dragonoid Nest (LV 16~19) • Puppet Museum (LV 18~21) • Golem Tower (LV 20~23) • Vestibule of Darkness (LV 22~25) • Floating Castle (LV 24~27) • Castellan's Chamber (LV 25~28) • Middle Ocean (LV 18)(Special)
|
Moonlight Tavern (LV 50~53) |
Template: DungeonList - Great Metastasis
Template: DungeonList - Origins
[hide]Dungeons | |
---|---|
Grand Flores (LV 1~16) | Mirkwood | Thunderland | Poison Thunderland | Mirkwood Frost | Grakqarak | Blazing Grakqarak | Shadow Thunderland | Full Moon Thunderland (Special) | Vilmark - Area 50 (Scenario Only)
|
Hidden Text
Vilmark - Area 50
Image Slider
Boxed Text
- Level: n
- Lv Req: 1+2(n-1)
- MP: 6+0.568(n-1)
- Melee Atk.: 781%+79.273(n-1)% + 1.95max-width:200px 100+0.2max-width:200px 100(n-1)
- Lance Tip Atk.: 1027%+104.273(n-1)% + 2.57max-width:200px 100+0.26max-width:200px 100(n-1)
Number Calculator
Skill Option Calculator Display Pseudocode: Given a number n, calculates the given expressions.
- n must meet theses qualifications:
- It must be a positive Integer
- It must be greater than 1 and less than or equal to its max level (60)
Example:
n = 40
- Level: 40
- Lv Req: 79
- MP: 28
- Melee Atk.: 3873% + 9.67max-width:200px 100
- Lance Tip Atk.: 5094% + 12.75max-width:200px 100
Variable Tab Tester
{{#vardefine:a | 1 }}{{#vardefine:b | 50}} {{tabs |name=Values |tab1=n |contents1= *{{SkillAttribute|Level|n}} *{{SkillAttribute|Lv Req|1+2(n-1)}} *{{SkillAttribute|MP|6+0.568(n-1)}} *{{SkillAttribute|Melee Atk.|781%+79.273(n-1)% + {{AbsoluteDamage|3531|1811}}+{{AbsoluteDamage|358.909|1811}}(n-1)}} *{{SkillAttribute|Lance Tip Atk.|1027%+104.273(n-1)% + {{AbsoluteDamage|4654|1811}}+{{AbsoluteDamage|472.909|1811}}(n-1)}} |tab2=Min Lv. |contents2= *'''Level:''' {{#var:a}} *'''Lv Req:''' {{#expr: 1+2*({{#var:a}}-1) }} *'''MP:''' {{#expr: 6+0.568*({{#var:a}}-1) round 0}} *'''Melee Atk.:''' {{#expr: 781+79.273*({{#var:a}}-1) round 0}}% + {{AbsoluteDamage| {{#expr: 1.95+0.198*({{#var:a}}-1) }} | 1 }} *'''Lance Tip Atk.:''' {{#expr: 1027+104.273*({{#var:a}}-1) round 0}}% + {{AbsoluteDamage| {{#expr: 2.57+0.261*({{#var:a}}-1) }} | 1 }} |tab3=Max Lv. |contents3= *'''Level:''' {{#var:b}} *'''Lv Req:''' {{#expr: 1+2*({{#var:b}}-1) }} *'''MP:''' {{#expr: 6+0.568*({{#var:b}}-1) round 0}} *'''Melee Atk.:''' {{#expr: 781+79.273*({{#var:b}}-1) round 0}}% + {{AbsoluteDamage| {{#expr: 1.95+0.198*({{#var:b}}-1) }} | 1 }} *'''Lance Tip Atk.:''' {{#expr: 1027+104.273*({{#var:b}}-1) round 0}}% + {{AbsoluteDamage| {{#expr: 2.57+0.261*({{#var:b}}-1) }} | 1 }} }}
- Level: n
- Lv Req: 1+2(n-1)
- MP: 6+0.568(n-1)
- Melee Atk.: 781%+79.273(n-1)% + 1.95max-width:200px 100+0.2max-width:200px 100(n-1)
- Lance Tip Atk.: 1027%+104.273(n-1)% + 2.57max-width:200px 100+0.26max-width:200px 100(n-1)
Skill Expression Table Tests
User:Dfoplayer's #arrayprint of Quick Punto
{{#arraydefine:maxrow|1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}}<!--Create an array named "maxrow" and fill it with 30 values--> {|{{SkillTableHeader}} !Level !Lv Req !MP !Melee Atk. !Lance Tip Atk. {{#arrayprint:maxrow||@@@@|<!--Each item in array maxrow is now @@@@--> {{#vardefine:i|@@@@}}<!-- Move item to an actual variable we can use --> {{!}}- {{#ifexpr: {{#var:i}} = 30 | {{MaxSkillRow}} }} {{!}} <!--Level--> {{#var:i}} {{!}} <!--Lv Req--> {{#expr: 1+2*({{#var:i}}-1)}} {{!}} <!--MP--> {{#expr: 6+0.568*({{#var:i}}-1) round 0}} {{!}} <!--Melee Atk.--> {{#expr: 781+79.273*({{#var:i}}-1) round 0}}% + {{AbsoluteDamage| {{#expr: 1.95+0.198*({{#var:i}}-1) }} | 1 }} {{!}} <!--Lance Tip Atk.--> {{#expr: 1027+104.273*({{#var:i}}-1) round 0}}% + {{AbsoluteDamage| {{#expr: 2.57+0.261*({{#var:i}}-1) }} | 1 }} {{!}}- }} |}
Core Shield Test
{{#arraydefine:maxrow|1,2,3,4,5,6,7,8,9,10}}<!--Create an array named "maxrow" and fill it with 10 values--> {{#arraydefine:shieldhp|800,928,1239,1426,1637,1875,2141,2438,2770,3138}}<!--Create an array named "shieldhp" and fill it with 10 values--> {|{{SkillTableHeader}} !Level !Lv Req !MP !Shield HP !Shield Explosion Atk. {{#arrayprint:maxrow||@@@@|<!--Each item in array maxrow is now @@@@--> {{#vardefine:i|@@@@}}<!-- Move item to an actual variable we can use --> {{!}}- {{#ifexpr: {{#var:i}} = 10 | {{MaxSkillRow}} }} {{!}} <!--Level--> {{#var:i}} {{!}} <!--Lv Req--> {{#expr: 15+2*({{#var:i}}-1)}} {{!}} <!--MP--> {{#expr: 23+3.676*({{#var:i}}-1) round 0}} {{!}} <!--Shield HP--> {{#arrayindex:shieldhp| {{#expr: {{#var:i}}-1 }} }} {{!}} <!--Shield Explosion Atk.--> {{#ifexpr: {{#var:i}} < 3 | {{#expr: 2703+281.622*({{#var:i}}-1) round 0}}% | {{#expr: 3525+274.236*({{#var:i}}-3) round 0}}% }} {{!}}- }} |}
Level | Lv Req | MP | Shield HP | Shield Explosion Atk. |
---|---|---|---|---|
1 | 15 | 23 | 800 | 2703% |
2 | 17 | 27 | 928 | 2977% |
3 | 19 | 30 | 1239 | 3525% |
4 | 21 | 34 | 1426 | 3799% |
5 | 23 | 38 | 1637 | 4073% |
6 | 25 | 41 | 1875 | 4348% |
7 | 27 | 45 | 2141 | 4622% |
8 | 29 | 49 | 2438 | 4896% |
9 | 31 | 52 | 2770 | 5170% |
10 | 33 | 56 | 3138 | 5445% |
Note: For some odd reason, the skill has a one-time random double increment change at level 3, changing the Shield Explosion Atk. scalar growth from 274 to 548.
Blade Dance Test
{{#arraydefine:maxrow|1,2,3,4,5,6,7,8,9,10}}<!--Create an array named "maxrow" and fill it with 10 values--> {{#vardefine:cancelcount|2}}<!--Create variable "cancelcount" that holds the values of number of cancels--> {|{{SkillTableHeader}} !Level !Lv Req !Cancellable Count !Cancellation Count<br>Recovery Interval {{#arrayprint:maxrow||@@@@|<!--Each item in array maxrow is now @@@@--> {{#vardefine:i|@@@@}}<!-- Move item to an actual variable we can use --> {{!}}- {{#ifexpr: {{#var:i}} = 10 | {{MaxSkillRow}} }} {{!}} <!--Level--> {{#var:i}} {{!}} <!--Lv Req--> {{#expr: 15+3*({{#var:i}}-1)}} <!--Cancellable Count--> {{#ifexpr: {{#var:i}} mod 3 = 1 | {{!}} rowspan="3"{{!}}{{#var:cancelcount}}{{#vardefine:cancelcount|{{#expr: {{#var:cancelcount}} + 1 }} }} }} {{!}} <!--Cancellation Count Recovery Interval--> {{#expr: 11.1-((11.1-6.1)/9)*({{#var:i}}-1) round 1}} sec. {{!}}- }} |}
Level | Lv Req | Cancellable Count | Cancellation Count Recovery Interval |
---|---|---|---|
1 | 15 | 2 | 11.1 sec. |
2 | 18 | 10.5 sec. | |
3 | 21 | 10 sec. | |
4 | 24 | 3 | 9.4 sec. |
5 | 27 | 8.9 sec. | |
6 | 30 | 8.3 sec. | |
7 | 33 | 4 | 7.8 sec. |
8 | 36 | 7.2 sec. | |
9 | 39 | 6.7 sec. | |
10 | 42 | 5 | 6.1 sec. |
Holy Spear: Brionac Test
{{#arraydefine:maxrow|1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}}<!--Create an array named "maxrow" and fill it with 30 values--> {|{{SkillTableHeader}} !Level !Lv Req !MP !Spear Colliding Magical Atk. !Spear Explosion Magical Atk. {{#arrayprint:maxrow||@@@@|<!--Each item in array maxrow is now @@@@--> {{#vardefine:i|@@@@}}<!-- Move item to an actual variable we can use --> {{!}}- {{#ifexpr: 85+5*({{#var:i}}-1) = 90 | {{MaxSkillRow}} }} {{!}} <!--Level--> {{#var:i}} {{!}} <!--Lv Req--> {{#expr: 85+5*({{#var:i}}-1)}} {{!}} <!--MP--> {{#expr: 2500+((2628-2500)/2)*({{#var:i}}-1)}} {{!}} <!--Spear Colliding Magical Atk.--> {{AbsoluteDamage|{{#expr: (871046/2990)+(((1274995-871046)/2990)/2)*({{#var:i}}-1)}}|1}} {{!}} <!--Spear Explosion Magical Atk.--> {{AbsoluteDamage|{{#expr: (1306570/2990)+(((1912493-1306570)/2990)/2)*({{#var:i}}-1)}}|1}} {{!}}- }} |}
Level | Lv Req | MP | Spear Colliding Magical Atk. | Spear Explosion Magical Atk. |
---|---|---|---|---|
1 | 85 | 2500 | 291.32 max-width:200px 100
|
436.98 max-width:200px 100
|
2 | 90 | 2564 | 358.87 max-width:200px 100
|
538.3 max-width:200px 100
|
3 | 95 | 2628 | 426.42 max-width:200px 100
|
639.63 max-width:200px 100
|
4 | 100 | 2692 | 493.97 max-width:200px 100
|
740.95 max-width:200px 100
|
5 | 105 | 2756 | 561.52 max-width:200px 100
|
842.28 max-width:200px 100
|
6 | 110 | 2820 | 629.07 max-width:200px 100
|
943.6 max-width:200px 100
|
7 | 115 | 2884 | 696.62 max-width:200px 100
|
1044.93 max-width:200px 100
|
8 | 120 | 2948 | 764.17 max-width:200px 100
|
1146.25 max-width:200px 100
|
9 | 125 | 3012 | 831.72 max-width:200px 100
|
1247.58 max-width:200px 100
|
10 | 130 | 3076 | 899.27 max-width:200px 100
|
1348.9 max-width:200px 100
|
11 | 135 | 3140 | 966.82 max-width:200px 100
|
1450.23 max-width:200px 100
|
12 | 140 | 3204 | 1034.37 max-width:200px 100
|
1551.55 max-width:200px 100
|
13 | 145 | 3268 | 1101.92 max-width:200px 100
|
1652.88 max-width:200px 100
|
14 | 150 | 3332 | 1169.47 max-width:200px 100
|
1754.2 max-width:200px 100
|
15 | 155 | 3396 | 1237.02 max-width:200px 100
|
1855.53 max-width:200px 100
|
16 | 160 | 3460 | 1304.57 max-width:200px 100
|
1956.85 max-width:200px 100
|
17 | 165 | 3524 | 1372.12 max-width:200px 100
|
2058.18 max-width:200px 100
|
18 | 170 | 3588 | 1439.67 max-width:200px 100
|
2159.5 max-width:200px 100
|
19 | 175 | 3652 | 1507.22 max-width:200px 100
|
2260.83 max-width:200px 100
|
20 | 180 | 3716 | 1574.77 max-width:200px 100
|
2362.15 max-width:200px 100
|
21 | 185 | 3780 | 1642.32 max-width:200px 100
|
2463.48 max-width:200px 100
|
22 | 190 | 3844 | 1709.87 max-width:200px 100
|
2564.8 max-width:200px 100
|
23 | 195 | 3908 | 1777.42 max-width:200px 100
|
2666.13 max-width:200px 100
|
24 | 200 | 3972 | 1844.97 max-width:200px 100
|
2767.45 max-width:200px 100
|
25 | 205 | 4036 | 1912.52 max-width:200px 100
|
2868.78 max-width:200px 100
|
26 | 210 | 4100 | 1980.07 max-width:200px 100
|
2970.1 max-width:200px 100
|
27 | 215 | 4164 | 2047.62 max-width:200px 100
|
3071.43 max-width:200px 100
|
28 | 220 | 4228 | 2115.17 max-width:200px 100
|
3172.75 max-width:200px 100
|
29 | 225 | 4292 | 2182.72 max-width:200px 100
|
3274.08 max-width:200px 100
|
30 | 230 | 4356 | 2250.27 max-width:200px 100
|
3375.4 max-width:200px 100
|
Scud Genocide Test
{{#arraydefine:maxrow|1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}}<!--Create an array named "maxrow" and fill it with 30 values--> {|{{SkillTableHeader}} !rowspan="2"|Level !rowspan="2"|Lv Req !rowspan="2"|MP !rowspan="2"|Movement Speed !colspan="2"|Bullet Barrage !rowspan="2"|Aerial Movement Speed !colspan="2"|Aerial Fire !rowspan="2"|Shockwave Physical Atk. |- !Physical Atk.||Attack Count !Physical Atk.||Attack Count {{#arrayprint:maxrow||@@@@|<!--Each item in array maxrow is now @@@@--> {{#vardefine:i|@@@@}}<!-- Move item to an actual variable we can use --> {{!}}- {{#ifexpr: 50+5*({{#var:i}}-1) = 90 | {{MaxSkillRow}} }} {{!}} <!--Level--> {{#var:i}} {{!}} <!--Lv Req--> {{#expr: 50+5*({{#var:i}}-1)}} {{!}} <!--MP--> {{#expr: 1000+((2897-1000)/10)*({{#var:i}}-1) round 0}} {{!}} <!--Movement Speed--> {{#ifexpr: {{#var:i}} < 3 | +{{#expr: 3.9*({{#var:i}}-1)}}% | +{{#expr: 15.5+3.9*({{#var:i}}-3)}}% }} <!-- --> <!--Bullet Barrage--> {{!}} <!--Physical Atk.--> {{#expr: 391+((1300-391)/10)*({{#var:i}}-1) round 0}}% <!--Attack Count--> {{#ifexpr: {{#var:i}} = 1 | {{!}}rowspan="2"{{!}} 20~30 x2 }} {{#ifexpr: {{#var:i}} = 3 |{{!}}rowspan="28"{{!}} 20~35 x2 }} <!-- --> {{!}} <!--Aerial Movement Speed--> {{#ifexpr: {{#var:i}} < 6 | {{#expr: 40-2.6*({{#var:i}}-1)}}% | {{#expr: 19.3-2.6*({{#var:i}}-6)}}% }} <!-- --> <!--Aerial Fire--> {{!}} <!--Physical Atk.--> {{#expr: 762+((2529-762)/10)*({{#var:i}}-1) round 0}}% <!--Attack Count--> {{#ifexpr: {{#var:i}} = 1 | {{!}}rowspan="5"{{!}} 14~21 }} {{#ifexpr: {{#var:i}} = 6 |{{!}}rowspan="25"{{!}} 14~25 }} <!-- --> {{!}} <!--Shockwave Physical Atk.--> {{#expr: 464+((1542-464)/10)*({{#var:i}}-1) round 0}}% {{!}}- }} |}
Level | Lv Req | MP | Movement Speed | Bullet Barrage | Aerial Movement Speed | Aerial Fire | Shockwave Physical Atk. | ||
---|---|---|---|---|---|---|---|---|---|
Physical Atk. | Attack Count | Physical Atk. | Attack Count | ||||||
1 | 50 | 1000 | +0% | 391% | 20~30 x2 | 40% | 762% | 14~21 | 464% |
2 | 55 | 1190 | +3.9% | 482% | 37.4% | 939% | 572% | ||
3 | 60 | 1379 | +15.5% | 573% | 20~35 x2 | 34.8% | 1115% | 680% | |
4 | 65 | 1569 | +19.4% | 664% | 32.2% | 1292% | 787% | ||
5 | 70 | 1759 | +23.3% | 755% | 29.6% | 1469% | 895% | ||
6 | 75 | 1949 | +27.2% | 846% | 19.3% | 1646% | 14~25 | 1003% | |
7 | 80 | 2138 | +31.1% | 936% | 16.7% | 1822% | 1111% | ||
8 | 85 | 2328 | +35% | 1027% | 14.1% | 1999% | 1219% | ||
9 | 90 | 2518 | +38.9% | 1118% | 11.5% | 2176% | 1326% | ||
10 | 95 | 2707 | +42.8% | 1209% | 8.9% | 2352% | 1434% | ||
11 | 100 | 2897 | +46.7% | 1300% | 6.3% | 2529% | 1542% | ||
12 | 105 | 3087 | +50.6% | 1391% | 3.7% | 2706% | 1650% | ||
13 | 110 | 3276 | +54.5% | 1482% | 1.1% | 2882% | 1758% | ||
14 | 115 | 3466 | +58.4% | 1573% | -1.5% | 3059% | 1865% | ||
15 | 120 | 3656 | +62.3% | 1664% | -4.1% | 3236% | 1973% | ||
16 | 125 | 3846 | +66.2% | 1755% | -6.7% | 3413% | 2081% | ||
17 | 130 | 4035 | +70.1% | 1845% | -9.3% | 3589% | 2189% | ||
18 | 135 | 4225 | +74% | 1936% | -11.9% | 3766% | 2297% | ||
19 | 140 | 4415 | +77.9% | 2027% | -14.5% | 3943% | 2404% | ||
20 | 145 | 4604 | +81.8% | 2118% | -17.1% | 4119% | 2512% | ||
21 | 150 | 4794 | +85.7% | 2209% | -19.7% | 4296% | 2620% | ||
22 | 155 | 4984 | +89.6% | 2300% | -22.3% | 4473% | 2728% | ||
23 | 160 | 5173 | +93.5% | 2391% | -24.9% | 4649% | 2836% | ||
24 | 165 | 5363 | +97.4% | 2482% | -27.5% | 4826% | 2943% | ||
25 | 170 | 5553 | +101.3% | 2573% | -30.1% | 5003% | 3051% | ||
26 | 175 | 5743 | +105.2% | 2664% | -32.7% | 5180% | 3159% | ||
27 | 180 | 5932 | +109.1% | 2754% | -35.3% | 5356% | 3267% | ||
28 | 185 | 6122 | +113% | 2845% | -37.9% | 5533% | 3375% | ||
29 | 190 | 6312 | +116.9% | 2936% | -40.5% | 5710% | 3482% | ||
30 | 195 | 6501 | +120.8% | 3027% | -43.1% | 5886% | 3590% |
Generic Skill Growth Formatting
Some Unnecessarily Long Prefix Awesomely Named Skill
{{#arraydefine:maxrow|1,2,3,4,5,6,7,8,9,10}} <!--Create an array named "maxrow" and fill it with 10 values. Extend array and add values if necessary--> {|{{SkillTableHeader}} !Level !Lv Req !MP !Skill 1 Atk. !Skill 2 Atk. !Skill 3 Atk. !Skill Charge Time {{#arrayprint:maxrow||@@@@|<!--Each item in array maxrow is now @@@@ ~~~ DO NOT CHANGE ~~~ --> {{#vardefine:i|@@@@}}<!-- Move item to an actual variable we can use ~~~ DO NOT CHANGE ~~~ --> {{!}}- {{#ifexpr: {{#var:i}} = 10 | {{MaxSkillRow}} }} <!-- DEFAULT: Detect max level at certain skill level --> <!-- {{!}}- {{#ifexpr: 50+5*({{#var:i}}-1) = 90 | {{MaxSkillRow}} }}--> <!-- Detect for level cap--> {{!}} <!--Level--> {{#var:i}} {{!}} <!--Lv Req--> {{#expr: 50+5*({{#var:i}}-1)}} {{!}} <!--MP--> {{#expr: 100+((1000-100)/(10-1))*({{#var:i}}-1) round 0}} {{!}} <!--Skill 1 Atk.--> {{#expr: 100+((1000-100)/(10-1))*({{#var:i}}-1) round 0}}% {{!}} <!--Skill 2 Atk.--> {{#expr: 100+((1000-100)/(10-1))*({{#var:i}}-1) round 0}}% + {{AbsoluteDamage|{{#expr: (100/1000)+(((1000-100)/1000)/(10-1))*({{#var:i}}-1)}}|1}} {{!}} <!--Skill 3 Atk.--> {{AbsoluteDamage|{{#expr: (1000000/1000)+(((10000000-1000000)/1000)/(10-1))*({{#var:i}}-1)}}|1}} {{!}} <!--Skill Charge Time--> {{#expr: 10+((1-10)/(10-1))*({{#var:i}}-1) round 0}} sec. {{!}}- }} |}
- Note: Most skill growth expressions follow an Arithmetic Sequence.
- In most cases, skills follow this growth format:
{{#expr: BASELvVALUE+((MAXLvVALUE-BASELvVALUE)/(MAXLv-BASELv))*({{#var:i}}-1)}}
- Ex: Let's say a skill's mana follows this growth pattern:
100, 200, 300, 400, 500, 600, 700, 800, 900, 1000
up to level 10. As you can see, the skill has a constant growth of 100 per level.- In this case, the mana follows this mathematical expression:
{{#expr: 100+((1000-100)/(10-1))*({{#var:i}}-1)}}
- In this case, the mana follows this mathematical expression:
- If you wish to round the values to the nearest whole number/decimal place, add a
round 0
before the end of the}}
for the#expr:
template. Increase or decrease the rounding number to adjust the rounding of specified decimal place. - Scenario: What if the skill is decreasing rather than increasing?
- Switch the plus to a minus like so:
{{#expr: BASELvVALUE-((MAXLvVALUE-BASELvVALUE)/(MAXLv-BASELv))*({{#var:i}}-1)}}
- Switch the plus to a minus like so:
- Scenario: What if the skill has no base value?
- Remove the
-1
from the variable "i" along with unnecessary parenthesis like so:{{#expr: BASELvVALUE+((MAXLvVALUE-BASELvVALUE)/(MAXLv-BASELv))*{{#var:i}}}}
- Remove the
- Ex: Let's say a skill's mana follows this growth pattern:
- For skills that scale with Independent Attack use the following format:
{{AbsoluteDamage|{{#expr: (BASELvVALUE/INDEPENDENTATK)+(((MAXLvVALUE-BASELvVALUE)/INDEPENDENTATK)/(MAXLv-BASELv))*({{#var:i}}-1) }}|1}}
- In most cases, skills follow this growth format:
- Note: There are rare occasions when a skill will follow a Geometric Sequence.
- In these cases, they tend to follow this format:
{{#expr: BASELvVALUE*(NEXTLvVALUE/BASELvVALUE)^({{#var:i}}-1)}}
- Ex: For the skill,
Spectral Search Eye, part of its Enemy Evasion Rate-reduction Range follows the growth expression: 400(0.7)(i-1).
- The skill's BASELvValue (Lv 1 value) is 400. It's NEXTLvVALUE (Lv 2 value) is 280. (FYI: 280/400 = 0.7).
- For consistency reasons, the format is shown as follows:
{{#expr: 400*(280/400)^({{#var:i}}-1)}}
- Ex: For the skill,
- In these cases, they tend to follow this format:
From the code shown above, it will display the following table.
Level | Lv Req | MP | Skill 1 Atk. | Skill 2 Atk. | Skill 3 Atk. | Skill Charge Time |
---|---|---|---|---|---|---|
1 | 50 | 100 | 100% | 100% + 0.1 max-width:200px 100
|
1000 max-width:200px 100
|
10 sec. |
2 | 55 | 200 | 200% | 200% + 0.2 max-width:200px 100
|
2000 max-width:200px 100
|
9 sec. |
3 | 60 | 300 | 300% | 300% + 0.3 max-width:200px 100
|
3000 max-width:200px 100
|
8 sec. |
4 | 65 | 400 | 400% | 400% + 0.4 max-width:200px 100
|
4000 max-width:200px 100
|
7 sec. |
5 | 70 | 500 | 500% | 500% + 0.5 max-width:200px 100
|
5000 max-width:200px 100
|
6 sec. |
6 | 75 | 600 | 600% | 600% + 0.6 max-width:200px 100
|
6000 max-width:200px 100
|
5 sec. |
7 | 80 | 700 | 700% | 700% + 0.7 max-width:200px 100
|
7000 max-width:200px 100
|
4 sec. |
8 | 85 | 800 | 800% | 800% + 0.8 max-width:200px 100
|
8000 max-width:200px 100
|
3 sec. |
9 | 90 | 900 | 900% | 900% + 0.9 max-width:200px 100
|
9000 max-width:200px 100
|
2 sec. |
10 | 95 | 1000 | 1000% | 1000% + 1 max-width:200px 100
|
10000 max-width:200px 100
|
1 sec. |
If you wish to alter the span of certain rows or columns, please refer to the given examples below.
Blade Dance Test
{{#arraydefine:maxrow|1,2,3,4,5,6,7,8,9,10}}<!--Create an array named "maxrow" and fill it with 10 values-->{{#vardefine:cancelcount|2}}<!--Create variable "cancelcount" that holds the values of number of cancels--> {|{{SkillTableHeader}} !Level !Lv Req !Cancellable Count !Cancellation Count<br>Recovery Interval {{#arrayprint:maxrow||@@@@|<!--Each item in array maxrow is now @@@@--> {{#vardefine:i|@@@@}}<!-- Move item to an actual variable we can use --> {{!}}- {{#ifexpr: {{#var:i}} = 10 | {{MaxSkillRow}} }} {{!}} <!--Level--> {{#var:i}} {{!}} <!--Lv Req--> {{#expr: 15+3*({{#var:i}}-1)}} <!--Cancellable Count--> {{#ifexpr: {{#var:i}} mod 3 = 1 | {{!}} rowspan="3"{{!}}{{#var:cancelcount}}{{#vardefine:cancelcount|{{#expr: {{#var:cancelcount}} + 1 }} }} }} {{!}} <!--Cancellation Count Recovery Interval--> {{#expr: 11.1-((11.1-6.1)/9)*({{#var:i}}-1) round 1}} sec. {{!}}- }} |}
Level | Lv Req | Cancellable Count | Cancellation Count Recovery Interval |
---|---|---|---|
1 | 15 | 2 | 11.1 sec. |
2 | 18 | 10.5 sec. | |
3 | 21 | 10 sec. | |
4 | 24 | 3 | 9.4 sec. |
5 | 27 | 8.9 sec. | |
6 | 30 | 8.3 sec. | |
7 | 33 | 4 | 7.8 sec. |
8 | 36 | 7.2 sec. | |
9 | 39 | 6.7 sec. | |
10 | 42 | 5 | 6.1 sec. |
This example, creates a span of rows that updates the Cancellation Count every 3 levels, starting at level 1. To do this, it requires some general knowledge about If then/Else statements. To read more about this, refer to this link.
- Generally, If then/Else Statements follow this format:
- If a specified condition is met, then something happens. Otherwise, something Else happens.
- For this particular scenario, we are testing an expression, so we will be using the Mediawiki
#ifexpr:
function.{{#ifexpr: CONDITION | THEN: value if CONDITION is true | ELSE: value if CONDITION is false }}
- The condition we want is for the table to show and update the Cancellation Count once every 3 levels.
- To do this, we must first instantiate a variable that holds our default number for the Cancellation Count. This can be done with the following code:
{{#vardefine:cancelcount|2}}
Note: Make sure that this variable is instantiated outside and before the#arrayprint
function. - As for the condition, we must find the first row of every three rows. It can be coded as follows:
{{#var:i}} mod 3 = 1
- The mathematical operation we are using is called "modulo", it finds the remainder of the dividend and the divisor.
- It can be particularly useful when finding odd or even values. For example: for some integer value "x", if x mod 2 = 1, then x is odd. If x mod 2 = 0, then x is even.
- The "3" represents the every three levels, and the "1" represents the first row of each 3 levels.
- If we wanted to find the second row, we'd use the condition:
{{#var:i}} mod 3 = 2
- If we wanted to find the third row, we'd use the condition:
{{#var:i}} mod 3 = 0
- If we wanted to find the second row, we'd use the condition:
- The mathematical operation we are using is called "modulo", it finds the remainder of the dividend and the divisor.
- Now that we have our condition, we can find our THEN, what we want to happen when the condition is met. We want the table to output a column that takes up three rows and displays the Cancellation Count. To do this, we can use the following code:
{{!}} rowspan="3"{{!}}{{#var:cancelcount}}{{#vardefine:cancelcount|{{#expr: {{#var:cancelcount}} + 1}} }}
{{!}}
Generates a new column.rowspan="3"{{!}}{{#var:cancelcount}}
Generates a column that takes up 3 rows, and outputs the Cancellation Count once.{{#vardefine:cancelcount|{{#expr: {{#var:cancelcount}} + 1}}
Increments Cancellation Count, it's basically the same as typing the following in other computing languages:cancelcount = cancelcount + 1
- Since we don't want the table to output anything for the ELSE, we leave it blank. Thus we get the final line of code:
{{#ifexpr: {{#var:i}} mod 3 = 1 | {{!}} rowspan="3"{{!}}{{#var:cancelcount}}{{#vardefine:cancelcount|{{#expr: {{#var:cancelcount}} + 1 }} }} }}
- To do this, we must first instantiate a variable that holds our default number for the Cancellation Count. This can be done with the following code: