documenting features; updating milestones

master
chimchooree 2 years ago
parent 41f43c8ac7
commit dce9e420da

@ -1,13 +1,10 @@
<h2>description </h2>
<p>Entities need IDs for serving translations (even English is pulled in through the TranslationServer) and judging comparisons. <br></p>
<br>
<p>Entities need IDs for serving translations (even English is pulled in through the TranslationServer) and judging comparisons. </p>
<h2>structure </h2>
<h3>translation key </h3>
<p>Translation IDs are 6-or-8-character strings. I like for them to use letters and follow a pattern, so random words can bubble up through the babble. <br></p>
<br>
<p>TL keys are 6 characters (favoring letters), and "de" is prefixed for their description. The first 2 letters indicate the category, while the last 4 indicate the individual. The last four are kind of freeform, usually the first 2 letters of each word of the English display name. If it's only one word, then it's its first 4 letters. If it's too short, "a" is suffixed for padding. If that pattern would recreate an existing code, I smudge which significant name characters are taken. If "a" is already used, I use "b," "c," all the way to 9. <br></p>
<br>
<p>ID category prefixes: <br></p>
<p>Translation IDs are 6-or-8-character strings. I like to use letters and follow a pattern, so random words can bubble up through the babble. </p>
<p>TL keys are 6 characters (favoring letters), and "de" is prefixed for their description. The first 2 letters indicate the category, while the last 4 indicate the individual. The last four are kind of freeform, usually the first 2 letters of each word of the English display name. If it's only one word, then it's its first 4 letters. If it's too short, "a" is suffixed for padding. If that pattern would recreate an existing code, I smudge which significant name characters are taken. If "a" is already used, I use "b," "c," all the way to 9. </p>
<p>ID category prefixes: </p>
<ul>
<li>ac - container </li>
<li>ap - smartphone app </li>
@ -36,14 +33,13 @@
<li>ti - time </li>
<li>wo - unsorted words, includes game title </li>
</ul>
<br>
<h3>base ID </h3>
<p>Base IDs apply to a few other things, but it's virtually only for entities. They identify a specific type of entity, not a particular instance of that entity. They are 6-character hexadecimal strings (favoring numbers). I like that they correspond to color hex codes, so I can find out everyone's secret color. Generally, a category's earliest and most representative entities are the purest in hue. <br></p>
<br>
<p>The first three digits represent categorization, while the last increment by one for each member within that group. Commons start at 000 and increment numerically, while elites and bosses start at aaa and increment alphabetically. <br></p>
<p>Base IDs apply to a few other things, but it's virtually only for entities. They identify a specific type of entity, not a particular instance of that entity. They are 6-character hexadecimal strings (favoring numbers). I like that they correspond to color hex codes, so I can find out everyone's secret color. Generally, a category's earliest and most representative entities are the purest in hue. </p>
<p>The first three digits represent categorization, while the last increment by one for each member within that group. Commons start at 000 and increment numerically, while elites and bosses start at aaa and increment alphabetically. </p>
<ul>
<li>0 - default </li>
<li>1 - skill </li>
<li>1 - skill
<ul>
<li>0 - common
<ul>
@ -124,7 +120,7 @@
<li>3 - networking </li>
</ul>
</li>
</ul>
</ul></li>
<li>2 - character (next digits indicate job and whether it offers a service)
<ul>
<li>0 - dungeon girls </li>
@ -165,6 +161,7 @@
<li>8 - machine </li>
</ul>
</li>
<li>3 - item
<ul>
<li>0 - currency </li>
@ -179,7 +176,7 @@
<ul>
<li>0 - food/medicine </li>
<li>1 - item generator </li>
<ul>
</ul>
</li>
<li>4 - flyer/book </li>
<li>5 - container </li>
@ -188,6 +185,8 @@
<li>8 - trinket </li>
</ul>
</li>
<li>4 - location (followed by 0 - safe zone, 1 - combat zone)
<ul>
<li>0 - nowhere
@ -245,12 +244,13 @@
</li>
<li>9 - keyword
<ul>
<li>0 - primitive </li>
<li>0 - primitive
<ul>
<li>1 - damage</li>
<li>2 - spiritual damage</li>
</ul>
<li>1 - status effect </li>
</li>
<li>1 - status effect
<ul>
<li>1 - burning (intense but brief life degen)</li>
<li>2 - bleeding (weak but lengthy life degen)</li>
@ -266,11 +266,24 @@
<li>12 - pacified - can't attack
<li>13 - sick - (can't regen health)
</ul>
</li>
<li>2 - unsorted </li>
</ul>
</li>
</ul>
<br>
<h3>ref ID </h3>
<p>Every entity with the base.gd script has a ref ID that is an integer between 0 and ∞. It identifies a specific instance of an entity. </p>
<h2>structure </h2>
<h3>translation key </h3>
<p>Every entity has an exported String name_key variable, and its desc_key can be derived from it by prefixing it with "de." </p>
<p>Every entity also has the <code>get_display_name</code> and <code>write_name</code> methods (same thing), plus <code>write_desc</code>. Use these to get the name and desc. </p>
<h3>base ID </h3>
<p>Every entity has an exported Color base_id variable. It also has a reference to the player_base_id and perk base ids. </p>
<p>Get the base_id with <code>get_base_id()</code> (as Color) and <code>get_base_id_in_hex()</code> (in a String). </p>
<p>To determine if the entity is the player, call <code>get_is_player()</code>. To determine if the entity is a perk, call <code>get_is_perk()</code>.
<h3>ref ID</h3>
<p>Every entity with the base.gd script has a ref ID. It identifies a specific instance of an entity. The MessageBus assigns them sequentially as integers starting at 0 during the <span class="code">_ready</span> stage of each entity. The earlier the ref ID, the older the entity. <br></p>
<br>
<p>The MessageBus assigns them sequentially as integers starting at 0 during the <span class="code">_ready</span> stage of each entity. The earlier the ref ID, the older the entity. </p>

@ -1,31 +1,8 @@
<p>The overall value of your armor, used in calculating damage absorption. <br></p>
<p>The overall value of your <a href="/blessfrey-gdd/gear">gear</a>, used in calculating damage absorption. <br></p>
<br>
<h2>how do I calculate my armor rating? </h2>
<p>Natural Armor: Depending on your job, you may naturally have some "armor." Just imagine some people are tougher. Armsman has 20, and Tamer and Brawler have 10. </p>
<br>
<h2>why is that in Guild Wars? </h2>
<p>IDEK, just spitballing these. I haven't even played in years, so the details may be way off. <br></p>
<br>
<h3>pros of DP, penalizing death, rewarding zero-deaths-playthroughs in general</h3>
<p>ANet obv added DP to penalize dying. <br></p>
<p>In PvP, this makes a whole lot more since to me than PvE. Penalizing losers and creating imbalanced gameplay is just part of PvP. DP evaporates off anyway. IDK if I even ever really noticed DP in it. I played bomber in JQ, so I even used that mechanic to my advantage in that competitive format. </p>
<br>
<p>IDK, it usually just brutalized me for no clear reason in singleplayer PvE. I did actually use it to my advantage as a BiP. So it's just another mechanic to play with in the metagame. But anyway. </p>
<br>
<p>DP adds a tonal difference between areas and missions with rez shrines, without rez shrines, and with rez shrines that will refuse to rez you. Normal areas (like Snake Dance) may be challenging, but you can party wipe hundreds of times without zoning and keep your nose on the grindstone until you finally reach Droknar's. If you party wipe even once in a mission or in Foundry, you have to go back to outpost. Then Hard Mode makes anywhere, even Plains of Jarin, more serious - you hit 60% DP on everybody and you go back to outpost. There are areas you can goof off in indefinitely, and then there are areas you can "lose" in. Some areas, you can brute force. Some, you have to plan a strategy and keep an eye on your party members' DP. <br></p>
<br>
<p>Since dying teleports you to rez shrines, death can become a form of travel. I thiink you can cheese some of the ciper quests by intentionally wiping to a mob by town then getting rezzed at a shrine right at the destination. We also had people die, then I'd Necrotic Traversal past a wall and teleport-rez people past the wall in Urgoz or something. I don't think death-as-fast-travel was ever a game-breaking issue, but DP would sure keep people from fast-traveling around UW that way or whatever, if they ever started putting rez shrines down there. </p>
<br>
<p>It makes it harder to brute force through everything. If your build doesn't work on the first few mobs, you have to go restrategize. At least, ideally. IDK. I definitely kept brute forcing at 60% a number of times. If it was implemented as a deterrant like Witcher "YOU ARE CARRYING TOO MUCH WEIGHT" or Torchlight "I AM OVERENCUMBERED" or any of the games that turn the screen bright flashing red, you can't punish people haha. They are going to keep picking up every useless trash, move at 40% speed, and squink into the flashing bright red screen while the character yells at them. </p>
<br>
<p>GW is an online game, so it's more meaningful IMO for an MMO guy to have Survivor than my lost singleplayer save on some harddrive. Now that we have Steam achievements and stuff, maybe that's less true of singleplayer games. (Are Survivor achievements common on Steam and PSN and stuff anyway?) The titles were lots of fun, but Guild Wars's HoM was the coolest achievement-thing probably anyway. </p>
<br>
<h3>cons</h3>
<p>It's annoying. Getting to 60% is brutally unfair. Every other MMO breaks all your expensive armor and unlevels you, so I'm being a baby. It was even kinda mindnumbingly fun to crawl, mob by mob, though EotN dungeons as a lvl 20 with 100HP tbh. But I just can't picture punishing a man like that. I don't know if death is penalized in any other singleplayer game where death isn't a game over. Legacy of Kain: Soul Reaver, Hades, Two Worlds...The Cat Lady? etc. </p>
<br>
<p>Since cap DP makes the game impossible in an unfun way, you obv have to pop your candy canes or go back to town. Going back to town breaks up the gameplay. Anything that takes you out, erases all your progress, and makes you start again is usually bad. Death loop games have this flow, I think. You jump up, ready to try again. The restart area is even kinda comfy or fun in some way. Guild Wars beats you down and makes you feel defeated lol. </p>
<br>
<h2>why is nothing like it in Blessfrey? </h2>
<p>I just don't like it. I don't think there's anything like it in the death loop singleplayer game genre anyway. Maybe I'm wrong, but it's not going in for now. <br></p>
<br>
<p>By default, it is 3 * <a href="/blessfrey-gdd/character">character's</a> <a href="/blessfrey-gdd/level">level</a> + MAX(the equipped gear's AR or the armor automatically bestowed by certain <a href="/blessfrey-gdd/job">jobs</a>). </p>
<p>When a character is hit, that strike is directed to one piece of gear. AR is not cumulative. Only the AR of the struck piece matters when calculating damage absorption. </p>
<h3>sources</h3>
<p>Natural Armor: Depending on your job, you may naturally have some "armor." Just imagine some people are tougher. <a href="/blessfrey-gdd/Armsman">Armsman</a> has 20, and <a href="/blessfrey-gdd/Tamer">Tamer</a> and <a href="/blessfrey-gdd/Brawler">Brawler</a> have 10. </p>
<p>Gear: Equipped armor pieces have AR. </p>

