[Crossfire-wiki] [Crossfire DokuWiki] page changed: dev:spells
no-reply_wiki at metalforge.org
no-reply_wiki at metalforge.org
Fri Dec 1 10:08:29 CST 2006
A page in your DokuWiki was added or changed. Here are the details:
Date : 2006/12/01 10:08
User : ryo
Edit Summary: format
@@ -157,782 +157,500 @@
attributes as well, to balance out (eg attuned to Fire, repelled from
Protection, and denied from Restoration)
FIXME check above information :)
+
===== Spell subtypes =====
- This section lists specific spell subtypes and what they really
- do. The idea is to try and generalize the object types (cones,
- bolts, balls, etc). However, some number of spells, most notably
- detection spells, must have their own entries because the code that
- is actually executed needs to re-act accordingly.
+ This section lists specific spell subtypes and what they really do. The idea is to try and generalize the object types (cones, bolts, balls, etc). However, some number of spells, most notably detection spells, must have their own entries because the code that is actually executed needs to re-act accordingly.
- SP_RAISE_DEAD (1)
- These spells bring back dead players. These spells are only useful
- on servers that use PERMADEATH.
+ ==== SP_RAISE_DEAD (1) ====
+ These spells bring back dead players. These spells are only useful on servers that use PERMADEATH.
- Con: The number of con points the target character loses.
- exp: the experience loss ratio (eg, exp -= exp/spell->stats.exp.
- If zero, no exp is lost
- last_heal: If set, corpse isn't required, just character name
- randomitems: If set, then when the spell fails, the treasurelist is used
- to determine what nasty monsters to summon. Note that this
- list is not processed as a normal list - rather, everything
- on the list is created, so chance values are meaningless.
- race: If set, this is used as a treasurelist to determine what
- class to change the character to (reincarnation). Basically,
- it just looks up the treasurelist that is using the race name. This
- should be a treasureone type list.
+ * Con: The number of con points the target character loses.
+ * exp: the experience loss ratio (eg, exp -= exp/spell->stats.exp. If zero, no exp is lost
+ * last_heal: If set, corpse isn't required, just character name
+ * randomitems: If set, then when the spell fails, the treasurelist is used to determine what nasty monsters to summon. Note that this list is not processed as a normal list - rather, everything on the list is created, so chance values are meaningless.
+ * race: If set, this is used as a treasurelist to determine what class to change the character to (reincarnation). Basically, it just looks up the treasurelist that is using the race name. This should be a treasureone type list.
- SP_RUNE (2)
- Runes are objects that embed another spell in them, and are activated
- when someone walks on top of the rune. Runes can be disarmed.
+ ==== SP_RUNE (2) ====
+ Runes are objects that embed another spell in them, and are activated when someone walks on top of the rune. Runes can be disarmed.
- other_arch: This can be set to one of 3 values:
- Name of rune (type = rune): If this is the case, rune is put on
- the map with few changes.
- name of spell: In this case, the spell is embedded into the the rune.
- generic_rune object will be used, with the face updated.
- NULL: in this case, the player specifies the rune to embed.
- face: Face that the rune object will use.
+ * other_arch: This can be set to one of 3 values: 1) name of rune (type = rune). If this is the case, rune is put on the map with few changes. 2) name of spell. In this case, the spell is embedded into the the rune. generic_rune object will be used, with the face updated. 3) NULL. In this case, the player specifies the rune to embed.
+ * face: Face that the rune object will use.
- If other_arch is set in the spell object, then it is assumed that
- the sp (or grace) cost in the spell object is the total that should
- be used. If it is an embedded spell, then the cost will be in
- addition to that to cast the spell.
+ If other_arch is set in the spell object, then it is assumed that the sp (or grace) cost in the spell object is the total that should be used. If it is an embedded spell, then the cost will be in addition to that to cast the spell.
- Special rules for runes where player can choose what spell to embed:
- skill for the embedded spell must match the rune
- Player must have enough mana/grace to embed the spell as well as cast
- the actual rune.
+ Special rules for runes where player can choose what spell to embed: skill for the embedded spell must match the rune. Player must have enough mana/grace to embed the spell as well as cast the actual rune.
- Note that runes created by players/monsters will have the spell put into
- the rune's inventory. However, archetype runes will still use the other
- arch, as inventory in archetypes isn't really supported.
+ Note that runes created by players/monsters will have the spell put into the rune's inventory. However, archetype runes will still use the other arch, as inventory in archetypes isn't really supported.
- This really works fine - This allows custom spells to be embedded into
- runes. For archetypes, using the default spell archetypes work fine.
+ This really works fine - This allows custom spells to be embedded into runes. For archetypes, using the default spell archetypes work fine.
- SP_MAKE_MARK (3): This makes a 'mark' that contains a message. In the old
- system, this used to be part of the rune code, but it really doesn't
- have anything in common with runes (except in name).
+ ==== SP_MAKE_MARK (3) ====
- other_arch: Object used to store the message.
+ This makes a 'mark' that contains a message. In the old system, this used to be part of the rune code, but it really doesn't have anything in common with runes (except in name).
- SP_BOLT (4):
- This fires a bolt (other_arch) of the spell object. All of the
- following values are copied from the spell object and into the
- bolt object (other_arch in the spell object).
+ * other_arch: Object used to store the message.
- damage, attacktype, slaying have normal meaning
+ ==== SP_BOLT (4) ====
+ This fires a bolt (other_arch) of the spell object. All of the following values are copied from the spell object and into the bolt object (other_arch in the spell object).
- range (exp): How many more spaces this will go before it ends.
- duration (hp): How long it stays on each space.
- Dex: chane (percentage) the bolt has of forking
- Con: Chance that the bolt forks left.
+ * damage, attacktype, slaying have normal meaning
+ * range (exp): How many more spaces this will go before it ends.
+ * duration (hp): How long it stays on each space.
+ * Dex: chance (percentage) the bolt has of forking
+ * Con: Chance that the bolt forks left.
- Note if duration is less than range, which it should typically be,
- then a bolt will only be in a subsection of the entire range.
+ Note if duration is less than range, which it should typically be, then a bolt will only be in a subsection of the entire range.
- A bolt object can have the generator flag set, in which case as
- the bolt moves along, it will create an other_arch object. The
- steambolt is an example of this. This can not be set in the spell object,
- and is instead set in the other_arch field that the spell refers to.
+ A bolt object can have the generator flag set, in which case as the bolt moves along, it will create an other_arch object. The steambolt is an example of this. This can not be set in the spell object, and is instead set in the other_arch field that the spell refers to.
- SP_BULLET (5):
- Bullets are single objects that go in a direction and hit
- something. The simplest case here is magic bullet, that hits
- something and does damage.
+ ==== SP_BULLET (5) ====
- exploding ball type spells are a more complicated variation. These
- object start out as a bullet, but when they hit something, they
- explode, into fire or poison or the like. The other_arch field
- determines what they explode into.
+ Bullets are single objects that go in a direction and hit something. The simplest case here is magic bullet, that hits something and does damage.
- Values for spell object
- range: diameter of the explosion (copied into maxhp).
- Note that for the bullet itself, the range is always set to 50.
- other_arch: bullet object to create.
- dam: how much damage the bullet does.
- attacktype: copied to the bullet.
- slaying: copied to the bullet.
- duration: How long the explosion lasts for. Not used for bullet
- only spells. copied into hp field of the bullet object.
- food (& dam adjust): Damage the explosion does. copied into the bullet
- dam_modifier field.
+ Exploding ball type spells are a more complicated variation. These object start out as a bullet, but when they hit something, they explode, into fire or poison or the like. The other_arch field determines what they explode into.
- See notes about explosion below.
+ Values for spell object:
+ * range: diameter of the explosion (copied into maxhp). Note that for the bullet itself, the range is always set to 50.
+ * other_arch: bullet object to create.
+ * dam: how much damage the bullet does.
+ * attacktype: copied to the bullet.
+ * slaying: copied to the bullet.
+ * duration: How long the explosion lasts for. Not used for bullet only spells. copied into hp field of the bullet object.
+ * food (& dam adjust): Damage the explosion does. copied into the bullet dam_modifier field.
- SP_EXPLOSION (6):
- Objects of subtype explosion are really only useful when attached
- to a bullet - you don't really want to explode something on yourself.
+ See notes about explosion below.
- Note that the set up of the below values is also the same for
- SP_CONE types if a cone is attached to a bullet.
+ ==== SP_EXPLOSION (6) ====
- attacktype: from other_arch, but add magic if bullet has it.
- damage: this is copied over the the bullet dam_modifier. The
- bullet dam_modifier is based on the 'food' value
- range: Copied over from stats.maxhp. This determines the radius of the
- explosion.
- duration: copied over from stats.hp. This determines how long the
- explosion lingers.
+ Objects of subtype explosion are really only useful when attached to a bullet - you don't really want to explode something on yourself.
- Given two objects are created from one spell, tuning this/creating
- new spells of this type is tricky. We can only use the range for
- the bullet or explosion. Likewise, adjusting damage is difficult.
- Ideally, perhaps, some additional fields in the spell object itself
- are used to fully implement this, eg, these two fields determine the
- range/damage of the bullet, and these 3 determine range/blast/damage
- of the ball itself. That is the only real way to make a ball
- spell fully adjustable.
+ Note that the set up of the below values is also the same for SP_CONE types if a cone is attached to a bullet.
- SP_CONE (7):
- sp is the overall direction of the cone is moving in.
- other_arch: object to create as it moves along.
- flag_lifesave: if true, object never goes away (eg, lava)
- duration: This is how many ticks the spell stays on space.
- flag_stand_still (was food): Causes the object not to progress
+ * attacktype: from other_arch, but add magic if bullet has it.
+ * damage: this is copied over the the bullet dam_modifier. The bullet dam_modifier is based on the 'food' value
+ * range: Copied over from stats.maxhp. This determines the radius of the explosion.
+ * duration: copied over from stats.hp. This determines how long the explosion lingers.
- Note that SP_CONE can be the other_arch of a SP_BULLET. In this
- case, the set up of the cone values is as described in SP_EXPLOSION
- setting.
+ Given two objects are created from one spell, tuning this/creating new spells of this type is tricky. We can only use the range for the bullet or explosion. Likewise, adjusting damage is difficult. Ideally, perhaps, some additional fields in the spell object itself are used to fully implement this, eg, these two fields determine the range/damage of the bullet, and these 3 determine range/blast/damage of the ball itself. That is the only real way to make a ball spell fully adjustable.
- Note 2: The other_arch that is in the cone can really be any object.
- As such, the code does not modify this object, other than to
- set proper ownership. As such, you can't set what values will be
- set in the arch thus created
+ ==== SP_CONE (7) ====
+ * sp: overall direction of the cone is moving in.
+ * other_arch: object to create as it moves along.
+ * flag_lifesave: if true, object never goes away (eg, lava)
+ * duration: This is how many ticks the spell stays on space.
+ * flag_stand_still (was food): Causes the object not to progress
- vitriol is the best example of both of these notes - it starts out
- as a bullet, which then turns into a cone, which then drops acid
- pools.
+ Note that SP_CONE can be the other_arch of a SP_BULLET. In this case, the set up of the cone values is as described in SP_EXPLOSION setting.
- SP_BOMB (8):
- Bombs are as they are described - objects that sit around for
- a little while before exploding.
+ Note 2: The other_arch that is in the cone can really be any object. As such, the code does not modify this object, other than to set proper ownership. As such, you can't set what values will be set in the arch thus vitriol is the best example of both of these notes - it starts out as a bullet, which then turns into a cone, which then drops acid pools.
- The bomb itself is harmless - its not until it explodes do bad
- things happen.
+ ==== SP_BOMB (8) ====
- In the bomb object, the following attributes are set up:
- dam: damage of the flying fragments/explosion
- range: how far the fragments/explosion extends.
- duration: How long the explosion lasts.
- attacktype: Type of damage the bomb does.
+ Bombs are as they are described - objects that sit around for a little while before exploding.
- bombs tick at a constant rate, as defined by there speed. They explode
- when the finish their last animation. There is no way to adjust
- this rate of ticking in the spell object, other than to point
- other_arch at a customized bomb.
+ The bomb itself is harmless - its not until it explodes do bad things happen.
- A bomb then explodes. It explodes into 'splints' (this is
- unfortuantely hardcode), and the other_arch pointer of the bomb,
- which default is of SP_EXPLOSION.
+ In the bomb object, the following attributes are set up:
+ * dam: damage of the flying fragments/explosion
+ * range: how far the fragments/explosion extends.
+ * duration: How long the explosion lasts.
+ * attacktype: Type of damage the bomb does.
- SP_WONDER(9):
- wonder is a spell that will cast another spell. It will also sometimes
- cast a cone of flowers (other_arch).
+ bombs tick at a constant rate, as defined by there speed. They explode when the finish their last animation. There is no way to adjust this rate of ticking in the spell object, other than to point other_arch at a customized bomb.
- randomitems: treasure list to look for spell to cast.
+ A bomb then explodes. It explodes into 'splints' (this is unfortunately hardcoded), which are of type specified by the other_arch pointer of the bomb, which default to SP_EXPLOSION.
- Note old wonder code would only cast spell that would be found in
- books. This new code can be used to cast most any spell, as defined
- as in the treasurelist.
+ ==== SP_WONDER(9) ====
- Note 2: Ideally, the flower effect should also be in this treasure list,
- so the occurence could be accurately controlled.
+ Wonder is a spell that will cast another spell. It will also sometimes cast a cone of flowers (other_arch).
- SP_SMITE(10):
- smite spells are target spells - the spell looks for an appropriate
- enemy in the direction pointed, and if one is found, hits them with
- whatever is in the other_arch. It is generally assumed that other_arch
- will point to another spell.
+ * randomitems: treasure list to look for spell to cast.
- other_arch: Object to create.
- dam, range, duration (& modifiers) are copied into the spell effect
- that other_arch points to.
- attacktype: Attacktype to give to the spell effect.
+ Note old wonder code would only cast spell that would be found in books. This new code can be used to cast most any spell, as defined as in the treasurelist.
- Special notes if attacktype includes a death attacktype (finger
- of death):
- Won't work on undead - makes them strong.
- the level of the created object is set to the dam (& modifier)
- of the spell.
+ Note 2: Ideally, the flower effect should also be in this treasure list, so the occurence could be accurately controlled.
+ ==== SP_SMITE(10) ====
- SP_MAGIC_MISSILE(11):
- magic missiles are really just a bullet type object that have
- some more intelligence in their guiding (but not much). Basically,
- a magic missile will more or less go in the direction it is fired,
- but will adjust course to hit a monster. Thus, if something isn't
- perfectly lined up, magic missile will still hit it.
- range, attacktype, etc, all have normal meanings.
+ Smite spells are target spells - the spell looks for an appropriate enemy in the direction pointed, and if one is found, hits them with whatever is in the other_arch. It is generally assumed that other_arch will point to another spell.
+
+ * other_arch: Object to create.
+ * dam, range, duration (& modifiers) are copied into the spell effect that other_arch points to.
+ * attacktype: Attacktype to give to the spell effect.
+
+ Special notes if attacktype includes a death attacktype (finger of death):
+ * won't work on undead - makes them strong.
+ * won't work if target has magic resistance
+ * the level of the created object is set to the dam (& modifier) of the spell.
+
+
+ ==== SP_MAGIC_MISSILE(11) ====
+
+ Magic missiles are really just a bullet type object that have some more intelligence in their guiding (but not much). Basically, a magic missile will more or less go in the direction it is fired, but will adjust course to hit a monster. Thus, if something isn't perfectly lined up, magic missile will still hit it. range, attacktype, etc, all have normal meanings.
+ ==== SP_SUMMON_GOLEM(12) ====
+
+ This spell summons a friendly creature/object that helps out the player.
+
+ * other_arch: Pet/object this spell creates.
+ * race: If set to 'holy servant' or 'avatar', this is now a summon avatar spell, whose monster is determined based on the god being worshipped. Note that these names are just passed to determine_holy_arch()
+ * dam: How much damage the golem will do. dam_modifier alters this in the expected way. If zero, damage from the golem is used, but damage modifer will still be added.
+ * duration: increases the golems hp, which basically amounts to duration.
+ * attacktype: If set, golem gets this attacktype instead of the normal arch attacktype.
+ * range_modifier: This adjust the wc and speed of the creature.
+
+ Golems lose 1 hp each time they do something. This effectively limits their duration, but does mean it can be extended by healing the golem. Not sure if this is the way to go, or if duration should really just be used.
+
+ Note: the old code had ldam and ldur have multiple meanings, and the code multipled them by 10 internally. This is no longer done - instead, the archetype itself should have the real value (10 times the old compiled in values)
+
+ ==== SP_DIMENSION_DOOR(13) ====
+
+ Dimension door lets the player move some large number of spaces. One still can not teleport through no magic areas.
+ * range: how far we will move the player
+ * maxsp: level_modifier. Normal spell meaning.
- SP_SUMMON_GOLEM(12):
- This spell summons a friendly creature/object that helps out the
- player.
+ ==== SP_MAGIC_MAPPING(14) ====
- other_arch: Pet/object this spell creates.
- race: If set to 'holy servant' or 'avatar', this is now a
- summon avatar spell, whose monster is determined based on the
- god being worshipped. Note that these names are just passed
- to determine_holy_arch()
- dam: How much damage the golem will do. dam_modifier alters this in the
- expected way. If zero, damage from the golem is used, but damage
- modifer will still be added.
- duration: increases the golems hp, which basically amounts to duration.
- attacktype: If set, golem gets this attacktype instead of the
- normal arch attacktype.
- range_modifier: This adjust the wc and speed of the creature.
+ This draws an overview of the map around the player. There are currently no parameters the spell takes - the results are always the same. One could forsee parameters to change how far one sees, what one sees, etc.
- golems lose 1 hp each time they do something. This effectively
- limits their duration, but does mean it can be extended by healing
- the golem. Not sure if this is the way to go, or if duration
- should really just be used.
+ ==== SP_MAGIC_WALL(15) ====
- Note - the old code had ldam and ldur have multiple meanings, and
- the code multipled them by 10 internally. This is no longer done -
- instead, the archetype itself should have the real value (10 times
- the old compiled in values)
+ This spell creates a magic wall. Walls can have a wide set of properties. Many are determined by the other_arch or race (the wall the spell creates).
- SP_DIMENSION_DOOR(13):
- dimension door lets the player move some large number of spaces.
- One still can not teleport through no magic areas.
- range: How far we will move the player
- maxsp, level_modifier: Normal spell meaning.
+ * other_arch: wall to create.
+ * race: Name of the object to summon. This should include the %d. eg, 'director_%d'. Note that if the object is non directional, just don't include the %d in the race. Note that if both other_arch and race is set, then other_arch takes precedence
+ * no_pass: If set, then the object can not be created on the space the player is standing on. In all cases, the object can not be created on a space that is blocked by an object.
+ * is_used_up: If set, then this flag is set in the created object
+ * tear_down: If set, this flag is then set in created object, as well as flag_alive
+ * range (and range_modifier): How many spaces in each direction the wall should go. If this is 1, the wall will be 3 spaces total (1 + 1 in each direction). If this is 0, the wall is a single space.
+ * attacktype: Attacktype to set on the created wall.
+ * duration (and duration_modifier): The number of hit points/duration of the wall.
+ * dam and dam_modifier: Damage the wall does.
- SP_MAGIC_MAPPING(14):
- This draws an overview of the map around the player. There are currently
- no parameters the spell takes - the results are always the same. One could
- forsee parameters to change how far one sees, what one sees, etc.
+ Exactly how the a attacktype, duration, and damage values play out depend on what is being created and the spell.
- SP_MAGIC_WALL(15):
- This spell creates a magic wall. Walls can have a wide set of
- properties. Many are determined by the other_arch or race (the wall
- the spell creates).
+ Created object is of type SPELL_EFFECT: attacktype, dam, and duration are copied into fields of same name.
- other_arch: wall to create.
+ Created object is alive: duration becomes the objects hit points.
- race: Name of the object to summon. This should include the %d.
- eg, 'director_%d'. Note that if the object is non directional,
- just don't include the %d in the race. Note that if both other_arch
- and race is set, then other_arch takes precedence
+ * is_used_up (either in spell, or created object): duration put into objects food value.
+ * tear_down (in spell only): Spells damage value is copied into objects hp/maxhp
- no_pass: If set, then the object can not be created on the space the
- player is standing on. In all cases, the object can not be
- created on a space that is blocked by an object.
+ The level of the created object is always set to half that of the caster level.
- is_used_up: If set, then this flag is set in the created object
+ ==== SP_DESTRUCTION(16) ====
- tear_down: If set, this flag is then set in created object, as well
- as flag_alive
+ Destruction hits all the spaces within some distance of the player with damage.
- range (and range_modifier): How many spaces in each direction the wall
- should go. If this is 1, the wall will be 3 spaces total (1 + 1 in
- each direction). If this is 0, the wall is a single space.
+ * range (& modifier): Number of spaces in each direction to do damage to.
+ * dam (& modifier): Amount of damage to do to each creature.
+ * attacktype: Attacktype to hit the creatures with.
+ * other_arch: This can in practice be anything, but is typically just used as an effect to show what spaces where hit.
+ * race: ?
- attacktype: Attacktype to set on the created wall.
- duration (and duration_modifier): The number of hit points/duration
- of the wall.
- dam and dam_modifier: Damage the wall does.
+ Note: As converted to a spell object, this is now usuable by monsters.
- Exactly how the a attacktype, duration, and damage values play out
- depend on what is being created and the spell.
+ The rule for what is damaged is basically this:
+ * If cast by a player/friendly creature, damages non players/non friendlies.
+ * If cast by a monster (non friendly), damages players/friendlies.
- Created object is of type SPELL_EFFECT: attacktype, dam, and duration
- are copied into fields of same name.
+ ==== SP_PERCEIVE_SELF(17) ====
- Created object is alive: duration becomes the objects hit points.
+ This is really just a hook to know to call the right routine - at current time, none of the dam/range/duration fields of the spell have any meaning - only think that is used is the grace and skill pointers.
- is_used_up (either in spell, or created object): duration put
- into objects food value.
+ Perceive self basically presents information to the player about themselves, eg, race, any depletions, etc. Generally, isn't that useful since most all the same information is available with built in commands.
- tear_down (in spell only): Spells damage value is copied into
- objects hp/maxhp
+ ==== SP_WORD_OF_RECALL(18) ====
- The level of the created object is always set to half that of
- the caster level.
+ Word of recall teleports the player back 'home' after some amount of time. Parameters:
+ * duration: How many ticks until the player is returned home.
+ * duration_modifier: This _reduces_ the duration above so that the player return home quicker.
- SP_DESTRUCTION(16):
- Destruction hits all the spaces within some distance of the player
- with damage.
- range (& modifier): Number of spaces in each direction to do damage to.
- dam (& modifier): Amount of damage to do to each creature.
- attacktype: Attacktype to hit the creatures with.
- other_arch: This can in practice be anything, but is typically just used
- as an effect to show what spaces where hit.
- race
+ ==== SP_INVISIBLE(19) ====
- Note: As converted to a spell object, this is now usuable by monsters.
- The rule for what is damaged is basically this:
- If cast by a player/friendly creature, damages non players/non friendlies.
- If cast by a monster (non friendly), damages players/friendlies.
+ Makes the character invisible to monsters.
+ * duration (& duration_modifier): How long to be invisible for.
+ * race: What to make the player invisible against. Note this only applies for when players cast invisible - monsters will always be invisible to players, and not care about the race field. Race 'undead' has a bit special meaning, as it will chack against the flag_undead field. Race can be NULL, in which case it will make the player invisible to everything _but_ undead. Note also that check is done that 'race' a subset of the race of the monster (eg, don't use comma seperated values). It is not possible to be invisible to both undead and non undead at the same time.
+ * make_invisible: if set, this is 'improved' invisible vs temporary invisibility that disappears when attacking.
- SP_PERCEIVE_SELF(17):
- This is really just a hook to know to call the right routine - at
- current time, none of the dam/range/duration fields of the spell
- have any meaning - only think that is used is the grace and skill
- pointers.
- perceive self basically presents information to the player about themselves,
- eg, race, any depletions, etc. Generally, isn't that useful since most
- all the same information is available with built in commands.
+ ==== SP_PROBE (20) ====
- SP_WORD_OF_RECALL(18)
- Word of recall teleports the player back 'home' after some amount
- of time. Parameters:
- duration: How many ticks until the player is returned hom.
- duration_modifier: This _reduces_ the duration above so that the player
- return home quicker.
+ This spell looks in some direction (as specified by the player) and returns information about a monster.
+ * range (& modifier): How far off in a direction to look.
+ ==== SP_HEALING(21) ====
- SP_INVISIBLE(19):
- Makes the character invisible to monsters.
- duration (& duration_modifier): How long to be invisible for.
- race: What to make the player invisible against. Note this
- only applies for when players cast invisible - monsters
- will always be invisible to players, and not care about
- the race field. race 'undead' has a bit special meaning,
- as it will chack against the flag_undead field. race can
- be NULL, in which case it will make the player invisible
- to everything _but_ undead. Note also that check is done that
- 'race' a subset of the race of the monster (eg, don't use
- comma seperated values).
- It is not possible to be invisible to both undead and non
- undead at the same time.
- make_invisible: if set, this is 'improved' invisible vs temporary
- invisibility that disappears when attacking.
+ This spell heals a character/monster. Creature must be where the player is.
+ * attacktype: Attacktypes to heal:
+ * AT_DISEASE: cure diseases.
+ * AT_POISON: remove poisoning.
+ * AT_CONFUSION: remove confusion.
+ * AT_BLIND: remove blindness
+ * stats.food: Food amount to add to character.
+ * stats.dam: how much to heal.
+ * stats.hp: Number of d6 to roll for healing.
+ * last_sp: Regenerate this number of spell points.
+ * last_grace: Regenerate this number of grace points (since the sp and grace fields are used for how much it costs to use the spell, we can't re-use those fields unfortunately)
+ * other_arch: seems unused - kept could be used as a spell effect indicator.
- SP_PROBE (20): This spell looks in some direction (as specified by the player)
- and returns information about a monster.
- range (& modifier): How far off in a direction to look.
+ Note that any number of these fields can be combined.
- SP_HEALING(21): This spell heals a character/monster. Creature must
- be where the player is.
- attacktype: Attacktypes to heal:
- AT_DISEASE: cure diseases.
- AT_POISON: remove poisoning.
- AT_CONFUSION: remove confusion.
- AT_BLIND: remove blindness
- stats.food: Food amount to add to character.
- stats.dam: how much to heal.
- stats.hp: Number of d6 to roll for healing.
- last_sp: Regenerate this number of spell points.
- last_grace: Regenerate this number of grace points.
- (since the sp and grace fields are used for how much it costs
- to use the spell, we can't re-use those fields unfortuantely)
- other_arch: seems unused - kept could be used as a spell effect
- indicator.
- Note that any number of these fields can be combined.
+ ==== SP_CREATE_FOOD(22) ====
- SP_CREATE_FOOD(22): This creats food for the player. The food is
- not worth any money, but otherwise normal food.
- food: Base amount of food to create.
- duration_modifier: Creates an addition 50 food/increase of this value.
+ This creats food for the player. The food is not worth any money, but otherwise normal food.
+ * food: Base amount of food to create.
+ * duration_modifier: Creates an addition 50 food/increase of this value.
- The formula for how much food value is created is:
- food_value=spell_ob->stats.food +
- + 50 * SP_level_duration_adjust(caster,spell_ob);
+ The formula for how much food value is created is:
+ <code>
+ food_value=spell_ob->stats.food + 50 * SP_level_duration_adjust(caster,spell_ob);
+ </code>
- SP_EARTH_TO_DUST(23): This destroys earthwalls near the player.
- range (& modifier): Radius to destroy earthwalls in. Note that
- this is a 'square' radius.
+ ==== SP_EARTH_TO_DUST(23) ====
- SP_CHANGE_ABILITY(24): this adjust some ability the player has (str,
- dex, attacktypes, etc). This is only for beneficial effects - this
- is mostly because of the targetting logic (negative effect would
- still target friendly creature).
+ This destroys earthwalls near the player.
+ * range (& modifier): Radius to destroy earthwalls in. Note that this is a 'square' radius.
- By default, only one benefit spell of each time can be active at a
- time (eg, you could have a strength and a dex, but not two strength
- spells). This is noormally tracked by changing the force name to
- be the same name as the spell, but see the race attribute below.
+ ==== SP_CHANGE_ABILITY(24) ====
- If a spell is already in effect, the duration of the existing
- spell will be increased, but otherwise none of the spell effects
- will be changed.
+ This adjusts some ability the player has (str, dex, attacktypes, etc). This is only for beneficial effects - this is mostly because of the targetting logic (negative effect would still target friendly creature).
- race: If this is set, this is used instead of the spell name when
- renaming the force. This is useful if you only want one of a group
- of spells active at once (this is currently used for bless &
- holy possession - you're allowed only one.) name_pl of the force
- will always contain the other spell name.
+ By default, only one benefit spell of each time can be active at a time (eg, you could have a strength and a dex, but not two strength spells). This is noormally tracked by changing the force name to be the same name as the spell, but see the race attribute below.
- duration (& modifier): How long the spell lasts for. Note that duration
- is in ticks. Note old system used damage for duration, and each
- point of damage was basically 50 ticks. Note also that duration_modifier
- is a bit difference - this increases durations in 50 ticks - this
- is because most of these spells are long duration, and increasing
- a 200 duration spell by 15 ticks if the caster is really high
- level is pretty meaningless.
+ If a spell is already in effect, the duration of the existing spell will be increased, but otherwise none of the spell effects will be changed.
- resist_*: The protection the spell grants. Note that the code does
- no sanity checking on these values, other than to make sure they
- do not exceed 100. Before spell objects, there was code to put
- caps on these values. There is no practical way to say waht the
- caps should be if so put on - instead, just make sure that
- that dam_modifier is a sane value.
+ * race: If this is set, this is used instead of the spell name when renaming the force. This is useful if you only want one of a group of spells active at once (this is currently used for bless & holy possession - you're allowed only one.)
+ * name_pl of the force. Will always contain the other spell name.
+ * duration (& modifier): How long the spell lasts for. Note that duration is in ticks. Note old system used damage for duration, and each point of damage was basically 50 ticks. Note also that duration_modifier is a bit difference - this increases durations in 50 ticks - this is because most of these spells are long duration, and increasing a 200 duration spell by 15 ticks if the caster is really high level is pretty meaningless.
+ * resist_*: The protection the spell grants. Note that the code does no sanity checking on these values, other than to make sure they do not exceed 100. Before spell objects, there was code to put caps on these values. There is no practical way to say what the caps should be if so put on - instead, just make sure that that dam_modifier is a sane value. FIXME check?
+ * dam_modifier: Increases the resistance granted by 1 point.
+ * ac: Benefit to armor class. This is copied over unmodified.
+ * wc: Benefit to weapon class. This is copied over unmodified
+ * hp: Copied over, but damage adjustment added as a bonus. hp in the form of a force increases characters hp regen rate.
+ * Str, Dex, Con, Wis, Int, Pow, Cha: Attempted adjustement to the stat. These values are number of d3's rolled to adjust. In addition, these values also determine the max benefit based on the recipient - the table is 15 + 5 * attr_value. If 1, then the highest the recipients stat after this would be 20. If 2, highest would be 25, if 3, highest would be 30, etc.
+ * flying, can_see_in_dark, xrays: Copied over to force - gives caster this ability.
+ * attacktype: Added to force object, giving the caster the attacktype.
+ * exp: Copied over - this acts as bonus speed. This value is adjusted so really fast players get less a benefit than slower players.
- dam_modifier: Increases the resistance granted by 1 point.
+ ==== SP_BLESS(25) ====
- ac: Benefit to armor class. This is copied over unmodified.
- wc: Benefit to weapon class. This is copied over unmodified
- hp: Copied over, but damage adjustment added as a bonus. hp
- in the form of a force increases characters hp regen rate.
+ This blesses the character - the character gets various benefits based on the god he worships. Note that BLESS spells use the same type of force object as ability change above, include the race to prevent multiple castings. Note that most of all of the values are copied _from the god_. The value in the spell_object is only really used to know if the value from the god should be copied.
- Str, Dex, Con, Wis, Int, Pow, Cha: Attempted adjustement to the
- stat. These values are number of d3's rolled to adjust. In
- additin, these values also determine the max benefit based on the
- recipient - the table is 15 + 5 * attr_value. If 1, then the
- highest the recipients stat after this would be 20. If 2, highest
- would be 25, if 3, highest would be 30, etc.
+ * resist_godpower: The character gets the resistance benefits that his god gives (which can be anything). resist_godpower is the upper limit of any benefit the character will get.
+ * last_grace: If set, players get same attunement as their god.
+ * attacktype: If non zero, the player gets the attacktype of the god. The character also gets the slaying of the god if attacktype is set.
+ * ac, wc: Copied over from spell_ob to force.
- flying, can_see_in_dark, xrays: Copied over to force -
- gives caster this ability.
+ ==== SP_CURSE(26) ====
- attacktype: Added to force object, giving the caster the attacktype.
+ This is a lot like BLESS. Notable difference is that this is a bad effect for the recipient.
- exp: Copied over - this acts as bonus speed. This value is adjusted
- so really fast players get less a benefit than slower players.
+ * ac,wc: Copied over from spell_ob - should be negative, since these should be penalties.
+ * last_grace: If set, recipient is denied/repelled to spellpath that the god is denied/repelled with.
+ * race: Same as for SP_BLESS, in that it can be used to limit number of course type effects.
+ * range: Range of the spell.
- SP_BLESS(25):
- This blesses the character - the character gets various benefits
- based on the god he worships. Note that BLESS spells use the same
- type of force object as ability change above, include the race
- to prevent multiple castings. Note that most of all of the values
- are copied _from the god_. The value in the spell_object is only
- really used to know if the value from the god should be copied.
+ ==== SP_SUMMON_MONSTER (27) ====
+ This covers a large subtype of monster/object summoning. At its very basic, this spell will create an object that is unchanged from the archetype, and thus can be used to basically create any object.
- resist_godpower: The character gets the resistance benefits that his
- god gives (which can be anything). resist_godpower is the upper limit
- of any benefit the character will get.
+ * other_arch: Object to create.
+ * randomitems: If set, a treasurelist to use to select the monster from. The randomitems list for these spells is a bit special - the magic entry is what the monsters effective level is. One can not summon monsters of higher level than they are. Note that magic values should be unique, as the list will use the highest value available. So if two identical magic values are used, for different objects, only the second entry would actually have monsters created. In addition, the magic values should be in order.
+ * race: If set to "GODCULTMON", this is a special spell that will create monsters associated with the players god. We can't use either of the two fields to denote this, because they point to other structures, and what monsters we should create can not be defined easily in the archs, as it will depend on what god the player worships. If multiple fields above are set, the order used is other_arch, random_items, race. Only one of the values will be used - you can't get multiple things created by setting up multiple values.
+ * attack_movement (move_type): If set, this is set in the monster. Thus, if the object should be a pet, move_type should be set to PET_MOVE.
+ * dam (& modifier): Number of creatures to create. In the case of spells that use randomitems (which can specify their own nrof), this is acted as additional monsters.
+ * flag_monster: If set, creature will not be friendly. If cleared, flag_friendly will be set on the monster (using the flag_friendly in the spell_ob itself is problematic in that there is a special list for friendly objects, and we really don't want the spell on that list).
- last_grace: If set, players get same attunement as their god.
+ The reason not all summoned monsters are friendly is because there are some spells that create monsters specifically meant to be agressive to the player. If flag_monster is set, the monster/created object is not changed. Only if it is not set, do we set a value (flag_friendly).
- attacktype: If non zero, the player gets the attacktype of the god.
- The character also gets the slaying of the god if attacktype is set.
+ ==== SP_RECHARGE (28) ====
- ac, wc: Copied over from spell_ob to force.
+ This spell is used to recharge a wand.
- SP_CURSE(26):
- This is a lot like BLESS. Notable difference is that this is a bad
- effect for the recipient.
+ * dam (& modifier): Number of 'spell levels' to recharge. Basically, the number of charges increase in the wand by dam / wand spell level. hus, very low level wands are easier to recharge than high level wands.
- ac,wc: Copied over from spell_ob - should be negative, since these
- should be penalties.
+ ==== SP_POLYMORPH (29) ====
- last_grace: If set, recipient is denied/repelled to spellpath that the
- god is denied/repelled with.
+ This spell by default is disabled because of various abuses within the spell.
- race: Same as for SP_BLESS, in that it can be used to limit number
- of course type effects.
+ The spell normally turns one object into another similar type of object (eg, orc to goblin, sword to dagger, etc).
- range: Range of the spell.
+ * range (& modifier) How far the polymorph spell extends.
+ * other_arch: Visual effect to draw on the map as it moves along.
- SP_SUMMON_MONSTER (27):
- This covers a large subtype of monster/object summoning. At its
- very basic, this spell will create an object that is unchanged
- from the archetype, and thus can be used to basically create any object.
+ ==== SP_ALCHEMY (30) ====
- other_arch: Object to create.
+ This turns nearby objects into gold nuggets.
- randomitems: If set, a treasurelist to use to select the monster from.
- The randomitems list for these spells is a bit special - the magic
- entry is what the monsters effective level is. One can not summon
- monsters of higher level than they are. Note that magic values
- should be unique, as the list will use the highest value available.
- So if two identical magic values are used, for different objects,
- only the second entry would actually have monsters created.
- In addition, the magic values should be in order.
+ * duration (& modifier): This is multiplied by 1000 to determine the amount of material that will be converted (think of these values as the amount of kilograms to be converted)
- race: If set to "GODCULTMON", this is a special spell that will
- create monsters associated with the players god. We can't use
- either of the two fields to denote this, because they point to
- other structures, and what monsters we should create can not be
- defined easily in the archs, as it will depend on what god the player
- worships.
+ ==== SP_REMOVE_CURSE (31) ====
- If multiple fields above are set, the order used is other_arch,
- random_items, race. Only one of the values will be used - you can't
- get multiple things created by setting up multiple values.
+ This removes the cursed/damned status of objects. It only effects objects equipped by the player.
- attack_movement (move_type): If set, this is set in the monster. Thus, if
- the object should be a pet, move_type should be set to PET_MOVE.
+ * cursed: uncurse cursed objects.
+ * damned: remove damnation.
- dam (& modifier): Number of creatures to create. In the case of
- spells that use randomitems (which can specify their own nrof), this
- is acted as additional monsters.
+ ==== SP_IDENTIFY(32) ====
- flag_monster: If set, creature will not be friendly. If cleared,
- flag_friendly will be set on the monster (using the flag_friendly
- in the spell_ob itself is problematic in that there is a special
- list for friendly objects, and we really don't want the spell on that
- list.
- The reason not all summoned monsters are friendly is because there are
- some spells that create monsters specifically meant to be agressive
- to the player.
- If flag_monster is set, the monster/created object is not changed.
- Only if it is not set, do we set a value (flag_friendly).
+ This identifies objects in the players inventory and on the ground.
- SP_RECHARGE (28):
- This spell is used to recharge a wand.
+ * dam (& modifier): The number of objects to identify
- dam (& modifier): Number of 'spell levels' to recharge. Basically,
- the number of charges increase in the wand by dam / wand spell level.
- Thus, very low level wands are easier to recharge than high
- level wands.
+ ==== SP_DETECTION(33) ====
- SP_POLYMORPH (29):
- This spell by default is disabled because of variosu abuses within
- the spell.
+ This detects nearby objects (including ones in the players inventory). Detection in this context typically means revealing properties about the objects.
- The spell normally turns one object into another similar type of
- object (eg, orc to goblin, sword to dagger, etc).
+ * range (& modifier): How big a radius to look for objects. Radius in this context is really a square - the size of the square would be 2*range + 1, with the player being in the center.
+ * other_arch: The spell effect to draw on the map for spaces that match the object. Note that for some detection types, the face is replaced by the face of the matching object.
- range (& modifier) How far the polymorph spell extends.
- other_arch: Visual effect to draw on the map as it moves along.
+ This following attributes determine what objects to show. Note that more than one of these can be set (for a 'detect all spell' for example).
- SP_ALCHEMY (30)
- This turns nearby objects into gold nuggets.
+ * make_invisible: If true, show invisible objects
+ * known_magical: If set, detect magical objects.
+ * flag_monster: If set, detect monsters
+ * known_cursed: If set, detects cursed objects.
+ * race: If set, only detects creatures of this race. if race is 'GOD', then it uses the god's slaying race for the match.
- duration (& modifier): This is multiplied by 1000 to determine the
- amount of material that will be converted (think of these values
- as the amount of kilograms to be converted)
+ ==== SP_MOOD_CHANGE (34) ====
- SP_REMOVE_CURSE (31)
- This removes the cursed/damned status of objects. It only
- effects objects equipped by the player.
+ This changes the 'mood' of a monster. See below for how moods are changed.
- cursed: uncurse cursed objects.
- damned: remove damnation.
+ * range (& modifier): How for this spell effects, just like SP_DETECT above.
+ * race: If set, only monsters of matching race are effected. Can be set to GOD_SLAYING, in which enemy races of the god are effected. if set to GOD_FRIEND, then races alligned with the god are effected.
+ * attacktype: Attacktype the spell hits with. The spell doesn't do any damage - this instead is used for saving throw information. Note that the monster uses its best resistance for the saving throw. EG, the more attacktype the spell has, the better the odds.
+ * berserk (flag): Set the monster to be berserk, which basically means it attacks anything (conflict spell)
+ * unaggressive (flag): Sets the monster to be unaggressive. (pacify)
+ * undead (flag): By default, undead are immune to mood changes. however, if this flag is set, undead will be effected (limited by other criteria above, like race (if set) and saving throw)
+ * no_attack (flag): Make the creature friendly (charm & charm monster))
+ * monster (flag): Wakes the monster up, makes it an enemy of the player (aggravation)
- SP_IDENTIFY(32)
- This identifies objects in the players inventory and on the ground.
- dam (& modifier): The number of objects to identify
+ Note that a spell could set multiple of these fields, but it wouldn't really do much - a monster can really only have one mood.
- SP_DETECTION(33)
- This detects nearby objects (including ones in the players inventory).
- Detection in this context typically means revealing properties about
- the objects.
+ ==== SP_MOVING_BALL (35) ====
- range (& modifier): How big a radius to look for objects. Radius
- in this context is really a square - the size of the square would
- be 2*range + 1, with the player being in the center.
+ This is really only used as a spell effect. Values of note:
- other_arch: The spell effect to draw on the map for spaces that match
- the object. Note that for some detection types, the face is replaced
- by the face of the matching object.
+ * path_repelled: If set, the player must be attuned to these paths to cast the spell. This can basically be used to control who can cast the spell.
+ * duration (& modifier): Copied into food of the object - this is basically how long the spell lasts for.
+ * dam & attacktype have expected meaning.
+ * other_arch: Object that is used for the manifestation of the spell. Must be set for spell to work.
- This following attributes determine what objects to show. Note that
- more than one of these can be set (for a 'detect all spell' for example).
+ ==== SP_SWARM (36) ====
- make_invisible: If true, show invisible objects
- known_magical: If set, detect magical objects.
- flag_monster: If set, detect monsters
- known_cursed: If set, detects cursed objects.
- race: If set, only detects creatures of this race. if race is
- 'GOD', then it uses the god's slaying race for the match.
+ Swarms are spells that fire other spells. It fires the same spell, but multiple times (eg, 5 lightning bolts).
- SP_MOOD_CHANGE (34):
- This changes the 'mood' of a monster. See below for how moods are
- changed.
+ Set during casting:
+ * duration: Number of d3 to roll to determine number of sub bolts.
+ * duration_modifier: Added to duration as a bonus.
+ * other_arch: Name of the other spell it fires.
- range (& modifier): How for this spell effects, just like SP_DETECT above.
- race: If set, only monsters of matching race are effected. Can be set
- to GOD_SLAYING, in which enemy races of the god are effected.
- if set to GOD_FRIEND, then races alligned with the god are effected.
- attacktype: Attacktype the spell hits with. The spell doesn't do any
- damage - this instead is used for saving throw information. Note
- that the monster uses its best resistance for the saving throw.
- EG, the more attacktype the spell has, the better the odds.
+ ==== SP_CHANGE_MANA (37) ====
- berserk (flag): Set the monster to be berserk, which basically means
- it attacks anything (conflict spell)
- unaggressive (flag): Sets the monster to be unaggressive. (pacify)
- undead (flag): By default, undead are immune to mood changes. however, if
- this flag is set, undead will be effected (limited by other criteria
- above, like race (if set) and saving throw)
- no_attack (flag): Make the creature friendly (charm & charm monster))
- monster (flag): Wakes the monster up, makes it an enemy of the player
- (aggravation)
+ This gives/takes spellpoints to the target of the spell. If this spell gives sp, then the cost should be more than the sp it gives. target must be in the same or adjacent space.
- Note that a spell could set multiple of these fields, but it wouldn't
- really do much - a monster can really only have one mood.
+ * dam (& modifier): number of sp to transfer. If dam is negative, then this spell takes away, and dam and modifier represent what percentage of sp to drain (dam_modifier should still be positive). These sp are then given to the caster of the spell.
- SP_MOVING_BALL (35): This is really only used as a spell effect. Values
- of note:
+ This subtypes corresponds to the old transferrence and drain magic spells.
- path_repelled: If set, the player must be attuned to these paths
- to cast the spell. This can basically be used to control
- who can cast the spell.
+ ==== SP_DISPEL_RUNE (38) ====
- duration (& modifier): Copied into food of the object - this is
- basically how long the spell lasts for.
- dam & attacktype have expected meaning.
- other_arch: Object that is used for the manifestation of the spell.
- Must be set for spell to work.
+ This removes runes from the ground. There are currently no option for this spell.
- SP_SWARM (36)
- swarms are spells that fire other spells. It fires the same spell,
- but multiple times (eg, 5 lightning bolts).
+ ==== SP_CREATE_MISSILE (39) ====
- Set during casting:
- duration: Number of d3 to roll to determine number of sub bolts.
- duration_modifier: Added to duration as a bonus.
- other_arch: Name of the other spell it fires.
+ Creates bolts or arrows.
- SP_CHANGE_MANA (37)
- This gives/takes spellpoints to the target of the spell. If this spell
- gives sp, the the cost should be more than the sp it gives. target must
- be in the same or adjacent space.
+ * dam (& modifier): max plus of arrow that can be created.
+ * duration (& modifier): Number of arrows to create.
- dam (& modifier): number of sp to transfer. If dam is negative, then this
- spell takes away, and dam and modifier represent what percentage of sp
- to drain (dam_modifier should still be positive). These sp are then
- given to the caster of the spell.
+ Note that making good (highly magical) arrows reduces number of arrows to be made.
- This subtypes corresponds to the old transferrence and drain magic
- spells.
+ ==== SP_CONSECRATE (40) ====
- SP_DISPEL_RUNE (38)
- This removes runes from the ground. There are currently no
- tunables for this spell.
+ This converts an altar to that of players god. There are currently no option to this spell.
- SP_CREATE_MISSILE (39)
- Creates bolts or arrows.
+ ==== SP_ANIMATE_WEAPON (41) ====
- dam (& modifier): max plus of arrow that can be created.
- duration (& modifier): Number of arrows to create.
+ This spell is similar to the GOLEM spells - it basically creates a golem, but uses a donor weapon for the face, basic attributes, etc. To implement this, it puts the donor weapon in the inventory of the golem, so when the golem dies, the weapon is returned to the ground. Note that in the conversion, I modified this spell to use the weapon 'marked' by the player, instead of the equipped weapon.
- Note that making good (highly magical) arrows reduces
- number of arrows to be made.
+ * other_arch: The object used to encapsulate the weapon.
+ * race: If set, the donor weapon must match this name. If this is not set, then the face of the golem will be set to the weapon. The reason for this is that if race is set, then since it is matching a specific weapon, it is presumed that the other_arch field can be appropriate set.
+ * range_adjust: Bonus to wc and speed for the spell
+ * duration & modifier: Bonus to creatures hp.
+ * dam & modifer: Adjust to damage the golem does.
- SP_CONSECRATE (40)
- This converts an altar to that of players god. There are currently
- no tunables to this spell.
+ ==== SP_LIGHT (42) ====
- SP_ANIMATE_WEAPON (41)
- This spell is similar to the GOLEM spells - it basically creates
- a golem, but uses a donor weapon for the face, basic attributes,
- etc. To implement this, it puts the donor weapon in the inventory
- of the golem, so when the golem dies, the weapon is returned
- to the ground. Note that in the conversion, I modified this
- spell to use the weapon 'marked' by the player, instead of the
- equipped weapon.
+ Arguably, such a basic spell wouldn't seem to need its own subtype. However, looking at the other spells, it really didn't fit in very well elsewhere - the magic_wall code passes most of its parameters to the object it creates. Something like summon_monster doesn't work, because it wants a free space to put the object.
- other_arch: The object used to encapsulate the weapon.
- race: If set, the donor weapon must match this name. If this is not
- set, then the face of the golem will be set to the weapon.
- The reason for this is that if race is set, then since it
- is matching a specific weapon, it is presumed that the
- other_arch field can be appropriate set.
- range_adjust: Bonus to wc and speed for the spell
- duration & modifier: Bonus to creatures hp.
- dam & modifer: Adjust to damage the golem does.
+ And while it would be nice to somehow merge create food, create missile, and this, they are sufficiently different that they don't work very well. So instead, I try to abstract this as much as I can.
- SP_LIGHT (42)
- Arguably, such a basic spell wouldn't seem to need its own subtype.
- However, looking at the other spells, it really didn't fit in
- very well elsewhere - the magic_wall code passes most of its
- parameters to the object it creates. Something like summon_monster
- doesn't work, because it wants a free space to put the object.
- And while it would be nice to somehow merge create food, create
- missile, and this, they are sufficiently different that they don't
- work very well. So instead, I try to abstract this as much
- as I can.
+ * attacktype: If set, and there is a monster on the target space, the monster gets hit with the attacktype and the damage setting. If this happens, the spell progresses no further.
+ * dam: As per note above, how much damage this does.
+ * other_arch: Object to place on the map.
+ * duration: set the the 'food' value in the created object - if is_used_up is set in the arch, this is how long the spell lasts for.
+ * range: If the created object has a glow radius, range is used to replace it. In this way, we don't make non glowing objects glow, but do make ones that do glow glow brighter.
- attacktype: If set, and there is a monster on the target
- space, the monster gets hit with the attacktype and the
- damage setting. If this happens, the spell progresses no
- further.
- dam: As per note above, how much damage this does.
+ ==== SP_CHANGE_MAP_LIGHT (43) ====
- other_arch: Object to place on the map.
- duration: set the the 'food' value in the created object -
- if is_used_up is set in the arch, this is how long the
- spell lasts for.
- range: If the created object has a glow radius, range
- is used to replace it. In this way, we don't make non
- glowing objects glow, but do make ones that do glow
- glow brighter.
+ This changes the light level on the map. There is only one option:
+ * dam: amount to change the lightlevel. This is passed to change_map_light, as such, negative values are lighter, positive is darker
- SP_CHANGE_MAP_LIGHT (43)
- This changes the light level on the map. There is only one
- tunable:
+ ==== SP_FAERY_FIRE (44) ====
- dam: amount to change the lightlevel. This is passed to
- change_map_light, as such, negative values are lighter,
- positive is darker
+ Faery fire makes creatures within the area of effect glow. This code uses the cast_destruction routine, but just handles what happens when it finds a valid target.
- SP_FAERY_FIRE (44)
- Faery fire makes creatures within the area of effect glow.
- This code uses the cast_destruction routine, but just handles
- what happens when it finds a valid target.
+ * range (& modifier): Number of spaces in each direction to do damage to.
+ * duration & modifier: Potency of the spell - determines how long the creature will glow for (in 10's of ticks)
+ * other_arch: This can in practice be anything, but is typically just used as an effect to show what spaces where hit.
- range (& modifier): Number of spaces in each direction to do damage to.
- duration & modifier: Potency of the spell - determines how long the
- creature will glow for (in 10's of ticks)
- other_arch: This can in practice be anything, but is typically just used
- as an effect to show what spaces where hit.
+ Note: As converted to a spell object, this is now usuable by monsters. The rule for what is damaged is basically this:
+ * If cast by a player/friendly creature, damages non players/non friendlies.
+ * If cast by a monster (non friendly), damages players/friendlies.
- Note: As converted to a spell object, this is now usuable by monsters.
- The rule for what is damaged is basically this:
- If cast by a player/friendly creature, damages non players/non friendlies.
- If cast by a monster (non friendly), damages players/friendlies.
+ ==== SP_DISEASE (45) ====
- SP_DISEASE (45)
- disease spells infect players with a harmful disease.
+ Disease spells infect players with a harmful disease. See also [[dev:objects#Diseases]].
- range (& modifier): How far to look in the line for matching
- targets.
- other_arch: Disease to infect the target with.
- duration_modifier: This is used to adjust the disease stats
- in several ways:
- wc += mod/2
- magic += mod / 4
- maxhp, maxgrace += mod
+ * range (& modifier): How far to look in the line for matching targets.
+ * other_arch: Disease to infect the target with.
+ * duration_modifier: This is used to adjust the disease stats in several ways:
+ * wc += mod/2
+ * magic += mod / 4
+ * maxhp, maxgrace += mod
+ * dam_modifier: Modifies other aspects of the disease:
+ * dam, maxsp, ac, last_eat, hp, sp: modified by full mod
+ * last_sp: modifier by mod * 2
- dam_modifier: Modifiers other aspects of the disease:
- dam, maxsp, ac, last_eat, hp, sp: modified by full mod
- last_sp: modifier by mod * 2
+ The disease code treats these modified values in its own way.
- The disease code treats these modified values in its own way.
+ ==== SP_AURA (46) ====
- SP_AURA (46):
- Auras create fields around the players that effect anyone that steps
- into them.
+ Auras create fields around the players that effect anyone that steps into them.
- other_arch: aura type to insert
- duration: How long the aura lasts for. For this spell, each
- duration_modifier is 10 ticks.
- dam & modifier: How much damage the aura does.
- attacktype: Attacktype of the aura.
+ * other_arch: aura type to insert
+ * duration: How long the aura lasts for. For this spell, each duration_modifier is 10 ticks.
+ * dam & modifier: How much damage the aura does.
+ * attacktype: Attacktype of the aura.
- SP_TOWN_PORTAL (47):
- This creates two linked portals which the player can use to get
- back and forth quickly.
+ ==== SP_TOWN_PORTAL (47) ====
- other_arch: Name of the force object to use to mark the first portal
- target location (town_portal).
- race: Name of the object used to mark where the portals goe
- (town_portal_active)
- slaying: Name of the object used for the actual exit objects
- (town_portal_magic)
+ This creates two linked portals which the player can use to get back and forth quickly.
- Note the spell otherwise doesn't have any tunables.
- It should be noted that if different archetypes were made it,
- it should be possible to have multiple town portal type spells that
- lead to different destinations.
+ * other_arch: Name of the force object to use to mark the first portal target location (town_portal).
+ * race: Name of the object used to mark where the portals goes (town_portal_active)
+ * slaying: Name of the object used for the actual exit objects (town_portal_magic)
+ Note the spell otherwise doesn't have any tunables.
- Old values:
- hp: duration
- exp: range
- maxhp: set to a ->count variable, so spells can be uniquely identified.
+ It should be noted that if different archetypes were made it, it should be possible to have multiple town portal type spells that lead to different destinations.
===== Spell casting objects =====
As described in section 2 above, objects that cast spells (wands, rods,
IP-Address : 213.174.127.3
Old Revision: http://wiki.metalforge.net/doku.php/dev:spells?rev=1164986874
New Revision: http://wiki.metalforge.net/doku.php/dev:spells
--
This mail was generated by DokuWiki at
http://wiki.metalforge.net/
More information about the crossfire-wiki
mailing list