<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://planeshift.top-ix.org//pswiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Landson</id>
	<title>PSwiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://planeshift.top-ix.org//pswiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Landson"/>
	<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php/Special:Contributions/Landson"/>
	<updated>2026-04-07T00:59:09Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9103</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9103"/>
		<updated>2011-08-15T04:56:44Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Stage 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 7/16/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
Status: DONE (except progression script enhancements, it hasn&#039;t made my priority list yet, and probably won&#039;t until testing starts on what I have already)&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
Status: DONE&lt;br /&gt;
*Implement Area of Effect Done&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now. DONE&lt;br /&gt;
*Make sure attacks can be used through the current action bar. DONE&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete. DONE&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1. DONE&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system. DONE&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part. DONE&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. DONE&lt;br /&gt;
*this will be a time to clean up code, optimize everything &lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Currently I am updating the code to fit into the current trunk code and be ready to merge.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
&lt;br /&gt;
===Log===&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;br /&gt;
* 7/12/2011 - first gui widget made and functional. updated the status of my timeline above.&lt;br /&gt;
&lt;br /&gt;
===Still Undone===&lt;br /&gt;
* &amp;lt;s&amp;gt;A Gui Piece for the Queue&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Testing of AOE&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Implement weapon decay in special attacks&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;test various attacks and tweak where neccesary&amp;lt;/s&amp;gt; &amp;lt; not done but well in(never done =P)&lt;br /&gt;
* &amp;lt;s&amp;gt;search for possible optimization&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Farther improve the attack list gui&amp;lt;/s&amp;gt;&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9102</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9102"/>
		<updated>2011-08-15T04:56:05Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Stage 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 7/16/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
Status: DONE (except progression script enhancements, it hasn&#039;t made my priority list yet, and probably won&#039;t until testing starts on what I have already)&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
Status: DONE&lt;br /&gt;
*Implement Area of Effect Done&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now. DONE&lt;br /&gt;
*Make sure attacks can be used through the current action bar. DONE&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete. DONE&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1. DONE&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system. DONE&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part. DONE&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. DONE&lt;br /&gt;
*this will be a time to clean up code, optimize everything &lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
&lt;br /&gt;
===Log===&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;br /&gt;
* 7/12/2011 - first gui widget made and functional. updated the status of my timeline above.&lt;br /&gt;
&lt;br /&gt;
===Still Undone===&lt;br /&gt;
* &amp;lt;s&amp;gt;A Gui Piece for the Queue&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Testing of AOE&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Implement weapon decay in special attacks&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;test various attacks and tweak where neccesary&amp;lt;/s&amp;gt; &amp;lt; not done but well in(never done =P)&lt;br /&gt;
* &amp;lt;s&amp;gt;search for possible optimization&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Farther improve the attack list gui&amp;lt;/s&amp;gt;&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9101</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9101"/>
		<updated>2011-08-15T04:55:34Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Stage 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 7/16/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
Status: DONE (except progression script enhancements, it hasn&#039;t made my priority list yet, and probably won&#039;t until testing starts on what I have already)&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
Status: DONE&lt;br /&gt;
*Implement Area of Effect Done&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now. DONE&lt;br /&gt;
*Make sure attacks can be used through the current action bar. DONE&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete. DONE&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1. DONE&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system. DONE&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part. DONE&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
status: 33%&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. DONE&lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
&lt;br /&gt;
===Log===&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;br /&gt;
* 7/12/2011 - first gui widget made and functional. updated the status of my timeline above.&lt;br /&gt;
&lt;br /&gt;
===Still Undone===&lt;br /&gt;
* &amp;lt;s&amp;gt;A Gui Piece for the Queue&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Testing of AOE&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Implement weapon decay in special attacks&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;test various attacks and tweak where neccesary&amp;lt;/s&amp;gt; &amp;lt; not done but well in(never done =P)&lt;br /&gt;
* &amp;lt;s&amp;gt;search for possible optimization&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Farther improve the attack list gui&amp;lt;/s&amp;gt;&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9100</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9100"/>
		<updated>2011-08-15T04:55:21Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Stage 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 7/16/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
Status: DONE (except progression script enhancements, it hasn&#039;t made my priority list yet, and probably won&#039;t until testing starts on what I have already)&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
Status: 5/7 of the way done&lt;br /&gt;
*Implement Area of Effect Done&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now. DONE&lt;br /&gt;
*Make sure attacks can be used through the current action bar. DONE&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete. DONE&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1. DONE&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system. DONE&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part. DONE&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
status: 33%&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. DONE&lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
&lt;br /&gt;
===Log===&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;br /&gt;
* 7/12/2011 - first gui widget made and functional. updated the status of my timeline above.&lt;br /&gt;
&lt;br /&gt;
===Still Undone===&lt;br /&gt;
* &amp;lt;s&amp;gt;A Gui Piece for the Queue&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Testing of AOE&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Implement weapon decay in special attacks&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;test various attacks and tweak where neccesary&amp;lt;/s&amp;gt; &amp;lt; not done but well in(never done =P)&lt;br /&gt;
* &amp;lt;s&amp;gt;search for possible optimization&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Farther improve the attack list gui&amp;lt;/s&amp;gt;&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9099</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9099"/>
		<updated>2011-08-15T04:54:33Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Current Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 7/16/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
Status: DONE (except progression script enhancements, it hasn&#039;t made my priority list yet, and probably won&#039;t until testing starts on what I have already)&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
Status: 5/7 of the way done&lt;br /&gt;
*Implement Area of Effect *Still needs tested but DONE otherwise*&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now. DONE&lt;br /&gt;
*Make sure attacks can be used through the current action bar. DONE&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete. DONE&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1. DONE&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system. *Dual wielding done, decay is not*&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part. *In Progress*&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
status: 33%&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. DONE&lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
&lt;br /&gt;
===Log===&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;br /&gt;
* 7/12/2011 - first gui widget made and functional. updated the status of my timeline above.&lt;br /&gt;
&lt;br /&gt;
===Still Undone===&lt;br /&gt;
* &amp;lt;s&amp;gt;A Gui Piece for the Queue&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Testing of AOE&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Implement weapon decay in special attacks&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;test various attacks and tweak where neccesary&amp;lt;/s&amp;gt; &amp;lt; not done but well in(never done =P)&lt;br /&gt;
* &amp;lt;s&amp;gt;search for possible optimization&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Farther improve the attack list gui&amp;lt;/s&amp;gt;&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9098</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9098"/>
		<updated>2011-08-15T04:54:09Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Current Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 7/16/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
Status: DONE (except progression script enhancements, it hasn&#039;t made my priority list yet, and probably won&#039;t until testing starts on what I have already)&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
Status: 5/7 of the way done&lt;br /&gt;
*Implement Area of Effect *Still needs tested but DONE otherwise*&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now. DONE&lt;br /&gt;
*Make sure attacks can be used through the current action bar. DONE&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete. DONE&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1. DONE&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system. *Dual wielding done, decay is not*&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part. *In Progress*&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
status: 33%&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. DONE&lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
&lt;br /&gt;
===Log===&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;br /&gt;
* 7/12/2011 - first gui widget made and functional. updated the status of my timeline above.&lt;br /&gt;
&lt;br /&gt;
===Still Undone===&lt;br /&gt;
* &amp;lt;s&amp;gt;A Gui Piece for the Queue&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Testing of AOE&amp;lt;/s&amp;gt;&lt;br /&gt;
* Implement weapon decay in special attacks&lt;br /&gt;
* &amp;lt;s&amp;gt;test various attacks and tweak where neccesary&amp;lt;/s&amp;gt; &amp;lt; not done but well in(never done =P)&lt;br /&gt;
* &amp;lt;s&amp;gt;search for possible optimization&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Farther improve the attack list gui&amp;lt;/s&amp;gt;&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Landson_July_31-August_15&amp;diff=9090</id>
		<title>Landson July 31-August 15</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Landson_July_31-August_15&amp;diff=9090"/>
		<updated>2011-08-13T17:53:26Z</updated>

		<summary type="html">&lt;p&gt;Landson: Created page with &amp;#039;I just realized I never did a report last week, I&amp;#039;m sorry about that. This has been a really hectic 2 weeks.  Just a recap of July 31-August 7th. Around July 31st I finished the …&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I just realized I never did a report last week, I&#039;m sorry about that. This has been a really hectic 2 weeks. &lt;br /&gt;
Just a recap of July 31-August 7th. Around July 31st I finished the main portion of the my system. It was completely working and functional. Then I merged with the trunk and it messed with several parts of my system including some changes I made to the main engine(some quest move arounds and such, i.e. merging the quest prereq system with the attack prereq system). I finished fixing this and getting it to compile around the 5th of august. Currently What I am doing is trying to fix a bug that was introduced to the gui, currently everything works with the attack system internally, however I can&#039;t get the attack gui to come up, I hope to have this fixed by monday and spend the entire last week on documentation and testing.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=GSoC_weekly_reports&amp;diff=9089</id>
		<title>GSoC weekly reports</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=GSoC_weekly_reports&amp;diff=9089"/>
		<updated>2011-08-13T17:49:56Z</updated>

		<summary type="html">&lt;p&gt;Landson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== May ==&lt;br /&gt;
&lt;br /&gt;
Request of weekly reports was sent out the 8th of June, anyway if you have any progress report for May, please post it here.&lt;br /&gt;
&lt;br /&gt;
[[Zhan 16-20]]&lt;br /&gt;
&lt;br /&gt;
== June 6-12 ==&lt;br /&gt;
&lt;br /&gt;
[[Landson June 6-12]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 6-12]]&lt;br /&gt;
&lt;br /&gt;
Zee no report.&lt;br /&gt;
&lt;br /&gt;
== June 13-19 ==&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Landson June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 13-19]]&lt;br /&gt;
&lt;br /&gt;
== June 20-26 ==&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Landson June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 20-26]]&lt;br /&gt;
&lt;br /&gt;
== June 27-July 4 ==&lt;br /&gt;
&lt;br /&gt;
[[Landson June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
== July 5-11 ==&lt;br /&gt;
[[Landson July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Zee July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan July 5-11]]&lt;br /&gt;
== July 12-18 ==&lt;br /&gt;
[[Landson July 12-18]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan July 12-18]]&lt;br /&gt;
&lt;br /&gt;
[[Zee July 12-18]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro July 12-18]]&lt;br /&gt;
&lt;br /&gt;
== July 18-25 ==&lt;br /&gt;
[[Landson July 18-25]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan July 18-25]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro July 18-25]]&lt;br /&gt;
&lt;br /&gt;
Zee no report.&lt;br /&gt;
&lt;br /&gt;
== July 25-31 ==&lt;br /&gt;
[[Zhan July 25-31]]&lt;br /&gt;
&lt;br /&gt;
[[Landson July 25-31]]&lt;br /&gt;
&lt;br /&gt;
[[Zee July 25-31]]&lt;br /&gt;
&lt;br /&gt;
== July 31-August 7 ==&lt;br /&gt;
[[Zee July 31-August 7]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan July 31-August 7]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro July 25-August 7]]&lt;br /&gt;
&lt;br /&gt;
== August 8th - August 15 ==&lt;br /&gt;
[[Landson July 31-August 15]]&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Landson_July_25-31&amp;diff=9063</id>
		<title>Landson July 25-31</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Landson_July_25-31&amp;diff=9063"/>
		<updated>2011-08-01T21:12:25Z</updated>

		<summary type="html">&lt;p&gt;Landson: Created page with &amp;#039;This week has been hectic for me, one reason I&amp;#039;m so late getting my report up. So this week I managed to get animations and decay implemented, and it seems to be working so far, …&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This week has been hectic for me, one reason I&#039;m so late getting my report up. So this week I managed to get animations and decay implemented, and it seems to be working so far, but testing at this point has been limited. I merged with the trunk which is causing a lot of issues, not only were a lot of parts changed that involves my system, but the sound manager is having trouble compiling and it completely has something to do with my merge because the trunk alone compiles for me just fine. its something I&#039;m working on fixing, also as of friday I&#039;m transitioning from new york back to school, which don&#039;t actually start until the end of august but I have to move in this week. So I&#039;m working on it, but this week is going to be a little slow. But on the bright side, as soon as I get it working with the merge I&#039;m done and just have to test and tweak from then until the 23rd.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=GSoC_weekly_reports&amp;diff=9055</id>
		<title>GSoC weekly reports</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=GSoC_weekly_reports&amp;diff=9055"/>
		<updated>2011-08-01T17:21:57Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* July 25-31 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== May ==&lt;br /&gt;
