Commit Graph

80 Commits

Author SHA1 Message Date
Rob Pearce 8e3c457c01 - [+] if can WILL _and_ CAST a spell, use power level from whichever is
highest
- [+] exorcise spell - l2 summoning
    - [+] +10% chance per skill level, -5% per monster TR, +5% per
          spell power
    - [+] implement
- [+] paladins get exorcise  at l5
- [+] new purity god pray effect: 100% success exorcisms.
- [+] new perks for lore:demonology 
    - [+] nov: exorcise demons (power 1)
    - [+] skilled: summon demon
- [+]  midnight -portals open.  moongate? lunar portal? lunar gate?
      moon door?
    - [+] portals with no F_MAPLINK will create a random destinatino in
          the same map.
    - [+] makeobjecttemporary() function
    - [+] when it strikes midnight, a portal appears somewhere on the
          plaeyr's level
    - [+] the portal is temporary for 60 turns (ie. approx 1 hours)
          turns until end of midnight (calc this)
- [+] fixed crash on "w-"
- [+] during glorana's peace, striketoko is okay.
- [+] announce posion potion effects.
- [+] make dark maps just lower max vis range, isntead of not being lit
      ?
- [+] redo entire light calculation code.
    - [+] light effects:
        - [+] create "bright light" object in radius around target cell
              (it has f_produceslight)   
        - [+] at high level, light spell will increase ILLUMINATION
              level of the entire map.
    - [+] DARKNESS
        - [+] make a "magical darkness" object
        - [+] blocks view.
        - [+] at high level, light spell will increase ILLUMINATION
              level of the entire map.
    - [+] bright light objects burn/scare undead
    - [+] undead won't walk into cells with bright light power >= their
          TR
    - [+] monsters in cells with produces light which are vulnerable to
          light take damage
        - [+] cases to check for:
            - [+] vuln to light 
            - [+] migrains
        - [+] iscelllit() should return light level of cell (sum of
              f_produceslight)
    - [+] gaining/losing f_produceslight should setlosdirty
    - [+] makelit() just places light/darkness objects
    - [+] monsters in cells with produces light which have good eyes
          get blinded
        - [+] move blinding code out of spell.c and into turneffectslf
    - [+] placing light/darkness objects causes los recalc in any who
          can see them
        - [+] this shoudl happen automatically since they will have
              BLOCKSVIEW.
    - [+] islit():
        - [+] check for ot_darkness objects in the cell
        - [+] check for f_produceslight flags in the cell's lfs/objects
        - [+] return how MUCH the cell is lit
    - [+] f_produceslight flag now just lets you see further in the
          darkness
    - [+] still give light sources to monsters, but change the check to
          see whether we do this (check the map's illumnation level)
    - [+] get rid of calclight() code.
    - [+] then i can get rid of seeindark code in los checking ???
    - [+] get rid of eyesight adjustment code 
    - [+] remove enum LIGHTLEV
    - [+] CHANGE nightvisrange - it just countres the map's
          illumination level
    - [+] remove lf->eyeadjustment
    - [+] remove lf->losdark
    - [+] remove lf->nlosdark
    - [+] remove cell->lit and littime and otiglittimer and origlight
          and lastlit
        - [+] remove it
        - [+] don't save it
2012-08-02 04:08:27 +00:00
Rob Pearce c421529221 - [+] glorana doesn't like you attacking during Glorana's Peace
- [+] make more shops let you donate
    - [+] bookstore
    - [+] jewellery store
- [+] rename blood hawk to hunting hawk
- [+] offering a bribe to creatures should make them move likely to
      helkp you, AND reset the "auto don't help' flag
- [+] change "get lost " message to "get lost, <racename>" if your race
      is different.
    - [+] sayphrase() needs a new arg:  lifeform_t *talkingto
- [+] colours for spell effect.
    - [+] eg. "the flame dart hits xxx" should use CC_BAD
- [+] muddy room - mud should be immutable.
- [+] maybe change rage - you lose control totally and just attack
      anything in sight?
    - [+] do it.
    - [+] don't train when enraged
    - [+] don't hear sounds when enraged
    - [+] RAGE effects: strength bonus, accuracy bonus, infinite
          stamina, never flee, 
- [+] fix bug in skill point calculation
- [+] CRASH - someone got their turn BEFORE the player!
- [+] new poisontype field - contracttext
- [+] hecta's pray effect not working.
- [+] adjust food poisioning check difficulty based on food age
    - [+] check OBHP percentage of max.
    - [+] >= 80% obhp means -30% difficulty check
- [+] ring of unholiness should confer dtvuln holy.
- [+] fix colour on spellclouds
- [+] fix bug with spellclouds not affecting centre cell.
- [+] if you are frozen, heat does extra damage and cold does none.
- [+] when frozen, lessen chance of melting.
- [+] reduce bite damage of snakes
- [+] balaclava should protect from gas
- [+] make some floor types (like carpet) be multicoloured
    - [+] celltype->altcolour
    - [+] if altcolour is not C_NONE then use it where (x + y) % 2 is
          true.
- [+] don't regain stamina while training
- [+] random text in shops - sayphrase needs to cope with lf == null
    - [+] done
- [+] fixed - hecta gifted me with a bamboo staff, but i'm inept with
      staves!
- [+] BUG: in vault.vlt.
    - [+] "30% chance of door" really means "otherwise empty cell"
    - [+] need to be able to say "else put a wall here"
    - [+] so change:
        - [+] c:type:what[:pct]
    - [+] to this:
        - [+] c:type:what[:pct][:alttype:altwhat]
    - [+] vlegend_t needs
        - [+] enum VAULTTHING tt2
        - [+] char *what2
        - [+] they default to VT_NONE, NULL
- [+] secret doors should take their fake wall type from the vault spec
    - [+] vaults need f_celltypeempty/solid flags
    - [+] add via:  solid:xxx in vault def
- [+]  recycler
    - [+] donate anything
2012-07-15 05:01:58 +00:00
Rob Pearce e5c6d8b094 - [+] bjorn prayer should knockback adjacent enemies
- [+] BUG when i enter baba yaga's hut:
    - [+] ERROR - couldn't link stairs back to map entry object.--More--
        - [+] was assuming that exitdir was up/down.  for entering the
              hut, the direction is "in".
- [+] lots of missing text colours - fixed.
- [+] is 'appropriate' working? i got a sun hat!
    - [+] yes, but "armour" should mean "ar >= 1", to differentiate
          from 'clothing'
    - [+] also, size sohuld match for armour.
- [+] time code (if you have a watch):
    - [+] things which occur at certain times
        - [+] "glorana's peace" - morning twilight and sunrise.
            - [+] boost life spells
            - [+] glorana worshippers gain some special - regen.
        - [+] midnight =  "witching hour"
            - [+] boost necromancy
            - [+] werewolves always change to wolf
            - [+] implement an auto-cast for player lycanthropes
- [+] when a ling parasite enters a corpse:
    - [+] add some kind of flag so that when it dies, a living ling
          parasite appears on top of the corpse.
    - [+] F_CORPSELF
2012-07-06 03:54:58 +00:00
Rob Pearce 6764a20443 - [+] bug: training never going up!
- [+] new listen code
    - [+] nov: approx. dist
    - [+] beg: distance + direction + detect if 1 away
    - [+] adp: listen at stairs, detect if 2 away
    - [+] sk: detect if 3 away
    - [+] exp: ident monsters
    - [+] exp: detect if 4
    - [+] mas: detect anywhere
- [+] remove f_nosmell from snakes.
- [+] sixth sense - don't kill the spell after it has activated.
2012-05-08 21:57:49 +00:00
Rob Pearce 435b374c25 - [+] "really attack the helpless something?"
- [+] don't show this message if we can't see iT!
    - [+] also dont count this as a peaceful attack if we can't see it.
- [+] missiles missing you should interrupt training!
- [+] Why does monk acuracy start at -4?!
- [+] godstone of destruction (hammer )
- [+] godstone of life (heart ?)
- [+] godstone of mercy (flower?)
- [+] revenge/theft (glove?)
- [+] godstone of purity (orb ?)
- [+] death: of death. (skull ?)
    - [+] casts infinite death
- [+] nature: of Nature (seed ?)
    - [+] all plants become peaceful
    - [+] all animals become peaceful
    - [+] cure all diseases
    - [+] quench all fires
    - [+] flowers grow everywhere
    - [+] summon treants ?
- [+] battle: of Battle (make this a horn?)
    - [+] remove all curses on equipped wep/arm.
    - [+] bless weapon (if not already done)
    - [+] nullify all other lfs
    - [+] super speed attacks ?
    - [+] warriors appear
- [+] magic: of Magic (crown ?)
    - [+] restore all mp
    - [+] learn any spell
    - [+] identify all objects
- [+] make Lavax be playable
- [+] make Fishfolk be playable
- [+] fix bug with wand lof
- [+] reduce rarity of wands
- [+] getrandomobwithflag()
- [+] fix big memleak bug (allocating map cells twice)
- [+] infinite loop on win game by defeating a god.
- [+] klikirak shouldn't make fire when on plane of gods/
- [+] createhabitat shouldn't be allowed to blank pre-vault  (ie.
      locked) cells
- [+] bug: wasn't any lfs in realm of gods
- [+] master vault
    - [+] bottom of dungeon has link to "vaults".
    - [+] vault stairs needs a key to open it. (special stair type)
    - [+] stair type:
        - [+] metal hatch leading down
        - [+] metal ladder leading up
    - [+] add new habitat
    - [+] add new branch
    - [+] algorithm for making h_vault level:
        - [+] start with everything a wall
        - [+] place x number of random rooms or vaults with tag:vault
            - [+] rooms can't overlap
            - [+] rooms should be fairly small
            - [+] IMPORTANT: rooms can't be further than 2 (3?) cells
                  away from other rooms
        - [+] every room has locked doors (never open entrances)
        - [+] then go through, and cell which has a room cell near it
              becomes empty
        - [+] problems:
            - [+] rooms have no doors!
            - [+] rooms are too small!!
        - [+] populate with monsters (f_rarity)
        - [+] more chance of "guard" jobs
        - [+] automatically place chests
    - [+] 3 levels with:
        - [+] 1 staircase up/down form each
        - [+] down stairs require key to open.
    - [+] first level of vaults: outer vaults
        - [+] antechamber with vault guardians
    - [+] second level: inner vaults
    - [+] last level: master vault
        - [+] inner chamber with all the godstones
        - [+] once you pick up one godstone, the others vanish.
2012-04-27 01:23:14 +00:00
Rob Pearce 0f9db848d3 - [+] populate ant nest with objects (set rarity)
- [+] when placing any vault with maintainedge, set "LOCKED" for all
      cells
- [+] change all mapmaking code to honour LOCKED(not just digdungeon)
    - [+] room placement code
    - [+] cave
    - [+] dungeon
    - [+] forest
    - [+] sewer
    - [+] swamp
