StendhalRefactoring: Difference between revisions

Jump to navigation Jump to search
Content deleted Content added
imported>MiguelAngelBlanchLardin
No edit summary
imported>MiguelAngelBlanchLardin
No edit summary
Line 6: Line 6:


=Creatures=
=Creatures=
[[StendhalRefactoringCreatures| Creatures available after refactoring]]
==List==
Feel free to expand this list.<br>
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:
# 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=
=RP System=