&lt;br /&gt;
Request of weekly reports was sent out the 8th of June, anyway if you have any progress report for May, please post it here.&lt;br /&gt;
&lt;br /&gt;
[[Zhan 16-20]]&lt;br /&gt;
&lt;br /&gt;
== June 6-12 ==&lt;br /&gt;
&lt;br /&gt;
[[Landson June 6-12]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 6-12]]&lt;br /&gt;
&lt;br /&gt;
Zee no report.&lt;br /&gt;
&lt;br /&gt;
== June 13-19 ==&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Landson June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 13-19]]&lt;br /&gt;
&lt;br /&gt;
== June 20-26 ==&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Landson June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 20-26]]&lt;br /&gt;
&lt;br /&gt;
== June 27-July 4 ==&lt;br /&gt;
&lt;br /&gt;
[[Landson June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
== July 5-11 ==&lt;br /&gt;
[[Landson July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Zee July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan July 5-11]]&lt;br /&gt;
== July 12-18 ==&lt;br /&gt;
[[Landson July 12-18]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan July 12-18]]&lt;br /&gt;
&lt;br /&gt;
[[Zee July 12-18]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro July 12-18]]&lt;br /&gt;
&lt;br /&gt;
== July 18-25 ==&lt;br /&gt;
[[Landson July 18-25]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan July 18-25]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro July 18-25]]&lt;br /&gt;
&lt;br /&gt;
== July 25-31 ==&lt;br /&gt;
[[Zhan July 25-31]]&lt;br /&gt;
&amp;lt;br&amp;gt;[[Landson July 25-31]]&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=GSoC_weekly_reports&amp;diff=9054</id>
		<title>GSoC weekly reports</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=GSoC_weekly_reports&amp;diff=9054"/>
		<updated>2011-08-01T17:21:11Z</updated>

		<summary type="html">&lt;p&gt;Landson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== May ==&lt;br /&gt;
&lt;br /&gt;
Request of weekly reports was sent out the 8th of June, anyway if you have any progress report for May, please post it here.&lt;br /&gt;
&lt;br /&gt;
[[Zhan 16-20]]&lt;br /&gt;
&lt;br /&gt;
== June 6-12 ==&lt;br /&gt;
&lt;br /&gt;
[[Landson June 6-12]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 6-12]]&lt;br /&gt;
&lt;br /&gt;
Zee no report.&lt;br /&gt;
&lt;br /&gt;
== June 13-19 ==&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Landson June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 13-19]]&lt;br /&gt;
&lt;br /&gt;
== June 20-26 ==&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Landson June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 20-26]]&lt;br /&gt;
&lt;br /&gt;
== June 27-July 4 ==&lt;br /&gt;
&lt;br /&gt;
[[Landson June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
== July 5-11 ==&lt;br /&gt;
[[Landson July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Zee July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan July 5-11]]&lt;br /&gt;
== July 12-18 ==&lt;br /&gt;
[[Landson July 12-18]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan July 12-18]]&lt;br /&gt;
&lt;br /&gt;
[[Zee July 12-18]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro July 12-18]]&lt;br /&gt;
&lt;br /&gt;
== July 18-25 ==&lt;br /&gt;
[[Landson July 18-25]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan July 18-25]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro July 18-25]]&lt;br /&gt;
&lt;br /&gt;
== July 25-31 ==&lt;br /&gt;
[[Zhan July 25-31]]&lt;br /&gt;
[[Landson July 25-31]]&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9047</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9047"/>
		<updated>2011-07-26T00:46:32Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Still Undone */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 7/16/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
Status: DONE (except progression script enhancements, it hasn&#039;t made my priority list yet, and probably won&#039;t until testing starts on what I have already)&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
Status: 5/7 of the way done&lt;br /&gt;
*Implement Area of Effect *Still needs tested but DONE otherwise*&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now. DONE&lt;br /&gt;
*Make sure attacks can be used through the current action bar. DONE&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete. DONE&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1. DONE&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system. *Dual wielding done, decay is not*&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part. *In Progress*&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
status: 33%&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. DONE&lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
&lt;br /&gt;
===Log===&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;br /&gt;
* 7/12/2011 - first gui widget made and functional. updated the status of my timeline above.&lt;br /&gt;
&lt;br /&gt;
===Still Undone===&lt;br /&gt;
* &amp;lt;s&amp;gt;A Gui Piece for the Queue&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Testing of AOE&amp;lt;/s&amp;gt;&lt;br /&gt;
* Implement weapon decay in special attacks&lt;br /&gt;
* &amp;lt;s&amp;gt;test various attacks and tweak where neccesary&amp;lt;/s&amp;gt; &amp;lt; not done but well in(never done =P)&lt;br /&gt;
* search for possible optimization&lt;br /&gt;
* &amp;lt;s&amp;gt;Farther improve the attack list gui&amp;lt;/s&amp;gt;&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Landson_July_18-25&amp;diff=9038</id>
		<title>Landson July 18-25</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Landson_July_18-25&amp;diff=9038"/>
		<updated>2011-07-23T13:12:35Z</updated>

		<summary type="html">&lt;p&gt;Landson: Created page with &amp;#039;This week has largely been spent testing everything. Single target seems to work perfectly so far, however aoe has a huge bug that I have yet to work out. The bug seems to origin…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This week has largely been spent testing everything. Single target seems to work perfectly so far, however aoe has a huge bug that I have yet to work out. The bug seems to originate in the check of the items of whether they are attackable or not. But the function itself works perfectly, so data must be getting mixed up somewhere. Once I get this worked out I feel this is the only major bug that would keep it from working. Of course that wasn&#039;t the only bug I have had, just the one that still eludes me. Due to fixing unpredictable bugs(I guess if they were predictable they wouldn&#039;t be bugs) I haven&#039;t gotten around to animation or decay yet, as I don&#039;t want to add anything else until the bugs are cleared  up.&lt;br /&gt;
Next Week:&lt;br /&gt;
* Finish bug fixes&lt;br /&gt;
* Implement animation/decay&lt;br /&gt;
* Start cleaning up code and documentation&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=GSoC_weekly_reports&amp;diff=9037</id>
		<title>GSoC weekly reports</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=GSoC_weekly_reports&amp;diff=9037"/>
		<updated>2011-07-23T13:06:27Z</updated>

		<summary type="html">&lt;p&gt;Landson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== May ==&lt;br /&gt;
&lt;br /&gt;
Request of weekly reports was sent out the 8th of June, anyway if you have any progress report for May, please post it here.&lt;br /&gt;
&lt;br /&gt;
[[Zhan 16-20]]&lt;br /&gt;
&lt;br /&gt;
== June 6-12 ==&lt;br /&gt;
&lt;br /&gt;
[[Landson June 6-12]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 6-12]]&lt;br /&gt;
&lt;br /&gt;
Zee no report.&lt;br /&gt;
&lt;br /&gt;
== June 13-19 ==&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Landson June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 13-19]]&lt;br /&gt;
&lt;br /&gt;
== June 20-26 ==&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Landson June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 20-26]]&lt;br /&gt;
&lt;br /&gt;
== June 27-July 4 ==&lt;br /&gt;
&lt;br /&gt;
[[Landson June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
== July 5-11 ==&lt;br /&gt;
[[Landson July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Zee July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan July 5-11]]&lt;br /&gt;
== July 12-18 ==&lt;br /&gt;
[[Landson July 12-18]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan July 12-18]]&lt;br /&gt;
&lt;br /&gt;
[[Zee July 12-18]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro July 12-18]]&lt;br /&gt;
&lt;br /&gt;
== July 18-25 ==&lt;br /&gt;
[[Landson July 18-25]]&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Landson_July_12-18&amp;diff=9028</id>
		<title>Landson July 12-18</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Landson_July_12-18&amp;diff=9028"/>
		<updated>2011-07-17T20:08:58Z</updated>

		<summary type="html">&lt;p&gt;Landson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This week has been probably one of the most productive I&#039;ve had so far.&lt;br /&gt;
*I learned a lot about how Paws works and how to create widgets(sadly last week was my first time looking at it).&lt;br /&gt;
*I created a widget to display available attacks, only displaying attacks that you meet requirements for. Also allows you to queue the attack and add the attack to your hotbar.&lt;br /&gt;
*I added a part to the information widget showing the attacks in your queue.&lt;br /&gt;
*I created a few test cases( still a work in progress) and I&#039;m testing them myself now, in fact I just found a bug in my range aoe.&lt;br /&gt;
&lt;br /&gt;
Next week I plan to: &lt;br /&gt;
* Continue making test cases and running them with the help of LigH.&lt;br /&gt;
* Implement weapon/armor decay into special attacks&lt;br /&gt;
* Possibly add animation support.&lt;br /&gt;
* Start writing the final documentation&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Landson_July_12-18&amp;diff=9027</id>
		<title>Landson July 12-18</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Landson_July_12-18&amp;diff=9027"/>
		<updated>2011-07-17T20:07:04Z</updated>

		<summary type="html">&lt;p&gt;Landson: Created page with &amp;#039; This week has been probably one of the most productive I&amp;#039;ve had so far. *I learned a lot about how Paws works and how to create widgets(sadly last week was my first time looking…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