- [+] fixed. BUG: TRAVEL to the swamp, walk up stairs...
    - [+] ERROR - stairs should link to existing map ('dungeon L7 (id
          #3)', depth 7), but
          it has no free stairs.--More--
    - [+] walking _down_ is okay.
    - [+] was only checking to link entryob when we were going DOWN
          stairs.
- [+] place fixed vaults _BEFORE_ creating habitats ???
    - [+] this will only work after all creation routines honour
          "->locked"
    - [+] set locked on all fixed vault cells after making them.
- [+] better code for removal of internal doors.
- [+] bug! fleeing monsters taking no time!
- [+] brainbat
- [+] consume corpses to regain life? make this a normal death spell.
    - [+] f_consumesouls
    - [+] anything that dies in sight nearby heals her.
    - [+] "%s consumes the soul of the dying %s ?"
    - [+] give this to baba yaga
- [+] loading bug with map flags:
    - [+] getting a flag with text = "flags"
    - [+] am i saving something else with a space in it ???
    - [+] %s in fscanf doesn't handle spaces!
        - [+] in save.c, when I'm liable to get spaces in a string,
              replace %s with:
            - [+]  sscanf("%[ a-xA-Z0-9+'*/-]")
- [+] earthwyrm
    - [+] divine into two monsters if slashed
    - [+] appear in ant nests
2012-04-05 09:28:20 +00:00
Rob Pearce 892440031d - [+] if you cancel a limited wish, don't age you.
- [+] sourges shouldn't learn spells from books
- [+] MR doesn't affect canwill spells?
- [+] innate MR (ie. fromrace or from scource) doesn't affect spells
      either.
- [+] too many potions of water! made it common rather than frequent.
      now NO frequent potions.
- [+] getting 'wake t someone runmmaging through your pack' when noone
      nearby
    - [+] maybe this flag isn't gettginre removed properly?
- [+] polymorph should fix injuries first
* [+] for missing hand injuries, select the hand AFTER main switch()
* [+] shouldn't be able to weild 2-handed weapons if you only have 1
      hand!!!
- [+] "travel" spell should let you go to RT_HABITAT things.
- [+] fix crash validating f_spotted flag
- [+] don't always put "The " on unique objects.
    - [+] use F_THE for this instead.
    - [+] godstones should still have F_THE
- [+] don't place staircases inside MAINTAINEDGE vaults!!
- [+] burning a wood floor only makes a hole in the ground if there are
      more levels underneath!
- [+] end of caves:
    - [+] both bossrooms should have goblin king and red wyrmling
    - [+] stone key.
- [+] need a vault flag which say s: add f_stayinroom to everyone who
      is created in this room
    - [+] done: "keepmonsinroom"
- [+] cope with a branch's entry stairs coming from a vault 
- [+] killing unique monsters with necrotic damage should still leave a
      corpse.
- [+] make "ornate chest" which has rare objects
    - [+] put it in branch endings and make it a rare object
- [+] f_extrainfo in fireat() should show damage _after_ adjustment
- [+] BUG: swamp rooms aren't connected!!!!
- [+] end of forest branch:
    - [+] vault containing baba yaga's hut
        - [+] bone fence around it
        - [+] skeletons
        - [+] the hut.
    - [+] baba yaga's hut
        - [+] cabin on chicken legs
        - [+] f_timid!
        - [+] jump
        - [+] claw attacks
        - [+] walks around
        - [+] corpsetype = link to inside the hut
        - [+] made of dragonwood (ie. hardness 5)
        - [+] Don't say "You kill the walking hut".
        - [+] text when it dies: "Exhausted, the hut slumps to the
              ground."
    - [+] inside the hut = small level with baba yaga
        - [+] new regiontype: babayaga's hut
        - [+] new habitat: byhut
        - [+] making the habitat: only has a single vault. (one with
              tag 'byhut')
        - [+] diff layouts
            - [+] circular
            - [+] square
        - [+] baba yaga herself
    - [+] baba yaga
        - [+] weighs 50kg
        - [+] obs:
            - [+] key!
        - [+] hp: 135 = 22 hitdice (d6)
        - [+] 75% magic resistance
        - [+] attribs
            - [+] str: exhigh
            - [+] iq: exhigh
            - [+] wis: exhigh
            - [+] agi: average
            - [+] con: high
            - [+] cha: exlow
        - [+] fire, cold, magic, poison resist
        - [+] immune to  necrotic
        - [+] abilities
            - [+] seeinvis
            - [+] awareness
        - [+] claw/teeth attacks.
            - [+] claw = 8 DR
            - [+] teeth = 6 DR
            - [+] maxattacks = 2
        - [+] grab ability
        - [+] spells??????
            - [+] fear
            - [+] weaken
            - [+] summon insects/animals
            - [+] entangle
            - [+] blink
        - [+] when she dies, unlock the hut door.
- [+] delving code.
    - [+] new digging code:
        - [+] delve()
        - [+] delve_pullcell
        - [+] etc
    - [+] h_antnest
        - [+] creaetantnest calls delve() functions.
    - [+] insert this in the main dungeon somewhere
    - [+] populate with monsters (set rarity)
    - [+] place queen ant on the map.
        - [+] via new regionthing type RT_LF 
- [+] branch ends should have a boss with a key!
    - [+] jimbo
    - [+] babayaga
    - [+] cave boss (dragon ?)
2012-04-04 09:59:48 +00:00
Rob Pearce 252a4024a7 - [+] disrupt undead
- [+] gust of wind has higher chance of knocking down small creatures
- [+] check: ensure vault names have no ' 's
- [+] loading bug: celltype id 0 doesn't exist.
- [+] loading bug: adding minotair - don't call sethomeroom()
- [+] fixed - bones bug: "2 loaves of stale bread"
- [+] crash when object thrown away by holy circle dies.
- [+] armour with "permenance" cast shouldn't be able to be healed
      either!
    - [+] use immutable instead of invulnerable
- [+] if you weild your spare weapon (and dont have a spare), remove
      'spareweapon' flag!
- [+] skoob should be made out of "water", not "ice" (don't want it to
      have hardness)
    - [+] change its material
    - [+] hitting water-based lfs should rust weapon!
- [+] rusted weapons should have 10-30% chance of giving tetanus.
    - [+] low chance of spasm each turn (5%)
    - [+] "your [xx] spasms/contorts violently!"
    - [+] hand = drop weapon
    - [+] leg = fall over
    - [+] jaw = nothing
    - [+] back = spine broken, you die
    - [+] tail = tail broken
    - [+] chest = rib broken
    - [+] wings = stop flying
- [+] electricity damage confuses robots
- [+] poison's power increase chance of its effects happening
    - [+] whenver tetanus effect fires, increase power.
- [+] electric damage spreads through water
- [+] create water spell (like grease, but just makes water)
- [+] objectgrowth spell shoudl use f_growsto instead of hardcoding
    - [+] v0 = obid or celltypeid
    - [+] vt = determines VT_ob or vt_cell
- [+] then add shrink spell which uses f_shrinksto
    - [+] deinfe it
    - [+] add effects
    - [+] specail case - brazer -> helmet should be red hot
- [+] hecta should mind attacking evil peaceful creatures
- [+] ai should still flee with bleeding legs
- [+] bandit had 90hp - problem with varlevel!! have changed
      calculation.
    - [+] monsters now just get 1 extra hit die per level after the
          first.
- [+] only some branches should use region->depthmod. others only use
      regiontype->depthmod.
- [+] spell: disrupt undead -
- [+] announce 'shatter' spell:  you hear an ultra=high pitched
      whining/ringing.
- [+] announce'sleep' spell: suddenly, you feel very drowsy.
- [+] inducefear: too powerful. tweak skillcheck values.
Initial work on baba yaga (sylvan forest boss)
2012-04-01 19:48:13 +00:00
Rob Pearce 53ada31364 - [+] bones file error:" the lazy minotaur"
- [+] parserace needs to cope with lazy etc.
        - [+] make enum BEHAVIOUR
        - [+] make behaviour_t
            - [+] id
            - [+] name
            - [+] flags
        - [+] killbehaviours()
        - [+] addbehaviour() calls to define them
        - [+] cleanup callsk illbehaviours
        - [+] givebehaviour(lf, enum behaviour)
        - [+] getrandombehaviour()
        - [+] instead of checking f_behaviour->text, use
              findbehaviour(f->behaviour->val[0])->name
        - [+] parserace should handle these and populate wantflags
              appropriately.
- [+] add disease incubation times (instead of getting them right away)
- [+] OT_A_TRIP should be a lot harder on anything with more than 2 legs
- [+] monster fleeing up/down stairs should anger hecta
- [+] reduce short bow damage.
- [+] add composite bow (between short & long)
- [+] need magic/silver weapons to hurt MT_MAGIC things
    - [+] spirits should no lnoger be made of "MAGIC" - make them
          something else. flesh will do.
    - [+] in attack.c, noncorporeal check should also check for silver
          / magic weapons
    - [+] describe noncorporeal in io.c if knowledge is high enough.
- [+] new spell casttype: ct_sounbased. deafness protects.
- [+] Banshee (7hd, spirit, death keen at night) - blue / red 'p'
    - [+] death keen = sonic damage"midnight dirge"
    - [+] but only at night. 
- [+] harpy: 7hd - orange 'A'
    - [+] charm (via sound, so sonic prevents)
    - [+] 50% chance of bone club
    - [+] bite, claw
2012-03-30 03:34:24 +00:00
Rob Pearce 672e26a81c - [+] object descriptions giving away obmods! fixed.
- [+] change lf summoning to better control hostility
- [+] gods should be able to see invisible
- [+] travel spell to quickly get around branches
- [+] treant / ent = green T
    - [+] old/normal/young
    - [+] older = slower
    - [+] elder can cast 'animate tree' ?
- [+] bug: when you offer a godstone to a god outside of realm of gods,
      they are saying "no" but still taking it.
- [+] gods should yell out a warning when you walk over a new godstone
    - [+] this lets the player know that picking it up will anger that
          god.
    - [+] then add f_donewarning to it.
2012-03-22 23:17:28 +00:00
Rob Pearce 5d61533c15 - [+] move pctchance for individual spells from F_AICASTTOxxx to
F_AISPELLTARGETOVERRIDE v2.
    - [+] change code:
        - [+] F_AISPELLTARGETOVERRIDE v0=spellid, v1=F_AICASTTOxxx
              v2=TT_xxx text=pctchance or NULL.
        - [+] aispellok(xx, purpose) : check this _before_ checking
              spell->f_aicasttoxxx
    - [+] add spelltargetoverride for vampire
    - [+] add spelltargetoverride for werewolf
- [+] retain F_FLEEFROM on polymorph.
- [+] lycanthropes
    - [+] show up as "human" unless your animal/magic lore is high
          enough
    - [+] vulnerable to silver weapons
    - [+] Wererat (3hd, weapon damage)
        - [+] uses short blades
        - [+] stench
        - [+] want alcohol?
        - [+] transform into fast version of rat. plague rat?
        - [+] summon small animals. summon # override? "count:"
    - [+] Werewolf (4hd, 6 dam)
        - [+] summon wolves ?
        - [+] shapeshift to dire wolf
        - [+] regenerates
        - [+] firstaid skill (fast healing when resting)
    - [+] Werebear
        - [+] 6 hd
        - [+] shapeshift to grizzly bear
        - [+] summon 2-3 black bears
        - [+] firstaid skill (fast healing)
- [+] shapeshifting monsters sometimes start as animal form
- [+] if you are good/evil different alignments, mosnters should flat
      out refuse to join you.
- [+] more different sayphrases for recruitment.
- [+] when placing homelevobs, try to stick to rooms, not corridors
    - [+] getrandomroomcell() needs WE_xxx argument.
    - [+] implement cellmatchescondition(c, cond)
    - [+] real_getrandomadjcell() should use this too
- [+] swoop ability should only work with claw attacks
    - [+] F_FORCEATTACKOB
        - [+] getweapons() needs to honour this.
    - [+] spell.c: check if you have the right attack type
    - [+] aispellok: only if you have the right attack yype
- [+] horse - 2hd, brown u
- [+] Hippogriff (3hd , horse/eagle, 'u') - yellow
- [+] centaur (4hd, u) - grey
- [+] make pegasus be cyan
- [+] CATs
    - [+] Griffon (7hd, tr4-5, u, hates horses) - lion/eagle - yellow
          'f'
2012-03-15 09:19:05 +00:00
Rob Pearce ea5d012876 - [+] bug: notime being set in timeeffectslf() but NOT being UNSET!!!
- [+] air spells:
    - [+] create whirlwind - make a single whirlwind
        - [+] implement
    - [+] ethereal steed - move very fast and levitate
        - [+] f_autocreateob whirlwind behind you
        - [+] whirlwind object throws any lfs/objects around randomly
    - [+] tornado - creates a single tornado at a given location (more
          powerful). it moves around randomly, kills adjacent walls.
        - [+] F_OBMOVESRANDOMLY
        - [+] find an adjacent cell (walls ok)
        - [+] kill any walls there
        - [+] move there
    - [+] hurricane -  creates a cross cloud of whirlwinds (very
          powerful!). these move around randomly and kills adjacent
          walls.
        - [+] implement
        - [+] make them all move TOGETHER.
- [+] djinni / genie
    - [+] invisibility
    - [+] gaseous form
    - [+] illusion? mirror image ?
    - [+] permenant ethereal steed effects
    - [+] airblast
    - [+] gust of wind
- [+] efreeti
    - [+] wall of fire (new spell)
    - [+] gas form
    - [+] enlarge
    - [+] flame pillar
- [+] when summoning a monster with a lifeob, place it under them?
- [+] druid should learn canwill plantwalk at some point... level 7
- [+] allow f_cancast to have a timer too, like canwill. (so that
      monsters only cast certain spells sometimes)
- [+] is ai plantwalk working?
    - [+] seems to...
    - [+] but then i get "something casts a spell at you!"
    - [+] aigetspelltarget is setting targlf to player. FIXED.
    - [+] ai keeps on casting plantwalk after doing it once.
    - [+] ai needs to sto fleeing after casting plantwalk successfully!
        - [+] this is because after stealing, we are fleeing for a time
              limit, rather than PERMENANT
    - [+] once this is fixed, add spellcasttext plantwalk = null for
          dryad.
- [+] NEw code:  if you teleport, and you were fleeing, and you can no
      longer have LOF to the one uou're fleeing from, STOP.
- [+] The dryad vanishes!  A dryad moves out of view.--More--
    - [+] don't say both!
- [+] change CHARMEDBY code for player:
    - [+] walk towards charmer, then give them your stuff!
- [+] dryad brown 'T' (tree creature)
    - [+] knife
    - [+] must stay near oak tree
    - [+] can "plantwalk" between oak trees (or other plants).
        - [+] cast spell at cell with plant, warps you to a random one
            - [+] for player:  reveal all cells with trees, then ask
                  you which one.
        - [+] range 1
        - [+] maxpower 1
        - [+] ai casting:  must be a plant in range.
    - [+] emergency code: if not within lifeob range, move back!
    - [+] can cast sleep
    - [+] wants gold/gems/weapons
    - [+] home oak tree contains gems
    - [+] steal
    - [+] stayinroom
    - [+] charm 
    - [+] AI shouldn't ever walk away from life ob!
    - [+] ai homeob gems aren't appearing
2012-03-07 11:46:55 +00:00
Rob Pearce 69cd41a714 - [+] make zombies eat flesh.
- [+] warn before eating your own kind if it will anger your god, and
      you wisdom is high.
- [+] make disease way worse if you eat your own race's corpse!
- [+] CRASH when i try to cook firebug corpse
* [+] bones files:
- [+] when your leg is bleeding, don't lose hp for ATTACKING, only for
      MOVING.
- [+] bug: issue with skill display if you learn higher than your max
      level by reading a book!
    - [+] in this case, reading the book should fail.
- [+] when you start worshipping felix, allow you to learn lockpicking
      & thievery to full level!
- [+] infinite loop when an ashkari enters rage while already eating.
- [+] felix prayer should always unlock all nearby doors
- [+] if you add f_calwill xxx, v1=112312 v2=NA, make v2 = v1.
    - [+] that way we can confer it!
- [+] say "this is xxx!" after wearing a new amulet.
- [+] fork / knife should make you eat faster.
- [+] double the hp of most armour again
AMULETS
- [+] add new bodypart = neck
- [+] object hiddennames
    * [+] nouns
    * [+] adjectives
- [+] flight  (canwill fly)
- [+] enhance spell power
- [+] victimization (makes everything hostile) (no auto id)
- [+] blinking
- [+] anger (canwill rage)
- [+] vs poison (poison immune)
- [+] vs magic (magic resistance)
- [+] common
    - [+] feather fall (dt_fall dmg = 0)
        - [+] don't "slam into the ground", just "float gently to the
              ground"
    - [+] of amplification (boost listening skillchecks, allow you to
          listen at stairs)
    - [+] peaceful sleep (don't get woken up by sound, cursed)
    - [+] chef's amulet(lower metabolism) 
    - [+] thief's amulet (lockpicking)
2012-03-05 10:31:21 +00:00
Rob Pearce 4808d2c9df - [+] allow user to DISABLE auto dodge fatal attacks ?. enable through
"reflexive dodging" ability
- [+] first rotation in a turn takes no time
- [+] exploit: if you walk diagonally next to a monster, it moves to
      your previous space!
    - [+] fix: aigetlastknownpos should  return the cell that trails
          point to, not the cell _with_ the trails.
- [+] only recognise weapon quality (masterwork etc) if you are skilled
      in that weapon or perception
- [+] cope with mosnter necromancers, etc
    - [+] parserace should look for necromancer etc.
    - [+] if so, set "wantsubjob" to SJ_NECROMANCER etc
    - [+] move specialty mage code into "givejobspecialty"
- [+] Make wizard's job name depend on primary spell school.
    - [+] "Demonologist", "Firemage", "Icemage", "Necromancer",
          "Skymage", "Wizard" (wild)
    - [+] instead of getjob() then j->name, use "getjobname(lf)"
    - [+] f_jobname
- [+] i should never "hear voices chanting" from an abandoned temple
- [+] for monsters, show "its bite inflicts poison" in io.c racial
      knowledge
- [+] casting healing on myself pleased Glorana twice!
    - [+] one from casting a life spell
    - [+] one from casting healing.
    - [+] move ones from spell.c to castspell()
    - [+] new flag: f_pleasesgod v0=godid, v1=howmuch
    - [+] add to other spell objects:
        - [+] f_pleasesgod
            - [+] GODFIRE - spelllevel * 2
            - [+] GODDEATH = spelllevel
            - [+] GODLIFE = spelllevel*2
            - [+] GODNATURE: spelllevle*2
    - [+] show this in describespell
- [+] for god healing effects, use gainhp() so that it says "Your HP is
      fully restored."
- [+] change F_RESISTMAG to be percentage rather than 1-20
- [+] make some gods' pleasure boost power of related spells
    - [+] 1 per each positive levle of getpietylev()
    - [+] glorana: life
    - [+] hecta: death
- [+] only apply auto shortcuts for players.
- [+] subjob_t
    - [+] addsubjob()
    - [+] killsubjob()
    - [+] show subjobs in job descriptions.
    - [+] data.c:  addsubjob(.... 
    - [+] in job defs:
        - [+] f_canhavesubjob sj_xxx
    - [+] use this to determine whether to ask about them
    - [+] redo getjobname 
    - [+] remove f_job->Text
- [+] speak with dead should only work on corpses of races which can
      talk.
- [+] warrior subclasses
    - [+] "Scourge"
        - [+] gains magic resistance as you level up
            - [+] == 5 + (level * 3) %
        - [+] nospells
        - [+] no mana
    - [+] paladin
        - [+] blessed gear
        - [+] can will turn undead
        - [+] healing magic
        - [+] god = glorana.
        - [+] cannot use spells if glorana is angry.
    - [+] battlemage
        - [+] starts with one spell school (fire/ice/air)
        - [+] canlearn fire/ice/air spell schools
        - [+] limited to adept in all schools
        - [+] slightly less hp
        - [+] no warrior abilities
2012-02-24 06:45:23 +00:00
Rob Pearce 30006c4cac - [+] for intelligent and wise monsters in groups, make at lesat one
stay awake (on guard)
- [+] shouldn't get salmonella from roast meat! implement israwmeat()
- [+] Curse removal -      $-2147483648 each
      Blessings     -      $-2147483648 each

      (there is a $644245120 surcharge for uncursing an equipped item)
      Pay for a blessing (you have $118) [yn]?
    - [+] fixed.
- [+] f_rage should make f_hiding disapepar.
- [+] after stealing from shop, call more() to allow for god messages
- [+] problem - vampires shouldn't ALWAYS be flying.
    - [+] any race with 'f_flying' should have f_canwill fly as well. 
          Use naturalflight on race instead.
- [+] call touch() on your weapon every turn? (ie. for red-hot ,
      undead, etc)
- [+] CRASH right after a cockatrice stoned my wolf.
    - [+] lf->flags = NULL
    - [+] lf->race = corrupt.
    - [+] because i'm calling die() from withing stone() from within
          timeeffectsflags()
2012-02-14 19:11:33 +00:00
Rob Pearce 3e5c718502 - [+] non-player insects should never be able to break out of a web.
- [+] stench should still affect non humanoid/animals if they have
      f_enhancesmell
- [+] bug: god of fire should only be pleased by kills if you used fire.
- [+] luck should affect whether you gain abils from eating corpses
- [+] lower weight of four leaf clover
- [+] bug: when dungeon had different wall type selected, still got
      scattered rock walls
- [+] death spells shouldn't please hecta if they fail
- [+] bjorn should restore stamina when you pray
- [+] show your score when you didn't make the hiscore table.
- [+] eating corpses for resistances
    - [+] f_eatconfer on race defs. fill in text for stacking, ie.
          resist becomes immunity if you already ahve it.
        - [+] must have f_mutable.
    - [+] have to eat mutant corpse first to enable this.
        - [+] you gain f_mutable.
        - [+] "Your body feels ready for mutation."
    - [+] thereafter......
    - [+] for resistances, you first take maxhp/2 damage of the same
          type (with chance to ko rather than kill)!
    - [+] inherited by corpses
    - [+] eat shadowcat to see through smoke? this replaces the
          temporary smoke creation effects.
    - [+] add to some lfs
        - [+] dtresist (elemental based)
        - [+] attrmod (wyrm or giant corpses)
    - [+] when you create a new corpse object, take EATCONFERS from
          race!
- [+] store owners shouldn't let you in if you have f_stench
- [+] if you pick up a non-magical object (ie. a potion of water), and
      have detect magic, and it's not magic...you know it's uncursed,
      +0, etc.
    - [+] (assuming pot_water is known)
- [+] other effects of alignment
    - [+] areenemies()
        - [+] good:
            - [+] other good creatures are still "peaceful" (remove
                  f_hostile on creation)
            - [+] evil creatures are always hostile (even npcs) (add
                  this flag in addlf())
            - [+] no xp for attacking peaceful
        - [+] neutral: nothing special
            - [+] no xp for attacking peaveful
        - [+] evil: 
            - [+] still get xp for attacking peaceful
            - [+] good creatures are always hostile (add this flag in
                  addlf())
    - [+] show alignment in @. maybe after "Race: xxx"
    - [+] add random alignments to some humanoid races
        - [+] should be able to jsut use f_align al_none "gne"
        - [+] lizardman
        - [+] all the playable races
    - [+] bonus when 'c'hating to your own alignment npcs 
    - [+] move alignment question to givejob(), and make it random for
          mosnters
    - [+] add alignment to gods
- [+] sandman - puts you to sleep. OR has lots of sleeping dust.
    - [+] glyph: brown 'y'
    - [+] miniature tornado of sand, humanoid visible inside
    - [+] can cast sleep, range 1 (or 2 and need lof?)
    - [+] corpse:  smoke and sleeping dust?
    - [+] no attack.
    - [+] low hitdice (2)
    - [+] fairly high ar (10)
    - [+] madeof dirt
2012-02-10 06:44:12 +00:00
Rob Pearce 5d7b3dedc6 - [+] change how poison works
- [+] poisontype_t
    - [+] define them all
    - [+] ie. each poison type has a fixed damage amount.
    - [+] check poisonisfatal()
    - [+] check F_POISONED bit in startlfturn

- [+] salmonella. like food poisoning but causes more damage.
- [+] small chance of getting sick from raw meat?
    - [+] FIT check to avoid.
    - [+] raw meat = gastroenteritis. 
    - [+] raw chicken = salmonella 
    - [+] rotting food = either gastro (66%) or salmonella (33%)
- [+] new monster-only jobs
    - [+] guard
        - [+] has lots of armour and f_noflee and f_stayinroom
- [+] set climbing difficulty based on cell type as well as material
2012-02-08 04:23:51 +00:00
Rob Pearce d876d30d70 - [+] Remove or disable old code:
- [+] shopkeepers
    - [+] remove F_SHOPITEM - this was used for old shop code.
    - [+] "shop" vaults
    - [+] village map (but leave the habitat for use in bazaar vault
          etc)
- [+] vault: support for random monsters - use "random" for name
- [+] vault flag: f_monsstayinvault
- [+] vaults for goblin caves
    - [+] pool of water
    - [+] small hut
    - [+] brick wall
- [+] trapped corridor
- [+] pranksters dust (makes everyone invisible)
- [+] allow c_random for animations
- [+] random chance of different kind of wallfloor when creating
      dungeons
    - [+] brick wall (slightly weeaker, orange/red)
    - [+] metal wall
    - [+] wood ??
    - [+] instead of using map->habitat->solidcelltype, use
          getsolidcelltype(map)
        - [+] this checks map for f_solidcelltype
        - [+] if not there, uses map->habitat->solidcelltype.
    - [+] vaults should be able to inherit empty/solid types from map
        - [+] x:cell:EMPTY
2012-02-07 23:28:48 +00:00
Rob Pearce 24d95368b6 - [+] redo throw hit%. even inept sk_throwing should have 40% or so to
hit at point blank range.
    - [+] only reduce hit% after first cell? 
- [+] increase change of player ko with yumi
- [+] tranq dart and nanodart should be rodshaped.
- [+] genericise purification
    - [+] F_PURIFIESTO v0 = newobject
    - [+] add toadstool -> shiitake
    - [+] posion potion -> water
    - [+] acid potion -> water
    - [+] rum -> water
    - [+] DONT make the original object type known now 
- [+] higher level purify food lets you select a cell!
    - [+] need f_targettedspell v1 & v2 to specify power.
- [+] druid should get to pick one of 3 spells (from each available
      level) upon levelup, not anything!
    - [+] implement f_levspellschoolfromx
    - [+] TEST!
- [+] implement secondary weapon swap with 'x'
    - [+] initial press:  unweild curwep. if successful, mark as
          secondayr.
    - [+] subsequent presses:  find secondary wep (or fail). remember
          cur. weild secondary. if successful, remove scondary flag and
          mark old cur wep as secondary
    - [+] when you move an object, it loses secondary flag.
- [+] BUG:  I had TWO regions with rtype->id == RG_CAVE!!!
    - [+] have added debug code
    - [+] think this is fixed - need to remove created regions when i
          regenerate a map.
- [+] should be able to sell gems to jewelery store
    - [+] sm_sellitems
    - [+] shopsell()
    - [+] shop has f_cansellobclass xxx, val[0] = pct of full price you
          can sell for. normally 50% but 75% for gems. 
    - [+] allow COUNT - modified askobjectwithflag ?
        - [+] OR add an extra *sellshop option to doaskobject ??
        - [+] if this is set, only allow selection of objects which
              match the shop's f_shopsell flags
            - [+] ie. replace wantflags[]
        - [+] when passing this, don't  also pass wantflag args!!!
    - [+] rename shopsell flag to  f_shopacceptsflag
    - [+] accept F_NONE in shopacceptsflag
    - [+] make shopdonate use the same code
- [+] make donating to shops lower their prices ?
    - [+] for each 100 value you donate, reduce prices by 1%
        - [+] ie. donate 1000 worth, reduce by 10% = 1 level of speech
              skill
- [+] change shopsell to use  applyshoppricemod
    - [+] applyshoppricemod needs a new arg - up or down
    - [+] check code in objects.c for naming too!  listobs()
2012-02-07 02:50:17 +00:00
Rob Pearce 0ce77ec00b - [+] firebug should deal 1 fire damage to anything on the ground
- [+] f_damagegroundobs v0=dam, v1=damtype
    - [+] add a similar thing ice wraith (they cause cold damage)
- [+] psionic spells:  baffle and disorient too similar?  make one a
      lower level ?
    - [+] make disorient face them away from you!
- [+] ekrub shouldn't get angry for crushing glass underfoot
    - [+] OR... warn before you do this if you worship ekrub
- [+] don't drip water while inside a wall (ie. ethereal)
- [+] don't show "[tried on xxx]" for objects in store inventories!
- [+] make "i bestow a gift" msg change depending on god
- [+] potion of etherealness spell disappating twice?
    - [+] ie. stopspell being called twice.
    - [+] spell effect now chacks for existing noncorporealness
- [+] different god msg if they are angered but still pleased
    - [+] "don't do that again!"
    - [+] "ahem!"
    - [+] "i won't tolerate further transgressions"
    - [+] etc
- [+] io.c not showing that druid is vegetarian.
    - [+] show this only if ilfetime !=  FROMRACE
    - [+] don't show it otherwise, since it's a racial trait.
    - [+] change hasflag_real to have "int lifetimeexception"
    - [+] same with:
        - [+] VEGERATIRNA
        - [+] CARNIVORE
        - [+] PARTVEGETARIAN
        - [+] F_SIZE??
        - [+] VISRANGEMOD
- [+] stickstosnakes - make this not affect the CASTER's equiped
      weapon, but it doesnt affect weapons of others.
    - [+] implemment
    - [+] make spell description describe this.
- [+] make safebox not be stealable
2012-02-04 23:26:16 +00:00
Rob Pearce c1bccc652c - [+] fixed crash related to F_CASTINGSPELL
- [+] change god names to "god of xxx/yyy/zzz"
- [+] i'm pleasing the god of life somehow unknown. why?
    - [+] from sleeping!
    - [+] was checking !isasleep(god), not !isasleep(player)
- [+] ai object stealing code not working
- [+] chance to wake up when someone is stealing your objects ?
    - [+] stealer makes an easy stealth check
- [+] fix crash in steal()
- [+] when fix_reachability kills a wall, add rubble as if the wall
      fell down.
- [+] if you burn yourself on something, automatically drop it.
- [+] ai shouldn't try to wear dangerous objects.
- [+] f_hot objects count as dangerous
- [+] if metal takes fire damage, it gets F_HOT (unknown)
    - [+] touch() will burn you, and make the flag known ("red hot") 
    - [+] if you are wearing F_HOT armour, take damage from it.
    - [+] modify how heat metal spell works
    - [+] when something catches on fire, it also gains F_HOT 
    - [+] test heat metal
- [+] firebug and fire sprite should have f_extracorpse "small fire"
- [+] in makedesc_skill, only show each "at xxx level" heading once
- [+] ice wraith shuld be flying.  ghast shouldnt be levitating.
- [+] MENDING should fix rust.
- [+] BUG: ERROR - unlinked stairs! should have been linked during map
      creation.
    - [+] was on Dlev 9
    - [+] stairs were going to the swamp.... and swamp had no stairs!!!
    - [+] in finalisemap: swamp was misisng stairtypes!
2012-02-03 05:55:19 +00:00
Rob Pearce 3a671253a1 - [+] bug: constant redraws when walking in dark levels.
- [+] it is because makelitradius is calling setlosdirty.  and when
          you do setlosdirty(player), it redraws!
    - [+] solution: disable all redraws during calclight(), then
          afterward reenable them!!
- [+] found two maps. read the first one.  now reading the second one
      doesn't identify it (make because isknown is now true!)
- [+] plants still being counted as "helpless"
- [+] combine all save data into 1 file
    - [+] gamesave.dat
    - [+] mapxxx.dat
    - [+] regions.dat
- [+] rename elf to "Selnor"
2012-02-01 23:02:18 +00:00
Rob Pearce 849e567b43 - [+] replace "fireplace" with "brazier"
- [+] make non-lethal kills (ie. knockouts) display in grey rather than
      green
- [+] ability: merciful fighting? always does bashing damage, always
      ko. 
    - [+] done
- [+] Chatting to gods shouldn't work
- [+] bug: when running with shift+dir, i'm running past corridors.
- [+] when announcing skill gains, say if they are from a level.
    - [+] set lifetime to FROMJOB when giving them.
    - [+] if lifetime = FROMJOB, ""you can now use the ability 'xxx' 
          (warrior skill)"
- [+] grenade/c4 explosions should be able to damage cells!
- [+] change grenades to have bigger radius (dtorth 1)
- [+] automatically call "fireat" for grenades
    - [+] impement this
    - [+] make the timer shorter!
- [+] add extra checks to stop monsters from attacking allies
- [+] replace "insane"monster behaviour with F_TERRITORIAL v0=range.
    - [+] will atatck anything else visible within range xxx
- [+] grave sprite should be able to see in the dark
- [+] instead of saying "An orc [drunk]", change getlfname to return "a
      drunken orc" etc
- [+] when you throw an object at someone in a wall, it should fall
      onto the ground in front, NOT the wall itself!
- [+] show how MUCH high/low str/agi will affect weapon damage/accuracy
- [+] different shoddy/masterwork text based on weapon types
- [+] bug: monsters never bleed from injuries!
- [+] another bug in getavgdam - negative accuracy returns negative
      damage since we modify damage by accuracy!
    - [+] within this function, limit accuracy to range 0-100
- [+] bug with options - opt->id never being initialised!
- [+] don't apply "behaviours" to anythuing other than humanoids.
- [+] increase missile accuracy if you are above your target
    - [+] (ie you are flying higher them them)
    - [+] getflightsizemod()
2012-01-17 20:46:23 +00:00
Rob Pearce bbaca368e7 - [+] make ring of invisibility also drain your hp!
- [+] monster with tremorsense can 'hear'
- [+] allow attacking of wall cells with normal melee attacks
    - [+] glass should shatter
- [+] option: stop running on hearing a sound
- [+] make describerace use downline().
- [+] make certain strengths and weaknesses not show up in player
      selection
- [+] An uncursed manriki wraps around the hawk.  The hawk falls to the
      ground.
      A black bear comes into view.
      You critically scratch #.  The black bear roars.
    - [+] check construct_hit_string.
    - [+] i was hitting a hawk.
- [+] still some entrances overlapping glyphs.
    - [+] genericise checking code in fix_Reachabilty
    - [+] Also: in fix_reachability, disallow linking to cells which:
        - [+] are adjacent to a door
        - [+] are part of a vault with maintain_edge, and are 't marked
              as exits.
    - [+] looking a bit better now...
- [+] incorrect glyph colour for animated zombies
- [+] grow/shrink potions? to change lf size to fit armour.
    - [+] resizelf()
    - [+] modification spell (l2)
        - [+] grow
        - [+] shrink
    - [+] potions
        - [+] cursed growth does shrink
- [+] make rare monsters / objects only sometimes be known.
2012-01-12 01:28:07 +00:00
Rob Pearce f7061b45ca - [+] in shops, show 'ESC when done, ? to describe/purchase'
- [+]    b - a silver shoddy bastard sword
    - [+] show object's condition before changed material state?
- [+] bug: torches aren't lighting up walls when walking in corridor!
- [+] scrolls with f_scrollneedsob should say 'tried on object' 
- [+] dungeon light
    - [+] lit shoudl be "illuminated" and be an enum
        - [+] IL_FULLYLIT
        - [+] IL_WELLLIT (dark, candelabras in  every room and moss
              every 4 steps)
        - [+] IL_DIM (dark, torches in rooms and moss every 6 steps)
        - [+] IL_SHADOWY (dark, torches in some rooms and moss every 8
              steps)
        - [+] IL_FULLYDARK (ocassionally moss in rooms, otherwise no
              light at all)
    - [+] need more fixed light source objects:
        - [+] moonmoss and sunmoss
    - [+] if not fully lit, map illumination level determines how often
          light sources are placed, and what type.
- [+] special monster behaviour (perception or lore will show this?)
    - [+] insane monsters (attacks anything)
    - [+] hunting for food (hungry, add covets food)
    - [+] returning to lair with plunder (extra treasure)
    - [+] timid (lower morale, maybe add f_timid or alwaysflees)
    - [+] drugged (never flee)
    - [+] drunk
    - [+] diseased (start with a non-lethal disease. eating its corpse
          infects you)
    - [+] determined (will chase the player for longer)
    - [+] lazy (chase for less time)
    - [+] only show if perception >= skilled)
- [+] only show monster jobs if lorelev >= beginner
- [+] bug: cursed scrolls no longer having bad effects. fixed.
- [+] after you fool a monster by feigning death, it shouldn't target
      you for a while.
- [+] prevent wands from being blessed/cursed.
- [+] bug: still no displayed text when your pet dies.
    - [+] update: this seems to happen when a monster is killed by
          another monster
    - [+] The bear cub claws the dog.  The dog wakes up.
    - [+] fixed!
- [+] hwen monsters start with weapons/sheilds, their starting skill
      should be based on hit dice.
    - [+] max skill is hitdice / 3
- [+] wake up player before giving god gift!
- [+] "a goblin shaman moves out of view"
    - [+] but i didnt hav ehigh enough lore!
    - [+] maybe real_getlfname needs "showall".  check this istneda of
          usevis to see whether to show job.
- [+] crash when objects fall through a hole and the lower hole needed
      to be moved slightly.
- [+] bug: invisibility is fooling even things with 'enhancesmell'
- [+] water onto dirt only makes mud if there isn't some already there.
- [+] monk fists DR should max out at 12 or so, since #attacks keeps
      going up!
- [+] don't show god pleaseing messages when asleep
- [+] bug: showing '%s dodges" when you can't see it.
- [+] fix rarity of wands
- [+] reward at bottom of caves:
    - [+] godstone of war (cases RAGE on everyone near you)
Goblin cave bosses:
- [+] goblin king
- [+] young dragon
2012-01-10 03:40:43 +00:00
Rob Pearce e1b569f306 - [+] BUG: trying to go down stairs from L7 (6?)
- [+] You walk down the staircase...
          ERROR - can't find opposite end of stairs/portal!
    - [+] You walk down the staircase...  ERROR - unlinked stairs!
    - [+] This is related to the fact that all the staircases came from
          Jimbo's vault
    - [+] For some reason we're not linking them when they come for ma
          vault!!!
    - [+] "joining unliked stairs" section not working???
        - [+] it calls getstairdestination, but this DOESNT call
              linkstairs!
        - [+] maby: call autolink everytime i add stairs ?  or only do
              this during createvault ?
- [+] automatically remove useless doors (ie. ones where all adjacent
      walkable cells are in the same room)
- [+] in fix_reachability i'm drawing a corridor through vault/room
      walls. <- probably this one.
    - [+] don't allow auto reachability to enter rooms through the
          wrong side wall.
    - [+] TEST during regular playtests, see if maps look better.
- [+] quality on doors.
    - [+] sturdy / plain / shoddy doors. this impacts the hp
    - [+] stone doors (solid / plain /crumbling)
    - [+] metal ( reinforced / plain / rusty)
    - [+] only show this if perception >= beginner
- [+] dungeon shapes
    - [+] new cell attribute - locked.
    - [+] calcroompos can't make rooms on locked cells.
    - [+] normal
    - [+] cross
    - [+] circle
    - [+] turret
    - [+] - premask out blocked cells before generation!
- [+] minion code - if leader dies,
    - [+] minions drop morale
    - [+] and might either immediately flee 
    - [+] need lastdamlf
- [+] if wisdom >= gtaverage, automatically turn off lamps when you go
      to sleep 
- [+] "scratch"/"gnaw" etc should be based on actual damage hp amount,
      not percentage.
    - [+] change getattackverb()
    - [+] 1-2
    - [+] 3-6
    - [+] 8-12
    - [+] 12-18
    - [+] 18+
- [+] shop objects should start with all flags known.
- [+] allow usage of godstones without id'ing them first.  this will id
      them.
- [+] weapon/armour shop should resize armour for you for a cost.
- [+] chanelling bonus
    - [+] novice
        - [+] tell you when wand is low on charges (0-3)
    - [+] beginner
        - [+] let you determine exact remaining charges in wands once
              it is == 1!
    - [+] adept
        - [+] let you determine exact remaining charges in wands once
              it is <= 3!
    - [+] skilled:
        - [+] let you determine exact remaining charges in wands once
              it is <= 6!
    - [+] master
        - [+] lets you always see full amount of want charges.
        - [+] lets you convert your mp into wand charges? "imbue item"
2012-01-09 04:02:26 +00:00
Rob Pearce 040b9bf052 - [+] don't place draininge grates on low floor!!
- [+] gate spell should always take you to a location wihtout water!!
- [+] enhance speak with dead spell (SPEAKDEAD)
    - [+] may ask "how did you die" plus one of the below:
    - [+] tell me about the area
        - [+] mark stairs on the map
        - [+] mark shops on the map
        - [+] tell about very rare objects 
    - [+] tell me about nearby dangers
        - [+] tell about odd monsters
        - [+] tell about traps
    - [+] test
- [+] let you ask peaceful lfs about the surroundings too
    - [+] move code into io.c "askaboutarea(char *who)"
    - [+] test
- [+] the first time you ask someone for info, randomly determine
      whether they know about:
    - [+] stairs (high chance)
    - [+] shops (medium chance)
    - [+] traps (low chance)
- [+] areacomms_danger should include out of depth monsters - need
      isoutofdepth(lf)
- [+] room floors should take the entry type from the habitat, NOT just
      use ct_room!!!!
- [+] sometimes generate fixed SEWER regionthings
    - [+] done
- [+] BUG: canT enter goblin caves again!!!!
    - [+] getting "ERROR - can't find opposite end of stairs/portal!"
    - [+]   FAILED to link stiars: 'tunnel leading up'
- [+] make maps direct you to regionthings.
    - [+] region things need unique IDs !!!
    - [+] change F_MAPTO
        - [+] v0 = src region  id
        - [+] v1 = src depth
        - [+] v2 = regionthing with whatkind = RT_REGIONLINK
    - [+] when generating map objects, fill in a random branch entry
    - [+] fix getobname code for unknown maps.
    - [+] TEST
        - [+] with "map to the goblin caves"
        - [+] with "map"
        - [+] with "map to"
    - [+] use "the goblin caves are to the north", not "is to the north"
        - [+] is
        - [+] isn't
    - [+] test reading a map when on the wrong branch
    - [+] test reading a map when on the wrong level
    - [+] test reading a map when on the right level
- [+] move staircase generation to END of map create
    - [+] finalisemap()
    - [+] countobswithflagval(obpile, flagid, val0...)
    - [+] countmapobswithflagval(map, flagid, v0...)
- [+] jimbo's map should lead you to one of the major branches.  
- [+] crit pos shouldn't be higher than you can reach!
    - [+] same size or bigger = can reach anything
    - [+] 1 size smaller = you can't reach the head
    - [+] 2 sizes smaller = can't reach head or hands
    - [+] 3 sizes smaller = can't reach head, hands or body 
- [+] jimbo's room should contain all the staircases
- [+] make you have to pass a speech check before people will tell you
      about the area
- [+] bug in recruitment skillchecks - using wrong attribute, and too
      easy.
- [+] rename dwarf to delver
- [+] somtimes say "dons" instead of "puts on"
2012-01-04 15:54:28 +00:00
Rob Pearce adb066d31a - [+] prevent ALL overlapping rooms!
- [+] stop running for any non-cosmetic object.
- [ ] echoing?
- [+] OPTIONS 
    - [+] option_t
        - [+] id
        - [+] letter
        - [+] text
        - [+] int enabled
        - [+] int default
        - [+] next/prev
    - [+] addoption()
    - [+] getoption()
    - [+] dooptions()
        - [+] list them all (with 'more' for multipages)
        - [+] pressing a letter toggles it.
    - [+] "display trails"
- [+] make scents be "cosmetic"!
- [+] increaes skeleton's vulnerability to falling
- [+] missing announcement for bleed()
- [+] let rapid ivy cast entangle
- [+] caves
    - [+] new regiontype
    - [+] new link
    - [+] new habitat
    - [+] objectlass rarities
    - [+] assign obs/mons to habitat
    - [+] code to dig caves
    - [+] stairs linking to cave region
- [+] when learning random skills:
    - [+] prefer lower-level skills
    - [+] onyl learn up to adept level 
- [+] animate dead crashes if there is no space to place the lifeform!
- [+] increase range of charge ability
- [+] when you gain techusage, check held objects for conferred flags.
- [+] bug: motion scanner working even though i have no tech usage!
- [+] warn player before climbing without climb skill (if wisdom is >=
      average)
- [+] regions should have depthmod.
- [+] regionthings should be based on DEPTH, not difficulty!
- [+] rename firstdungeon to maindungeon
- [+] announcearrival broken -always saying 'new area'
- [+] don't use ranged attacks when feigning death if target is adjacent
- [+] don't say 'argh' if you were beheaded.
- [+] The bear cub bites a wooden door with a teeth.--More--
- [+] random levelup skills - only select from skills which we have
      used?
    - [+] need to chance f_hasskill to use f->val[2] = used_this_level
    - [+] when you gain a skill, set f>val[2] = b_false or NA
    - [+] add setskillused for all skills!
    - [+] make random levleup only pick from used skills.
    - [+] TEST
- [+] knowledge skills - practice them when you see a new lf of this
      type.
- [+] slithering shoudl hardly ever awaken you - make listen check
      harder.
- [+] don't put fireplaces in corridors.  F_ONLYINROOM ?
- [+] bug: acid trails from slug disappearing or never appearing?
- [+] snails/slugs
    - [+] killed by salt
    - [+] vslow
    - [+] snails have vhigh armourrating
    - [+] slugs have lots of hp and do more damage
    - [+] brown/grey  'j' ?
    - [+] leave slime/acid trails?
2012-01-03 01:21:22 +00:00
Rob Pearce 27f08ed7ab - [+] stomach code
- [+] create 1 vault
    - [+] must have:
        - [+] ot_playerstart
        - [+] ot_stomachexit
    - [+] swallow ability moves to there
    - [+] when the lf dies, destroy the map
    - [+] TEST
    - [+] mover object
        - [+] moves you if you didn't move
        - [+] f_pushdir, v0 = dir
        - [+] invisible obejct
    - [+] may flip them horizontally
    - [+] chance to dodge the swallow
- [+] rename green ooze to "sizzling slime"
- [+] don't put traps on top of stairs!!
- [+] remove unneeded extra redraw when changing levels.
- [+] make ']' show object AR bonusss
- [+] don't even call precalclos during endgame.
- [+] don't say "you see footprints and footprints here"
- [+] break grabs when you fall unconscious
- [+] bug - ring of wounding not working.
- [+] crash in free(npcnames) !!!!! pointer being freed was not
      allcoated
- [+] grave sprite
- [+] glutworm
    - [+] swallows you
    - [+] eats all objects
- [+] canines/felines should die from chocolate
- [+] weapons with multiple damtypes
    - [+] at adept skilllevel, you can change type (but only with
          weapons you're pr_skilled or higher in)
    - [+] f_altdamtype xx.  must have altdam for normal dam too.
- [+] fire primality
Hecta effect: - [+] necrotic beam
2011-12-19 08:04:49 +00:00
Rob Pearce edd16853c8 - [+] CRASH in killflag()
- [+] symptoms
        - [+] often happens right after creating a new map (ie. trigger
              it through a gate spell)
            - [+] bug in createriver(). fixed.
            - [+] somehow casting GATE is causing object flagpiles on
                  the PLAYER's map to become corrupted.
        - [+] "the young hawk wakes up" CRASH, flagpile corrupt on
              stone.
        - [+] object itself seems okay.
        - [+] o->flags is becoming corrupt!!!
            - [+] so all its flags are becoming corrupt (id = massive
                  number, next = fffff)
        - [+] traceback:
            - [+] #0  0x0000000100081188 in killflag (f=0x103321090) at
                  flag.c:815
                  #1  0x0000000100081b3a in timeeffectsflag
                  (f=0x103321090, howlong=1) at flag.c:1075
                  #2  0x00000001000825f8 in timeeffectsflags
                  (fp=0x1038e0600) at flag.c:1302
                  #3  0x0000000100129b01 in timeeffectsob
                  (o=0x1036e2460) at objects.c:11877
                  #4  0x0000000100005114 in timeeffectsworld
                  (map=0x102aa1a00, updategametime=-1) at nexus.c:1685
                  #5  0x0000000100003a28 in donextturn
                  (map=0x102aa1a00) at nexus.c:952
                  #6  0x00000001000029b1 in main (argc=1,
                  argv=0x7fff5fbff848) at nexus.c:525
        - [+] try this: in timeeffectsflags on objects, check PREVIOUS
              object's flagpile.
        - [+] try this: add checkflagS() after updatefpindex
        - [+] NOT happening during timeeffectsob().
        - [+] compile with optimisation.................
        - [+] hapepning in createmap. but objects on the PLAYER's map
              are being corrupted, not the new one.
        - [+] happening in addrandomthing()
        - [+] happening in addmonster().
            - [+]                 lf = addmonster(c, R_RANDOM, NULL,
                  B_TRUE, 1, B_TRUE, nadded);
            - [+] (glowbug was created)
        - [+] happening in addlf()
            - [+] glowbug again!! to do with light recalc ??
        - [+] happening in setrace()
            - [+] happening while inheriting F_AWARENESS.  have double
                  checked to confirm this!
        - [+] in HASLOS????!!
        - [+] addflag->flagcausesloscalc, so haslos for all on the map.
               problem happens when we call haslos() for the lf getting
              F_AWARENESS added.
        - [+] is the problem that doing a los recalc breaks when we are
              still missing half our racial flags ?
        - [+] QUICK FIX:
            - [+] dont recalc los for any lf where born = 0. just set
                  nlos to 0
            - [+] and manually recalc los just before returning from
                  addlf
        - [+] put sawgrsaas back to being common, not frequent
        - [+] is this finally fixed now? i think so!!
        - [+] if so, remove calls to "checkallflags" and most calls to
              checkflags()
    - [+] remove agility bonuses for weapon acc. now comes just from
          skill and from agi scaling on weapons.
    - [+] maybe difference in hit dice is a bad way to determine
          shieldblock difficulty.
        - [+] ...because the player rapidly gets higher than all other
              monsters on their dungeonlev.
        - [+] maybe just use monster's hitdice, ignore players.
    - [+] bug: abilities costing no stamina?
- [+] in addmap, i am not initialising enough nextmap[]s 
- [+] flag.c bug: don't need to set player->losdirty when recalcing
      light on a different map
- [+] lfs with F_DOESNTMOVE weren't attacking
- [+] manuals are starting off known. why??
    - [+] they don't appear in knowledge, so don't appear to have a
          hiddenname at all.
- [+] make magical barriers block view.
- [+] when describing armour / shield penalty, say
    - [+] "will lower your accuracy by 1"
    - [+] instead of
    - [+] "will lower your accuracy by 5%"
- [+] make firstaid skill incrase your hp per level
- [+] high agility seems to be giving a MASSIVE accuracy increase when
      higher than weapon's stat.
    - [+] maybe remove or reduce AGI acc bonuses.
- [+] sack started off containing a FOOD VENDOR!@#
    - [+] size check obviously isn't working.
    - [+] need "obfits" in givestartobs!!
- [+] hitting ESC when firing with F doesn't cancel.f
- [+] hunter should start with fur cloak
- [+] spellbooks are too cheap ($12)
- [+] remove'p' for lockpick- just operate the lockpickobject.
    - [+] removed,
    - [+] ...but now tha tI've removed 'p' for picklocks, can i still
          use 'o' on a dagger or similar?
    - [+] NO
    - [+] maybe turn "pick lock" into a still
    - [+] how do you gain this? level 1 lockpicking 
    - [+] then make lockpicks etc non-operable
- [+] fix crash when drunk lfs take damage
- [+] sleeping powder costs nothing
- [+] memleaks??? 700mb usage!!
    - [+] valgrind
        - [+] found a memleak problem:  definitely lost: 10,719,039
              bytes in 11,420 blocks
        - [+] not killing flags when we kill an object!!!!! fixed now.
        - [+] memory usage is now ticking up heaps more slowly.
        - [+] investigate further with valgrind again.....
- [+] when summoning, prefer cells for which the player has los.
- [+] make jammed doors harder to open.
- [+] no forcing a door open on your first go. should be:
    - [+] the door is jammed!
    - [+] you force it open.
    - [+] used f_jammed v1 = known
2011-12-16 19:54:08 +00:00
Rob Pearce 089ce94751 * [+] let credit cards be used at some shops?
* [+] bug with adding obejcts to shops
- [+] issue with objects dying and killing their flagpiles
    - [+] A medium fire dies down a little.  A medium fire is no longer
          glowing.
    - [+] shouldn't say "is no longer glowing" when we're changing the
          type... ?
    - [+] put a breakpoint on "is no longer glowing"
* [+] let you bless objects using a holy circle somehow (but it might
      make the circle disappear?).
- [+] darness bug - need to recalc light for anyone who sees a cell's
      lightlevel change.
- [+] call more() after showing vaultentertext()
- [+] remove "inspected" when you ident or makeknown an object.
- [+] BUG - no objects in inventory!!!!
    - [+] listobs failing? mylist[0] = null.
MEMLEAK
- [+] finish implementing CLEANUP()
- [+] crash in cleanup() -> killot() -> findleak.c_stuff while freeing
      STACKABLE flag from cactus fruit???
    - [+] better now?
- [+] now a crash freeing hiddennames!
- [+] forgot to free obmods
- [+] leaking approx. 1 meg per turn!
- [+] where am i leaking?! maybe try valgrind or findleak.c
- [+] findleak.c now finds nothing.
- [+] but i am sitll leaking?????
- [+] related to lifeform count.  killing all but player dramatically
      slows it.
- [+] check calclos()... looks okay.
- [+] setcellknown() ?no.
- [+] startlfturn?? no.
- [+] remove unused "lf->viscell"
- [+] when there are 2 things in a cell, say "you see x and x here."
- [+] restore original stast when polymorphing back to original form!!!
- [+] when making shops, pick new ones more often.
- [+] change to maps: don't let vaults overlap.
- [+] HARDCODE object values
    - [+] potions
    - [+] tech
    - [+] tools
    - [+] rings
- [+] increase evasion skill effects
- [+] changes to  animradial... and animradialorth
    - [+] combine into one function
    - [+] move msg into here
    - [+] refs to spellcloud()
    - [+] refs to animradial()
- [+] fire should spread onto flammable lifeforms
- [+] bug: attack flurry doesn't work for monk
- [+] let monsters climb even when not facing a wall?
    - [+] set their facing first.
- [+] CRASH when you die while climbing (or on a solid cell)
- [+] rings
    - [+] stench
    - [+] breath water
    - [+] detect life
    - [+] deceleration
    - [+] meditation
    - [+] reflection
    - [+] boost magic power
    - [+] education - gain xpskills more quickly
    - [+] crit protection
    - [+] greed - detect obs
- [+] ivy - grows!
- [+] ragefungus - bezerk spores
- [+] nutter - drops peanuts
- [+] dish which slightly increases maxhp (beginner level)
    - [+] stuffed mushroom. shiitake mushroom + bread
2011-12-08 02:55:14 +00:00
Rob Pearce 6c26901e75 - [+] monster: triclops. perception. vuln to light.
- [+] flying creatures shoudl fall to the ground when unconscious
    - [+] (this might kill them)

- [+] animate statue - bring statue to life
- [+] excavate - radial, obliterate walls + obs, doesn't affect lfs
- [+] test unicode wall glyph! 0x2588
- [+] use unicode for gas
    - [+] change f_glyph so that v1 = symbol, instead of text = symbol
        - [+] change code
        - [+] change definitions (macro)
    - [+] test
    - [+] implement puff  = UNI_SHADELIGHT
    - [+] implement cloud = bolded
    - [+] if good, extend to staem etc
- [+] blue background for lfs in the water
- [+] prone in water means effective lower height
- [+] glass/ice cells not shattering properly
- [+] make magic barriers be solid too
- [+] combine lockpick code in io.c and objects.c into the lockpick()
      function.
    - [+] first ask what to use (if required)
    - [+] then ask what dir (if required)
    - [+] then ask what to unlock (if reuiqred)
    - [+] then do it
- [+] locked containers
    - [+] picklocks prompts to try them.
    - [+] in addob, use non-inheritable f_lockedchance for both doors
          and chests?
        - [+] v0 = chance v1 = mod per depth
        - [+] doors:
            - [+] base 20% chance locked
            - [+] every 5 levels, add 10% chance
    - [+] add this to chests / safeboxes
    - [+] operate doesn't let you open them
- [+] bugs in linkexits and linkexit
    - [+] linkexits: wasn't checking the correct exit cell!!!
    - [+] lnkexit: wasn't blanking the startcell
GRATINGS:
- [+] flags:
    - [+]         addflag(lastot->flags, F_OPPOSITESTAIRS,
          OT_HOLEINROOF, NA, NA, NULL);
    - [+] climbable d_down NA
- [+] BUT you can't climb it if it's locked.
- [+] usestairs() - if you climb a grating and it has no maplink:
    - [+] use createregionlink(map, cell, grating_object, NULL,
          RG_SEWER, map->region)
- [+] make stench affect enhancedsmell creatures more.
- [+] excavate should only affect SOLID matter.
- [+] going down a drain:
    - [+] "You walk down a staircase" should be "climb down a drain"
- [+] deep slime in sewers sohuldn't spread
- [+] deep slime should spread to a slime puddle if it does....
- [+] fix background glyph colour for slime
- [+] killed by drowning should really be "drowned in %s"
SEWER HABITAT
- [+] permenant stench
    - [+] if you're in a sewer cell and are not nauseated, add it.
    - [+] nauseated doesn't expire in sewers.
- [+] add RG_SEWER
- [+] new regiontype - RG_SEWER
- [+] map:
    - [+] pick size 2 - 5
    - [+] start at x=2,y=2
    - [+] add square 3x3 rooms in gridlike layout (but need space for 5)
    - [+] connect rooms to orthogonally adjacent ones with passages
        - [+] use addexits().  no exits on outer walls.
    - [+] fill all empty cells with low floor and water (but NOt the
          one with the exit!)
    - [+] any solid with orthogonally adjacent water changes to a
          walkway
    - [+] cope with different x/y room counts
    - [+] cope with differnet vert/horz corridor sizes.
        - [+] horz = 2
        - [+] vert = 1
    - [+] random room size
- [+] allow objectclasses to have f_rarity
    - [+] modify getrandomobcalss
    - [+] but DONT make objects inherit it!!!
    - [+] this is used to override selection hased on habitat - modify
          getrandomobcalss appropriately
- [+] random objects/treasure:
    - [+] add these only in non-water cells??
        - [+] move all obs from water clls to random land cells
    - [+] frequent
        - [+] vomit
        - [+] soggy paper
        - [+] rotted food (add f_tainted to it)
    - [+] common
        - [+] wep/arm
        - [+] all wep/arm are shoddy in sewers
    - [+] uncommon
        - [+] rings (higher than normal chance - they were lost down
              sinks)
        - [+] occasional tech
- [+] bug: playerstart3 vault filled with walls when made randomly!
- [+] death speech text for intelligent monsters
    - [+] 'aaargh!'
    - [+] 'this isn't over!'
- [+] BUG: linkexits() - gettings exits in the wrong place.  maybe not
      taking rotation into account???
    - [+] for example in playerstart_5 vault, found an 'exit' at the x:
    - [+] this comes from the map flag f_roomexit, x, y
    - [+] the flag may have bene added from autodoors()
    - [+] have changed code so that f_roomexti uses text field to say
          who added it
2011-11-29 02:25:04 +00:00
Rob Pearce c522cac6c0 - [+] bug: mosnters not wkaing up
- [+] why don't i see "%s dies" when my ally dies?
    - [+] cause it was behind me.  added sound to tell us about this.
- [+] bug: s - 2 four leavesed clover
- [+] random portals
    - [+] genericise code for making destination
    - [+] check gate spell
    - [+] enter a portal which doesn't go anywhere = generate a
          destination.
- [+] increase range of all light sources
- [+] ring of hunger should override vege/carni
2011-11-24 19:06:24 +00:00
Rob Pearce 25ca8f3e43 - [+] fix bug in randomtalk
- [+] fix bug with beggars
- [+] prompt before giving money in C-d
- [+] bug: allies walking into walls
- [+] make your own race / job more likely to kjoin for less gold
- [+] new rarity level: rr_frequent ?
    - [+] add it
    - [+] in swamp, aquatic things are freqentut
- [+] swamp level:
    - [+] createdungeon (but use different h_habitat. how do i do this?)
    - [+] then remove all doors
    - [+] then change all walls into deep water
    - [+] add rarity for monsterss
    - [+] add rarity for objects
- [+] add f_nolink for vaults which aren't linked to rest of map
- [+] fishbowl vault
- [+] change misisle dam calculation - add firespeed rather than
      multiply.
- [+] forced shops at certain level intervals
    - [+] implmement RT_OBJECT text=objectname
    - [+] add buildings at levles 2-4 5- 7 8 - 10 11-13 14-16 17-19
          20-22 23 -25
- [+] split sp_ally_attack into attack and attack_unseen
- [+] base throwspeed on throwin gskill, not strength
- [+] make it much harder to catch thrown missiles
- [+] try to place RT_OBJECTs in rooms
- [+] maybe get rid of sound lowering for 's'lowwalk. this should be
      based on stealth!

- [+] don't let you walk down stairs if there's an impassable object in
      the way.
2011-11-17 00:50:33 +00:00
Rob Pearce d5c24cd742 - [+] add a bunch of gemstones - worth points
- [+] 'thrust' ability isn't showing up in ABILS
- [+] give slight accuracy penalty when thrusting
- [+] fixed shieldblock difficulty in melee combat
- [+] increased maxstamina
- [+] don't require stamina to move!
- [+] "You hear a roars."
- [+] remove duplicate corpse rot code
- [+] CRASH
    - [+] malloc: *** error for object 0x1349d94f8: incorrect checksum
          for freed object - object was probably modified after being
          freed.
    - [+] #7  0x00000001000f438a in addobject (where=0x134edc060,
          name=0x0, canstack=0, wantlinkholes=-1, forceoid=OT_CLAWS) at
          objects.c:983
          #8  0x00000001000f298d in addobfast (where=0x134edc060,
          oid=OT_CLAWS) at objects.c:409
          #9  0x00000001000b621b in getbestweapon (lf=0x114439ff0) at
          lf.c:5194
          #10 0x00000001000087fa in aiturn (lf=0x114439ff0) at ai.c:1236
    - [+] fixed ?
