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

From DFO World Wiki
Jump to: navigation, search
Altair
Pumpkin Ball.png
Server DFOG - Cain
Explorer Club Lorekeeper
Discord 彦星#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.

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.
      • 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
  • 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
  • Expicon.png Experience points rewarded (just the number) Exp
  • Goldicon.png Gold rewarded (just the number) Gold
  • Bulleted list (*) of any other 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

Navigation Templates

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

Dfoplayer's Updated DungeonNav Template

Dungeons
Grand Flores (LV 1~16)
Sky Tower (LV 17~23)
Behemoth (LV 24~29)
Aphelia (LV 30~35)
Noire Ferra (LV 36~39)
Mount Thunderime (LV 40~45)
North Myre (LV 46~49)
Abnova (LV 50~53)
Meltdown (LV 54~57)
Inverted Waterfall (LV 57~62)
Antwer Canyon (LV 63~70)
Oceanic Express (LV 71~74)
Time Gate (LV 75~80)
Power Station (LV 81~83)
Anton (LV 84~85)
Castle of the Dead (LV 85~86)
Luke's Laboratory (LV 87~90)
Metro Center (LV 87~90)
Guild Dungeon (LV 1~90)
Golden Road (LV 25~90)
Valley of Fallen Souls (LV 50~90)
Interdimensional Rift (LV 70~90)
Suju Arena (LV 75)
Mt. Kulun (LV 87~90)
Pandemonium Junction (LV 90)

Template: Story Characters

Story Characters
Apostles CainHilderIsis-FreyKasijasSiroccoDelezieAntonLotusBakalLukeOzmaMichael
De Los Empire Emperor LeonLennyKaneAslanEmilyReneeGlamDorothyKardinArinPokinLeslie BagransHelen BadenMoen
Principality of Bel Myre DelilahGaleBreezeMyreSivHiman StellaLouie
Fennes Kingdom RoxyVallacreGoontramLungelS'hallaBadorDevianaJurcrassRunbertGalion
Seventh Empire NeilRebeccaBiyanKonMaywinHulkMueBilmotzAudreyKa'atuCurioO'ConnellLainiRake
Bantu GolgolionCharlieAvalanche Ravinhur
Priest Order Nilvas GraciaMagar RosenbachOberith RosenbachTeida BeonarrSin-JangShapiro GraciaMilan RosenbachWolfgang BeonarrSin-Ya
Grim Seeker SoldorosYang-UllSura Von CrossburyKuran
Kartel RangelusEnzo SipoGizel LoganJericho CrawfordGargan PeyoIrigare
Elves Ilia
Magical Factions SarpozaRicardoMonicaIkiPhilip LumVon RonLaura
Spider Kingdom NicholasAngelinaBaboon
Ghosts KazanZiegSayaJohnBremenKeigaRhasaKallaBlache
Great Dragons HismarSpirazziSkasa
Gods CarlosoTeanaMehmet
Other Fearful AstarosDespairing TiamatDestructive BeriasBinocheKerahaSayoungDreyfusNueTanictarVartarucisSieghart

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)
Moonlight Tavern (LV 50~53)Moonlight Trial (LV 18)(Special)Moonlight Trial (LV 48)(Special)

Template: DungeonList - Great Metastasis

Template: DungeonList - Origins

Dungeons
Grand Flores (LV 1~16)

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)}}
      • 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)}}
    • For skills that scale with Independent Attack use the following format:
      {{AbsoluteDamage|{{#expr: (BASELvVALUE/INDEPENDENTATK)+(((MAXLvVALUE-BASELvVALUE)/INDEPENDENTATK)/(MAXLv-BASELv))*({{#var:i}}-1) }}|1}}
  • 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.png 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)}}


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
    • 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 }} }} }}

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:.
{{#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>
}}

{{

{{

Insert Slayer/Knight/Dark Knight Weapon List Here

}}
}}