Ideas for Stendhal/Magic: Difference between revisions

From Arianne
Jump to navigation Jump to search
Content deleted Content added
imported>Redqueen
Added a spell image
imported>Madmetzger
GUI integration: added description for early testing
Line 75: Line 75:
*** Cast spells
*** Cast spells
*** visual effects
*** visual effects
** Allow early testing {{done}}
=== Allow early testing {{done}} ===
For being able to test as early as possible there is some code that enables to test the already implemented spells. There are basically three steps to consider:
*** Script SummonSpell to obtain a spell {{done}}
*** Slash action to cast a spell ''/cast'' {{done}}
# Equip the testing player with a spell via the script ''SummonSpell'':
/script SummonSpell [character] [spell name]
*** Mana can be manipulated via ''/alter'' {{done}} (was already there)
# Provide mana to the testing player (first one rises the base value and second alter gives actual mana):
/alter [character] base_mana add 1000
/alter [character] mana add 1000
# Use spell via slash action ''cast'':
/cast [spell id] [target name or id]
* Script SummonSpell to obtain a spell {{done}}
* Slash action to cast a spell ''/cast'' {{done}}
* Mana can be manipulated via ''/alter'' {{done}} (was already there)


== Graphic Ideas ==
== Graphic Ideas ==

Revision as of 11:28, 29 October 2011


Ideas for Stendhal

Mostly implemented


Related pages

Previous discussions from meetings

Defining spells

  • Spells should be configurable via XML
    • works so far see light.xml for example in CVS
  • Spells should follow the natures defined via the former DamageType
  • Spells have limitations
    • limited casting frequency (cool down time)
    • wearing special equipment (example in code)
    • spells should need knowledge to learn for casting them (partly )
  • Spells are separated into 2 parts:
    • The spell itself defining nature, mana use, cool down time and other possible prerequisites like equipment
    • Spell's effect defining what the spell does i.e. a simple healing spell just uses a healing effect that could be reused for a mass healing spell affecting all players in range
    • Effects that temporarily affect entity's attributes need changes to other classes, as it seems more reasonable to store changes separately. For example an effect boosting a player's attack should not simply adjust the player's attribute but the method calculating atk should consider such additional effects

Spell Ideas

  • Light
    • Heal - Healing yourself or multiple players around
    • Shield of Light - Increase defense for some time
  • Dark
    • Drain - Draining health from the enemy to heal yourself
  • Ice
    • Freeze - Slow down an enemy for some time
    • Snow Storm - Push away enemies
  • Fire
    • Fire ball - Ranged attack on one enemy
    • Explosion - Ranged attack on several enemies + pushing away the enemies around ( + damaging yourself a bit)
  • Unsorted from meeting discussions:
    • Healing (others but not self)
    • Attacking (fireball, water blast, etc)
    • Teleport away (to a random choice from preset locations)
    • Freeze creature for short time
    • Cloak of invisibility for short time
    • Boost skills for short time
    • Weaken creature
    • Summon friendly creature
    • Raise dead creature
    • Revive player (i.e. if you are near corpse you can bring them back so they don't have to walk from afterlife - require confirm from dead player)
    • Return to private house
    • Make campfire

Learning Spells

Learning spells should be a two step thing. First you have to solve a quest and then you can learn spells from a wizard in exchange of money. There should be one quest per nature and the quests should be startable by the fitting wizard then. As a rough scheme the learning quests could be a combination of collector and kill quest. For example it could be like “bring 5 carbuncles and kill a red dragon” if a someone wants to learn about fire magic.

There could be another quest, that enables the four other quests and rewards you with the necessary items like spellbook or magic wand. The starting NPC could also sell those items if you lost them after having solved that quest.

A shop for each nature is available after solving the learning quest for each nature. In those shops players will be able to buy new spells.

  • Learning spells
    • Quests per nature that allow player to buy spells from a shop
    • Reward of those quests could be a first spell additionally to being allowed to buy

GUI integration

The client has to support casting spells in several ways. First of all there is need for displaying spells and functionality for casting and target selection. Furthermore it is desirable to add some visual effects for a casted spell and even more some sound effects for that.

As a very first step it is helpful to be able to test spells without having the full infrastructure available. So there is a script called SummonSpell to obtain spells for a player and there's also a simple slash command that enables a tester to cast a spell at a desired target.

  • Client Integration
    • Client server communication
    • Small images to represent a spell
    • Images for
      • spellbook
      • magic wand
      • other magic equipment like a robe or sth
    • GUI integration
      • Show spells
      • Cast spells
      • visual effects

Allow early testing

For being able to test as early as possible there is some code that enables to test the already implemented spells. There are basically three steps to consider:

  1. Equip the testing player with a spell via the script SummonSpell:
/script SummonSpell [character] [spell name]
  1. Provide mana to the testing player (first one rises the base value and second alter gives actual mana):
/alter [character] base_mana add 1000
/alter [character] mana add 1000
  1. Use spell via slash action cast:
/cast [spell id] [target name or id]
  • Script SummonSpell to obtain a spell
  • Slash action to cast a spell /cast
  • Mana can be manipulated via /alter (was already there)

Graphic Ideas

Spell natures (ice, fire, light, dark)
Example for the spell "heal"
Example for the spell "fireball" - scary :)
Example for the spell "freeze"
Example for the spell "drain" - or something else :)
A bottle of mana

Balancing

  • Spells use mana
    • necessary attributes called mana and base_mana are already there
  • Mana should be regenerated
    • via potions
    • slowly when no attacks are aiming at the player
  • cooldown time

TODO

  • add more spells and effects as examples
  • extend entity classes with an entity based attribute value manipulator value effect
  • add graphics for spells
  • add spell book to client
  • add graphics for magician's equipment
  • develop quests to learn magic (one per nature)
    • dark
    • light
    • fire
    • ice
  • Check if SellerBehaviour could deal with spells