- [+] instead of everything >=6 being dark, make a CHANCE to be dark
      starting at l6.
- [+] why do i ese gem of seeing so often
    - [+] because i need more types or 'rock'
- [+] have to cook food before eating it?
    - [+] need novice cooking skill for preparecorpse ability
    - [+] otherwise you only get a very small amount of nutrition (10%)
- [+] split ob piles before eating them
- [+] detect poison should detect poison traps
- [+] telling your ally to rest until healed isn't working...
    - [+] wasn't taking injuries or stamina into account.
- [+] change druid spells
    - [+] start with 3 random spells
    - [+] on levelup, select a random nature spell (up to your highest
          level)
2011-11-08 01:19:25 +00:00
Rob Pearce 06cf19e7c9 - [+] climbing
- [+] climb "into"walls
        - [+] stopclimbing(int onpurpose)
            - [+] can we move forwards?
                - [+] if not:
                    - [+] if onpurpose, fail
                    - [+] otherwise fall onto whoever is there??? or
                          they block you from falling??
            - [+] move forwards
            - [+] kill f_climbing flag
        - [+] startclimbing()
            - [+] move onto the wall
            - [+] set your facing to face away from the wall.
            - [+] add F_CLIMBING
            - [+] must pass a CLIMB check first or you fail to climb!
            - [+] can't climb if burdened
        - [+] once climbing:
            - [+] can't cast spells
            - [+] cannot change facing
            - [+] always strafe if you go sideways
            - [+] change los functions to let you see out!
            - [+] different move verb ("climb" instead of move/fly)
            - [+] different canmove() code
                - [+] you can only move sideways (along the wall) or
                      forwards (off the wall)
                    - [+] ie. cellindir(lf, lf->facing) == newcell
                          (forwards)
                    - [+] OR
                    - [+] ie. cellindir(lf, lf->facing + 2 (wrapped))
                          == newcell (right)
                    - [+] OR
                    - [+] ie. cellindir(lf, lf->facing - 2 (wrapped))
                          == newcell (left)
                - [+] AND you can only move sidways if:
                    - [+] the new cell is a wall
                    - [+] the cell in (lf->facing) of the new cell is
                          NOT a wall
            - [+] if you climb off a wall, tell the player that they
                  stopped climbing
            - [+] moving while climbing:
                - [+] must pass a sc_climb skill check to move
                - [+] costs 1 stamina to move
                    - [+] warn before climbing if your stam == 1
            - [+] attacking
                - [+] large penalty to hit the climber (higher for
                      smaller monstesr)
                - [+] if monsters miss you and you are climbing, chance
                      they'll give up.
                - [+] attacking FROM a wall gets a big penalty unless
                      you are very skilled at climbing
            - [+] startlfturn
                - [+] lose stam each turn.
                - [+] if stam drops to 0, you fall off or stop climbing
                - [+] you fall if burdened
                - [+] don't regen stam while climing
        - [+] ai:
            - [+] monsters won't start targeting lfs who are climbing
            - [+] monsters don't pay stamina to move while climb
            - [+] make monsters be able to climb when fleeing
    - [+] let you climb down holes instead of falling
