2010-12-02 12:17:54 +11:00
|
|
|
#include "defs.h"
|
|
|
|
|
|
|
|
cell_t *addcell(map_t *map, int x, int y);
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
void addhomeobs(lifeform_t *lf);
|
2010-12-02 12:17:54 +11:00
|
|
|
map_t *addmap(void);
|
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 *addmonster(cell_t *c, enum RACE raceid, int jobok, int amt, int autogen, int *nadded);
|
2011-05-20 06:30:58 +10:00
|
|
|
object_t *addrandomob(cell_t *c);
|
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
|
|
|
int addrandomthing(cell_t *c, int obchance, int *nadded);
|
2011-02-01 06:16:13 +11:00
|
|
|
int cellhaslos(cell_t *c1, cell_t *dest);
|
2010-12-02 12:17:54 +11:00
|
|
|
cell_t *getcellat(map_t *map, int x, int y);
|
|
|
|
int getcelldist(cell_t *src, cell_t *dst);
|
2011-02-01 06:16:13 +11:00
|
|
|
int getcelldistorth(cell_t *src, cell_t *dst);
|
2011-04-06 17:27:55 +10:00
|
|
|
void getcellglyph(glyph_t *g, cell_t *c, lifeform_t *viewer);
|
2011-02-01 06:16:13 +11:00
|
|
|
enum CELLTYPE getemptycelltype(enum HABITAT hab);
|
2011-04-14 09:44:29 +10:00
|
|
|
enum CELLTYPE getwallcelltype(enum HABITAT hab);
|
2011-05-20 06:30:58 +10:00
|
|
|
flag_t *getmapcoords(map_t *m, int *x, int *y);
|
|
|
|
int getmapdifficulty(map_t *m);
|
2011-02-01 06:16:13 +11:00
|
|
|
object_t *gettopobject(cell_t *where);
|
|
|
|
void calclight(map_t *map);
|
2010-12-02 12:17:54 +11:00
|
|
|
int calcroompos(map_t *map, int w, int h, int *bx, int *by);
|
|
|
|
int countadjcellsoftype(cell_t *cell, int id);
|
2011-02-01 06:16:13 +11:00
|
|
|
int countadjcellswithflag(cell_t *cell, enum FLAG fid);
|
2010-12-02 12:17:54 +11:00
|
|
|
int countcellexits(cell_t *cell);
|
2011-05-16 12:03:25 +10:00
|
|
|
void createdungeon(map_t *map, int depth, map_t *parentmap, int exitdir);
|
|
|
|
void createforest(map_t *map, int depth, map_t *parentmap, int exitdir);
|
|
|
|
void createmap(map_t *map, int dungeonid, int depth, int habitat, map_t *parentmap, int exitdir);
|
2010-12-02 12:17:54 +11:00
|
|
|
void createroom(map_t *map, int minx, int miny, int w, int h, int roomid);
|
|
|
|
int dirtox(int dt, int dir);
|
|
|
|
int dirtoy(int dt, int dir);
|
|
|
|
void dumpmap(map_t *map);
|
2011-03-18 12:25:18 +11:00
|
|
|
void explodesinglecell(cell_t *c, int dam, int killwalls, object_t *o, cell_t *centre);
|
2011-04-14 09:44:29 +10:00
|
|
|
void explodecells(cell_t *c, int dam, int killwalls, object_t *o, int range, int dirtype, int wantannounce);
|
|
|
|
celltype_t *findcelltype(enum CELLTYPE cid);
|
2010-12-02 12:17:54 +11:00
|
|
|
map_t *findmap(int mid);
|
2011-02-01 06:16:13 +11:00
|
|
|
map_t *findmapofdepth(int depth);
|
2011-05-20 06:30:58 +10:00
|
|
|
cell_t *findmapentrypoint(map_t *m, int side, lifeform_t *lf);
|
2011-04-08 13:18:54 +10:00
|
|
|
object_t *findobidinmap(map_t *m, long id);
|
2011-02-01 06:16:13 +11:00
|
|
|
cell_t *findobinmap(map_t *m, enum OBCLASS oid);
|
2011-05-16 12:03:25 +10:00
|
|
|
map_t *findregionmap(int region, int depth);
|
2010-12-07 18:34:26 +11:00
|
|
|
void forgetcells(map_t *map, int amt);
|
2010-12-02 12:17:54 +11:00
|
|
|
cell_t *getcellindir(cell_t *cell, int dir);
|
|
|
|
int getnewdigdir(cell_t *cell, int lastdir, int turnpct, int *moved);
|
|
|
|
int getobchance(int habitat);
|
2011-05-16 12:03:25 +10:00
|
|
|
int getthingchance(int habitat);
|
2011-04-06 17:27:55 +10:00
|
|
|
cell_t *getrandomadjcell(cell_t *c, int wantempty, int allowexpand);
|
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
|
|
|
cell_t *real_getrandomadjcell(cell_t *c, int wantempty, int allowexpand, enum LOFTYPE needlof, enum OBTYPE *dontwantob);
|
2010-12-02 12:17:54 +11:00
|
|
|
cell_t *getrandomcell(map_t *map);
|
|
|
|
cell_t *getrandomcelloftype(map_t *map, int id);
|
|
|
|
int getrandomdir(int dirtype);
|
|
|
|
cell_t *getrandomroomcell(map_t *map, int roomid);
|
2011-04-14 09:44:29 +10:00
|
|
|
void getroomcells(map_t *m, int roomid, cell_t **retcell, int *ncells);
|
2011-03-04 12:22:36 +11:00
|
|
|
int getslipperyness(cell_t *c, object_t **slipob);
|
2011-04-08 13:18:54 +10:00
|
|
|
cell_t *getstairdestination(object_t *o);
|
2011-02-16 05:21:33 +11:00
|
|
|
object_t *hasenterableobject(cell_t *c);
|
2011-02-01 06:16:13 +11:00
|
|
|
lifeform_t *haslf(cell_t *c);
|
* [+] need to set "needredraw" every time we exit:
- [+] make eating take longer - depends on lf size and food sizes
* [+] stop eating if something attacks you!
- [+] change spell code to cope with caster = NULL!!
- [+] why are rooms never more than 2 high
* [+] traps
* [+] eating bug again
* [+] disarm trap skill?
- [+] lots of needredraw bugs
- [+] bug with cursor jumping around lots
- [+] draw darkened visible cells in blue
* [+] shadow cloak
- [+] tree shouldn't prevent resting!
- [+] make plants not attack druids
* [+] cooking
- [+] stop eating if your eating object is no longer with you
* [+] FLAG CORRUPTION BUG
- [+] pet walking back and forth on rotted objects
- [+] purified food shouldn't decay anymore.
- [+] plants shouldn't sleep
- [+] RESTING on statbar not being cleared. the add of f_interrupted
was clearing statdirty before f_asleep got removed in killflag().
- [+] AI: don't eat if in battle
- [+] reduce projectile damage
- [+] show raceclass in statbars
- [+] smoke should make you cough.
- [+] when going up levle, only prompt for spells you can cast?? (don't
show "NOTCASTABLE")
- [+] Your young hawk dies. The stirge releases something!
- [+] sleeping thigns shoudn't follow you up/down stairs.
- [+] when throw'ng an object, don't let it stack (otherwise we might
destroy too much)
- [+] don't draw "c - " for nopickup objects.
- [+] saving throw for traps if you know about it.
- [+] druid - get xp for calming animals
- [+] rogue- get xp for picking locks, disarming traps.
- [+] metal should be immune to most damage types
* [+] make heavy blow need HEAVY weapon, not bashing.
- [+] can't rest/train while levitating!
- [+] gas traps only go off once.
- [+] bug: The goblin throws a boulder at you. A boulder misses you.
- [+] don't give short sword skill to wizard.
- [+] hearing range based on listen skill
* [+] coldness disease:
- [+] CRASH when swapping places
- [+] bug: i can teleport into an impassable object!
- [+] add: "really target (your ally)?"
- [+] give wizards school-based skill instead of manaspike + wildmagic
- [+] LevUp still not being cleared!!!
* [+] why is air wizard being prompted for call lightning at level 2???
* [+] summon weapon (summoning)
- [+] hold portal (mod)
- [+] reveal hidden
- [+] stench (death)
- [+] frostbite (minor but direct cold damage. 1dpower. maxpower 3)
- [+] grease (modific) creates oil in a circle
- [+] fear (death)
- [+] seeinvis (div)
- [+] locate obejct (div) tells you where a seen objcet is.
- [+] swap places (transl) "twiddle"
- [+] fire brand (fire, melee attaks deal fire damage)
- [+] iceedge
- [+] lore (div, temporary knowledge from a particular school?)
- [+] icicle (cold, deals cold dam and knocks enemies away)
* [+] chill (ice, 1d3 damage per exposed body part)
- [+] hail storm (ice, big damage in area)
- [+] wall of ice (creates icy wall, hp based on power)
2011-05-12 11:49:35 +10:00
|
|
|
int hasknownobject(cell_t *c);
|
2011-02-01 06:16:13 +11:00
|
|
|
int hasobject(cell_t *c);
|
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
|
|
|
object_t *hastrailof(obpile_t *op, lifeform_t *lf, enum OBTYPE oid, flag_t **tflag, lifeform_t *viewer);
|
2011-02-01 06:16:13 +11:00
|
|
|
int isadjacent(cell_t *src, cell_t *dst);
|
2011-04-11 15:05:45 +10:00
|
|
|
int isdark(cell_t *c);
|
2011-02-01 06:16:13 +11:00
|
|
|
int isdiggable(cell_t *c);
|
|
|
|
int isdoor(object_t *o, int *isopen);
|
|
|
|
int isempty(cell_t *c);
|
2011-04-01 10:54:44 +11:00
|
|
|
int isinscanrange(cell_t *c, void **thing, char *desc, glyph_t *glyph);
|
2011-02-01 06:16:13 +11:00
|
|
|
int islit(cell_t *c);
|
2010-12-02 12:17:54 +11:00
|
|
|
int isloopdirok(cell_t *cell, int dir);
|
|
|
|
int isnewcellok(cell_t *cell, char *err);
|
|
|
|
int isonmap(map_t *map, int x, int y);
|
2011-05-16 12:03:25 +10:00
|
|
|
int isoutdoors(map_t *m);
|
2010-12-02 12:17:54 +11:00
|
|
|
int iswallindir(cell_t *cell, int dir);
|
2011-04-08 13:18:54 +10:00
|
|
|
int linkstairs(object_t *o);
|
2010-12-02 12:17:54 +11:00
|
|
|
void makedoor(cell_t *cell);
|
2011-03-10 16:47:18 +11:00
|
|
|
void makelit(cell_t *c, enum LIGHTLEV how, int howlong);
|
|
|
|
void makelitradius(cell_t *c, int radius, enum LIGHTLEV how, int howlong);
|
2011-05-20 06:30:58 +10:00
|
|
|
void setcellknown(cell_t *cell, int forcelev);
|
2010-12-02 12:17:54 +11:00
|
|
|
void setcelltype(cell_t *cell, int id);
|
2010-12-07 18:34:26 +11:00
|
|
|
void updateknowncells(void);
|