StendhalRefactoring: Difference between revisions

Jump to navigation Jump to search
Content deleted Content added
imported>MiguelAngelBlanchLardin
No edit summary
imported>AntumDeluge
Code: remove outdated/implemented
 
(510 intermediate revisions by 19 users not shown)
Line 1: Line 1:
{{Navigation for Stendhal Top|Contributing}}
This page propose goals to achieve in next releases of Stendhal.<br>
{{Navigation for Stendhal Contributors}}
So please feel free to add new things that we may have forgotten.


This page proposes some possible, very long term, goals for Stendhal.<br>
__NOTOC__
Please see also [[StendhalOpenTasks]] for shorter term open tasks.


If you are interested in any of these goals, or have other ideas, please visit [[ChatWithOtherUsersDevs|IRC at irc.libera.chat #arianne]]
=Items=
=RP System=
==List==
[[StendhalRPProposal| ''Working document'' for RP System proposal]]<br>
We can have two types of items lists:
[[StendhalRefactoringRP| RP System proposal]]<br>
* Tibia like list
[[StendhalRefactoringRP#Skill_system|Skill System]]<br>
* AD&D like list
[[StendhalRefactoringRP#Melee_Combat|Combat: Melee]]<br>
[[StendhalRefactoringRP#Range_Combat|Combat: Range]]<br>
[[StendhalRefactoringRP#Magic|Magic]]<br>
[[StendhalRefactoringRP#Trading_system|Trading System]]<br>
[[StendhalRefactoringRP#Shopping_system|Shopping System]]<br>
[[StendhalRefactoringRP#Auctioning_system|Auctioning System]]<br>
[[StendhalRefactoringRP#Party_system|Party System]]<br>
[[StendhalJobs|Jobs System]]<br>


=Economy=
Tibia is more random, and has more items than AD&D, and you are encourage to upgrade your items, while AD&D abuses a bit of +1,+2.
[[StendhalEconomy|Balancing the economy]]
I think that we could try a mix approach perhaps, but i do see ridiculous to see pure AD&D approach like in shield+15 ( that is the difference between a wooden shield and a copper shield )


=Class System=
We have the next items structure:
[[StendhalRefactoringClassBasics|Class Basics]]<br>
===Shields===
<br>
* Wooden shield
About the different classes <br>
* Studded shield
[[StendhalRefactoringClassArcher|Class:Archer]]<br>
* Metal Plate shield
[[StendhalRefactoringClassMage|Class:Mage]]<br>
* Copper shield
[[StendhalRefactoringClassPriest|Class:Priest]]<br>
* Silver shield
[[StendhalRefactoringClassWarrior|Class:Warrior]]<br>
* Gold shield
<br>
* Mithril shield
[[StendhalRefactoringClassGeneral|General Skills]]<br>
* Blessed shield


===Swords===
* Knife
* Dagger
* Short sword
* Sword
* Katana
* Long sword
* Scimitar
* Broadsword
* Two-handed sword
* Huge sword
* Blessed sword


===Axes===
* Small axe
* Axe
* Two-handed axe
* Mithril Axe
* Dwarvish Axe
* Blessed Axe


= Items =
===Clubs===
* Club
* Hammer
* Battle Hammer
* Two-handed hammer


* [[StendhalRefactoringEquipment| Weapons & Armor System]]
===Range weapons===
* [[StendhalRefactoringItemsBase| Base Implementation page]] ''outdated''
* Bow
* [[StendhalRefactoringItems| Items available after refactoring, min level list]] ''outdated''
* Crossbow
* Spear
* Throwing knifes

===Arrows===
* Arrow

===Armors===
* Dress
* Leather armor
* Studded Leather armor
* Plate Mail armor
* Copper Plate armor
* Copper armor
* Silver armor
* Gold armor
* Mithril armor
* Blessed armor

===Boots===
* Sandals
* Leather boots

===Helmet===
* Leather helmet
* Studded helmet
* Chain Mail helmet
* Viking helmet
* Copper helmet
* Legion helmet
* Silver helmet
* Gold helmet
* Mithril helmet
* Blessed helmet

===Leg Armour===
* Leather Leg Armour
* Studded Leather Leg Armour
* Chain Mail Leg Armour
* Copper Leg Armour
* Silver Leg Armour
* Gold Leg Armour
* Mithril Leg Armour
* Blessed Leg Armour

===Corpse===

===Money===

===Book===

===Food===
* Meat
* Cheese
* Bread

== Properties ==
We have several common attributes for all the items. Mainly:
* Type
* Class
* Subclass

And some attributes that objects may or many not have:
* Attack
* Defense
* Quantity

== Extra information ==
Additionally items should explain:
* What slots can they be equipped
* tiled id


=Creatures=
=Creatures=
[[StendhalRefactoringCreatures| Creatures available after refactoring]]<br>
==List==
[[StendhalRefactoringCreatures#Actions| Creatures' actions available after refactoring]]<br>
Feel free to expand this list.<br>
[[StendhalRefactoringCreatures#Events| Creatures' events system proposal]]<br>
Please be original :)
[[StendhalRefactoringCreatures#AI| Creatures' AI system proposal]]<br>


Have a look to this: http://en.wikipedia.org/wiki/List_of_species_in_fantasy_fiction


=Out of Game=
* [[StendhalRefactoringUpdates]]


= Code =
===Animals===
* Boar
* Caverat
* Cobra
* Bear
* Giantrat
* Rat
* Wolf


* Improve rendering engine by adding dirty rectangles.
===Beholders===
* Beholder
* Elder Beholder


===Dragon===
* Green Dragon
* Blue Dragon
* White Dragon
* Black Dragon


[[Category:Development]]
===Dwarves===
* Dwarf
* Dwarf Warrior
* Dwarf Veteran
* Dwarf Leader

===Elves===
* Elf
* Elf Hunter
* Elf Warrior
* Elf Veteran
* Elf Leader
* Drow
* Drow Hunter
* Drow Warrior
* Drow Veteran
* Drow Leader

===Gargoyle===
* Gargoyle

===Giants===
* Ogre
* Hill Giants
* Cyclops
* Mountain Giants
* Fire Giants
* Ice Giants

===Goblin===
* Goblin
* Goblin Veteran
* Goblin Chief

===Human===
* Bandit
* Assassin
* Hunter

===Kobold===
* Kobold
* Kobold Hunter
* Kobold Chief

===Orcs===
* Orc
* Orc Hunter
* Orc Warrior
* Orc Veteran
* Orc Leader

===Troll===
* Young Troll
* Troll
* Troll Veteran
* Troll Chief

===Undead===
* Ghost
* Zombi
* Zombi Veteran
* Vampire
* Lich

== Actions ==
* Move
* Stop
* Chat
* Tell
* Outfit
* Attack
* Use
* Equip
* Drop
* Own ( a sheep )

== Events ==
I see two different approachs here:
# Active one, in the form of ''onAttack'', that requieres something like
Player.onAttack(target, weapon)
{
if(target is of type ghost)
{
return false;
}
return true;
}
# Passive one, in the form of ''onAttacked''
Ghost.onAttacked(source, weapon)
{
return false;
}

I think passive approach can lead to simpler more mantenible code. So I break the below list in those two categories.


Creatures can recieve the next list of events:

===Passive way===
====boolean onAttacked(attacker, weapon)====
''called when attacked by someone with a given weapon.''
====void onStopAttacked(target)====
''called when target stops attacking us''
====boolean onDamage(type, amount)====
''called when entity is damaged with the damage type (physical, fire, poison, magical, ... ) and the amount of damage done.''
====boolean onKilled(attacker, weapon)====
''called when attacked killed us with the given weapon''
====boolean onMove(x,y)====
''called when entity moves to x,y ( before moving in fact )''
====boolean onCollidedWith(source)====
''called when entity collide with another entity''
====boolean onEquipped(source, slot)====
''called when entity is equipped on the source entity and in the given slot''
====boolean onDropped(source, x, y)====
''called when entity is dropped by source to floor at position x,y''
====void onChat(source, text)====
''called when someone speaks near entity or write to entity''
====boolean onUsed(source)====
''called when entity is used by source''
====boolean onUsedWith(source, base)====
''called when entity is used by source on base item''
====boolean onStop()====
''called when entity stops moving, attacking, etc...''


===Active way===
==== boolean onAttack(target, weapon)====
''called when attacking a target with the given weapon.''
====void onStopAttack(target)====
''called when we stop attacking target''
====boolean onDamage(type, amount)====
''called when entity is damaged with the damage type (physical, fire, poison, magical, ... ) and the amount of damage done.''
====boolean onKill(target)====
''called when entity kills target''
====boolean onMove(x,y)====
''called when entity moves to x,y ( before moving in fact )''
====boolean onCollide(x,y)====
''called when entity collide at position x,y''
====boolean onCollideWith(target)====
''called when entity collide with another entity''
====boolean onEquip(item, slot)====
''called when entity equips item on the given slot''
====boolean onDrop(item, slot)====
''called when entity drops item from the given slot to floor''
====void onChat(source, text)====
''called when someone speaks near entity or write to entity''
====boolean onUse(item)====
''called when entity use item''
====boolean onUseWith(base, item)====
''called when entity use item on base item''
====boolean onStop()====
''called when entity stops moving, attacking, etc...''

=RP System=
We need a rebalance of the RP system so it is playable and fun for both newbiews and high levels.