This week has been probably one of the most productive I&#039;ve had so far.&lt;br /&gt;
*I learned a lot about how Paws works and how to create widgets(sadly last week was my first time looking at it).&lt;br /&gt;
*I created a widget to display available attacks, only displaying attacks that you meet requirements for. Also allows you to queue the attack and add the attack to your hotbar.&lt;br /&gt;
*I added a part to the information widget showing the attacks in your queue.&lt;br /&gt;
*I created a few test cases( still a work in progress) and I&#039;m testing them myself now, in fact I just found a bug in my range aoe.&lt;br /&gt;
&lt;br /&gt;
Next week I plan to: &lt;br /&gt;
* Continue making test cases and running them with the help of LigH.&lt;br /&gt;
* Implement weapon/armor decay into special attacks&lt;br /&gt;
* Possibly add animation support.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=GSoC_weekly_reports&amp;diff=9026</id>
		<title>GSoC weekly reports</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=GSoC_weekly_reports&amp;diff=9026"/>
		<updated>2011-07-17T19:59:15Z</updated>

		<summary type="html">&lt;p&gt;Landson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== May ==&lt;br /&gt;
&lt;br /&gt;
Request of weekly reports was sent out the 8th of June, anyway if you have any progress report for May, please post it here.&lt;br /&gt;
&lt;br /&gt;
[[Zhan 16-20]]&lt;br /&gt;
&lt;br /&gt;
== June 6-12 ==&lt;br /&gt;
&lt;br /&gt;
[[Landson June 6-12]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 6-12]]&lt;br /&gt;
&lt;br /&gt;
Zee no report.&lt;br /&gt;
&lt;br /&gt;
== June 13-19 ==&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Landson June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 13-19]]&lt;br /&gt;
&lt;br /&gt;
== June 20-26 ==&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Landson June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 20-26]]&lt;br /&gt;
&lt;br /&gt;
== June 27-July 4 ==&lt;br /&gt;
&lt;br /&gt;
[[Landson June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
== July 5-11 ==&lt;br /&gt;
[[Landson July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Zee July 5-11]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan July 5-11]]&lt;br /&gt;
== July 12-18 ==&lt;br /&gt;
[[Landson July 12-18]]&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9025</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9025"/>
		<updated>2011-07-16T18:10:14Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Technical Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 7/16/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
Status: DONE (except progression script enhancements, it hasn&#039;t made my priority list yet, and probably won&#039;t until testing starts on what I have already)&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
Status: 5/7 of the way done&lt;br /&gt;
*Implement Area of Effect *Still needs tested but DONE otherwise*&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now. DONE&lt;br /&gt;
*Make sure attacks can be used through the current action bar. DONE&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete. DONE&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1. DONE&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system. *Dual wielding done, decay is not*&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part. *In Progress*&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
status: 33%&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. DONE&lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
&lt;br /&gt;
===Log===&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;br /&gt;
* 7/12/2011 - first gui widget made and functional. updated the status of my timeline above.&lt;br /&gt;
&lt;br /&gt;
===Still Undone===&lt;br /&gt;
* A Gui Piece for the Queue&lt;br /&gt;
* Testing of AOE&lt;br /&gt;
* Implement weapon decay in special attacks&lt;br /&gt;
* test various attacks and tweak where neccesary&lt;br /&gt;
* search for possible optimization&lt;br /&gt;
* Farther improve the attack list gui&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9024</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9024"/>
		<updated>2011-07-12T04:49:57Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Current Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 7/12/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
Status: DONE (except progression script enhancements, it hasn&#039;t made my priority list yet)&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
Status: 5/7 of the way done&lt;br /&gt;
*Implement Area of Effect *Still needs tested but DONE otherwise*&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now. DONE&lt;br /&gt;
*Make sure attacks can be used through the current action bar. DONE&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete. DONE&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1. DONE&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system. *Dual wielding done, decay is not*&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part. *In Progress*&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
&lt;br /&gt;
===Log===&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;br /&gt;
* 7/12/2011 - first gui widget made and functional. updated the status of my timeline above.&lt;br /&gt;
&lt;br /&gt;
===Still Undone===&lt;br /&gt;
* A Gui Piece for the Queue&lt;br /&gt;
* Testing of AOE&lt;br /&gt;
* Implement weapon decay in special attacks&lt;br /&gt;
* test various attacks and tweak where neccesary&lt;br /&gt;
* search for possible optimization&lt;br /&gt;
* Farther improve the attack list gui&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9023</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9023"/>
		<updated>2011-07-12T04:48:06Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Stage 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 7/12/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
Status: DONE (except progression script enhancements, it hasn&#039;t made my priority list yet)&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
Status: 5/7 of the way done&lt;br /&gt;
*Implement Area of Effect *Still needs tested but DONE otherwise*&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now. DONE&lt;br /&gt;
*Make sure attacks can be used through the current action bar. DONE&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete. DONE&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1. DONE&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system. *Dual wielding done, decay is not*&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part. *In Progress*&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;br /&gt;
* 7/12/2011 - first gui widget made and functional. updated the status of my timeline above.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9022</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9022"/>
		<updated>2011-07-12T04:45:02Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Stage 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 7/12/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
Status: DONE (except progression script enhancements, it hasn&#039;t made my priority list yet)&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
Status: 5/7 of the way done&lt;br /&gt;
*Implement Area of Effect *Still needs tested but DONE otherwise*&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now. DONE&lt;br /&gt;
*Make sure attacks can be used through the current action bar. DONE&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete. DONE&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1. DONE&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system. *Not Started Yet*&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part. *In Progress*&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;br /&gt;
* 7/12/2011 - first gui widget made and functional. updated the status of my timeline above.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9021</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9021"/>
		<updated>2011-07-12T04:43:52Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Stage 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 7/12/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
Status: DONE (except progression script enhancements, it hasn&#039;t made my priority list yet)&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
Status: 5/7 of the way done&lt;br /&gt;
*Implement Area of Effect *Still needs tested but DONE otherwise*&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now. DONE&lt;br /&gt;
*Make sure attacks can be used through the current action bar. DONE&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete. DONE&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1. DONE&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system. *Not Started Yet*&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part. *In Progress*&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9020</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9020"/>
		<updated>2011-07-12T04:41:35Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Goals and Deadlines */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 7/12/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
Status: DONE (except progression script enhancements, it hasn&#039;t made my priority list yet)&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now.&lt;br /&gt;
*Make sure attacks can be used through the current action bar.&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9019</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=9019"/>
		<updated>2011-07-12T04:41:18Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Stage 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 6/8/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
Status: DONE (except progression script enhancements, it hasn&#039;t made my priority list yet)&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now.&lt;br /&gt;
*Make sure attacks can be used through the current action bar.&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Landson_July_5-11&amp;diff=9002</id>
		<title>Landson July 5-11</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Landson_July_5-11&amp;diff=9002"/>
		<updated>2011-07-09T04:47:10Z</updated>

		<summary type="html">&lt;p&gt;Landson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It&#039;s now the week before the midterm evaluation, which got me thinking a bit about what I&#039;ve gotten done so far. I was looking at the project and I felt like I really hadn&#039;t got enough done; So I looked through everything step by step that I&#039;ve done so far to really evaluate myself. I&#039;ve actually done a lot, including learned a lot. This is my first large scale project in which more than myself are working on, and  I must say it&#039;s been a real humbling experience. I&#039;ve done smaller projects which took some work and I&#039;ve always had a habit of jumping in and coding without any sort of plan or even commenting.    One of the first things I learned through this project is that when working on a major project that just isn&#039;t a viable direction to a working solution.&lt;br /&gt;
&lt;br /&gt;
In my proposal at this point I expected to have combat working at this point, which I&#039;m proud to say technically it is, but in my proposal I had expected to have simply made a queue,  an attack structure(which did nothing but held damage), and the only real code changes I planned to make was to fit them into the current combat manager. It was a very vague plan and there was honestly no way I could have made it work that way; the first week or two I actually tried to make it work that way, but it was obvious I was only making a mess, so I cut it short right there. I went back to the drawing board and realized I had learned a lot about the current code, a lot of which would work here.&lt;br /&gt;
&lt;br /&gt;
* I wanted to implement a requirement function for attacks, which makes getting attacks something special and varied. Quests already have a perquisite function, which after a few modifications became a great general purpose perquisite tracking tool.&lt;br /&gt;
&lt;br /&gt;
*I wanted special effects on attacks, and each attack to be flexible as to what it could do, progression scripts are perfect, each attack can be completely customizable with both damage, messages, aoe and special effects such as dots. It&#039;s also a great place to be able to add more functions as i go and anything I add not only helps combat but also anything else that progression scripts is used for.&lt;br /&gt;
&lt;br /&gt;
* I also wanted damage to vary and to have aoe available. Aoe is now functional and ready to be testing, which is something I&#039;ll be doing over the next week or two. Damage can currently be calculated through progression script, using a math script variable with calculates power based on skill levels. I haven&#039;t made the math script yet, as I feel its more something for rules team to do. I can program but balancing power is not something I can do very well. But I do have a test value in it.&lt;br /&gt;
&lt;br /&gt;
So at this point, I can say my project has grown to be quite a bit more involved than I had originally planned. All of combat has moved from the combat manager to the attack structure, with combat manager being a simple driver. This will allow a lot of functionality and flexibility. Already I have a default attack implemented that works exactly as combat did before, I have a melee special attack which currently works, and I have a range special attack which works but still needs thorough testing. Breaking the system up into pieces and abstracting the pieces out like this will allow each individual piece to be worked on and balanced by themselves without directly affecting others. It will hopefully allow the settings and rules team the freedom to implement things however they want to best fit what is needed for both game play and story. There are a lot of things left to go, but when I look at it, it&#039;s came a long way.&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
Now what I&#039;ve done this week:&lt;br /&gt;
&lt;br /&gt;
*I have implemented ranged special attacks, though they still require detailed testing and adjustment.&lt;br /&gt;
&lt;br /&gt;
* I have further developed and made some tweaks to the melee special attack class.&lt;br /&gt;
&lt;br /&gt;
* I have started developing the gui for attacks, but since this is the first time I&#039;ve looked at the paws system it is going a little slow.&lt;br /&gt;
&lt;br /&gt;
Next Week I plan to:&lt;br /&gt;
&lt;br /&gt;
*Work toward finishing a gui, hopefully complete it. This will be the bulk of my focus, because its needed to do any sort of thorough testing from a players perspective.&lt;br /&gt;
&lt;br /&gt;
*further tweak both specials, where it&#039;s needed.&lt;br /&gt;
&lt;br /&gt;
*start looking at the best way to integrate spell combat.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Landson_July_5-11&amp;diff=9001</id>
		<title>Landson July 5-11</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Landson_July_5-11&amp;diff=9001"/>
		<updated>2011-07-09T04:46:39Z</updated>

		<summary type="html">&lt;p&gt;Landson: Created page with &amp;#039;  It&amp;#039;s now the week before the midterm evaluation, which got me thinking a bit about what I&amp;#039;ve gotten done so far. I was looking at the project and I felt like I really hadn&amp;#039;t go…&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  It&#039;s now the week before the midterm evaluation, which got me thinking a bit about what I&#039;ve gotten done so far. I was looking at the project and I felt like I really hadn&#039;t got enough done; So I looked through everything step by step that I&#039;ve done so far to really evaluate myself. I&#039;ve actually done a lot, including learned a lot. This is my first large scale project in which more than myself are working on, and  I must say it&#039;s been a real humbling experience. I&#039;ve done smaller projects which took some work and I&#039;ve always had a habit of jumping in and coding without any sort of plan or even commenting.    One of the first things I learned through this project is that when working on a major project that just isn&#039;t a viable direction to a working solution.&lt;br /&gt;
&lt;br /&gt;
    In my proposal at this point I expected to have combat working at this point, which I&#039;m proud to say technically it is, but in my proposal I had expected to have simply made a queue,  an attack structure(which did nothing but held damage), and the only real code changes I planned to make was to fit them into the current combat manager. It was a very vague plan and there was honestly no way I could have made it work that way; the first week or two I actually tried to make it work that way, but it was obvious I was only making a mess, so I cut it short right there. I went back to the drawing board and realized I had learned a lot about the current code, a lot of which would work here.&lt;br /&gt;
&lt;br /&gt;
* I wanted to implement a requirement function for attacks, which makes getting attacks something special and varied. Quests already have a perquisite function, which after a few modifications became a great general purpose perquisite tracking tool.&lt;br /&gt;
&lt;br /&gt;
*I wanted special effects on attacks, and each attack to be flexible as to what it could do, progression scripts are perfect, each attack can be completely customizable with both damage, messages, aoe and special effects such as dots. It&#039;s also a great place to be able to add more functions as i go and anything I add not only helps combat but also anything else that progression scripts is used for.&lt;br /&gt;
&lt;br /&gt;
* I also wanted damage to vary and to have aoe available. Aoe is now functional and ready to be testing, which is something I&#039;ll be doing over the next week or two. Damage can currently be calculated through progression script, using a math script variable with calculates power based on skill levels. I haven&#039;t made the math script yet, as I feel its more something for rules team to do. I can program but balancing power is not something I can do very well. But I do have a test value in it.&lt;br /&gt;
&lt;br /&gt;
    So at this point, I can say my project has grown to be quite a bit more involved than I had originally planned. All of combat has moved from the combat manager to the attack structure, with combat manager being a simple driver. This will allow a lot of functionality and flexibility. Already I have a default attack implemented that works exactly as combat did before, I have a melee special attack which currently works, and I have a range special attack which works but still needs thorough testing. Breaking the system up into pieces and abstracting the pieces out like this will allow each individual piece to be worked on and balanced by themselves without directly affecting others. It will hopefully allow the settings and rules team the freedom to implement things however they want to best fit what is needed for both game play and story. There are a lot of things left to go, but when I look at it, it&#039;s came a long way.&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
Now what I&#039;ve done this week:&lt;br /&gt;
&lt;br /&gt;
*I have implemented ranged special attacks, though they still require detailed testing and adjustment.&lt;br /&gt;
&lt;br /&gt;
* I have further developed and made some tweaks to the melee special attack class.&lt;br /&gt;
&lt;br /&gt;
* I have started developing the gui for attacks, but since this is the first time I&#039;ve looked at the paws system it is going a little slow.&lt;br /&gt;
&lt;br /&gt;
Next Week I plan to:&lt;br /&gt;
&lt;br /&gt;
*Work toward finishing a gui, hopefully complete it. This will be the bulk of my focus, because its needed to do any sort of thorough testing from a players perspective.&lt;br /&gt;
&lt;br /&gt;
*further tweak both specials, where it&#039;s needed.&lt;br /&gt;
&lt;br /&gt;
*start looking at the best way to integrate spell combat.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=GSoC_weekly_reports&amp;diff=9000</id>
		<title>GSoC weekly reports</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=GSoC_weekly_reports&amp;diff=9000"/>
		<updated>2011-07-09T04:46:26Z</updated>

		<summary type="html">&lt;p&gt;Landson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== May ==&lt;br /&gt;
&lt;br /&gt;
Request of weekly reports was sent out the 8th of June, anyway if you have any progress report for May, please post it here.&lt;br /&gt;
&lt;br /&gt;
[[Zhan 16-20]]&lt;br /&gt;
&lt;br /&gt;
== June 6-12 ==&lt;br /&gt;
&lt;br /&gt;
[[Landson June 6-12]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 6-12]]&lt;br /&gt;
&lt;br /&gt;
Zee no report.&lt;br /&gt;
&lt;br /&gt;
== June 13-19 ==&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Landson June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 13-19]]&lt;br /&gt;
&lt;br /&gt;
== June 20-26 ==&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Landson June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 20-26]]&lt;br /&gt;
&lt;br /&gt;
== June 27-July 4 ==&lt;br /&gt;
&lt;br /&gt;
[[Landson June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 27-July 4]]&lt;br /&gt;
&lt;br /&gt;
== July 5-11 ==&lt;br /&gt;
[[Landson July 5-11]]&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8999</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8999"/>
		<updated>2011-07-07T12:25:41Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Technical Designs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 6/8/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now.&lt;br /&gt;
*Make sure attacks can be used through the current action bar.&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8998</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8998"/>
		<updated>2011-07-07T12:24:02Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Stage 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 6/8/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now.&lt;br /&gt;
*Make sure attacks can be used through the current action bar.&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;br /&gt;
* 7/7/2011 - The Attack system is currently functional.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Landson_June_27-July_4&amp;diff=8979</id>
		<title>Landson June 27-July 4</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Landson_June_27-July_4&amp;diff=8979"/>
		<updated>2011-07-02T17:19:23Z</updated>

		<summary type="html">&lt;p&gt;Landson: Created page with &amp;#039;I&amp;#039;m now about a month and a half into my project and so far everything is perfectly on schedule. How often is it that a programmer can say that? This week I&amp;#039;ve actually gotten a …&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I&#039;m now about a month and a half into my project and so far everything is perfectly on schedule. How often is it that a programmer can say that? This week I&#039;ve actually gotten a little farther than I had planned, I had planned to finish up on the default attack and move on to special attacks, I had planned to not really get much done with them. However it turns out the way I&#039;m making special attacks is much smoother and easier than I had anticipated which is great. I have managed to make a working melee special attack, it runs off of requirement checking scripts and an already implemented progression script. I still need to put in a few more checks an work out a few kinks but as of right now it completely works. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So in summary this week:&lt;br /&gt;
&lt;br /&gt;
*I fixed the errors I waas having with the default attack&lt;br /&gt;
&lt;br /&gt;
*I fixed dual wielding to work on 1 handed attacks instead of attacks that deal with both weapons.&lt;br /&gt;
&lt;br /&gt;
*I fully implemented special melee attacks, not to say thoguh that it won&#039;t be changed or tweaked.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next Week I plan to: &lt;br /&gt;
&lt;br /&gt;
* Continue testing melee specials&lt;br /&gt;
&lt;br /&gt;
* Start implementing range specials, maybe even complete them.&lt;br /&gt;
&lt;br /&gt;
* ?Start looking in more detail how I will create the gui part, and overall planning what client side changes will need to be done?&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=GSoC_weekly_reports&amp;diff=8978</id>
		<title>GSoC weekly reports</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=GSoC_weekly_reports&amp;diff=8978"/>
		<updated>2011-07-02T17:19:14Z</updated>

		<summary type="html">&lt;p&gt;Landson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== May ==&lt;br /&gt;
&lt;br /&gt;
Request of weekly reports was sent out the 8th of June, anyway if you have any progress report for May, please post it here.&lt;br /&gt;
&lt;br /&gt;
[[Zhan 16-20]]&lt;br /&gt;
&lt;br /&gt;
== June 6-12 ==&lt;br /&gt;
&lt;br /&gt;
[[Landson June 6-12]]&lt;br /&gt;
&lt;br /&gt;
Zee no report.&lt;br /&gt;
&lt;br /&gt;
== June 13-19 ==&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Landson June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 13-19]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 13-19]]&lt;br /&gt;
&lt;br /&gt;
== June 20-26 ==&lt;br /&gt;
&lt;br /&gt;
[[Lucubro June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Landson June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Zee June 20-26]]&lt;br /&gt;
&lt;br /&gt;
[[Zhan June 20-26]]&lt;br /&gt;
&lt;br /&gt;
== June 27-July 4 ==&lt;br /&gt;
&lt;br /&gt;
[[Landson June 27-July 4]]&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8925</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8925"/>
		<updated>2011-06-14T21:39:45Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Stage 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 6/8/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now.&lt;br /&gt;
