Commit Graph

257 Commits

Author SHA1 Message Date
Rob Pearce d4861e906f Fix bug in fire damage calculation 2021-11-16 11:23:16 +11:00
Rob Pearce 7a5563de68 *Rats should be immune to disease
*Increase IQ bracket level required to count as "genius"
*prevent baba yaga's hut (or any F_NORANDOM buildings) from being randomly created
2016-07-07 16:25:06 +10:00
Rob Pearce 33c532339c Slightly increase chance of vaults in the main dungeon
When creating vaults, use 50% chance each time of increasing rarity instead of 33%
Make chests have better objects
2016-06-18 18:22:43 +10:00
Rob Pearce 980daa1d8c Ensure that Battlemage's initial three spell schools are unique. 2016-06-14 01:10:33 +10:00
Rob Pearce 729da5bb52 Fixed crash when 'what goes up' is active and a thrown missile is destroyed. 2016-06-13 23:38:45 +10:00
Rob Pearce cd58efb772 Fixed bug in getrandomobofclass() causing "get random food" to fail. 2016-06-13 22:18:24 +10:00
Rob Pearce 4c4c3a3e04 should be able to 'o'perate a lockpick to trigger the 'pick locks' skill using that object. 2016-06-13 09:30:03 +10:00
Rob Pearce 51bdeede32 For cartographer skills, don't shade out some known cells outside of our vision range. - stairs - doors - objects 2016-06-13 09:15:00 +10:00
Rob Pearce 3dd52fa511 When describing an object fmor a shop, show its real (identified) name. 2016-06-13 08:44:14 +10:00
Rob Pearce 6edfb3ee6d bigfix: aigetlastknownpos() fails when one of the adjacent cells is off the edge of the map. 2016-06-12 22:01:02 +10:00
Rob Pearce b7627de8cb F_POWDER items now dissolve in water. 2016-06-09 21:17:39 +10:00
Rob Pearce c6f3f3f9bd - takedamage() should end instantly if object is aleady dead. 2016-06-09 17:11:47 +10:00
Rob Pearce 0f90f3b76f Tweak breakob code again to cope with various numbers of broken object types, not just 2.
Replace all (struct)->weight with (struct)->mass.
2016-06-09 11:24:24 +10:00
Rob Pearce 74b0e9841f Modify getbreakob() to produce less objects - a burned giant newt corpse was turning into ~38 piles of ash! 2016-06-09 10:52:48 +10:00
Rob Pearce a4735d597c MAke object weight functions more meaningful - getobmass() and getobweight() 2016-06-09 10:51:55 +10:00
Rob Pearce d676a33072 Fix crash in ai movement when move was "successful" but target cell was still removed (eg. tried to open an unopenable door). 2016-06-09 10:25:50 +10:00
Rob Pearce fd450ba0c3 - Allow mages to select spells from their primary school through training, by spending points.
- Rename 'weapon attraction' spell to 'guided weapon'
- When showing spells in a book, include their school
- $ key to show current money
2016-06-07 16:52:41 +10:00
Rob Pearce 267f046986 When you fail to disarm a trap on a chest, and it goes off, ensure the trap is removed. 2016-06-06 22:29:20 +10:00
Rob Pearce eabf474c08 Allow random objects with given rarity in vault files "rare random thing" or "vrare random thing"
poolroom.vlt should have slightly less piranhas and a chance of rare objects underwater
2016-06-06 17:07:14 +10:00
Rob Pearce 8456ed6a74 - Option to notify about absorbed into dirt
- Fix crash if no cells found for god to appear.
- When calling fillpot from splashes moved/placed objects, make sure there is sufficient liquid to fill to container.
- Potion of blood sohuld always be a 'dark red potion'
2016-06-06 15:21:47 +10:00
Rob Pearce bd0f37f461 *water appearing/moving onto cells should turn empty flasks into potions if they have F_FILLPOT 2016-06-06 12:15:42 +10:00
Rob Pearce d381e8444c - Introduce MR_BACKTOLAIR to avoid ai code failures.
- Clear message bar before askobject()
- Make towel code include certain small liquids on the ground (splash of water, blood, etc)
2016-06-06 10:28:49 +10:00
Rob Pearce a23bedde10 *When using a towel, make it able to dry off objects on the ground.
*When using a towel, make it wet based on how much you dry off.
*Create Water description should specify that water is created on the ground.
*when creating "a wet xxx", make its wetness time be the maximum.
*fixed bug where F_WET obmods would not show up after the v1 timer value changed (added flags->obmodignore[])
2016-06-04 10:20:34 +10:00
Rob Pearce 9330c00ab3 Uncursing objects now causes them to become unequipped. 2016-06-02 16:35:12 +10:00
Rob Pearce dc48475d8b Cursed eyewear now _reduces_ your vision range. 2016-06-02 16:22:26 +10:00
Rob Pearce 562f3d082b - Dagger of Revenge had incorrect F_LINKGOD.
- Prevent obtaining key items via wishes.
2016-06-02 15:46:30 +10:00
Rob Pearce 89dbff4a63 Potions of (in)competence now modify attributes by 5, not 1.
Add a squeaking hinge trap
Rename doobtraps() to triggerattachedtrap() for readbility.
Make using spanners able to set off traps.....
Make spanners able to unlock anything (chests, doors)
Allow (I)nteraction with adjacent objects, not just impassable ones (but limit what kind of objects this works with).
Remove CMD_CLOSE command ('s') - we can just use 'interact'.
Limit (I)nteractions to cells in front of you.
2016-06-01 23:59:39 +10:00
Rob Pearce 5135352e2a Random object generation was completely broken. Should be a little better now. 2016-06-01 21:09:21 +10:00
Rob Pearce 4a7711d110 Genies should be immune to cold
Objects/lfs made of gas shouldn't be able to be knocked backwards
2016-06-01 16:51:09 +10:00
Rob Pearce 18da62c7bd When checking whether objects are being absorbed by the ground, use "getmaterialstate == MS_LIQUID" rather than just checking meterial id. 2016-06-01 15:44:03 +10:00
Rob Pearce f9a03e40e6 heat metal spell is way too strong, instakilled my char with 50-60 hp. Reduce heat duration from 3-6 turns to 1-2 turns. 2016-06-01 15:38:06 +10:00
Rob Pearce 39160a7c24 Forgot to append hpbuf to objects when describing them. 2016-06-01 15:27:17 +10:00
Rob Pearce cb97ac1f26 When looking at flying creatures, show their height (in metres). 2016-06-01 15:18:52 +10:00
Rob Pearce c4a576d6ca Fix text when reading a map and you're already on top of the target location. 2016-06-01 15:10:40 +10:00
Rob Pearce 4a072fefc8 - Lower range of 'heat metal' to 1.
- Change description for fatal heat damage to 'scalded'.  Only use 'incinerated' for fire damage.
- Immutable objects shouldn't be able to be heated (eg. with "heat metal")
2016-06-01 15:01:07 +10:00
Rob Pearce 8ed4b9aca0 - new l2 death spell: "field of decay" - damage objects / lfs made from organic material
- If not in battle, praying to Hecta will restore stamina / mana, and sometimes cast field of decay
2016-05-31 12:23:39 +10:00
Rob Pearce 99fc225519 - in addob(), prevent placing innate attack objects into non-lf obpiles.
- when parsing object names, require an exact match for innate attack objects.
2016-05-31 10:41:00 +10:00
Robert Pearce e9a2ccb2c8 - Fixed heaps of memory leaks and bad memory usage. This should finally fix the flagpile corruption from 6 years ago!
- forgot to initialise brand->description
- door displaying as "leaf" - definition of knowledge->id was OBCLASS instead of OBTYPE.
- Repeated text:
        Minimum agility to use effectively: 50 to use.Minimum agility to use
        effectively: 50 to use. (bonus at 70).