@ -0,0 +1,9 @@
<h2>character </h2>
<p>Characters are characterized by ???. They are Tangible (Tangible.gd) and Entities (Base.gd). </p>
<h2>structure </h2>
<p>They have...<p>
<p>$Jobs, a collection of all possible <a href="/blessfrey-gdd/job">jobs</a> and their own job and <a href="/blessfrey-gdd/gig">gig</a>. </p>
<p>$Equipment, covering both <a href="/blessfrey-gdd/gear">gear</a> and <a href="/blessfrey-gdd/death">weapons</a>.</p>
<h2>logic </h2>
<p> </p>

@ -1,2 +1,2 @@
<p>There are six standard jobs available to the player, but more can be discovered in the Abyss. <br></p>
<p>Defines the playstyle available to the <a href="/blessfrey-gdd/character">character</a> through associated <a href="/blessfrey-gdd/skill">skills</a>, <a href="/blessfrey-gdd/perk">perk</a>, and <a href="/blessfrey-gdd/attribute">attributes</a>. There are six standard jobs available to the <a href="/blessfrey-gdd/player">player</a>, but more can be discovered in the Abyss. <br></p>
<h2>perks of the job</h2>

@ -0,0 +1,9 @@
<h2>character </h2>
<p>Characters are characterized by ???. They are Tangible (Tangible.gd) and Entities (Base.gd). </p>
<h2>structure </h2>
<p>They have...<p>
<p>$Jobs, a collection of all possible jobs and their own job and gig. </p>
<p>$Equipment, covering both gear and weapons.</p>
<h2>logic </h2>
<p> </p>