2011-11-02 22:34:15 +00:00
Rob Pearce 965fcdd4c0 - [+] monsters should automatically attack locked doors if they're
chasing the plaeyr
- [+] if a monster tries to open a jammed door, make a noise
* [+] glyph of warding spell - monsters won't walk on it
- [+] ice crust not working? fixed.
- [+] seal entrance should close doors too
- [+] more kinds of wizard staff
* [+] replace 'freezing touch' with something more useful.
- [+] in askcoords, writing:xxx, use colours
- [+] replace poisongas damtype name with 'gas'
* [+] redo skill screen
- [+] make ash clouds (sleeping etc) not affect thrower's square?
- [+] There is a magical inscription here:  ""
* [+] rename some spells
* [+] poltergeist spell keeps missing.
- [+] reduce fire damage from burning objects in pack, or equipped
- [+] first spell in beginner spellbook should be the one we know. 
- [+] fix bug with item inspect ability
* [+] stamina food
* [+] locate object issues
- [+] still got a wrapprint bug when showing spell descriptions.
2011-11-01 20:35:50 +00:00
Rob Pearce a297a3c180 - [+] don't show 'the xxx look exhausted' for monsters
- [+] The giant blowfly (null).
- [+] instant disrobe spell - tleports armour to the side
- [+] why did a monk recognise a grenade? bug in conferobjectflags.
- [+] adept nature lore should identify bad mushrooms too
- [+] draining/vampiric brand - gives hp to user.  
- [+] ways to check stairs before travelling
    - [+] make getstairdestination() be the place where new maps are
          generated
    - [+] move getnoisedetails into new function
    - [+] ability to listen down stairs with adept listen skill
        - [+] atomatically trigger walknoise for all lfs within los of
              stairs, and you always pass the check.
        - [+] at expert listn you get names
        - [+] otherwise just get 'slithering' etc
        - [+] test......
    - [+] "check stairs" ability ???
        - [+] this then prompts for various methods
    - [+] smell down stairs with enhancesmell
        - [+] say "you see xxx scent" for all lfs within los of other
              end
    - [+] use perception to check stairs
        - [+] say "you see xxx footprints" for all lfs within los of
              other end
    - [+] ability to peek down stairs with adept stealth skill?
        - [+] temporarily put you there
        - [+] precaclc los with awareness in all directions from there
        - [+] show view
        - [+] wait for key
        - [+] move you back, remove temporary awareness
    - [+] add help for these skills
