2010-12-07 18:34:26 +11:00
|
|
|
#ifndef __SPELLS_H
|
|
|
|
#define __SPELLS_H
|
|
|
|
#include "defs.h"
|
|
|
|
|
2011-03-22 18:06:28 +11:00
|
|
|
int abilityeffects(lifeform_t *user, enum OBTYPE abilid, cell_t *targcell, lifeform_t *target, flag_t *cwflag);
|
2011-06-09 18:58:35 +10:00
|
|
|
int dospelleffects(lifeform_t *caster, enum OBTYPE spellid, int power, lifeform_t *target, object_t *targob, cell_t *targcell, int blessed, int *seenbyplayer, int frompot);
|
2011-05-20 06:30:58 +10:00
|
|
|
objecttype_t *findspelln(char *buf);
|
2011-02-01 06:16:13 +11:00
|
|
|
void fizzle(lifeform_t *caster);
|
2011-03-16 15:45:46 +11:00
|
|
|
//int getiqreq(enum OBTYPE oid);
|
2011-03-22 18:06:28 +11:00
|
|
|
int getmpcost(lifeform_t *lf, enum OBTYPE oid);
|
* [+] operate a candlabrum on the ground confers permenant light
producing!
* [+] bug - water appearing in walls.
- [+] make armour less common in forests
- [+] too many --more--s when enhancing stats. use drawmsg() rather
than more().
- [+] when i go up/down stairs, i keep ending up BESIDE them??
* [+] "you hear footstepszzzzzzzzzzzzzzzzzzzzzzz" (random junk)
- [+] when i start training with a spell active, it gets interrupted.
try again, interrupted again! works 3rd time.
- [+] replace lockpicking with "locksmithing"
- [+] replace 'body control' with 'slow metabolism'
- [+] pit traps broken - fixed now.
- [+] doheading issue in @M still.
* [+] how did zombie get 28 hp? bug in rollhitdice.
- [+] blind a skeleton with light. it gets blind, starts fleeing. but
because it can't SEE you, it stops fleeing instantly!
* [+] getflags(flagpile_t *fp, ... )
- [+] stun spell
- [+] only say "x2" etc if msgbuf we are going to draw still contains
the original text.
- [+] when you level up, your psionic skill determines your chance of
learning a new psionic spell?
- [+] when you teleport/use stairs, get all allies in SIGHT, not
adjacent.
* [+] more traps!
* [+] prisoners in cells
- [+] recruitment: instead of outright refusing to join, just up the
price.
* [+] make spellbook contents depend on map difficulty
- [+] cloak of shadows - give invisibility when in darkness
* [+] limited wish:
- [+] casting WISH reduces max hp by 50%!
- [+] monster ai code: if inventory full (or close), put non-eqiupped
stuff into containers
* [+] infinite loop in firedam to lf
- [+] pot of xp isn't working for monsters. they get no more hp!!
- [+] summonmosnter should jsut relocate existing uniques
- [+] 'planeshift' spell for gods - "unsummon"s them.
* [+] diety - greedgod
* [+] more village contents
2011-07-26 12:01:05 +10:00
|
|
|
enum OBTYPE getrandomspell(int maxlev);
|
2011-03-18 12:25:18 +11:00
|
|
|
enum SKILL getschoolskill(enum SPELLSCHOOL ss);
|
2011-04-14 09:44:29 +10:00
|
|
|
char *getspellcosttext(lifeform_t *lf, enum OBTYPE spellid, int power, char *buf);
|
2011-02-16 05:21:33 +11:00
|
|
|
int getspellduration(int min,int max,int blessed);
|
2011-03-04 12:22:36 +11:00
|
|
|
int getspelllevel(enum OBTYPE spellid);
|
2011-03-16 15:45:46 +11:00
|
|
|
int getspellmaxpower(enum OBTYPE spellid);
|
2011-03-18 12:25:18 +11:00
|
|
|
char *getspellname(enum OBTYPE spellid, lifeform_t *lf, char *buf);
|
2011-03-16 15:45:46 +11:00
|
|
|
int getspellpower(lifeform_t *lf, enum OBTYPE spellid);
|
2011-03-04 12:22:36 +11:00
|
|
|
enum SPELLSCHOOL getspellschool(enum OBTYPE spellid);
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
enum SPELLSCHOOL getspellschoolknown(lifeform_t *lf, enum OBTYPE spellid);
|
2011-08-31 06:10:43 +10:00
|
|
|
enum SKILLLEVEL getspellskill(lifeform_t *lf, enum OBTYPE spellid);
|
2011-03-16 15:45:46 +11:00
|
|
|
int getspellrange(enum OBTYPE spellid, int power);
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
char *getvarpowerspelldesc(enum OBTYPE spellid, int power, char *buf);
|
2011-02-01 06:16:13 +11:00
|
|
|
void pullobto(object_t *o, lifeform_t *lf);
|
2011-05-20 06:30:58 +10:00
|
|
|
int schoolappearsinbooks(enum SPELLSCHOOL ss);
|
2011-06-09 18:58:35 +10:00
|
|
|
void spellcloud(cell_t *srcloc, int radius, char ch, enum COLOUR col, enum OBTYPE sid, int power, int frompot);
|
2011-03-22 18:06:28 +11:00
|
|
|
void stopspell(lifeform_t *caster, enum OBTYPE spellid);
|
|
|
|
void stopallspells(lifeform_t *lf);
|
2011-06-20 13:16:30 +10:00
|
|
|
void stopallspellsexcept(lifeform_t *lf, ...);
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
int summonlfs(lifeform_t *caster, cell_t *where, enum RACECLASS wantrc, enum LFSIZE wantsize, enum ALIGNMENT wantalign, int howmany, int lifetime);
|
2011-03-22 18:06:28 +11:00
|
|
|
lifeform_t *validateabillf(lifeform_t *user, enum OBTYPE aid, lifeform_t **target);
|
2011-06-09 18:58:35 +10:00
|
|
|
cell_t *validatespellcell(lifeform_t *caster, cell_t **targcell, int targtype, enum OBTYPE spellid, int power, int frompot);
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
//lifeform_t *validatespelllf(lifeform_t *caster, lifeform_t **lf);
|
2010-12-07 18:34:26 +11:00
|
|
|
#endif
|
|
|
|
|
2011-02-01 06:16:13 +11:00
|
|
|
|