@ -0,0 +1,6 @@
<p>Life represents how much <a href="/blessfrey-gdd/damage">damage</a> a <a href="/blessfrey-gdd/character">character</a> can take before <a href="/blessfrey-gdd/death">dying</a>. The quantity of life points is calculated using their current <a href="/blessfrey-gdd/level">level</a>. Characters' <a href="/blessfrey-gdd/pip">life pips</a> replenish their life over time outside of combat. </p>
<p>Max life cannot be reduced below 1. Life cannot be reduced below 1 from a chance in max life.</p>
<h3>structure</h3>
<p>Characters have life (float) and max_life (float). </p>
<h3>logic</h3>
<p>Characters' life, by default, is calculated as 20 * their current level + 80. </p>

@ -0,0 +1,5 @@
<p>Pips increase their <a href="/blessfrey-gdd/character">owner's</a> <a href="/blessfrey-gdd/life">life</a> or <a href="/blessfrey-gdd/spirit">spirit</a> over time. Life/Spirit Degeneration or Life/Spirit Regeneration can modify the number of pips. Pips are represented by arrows on the life bar or spirit bar. </p>
<p>A life pip increases or decreases the character's life by 2 every regen_tick (1 second), while a spirit pip increases the character's spirit by 3. </p>
<p>A character starts with 2 spirit pips by default. </p>
<h3>logic</h3>
<p>Each character has a regen timer for their life and another for their spirit. </p>

