StendhalRefactoring: Difference between revisions

From Arianne
Jump to navigation Jump to search
Content deleted Content added
imported>MiguelAngelBlanchLardin
imported>MiguelAngelBlanchLardin
No edit summary
Line 1: Line 1:
This page propose goals to achieve in next releases of Stendhal.<br>
So please feel free to add new things that we may have forgotten.

__NOTOC__

=Items=
=Items=
==List==
==List==
Line 30: Line 35:
* Huge sword
* Huge sword
* Blessed sword
* Blessed sword

===Axes===

===Clubs===

===Range weapons===
* Bow
* Crossbow
* Throwing knifes

===Arrows===
* Arrow


===Armors===
===Armors===

Revision as of 11:54, 26 October 2005

This page propose goals to achieve in next releases of Stendhal.
So please feel free to add new things that we may have forgotten.


Items

List

We can have two types of items lists:

  • Tibia like list
  • AD&D like list

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. 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 )

We have the next items structure:

Shields

  • Wooden shield
  • Studded shield
  • Metal Plate shield
  • Copper shield
  • Silver shield
  • Gold shield
  • Mithril shield
  • Blessed shield

Swords

  • Knife
  • Dagger
  • Sword
  • Katana
  • Long sword
  • Scimitar
  • Broadsword
  • Two-handed sword
  • Huge sword
  • Blessed sword

Axes

Clubs

Range weapons

  • Bow
  • Crossbow
  • 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

List

Feel free to expand this list.
Please be original :)

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


Animals

  • Boar
  • Caverat
  • Cobra
  • Bear
  • Giantrat
  • Rat
  • Wolf

Beholders

  • Beholder
  • Elder Beholder

Dragon

  • Green Dragon
  • Blue Dragon
  • White Dragon
  • Black Dragon

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:

  1. 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;
   }
  1. 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.