2011-10-16 22:45:36 +00:00
Rob Pearce 0d663e81b3 * [+] maybe a new weapon damage calculation....
- [+] eyes shouldn't adjust if you can seein the dark
- [+] make fire spread to nearby flammable objects.
- [+] issue with soldering iron
    - [+] shouldn't be able to weild it if we don't know what it is
    - [+] shouldn't be able to get stats like damage dealt ect if we
          dno't know what it is
- [+] need technology skill to weild tech weapons??
- [+] misile damage problem - Killed by a spear (thrown by an orc
      warrior).(33 damage)
- [+] ring of endurance
- [+] make evasion checks modified by speed.
- [+] bone items have higehr chance to be cursed
- [+] tweak feign death check now - int check (attacker) vs wisdom (one
      feigning death)
- [+] cursed teleportation should take you next to a monster
- [+] bug: infinite loop during getrandomroomcell(map,ANYROOM)
- [+] make dumprooms able to show room ids
- [+] bug: i'm able to cast varpower spells which cost more mp than i
      have!
2011-10-13 21:37:15 +00:00
Rob Pearce c7845ee622 - [+] fixed buf where f_restuntilbetter wasn't cleared
- [+] monk was starting with agility too high.
- [+] crash: missing room ids.  hopefully fixed.
- [+] notify player when stamina rises from 0
- [+] resting - get rid of seperate "rest until xxx", just rest until
      EVERYTHINg is good.