@ -0,0 +1,7 @@
<p>Spirit is the main currency used by <a href="/blessfrey-gdd/character">characters</a>. Characters' <a href="/blessfrey-gdd/pip">spirit pips</a> replenish their spirit over time. </p>
<p>Spirit can drop below 0. The UI will read 0 until the character recovers enough spirit.</p>
<h3>structure</h3>
<p>Characters have spirit (float) and max_spirit (float). </p>
<h3>logic</h3>
<p>Characters' spirit, by default, is calculated as 20 + spirit bestowed by their current job + spirit bestowed by their current equipment. </p>
<p>Armsmen have 10 extra spirit; Brawlers and Tamers have 20 extra spirit; and Chemists, Disciples, and Hackers have 30 extra spirit. </p>

@ -5,7 +5,7 @@
<p>The vision for Blessfrey <br></p>
<br>
<ul>
% for i in ["achievements", "cast", "controls", "credits", "death-penalty", "dialogue", "docs", "groups", "highlight", "ID", "inspect menu", "inventory", "item", "job", "keyword", "mechanics", "Mercur", "milestones", "miracles", "pathfinding", "proxemics", "setting", "skill", "status-effect", "story", "style guide", "terms", "vibe", "website"]:
% for i in ["achievements", "armor-rating", "cast", "character", "controls", "credits", "damage-type", "death-penalty", "dialogue", "docs", "groups", "highlight", "ID", "inspect menu", "inventory", "item", "job", "keyword", "language", "life", "mechanics", "Mercur", "milestones", "miracles", "pathfinding", "pip", "proxemics", "setting", "skill", "spirit", "status-effect", "story", "style guide", "terms", "vibe", "website"]:
<li class="list">{{random.choice(['.','•','☆','★'])}}&#9;<a href=/blessfrey-gdd/{{i}}>{{i}}</a></li>
% end
</ul>