- change wish text to be more meaningful
- fix failure when loading objects with a bonus from vaults/bones (eg. blessed '+5' sword)
- when raging, don't prompt to really attack when you won't gain xp
- disable flagpile checks
- Use 'interact' to use shops, not 'operate'
- Bad text: You are resistant to: projectiles[-7870t], explosives[-7870t].
- scorpions shouldn't follow you up stairs. (but giant scorpions can)
- make failed relinkob() calls return the original object rather than null, otherwise we get situations where an object becomes NULL and causes a crash.
- make cooking skill description show what size corpses you can cook.
- bug: potion of growth caused instadeath when reverting.
- bug: not showing monster abilites properly
- show raceclass in descriptions (/ v)
- make evasion only work if you're not exhausted
- Felix should be pleased by attacking people while hidden
- Not seeing felix angered messages when donating items
- Holes in roof - you now need to climb to inspect them.
- Fixed crash when hitting @ while producing light.
2016-05-31 00:21:12 +10:00
Rob Pearce 2f80d6ba05 - [+] rewrite gettrrange()
- [+] reduce chances of dulling weapon from hitting things
- [+] crash during save. other save/load fixes.
- [+] simplify xp value calculation.
- [+] fixes for checks to see whether cells are diggable using "dig"
      spell.
- [+] fix shop closed bug - "we are closed" text not appearing.
- [+] sound code mods - should no longer ever hear "muffled slithering"
      (since slithering should be too soft to travel through walls)