*Make sure attacks can be used through the current action bar.&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain lol.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;br /&gt;
* 6/14/2011 - Finally got around to updating my implementation plan, as well as started much of the implementation.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8924</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8924"/>
		<updated>2011-06-14T21:38:45Z</updated>

		<summary type="html">&lt;p&gt;Landson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 6/8/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now.&lt;br /&gt;
*Make sure attacks can be used through the current action bar.&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain lol.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8923</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8923"/>
		<updated>2011-06-14T21:34:22Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* psAttack */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{warning|Much of this is currently out of date, I will come through and update it in the next couple days! -Landson 6/4/2011}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 6/8/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now.&lt;br /&gt;
*Make sure attacks can be used through the current action bar.&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*this is where all the magic happens in the combat system&lt;br /&gt;
*it is a purely virtual function&lt;br /&gt;
*it will have several implementations, 4 to start(melee, range, magic, default), with more easily added if needed in the future.&lt;br /&gt;
*Will require attack and affect be implemented.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain lol.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8922</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8922"/>
		<updated>2011-06-14T21:32:27Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Fields in Attack Database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{warning|Much of this is currently out of date, I will come through and update it in the next couple days! -Landson 6/4/2011}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 6/8/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now.&lt;br /&gt;
*Make sure attacks can be used through the current action bar.&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;image_name&#039;&#039;&#039;: The name of the image to use for the attack icon in the gui&lt;br /&gt;
*&#039;&#039;&#039;attack anim&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;attack_description&#039;&#039;&#039;: a description of the attack&lt;br /&gt;
*&#039;&#039;&#039;attack type&#039;&#039;&#039;: the attack type, this is defined in another database which defines things such as weapon requirements&lt;br /&gt;
*&#039;&#039;&#039;range&#039;&#039;&#039;: this is a formula field to be used with mathscript, it defines the range of the attack, can also be a solid number.&lt;br /&gt;
*&#039;&#039;&#039;aoe radius&#039;&#039;&#039;: similar to range, but defines the radius an aoe attack would be.&lt;br /&gt;
*&#039;&#039;&#039;attack angle&#039;&#039;&#039;: also like range, it is a formula or a single number that defines the angle of the aoe attack, for instance it may be 45 degrees if you want to attack everything thing within a 90 degree angle in from of you, the angle is defined with you as the vertice and the line between you and your target as the line of symmetry.&lt;br /&gt;
*&#039;&#039;&#039;outcome&#039;&#039;&#039;:this is the name of a progression script that is attached to this class, this is where any special effects would be defined.&lt;br /&gt;
*&#039;&#039;&#039;power&#039;&#039;&#039;: a formula for the power of the attack, based on your weapon and skills&lt;br /&gt;
*&#039;&#039;&#039;requirements&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensability.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*This will more or less just be a simple data structure holding the various pieces of data that make up an attack.&lt;br /&gt;
*It will be structured much like psQuest is currently.&lt;br /&gt;
*It will also have a prequisite script much like psQuest does now with psQuestPrereqOP.&lt;br /&gt;
*There will also be a special effects script. This may not be fully fleshed out in Stage 1.&lt;br /&gt;
*And it would also handle area of effect script, though since area of effect is a much more standard thing, it will not work like the other scripts, instead it will just pull and set data values that will (in a later stage) be used by combatManager to determine who takes damage.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain lol.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=File:AttackClassDesign.jpg&amp;diff=8921</id>
		<title>File:AttackClassDesign.jpg</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=File:AttackClassDesign.jpg&amp;diff=8921"/>
		<updated>2011-06-14T21:23:05Z</updated>

		<summary type="html">&lt;p&gt;Landson: uploaded a new version of &amp;quot;File:AttackClassDesign.jpg&amp;quot;:&amp;amp;#32;Reverted to version as of 21:22, 14 June 2011&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=File:AttackClassDesign.jpg&amp;diff=8920</id>
		<title>File:AttackClassDesign.jpg</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=File:AttackClassDesign.jpg&amp;diff=8920"/>
		<updated>2011-06-14T21:22:52Z</updated>

		<summary type="html">&lt;p&gt;Landson: uploaded a new version of &amp;quot;File:AttackClassDesign.jpg&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=File:AttackClassDesign.jpg&amp;diff=8919</id>
		<title>File:AttackClassDesign.jpg</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=File:AttackClassDesign.jpg&amp;diff=8919"/>
		<updated>2011-06-14T21:22:10Z</updated>

		<summary type="html">&lt;p&gt;Landson: uploaded a new version of &amp;quot;File:AttackClassDesign.jpg&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8918</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8918"/>
		<updated>2011-06-14T21:00:07Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* The Attack Queuing System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{warning|Much of this is currently out of date, I will come through and update it in the next couple days! -Landson 6/4/2011}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 6/8/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now.&lt;br /&gt;
