Difference between revisions of "Complete roguelike tutorial using C++ and libtcod - extra 5: more generic items"

From RogueBasin
Jump to navigation Jump to search
(pasted →‎top: , cat and sidebar)
 
m (bullet points)
Line 7: Line 7:
They all select one or several targets :
They all select one or several targets :


the wearer of the item (health potion)
*the wearer of the item (health potion)
the wearer's closest enemy (lightning bolt)
*the wearer's closest enemy (lightning bolt)
a selected actor (confusion)
*a selected actor (confusion)
all actors close to a selected tile (fireball)
*all actors close to a selected tile (fireball)
 
A fifth way that is not yet used but might be useful would be :
A fifth way that is not yet used but might be useful would be :


all actors close to the wearer of the item
*all actors close to the wearer of the item
 
They all apply some effect to the selected targets :
They all apply some effect to the selected targets :


increase or decrease health (all but confusion)
*increase or decrease health (all but confusion)
temporary replace the target's Ai (confusion)
*temporary replace the target's Ai (confusion)
 
So instead of implementing the target selection and the effect in a class inheriting from Pickable, why not add a TargetSelector and an Effect directly to the Pickable class ?
So instead of implementing the target selection and the effect in a class inheriting from Pickable, why not add a TargetSelector and an Effect directly to the Pickable class ?




[[Category:Developing]]
[[Category:Developing]]

Revision as of 13:18, 23 October 2015

Complete roguelike tutorial using C++ and libtcod
-originally written by Jice
Text in this tutorial was released under the Creative Commons Attribution-ShareAlike 3.0 Unported and the GNU Free Documentation License (unversioned, with no invariant sections, front-cover texts, or back-cover texts) on 2015-09-21.


This article is an optional "extra" that implements more generic items, making it possible to create new items with less code. It can be applied on article 9 source code.

In article 9, we brought more variety to the items, but each new item required a new class inheriting from Pickable. Yet, we can see some pattern in the way pickable actors behave :

They all select one or several targets :

  • the wearer of the item (health potion)
  • the wearer's closest enemy (lightning bolt)
  • a selected actor (confusion)
  • all actors close to a selected tile (fireball)

A fifth way that is not yet used but might be useful would be :

  • all actors close to the wearer of the item

They all apply some effect to the selected targets :

  • increase or decrease health (all but confusion)
  • temporary replace the target's Ai (confusion)

So instead of implementing the target selection and the effect in a class inheriting from Pickable, why not add a TargetSelector and an Effect directly to the Pickable class ?