StendhalRefactoring

From Arianne
Revision as of 11:02, 26 October 2005 by imported>MiguelAngelBlanchLardin
Jump to navigation Jump to search

Items

List

We have the next items structure:

Shields

  • Wooden shield
  • Studded shield
  • Metal Plate shield
  • Copper shield

Swords

  • Dagger
  • Sword
  • Long sword
  • Broadsword

Armors

  • Leather armor
  • Studded Leather armor
  • Plate Mail armor
  • Copper Plate armor

Boots

  • Sandals
  • Leather

Helmet

  • Leather helmet
  • Studded helmet
  • Chain Mail helmet
  • Viking helmet

Leg Armour

  • Leather Leg Armour
  • Studded Leather Leg Armour
  • Chain Mail 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 :)

Animals

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

Gargoyle

  • Gargoyle

Orcs

  • Demon Orc
  • Demon Orc Hunter
  • Demon Orc Lord
  • Demon Orc Warrior
  • Orc
  • Orc Hunter
  • Orc Lord
  • Orc Warrior

Kobold

  • Kobold

Goblin

  • Goblin

Ogre

  • Ogre

Troll

  • Troll

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.