*Make sure attacks can be used through the current action bar.&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;Multiplier&#039;&#039;&#039;: some attacks may do more or less damage than the base attack this multiplier should will be factored in with the final damage to get the attack&#039;s final damage, base attack would obviously be 1.&lt;br /&gt;
*&#039;&#039;&#039;Animation name&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;Prerequisites&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensibility.&lt;br /&gt;
*&#039;&#039;&#039;Special effects&#039;&#039;&#039;: Defines the attacks special effects as discussed above, also likely to be an xml script to allow for extensibility in the future.&lt;br /&gt;
*&#039;&#039;&#039;Area of Effect&#039;&#039;&#039;: Another XML Script, It would define if the attack is aoe or single target, if it is in fact aoe it would define directions effected, likely only the main four to start(front, left, right, back, or all around), and it would determine the size of the are effect.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
changed slightly in technical design but functions the same as planned, new technical design will be posted soon.&lt;br /&gt;
&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*This will more or less just be a simple data structure holding the various pieces of data that make up an attack.&lt;br /&gt;
*It will be structured much like psQuest is currently.&lt;br /&gt;
*It will also have a prequisite script much like psQuest does now with psQuestPrereqOP.&lt;br /&gt;
*There will also be a special effects script. This may not be fully fleshed out in Stage 1.&lt;br /&gt;
*And it would also handle area of effect script, though since area of effect is a much more standard thing, it will not work like the other scripts, instead it will just pull and set data values that will (in a later stage) be used by combatManager to determine who takes damage.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain lol.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8917</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8917"/>
		<updated>2011-06-14T20:58:36Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Combat Flow */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{warning|Much of this is currently out of date, I will come through and update it in the next couple days! -Landson 6/4/2011}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 6/8/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now.&lt;br /&gt;
*Make sure attacks can be used through the current action bar.&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage.&lt;br /&gt;
*I will be adding a virtual psAttack class which will be inherited by more specialized forms of attacks such as melee, range, and magic.&lt;br /&gt;
*Combat manager will manage the psAttacks with as little work actually done within it as possible, most all calculations and work will be done within psAttack classes.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;Multiplier&#039;&#039;&#039;: some attacks may do more or less damage than the base attack this multiplier should will be factored in with the final damage to get the attack&#039;s final damage, base attack would obviously be 1.&lt;br /&gt;
*&#039;&#039;&#039;Animation name&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;Prerequisites&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensibility.&lt;br /&gt;
*&#039;&#039;&#039;Special effects&#039;&#039;&#039;: Defines the attacks special effects as discussed above, also likely to be an xml script to allow for extensibility in the future.&lt;br /&gt;
*&#039;&#039;&#039;Area of Effect&#039;&#039;&#039;: Another XML Script, It would define if the attack is aoe or single target, if it is in fact aoe it would define directions effected, likely only the main four to start(front, left, right, back, or all around), and it would determine the size of the are effect.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
[[File:attackqueue.jpg]]&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*This will more or less just be a simple data structure holding the various pieces of data that make up an attack.&lt;br /&gt;
*It will be structured much like psQuest is currently.&lt;br /&gt;
*It will also have a prequisite script much like psQuest does now with psQuestPrereqOP.&lt;br /&gt;
*There will also be a special effects script. This may not be fully fleshed out in Stage 1.&lt;br /&gt;
*And it would also handle area of effect script, though since area of effect is a much more standard thing, it will not work like the other scripts, instead it will just pull and set data values that will (in a later stage) be used by combatManager to determine who takes damage.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain lol.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=File:Cmbtflow1.jpg&amp;diff=8916</id>
		<title>File:Cmbtflow1.jpg</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=File:Cmbtflow1.jpg&amp;diff=8916"/>
		<updated>2011-06-14T20:53:00Z</updated>

		<summary type="html">&lt;p&gt;Landson: uploaded a new version of &amp;quot;File:Cmbtflow1.jpg&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8911</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8911"/>
		<updated>2011-06-08T18:42:33Z</updated>

		<summary type="html">&lt;p&gt;Landson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{warning|Much of this is currently out of date, I will come through and update it in the next couple days! -Landson 6/4/2011}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
As I was going through the code I noticed a few things about the current combat system and the planeshift server system as a whole.&lt;br /&gt;
1) the current spell system has almost every feature that I want the actual combat system to have.&lt;br /&gt;
2) progression scripts handles a lot of the special features I want to be implemented, and it would be easier to add to this system rather than create something entirely new. This would also help the spell system which would father also help combat.&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
&lt;br /&gt;
* edited 6/8/2011&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 25th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager.(this now depends on a few things whether it will be this stage or next)&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
* Implement the current list of special effects through progression scripts&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 25th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 1st&lt;br /&gt;
&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*Create a UI element that shows all available attacks, looking similar to the spellbook now.&lt;br /&gt;
*Make sure attacks can be used through the current action bar.&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above. This could done through the power expression. may be done in stage 1.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: August 1st&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements. &lt;br /&gt;
*this will be a time to clean up code, optimize everything&lt;br /&gt;
*it will also be a buffer period for anything that didnt get done in stage 1 or stage 2.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
*Keep in mind this would be the first stage of the full design. as stated in the above goals, I am breaking this job up into more workable stagess, this stage won&#039;t contain many changes that are actually noticeable in combat(other than maybe a change in the way dual weapons are handled). This stage is simply meant to make the code to where it can more easily extend to what I&#039;m wanting it to do (as well as add things such as the database and queueing system, below).&lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding. It will likely be the only change that is noticeable while playing in this patch.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage. This will not make a noticeable difference yet because they will be identical, however in a later stage when I look at how to differentiate them it will make my job easier.&lt;br /&gt;
*Decay will remain untouched for now, but will have to be looked at and changed later to make up for the fact that dual wielding will not behave the same.&lt;br /&gt;
*attack calculation and application will remain mostly untouched in stage 1, however they will be heavily looked at and changed later.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;Multiplier&#039;&#039;&#039;: some attacks may do more or less damage than the base attack this multiplier should will be factored in with the final damage to get the attack&#039;s final damage, base attack would obviously be 1.&lt;br /&gt;
*&#039;&#039;&#039;Animation name&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;Prerequisites&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensibility.&lt;br /&gt;
*&#039;&#039;&#039;Special effects&#039;&#039;&#039;: Defines the attacks special effects as discussed above, also likely to be an xml script to allow for extensibility in the future.&lt;br /&gt;
*&#039;&#039;&#039;Area of Effect&#039;&#039;&#039;: Another XML Script, It would define if the attack is aoe or single target, if it is in fact aoe it would define directions effected, likely only the main four to start(front, left, right, back, or all around), and it would determine the size of the are effect.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
[[File:attackqueue.jpg]]&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*This will more or less just be a simple data structure holding the various pieces of data that make up an attack.&lt;br /&gt;
*It will be structured much like psQuest is currently.&lt;br /&gt;
*It will also have a prequisite script much like psQuest does now with psQuestPrereqOP.&lt;br /&gt;
*There will also be a special effects script. This may not be fully fleshed out in Stage 1.&lt;br /&gt;
*And it would also handle area of effect script, though since area of effect is a much more standard thing, it will not work like the other scripts, instead it will just pull and set data values that will (in a later stage) be used by combatManager to determine who takes damage.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain lol.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8908</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8908"/>
		<updated>2011-06-05T00:15:02Z</updated>

		<summary type="html">&lt;p&gt;Landson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{warning|Much of this is currently out of date, I will come through and update it in the next couple days! -Landson 6/4/2011}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 20th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager(This will be a base, not the finished product, it will be changed and added to through out the rest of the process).&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* adjust the combat damage MathScript to allow for Multipliers&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 20th&lt;br /&gt;