- [+] steam should deal heat damage, not fire (ie. don't set things
      alight)
- [+] river going through a level. how do i do this?
    - [+] outline???:  "hasriver"
    - [+] river code:
        - [+] pick random radius (0-3)
        - [+] pick random spot along top ( x >= radius and x <=
              w-radius-1) 
        - [+] pick random spot along bottom
        - [+] bresnham between spots to make centrelist
        - [+] for each centrelist
            - [+] make a second list of rivercells (rivercell->x -
                  wid/2) - (rivercell->x + wid/2)
            - [+] foreach riverercell
                - [+] move any staircases here to somewhere else
                - [+] clearcell
                - [+] convert to low rock floor
                - [+] convert  to deep water
- [+] make ctrl-y work, as well as ctrl-c
- [+] i'm noticing tripwires too often (adventurer with 0 perception
      skill)
    - [+] make the check harder!
- [+] tweak safetorest() so that monsters don't just look away form the
      plaeyr then go to sleep!
2011-10-06 20:12:13 +00:00
Rob Pearce 25db5b0da7 - [+] job abilities can now generally happen as often as you like,
since they're ilmited by stamina.
- [+] rename dexterity to agility
- [+] The leprechaun steals an uncursed ring of miracles from you!
      The leprechaun cowers away from you!
    - [+] should FLEE , not cower!
