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!
User:Altair
Altair | |
---|---|
Server | DFOG - Cain
|
Explorer Club | Lorekeeper
|
Discord | 彦星#2353
|
- PRIORITY:
- DFO Lore Project
- Translating Lore Episodes
- Updating Skill Pages
- Origin Quests
- DFO Lore Project
- ON HOLD
- Updating NPC merchants and adding their items.
- Adding Cards/Beads/Emblems to Item list template.
- Exclusive Quests for Dark Knight, Creator subclasses
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
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.
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.
- Niceboatsoss's Naver Blog: link
- Arad Senki Wiki: link
- Namu Wiki: link (Warning: Pages may contain subjective/incorrect information.)
- CDnF Wiki: link
- CDnF Wikia: link
- KDnF Nexon Site: link
- KDnF Neople Developers APIDocs: 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.
Sources of Info
For certain cases, you may want to reference the Neople Developers API Documents. It contains all the skill information located in the Script.pvf file that is currently LIVE on the KDnF server. In order to access the Neople API, you'll need an APIKey, which can be obtained by registering an account via Facebook, Google, or Naver account. Afterward, use the last two document options located on the page to find what you are looking for. That being said, you'll need to be able to translate some Hangul to be able to read/match some of the information properly.
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 | Pandemonium Rift | Red Witch's Forest
{{#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 | Pandemonium Rift | Red Witch's Forest
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: DungeonList - Old
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
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)
|
Generic Skill Growth Formatting
This process uses a "simulated" loop to automatically generate individual values for a skill when given a specified growth expression.
Why are we doing this?
As of recent years, the wiki has gotten more and more out-of-date due to various in-game updates. With these updates came balance patches which updated a multitude of class skills. In order to minimize time consumption for each page and to preserve wiki editor sanity, we have opted to using a method that auto-generates information rather than manually inputting individual values.
Due to this format, pages can be updated much more quickly. When a new balance patch arrives, editors only have to update the values of the skill growth expression.
To learn more about the formatting, please reference the information below.
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 has no base value?
- Do the following:
{{#expr: ((MAXLvVALUE)/(MAXLv-BASELv))*({{#var:i}}-1)}}
- Do the following:
- 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, Spectral Search Eye, part of its Enemy Evasion Rate-reduction Range follows the growth expression: 400(0.7)(i-1).
- 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)/(10-1))*({{#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:
Scud Genocide Test
This example uses formatting to adjust the span of columns and rows, as well as uses If then/Else statements to output various attribute information. Unlike the Blade Dance Test, this example has an ELSE value.
{{#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)/(11-1))*({{#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)/(11-1))*({{#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)/(11-1))*({{#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)/(11-1))*({{#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% |
Core Shield Test
Since the #arrayprint:
function simulates a loop, we are not able to manually input values in a desired column. However, there is a work around. We can save the values we want to input in a column into a second array. In this case, we can call this second array shieldhp
. We can reference this array for every index "i" that is called in the #arrayprint:
function using the code:
{{!}} <!--Shield HP--> {{#arrayindex:shieldhp| {{#expr: {{#var:i}}-1 }} }}
- Note: It is important to have the "-1" in the code because information that is stored in slots (indexes) in an Array always start at index 0, and not 1.
- For those who are unfamiliar with Arrays or are interested about learning more about Arrays, look here for Mediawiki's usage.
- Think of an Array as a line of numbered parking stalls. Within each stall or "index" can be parked a car with "information". You can fill these parking stalls with cars that have information when instantiating the Array like so:
{{#arraydefine:shieldhp|800,928,1239,1426,1637,1875,2141,2438,2770,3138}}
This array has a size of 10 indeces (stalls), numbered from 0 to 9. - We can also reference a specific stall number (index) to obtain that stall number's car information. To do this, we can use the Mediawiki function
#arrayindex:
. If we wanted to output the whole array or the entire list of car information, we use the function#arrayprint:
.
- Think of an Array as a line of numbered parking stalls. Within each stall or "index" can be parked a car with "information". You can fill these parking stalls with cars that have information when instantiating the Array like so:
{{#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.
- If this occurs, you can use an If then/Else function to remedy this situation.
Tabs Tester
{{tabs |name=Shop |tab1=Weapon |contents1=<span style="display: none;">{{</span> <!-- Weapon List --> {{tabs |name=WeaponType |tab1=Slayer |contents1=<span style="display: none;">{{</span> Insert Slayer/Knight/Dark Knight Weapon List Here <span style="display: none;">}}</span> |tab2=Fighter |contents2=<span style="display: none;">{{</span> Insert Fighter Weapon List Here <span style="display: none;">}}</span> |tab3=Gunner |contents3=<span style="display: none;">{{</span> Insert Gunner Weapon List Here <span style="display: none;">}}</span> |tab4=Mage |contents4=<span style="display: none;">{{</span> Insert Mage Weapon List Here <span style="display: none;">}}</span> |tab5=Priest |contents5=<span style="display: none;">{{</span> Insert Priest Weapon List Here <span style="display: none;">}}</span> |tab6=Thief |contents6=<span style="display: none;">{{</span> Insert Thief Weapon List Here <span style="display: none;">}}</span> |tab7=D. Lancer |contents7=<span style="display: none;">{{</span> Insert D. Lancer Weapon List Here <span style="display: none;">}}</span> |tab8=Agent |contents8=<span style="display: none;">{{</span> Insert Agent Weapon List Here <span style="display: none;">}}</span> }} <!-- Armor List --> <span style="display: none;">}}</span> |tab2=Armor |contents2=<span style="display: none;">{{</span> {{tabs |name=ArmorType |tab1=Cloth |contents1=<span style="display: none;">{{</span> Insert Cloth Armor List Here <span style="display: none;">}}</span> |tab2=Leather |contents2=<span style="display: none;">{{</span> Insert Leather Armor List Here <span style="display: none;">}}</span> |tab3=Light |contents3=<span style="display: none;">{{</span> Insert Light Armor List Here <span style="display: none;">}}</span> |tab4=Heavy |contents4=<span style="display: none;">{{</span> Insert Heavy Armor List Here <span style="display: none;">}}</span> |tab5=Plate |contents5=<span style="display: none;">{{</span> Insert Plate Armor List Here <span style="display: none;">}}</span> }} <!-- Accessory List --> <span style="display: none;">}}</span> |tab3=Accessory |contents3=<span style="display: none;">{{</span> Insert Accessory List Here <!-- Special Equipment List --> <span style="display: none;">}}</span> |tab4=Special Equipment |contents4=<span style="display: none;">{{</span> Insert Special Equipment List Here <span style="display: none;">}}</span> }}