&lt;br /&gt;
Deadline: July 20th (Slightly more tentative)&lt;br /&gt;
&lt;br /&gt;
*Implement the current list of special effects, try to find ways to make them generic and as easy to create as adding to the script(currently due to the way they are, it will require adding to other parts of the code for each effect)&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*flesh out the perquisite script.&lt;br /&gt;
*Start to (possibly) collaborate with Zhan to create the UI elements&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: July 20th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements, however this is largley tenative on collaboration with Zhan. at bare minimum though I would like to have a better, scalable hotbar element, as well as a element that shows items wainting in the queue.  At most I would like to possibly have a widget that shows a list of all possible attacks you meet the perquisites to use.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
*Keep in mind this would be the first stage of the full design. as stated in the above goals, I am breaking this job up into more workable stagess, this stage won&#039;t contain many changes that are actually noticeable in combat(other than maybe a change in the way dual weapons are handled). This stage is simply meant to make the code to where it can more easily extend to what I&#039;m wanting it to do (as well as add things such as the database and queueing system, below).&lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding. It will likely be the only change that is noticeable while playing in this patch.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage. This will not make a noticeable difference yet because they will be identical, however in a later stage when I look at how to differentiate them it will make my job easier.&lt;br /&gt;
*Decay will remain untouched for now, but will have to be looked at and changed later to make up for the fact that dual wielding will not behave the same.&lt;br /&gt;
*attack calculation and application will remain mostly untouched in stage 1, however they will be heavily looked at and changed later.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;Multiplier&#039;&#039;&#039;: some attacks may do more or less damage than the base attack this multiplier should will be factored in with the final damage to get the attack&#039;s final damage, base attack would obviously be 1.&lt;br /&gt;
*&#039;&#039;&#039;Animation name&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;Prerequisites&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensibility.&lt;br /&gt;
*&#039;&#039;&#039;Special effects&#039;&#039;&#039;: Defines the attacks special effects as discussed above, also likely to be an xml script to allow for extensibility in the future.&lt;br /&gt;
*&#039;&#039;&#039;Area of Effect&#039;&#039;&#039;: Another XML Script, It would define if the attack is aoe or single target, if it is in fact aoe it would define directions effected, likely only the main four to start(front, left, right, back, or all around), and it would determine the size of the are effect.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
[[File:attackqueue.jpg]]&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*This will more or less just be a simple data structure holding the various pieces of data that make up an attack.&lt;br /&gt;
*It will be structured much like psQuest is currently.&lt;br /&gt;
*It will also have a prequisite script much like psQuest does now with psQuestPrereqOP.&lt;br /&gt;
*There will also be a special effects script. This may not be fully fleshed out in Stage 1.&lt;br /&gt;
*And it would also handle area of effect script, though since area of effect is a much more standard thing, it will not work like the other scripts, instead it will just pull and set data values that will (in a later stage) be used by combatManager to determine who takes damage.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain lol.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8907</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8907"/>
		<updated>2011-06-03T17:57:26Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Stage 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 20th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager(This will be a base, not the finished product, it will be changed and added to through out the rest of the process).&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* adjust the combat damage MathScript to allow for Multipliers&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 20th&lt;br /&gt;
&lt;br /&gt;
Deadline: July 20th (Slightly more tentative)&lt;br /&gt;
&lt;br /&gt;
*Implement the current list of special effects, try to find ways to make them generic and as easy to create as adding to the script(currently due to the way they are, it will require adding to other parts of the code for each effect)&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*flesh out the perquisite script.&lt;br /&gt;
*Start to (possibly) collaborate with Zhan to create the UI elements&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: July 20th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements, however this is largley tenative on collaboration with Zhan. at bare minimum though I would like to have a better, scalable hotbar element, as well as a element that shows items wainting in the queue.  At most I would like to possibly have a widget that shows a list of all possible attacks you meet the perquisites to use.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
*Keep in mind this would be the first stage of the full design. as stated in the above goals, I am breaking this job up into more workable stagess, this stage won&#039;t contain many changes that are actually noticeable in combat(other than maybe a change in the way dual weapons are handled). This stage is simply meant to make the code to where it can more easily extend to what I&#039;m wanting it to do (as well as add things such as the database and queueing system, below).&lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding. It will likely be the only change that is noticeable while playing in this patch.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage. This will not make a noticeable difference yet because they will be identical, however in a later stage when I look at how to differentiate them it will make my job easier.&lt;br /&gt;
*Decay will remain untouched for now, but will have to be looked at and changed later to make up for the fact that dual wielding will not behave the same.&lt;br /&gt;
*attack calculation and application will remain mostly untouched in stage 1, however they will be heavily looked at and changed later.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;Multiplier&#039;&#039;&#039;: some attacks may do more or less damage than the base attack this multiplier should will be factored in with the final damage to get the attack&#039;s final damage, base attack would obviously be 1.&lt;br /&gt;
*&#039;&#039;&#039;Animation name&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;Prerequisites&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensibility.&lt;br /&gt;
*&#039;&#039;&#039;Special effects&#039;&#039;&#039;: Defines the attacks special effects as discussed above, also likely to be an xml script to allow for extensibility in the future.&lt;br /&gt;
*&#039;&#039;&#039;Area of Effect&#039;&#039;&#039;: Another XML Script, It would define if the attack is aoe or single target, if it is in fact aoe it would define directions effected, likely only the main four to start(front, left, right, back, or all around), and it would determine the size of the are effect.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
[[File:attackqueue.jpg]]&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*This will more or less just be a simple data structure holding the various pieces of data that make up an attack.&lt;br /&gt;
*It will be structured much like psQuest is currently.&lt;br /&gt;
*It will also have a prequisite script much like psQuest does now with psQuestPrereqOP.&lt;br /&gt;
*There will also be a special effects script. This may not be fully fleshed out in Stage 1.&lt;br /&gt;
*And it would also handle area of effect script, though since area of effect is a much more standard thing, it will not work like the other scripts, instead it will just pull and set data values that will (in a later stage) be used by combatManager to determine who takes damage.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain lol.&lt;br /&gt;
* 6/3/2011 - I&#039;ve discovered a few things that could cause a few internal design changes.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8906</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8906"/>
		<updated>2011-05-31T21:00:47Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Stage 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 20th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager(This will be a base, not the finished product, it will be changed and added to through out the rest of the process).&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* adjust the combat damage MathScript to allow for Multipliers&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 20th&lt;br /&gt;
&lt;br /&gt;
Deadline: July 20th (Slightly more tentative)&lt;br /&gt;
&lt;br /&gt;
*Implement the current list of special effects, try to find ways to make them generic and as easy to create as adding to the script(currently due to the way they are, it will require adding to other parts of the code for each effect)&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*flesh out the perquisite script.&lt;br /&gt;
*Start to (possibly) collaborate with Zhan to create the UI elements&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: July 20th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements, however this is largley tenative on collaboration with Zhan. at bare minimum though I would like to have a better, scalable hotbar element, as well as a element that shows items wainting in the queue.  At most I would like to possibly have a widget that shows a list of all possible attacks you meet the perquisites to use.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
*Keep in mind this would be the first stage of the full design. as stated in the above goals, I am breaking this job up into more workable stagess, this stage won&#039;t contain many changes that are actually noticeable in combat(other than maybe a change in the way dual weapons are handled). This stage is simply meant to make the code to where it can more easily extend to what I&#039;m wanting it to do (as well as add things such as the database and queueing system, below).&lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding. It will likely be the only change that is noticeable while playing in this patch.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage. This will not make a noticeable difference yet because they will be identical, however in a later stage when I look at how to differentiate them it will make my job easier.&lt;br /&gt;
*Decay will remain untouched for now, but will have to be looked at and changed later to make up for the fact that dual wielding will not behave the same.&lt;br /&gt;
*attack calculation and application will remain mostly untouched in stage 1, however they will be heavily looked at and changed later.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;Multiplier&#039;&#039;&#039;: some attacks may do more or less damage than the base attack this multiplier should will be factored in with the final damage to get the attack&#039;s final damage, base attack would obviously be 1.&lt;br /&gt;
*&#039;&#039;&#039;Animation name&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;Prerequisites&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensibility.&lt;br /&gt;
*&#039;&#039;&#039;Special effects&#039;&#039;&#039;: Defines the attacks special effects as discussed above, also likely to be an xml script to allow for extensibility in the future.&lt;br /&gt;
*&#039;&#039;&#039;Area of Effect&#039;&#039;&#039;: Another XML Script, It would define if the attack is aoe or single target, if it is in fact aoe it would define directions effected, likely only the main four to start(front, left, right, back, or all around), and it would determine the size of the are effect.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
[[File:attackqueue.jpg]]&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*This will more or less just be a simple data structure holding the various pieces of data that make up an attack.&lt;br /&gt;
*It will be structured much like psQuest is currently.&lt;br /&gt;
*It will also have a prequisite script much like psQuest does now with psQuestPrereqOP.&lt;br /&gt;
*There will also be a special effects script. This may not be fully fleshed out in Stage 1.&lt;br /&gt;
*And it would also handle area of effect script, though since area of effect is a much more standard thing, it will not work like the other scripts, instead it will just pull and set data values that will (in a later stage) be used by combatManager to determine who takes damage.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;br /&gt;
*5/31/2011 - Prerequisites now fully work as intended. Attacks Can now be added to the queue from the client. Hmmmm that took a lot more work to do than explain lol.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8856</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8856"/>
		<updated>2011-05-15T15:55:28Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Stage 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 20th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager(This will be a base, not the finished product, it will be changed and added to through out the rest of the process).&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* adjust the combat damage MathScript to allow for Multipliers&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 20th&lt;br /&gt;
&lt;br /&gt;
Deadline: July 20th (Slightly more tentative)&lt;br /&gt;
&lt;br /&gt;
*Implement the current list of special effects, try to find ways to make them generic and as easy to create as adding to the script(currently due to the way they are, it will require adding to other parts of the code for each effect)&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*flesh out the perquisite script.&lt;br /&gt;
*Start to (possibly) collaborate with Zhan to create the UI elements&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: July 20th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements, however this is largley tenative on collaboration with Zhan. at bare minimum though I would like to have a better, scalable hotbar element, as well as a element that shows items wainting in the queue.  At most I would like to possibly have a widget that shows a list of all possible attacks you meet the perquisites to use.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
*Keep in mind this would be the first stage of the full design. as stated in the above goals, I am breaking this job up into more workable stagess, this stage won&#039;t contain many changes that are actually noticeable in combat(other than maybe a change in the way dual weapons are handled). This stage is simply meant to make the code to where it can more easily extend to what I&#039;m wanting it to do (as well as add things such as the database and queueing system, below).&lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding. It will likely be the only change that is noticeable while playing in this patch.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage. This will not make a noticeable difference yet because they will be identical, however in a later stage when I look at how to differentiate them it will make my job easier.&lt;br /&gt;
*Decay will remain untouched for now, but will have to be looked at and changed later to make up for the fact that dual wielding will not behave the same.&lt;br /&gt;
*attack calculation and application will remain mostly untouched in stage 1, however they will be heavily looked at and changed later.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;Multiplier&#039;&#039;&#039;: some attacks may do more or less damage than the base attack this multiplier should will be factored in with the final damage to get the attack&#039;s final damage, base attack would obviously be 1.&lt;br /&gt;
*&#039;&#039;&#039;Animation name&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;Prerequisites&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensibility.&lt;br /&gt;
*&#039;&#039;&#039;Special effects&#039;&#039;&#039;: Defines the attacks special effects as discussed above, also likely to be an xml script to allow for extensibility in the future.&lt;br /&gt;
*&#039;&#039;&#039;Area of Effect&#039;&#039;&#039;: Another XML Script, It would define if the attack is aoe or single target, if it is in fact aoe it would define directions effected, likely only the main four to start(front, left, right, back, or all around), and it would determine the size of the are effect.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
[[File:attackqueue.jpg]]&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*This will more or less just be a simple data structure holding the various pieces of data that make up an attack.&lt;br /&gt;
*It will be structured much like psQuest is currently.&lt;br /&gt;
*It will also have a prequisite script much like psQuest does now with psQuestPrereqOP.&lt;br /&gt;
*There will also be a special effects script. This may not be fully fleshed out in Stage 1.&lt;br /&gt;
*And it would also handle area of effect script, though since area of effect is a much more standard thing, it will not work like the other scripts, instead it will just pull and set data values that will (in a later stage) be used by combatManager to determine who takes damage.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;br /&gt;
* 5/15/2011 - I now have a basic attack structure made, as well as a database to hold the attacks, now adding a basic structure for requirement scripts.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8843</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8843"/>
		<updated>2011-05-11T12:53:46Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Technical Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 20th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager(This will be a base, not the finished product, it will be changed and added to through out the rest of the process).&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* adjust the combat damage MathScript to allow for Multipliers&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: June 20th&lt;br /&gt;