- [+] undead will no longer try to heal via resting (since they can't).
2013-01-03 04:39:34 +00:00
Rob Pearce d89e93f64e - [+] tech is now uncommon, not rare.
- [+] bug: crash when linking to map entry objects
- [+] removed some material-based damage immunities
- [+] at night you shouldn't hear "a cash register chiming".
- [+] increase hp of chests
- [+] filling empty flask from potion of fshy lungs resulted in potion
      of water!
- [+] don't take migraine damage from light if your'e blind.
2012-12-31 05:10:13 +00:00
Rob Pearce a42ca5bb37 - [+] operate will turn electromachete on/off
- [+] Interact should also be able to open/close doors
- [+] closing doors should take time.
- [+] remove armourrating from many standard monsters.
- [+] should be able to get nauseated while asleep
- [+] shouldn't be able to generate corpses of unique monsters!
- [+] mental feedback should do more damage.
2012-12-26 06:12:09 +00:00
Rob Pearce 60914f4842 - [+] change cooking skill - make it determien the size of the corpse
you are able to cook.
- [+] then greatly increase chances of getting sick from raw meat.
- [+] and decrease nutrition for raw meat again
- [+] wizard classes should get random spells on level up
- [+] Interact (with adjacent things)
    - [+] add new command
    - [+] bookshelf
    - [+] wardrobes (contain clothes)
    - [+] open barrels
    - [+] computers
- [+] only show "it currently contains..." for containers which you
      have opened.
    - [+] F_BEENOPENED.
- [+] some barrels are randomly jammed
- [+] change jam to be strength check.
- [+] change skillcheck roll - now only 1-50
- [+] monsters shouldn't cast lethargy if you're already exhasted
- [+] lethargy should cancel rage.
- [+] change spellbooks - always id them but you might not be able to
      read them.
new vaults:
- [+] goblin nest
- [+] orc fort
2012-12-23 22:02:52 +00:00
Rob Pearce 67d6d4b30b - [+] clouds of smoke (or anything gaseous) shouldn't be able to fall!
- [+] BUG: after giant ant digs a hole:
    - [+] ERROR - unlinked stairs! should have been linked during map
          creation.
          ERROR - can't find opposite end of stairs/portal!
    - [+] upstaircase on the new level is being linked to a hole.
    - [+] fixed?
    - [+] test again... (dig down, check log.txt for linking to wrong
          type)
- [+] giant ant should be able to dig dirt at will(to escape)
- [+] mimic ??
    - [+] pretends to be an ornate chest.
- [+] new monsters
    - [+] gluon should be an ooze.
    - [+] hag
    - [+] phase spider (wlak through walls!)
    - [+] basilisk
- [+] better description for rusted armour.
- [+] fix crash when creating up holes.
2012-12-19 10:42:22 +00:00
Rob Pearce c1cb8ea62e - [+] new monsters
- [+] creeping coins
        - [+] pretends to be gold
        - [+] poison breath
    - [+] rat swarm
    - [+] locust swarm
    - [+] baby mind leech
        - [+] mind whip
    - [+] adult mind leech
        - [+] mental feedback
        - [+] l5 psionic - drain intellect spell.  3d6 IQ drain.
- [+] summon swarm spell
- [+] ai: only pathfind if we are >= animal intelligence.
- [+] shadow - drain strength
- [+] show: "you swap places with the _sleeping_ lf"
- [+] problem:
    - [+] i have metalwork = beginner, sewing = novice
    - [+] ...but i could resize cloth objects!
- [+] SAVE broken again. fixed? 
- [+] in fixreachability, glass walls count as nonsolid
- [+] aligned temples:
    - [+] detect auras: free
    - [+] curse removal: free
    - [+] blessings: half price
- [+] change surface map.
    - [+] map difficulty should be very high.
2012-12-12 01:00:17 +00:00
Rob Pearce fe41614a1c - [+] better help text for temperature effects in @e
- [+] why wasn't eyebat levitating? fixed. anything with nostam should
      always have 100% stamina.
- [+] pain shouldn't work on undead.
- [+] screamer
    - [+] walking
    - [+] plant. purple brocolli
    - [+] spellcloud scream
        - [+] deafens adjacent creatures for 40-50 turns (doesn't stack)
        - [+] attracts other monsters
    - [+] leaves "screamer slice"
- [+] how do you open a barrel without hurting contents?
    - [+] answer: don't use DT_BASH.
- [+] giant bee
    - [+] sting then die. (cause pain)
- [+] don't get dizzy while running
2012-12-07 04:42:14 +00:00
Rob Pearce d7f6991a40 - [+] fixed CRASH when energy blade vanishes
- [+] gods of opposing alignments should never make offers.
- [+] new armour flag:
    - [+] f_underclothing
    - [+] getequippedob() - get the outer one.
    - [+] if you have f_underclothing, can wear other armour on top of
          it.
    - [+] can't remove underclothes without removing outer first.
    - [+] TEST with cotton shirt
    - [+] make sure autoequip handles undercltohing
    - [+] fix other objects
    - [+] adjust ']' output
- [+] make armour help against some magical damage too
    - [+] move armour check and reduction into losehpeffects().
    - [+] pass damreducedbyarmour to losehpeffects
- [+] psionic spells:
    - [+] dampen missiles - lots of extra evasion vs missiles only
    * [+] soul link (l4, share damage)
    - [+] mind sheidl (l4, like the amulet)
    - [+] delay death (l5, don't die if hp <= 0 and this spell is
          active)
    - [+] remote ko (l6)
- [+] Silence spell / effect - air.
    - [+] f_silenced.
    - [+] announce in io.c
    - [+] prevents spellcasting
    - [+] prevents docomms()
    - [+] prevents reading scrolls
    - [+] prevents speech-based abilities like warcry and sonic bolt
    - [+] say() will fail
    - [+] sayphrase() wil fail
    - [+] test the spell.......
- [+] CRASH when adjusting glyph on edge of map
- [+] non-humanoids can't climb without climb skill.
- [+] player sohuld be able to swap with unconscious/asleep lfs <= same
      size
- [+] too easy to knock things unconscious??? bug. fixed.
- [+] reusable cells being set to empty! think this was a vault
      definition problem.
- [+] demon chameleon / deech
    - [+] low-level mosnter which can hide
2012-12-06 04:57:13 +00:00
Rob Pearce 38a788ca5f - [+] pour poison potion on weapon should poison it.
- [+] coldness shoudl reduce object heat and heat should add f_hot
- [+] novice engineering should let you make arrows.
- [+] hunter shouhld have novice engineering.
- [+] BUG: during the game: i nvalid racename 'piranha' in vault
      pool_room
    - [+] this happened because more than 1 appeared.
    - [+] disallow minions/numapepar in vaults.
2012-12-05 05:00:54 +00:00
Rob Pearce 234d70b099 - [+] chat->all allies command.
- [+] replace 'step carefully' key to free up 's' - OT_A_TIPTOE
    - [+] 's' = 'shut door' (replace 'c')
    - [+] 'c' = 'chat to single'
    - [+] rewrite docomms() to use other funcs
    - [+] 'C' = 'command all allies'
        - [+] only possible for single person:
            - [+] 'o' donate
            - [+] 'i' tell me about this area
            - [+] 'j' join me
            - [+] 'k' trade knowledge
            - [+] 'm' mercy
            - [+] 't' trade
            - [+] 'x' dangers nearby?
        - [+] make a list of all commands which are valid for EVERYONE
        - [+] send command to everyone.
        - [+] docommslf()
    - [+] test with single target
    - [+] test with multiple targets
- [+] hitconfer lifetime for wight/contagion zombie should only happen
      on fatal hits
- [+] makezombie() should be able to call petify()
- [+] bug: mosnters never using HIDE ability.
- [+] monsters which pretend to be objects (ie. gargoyle)
    - [+] F_ISMONSTER v0=raceid v1=objectid, v2 = spot check difficulty
    - [+] when generating, add contents->first as objectid v1
    - [+] getobname -> if you have f_mosnters, use contents->first
    - [+] getobdesc -> if you have f_mosnters, use contents->first
    - [+] mosnters won't walk onto it
    - [+] if you are next to them and can't see them... reveal then
          attack!
    - [+] F_ISMONSTER - must always be impassable to everyone!!!
    - [+] if you try to walk onto it:
        - [+] "the xxx starts to move!"
        - [+] kill ob
        - [+] add lf
        - [+] they get a free attack
    - [+] if it takes damage
        - [+] ... convert.
    - [+] spot checks to see them.
        - [+] ...convert.
    - [+] F_PRETENDSTOBE - mosnters will revert if unseen.
    - [+] reveal hidden should show them.
- [+] gargoyle
    - [+] stone statues
    - [+] winged
    - [+] large
    - [+] ~37hp
    - [+] start off as an obejct
- [+] wight
    - [+] rare.
    - [+] ~26 hp ...TR5
    - [+] silent move
    - [+] dr4 attack (low damage) but....
    - [+] any humans killed rise as a wight .
        - [+]  (hitconfer revive).  how can i limit hitconfer to a
              race? maybe f_hitconferrace
        - [+] bones file
        - [+] tested ok.
    - [+] 1 leveldrain per hit
        - [+] skillcheck to avoid
        - [+] wight gains +5 hp
2012-12-04 05:15:27 +00:00
Rob Pearce ae01d1bbfa - [+] add f_nostam to undead.
- [+] add nonausea rather than nosmell sometimes.
    - [+] rats should eb able to smell, but not get nauseated.
- [+] fix triumph pleasure for bjorn.  must be no monsters within
      LOF... or within radius ?
    - [+] and make it very low piety gain.
- [+] remember which level we got flags form
    - [+] flag_t -> fromlev
    - [+] announce this in getflagcourse
- [+] undead qualities
    - [+] no criticals
    - [+] don't naturally heal
    - [+] don't breath
- [+] drainlevel(fromlf)
    - [+] check for dtresist necrotic 
    - [+] fitness saving throw (difficulty is 100 + fromlf's level*6)
    - [+] call loselevel()
- [+] loselevel()
    - [+] announce.
    - [+] drop maxhp.
    - [+] adjust hp appropriately
    - [+] lose any flags where >fromlev is too high.
    - [+] handle monk f_hasattack specially.
        - [+] getmonkdr(level)
        - [+] getmonkattacks(level)
    - [+] keep track of what stats we gained and lose them again.
- [+] TEST level drain with cursed xp pot
- [+] TEST level drain with stats...
- [+] prevent drinking when wearing full-face masks like gas
      mask/football helmet
    - [+] implement f_COVERSFACE.
    - [+] add it to objects.
    - [+] check it when doing caneat() candrink()
    - [+] up their AC bonus too
- [+] large scorpion
- [+] hellhound
- [+] large primalities
- [+] new vault flag: usehabitat:xxx
    - [+] means "set the habitat of all vault cells to xxx"
    - [+] real_getrandomob() should be given a CELL, not MAP.
    - [+] getrandomobofclass() should be given a CELL, not MAP.
    - [+] use CELL habitat to determine random obs
    - [+] apply to caves
- [+] vault scatter: ignore locked cells (ie. reusable ones)
new vaults
- [+] dualroom
- [+] sauna - vhot!
- [+] pentagram and demons
new pionic spells
- [+] chi bolt - low dam ranged attack 1d4
- [+] chi strike (l4) - add 1d4 explosive damage to melee hits
2012-12-03 05:12:29 +00:00
Rob Pearce c839387b84 - [+] dog should ahve covet for ot_stick
- [+] fix crash in wouldgivepenalty();
- [+] shouldn't be able to inflict poison on a plant!
- [+] fix monster casting of airblast
- [+] you now CAN knock out robots.
- [+] don't lower god piety while training.
- [+] mesmerat (mental rat)
    - [+] random psionic spells
- [+] tempest moth
    - [+] no base attack but...
    - [+] airblast 
    - [+] sleet storm
- [+] homonculus
    - [+] 'n'
    - [+] miniature human. 2 hd?
    - [+] bite.  low damage, but inflicts sleep.
    - [+] dodge like goblin
- [+] scorpion. sting. inflict strong poison.
- [+] spider swarm
    - [+] F_SWARM
    - [+] has lots of attacks.
    - [+] as it loses hp, it loses attacks too.
    - [+] no corpse.
    - [+] dietext: "the swarm disperses"
2012-12-02 21:15:40 +00:00