- [+] should set blessknown after reading a scroll
- [+] cursed mending scroll not working on non-damaged objects
- [+] spanner helps metal repair
- [+] needle boosts sewing ability
- [+] when resting in a tent, monstesr have very low chance of noticing
      you (5%)
- [+] move display of resistances to 'effects' section.
- [+] show what a mosnter wants in effects (if you have >= beginner
      knowledge)
- [+] prevent running into monsters with shift+dir
- [+] infinite loop when creating a map, constant getrandomroomcell()
      calls failing
- [+] monstesr will steal objects they WANT rather than always random
- [+] monster:
    - [+] leprechaun
        - [+] lucky
        - [+] covets gold
        - [+] shillelagh ? or just a club?
        - [+] blink
        - [+] steal
        - [+] dodge
- [+] at the moment attack doesn't seem to be draining stamina...
    - [+] it is, but i'm getting it right back due to attack speed.
    - [+] make stamina take longer to regen. - 1 per 3 turns rather
          than 1 per 2.
    - [+] stamina loss must be MORE than basic regen rate (0.3)
    - [+] make stamina loss for attack depend on atatck speed!
        - [+] instead of "you feel sick", say "you have contracted
              weakening poison" or "you have been infected with xxx"
    - [+] store stamina as a float, but getstamina() should return an
          int.
- [+] sprinting - use 1.5 stamina per cell instead of 1?
- [+] modify accuracy text
- [+] fork
- [+] showing f_entertext should set didmsg
- [+] instead of printing 100% accuracy, show "Acc:0"  (ie 100),
      "Acc:-1" (ie -10) etc
    - [+] do this in @@
    - [+] do this in describeob
- [+] nocturnal monsters
    - [+] base monsters initially being asleep  on time and whether
          mosnter is nocturnal
    - [+] also during aiturn(), if they have nothing to do and it's
          their sleeping time, goto sleep
    - [+] add flags
- [+] flies should always move towards corpses if possible
    - [+] maybe F_WANTSOB corpse, covet?
    - [+] but thye can't pick it up so they'll just hover nearby?
    - [+] now they can be hostile too
- [+] when we're picking a random corpse, try again if we get something
      with nocorpse like a ghost
    - [+] getrandomcorpserace()
- [+] lower stamina max - currently at lv1+ft:11 i have 7 stam. should
      be more like 5
- [+] severed finger shoudn't count as making you bleed when you attack
- [+] in askcoords, always show cell name
- [+] monsters with no melee attacks can always cast spells while
      adjacent
- [+] resting issues
    - [+] having a temporary injury means oyu need to rest, so don't
          say "you don't need to rest"!
    - [+] also don't stop resting until all temporary injuries are
          healed 
- [+] show comparative weights / armour ratings
- [+] make price for npcs to join be lower
- [+] assertion failure with who->timespent == 0 when a mosnter falls
      through a hole
    - [+] (after I follow by falling down the pit)
    - [+] make taketime() not work when not on the player's map
- [+] bug - monsters never waking up
- [+] "tailwind" spell (fast movement speed but forwards only)
- [+] now that i have Hardness, _all_ reduced damage should go towards
      armour. 
- [+] earthquake - pits open up around you (but not under you)
- [+] force sphere - radial blast outwards, knocks back lfs + obs +
      doors etc
2011-10-04 03:24:53 +00:00
Rob Pearce 5cb8b05817 - [+] BUG: arrows shouldn't be able to trigger arrow traps!!!
- [+] king piranhas shouldn't leap out of the water!
- [+] don't catch thrown missiles if it will burden us
- [+] in @@, show "accuracy" as a seperate line, not with your weapon.
- [+] higher chance of learning psionics on level up.
- [+] fix up monster hp - too easy to kill most things in one hit with
      dam = 4-12, 2 attacks (ie. l6 monk)
    - [+] dump out all mosnters sorted by hit dice (show avg hp)
    - [+] fix them up
- [+] vault->entertext - ie "you enter a dining room"
- [+] make random monster generation go by hitdice AND rarity rr_. 
      IGNORE rarity value.
    - [+] start with hd = level.  sometimes incrase
    - [+] remove all rarity values from monsters
- [+] disorient might need to be higher level than stun
- [+] make psionic spell mp cost be level, rather than level^2?
- [+] ai bug:
    - [+] .oO { looking for a target . }
          .oO { found an enemy target - lfid 256 (human) ! }
          .oO { default - moving randomly }
- [+] reduce cost for higher levle spells agian.
- [+] prevent player from eating an ice sheid!
- [+] bug when eating from the floor with multiple food items there
- [+] assassin's blink spell - teleport behind and facing someone.
      medium level translocation.
- [+] make "chunk of roast meat" be "chunk of roast goblin meat"
    - [+] and base nutrition on corpse type
- [+] highlevel sixth sense should let you turn to face it
* [+] add prompt text to msg hist:
- [+] sixth sense should only pick up hostile monsters
- [+] need a good reason that wizards can't wear armour.
    - [+] if isplayer(), failure chance depends on any arm/shield
          penalties
- [+] show f_impassable in describeob()
- [+] no walking backwards/sideways if you're stuck in a web/vine. can
      only turn.
- [+] objects for protection:
    - [+] eyeglasses (+vision)
    - [+] safety goggles
- [+] ERROR - stairs link to existing map 0('the surface(0,0) (id #0)',
      depth 1), but it has no free stairs.
    - [+] when we restart map regeneration, must first REMOVE
          referenecs to this map!!!
    - [+] implemented.
- [+] fixed bug with sleep interruption
- [+] You attack the helpless the dwarf monk!  You flatten the dwarf
      monk!
      The dwarf monk loses consciousness.   damage's robe protects it.
- [+] add stamina cost to other abilities
- [+] add descriptions to lore skills
- [+] make athletics skill give you more stamina?
* [+] monstesr stopping fleeing when they can't see player
2011-09-27 18:56:58 +00:00
Rob Pearce 2db53bca61 - [+] when throwin gn aobject, warn if you have no LOF (just like
spells)
- [+] allow dodge/catch of thrown object when there is no thrower (ie.
      arrow traps)
- [+] simplify monster spellcasting
    - [+] don't use any mp
    - [+] select power based on monster hit dice only
    - [+] monsters should cast spells less often  - use f_castchance,
          default of 15% chance
    - [+] TEST
    - [+] you keep your own mpdice when polymorphing into a mosnter
- [+] fxied: throw a tranq dart, then:
    - [+] The cockatrice loses consciousness.  The cockatrice falls
          asleep.
- [+] bug: can't operate a fridge on the ground cause it's too heavy to
      lift
- [+] monsters generated on dark levels should always have seeindark 3-4
- [+] vending machines not working... fixed.

- [+] in getchoicestr:
    - [+]  if !showall, and if it shows a longdesc, then you hit
          backspace, longdesc should be cleared.
    - [+] show completion in a different colour
- [+] bug: sometimes we seem to have map->room[x], but no cells with
      cell->room->id == thatid!!
    - [+] stop vaults from overlapping.
- [+] taking too long to walk down levels - enforce max number of
      monster free turns
- [+] inept weapon penalty should be slightly higher
- [+] bad feeling check is too easy.
- [+] skeletons should have f_noinjuries
- [+] shouldn't check for slipping on things while swimming
- [+] tweak how traps + perception skill impact search checks 
- [+] bug: sometimes we have no player start position.
    - [+] if the vault creation fails, restart map generation.
- [+] only give study scroll ability at high spellcasting skill
- [+] typo:  ring (1 charges left)
* [+] god effects when you die:
- [+] pea soup should work in the cell in FRONT of you.
- [+] bug: ring of control seems to work when you _weild_ it!!
- [+] non-lethal weapons
    - [+] sword of mercy (at <1hp, ko)
    - [+] tranq dart
- [+] add sleeptypes
    - [+] change all refernces to f_asleep->val[1] (now an enum)
    - [+] change "stirs in its slumber" if unconscious
    - [+] change all 'fallasleep' calls
    - [+] attacking a ko'd enemy with merciful weapon should do nothing.
    - [+] ai shouldn't target ko'd enemies
- [+] ai should stop targetting people once they're dead/ko'd
- [+] bashing damage should sometimes just knock unconscious instead of
      killing?
    - [+] if their hp would be >= -3, and onein(2)
- [+] different body part names? "metal frame" instead of "body"
    - [+]  implement F_BPNAME, v0=enum bodypart, text = name
    - [+] getbodypartname() needs a lf argument.
    - [+] once i add this, also make animals have "front legs" instead
          of "arms", "paws" rather than "hands" etc.
    - [+] fix calls to getbodypartname to pass in lf or null
- [+] cyborg mods:
    - [+] can't wear most armour?
        - [+] need f_noarmouron - we HAVE this bp, but can't put armour
              on it.
    - [+] large rust damage from water
- [+] if you have a bad feeling about an object, mark it as "[bad]"
    - [+] f_knownbad