&lt;br /&gt;
Deadline: July 20th (Slightly more tentative)&lt;br /&gt;
&lt;br /&gt;
*Implement the current list of special effects, try to find ways to make them generic and as easy to create as adding to the script(currently due to the way they are, it will require adding to other parts of the code for each effect)&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*flesh out the perquisite script.&lt;br /&gt;
*Start to (possibly) collaborate with Zhan to create the UI elements&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: July 20th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements, however this is largley tenative on collaboration with Zhan. at bare minimum though I would like to have a better, scalable hotbar element, as well as a element that shows items wainting in the queue.  At most I would like to possibly have a widget that shows a list of all possible attacks you meet the perquisites to use.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
*Keep in mind this would be the first stage of the full design. as stated in the above goals, I am breaking this job up into more workable stagess, this stage won&#039;t contain many changes that are actually noticeable in combat(other than maybe a change in the way dual weapons are handled). This stage is simply meant to make the code to where it can more easily extend to what I&#039;m wanting it to do (as well as add things such as the database and queueing system, below).&lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding. It will likely be the only change that is noticeable while playing in this patch.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage. This will not make a noticeable difference yet because they will be identical, however in a later stage when I look at how to differentiate them it will make my job easier.&lt;br /&gt;
*Decay will remain untouched for now, but will have to be looked at and changed later to make up for the fact that dual wielding will not behave the same.&lt;br /&gt;
*attack calculation and application will remain mostly untouched in stage 1, however they will be heavily looked at and changed later.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;Multiplier&#039;&#039;&#039;: some attacks may do more or less damage than the base attack this multiplier should will be factored in with the final damage to get the attack&#039;s final damage, base attack would obviously be 1.&lt;br /&gt;
*&#039;&#039;&#039;Animation name&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;Prerequisites&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensibility.&lt;br /&gt;
*&#039;&#039;&#039;Special effects&#039;&#039;&#039;: Defines the attacks special effects as discussed above, also likely to be an xml script to allow for extensibility in the future.&lt;br /&gt;
*&#039;&#039;&#039;Area of Effect&#039;&#039;&#039;: Another XML Script, It would define if the attack is aoe or single target, if it is in fact aoe it would define directions effected, likely only the main four to start(front, left, right, back, or all around), and it would determine the size of the are effect.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
[[File:attackqueue.jpg]]&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*This will more or less just be a simple data structure holding the various pieces of data that make up an attack.&lt;br /&gt;
*It will be structured much like psQuest is currently.&lt;br /&gt;
*It will also have a prequisite script much like psQuest does now with psQuestPrereqOP.&lt;br /&gt;
*There will also be a special effects script. This may not be fully fleshed out in Stage 1.&lt;br /&gt;
*And it would also handle area of effect script, though since area of effect is a much more standard thing, it will not work like the other scripts, instead it will just pull and set data values that will (in a later stage) be used by combatManager to determine who takes damage.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8842</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8842"/>
		<updated>2011-05-11T12:52:53Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Stage 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:May 11th&lt;br /&gt;
&lt;br /&gt;
Deadline: June 20th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager(This will be a base, not the finished product, it will be changed and added to through out the rest of the process).&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* adjust the combat damage MathScript to allow for Multipliers&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: ....&lt;br /&gt;
&lt;br /&gt;
Deadline: July 20th (Slightly more tentative)&lt;br /&gt;
&lt;br /&gt;
*Implement the current list of special effects, try to find ways to make them generic and as easy to create as adding to the script(currently due to the way they are, it will require adding to other parts of the code for each effect)&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*flesh out the perquisite script.&lt;br /&gt;
*Start to (possibly) collaborate with Zhan to create the UI elements&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: ....&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements, however this is largley tenative on collaboration with Zhan. at bare minimum though I would like to have a better, scalable hotbar element, as well as a element that shows items wainting in the queue.  At most I would like to possibly have a widget that shows a list of all possible attacks you meet the perquisites to use.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
*Keep in mind this would be the first stage of the full design. as stated in the above goals, I am breaking this job up into more workable stagess, this stage won&#039;t contain many changes that are actually noticeable in combat(other than maybe a change in the way dual weapons are handled). This stage is simply meant to make the code to where it can more easily extend to what I&#039;m wanting it to do (as well as add things such as the database and queueing system, below).&lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding. It will likely be the only change that is noticeable while playing in this patch.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage. This will not make a noticeable difference yet because they will be identical, however in a later stage when I look at how to differentiate them it will make my job easier.&lt;br /&gt;
*Decay will remain untouched for now, but will have to be looked at and changed later to make up for the fact that dual wielding will not behave the same.&lt;br /&gt;
*attack calculation and application will remain mostly untouched in stage 1, however they will be heavily looked at and changed later.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;Multiplier&#039;&#039;&#039;: some attacks may do more or less damage than the base attack this multiplier should will be factored in with the final damage to get the attack&#039;s final damage, base attack would obviously be 1.&lt;br /&gt;
*&#039;&#039;&#039;Animation name&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;Prerequisites&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensibility.&lt;br /&gt;
*&#039;&#039;&#039;Special effects&#039;&#039;&#039;: Defines the attacks special effects as discussed above, also likely to be an xml script to allow for extensibility in the future.&lt;br /&gt;
*&#039;&#039;&#039;Area of Effect&#039;&#039;&#039;: Another XML Script, It would define if the attack is aoe or single target, if it is in fact aoe it would define directions effected, likely only the main four to start(front, left, right, back, or all around), and it would determine the size of the are effect.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
[[File:attackqueue.jpg]]&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*This will more or less just be a simple data structure holding the various pieces of data that make up an attack.&lt;br /&gt;
*It will be structured much like psQuest is currently.&lt;br /&gt;
*It will also have a prequisite script much like psQuest does now with psQuestPrereqOP.&lt;br /&gt;
*There will also be a special effects script. This may not be fully fleshed out in Stage 1.&lt;br /&gt;
*And it would also handle area of effect script, though since area of effect is a much more standard thing, it will not work like the other scripts, instead it will just pull and set data values that will (in a later stage) be used by combatManager to determine who takes damage.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8841</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8841"/>
		<updated>2011-05-11T01:01:22Z</updated>

		<summary type="html">&lt;p&gt;Landson: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
