# Dragon Knight Below is the current project documentation. ## Attributes ### Power Power is the attribute that determines overall strike damage. Damage from weapon attacks, spells, or other strikes and specific skills will be directly influenced by Power. Power is a linear measure, with 1 Power = 1 damage in most cases. ### Accuracy Accuracy determines the chance your attack, spell, or other skill will actually land on your opponent. ### Penetration Penetration as a value determines your ability to make it through physical defenses; i.e. the enemy's Toughness and Armor. ### Focus Focus is the same as Penetration but for causing magical damage, and helps go through magical defenses; i.e. the enemy's Resist. ### Evasion Evasion is the attribute responsible for determining your chance to dodge any kind of attack. When calculating the chance, at base every 2 Evasion is 0.1% chance. The enemy's Accuracy negatively impacts this stat. The chance to dodge is capped at 85%. ### Toughness Toughness affects your health pool and baseline defensive capability to physical attacks, such as weapons, projectiles, and physical skills. ### Armor Armor is an additional layer of physical protection over Toughness. All armor grants some level of Armor, and it's effect is linear; 1 Armor = 1 point of damage negated. ### Resist Resist is your defensive capacity against magic such as spells, magic skills, and magic weapons. Like Armor, this is a linear stat. ### Precision Precision determines your Uber (Critical) Hit chance. In general, 2 points of Precision = 0.1% chance. No matter how high this value, your Uber Hit chance caps at 90%. Some equipment grants straight Uber Hit chance. ### Ferocity Ferocity is a linear modifier of your Uber Hit damage; 1 Ferocity = 1% Uber Hit damage. Uber Hit damage increases cap at 300%. ### Luck Luck is a modifier for gained XP/Silver. Like Precision, 2 points of Luck = 0.1% increase of these gains. ## Tooltip The tooltip library is Isotip, taken and modified by Sharkk! Here is the breakdown of the API. Configuring a specific tooltip is done via data attributes on an element. ### **`data-tooltip-classname`** If you'd like to add a classname to the root tooltip element, set it here. ### **`data-tooltip-content`** This sets the main body content of the tooltip into a `

` tag by default with a class of `tooltip-content`. Content is interpreted as plain text by default. To insert html, set the data-tooltip-html attribute to true. ### **`data-tooltip-title`** This sets the title of the tooltip into a `

` tag by default with a class of `tooltip-title`. ### **`data-tooltip-html`** Setting this to true will force Isotip to try and interpret the content as HTML. If it fails, it will interpret the content as plain text. ### **`data-tooltip-placement`** This sets the position of the tooltip. Options are `top`, `right`, `bottom`, and `left`. By default, `top` is used for all tooltips. ### **`data-tooltip-container`** This sets the element that the tooltip will be prepended to. By default, this is the `` element. Alternatively, programattic creation and destruction of tooltips is available. ### **`data-tooltip-scrollContainer`** This sets the element that will have a scroll event bound to it. If your tooltip is inside a scrolling element (`overflow:scroll`), you need to add this!. ### **`data-tooltip-autoclose`** If set to false, the tooltip will *not* close unless you do so programmatically with `isotip.close()`. Normal tooltips will not open until the open one has been closed! ### **`init( config )`** The init method provides automatic event binding for tooltips. It sets up delegated event listeners for `.tooltip-click`, `.tooltip-hover`, and `.tooltip-focus` for click, mouseover, and focus events respectively. You can pass in an optional config object to overwrite any of the default options. ```javascript var options = { html: false, // set to true to always interpret content as HTML placement: 'top', // default placement of tooltips container: 'body', // default containing element for the tooltip scrollContainer: '.scroll-container', // default container for scroll watching template: '

', // default template for the tooltip shell removalDelay: 200, // default number of ms before the tooltip is removed tooltipOffset: 10, // default number of px the tooltip is offset from the trigger element windowPadding: { // window bounds for tooltip repositioning top: 10, right: 10, bottom: 10, left: 10 } }; Tooltip.init( config ); ``` ### **`open( trigger, config )`** The open method will create the tooltip, insert it into the DOM, and position it in relation to it's trigger. The trigger can be an element or a CSS selector. The object to be passed in will serve as a replacement for the data attributes on the trigger. ```javascript var config = { className: 'specific-class', // set to add a class to the tooltip html: false, // set to true to interpret content as HTML placement: 'top', // where to place the tooltip in relation to the trigger content: 'Tooltip content', // the content to go into the tooltip, title: 'Tooltip title', // the text to go in the title, if any container: document.querySelector('.container'), // the container to append the tooltip to scrollContainer: document.querySelector('.scroll-container'), // the container to bind the scroll event to autoClose: false // set to false if you only want to close the tooltip programmatically. Normal tooltips won't open until the open one has been closed! }; Tooltip.open( '.tooltip', config ); ``` ### **`close( tooltip )`** The close method will remove a tooltip from the DOM. The tooltip to remove should be passed in and can be an element or a CSS selector. ```javascript Tooltip.close( '.tooltip' ); ``` ### **`positionTooltip( tooltip, trigger, placement )`** The positionTooltip method will re-evaluate the position of a tooltip in relation to it's trigger element. Only the tooltip and trigger need to be passed in, and placement will default to what's been configured by `init()`. Tooltip and trigger can be either an element or a CSS selector. ```javascript Tooltip.positionTooltip( '.tooltip', '.tooltip-click', 'left' ); ``` ## CAPTCHA Here is some example code for implementing a CAPTCHA, using the gd extension to create a server-rendered, randomized image. ```php ``` https://github.com/kawaiidesune/zxx