- [+] killing should anger the god of mercy
2011-09-22 02:00:16 +00:00
Rob Pearce 5bd96d7e5a - [+] bug in skillpoint % display in @@
- [+] make detect life last longer
- [+] stirge should have enhacnesmell
- [+] plants should never "turn to face you". 
    - [+]  they should be able to see in all dirs.
    - [+] don't announce "turns to face" if the lf has f_awareness
- [+] AGAIN: walk on to a dark place and i can still see my own cell! 
      needed >= instead of > in celllitfor
- [+] don't show sacrifice text if you can't see
- [+] butterflies shouldn't produce light.
- [+] peaceful things shouldn't turn to face you all the time (only low
      % chance)
- [+] CRASHES when killing flags
    - [+] killflag() was dereferencing f-> after freeing it.
- [+] skill which aren't ready not showing up in 'm' list
    - [+] i think a previous fix for spells broke this...
    - [+] whatever it was, it shoudl only apply to spells, not
          abilities.
- [+] don't show @G if you're looking at someone else.
- [+] sunrise code didn't work - i immediately went to full fov!
    - [+] was a bug in isnighttime().
- [+] jimbo needs more hp
- [+] diningroom should have a fridge, instead of all food being on
      ground.
- [+] bug: "it is pitch black" as soon as you use stairs....... need to
      recalc light 
- [+] show temp lit areas as bold
    - [+] do it.
    - [+] test.......
- [+] notification of being followed to other maps/stairs:
    - [+] "you walk up the stairs. xxx follows you."
    - [+] implement.
- [+] move sacrifice code to god.c
- [+] change twoewapon->master to make your second weapon act like a
      shield
    - [+] ie. getshield() returns it.
    - [+] act like low level shield skill. special case in
          SC_SHIELDBLOCK
- [+] make twoweaponers only be able to use secondary weapons in which
      they are skilled.
2011-09-15 01:40:26 +00:00
Rob Pearce da656dfa52 - [+] add autopop to playerstart vaults
- [+] rename magic skills:  Magic:Cold
- [+] bug: infinite loop in poison arrow trap - make sure the arrow
      always dies.
- [+] bug: c4 didn't kill iron door
- [+] implement stamina (float). max is Fit/2
    * [+] in startlfturn:
    - [+] sprinting drains this.
    - [+] ...then stop using f_sprinting for exhausted
    - [+] ...and remove f_tired
    - [+] if exhausted, stop sprinting. (in modstamina)
    - [+] change crushed windpipe
    - [+] f_stamcost for abilities.
        - [+] modify cancast.
    - [+] tumbling
    - [+] jumping
    - [+] rage
    - [+] swimming
        - [+] drains stamina like sprinting
        - [+] if stamina drops to 0, you start drowning.
    - [+] new spell:  lethargy (sets stamina to 0)
    - [+] if a sleep spell fails, use lethergy instead.
    - [+] no attacking while stam = 0 ???
- [+] need to update statbar right away when casting ongoing spells.
- [+] bug: reading an awareness scroll counting as an active spell!
- [+] genericise magic resistance check into a function
- [+] "disorient" - l1 mental spell which randomly turns lf, someitmes
      makes them dizzy
- [+] change stun - just means you can't attack, cast spell, use abils
* [+] AI shouldn't look for targets if stunned or no stamina
* [+] why do mosnters end up facing -1 (d_none) ??
- [+] turn undead problem.
    - [+] The skeleton turns to flee from you!  The skeleton bites you.
- [+] crit which spins you around (bash to body)
- [+] say "you attack xxx from behind" when you ar ebehidn them and
      they can't see you
    - [+] or "you attack the helpless xxx" when thye just can't see you 
- [+] genericise sacrifice text
- [+] fix up weight of heads (8% of body mass)
- [+] make attribss do more:
    - [+] iq:  determine how soon you learn new skills (ie. modify
          SKILLXPPERPOINT)
    - [+] fit: determines stamina points.
    - [+] wisdom >= AT_HIGH
        - [+] warn before wearing/eating/drinking/weilding unknown
              bad/cursed objects (low chance)
        - [+] use isbadobject()
        - [+] chance:
            - [+] high = 10%
            - [+] vhigh = 30%
            - [+] exhigh =  50%
- [-] idea:  sacrifice to gods to make them happier
    - [+] mercy: weapons
    - [+] death: any corpses
    - [+] thieves: gold
2011-09-14 22:42:54 +00:00
Rob Pearce 7370b60375 - [+] flak jacket too powerful
- [+] make it only protect against missiles?  no AR as such
- [+] facing N, walk NW.  turn instead of walk! bug in
      getrelativedir(). fixed.
- [+] ctrl+dir = turn.
- [+] make novice level listen more useful.
- [+] l2 tech: "styptic" -
    - [+]  heals certain bleeding injuries
    - [+] then if still bleeding() due to low hp, heal back up.
* [+] tool: bandage -fix blood loss
- [+] change enhancedsmell to happen in same place as 'detectlife'
- [+] spells:
    - [+] sixth sense - l1 - warns if someone is within 2 cells behind
          you.  lasts for a single use.
    - [+] canine tracking - l2 divination spell, gives temporary
          enhanced smell for short range (3).
    - [+] heightened awareness - l3 ongoing divination spell to enhance
          FOV to 360 degrees
    - [+] scrolls for the second two
    - [+] apportation
- [+] let wizards pick two secondary spell schools
    - [+] start with beginner in primary, novice in sec
2011-09-12 23:52:21 +00:00
Rob Pearce d51dfa11f9 - [+] make "fear" be used to flee, not attack
- [+] CRASH in linkexit()
- [+] make most monsters either have sk_perception at least novice.
- [+] show success rate when studying scrolls
- [+] bug: unable to drink from fountains anymore
- [+] always use multidrop - this will free up 'D'
- [+] forest tree cluster maps are not working - only a single tree in
      each cluster!
- [+] crash - ghost adding footprint to solid cell! 
- [+] amberon's wrath for attacking peaceful should happen once per
      ATTACK, not once per HIT
- [+] show cells outside LOS as blue or darkgrey
- [+] Don't place normal rooms next to the edge of the map either!!
- [+] getradiuscells(scatter) needs an option to include density
    - [+] then make absolute zero have high density
* [+] summoning spells on pentagram will summon a demon instead
- [+] "confusion" / "baffle" mental spell - l2 
- [+] add 'concussion' injury (head bash) - confusion effect.
    - [+] iswoozy checks for this.
- [+] severed limbs -"frominjury" so taht you can heal them
- [+] linkexit() needs to be able to handle making THREE turns:
    - [+] when looking for turnpos, remember each up/down celll
    - [+] if we don't find one ("annot find a way to link up") , go
          through each up/down cell and look left/right
    - [+] fix is in place.
    - [+] tested.
- [+] bug: doors being placed on top of rock walls!!! think this is
      related to fix_deadends.
    - [+] assert statement added.
* [+] bug:  no up stairs generated on first dungeon map! was being
      removed by clearcell() for overlapping rooms.
- [+] mass stun spell - l4. stuns all in los ?
* [+] make "stun" / massstun durations be 2-4 depending on power
- [+] "restricted" jobs/races?
    - [+] don't put shopkeepers in pubs
- [+] make a per-map maxvisrange. the deeper you go, the lower this
      gets (ie . it is darker, less ambientlight)
    - [+] limit getvisrange(lf) by getmapmaxvisrange()
    - [+]  map->habitat->maxvisrange. set this during createhabitat()
    - [+] reduce maxvisrange
    - [+] reduce it to 6
- [+] why can i still see 1 cell?
- [+] why can i still always see my own cell?
- [+] when in pitch black for a certain amount of time, your vision
      adjusts to maxrange=1
    - [+] ie. getnightvisrange(lf) should be modified by
          lf->eyeadjustment
    - [+] reset if you can ever see a lit cell.
    - [+] when this happens to the player:
        - [+] msgs about this
        - [+] also force light recalc
- [+] only recalc light when dirty
    - [+] if we call "haslos()" for a lf and they have losdirty,
          precalclos first.
- [+] vis range problems
    - [+] sunglasses/footballhelm visrangereduce isn't working anymore
        - [+] it's reducing maxvisrange(lf).
        - [+] BUT - my maxvisrange is 5, which is still higher than the
              ambient range.
        - [+] need to apply reductions AFTER ambient light
        - [+] NOW eyeadjustment isn't working.  because cell lit is
              l_temp, not l_notlit.
        - [+] but if this is the case, why can't i see?  anwer: because
              my visrange has been reduced to 0 due to no ambient light!
        - [+] so.... how do i make lightt sources override this?
        - [+] maybe say:  if a cell is lit, i can see it, even if it's
              outside my ambient light.
    - [+] falling over isn't reducing your visrange anymore
- [+] why doesn't eyeadjust make the screen update?
- [+] is regular "haslos" code ever used anymore????
- [+] now i can't see lit cells in the darkness again....fixed
- [+] after you calm something, give it xpval0
    - [+] show message when calm animals fails
- [+] check all spell sc_resistmag oskillcheck difficulties
    - [+] diff should be 20  + (spelllev*2) + power
    - [+] l1 spell should be diff 20
    - [+] l2 should be diff 24 
    - [+] ...
    - [+] l7 should be diff 34
- [+] bleeding injuries should make armour "bloodstained"  (5% chance
      per turn)
- [+] msgs for "the sun is starting to set" and "the sun is starting to
      rise"
    - [+] make 6am, 18pm be constants
- [+] add crushed windpipe -  lower Fitness, cannot sprint
* [+] CRASH when going down stairs! another overlapping room bug i
      think.
- [+] cockatrices and chickens should cluck
- [+] canwill param:  race:xxx;
    - [+] define it
    - [+] use this in "createmonster"
    - [+] use this in "polymorph" when on self
    - [+] then remove f_forcepoly
    - [+] TEST 
- [+] make playerstart vaults able to appear randomly (just don't place
      the the "playerstart" object)
- [+] redo texttospellopts() to make it more friendly
    - [+] give a list of what we want as args, rather than passing lots
          of nulls
    - [+] "pw:",  &localpowervar etc
- [+] make "n_lowhp" noisetext happen at END of lf turn - NOT during
      losehp.
- [+] rename turneffectslf() to startlfturn()
- [+] show hunger level as a bar in @@
- [+] warn before becoming burdened.
- [+] warn when you ARE burdened.  at the end of moveob()
- [+] l6 - absolute zero (turn everyone around you to ice, freeze all
      obs, turn ground to ice)
- [+] some monsters leave non-meat food behind?
    - [+] cactus -> cactus juice/fruit
    - [+] dreamfungus ->  sleeping powerder
- [+] silver weapons (5% chance on eligible weapons)
    - [+] hurt vampires 
    - [+] vulnerable to mat??? - then use fromob in losehp()
        - [+] f_matvuln mt_xxx multiplier
    - [+] add some silver weapons
        - [+] f_canbediffmat  mt_silver  10%
        - [+] if f_canbediffmat  is true, sometimes change material to
              this on creation
        - [+] getobname - if material is differnet, show this
        - [+] dagger
        - [+] sword
        - [+] arrow
        - [+] bolt
        - [+] dart
        - [+] addob should accept 'wantdiffmat'
2011-09-09 23:03:32 +00:00
Rob Pearce 52f6fd21c3 - [+] bug: when running, i jumped into deep water!
- [+] instead of evasion skill giving a fixed boost, make it change the
      evasion bonus due to xp level.
* [+] give monsters free moves when you go back onto a level, BEFORE
      placing the player.
- [+] fix dungeon code to eliminate nonlinked rooms
    - [+] force all vaults to be at least 3 squares away from map edges
    * [+] implement flood-fill test.
2011-08-24 23:48:29 +00:00
Rob Pearce f071b379ca - [+] fix bug with help not working
- [+] fix bug with redrawing when you open a door.
- [+] fix bug where pleasing gods during killflag() causes crash.
- [+] creatures >= 2 sizes bigger than you should block los
- [+] explosion trap should kill doors
- [+] redo getflags to take more args
- [+] genericise isprisoner code
* [+] jimbo's lair needs a portal back to dlev1
* [+] linkexits still not working properly.  fixed i think!
- [+] rename some spells
- [+] make max spell level be 6 (to match up with pr_master)
- [+] modify mp per level by sk_sorcery/2
- [+] bug: reading a blessed scroll of manding does nothing!
- [+] improved crit effects
    - [+] bash
    - [+] slash
    - [+] fire dam cauterises slash wounds
    - [+] cold dam fixes brusing
- [+] add crit chance to weapons. (default of xxx)
- [+] stirges shouldn't be able to latch on if you have no exposed body
      parts
2011-08-24 08:15:09 +00:00
Rob Pearce 00f9d4e0bf - [+] vampire gas cloud not working for player
- [+] monsters should only weild weapons if they are better than their
      inbuilt attcaks!
- [+] show dtected obkects in bold green
- [+] bug: can blink into impassable objects
- [+] infinite loop in ai turn for porcupine.
    - [+] movetowards()
* [+] vampires
- [+] vampire changes back to its original form.  CRASH.
2011-08-05 21:34:35 +00:00