==== Stage 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:....&lt;br /&gt;
&lt;br /&gt;
Deadline: June 20th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager(This will be a base, not the finished product, it will be changed and added to through out the rest of the process).&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* adjust the combat damage MathScript to allow for Multipliers&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
&lt;br /&gt;
By The End of Stage 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Stage 2 ====&lt;br /&gt;
Starts: ....&lt;br /&gt;
&lt;br /&gt;
Deadline: July 20th (Slightly more tentative)&lt;br /&gt;
&lt;br /&gt;
*Implement the current list of special effects, try to find ways to make them generic and as easy to create as adding to the script(currently due to the way they are, it will require adding to other parts of the code for each effect)&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*flesh out the perquisite script.&lt;br /&gt;
*Start to (possibly) collaborate with Zhan to create the UI elements&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this Stage 2 I would like to have a fully functional background combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Stage 3 ====&lt;br /&gt;
Starts: ....&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements, however this is largley tenative on collaboration with Zhan. at bare minimum though I would like to have a better, scalable hotbar element, as well as a element that shows items wainting in the queue.  At most I would like to possibly have a widget that shows a list of all possible attacks you meet the perquisites to use.&lt;br /&gt;
&lt;br /&gt;
==== Stage 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Stage: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
*Keep in mind this would be the first stage of the full design. as stated in the above goals, I am breaking this job up into more workable stagess, this stage won&#039;t contain many changes that are actually noticeable in combat(other than maybe a change in the way dual weapons are handled). This stage is simply meant to make the code to where it can more easily extend to what I&#039;m wanting it to do (as well as add things such as the database and queueing system, below).&lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this stage I will make changes to set up dual wielding. It will likely be the only change that is noticeable while playing in this patch.&lt;br /&gt;
* As stated in the chart, in this stage energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy an integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this stage. This will not make a noticeable difference yet because they will be identical, however in a later stage when I look at how to differentiate them it will make my job easier.&lt;br /&gt;
*Decay will remain untouched for now, but will have to be looked at and changed later to make up for the fact that dual wielding will not behave the same.&lt;br /&gt;
*attack calculation and application will remain mostly untouched in stage 1, however they will be heavily looked at and changed later.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;Multiplier&#039;&#039;&#039;: some attacks may do more or less damage than the base attack this multiplier should will be factored in with the final damage to get the attack&#039;s final damage, base attack would obviously be 1.&lt;br /&gt;
*&#039;&#039;&#039;Animation name&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;Prerequisites&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensibility.&lt;br /&gt;
*&#039;&#039;&#039;Special effects&#039;&#039;&#039;: Defines the attacks special effects as discussed above, also likely to be an xml script to allow for extensibility in the future.&lt;br /&gt;
*&#039;&#039;&#039;Area of Effect&#039;&#039;&#039;: Another XML Script, It would define if the attack is aoe or single target, if it is in fact aoe it would define directions effected, likely only the main four to start(front, left, right, back, or all around), and it would determine the size of the are effect.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
[[File:attackqueue.jpg]]&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*This will more or less just be a simple data structure holding the various pieces of data that make up an attack.&lt;br /&gt;
*It will be structured much like psQuest is currently.&lt;br /&gt;
*It will also have a prequisite script much like psQuest does now with psQuestPrereqOP.&lt;br /&gt;
*There will also be a special effects script. This may not be fully fleshed out in Stage 1.&lt;br /&gt;
*And it would also handle area of effect script, though since area of effect is a much more standard thing, it will not work like the other scripts, instead it will just pull and set data values that will (in a later stage) be used by combatManager to determine who takes damage.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Current Progress ==&lt;br /&gt;
=== Stage 1 ===&lt;br /&gt;
&lt;br /&gt;
* 5/10/2011 - Design of stage 1 is solid enough that I feel I can start coding.&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
	<entry>
		<id>https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8838</id>
		<title>Combat enhancements</title>
		<link rel="alternate" type="text/html" href="https://planeshift.top-ix.org//pswiki/index.php?title=Combat_enhancements&amp;diff=8838"/>
		<updated>2011-05-06T18:03:23Z</updated>

		<summary type="html">&lt;p&gt;Landson: /* Part 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;small&amp;gt;&#039;&#039;&#039;[[GSoC_2011|GSoC 2011]] &amp;gt; Combat Enhancement&#039;&#039;&#039;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:left; margin-right:20px; margin-bottom:15px&amp;quot;&amp;gt;__TOC__&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG&#039;s in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.&lt;br /&gt;
&lt;br /&gt;
== Combat Design ==&lt;br /&gt;
&lt;br /&gt;
=== Current Design ===&lt;br /&gt;
PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).&lt;br /&gt;
Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.&lt;br /&gt;
There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.&lt;br /&gt;
All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.&lt;br /&gt;
Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.&lt;br /&gt;
&lt;br /&gt;
NPCs/Monsters can be:&lt;br /&gt;
* invulnerable (in this case you cannot even attack them)&lt;br /&gt;
* peaceful but able to fight back. They will not attack by themselves unless provoked.&lt;br /&gt;
* attack on sight. They will attack as soon as you approach them.&lt;br /&gt;
&lt;br /&gt;
When you attack a monster you enter in his hate list, and he will chase you and attack you.&lt;br /&gt;
Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.&lt;br /&gt;
Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.&lt;br /&gt;
&lt;br /&gt;
=== Goals ===&lt;br /&gt;
&lt;br /&gt;
==== An Attack Style System ====&lt;br /&gt;
*Attacks can only be executed in certain stances&lt;br /&gt;
*Attacks that can only be executed by holding certain weapons &lt;br /&gt;
*Certain armors maybe hindering power of certain attacks?&lt;br /&gt;
&lt;br /&gt;
==== Queuing System ====&lt;br /&gt;
*Attacks can be added to a queue through a hotbar&lt;br /&gt;
*The attack queue would be shown in a UI element&lt;br /&gt;
*if nothing is in the queue then the &amp;quot;normal&amp;quot; attack is used&lt;br /&gt;
&lt;br /&gt;
==== Differentiate between range and melee ====&lt;br /&gt;
*add a quiver equipment slot&lt;br /&gt;
*Maybe the closer you are to the monster, the more damage the hit does; this gives range a unique mechanic in that your using it to be farther away and be safe, but getting closer will allow more damage, so you have to find the sweet point where you are far enough away to be safe, but close enough to do enough damage.&lt;br /&gt;
&lt;br /&gt;
==== Special Effects ====&lt;br /&gt;
*the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle&lt;br /&gt;
*one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison&lt;br /&gt;
*temporary paralysis?&lt;br /&gt;
*extra damage to certain creatures&lt;br /&gt;
*ignore a percentage of armor&lt;br /&gt;
*Boost current stats&lt;br /&gt;
*always attack a certain target location&lt;br /&gt;
*Do extra decay to an enemy weapon&lt;br /&gt;
*This list would be a good start, as I said it would be easily extensible so more can easily be added.&lt;br /&gt;
&lt;br /&gt;
==== Misc. ====&lt;br /&gt;
*make single wielding and dual wielding matter, for instance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?&lt;br /&gt;
&lt;br /&gt;
== Technical Details ==&lt;br /&gt;
&lt;br /&gt;
=== Goals and Deadlines ===&lt;br /&gt;
==== Part 1 ====&lt;br /&gt;
&lt;br /&gt;
Starts:....&lt;br /&gt;
&lt;br /&gt;
Deadline: June 20th&lt;br /&gt;
&lt;br /&gt;
* Create the attack database and include a few example elements. &lt;br /&gt;
* Design and implement a new combat manager(This will be a base, not the finished product, it will be changed and added to through out the rest of the process).&lt;br /&gt;
* Implement the queueing system&lt;br /&gt;
* Include the queue in the psCharacter, so that each character has it&#039;s own queue, required as part of combatManager.&lt;br /&gt;
* Make CacheManager Load Attacks up from the database at startup&lt;br /&gt;
* adjust the combat damage MathScript to allow for Multipliers&lt;br /&gt;
* Create psAttack to as a data structure to hold the attacks in cache as well as in the queue, and to be used in combatManager.&lt;br /&gt;
&lt;br /&gt;
By The End of Part 1, I expect combat to be useable much as it is today, it will be more of a base system without any real new features. But it is meant to be extendable to make rest of development easier.&lt;br /&gt;
&lt;br /&gt;
==== Part 2 ====&lt;br /&gt;
Starts: ....&lt;br /&gt;
&lt;br /&gt;
Deadline: July 20th (Slightly more tentative)&lt;br /&gt;
&lt;br /&gt;
*Implement the current list of special effects, try to find ways to make them generic and as easy to create as adding to the script(currently due to the way they are, it will require adding to other parts of the code for each effect)&lt;br /&gt;
*Implement Area of Effect&lt;br /&gt;
*flesh out the perquisite script.&lt;br /&gt;
*Start to (possibly) collaborate with Zhan to create the UI elements&lt;br /&gt;
*Create a player command system to allow users to choose attacks, this will allow the new attack system to be used in some way until the UI elements are complete.&lt;br /&gt;
*Create the range/melee differentiation, possibly the distance factor as mentioned above.&lt;br /&gt;
*Work on testing different possibilities of how decay could be changed to work with the new dual wielding system.&lt;br /&gt;
*add some different attacks to the database, for testing over the next couple weeks after this part&lt;br /&gt;
&lt;br /&gt;
By the end of this part I would like to have a fully functional combat system, not yet any UI elements, but working through commands.&lt;br /&gt;
&lt;br /&gt;
==== Part 3 ====&lt;br /&gt;
Starts: ....&lt;br /&gt;
&lt;br /&gt;
Deadline: August 10th&lt;br /&gt;
&lt;br /&gt;
*Would like to be done with UI Elements, however this is largley tenative on collaboration with Zhan or other&#039;s within the UI department. at bare minimum though I would like to have a better, scalable hotbar element, as well as a element that shows items wainting in the queue.  At most I would like to possibly have a widget that shows a list of all possible attacks you meet the perquisites to use.&lt;br /&gt;
&lt;br /&gt;
==== Part 4 ====&lt;br /&gt;
&lt;br /&gt;
Starts : August 10th&lt;br /&gt;
&lt;br /&gt;
Deadline: August 20th&lt;br /&gt;
&lt;br /&gt;
*This stage will be used soley for testing purposes, there will be no new features added.&lt;br /&gt;
*This is where values will be adjusted to make sure everything stays balanced, as well as trying out as many attack types as possible to find possibly bugs and fix them.&lt;br /&gt;
&lt;br /&gt;
=== Technical Designs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Currently Designing Part: 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Combat Flow ====&lt;br /&gt;
[[File:cmbtflow1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Some Notes on Planned Changes : &lt;br /&gt;
*Keep in mind this would be the first part of the full design. as stated in the above goals, I am breaking this job up into more workable parts, this part won&#039;t contain many changes that are actually noticeable in combat(other than maybe a change in the way dual weapons are handled). This part is simply meant to make the code to where it can more easily extend to what I&#039;m wanting it to do (as well as add things such as the database and queueing system, below).&lt;br /&gt;
* I am wanting to make dual wielding more of a specialist mechanic, I want it to have a place in role play as well as make combat more fun. At the moment I really feel like it simply is the most efficient way of fighting. See above on how I want to do this, but in this part I will make changes to set up dual wielding. It will likely be the only change that is noticeable while playing in this patch.&lt;br /&gt;
* As stated in the chart, in this part energy calculations and it&#039;s role will remain the same, completely untouched. This may change later down the road, I&#039;m still trying to decide how to make more powerful attacks cost more while maintaining the roleplay atmosphere. Making energy and integral part of the new attack system could be an answer.&lt;br /&gt;
*I really want to separate range and melee logic in this part. This will not make a noticeable difference yet because they will be identical, however in a later part when I look at how to differentiate them it will make my job easier.&lt;br /&gt;
*Decay will remain untouched for now, but will have to be looked at and changed later to make up for the fact that dual wielding will not behave the same.&lt;br /&gt;
*attack calculation and application will remain mostly untouched in part 1, however they will be heavily looked at and changed later.&lt;br /&gt;
&lt;br /&gt;
==== Fields in Attack Database ====&lt;br /&gt;
*&#039;&#039;&#039;ID&#039;&#039;&#039;&lt;br /&gt;
*&#039;&#039;&#039;Name&#039;&#039;&#039;: name of attack that should be shown in game.&lt;br /&gt;
*&#039;&#039;&#039;Multiplier&#039;&#039;&#039;: some attacks may do more or less damage than the base attack this multiplier should will be factored in with the final damage to get the attack&#039;s final damage, base attack would obviously be 1.&lt;br /&gt;
*&#039;&#039;&#039;Animation name&#039;&#039;&#039;: may not be useful right away, but I plan to implement a way for each attack to have it&#039;s own animation associated with it.&lt;br /&gt;
*&#039;&#039;&#039;Prerequisites&#039;&#039;&#039; : anything that the attack requires, could be a certain number of progression points, could be specific training,wielding a certain weapon, or even a certain completed quest. This will likely be an xml script to allow for easier extensibility.&lt;br /&gt;
*&#039;&#039;&#039;Special effects&#039;&#039;&#039;: Defines the attacks special effects as discussed above, also likely to be an xml script to allow for extensibility in the future.&lt;br /&gt;
*&#039;&#039;&#039;Area of Effect&#039;&#039;&#039;: Another XML Script, It would define if the attack is aoe or single target, if it is in fact aoe it would define directions effected, likely only the main four to start(front, left, right, back, or all around), and it would determine the size of the are effect.&lt;br /&gt;
&lt;br /&gt;
==== The Attack Queuing System ====&lt;br /&gt;
[[File:attackqueue.jpg]]&lt;br /&gt;
*The Queuing system will not technically be a queue by definition a queue, it&#039;ll work a lot more like a linked list with limited functionality&lt;br /&gt;
*Functionality will include, adding to the end, deleting any position except the head, deleting all attacks with the same specified name within the queue, limiting the size of the queue to a specified number, popping from the front, and it will pull Attack data from the cache based on attack name or ID number.&lt;br /&gt;
*Will require 2 classes, as any linked list would: the linked list class and the node class.&lt;br /&gt;
*The players queue will be held in the pscharacter class.&lt;br /&gt;
&lt;br /&gt;
==== psAttack ====&lt;br /&gt;
*This will more or less just be a simple data structure holding the various pieces of data that make up an attack.&lt;br /&gt;
*It will be structured much like psQuest is currently.&lt;br /&gt;
*It will also have a prequisite script much like psQuest does now with psQuestPrereqOP.&lt;br /&gt;
*There will also be a special effects script. This may not be fully fleshed out in Part 1.&lt;br /&gt;
*And it would also handle area of effect script, though since area of effect is a much more standard thing, it will not work like the other scripts, instead it will just pull and set data values that will (in a later part) be used by combatManager to determine who takes damage.&lt;br /&gt;
&lt;br /&gt;
==== Class level Design ====&lt;br /&gt;
[[File:AttackClassDesign.jpg]]&lt;/div&gt;</summary>
		<author><name>Landson</name></author>
	</entry>
</feed>