StendhalRefactoringCreatures: Difference between revisions

From Arianne
Jump to navigation Jump to search
Content deleted Content added
imported>StephenIerodiaconou
imported>StephenIerodiaconou
Line 92: Line 92:
* Vampire
* Vampire
* Lich
* Lich
* Mummy
* Skeletal Warrior
* Skeleton King


== Properties ==
== Properties ==

Revision as of 09:07, 31 October 2005

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
  • Dog
  • Cat
  • Sheep

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
  • Mummy
  • Skeletal Warrior
  • Skeleton King

Properties

We have several common attributes for all the creatures. Mainly:

  • Type
    This is going to be always creature
  • Class
    This is the main class. ie, elf, kobold, ...
  • Subclass
    This is the subclass, ie, elf warrior
  • XP value
    Value of the creature when killed
  • Attack
    Attack RP attribute
  • Defense
    Defense RP attribute
  • Dropped items
    • Item
    • Probability (0.0 - 1.0)
  • Slots
    • Capacity
  • Equiped items
    • Item
  • AI Behaviours

Art

The visual style of all creatures should have some consistency. Perhaps one or two people should be responsible for all creature design and drawing.

Extra information

Additionally creatures should explain:

  • tiled id
  • its name (ie for bosses)

Actions

  • Move
  • Stop
  • Chat
  • Tell
  • Outfit
  • Attack
  • Use
  • Use With
  • 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...

AI

Idea about AI is that it should be like a Lego. You use blocks to build a more complex figure. So AI should be based on small blocks of behaviour, each of them should be simple to do, and using that we can assign several profiles to the AI based on these behaviours.