@ -8,7 +8,7 @@
<br><hr><br>
<h2>legend </h2>
<p><span class=mundane>nothing at all</span>, <span class=common>designed</span>, <span class=unusual>basic implementation</span>, <span class=rare>intentionally designed, documented, but with known issues</span>, <span class=unique>ironed out and polished...or at least as done as it will ever be</span> </p>
<p><span class=mundane>nothing at all</span>, <span class=common>designed</span>, <span class=unusual>basic implementation</span>, <span class=rare>intentionally designed, documented, but with known issues</span>, <span class=unique>playtested and polished...or at least as done as it will ever be</span> </p>
@ -42,39 +42,37 @@
<br>
<h3><span class=mundane>characters </span> </h3>
<ul>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>entities have base id, ref id </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>creatures have life, spirit, AR, etc </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>creatures' armor rating is 3 * creature level + armor bonus. The armor bonus is 20 for warriors and paragons, 10 for rangers, dervs, and sins, and 0 for everyone else. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>creatures' maximum health is level*20+80. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>creatures' maximum energy is 20 for warriors, 30 for rangers, paragons, sins, and dervs, and 40 for everyone else. they have 1 extra pip of energy regen. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>creatures can have a special skill active on them like Stun Immunity or Natural Resistance. This can make the creature have altered armor against damage types. Plants are more susceptible to fire and slashing. Etc. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=rare>entities have base id, ref id </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=rare>characters can calculate their AR</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>characters can have a special skill active on them like Stun Immunity or Natural Resistance. This can make the character have altered armor against damage types. Plants are more susceptible to fire and slashing. Etc. </span> </li>
</ul>
<br>
<h3><span class=mundane>life + spirit </span> </h3>
<ul>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>character has life</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>character has spirit </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>characters start with 20 energy </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>characters start with 2 pips of energy regen</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>a pip of energy regen generates 1 energy every 3 seconds. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=common>energy can drop below 0. The UI will read 0 until energy is recovered.</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>if character is at less than full health, is not attacking, not taking damage from attacks, not using offensive skills, not being targeted by offensive skills, and has not lost health for 5 seconds or has a degen effect, their health will begin to regen slowly at a rate that increases by 1 every 2 seconds until it reaches +7 health regen. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>characters start with 100 health</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>characters gain 20 health per level up to 480 health at lvl 20. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>a character cannot reduce their max health below 1 </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=common>changes to max health can not reduce current health below 1</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>each pip is 2 health gained or lost each second</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=common>although only 10 pips can be active, the UI will show all pips applied to character. They will still be there to counteract degen as it's applied. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>weapon, equipment, skills, etc, can increase max health</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>life is lost by damage, health degen, sacrifice, life stealing, life draining, health decrease due to a decrease in maximum health, the loss of all health due to an instant death effect, direct health loss from other sources (such as Infuse Health, Spoil Victor, Shelter)</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>life is gained by health regeneration, life stealing, life draining, and the heal keyword. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=rare>characters can calculate their maximum life </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=rare>characters can calculate their maximum spirit.</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=rare>character has life</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=rare>character has spirit </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=rare>characters start with pips of spirit regen</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=rare>a pip of spirit regen generates spirit periodically </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=rare>spirit can drop below 0 </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>The UI will read 0 until spirit is recovered. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>if character is at less than full life, is not attacking, not taking damage from attacks, not using offensive skills, not being targeted by offensive skills, and has not lost life for 5 seconds or has a degen effect, their life will begin to regen slowly at a rate that increases by 1 every 2 seconds until it reaches +7 pips of life regen. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=rare>a character cannot reduce their max life below 1 </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=common>changes to max life can not reduce current life below 1</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=rare>a pip of life generates life periodically</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=rare>although active pips have a ceiling, the character tracks the all pips applied to him. </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>The UI will show all pips applied to character. They will still be there to counteract degen as it's applied. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>skills can increase max life</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>life is lost by damage, life degen, sacrifice, life stealing, life draining, life decrease due to a decrease in maximum life, the loss of all life due to an instant death effect, direct life loss from other sources (such as Infuse life, Spoil Victor, Shelter)</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>life is gained by life regeneration, life stealing, life draining, and the heal keyword. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>only the heal keyword is modified by healing modifiers and triggers </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>SKILL: Stubborn Cold - For 10 seconds, target gains 33% less benefit from healing. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>SKILL: Grapefruit - For 45 seconds, Healing Prayers heal for 50% more. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>SKILL: Life Giver - For 30 seconds, every time target is healed, healer takes 10 damage. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>heal is still shown even if character is at max health, etc - blue numbers over head </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>party healing provides healing, health gain, or health regen to all party members </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>life draining keyword - belongs to vampiric weapon. Steal 1...5 health each time you hit.</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>heal is still shown even if character is at max life, etc - blue numbers over head </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>party healing provides healing, life gain, or life regen to all party members </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>life draining keyword - belongs to vampiric weapon. Steal 1...5 life each time you hit.</span> </li>
</ul>
<br>
<h3><span class=mundane>equipment + weapons </span> </h3>
@ -84,9 +82,9 @@
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>equipment reduces armor-respecting damage, including attack damage and chemical damage</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>armor comes from core armor, bonus armor, and special armor</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>character has equipment</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>armor bonus - additional energy, energy regen, additional health, reduction in physical damage, increase in AR. headgear gives +1 to single attribute for their job</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>a set of armor increases energy regen by a total of +2 for armsman, +3 for tamer, and +4 for hacker, disciple, chemist, brawler. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>a set of armor increases energy by a total of 20 for armsman, 25 for brawlers and tamers, and 30 for everyone else. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>armor bonus - additional spirit, spirit regen, additional life, reduction in physical damage, increase in AR. headgear gives +1 to single attribute for their job</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>a set of armor increases spirit regen by a total of +2 for armsman, +3 for tamer, and +4 for hacker, disciple, chemist, brawler. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>a set of armor increases spirit by a total of 20 for armsman, 25 for brawlers and tamers, and 30 for everyone else. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>there are different equipment slots</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>there is a main hand and an off-hand slot</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>main hand reflects the handedness of the character. Night is left-handeded. The player can choose her handedness. </span> </li>
@ -124,7 +122,7 @@
<ul>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=common>skill loop </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=common>attack skill loop </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>skills consume an energy cost </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>skills consume an spirit cost </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>track skills currently applied to character </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>track keywords currently applied to character </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>track status effects currently applied to character </span> </li>
@ -136,7 +134,7 @@
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>skills can be instantly recharged </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>SKILL: Attack skill. recharge all other skills if attack hits. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>SKILL: Attack skill. Instantly recharges if target is above 50% life. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>SKILL: For 30s, cooldown for attack skills is reduced by 33%. Skill ends if your health drops below 50%. (Does not affect its own cooldown. This does not affect interrupted skills, as they didn't activate.)</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>SKILL: For 30s, cooldown for attack skills is reduced by 33%. Skill ends if your life drops below 50%. (Does not affect its own cooldown. This does not affect interrupted skills, as they didn't activate.)</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>skills can be elite </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>only one elite skill can be equipped on the skillbar. All but the rightmost will be removed. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>If elite skills are sideloaded onto the bar, more than one elite can be on the bar. The bar will be appropriately policed when changing zones. </span> </li>
@ -177,18 +175,18 @@
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=unusual>armor-ignoring damage does not benefit from base or bonus armor penetration </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>armor-ignoring damage is affected by damage modifiers which affect all damage. Protective Spirit, Shielding Hands, Frenzy. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>armor-ignoring damage comes from typeless damage, specific skills, shadow damage, most Holy damage but not that from weapons, bonus damage from attack skills, and damage from skills that explicitly ignore armor. Mesmer, Necros, and Monks often deal armor-ignoring dmaage. Sins deal most of their damage through bonus damage. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Skills that inflict direct health loss, life stealing, and health degen ignore armor, but obey damage reduction rules (e.g, from character level differences) </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Skills that inflict direct life loss, life stealing, and life degen ignore armor, but obey damage reduction rules (e.g, from character level differences) </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>the Damage Monitor displays the source of damage a player has received in the last moments. x2 Vicious Attack. x66 Quick Shot, Cruel Spear. If the player dies, it will remain frozen until rez. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>modify damage order: Life steal/Life loss | base weapon damage | linear elemental damage buffs | group (flurry, dual shot, triple shot) | armor, armor penetration, character level, other modifiers that affect damage calulation | attack skill damage and linear nonelemental damage buffs | group (primal rage, frenzy, frenzied defense) | Xinrae's Weapon | Defy Pain | Shield Inscriptions | Dark Escape | Reverse Hex | Shelter | Protective Bond | Group (in order of a0plication - Life Barrier, Life Bond, Protective Spirit, Lightbringer) | They're on Fire | Group (Mantra of Flame, Frost, Lightning, Earth) | Mark of Protection | Union | Group (Stoneflesh Aurua, Shile dof Absoprtion, Shielding Hands) | Group (Reversal of Fortune, Life Sheath). But Life Steal/Life Loss can be modified by specific protective skills, like (Convert next incoming life steal to health). </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>modify damage order: Life steal/Life loss | base weapon damage | linear elemental damage buffs | group (flurry, dual shot, triple shot) | armor, armor penetration, character level, other modifiers that affect damage calulation | attack skill damage and linear nonelemental damage buffs | group (primal rage, frenzy, frenzied defense) | Xinrae's Weapon | Defy Pain | Shield Inscriptions | Dark Escape | Reverse Hex | Shelter | Protective Bond | Group (in order of a0plication - Life Barrier, Life Bond, Protective Spirit, Lightbringer) | They're on Fire | Group (Mantra of Flame, Frost, Lightning, Earth) | Mark of Protection | Union | Group (Stoneflesh Aurua, Shile dof Absoprtion, Shielding Hands) | Group (Reversal of Fortune, Life Sheath). But Life Steal/Life Loss can be modified by specific protective skills, like (Convert next incoming life steal to life). </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>event order: FIFO </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>conditional keywords - 'if X, then Y' </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>track whether attack connects </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>status effect: bleeding - applies slight health degen for a long period </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>health degen - takes target's health over time</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>health drain - takes target's health over time and increases user's health over time </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>status effect: bleeding - applies slight life degen for a long period </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>life degen - takes target's life over time</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>life drain - takes target's life over time and increases user's life over time </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>spirit degen - takes target's spirit over time</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>spirit drain - takes target's spirit over time and increases user's spirit over time </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Bleeding: -3 health degeneration </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Bleeding: -3 life degeneration </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Bleeding is a status effect </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Blind is a status effect </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Blind gives a 90% chance to miss melee and missile attacks. Projectiles also have a greater chance to stray. </span> </li>
@ -284,7 +282,7 @@
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Some skills have no specified activation time but suffer aftercast delay. Others cannot be activated in mid-action even though they have no aftercast delay. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Ranger skills with activation times have aftercast delay to prevent damage compression/spikes </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>A skill with an explicit activation time can be used to bypass the second half of a previous attack interval (after that attack has hit). Use Executioner's Strike after Eviscerate at normal speed will land 1.33 after Eviscerate, while Agonizing Chop would have landed 1/2 second after Eviscerate. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>energy loss - target loses energy </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>spirit loss - target loses spirit </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>attacks have a chance to be critical </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>when - when X, do Y </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>when - the next 3 times X happens, do Y </span> </li>
@ -350,8 +348,8 @@
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>weapon mods that provide condition reduction stack with each other </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>weapon mods that affect casting and recharge times stack but are capped. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>skill effects typically do not stack. The most recent or most powerful application takes precedence. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>The beneficial effects of hex spells on different targets stack. Life Siphon on two foes will provide twice as much health regen. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>the beneficial effects of hex spells on the same target stack. AP provides each spellcaster the energy gain and skill recharge when the foe dies. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>The beneficial effects of hex spells on different targets stack. Life Siphon on two foes will provide twice as much life regen. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>the beneficial effects of hex spells on the same target stack. AP provides each spellcaster the spirit gain and skill recharge when the foe dies. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>characters can only be affected by one stance </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>characters can only be affected by one preparation </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>characters can only be affected by one party bonus </span> </li>
@ -376,7 +374,7 @@
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Attribute: 20 to 0 | These caps apply to single effects not just multiple sources. 21 can be reached using weapons with a chance of boosting an attribute. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Damage multipliers: ? to ? </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Projectile travel speed: +100% to -50% </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Maximum health: ? to 1 | The minimum cap also applies to single effects. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Maximum life: ? to 1 | The minimum cap also applies to single effects. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Condition duration: ? to 0s | the cap only applies to the remaining duration. Conditions can be re-applied indefinitely. A zero-second duration condition will trigger Fragility once instead of twice. (skill causes damage upon infliction and recovery of a new condition) </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Combat experience: 350% to ???% </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>The maximum number of maintained enchantments is limited only by your spirit regen. You can never have less than -10 regen. Any maintained enchantments in excess of that cap will be lost. Monks can maintain 14 enchantments. </span> </li>
@ -395,12 +393,13 @@
<h2><span class=mundane>0.2 - later</span> </h2>
<ul>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>creatures are in parties</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>creatures belong to factions </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>creatures can be passive</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>creatures can be fleshy</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>creature can be a summon</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>creature can be a boss</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>weapon, equipment, etc, can increase max life</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>characters are in parties</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>characters belong to factions </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>characters can be passive</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>characters can be fleshy</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>character can be a summon</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>character can be a boss</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>feature: ???</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>knock down causes target to fall</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>knocked down character cannot move</span> </li>
@ -430,7 +429,7 @@
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>spirit - 2512 gwinches - 250% - passive spirits, siege turtle attack, kournan siege </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>soul - 2508gwinches - 250-300% - soul reaping </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>spirit (passive) - 270% - passive spirits - affected by relative height</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>party, compass - 5020 gwinches - slightly larger than compass - visual range for creatures, bundles, objects. outisde, they fade from sight and cannot be selected </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>party, compass - 5020 gwinches - slightly larger than compass - visual range for characters, bundles, objects. outisde, they fade from sight and cannot be selected </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>party - 378% - party spells, maintained enchantments - maintained enchantments are dropped outside of the range</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>Number of skills with AoE Size ... Point blank 0 | Adjacent to target 0 | Adjacent 190 | Nearby 161 | In the Area 88 | Line: 4 | Half-range: 0 | Earshot: 124 | Spirit range: 49 | Party area: 27 </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>untargeted shouts affect every applicable target within earshot</span> </li>
@ -438,7 +437,7 @@
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>targeted shouts have spell range by default</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>If the target is out of range when activating a skill, your character will path toward the target (rather than the closest location where the target would be in range), stopping to activate it shortly after entering range. Manually moving in range will give better results when trying to pull enemies and avoid over-aggro or aggroing before using your first skill</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>characters can have patrol routes</span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>The Danger Zone is more commonly known as the "aggro bubble", the white translucent circle around your character on the radar. It determines when NPCs become aware of, and subsequently hostile to, their foes. Exceptions to subsequent hostility include most creatures with level 1-2 in starting areas, like Juvenile Bladed Termites in Normal mode. </span> </li>
<li class="latest">{{random.choice(['.','•','☆','★'])}}&#9;<span class=mundane>The Danger Zone is more commonly known as the "aggro bubble", the white translucent circle around your character on the radar. It determines when NPCs become aware of, and subsequently hostile to, their foes. Exceptions to subsequent hostility include most characters with level 1-2 in starting areas, like Juvenile Bladed Termites in Normal mode. </span> </li>
</ul>

Loading…
Cancel
Save