2010-12-02 12:17:54 +11:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
2011-03-18 12:25:18 +11:00
|
|
|
#include <string.h>
|
2010-12-02 12:17:54 +11:00
|
|
|
#include "ai.h"
|
2011-02-01 06:16:13 +11:00
|
|
|
#include "attack.h"
|
2010-12-02 12:17:54 +11:00
|
|
|
#include "defs.h"
|
|
|
|
#include "flag.h"
|
- [+] outdoor bug: at -1,-1. travel south. end up at 0,0!!!
- [+] blink should go to random place within lof, not los
- [+] sunglasses shuld reduce nightvis range, not visrange
* [+] since jolt needs adjacency, make it more powerful
- [+] use colours for spell descriptions
- [+] replace 'call wind' with 'zephyr'
* [+] add vault commonality.
- [+] add more common vaults - roundabout etc
* [+] change "addmonster" to take a string arg instrad of RACEID
- [+] pouring cursed water on blessed scroll didn't work.....
- [+] append "...god of xxx" to rc_god lifeforms
- [+] try to attack with f_pain -> INFINITE LOOP.
- [+] ARMOURPIERCE shouldn't hurt armour
- [+] ghast touchparalyze attack isn't working.
* [+] bug: when praying to gods, ones not in heaven aren't listed.
- [+] when a god apepars..."Hecta appears" x2
- [+] attacking fleeing lf should count as a backstab (if you have the
skill)
* [+] "nothing happens" during god spell effects
* [+] allow hunger to work on monsters
- [+] pressing 'a' on @Magic has weird results.
- [+] bug: got a gift form yumi during combat???? what for? healing?
initial vampire implementation
initial god implementation
- [+] they all start off in "heaven" map.
- [+] gods ahve f_piety. starts at 0
- [+] keep track of piety with each god. starts at 0 for each one.
* [+] let planeshift take you to heaven (for debugging)
* [+] everyone has 'pray' ability.
- [+] modpiety(rid, amt)
* [+] piety vals
* [+] when you pray
- [+] isangry(god) - ie is piety < 0
* [+] if you pray when god is angry, bad!
* [+] once piety gets over 200 or so, praying might give you a gift.
* [+] god_appears(lifeform_t *victim)
- [+] if >=0 (indiff / pleased), goes up to indiff over time(1 per
turn).
- [+] regain through doing actions ... in progress
- [+] lose through doing actions only if you have prayed to this god
before (angergodmaybe)
- [+] special: gods don't need LOS to cast spells.
- [+] gods planeshift away if not doing anything else.
* [+] @g to see your piety levels for each god
- [+] ?g for help on gods
- [+] IN general:
- [+] prey = oneoff effect
- [+] gift = ongoing
* [+] makeangry() vs modpiety
* [+] Yumi - fem,mercy/healing - if you die within the first few turns!
Hecta - partial
Avamon - partial
2011-08-04 04:43:05 +10:00
|
|
|
#include "god.h"
|
2011-02-01 06:16:13 +11:00
|
|
|
#include "io.h"
|
2010-12-02 12:17:54 +11:00
|
|
|
#include "lf.h"
|
|
|
|
#include "map.h"
|
2011-02-01 06:16:13 +11:00
|
|
|
#include "move.h"
|
|
|
|
#include "nexus.h"
|
2010-12-02 12:17:54 +11:00
|
|
|
#include "objects.h"
|
2011-02-01 06:16:13 +11:00
|
|
|
#include "spell.h"
|
|
|
|
#include "text.h"
|
2010-12-02 12:17:54 +11:00
|
|
|
|
|
|
|
extern lifeform_t *player;
|
2011-02-01 06:16:13 +11:00
|
|
|
extern enum ERROR reason;
|
2010-12-02 12:17:54 +11:00
|
|
|
|
2011-02-16 05:21:33 +11:00
|
|
|
int wantdb = B_TRUE;
|
|
|
|
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
void addignorecell(lifeform_t *lf, cell_t *c) {
|
|
|
|
if (c) {
|
|
|
|
addflag(lf->flags, F_IGNORECELL, c->x, c->y, NA, NULL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
// returns true on failure
|
|
|
|
int aiattack(lifeform_t *lf, lifeform_t *victim, int timelimit) {
|
2011-03-25 12:23:15 +11:00
|
|
|
int db = B_FALSE;
|
- [+] outdoor bug: at -1,-1. travel south. end up at 0,0!!!
- [+] blink should go to random place within lof, not los
- [+] sunglasses shuld reduce nightvis range, not visrange
* [+] since jolt needs adjacency, make it more powerful
- [+] use colours for spell descriptions
- [+] replace 'call wind' with 'zephyr'
* [+] add vault commonality.
- [+] add more common vaults - roundabout etc
* [+] change "addmonster" to take a string arg instrad of RACEID
- [+] pouring cursed water on blessed scroll didn't work.....
- [+] append "...god of xxx" to rc_god lifeforms
- [+] try to attack with f_pain -> INFINITE LOOP.
- [+] ARMOURPIERCE shouldn't hurt armour
- [+] ghast touchparalyze attack isn't working.
* [+] bug: when praying to gods, ones not in heaven aren't listed.
- [+] when a god apepars..."Hecta appears" x2
- [+] attacking fleeing lf should count as a backstab (if you have the
skill)
* [+] "nothing happens" during god spell effects
* [+] allow hunger to work on monsters
- [+] pressing 'a' on @Magic has weird results.
- [+] bug: got a gift form yumi during combat???? what for? healing?
initial vampire implementation
initial god implementation
- [+] they all start off in "heaven" map.
- [+] gods ahve f_piety. starts at 0
- [+] keep track of piety with each god. starts at 0 for each one.
* [+] let planeshift take you to heaven (for debugging)
* [+] everyone has 'pray' ability.
- [+] modpiety(rid, amt)
* [+] piety vals
* [+] when you pray
- [+] isangry(god) - ie is piety < 0
* [+] if you pray when god is angry, bad!
* [+] once piety gets over 200 or so, praying might give you a gift.
* [+] god_appears(lifeform_t *victim)
- [+] if >=0 (indiff / pleased), goes up to indiff over time(1 per
turn).
- [+] regain through doing actions ... in progress
- [+] lose through doing actions only if you have prayed to this god
before (angergodmaybe)
- [+] special: gods don't need LOS to cast spells.
- [+] gods planeshift away if not doing anything else.
* [+] @g to see your piety levels for each god
- [+] ?g for help on gods
- [+] IN general:
- [+] prey = oneoff effect
- [+] gift = ongoing
* [+] makeangry() vs modpiety
* [+] Yumi - fem,mercy/healing - if you die within the first few turns!
Hecta - partial
Avamon - partial
2011-08-04 04:43:05 +10:00
|
|
|
int innocentattack = 0;
|
2011-04-01 10:54:44 +11:00
|
|
|
flag_t *f;
|
2011-03-25 12:23:15 +11:00
|
|
|
|
|
|
|
if (lfhasflag(lf, F_DEBUG)) {
|
|
|
|
db = B_TRUE;
|
|
|
|
}
|
|
|
|
|
2011-06-20 13:16:30 +10:00
|
|
|
// mindless?
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
if (getattrbracket(getattr(lf, A_IQ), A_IQ, NULL) == IQ_MINDLESS) {
|
2011-06-22 16:01:48 +10:00
|
|
|
if (!isundead(lf)) {
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
return B_TRUE;
|
2011-06-22 16:01:48 +10:00
|
|
|
}
|
2011-06-20 13:16:30 +10:00
|
|
|
}
|
|
|
|
|
2011-04-01 10:54:44 +11:00
|
|
|
// already targetting this lf?
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
f = lfhasflagval(lf, F_TARGETLF, victim->id, NA, NA, NULL);
|
2011-04-01 10:54:44 +11:00
|
|
|
if (f) {
|
|
|
|
if ((f->lifetime > 0) && (f->lifetime < timelimit)) {
|
|
|
|
f->lifetime = timelimit;
|
|
|
|
}
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
return B_TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
// feigning death?
|
|
|
|
if (lfhasflag(victim, F_FEIGNINGDEATH)) {
|
|
|
|
int penalty;
|
|
|
|
penalty = (getcelldist(lf->cell, victim->cell)-1);
|
|
|
|
if (penalty < 0) penalty = 0;
|
|
|
|
penalty *= 3;
|
|
|
|
if (!skillcheckvs(lf, SC_WILL, -penalty, victim, SC_WILL, 0)) {
|
|
|
|
dblog(".oO { attempted target fooled me with feign death. ignoring. }");
|
|
|
|
return B_TRUE;
|
|
|
|
}
|
2011-04-01 10:54:44 +11:00
|
|
|
}
|
|
|
|
|
2011-03-25 12:23:15 +11:00
|
|
|
if (db) {
|
|
|
|
char lfname[BUFLEN],vicname[BUFLEN];
|
|
|
|
getlfname(lf, lfname);
|
|
|
|
getlfname(victim, vicname);
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
dblog(".oO { %s setting new target: %s }", lfname, vicname);
|
2011-03-25 12:23:15 +11:00
|
|
|
}
|
|
|
|
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
killflagsofid(lf->flags, F_TARGETLF);
|
2011-03-25 12:23:15 +11:00
|
|
|
killflagsofid(lf->flags, F_TARGETCELL);
|
|
|
|
|
|
|
|
if ((timelimit == PERMENANT) || (timelimit == UNLIMITED)) {
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
addflag(lf->flags, F_TARGETLF, victim->id, victim->cell->x, victim->cell->y, NULL);
|
2011-03-25 12:23:15 +11:00
|
|
|
} else {
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
addtempflag(lf->flags, F_TARGETLF, victim->id , victim->cell->x , victim->cell->y, NULL,timelimit);
|
2011-03-25 12:23:15 +11:00
|
|
|
}
|
|
|
|
// tell the player
|
|
|
|
if (cansee(player, lf)) {
|
|
|
|
makenoise(lf, N_GETANGRY);
|
|
|
|
}
|
|
|
|
|
2011-07-01 13:34:41 +10:00
|
|
|
// become hostile?
|
2011-08-18 06:57:43 +10:00
|
|
|
if (isplayer(victim) && !hasflag(lf->flags, F_HOSTILE) ) {
|
2011-07-01 13:34:41 +10:00
|
|
|
addflag(lf->flags, F_HOSTILE, B_TRUE, NA, NA, NULL);
|
2011-08-18 06:57:43 +10:00
|
|
|
//innocentattack = 1;
|
2011-07-01 13:34:41 +10:00
|
|
|
}
|
|
|
|
|
2011-03-25 12:23:15 +11:00
|
|
|
// change allegience ?
|
|
|
|
if (!areenemies(lf, victim)) {
|
|
|
|
if (getallegiance(victim) == AL_FRIENDLY) {
|
2011-04-08 13:18:54 +10:00
|
|
|
killflagsofid(lf->flags, F_FRIENDLY);
|
- [+] outdoor bug: at -1,-1. travel south. end up at 0,0!!!
- [+] blink should go to random place within lof, not los
- [+] sunglasses shuld reduce nightvis range, not visrange
* [+] since jolt needs adjacency, make it more powerful
- [+] use colours for spell descriptions
- [+] replace 'call wind' with 'zephyr'
* [+] add vault commonality.
- [+] add more common vaults - roundabout etc
* [+] change "addmonster" to take a string arg instrad of RACEID
- [+] pouring cursed water on blessed scroll didn't work.....
- [+] append "...god of xxx" to rc_god lifeforms
- [+] try to attack with f_pain -> INFINITE LOOP.
- [+] ARMOURPIERCE shouldn't hurt armour
- [+] ghast touchparalyze attack isn't working.
* [+] bug: when praying to gods, ones not in heaven aren't listed.
- [+] when a god apepars..."Hecta appears" x2
- [+] attacking fleeing lf should count as a backstab (if you have the
skill)
* [+] "nothing happens" during god spell effects
* [+] allow hunger to work on monsters
- [+] pressing 'a' on @Magic has weird results.
- [+] bug: got a gift form yumi during combat???? what for? healing?
initial vampire implementation
initial god implementation
- [+] they all start off in "heaven" map.
- [+] gods ahve f_piety. starts at 0
- [+] keep track of piety with each god. starts at 0 for each one.
* [+] let planeshift take you to heaven (for debugging)
* [+] everyone has 'pray' ability.
- [+] modpiety(rid, amt)
* [+] piety vals
* [+] when you pray
- [+] isangry(god) - ie is piety < 0
* [+] if you pray when god is angry, bad!
* [+] once piety gets over 200 or so, praying might give you a gift.
* [+] god_appears(lifeform_t *victim)
- [+] if >=0 (indiff / pleased), goes up to indiff over time(1 per
turn).
- [+] regain through doing actions ... in progress
- [+] lose through doing actions only if you have prayed to this god
before (angergodmaybe)
- [+] special: gods don't need LOS to cast spells.
- [+] gods planeshift away if not doing anything else.
* [+] @g to see your piety levels for each god
- [+] ?g for help on gods
- [+] IN general:
- [+] prey = oneoff effect
- [+] gift = ongoing
* [+] makeangry() vs modpiety
* [+] Yumi - fem,mercy/healing - if you die within the first few turns!
Hecta - partial
Avamon - partial
2011-08-04 04:43:05 +10:00
|
|
|
innocentattack = 3;
|
2011-03-25 12:23:15 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-04-11 15:05:45 +10:00
|
|
|
// no longer a pet
|
|
|
|
f = lfhasflagval(lf, F_PETOF, victim->id, NA, NA, NULL);
|
- [+] outdoor bug: at -1,-1. travel south. end up at 0,0!!!
- [+] blink should go to random place within lof, not los
- [+] sunglasses shuld reduce nightvis range, not visrange
* [+] since jolt needs adjacency, make it more powerful
- [+] use colours for spell descriptions
- [+] replace 'call wind' with 'zephyr'
* [+] add vault commonality.
- [+] add more common vaults - roundabout etc
* [+] change "addmonster" to take a string arg instrad of RACEID
- [+] pouring cursed water on blessed scroll didn't work.....
- [+] append "...god of xxx" to rc_god lifeforms
- [+] try to attack with f_pain -> INFINITE LOOP.
- [+] ARMOURPIERCE shouldn't hurt armour
- [+] ghast touchparalyze attack isn't working.
* [+] bug: when praying to gods, ones not in heaven aren't listed.
- [+] when a god apepars..."Hecta appears" x2
- [+] attacking fleeing lf should count as a backstab (if you have the
skill)
* [+] "nothing happens" during god spell effects
* [+] allow hunger to work on monsters
- [+] pressing 'a' on @Magic has weird results.
- [+] bug: got a gift form yumi during combat???? what for? healing?
initial vampire implementation
initial god implementation
- [+] they all start off in "heaven" map.
- [+] gods ahve f_piety. starts at 0
- [+] keep track of piety with each god. starts at 0 for each one.
* [+] let planeshift take you to heaven (for debugging)
* [+] everyone has 'pray' ability.
- [+] modpiety(rid, amt)
* [+] piety vals
* [+] when you pray
- [+] isangry(god) - ie is piety < 0
* [+] if you pray when god is angry, bad!
* [+] once piety gets over 200 or so, praying might give you a gift.
* [+] god_appears(lifeform_t *victim)
- [+] if >=0 (indiff / pleased), goes up to indiff over time(1 per
turn).
- [+] regain through doing actions ... in progress
- [+] lose through doing actions only if you have prayed to this god
before (angergodmaybe)
- [+] special: gods don't need LOS to cast spells.
- [+] gods planeshift away if not doing anything else.
* [+] @g to see your piety levels for each god
- [+] ?g for help on gods
- [+] IN general:
- [+] prey = oneoff effect
- [+] gift = ongoing
* [+] makeangry() vs modpiety
* [+] Yumi - fem,mercy/healing - if you die within the first few turns!
Hecta - partial
Avamon - partial
2011-08-04 04:43:05 +10:00
|
|
|
if (f) {
|
2011-08-18 06:57:43 +10:00
|
|
|
if (isplayer(victim)) innocentattack = 3;
|
- [+] outdoor bug: at -1,-1. travel south. end up at 0,0!!!
- [+] blink should go to random place within lof, not los
- [+] sunglasses shuld reduce nightvis range, not visrange
* [+] since jolt needs adjacency, make it more powerful
- [+] use colours for spell descriptions
- [+] replace 'call wind' with 'zephyr'
* [+] add vault commonality.
- [+] add more common vaults - roundabout etc
* [+] change "addmonster" to take a string arg instrad of RACEID
- [+] pouring cursed water on blessed scroll didn't work.....
- [+] append "...god of xxx" to rc_god lifeforms
- [+] try to attack with f_pain -> INFINITE LOOP.
- [+] ARMOURPIERCE shouldn't hurt armour
- [+] ghast touchparalyze attack isn't working.
* [+] bug: when praying to gods, ones not in heaven aren't listed.
- [+] when a god apepars..."Hecta appears" x2
- [+] attacking fleeing lf should count as a backstab (if you have the
skill)
* [+] "nothing happens" during god spell effects
* [+] allow hunger to work on monsters
- [+] pressing 'a' on @Magic has weird results.
- [+] bug: got a gift form yumi during combat???? what for? healing?
initial vampire implementation
initial god implementation
- [+] they all start off in "heaven" map.
- [+] gods ahve f_piety. starts at 0
- [+] keep track of piety with each god. starts at 0 for each one.
* [+] let planeshift take you to heaven (for debugging)
* [+] everyone has 'pray' ability.
- [+] modpiety(rid, amt)
* [+] piety vals
* [+] when you pray
- [+] isangry(god) - ie is piety < 0
* [+] if you pray when god is angry, bad!
* [+] once piety gets over 200 or so, praying might give you a gift.
* [+] god_appears(lifeform_t *victim)
- [+] if >=0 (indiff / pleased), goes up to indiff over time(1 per
turn).
- [+] regain through doing actions ... in progress
- [+] lose through doing actions only if you have prayed to this god
before (angergodmaybe)
- [+] special: gods don't need LOS to cast spells.
- [+] gods planeshift away if not doing anything else.
* [+] @g to see your piety levels for each god
- [+] ?g for help on gods
- [+] IN general:
- [+] prey = oneoff effect
- [+] gift = ongoing
* [+] makeangry() vs modpiety
* [+] Yumi - fem,mercy/healing - if you die within the first few turns!
Hecta - partial
Avamon - partial
2011-08-04 04:43:05 +10:00
|
|
|
killflag(f);
|
|
|
|
}
|
|
|
|
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
return B_FALSE;
|
2011-03-25 12:23:15 +11:00
|
|
|
}
|
2011-03-04 12:22:36 +11:00
|
|
|
|
|
|
|
enum OBTYPE aigetattackspell(lifeform_t *lf, lifeform_t *victim) {
|
2011-08-24 18:15:09 +10:00
|
|
|
flag_t *retflag[MAXCANDIDATES];
|
|
|
|
int nretflags;
|
2011-02-16 05:21:33 +11:00
|
|
|
flag_t *f;
|
|
|
|
enum OBTYPE poss[MAXPILEOBS];
|
|
|
|
int nposs = 0;
|
|
|
|
int db = B_FALSE;
|
* [+] F_prone if you're knocked down
- [+] make sheilds very good against projectiles
- [+] make smoke just REDUCE vision, not block it.
- [+] noncorporeal should stop grabs!
* [+] don't say 'a javelin is damaged' when you throw it, just apply
the damge
- [+] increase damage bonus with every lore level. +10% each time
(ie. up to 50% at top)
* [+] give accuracy + critical bonus for lore levles too
- [+] typo: Enhance which skill enhance (1 left)? ['=next page,?=toggle]
- [+] Show Pain on botl.
* [+] more staves
- [+] low hitpoint warning for pets (or make them shriek, whine, etc)
- [+] CRITKNOCKDOWN
* [+] FINISH GRIZZLY
- [+] undead should be immune to poison!!
- [+] make code to auto add flags to undead.
- [+] if you ever move a door (ie. airblast), automatically open it.
- [+] young wolf shouldn't be able to open a door!
* [+] You throw a dart at the carpet snake. Your dart misses
you.--More--
- [+] no sprinting while burdneed
- [+] blood should be drawn BELOW stairs
- [+] weilded torch should do 1d4 fire damage (counts as a club)
* [+] The skeleton touches a leather belt then recoils in pain!The
skeleton drops a blessed leather belt.The skeleton puts on a
leather belt.
- [+] don't show "you can cast it at power level xxx" for abilities
* [+] more item randomising
- [+] make grey ooze splatter into acid
- [+] "the vine grabs you" if you walk onto an entangling vine.
- [+] don't start monsters within player's los
- [+] properly randomise sticks to snakes
- [+] stirge
- [+] leech (like stirge but can charge/leap, and slightly more hp /
damage)
- [+] treesnake
- [+] constrictor
- [+] cobra
- [+] stickes to snakes - make caster's weapon revert.
- [+] A something comes into view.
- [+] is invisibility code working properly when you see someone use
the invis spell?
- [+] don't include cosmetic objects in 'you see xxx'
* [+] monsters: don't use spells if you don't have lof.
- [+] pets not following around corners if you move diagonally. fixed a
little.
- [+] summon small animals (2-3 x SZ_SMALL)
* [+] jet of water
- [+] summon medium animals (2-4 x SZ_MEDIUM, wolf etc)
- [+] lightning storm (lightbning everyone within los, and more damage)
- [+] summon large animals (SZ_LARGE, horse, bear etc)
2011-05-03 17:34:07 +10:00
|
|
|
int castok = B_TRUE;
|
2011-02-16 05:21:33 +11:00
|
|
|
|
|
|
|
if (lfhasflag(lf, F_DEBUG)) {
|
|
|
|
db = B_TRUE;
|
|
|
|
}
|
|
|
|
|
* [+] F_prone if you're knocked down
- [+] make sheilds very good against projectiles
- [+] make smoke just REDUCE vision, not block it.
- [+] noncorporeal should stop grabs!
* [+] don't say 'a javelin is damaged' when you throw it, just apply
the damge
- [+] increase damage bonus with every lore level. +10% each time
(ie. up to 50% at top)
* [+] give accuracy + critical bonus for lore levles too
- [+] typo: Enhance which skill enhance (1 left)? ['=next page,?=toggle]
- [+] Show Pain on botl.
* [+] more staves
- [+] low hitpoint warning for pets (or make them shriek, whine, etc)
- [+] CRITKNOCKDOWN
* [+] FINISH GRIZZLY
- [+] undead should be immune to poison!!
- [+] make code to auto add flags to undead.
- [+] if you ever move a door (ie. airblast), automatically open it.
- [+] young wolf shouldn't be able to open a door!
* [+] You throw a dart at the carpet snake. Your dart misses
you.--More--
- [+] no sprinting while burdneed
- [+] blood should be drawn BELOW stairs
- [+] weilded torch should do 1d4 fire damage (counts as a club)
* [+] The skeleton touches a leather belt then recoils in pain!The
skeleton drops a blessed leather belt.The skeleton puts on a
leather belt.
- [+] don't show "you can cast it at power level xxx" for abilities
* [+] more item randomising
- [+] make grey ooze splatter into acid
- [+] "the vine grabs you" if you walk onto an entangling vine.
- [+] don't start monsters within player's los
- [+] properly randomise sticks to snakes
- [+] stirge
- [+] leech (like stirge but can charge/leap, and slightly more hp /
damage)
- [+] treesnake
- [+] constrictor
- [+] cobra
- [+] stickes to snakes - make caster's weapon revert.
- [+] A something comes into view.
- [+] is invisibility code working properly when you see someone use
the invis spell?
- [+] don't include cosmetic objects in 'you see xxx'
* [+] monsters: don't use spells if you don't have lof.
- [+] pets not following around corners if you move diagonally. fixed a
little.
- [+] summon small animals (2-3 x SZ_SMALL)
* [+] jet of water
- [+] summon medium animals (2-4 x SZ_MEDIUM, wolf etc)
- [+] lightning storm (lightbning everyone within los, and more damage)
- [+] summon large animals (SZ_LARGE, horse, bear etc)
2011-05-03 17:34:07 +10:00
|
|
|
f = lfhasflag(lf, F_NEEDOBFORSPELLS);
|
|
|
|
if (f && !hasob(lf->pack, f->val[0])) {
|
|
|
|
castok = B_FALSE;
|
|
|
|
}
|
|
|
|
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
if (castok) {
|
|
|
|
int i;
|
2011-08-24 18:15:09 +10:00
|
|
|
|
|
|
|
getflags(lf->flags, retflag, &nretflags, F_CANCAST, F_CANWILL, F_NONE);
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
for (i = 0; i < nretflags; i++) {
|
|
|
|
f = retflag[i];
|
2011-03-18 12:25:18 +11:00
|
|
|
if (aispellok(lf, f->val[0], victim, F_AICASTTOATTACK)) {
|
|
|
|
poss[nposs] = f->val[0];
|
|
|
|
nposs++;
|
2011-02-16 05:21:33 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// select a random one
|
|
|
|
if (nposs > 0) {
|
|
|
|
int sel;
|
* [+] F_prone if you're knocked down
- [+] make sheilds very good against projectiles
- [+] make smoke just REDUCE vision, not block it.
- [+] noncorporeal should stop grabs!
* [+] don't say 'a javelin is damaged' when you throw it, just apply
the damge
- [+] increase damage bonus with every lore level. +10% each time
(ie. up to 50% at top)
* [+] give accuracy + critical bonus for lore levles too
- [+] typo: Enhance which skill enhance (1 left)? ['=next page,?=toggle]
- [+] Show Pain on botl.
* [+] more staves
- [+] low hitpoint warning for pets (or make them shriek, whine, etc)
- [+] CRITKNOCKDOWN
* [+] FINISH GRIZZLY
- [+] undead should be immune to poison!!
- [+] make code to auto add flags to undead.
- [+] if you ever move a door (ie. airblast), automatically open it.
- [+] young wolf shouldn't be able to open a door!
* [+] You throw a dart at the carpet snake. Your dart misses
you.--More--
- [+] no sprinting while burdneed
- [+] blood should be drawn BELOW stairs
- [+] weilded torch should do 1d4 fire damage (counts as a club)
* [+] The skeleton touches a leather belt then recoils in pain!The
skeleton drops a blessed leather belt.The skeleton puts on a
leather belt.
- [+] don't show "you can cast it at power level xxx" for abilities
* [+] more item randomising
- [+] make grey ooze splatter into acid
- [+] "the vine grabs you" if you walk onto an entangling vine.
- [+] don't start monsters within player's los
- [+] properly randomise sticks to snakes
- [+] stirge
- [+] leech (like stirge but can charge/leap, and slightly more hp /
damage)
- [+] treesnake
- [+] constrictor
- [+] cobra
- [+] stickes to snakes - make caster's weapon revert.
- [+] A something comes into view.
- [+] is invisibility code working properly when you see someone use
the invis spell?
- [+] don't include cosmetic objects in 'you see xxx'
* [+] monsters: don't use spells if you don't have lof.
- [+] pets not following around corners if you move diagonally. fixed a
little.
- [+] summon small animals (2-3 x SZ_SMALL)
* [+] jet of water
- [+] summon medium animals (2-4 x SZ_MEDIUM, wolf etc)
- [+] lightning storm (lightbning everyone within los, and more damage)
- [+] summon large animals (SZ_LARGE, horse, bear etc)
2011-05-03 17:34:07 +10:00
|
|
|
if (db) {
|
|
|
|
char lfname[BUFLEN];
|
|
|
|
getlfname(lf,lfname);
|
|
|
|
dblog(".oO { %s i have %d valid spells/abils. using one. }", lfname, nposs);
|
|
|
|
}
|
2011-02-16 05:21:33 +11:00
|
|
|
sel = rnd(0,nposs-1);
|
|
|
|
return poss[sel];
|
|
|
|
}
|
|
|
|
|
|
|
|
return OT_NONE;
|
|
|
|
}
|
|
|
|
|
2011-03-16 15:45:46 +11:00
|
|
|
enum OBTYPE aigetfleespell(lifeform_t *lf) {
|
|
|
|
flag_t *f;
|
|
|
|
enum OBTYPE poss[MAXPILEOBS];
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
int nposs = 0,i;
|
2011-03-16 15:45:46 +11:00
|
|
|
int db = B_FALSE;
|
2011-03-18 12:25:18 +11:00
|
|
|
lifeform_t *fleefrom;
|
2011-08-24 18:15:09 +10:00
|
|
|
flag_t *retflag[MAXCANDIDATES];
|
|
|
|
int nretflags;
|
2011-03-16 15:45:46 +11:00
|
|
|
|
|
|
|
if (lfhasflag(lf, F_DEBUG)) {
|
|
|
|
db = B_TRUE;
|
|
|
|
}
|
|
|
|
|
2011-03-18 12:25:18 +11:00
|
|
|
f = lfhasflag(lf, F_FLEEFROM);
|
|
|
|
if (f) {
|
|
|
|
fleefrom = findlf(lf->cell->map, f->val[0]);
|
|
|
|
}
|
|
|
|
|
2011-08-24 18:15:09 +10:00
|
|
|
getflags(lf->flags, retflag, &nretflags, F_CANCAST, F_CANWILL, F_NONE);
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
for (i = 0; i < nretflags; i++) {
|
|
|
|
f = retflag[i];
|
|
|
|
if (aispellok(lf, f->val[0], fleefrom, F_AICASTTOFLEE)) {
|
|
|
|
poss[nposs] = f->val[0];
|
|
|
|
nposs++;
|
2011-03-16 15:45:46 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// select a random one
|
|
|
|
if (nposs > 0) {
|
|
|
|
int sel;
|
|
|
|
sel = rnd(0,nposs-1);
|
|
|
|
return poss[sel];
|
|
|
|
}
|
|
|
|
|
|
|
|
return OT_NONE;
|
|
|
|
}
|
|
|
|
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
// this function assumes that you can't just SEE the target!
|
|
|
|
cell_t *aigetlastknownpos(lifeform_t *lf, lifeform_t *target, int *lastx, int *lasty, int *lastdir) {
|
|
|
|
flag_t *f, *tflag, *bestflag;
|
|
|
|
cell_t *c = NULL;
|
|
|
|
int besttime = -1;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
// check scent/footprints first
|
|
|
|
for (i = 0; i < lf->nlos; i++) {
|
|
|
|
if (hastrailof(lf->los[i]->obpile, target, NA, &tflag, lf)) {
|
|
|
|
if (tflag->lifetime > besttime) {
|
|
|
|
besttime = tflag->lifetime;
|
|
|
|
bestflag = tflag;
|
|
|
|
c = lf->los[i];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (c) {
|
|
|
|
if (lastx) *lastx = c->x;
|
|
|
|
if (lasty) *lasty = c->y;
|
|
|
|
if (lastdir) {
|
|
|
|
// can only obtain direction from footprints if your
|
|
|
|
// tracking skill is high enough.
|
|
|
|
if (bestflag->val[2] == S_SIGHT) {
|
|
|
|
if (getskill(lf, SK_TRACKING) >= PR_SKILLED) {
|
|
|
|
*lastdir = bestflag->val[1];
|
|
|
|
} else {
|
|
|
|
*lastdir = D_NONE;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
*lastdir = bestflag->val[1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return c;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
f = ispetortarget(lf, target);
|
|
|
|
if (f) {
|
|
|
|
c = getcellat(lf->cell->map, f->val[1], f->val[2]);
|
|
|
|
if (c) {
|
|
|
|
if (lastx) *lastx = c->x;
|
|
|
|
if (lasty) *lasty = c->y;
|
|
|
|
if (lastdir && strlen(f->text)) {
|
|
|
|
*lastdir = atoi(f->text);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return c;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (lastx) *lastx = NA;
|
|
|
|
if (lasty) *lasty = NA;
|
|
|
|
if (lastdir) *lastdir = D_NONE;
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
object_t *aigetrangedattack(lifeform_t *lf, enum RANGEATTACK *ra, int *range) {
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
int db = B_FALSE;
|
2011-07-21 11:43:45 +10:00
|
|
|
enum ATTRBRACKET iqb;
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
object_t *o;
|
|
|
|
if (lfhasflag(lf, F_DEBUG)) db = B_TRUE;
|
|
|
|
|
2011-07-21 11:43:45 +10:00
|
|
|
iqb = getattrbracket(getattr(lf, A_IQ), A_IQ, NULL);
|
|
|
|
if (iqb <= IQ_ANIMAL) {
|
|
|
|
// animal and lower intelligence won't use ranged
|
|
|
|
// attacks.
|
|
|
|
if (db) dblog(".oO { no ranged attack due to low iq. }");
|
|
|
|
*ra = RA_NONE;
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
o = getfirearm(lf);
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
if (o && getammo(o)) {
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
if (db) {
|
|
|
|
char gunname[BUFLEN];
|
|
|
|
getobname(o, gunname, o->amt);
|
|
|
|
if (db) dblog(".oO { will fire my gun (%s) at target. }",gunname);
|
|
|
|
}
|
|
|
|
*ra = RA_GUN;
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
*range = getfirearmrange(o);
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
return o;
|
|
|
|
}
|
|
|
|
|
|
|
|
// do we have a wand we can zap?
|
|
|
|
if (lfhasflag(lf, F_HUMANOID) || hasbp(lf, BP_HANDS)) {
|
|
|
|
if (lfhasflag(lf, F_FLEEFROM)) {
|
|
|
|
o = aigetwand(lf, F_AICASTTOFLEE);
|
|
|
|
} else {
|
|
|
|
o = aigetwand(lf, F_AICASTTOATTACK);
|
|
|
|
}
|
|
|
|
if (o) {
|
|
|
|
|
|
|
|
if (db) dblog(".oO { will zap %s instead of moving }", o->type->name);
|
|
|
|
|
|
|
|
*ra = RA_WAND;
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
*range = getvisrange(lf); // ie unlimited
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
return o;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// can we attack by throwing something?
|
|
|
|
if (hasbp(lf, BP_HANDS)) {
|
|
|
|
o = getbestthrowmissile(lf);
|
|
|
|
if (o) {
|
|
|
|
if (db) dblog(".oO { will throw %s at my target }", o->type->name);
|
|
|
|
*ra = RA_THROW;
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
*range = getmaxthrowrange(lf, o);
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
return o;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (db) dblog(".oO { found no ranged attack. }");
|
|
|
|
*ra = RA_NONE;
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
*range = 0;
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2011-03-18 12:25:18 +11:00
|
|
|
void aigetspelltarget(lifeform_t *lf, objecttype_t *spelltype, lifeform_t *victim, lifeform_t **spelllf, cell_t **spellcell, object_t **spellob, enum FLAG purpose) {
|
|
|
|
int specialcase = B_FALSE;
|
|
|
|
flag_t *f;
|
|
|
|
|
|
|
|
// default - at victim.
|
|
|
|
if (spelllf) *spelllf = victim;
|
|
|
|
if (spellcell) *spellcell = victim->cell;
|
|
|
|
if (spellob) *spellob = NULL;
|
|
|
|
|
|
|
|
f = hasflag(spelltype->flags, purpose);
|
|
|
|
if (f) {
|
|
|
|
switch (f->val[0]) {
|
|
|
|
case ST_VICTIM:
|
|
|
|
// at victim.
|
|
|
|
if (spelllf) *spelllf = victim;
|
|
|
|
if (spellcell) *spellcell = victim->cell;
|
|
|
|
if (spellob) *spellob = NULL;
|
|
|
|
break;
|
|
|
|
case ST_ADJSELF: // cast at myself when next to victim
|
|
|
|
if (getcelldist(lf->cell, victim->cell) <= 1) {
|
|
|
|
if (spelllf) *spelllf = lf;
|
|
|
|
if (spellcell) *spellcell = lf->cell;
|
|
|
|
if (spellob) *spellob = NULL;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case ST_ADJVICTIM: // cast at victim when next to victim
|
|
|
|
if (getcelldist(lf->cell, victim->cell) <= 1) {
|
|
|
|
if (spelllf) *spelllf = victim;
|
|
|
|
if (spellcell) *spellcell = victim->cell;
|
|
|
|
if (spellob) *spellob = NULL;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case ST_SELF:
|
|
|
|
if (spelllf) *spelllf = lf;
|
|
|
|
if (spellcell) *spellcell = lf->cell;
|
|
|
|
if (spellob) *spellob = NULL;
|
|
|
|
break;
|
|
|
|
case ST_ANYWHERE:
|
|
|
|
if (spelllf) *spelllf = NULL;
|
|
|
|
if (spellcell) *spellcell = NULL;
|
|
|
|
if (spellob) *spellob = NULL;
|
|
|
|
break;
|
|
|
|
case ST_SPECIAL:
|
|
|
|
specialcase = B_TRUE;
|
|
|
|
break;
|
2011-03-04 12:22:36 +11:00
|
|
|
}
|
2011-03-18 12:25:18 +11:00
|
|
|
|
|
|
|
if (specialcase) {
|
|
|
|
if (spelltype->id == OT_S_TELEKINESIS) {
|
|
|
|
float maxweight;
|
|
|
|
object_t *poss[MAXPILEOBS];
|
|
|
|
int nposs;
|
|
|
|
int i;
|
|
|
|
// find nearest object which can be picked up
|
|
|
|
|
|
|
|
// this is copied out of the telekenesis spell code!
|
|
|
|
maxweight = getlfweight(lf, B_NOOBS) +
|
|
|
|
(getlfweight(lf, B_NOOBS) * (getstatmod(lf, A_IQ) / 100));
|
|
|
|
|
|
|
|
nposs = 0;
|
|
|
|
for (i = 0; i < lf->nlos; i++) {
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
if (lf->los[i] != lf->cell) {
|
|
|
|
object_t *o;
|
|
|
|
for (o = lf->los[i]->obpile->first ; o ; o = o->next) {
|
|
|
|
if (!hasflag(o->flags, F_NOPICKUP) &&
|
|
|
|
getobweight(o) <= maxweight) {
|
|
|
|
poss[nposs] = o;
|
|
|
|
nposs++;
|
|
|
|
if (nposs >= MAXPILEOBS) break;
|
|
|
|
}
|
2011-03-18 12:25:18 +11:00
|
|
|
}
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
if (nposs >= MAXPILEOBS) break;
|
2011-03-18 12:25:18 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
// should always be true since we check this in aispellok
|
|
|
|
if (nposs > 0) {
|
|
|
|
if (spellob) *spellob = poss[rnd(0,nposs-1)];
|
|
|
|
}
|
|
|
|
|
|
|
|
// cast spell at the victim
|
|
|
|
if (spelllf) *spelllf = victim;
|
|
|
|
if (spellcell) *spellcell = victim->cell;
|
2011-03-24 16:09:31 +11:00
|
|
|
} else if (spelltype->id == OT_S_CHARM) {
|
|
|
|
lifeform_t *l;
|
|
|
|
l = getnearbypeaceful(lf);
|
|
|
|
if (l) {
|
|
|
|
if (spelllf) *spelllf = l;
|
|
|
|
if (spellcell) *spellcell = l->cell;
|
|
|
|
if (spellob) *spellob = NULL;
|
|
|
|
}
|
2011-03-18 12:25:18 +11:00
|
|
|
}
|
2011-03-04 12:22:36 +11:00
|
|
|
}
|
2011-02-16 05:21:33 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-03-18 12:25:18 +11:00
|
|
|
object_t *aigetwand(lifeform_t *lf, enum FLAG purpose) {
|
2011-02-16 05:21:33 +11:00
|
|
|
object_t *o;
|
|
|
|
object_t *poss[MAXPILEOBS];
|
|
|
|
int nposs = 0;
|
|
|
|
for (o = lf->pack->first ; o ; o = o->next) {
|
|
|
|
// wand with charges left?
|
|
|
|
if ((o->type->obclass->id == OC_WAND) && (getcharges(o) > 0)) {
|
|
|
|
// do we know how to use it?
|
2011-03-18 12:25:18 +11:00
|
|
|
if (hasflag(o->flags, purpose)) {
|
2011-03-16 15:45:46 +11:00
|
|
|
// TODO: if castatself, check whether we actually need to (ie. healing, invis, etc)
|
2011-02-16 05:21:33 +11:00
|
|
|
poss[nposs] = o;
|
|
|
|
nposs++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (nposs > 0) {
|
|
|
|
return poss[rnd(0,nposs-1)];
|
|
|
|
}
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2011-07-29 08:45:34 +10:00
|
|
|
// returns targetcell flag on success
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
flag_t *aigoto(lifeform_t *lf, cell_t *c, enum MOVEREASON why, void *data, int timelimit) {
|
2011-03-25 12:23:15 +11:00
|
|
|
int db = B_FALSE;
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
char whybuf[BUFLEN];
|
|
|
|
flag_t *f = NULL;
|
2011-03-25 12:23:15 +11:00
|
|
|
|
|
|
|
if (lfhasflag(lf, F_DEBUG)) {
|
|
|
|
db = B_TRUE;
|
|
|
|
}
|
|
|
|
|
* [+] F_prone if you're knocked down
- [+] make sheilds very good against projectiles
- [+] make smoke just REDUCE vision, not block it.
- [+] noncorporeal should stop grabs!
* [+] don't say 'a javelin is damaged' when you throw it, just apply
the damge
- [+] increase damage bonus with every lore level. +10% each time
(ie. up to 50% at top)
* [+] give accuracy + critical bonus for lore levles too
- [+] typo: Enhance which skill enhance (1 left)? ['=next page,?=toggle]
- [+] Show Pain on botl.
* [+] more staves
- [+] low hitpoint warning for pets (or make them shriek, whine, etc)
- [+] CRITKNOCKDOWN
* [+] FINISH GRIZZLY
- [+] undead should be immune to poison!!
- [+] make code to auto add flags to undead.
- [+] if you ever move a door (ie. airblast), automatically open it.
- [+] young wolf shouldn't be able to open a door!
* [+] You throw a dart at the carpet snake. Your dart misses
you.--More--
- [+] no sprinting while burdneed
- [+] blood should be drawn BELOW stairs
- [+] weilded torch should do 1d4 fire damage (counts as a club)
* [+] The skeleton touches a leather belt then recoils in pain!The
skeleton drops a blessed leather belt.The skeleton puts on a
leather belt.
- [+] don't show "you can cast it at power level xxx" for abilities
* [+] more item randomising
- [+] make grey ooze splatter into acid
- [+] "the vine grabs you" if you walk onto an entangling vine.
- [+] don't start monsters within player's los
- [+] properly randomise sticks to snakes
- [+] stirge
- [+] leech (like stirge but can charge/leap, and slightly more hp /
damage)
- [+] treesnake
- [+] constrictor
- [+] cobra
- [+] stickes to snakes - make caster's weapon revert.
- [+] A something comes into view.
- [+] is invisibility code working properly when you see someone use
the invis spell?
- [+] don't include cosmetic objects in 'you see xxx'
* [+] monsters: don't use spells if you don't have lof.
- [+] pets not following around corners if you move diagonally. fixed a
little.
- [+] summon small animals (2-3 x SZ_SMALL)
* [+] jet of water
- [+] summon medium animals (2-4 x SZ_MEDIUM, wolf etc)
- [+] lightning storm (lightbning everyone within los, and more damage)
- [+] summon large animals (SZ_LARGE, horse, bear etc)
2011-05-03 17:34:07 +10:00
|
|
|
|
|
|
|
if (lfhasflagval(lf, F_IGNORECELL, c->x, c->y, NA, NULL)) {
|
|
|
|
char lfname[BUFLEN];
|
|
|
|
getlfname(lf, lfname);
|
2011-05-27 12:50:59 +10:00
|
|
|
if (db) dblog(".oO { %s cannot go to targecell %d,%d due to f_ignorecell flag }", lfname, c->x, c->y);
|
* [+] F_prone if you're knocked down
- [+] make sheilds very good against projectiles
- [+] make smoke just REDUCE vision, not block it.
- [+] noncorporeal should stop grabs!
* [+] don't say 'a javelin is damaged' when you throw it, just apply
the damge
- [+] increase damage bonus with every lore level. +10% each time
(ie. up to 50% at top)
* [+] give accuracy + critical bonus for lore levles too
- [+] typo: Enhance which skill enhance (1 left)? ['=next page,?=toggle]
- [+] Show Pain on botl.
* [+] more staves
- [+] low hitpoint warning for pets (or make them shriek, whine, etc)
- [+] CRITKNOCKDOWN
* [+] FINISH GRIZZLY
- [+] undead should be immune to poison!!
- [+] make code to auto add flags to undead.
- [+] if you ever move a door (ie. airblast), automatically open it.
- [+] young wolf shouldn't be able to open a door!
* [+] You throw a dart at the carpet snake. Your dart misses
you.--More--
- [+] no sprinting while burdneed
- [+] blood should be drawn BELOW stairs
- [+] weilded torch should do 1d4 fire damage (counts as a club)
* [+] The skeleton touches a leather belt then recoils in pain!The
skeleton drops a blessed leather belt.The skeleton puts on a
leather belt.
- [+] don't show "you can cast it at power level xxx" for abilities
* [+] more item randomising
- [+] make grey ooze splatter into acid
- [+] "the vine grabs you" if you walk onto an entangling vine.
- [+] don't start monsters within player's los
- [+] properly randomise sticks to snakes
- [+] stirge
- [+] leech (like stirge but can charge/leap, and slightly more hp /
damage)
- [+] treesnake
- [+] constrictor
- [+] cobra
- [+] stickes to snakes - make caster's weapon revert.
- [+] A something comes into view.
- [+] is invisibility code working properly when you see someone use
the invis spell?
- [+] don't include cosmetic objects in 'you see xxx'
* [+] monsters: don't use spells if you don't have lof.
- [+] pets not following around corners if you move diagonally. fixed a
little.
- [+] summon small animals (2-3 x SZ_SMALL)
* [+] jet of water
- [+] summon medium animals (2-4 x SZ_MEDIUM, wolf etc)
- [+] lightning storm (lightbning everyone within los, and more damage)
- [+] summon large animals (SZ_LARGE, horse, bear etc)
2011-05-03 17:34:07 +10:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2011-03-25 12:23:15 +11:00
|
|
|
if (db) {
|
|
|
|
char lfname[BUFLEN];
|
|
|
|
getlfname(lf, lfname);
|
|
|
|
dblog(".oO { %s going to targecell: %d, %d }", lfname, c->x, c->y);
|
|
|
|
}
|
|
|
|
|
2011-07-29 08:45:34 +10:00
|
|
|
|
|
|
|
|
|
|
|
// kill previous target flags.
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
killflagsofid(lf->flags, F_TARGETLF);
|
2011-03-25 12:23:15 +11:00
|
|
|
killflagsofid(lf->flags, F_TARGETCELL);
|
|
|
|
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
if (why == MR_LF) {
|
|
|
|
sprintf(whybuf, "%d", ((lifeform_t *)data)->id);
|
|
|
|
} else if (why == MR_OB) {
|
|
|
|
sprintf(whybuf, "%ld", ((object_t *)data)->id);
|
|
|
|
} else {
|
|
|
|
strcpy(whybuf, "");
|
|
|
|
}
|
|
|
|
|
2011-03-25 12:23:15 +11:00
|
|
|
if ((timelimit == PERMENANT) || (timelimit == UNLIMITED)) {
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
f = addflag(lf->flags, F_TARGETCELL, c->x, c->y, why, whybuf);
|
2011-03-25 12:23:15 +11:00
|
|
|
} else {
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
f = addtempflag(lf->flags, F_TARGETCELL, c->x, c->y, why, whybuf,timelimit);
|
2011-03-25 12:23:15 +11:00
|
|
|
}
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
return f;
|
2011-03-25 12:23:15 +11:00
|
|
|
}
|
|
|
|
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
flag_t *aihastarget(lifeform_t *lf) {
|
|
|
|
flag_t *f;
|
|
|
|
f = lfhasflag(lf, F_TARGETLF);
|
|
|
|
if (f) return f;
|
|
|
|
f = lfhasflag(lf, F_TARGETCELL);
|
|
|
|
if (f) return f;
|
|
|
|
return NULL;
|
|
|
|
}
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
|
|
|
|
// returns B_FALSE if we did something.
|
|
|
|
// returns B_TRUE if we failed (ie. did nothing)
|
|
|
|
int aimovetolf(lifeform_t *lf, lifeform_t *target, int wantattack) {
|
|
|
|
int db = B_FALSE;
|
|
|
|
int ismaster = B_FALSE;
|
|
|
|
flag_t *targetflag = NULL;
|
|
|
|
|
|
|
|
if (lfhasflag(lf, F_DEBUG)) db = B_TRUE;
|
|
|
|
|
|
|
|
targetflag = lfhasflagval(lf, F_PETOF, target->id, NA, NA, NULL);
|
|
|
|
if (targetflag) {
|
|
|
|
ismaster = B_TRUE;
|
|
|
|
} else {
|
|
|
|
targetflag = lfhasflagval(lf, F_TARGETLF, target->id, NA, NA, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (cansee(lf, target)) {
|
|
|
|
int dist,wantdistmin,wantdistmax;
|
|
|
|
int attackok;
|
|
|
|
enum OBTYPE spell;
|
|
|
|
object_t *rangedob = NULL;
|
|
|
|
enum RANGEATTACK rangedattack = RA_NONE;
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
int shootrange = 0;
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
int movefailed = B_FALSE;
|
|
|
|
|
|
|
|
// pet movement
|
|
|
|
if (ismaster) {
|
|
|
|
if (isresting(target)) {
|
|
|
|
// rest as well.
|
|
|
|
rest(lf, B_TRUE);
|
|
|
|
return B_FALSE;
|
|
|
|
} else if (isadjacent(lf->cell, target->cell)) {
|
|
|
|
if (db) dblog(".oO { i can see my master adjacent - moving randomly }");
|
|
|
|
// move randomly. TODO: just return ??
|
|
|
|
dorandommove(lf, B_NOBADMOVES, B_TRUE);
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
// otherwise fall through to below movement code.
|
|
|
|
}
|
|
|
|
|
|
|
|
// how far away is my target ?
|
|
|
|
dist = getcelldist(lf->cell, target->cell);
|
|
|
|
// how far away do i _want_ to be?
|
|
|
|
getwantdistance(lf,&wantdistmin,&wantdistmax, wantattack);
|
|
|
|
|
|
|
|
// reset F_TARGET lifetime to full.
|
|
|
|
if (targetflag) {
|
|
|
|
if (targetflag->id == F_TARGETLF) {
|
|
|
|
targetflag->lifetime = AI_FOLLOWTIME;
|
|
|
|
}
|
|
|
|
if (db) dblog(".oO { i can see my target (at %d,%d). might move towards it. }",target->cell->x,target->cell->y);
|
|
|
|
// remember their location
|
|
|
|
targetflag->val[1] = target->cell->x;
|
|
|
|
targetflag->val[2] = target->cell->y;
|
|
|
|
}
|
|
|
|
|
|
|
|
// is an attack possible?
|
|
|
|
attackok = B_FALSE;
|
|
|
|
if (wantattack) {
|
|
|
|
if (dist == 1) {
|
|
|
|
attackok = B_TRUE;
|
|
|
|
} else if (!lfhasflag(lf, F_HIDING)) {
|
|
|
|
attackok = B_TRUE;
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
} else if (!lfhasflag(lf, F_FEIGNINGDEATH)) {
|
|
|
|
attackok = B_TRUE;
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (attackok) {
|
|
|
|
objecttype_t *st;
|
|
|
|
// drink boost potions
|
|
|
|
if (!useitemwithflag(lf, F_AIBOOSTITEM)) {
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
// try spells first.
|
|
|
|
// can we attack with spells (ie. ones which target the victim)?
|
|
|
|
// if target is adjacent, we will normally just attack rather than try a spell.
|
|
|
|
spell = aigetattackspell(lf, target);
|
|
|
|
st = findot(spell);
|
|
|
|
if ( (spell != OT_NONE) && // found a valid spell/ability to use
|
|
|
|
((dist != 1) || // there is distance between us and target
|
|
|
|
(st->obclass->id == OC_ABILITY) || // OR this works from adjacent
|
|
|
|
(rnd(1,3) == 1)) // OR random chance of using anyway...
|
|
|
|
) {
|
|
|
|
int spellfailed = B_FALSE;
|
|
|
|
lifeform_t *spelllf = NULL;
|
|
|
|
cell_t *spellcell = NULL;
|
|
|
|
object_t *spellob = NULL;
|
|
|
|
if (db) {
|
|
|
|
dblog(".oO { will cast attack spell: %s }", st->name);
|
|
|
|
}
|
|
|
|
|
|
|
|
// special cases: eg. spells like telekenesis
|
|
|
|
if (spell == OT_S_TELEKINESIS) {
|
|
|
|
float maxweight;
|
|
|
|
object_t *poss[MAXPILEOBS];
|
|
|
|
int nposs;
|
|
|
|
int i;
|
|
|
|
// find nearest object which can be picked up
|
|
|
|
|
|
|
|
// this is copied out of the telekenesis spell code!
|
|
|
|
maxweight = getlfweight(lf, B_NOOBS) +
|
|
|
|
(getlfweight(lf, B_NOOBS) * (getstatmod(lf, A_IQ) / 100));
|
|
|
|
|
|
|
|
nposs = 0;
|
|
|
|
for (i = 0; i < lf->nlos; i++) {
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
if (lf->los[i] != lf->cell) {
|
|
|
|
object_t *o;
|
|
|
|
for (o = lf->los[i]->obpile->first ; o ; o = o->next) {
|
|
|
|
if (!hasflag(o->flags, F_NOPICKUP) &&
|
|
|
|
getobweight(o) <= maxweight) {
|
|
|
|
poss[nposs] = o;
|
|
|
|
nposs++;
|
|
|
|
if (nposs >= MAXPILEOBS) break;
|
|
|
|
}
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
}
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
if (nposs >= MAXPILEOBS) break;
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if (nposs > 0) {
|
|
|
|
spellob = poss[rnd(0,nposs-1)];
|
|
|
|
} else {
|
|
|
|
spellfailed = B_TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
// cast spell at the player
|
|
|
|
spelllf = target;
|
|
|
|
spellcell = target->cell;
|
|
|
|
} else {
|
|
|
|
// pick targets based on spell flags
|
|
|
|
aigetspelltarget(lf, st, target, &spelllf, &spellcell, &spellob, F_AICASTTOATTACK);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (spellfailed) {
|
|
|
|
if (db) dblog(".oO { cast spell/ability failed (1)! }");
|
|
|
|
} else {
|
|
|
|
if (getschool(spell) == SS_ABILITY) {
|
|
|
|
spellfailed = useability(lf, spell, spelllf, spellcell);
|
|
|
|
} else {
|
|
|
|
spellfailed = castspell(lf, spell, spelllf, spellob, spellcell);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (spellfailed) {
|
|
|
|
if (db) dblog(".oO { cast spell/ability tried but failed (2)! reason = %d }", reason);
|
2011-06-09 18:58:35 +10:00
|
|
|
// spell failed. we will keep going through aiturn.
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
} else {
|
|
|
|
// spell succesful
|
2011-07-21 11:43:45 +10:00
|
|
|
|
* [+] operate a candlabrum on the ground confers permenant light
producing!
* [+] bug - water appearing in walls.
- [+] make armour less common in forests
- [+] too many --more--s when enhancing stats. use drawmsg() rather
than more().
- [+] when i go up/down stairs, i keep ending up BESIDE them??
* [+] "you hear footstepszzzzzzzzzzzzzzzzzzzzzzz" (random junk)
- [+] when i start training with a spell active, it gets interrupted.
try again, interrupted again! works 3rd time.
- [+] replace lockpicking with "locksmithing"
- [+] replace 'body control' with 'slow metabolism'
- [+] pit traps broken - fixed now.
- [+] doheading issue in @M still.
* [+] how did zombie get 28 hp? bug in rollhitdice.
- [+] blind a skeleton with light. it gets blind, starts fleeing. but
because it can't SEE you, it stops fleeing instantly!
* [+] getflags(flagpile_t *fp, ... )
- [+] stun spell
- [+] only say "x2" etc if msgbuf we are going to draw still contains
the original text.
- [+] when you level up, your psionic skill determines your chance of
learning a new psionic spell?
- [+] when you teleport/use stairs, get all allies in SIGHT, not
adjacent.
* [+] more traps!
* [+] prisoners in cells
- [+] recruitment: instead of outright refusing to join, just up the
price.
* [+] make spellbook contents depend on map difficulty
- [+] cloak of shadows - give invisibility when in darkness
* [+] limited wish:
- [+] casting WISH reduces max hp by 50%!
- [+] monster ai code: if inventory full (or close), put non-eqiupped
stuff into containers
* [+] infinite loop in firedam to lf
- [+] pot of xp isn't working for monsters. they get no more hp!!
- [+] summonmosnter should jsut relocate existing uniques
- [+] 'planeshift' spell for gods - "unsummon"s them.
* [+] diety - greedgod
* [+] more village contents
2011-07-26 12:01:05 +10:00
|
|
|
if ((spell == OT_A_STEAL) && !lfhasflag(lf, F_NOFLEE)) {
|
2011-07-21 11:43:45 +10:00
|
|
|
// run away for a few turns
|
|
|
|
fleefrom(lf, spelllf, rnd(3,7), B_TRUE);
|
|
|
|
}
|
2011-06-09 18:58:35 +10:00
|
|
|
return B_FALSE;
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// see if we have a ranged attack. if so, adjust wantdist
|
|
|
|
// to maintain distance.
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
rangedob = aigetrangedattack(lf, &rangedattack, &shootrange);
|
2011-05-27 10:41:34 +10:00
|
|
|
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
if (rangedattack != RA_NONE) { // ie if we found a ranged attack
|
|
|
|
// stay out of target's attack range
|
|
|
|
if (wantdistmin < 2) wantdistmin = 2;
|
|
|
|
// and stay within range for our ranged attack
|
|
|
|
if (wantdistmax < wantdistmin) wantdistmax = shootrange;
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
}
|
|
|
|
} // end if attackok
|
|
|
|
|
|
|
|
// move towards the target lf.
|
|
|
|
// try to get to our ideal range from them.
|
|
|
|
if (db) dblog(".oO { i am at distance %d, want to be at %d-%d }", dist, wantdistmin, wantdistmax);
|
|
|
|
if (dist > wantdistmax) {
|
2011-05-27 10:41:34 +10:00
|
|
|
if (db) {
|
|
|
|
dblog(".oO { moving towards target. }");
|
|
|
|
}
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
if (!movetowards(lf, target->cell, DT_ORTH)) {
|
|
|
|
// success
|
|
|
|
return B_FALSE;
|
|
|
|
} else {
|
|
|
|
if (db) dblog(".oO { move towards failed! - reason = %d }",reason);
|
|
|
|
movefailed = B_TRUE;
|
|
|
|
}
|
|
|
|
} else if (dist < wantdistmin) {
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
if (db) dblog(".oO { moving away from target to maintain mindist %d. }", wantdistmin);
|
|
|
|
if (!moveawayfrom(lf, target->cell, DT_ORTH, B_KEEPLOF)) { // maintain LOF
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
// success
|
|
|
|
return B_FALSE;
|
|
|
|
} else {
|
|
|
|
if (db) dblog(".oO { move towards failed! - reason = %d }",reason);
|
|
|
|
movefailed = B_TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// if we got here, we're either at the correct distance or couldn't
|
|
|
|
// move.
|
|
|
|
if (attackok) {
|
|
|
|
// if not adjacent, check for guns, wands, throwing
|
|
|
|
if ( (rangedattack != RA_NONE) &&
|
|
|
|
haslof(lf->cell, target->cell, LOF_NEED, NULL) && // and we have line of fire to them
|
2011-07-21 11:43:45 +10:00
|
|
|
(onein(2) || (getcelldist(lf->cell, target->cell) > 1) )) { // and we're not adjacent to target OR random
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
if (rangedattack == RA_GUN) {
|
|
|
|
setguntarget(lf, target);
|
|
|
|
if (!shoot(lf)) {
|
|
|
|
// succesful
|
|
|
|
return B_FALSE;
|
|
|
|
} else {
|
|
|
|
if (db) dblog(".oO { shoot gun failed! reason = %d }", reason);
|
|
|
|
}
|
|
|
|
} else if (rangedattack == RA_THROW) {
|
|
|
|
// try to throw it!
|
|
|
|
if (!throwat(lf, rangedob, target->cell)) {
|
|
|
|
// succesful
|
|
|
|
return B_FALSE;
|
|
|
|
} else {
|
|
|
|
if (db) dblog(".oO { throw failed! }");
|
|
|
|
}
|
|
|
|
} else if (rangedattack == RA_WAND) {
|
|
|
|
objecttype_t *st;
|
|
|
|
cell_t *zapcell = NULL;
|
|
|
|
st = getlinkspell(rangedob);
|
|
|
|
if (st) {
|
|
|
|
enum FLAG purpose;
|
|
|
|
if (lfhasflag(lf, F_FLEEFROM)) {
|
|
|
|
purpose = F_AICASTTOFLEE;
|
|
|
|
} else {
|
|
|
|
purpose = F_AICASTTOATTACK;
|
|
|
|
}
|
|
|
|
aigetspelltarget(lf, st, target, NULL, &zapcell, NULL, purpose);
|
|
|
|
} else {
|
|
|
|
// no linkspell - just zap it.
|
|
|
|
zapcell = NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
// zap it
|
|
|
|
|
|
|
|
if (!operate(lf, rangedob, zapcell)) {
|
|
|
|
// succesful
|
|
|
|
return B_FALSE;
|
|
|
|
} else {
|
|
|
|
if (db) dblog(".oO { zap failed! }");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} // end if rangedattackok
|
|
|
|
} // end if attackok
|
|
|
|
|
|
|
|
// if we could see our traget, but everything we tried failed (spells, moving and ranged attack),
|
2011-08-06 07:34:35 +10:00
|
|
|
// either rest or move randomly.
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
if (movefailed) {
|
2011-08-06 07:34:35 +10:00
|
|
|
makenoise(lf, N_FRUSTRATED);
|
|
|
|
if (onein(2)) {
|
|
|
|
rest(lf, B_TRUE);
|
|
|
|
} else {
|
|
|
|
if (dorandommove(lf, B_NOBADMOVES, B_FALSE)) {
|
|
|
|
rest(lf, B_TRUE);
|
|
|
|
}
|
|
|
|
}
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// can't see target.
|
|
|
|
// move towards their last known location instead
|
|
|
|
cell_t *targcell;
|
|
|
|
int lastx,lasty;
|
|
|
|
int lastdir;
|
|
|
|
|
|
|
|
targcell = aigetlastknownpos(lf, target, &lastx, &lasty, &lastdir);
|
|
|
|
|
|
|
|
if (targcell) {
|
|
|
|
// are we already AT their last known location?
|
|
|
|
if (targcell == lf->cell) {
|
|
|
|
if (db) dblog(".oO { cannot see target. i am already at their last known loc %d/%d }",lastx, lasty);
|
|
|
|
|
|
|
|
// go in their last known direction.
|
|
|
|
if (lastdir == D_NONE) {
|
|
|
|
if (db) dblog(".oO { i don't know my target's last known movement dir. }");
|
|
|
|
} else {
|
|
|
|
// try going in last known dir
|
|
|
|
if (db) dblog(".oO { trying my master's last known move dir (%s) }",getdirname(lastdir));
|
|
|
|
if (!trymove(lf, lastdir, B_TRUE)) {
|
|
|
|
if (db) dblog(".oO { ...successfully }");
|
|
|
|
// we now don't know their last known dir.
|
|
|
|
if (targetflag) {
|
|
|
|
free(targetflag->text);
|
|
|
|
targetflag->text = strdup("");
|
|
|
|
}
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// not already at their last known cell. try to go there.
|
|
|
|
if (db) dblog(".oO { i cannot see my target. moving to last known loc %d/%d }",lastx,lasty);
|
2011-07-29 08:45:34 +10:00
|
|
|
if (aigoto(lf, targcell, MR_LF, target, PERMENANT)) {
|
|
|
|
if (db) dblog(".oO { successfuly moved towards LKL. }");
|
|
|
|
// success
|
|
|
|
return B_FALSE;
|
|
|
|
} else {
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
if (db) dblog(".oO { aigoto target's last known loc failed! }");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
// we don't know their last known location....
|
|
|
|
if (db) dblog(".oO { go to target's last known loc failed! }");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (db) dblog(".oO { aimovetolf failed. }");
|
|
|
|
// FAILED.
|
|
|
|
return B_TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2011-04-14 09:44:29 +10:00
|
|
|
void aimovetotargetcell(lifeform_t *lf, flag_t *f) {
|
|
|
|
int x,y;
|
|
|
|
cell_t *c;
|
|
|
|
int db = B_FALSE;
|
|
|
|
|
|
|
|
if (lfhasflag(lf, F_DEBUG)) {
|
|
|
|
db = B_TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
x = f->val[0];
|
|
|
|
y = f->val[1];
|
|
|
|
if (db) dblog(".oO { walking from %d,%d towards f_targetcell (%d,%d) ... }", lf->cell->x, lf->cell->y, x, y);
|
|
|
|
c = getcellat(lf->cell->map, x, y);
|
|
|
|
if (c) {
|
2011-06-20 13:16:30 +10:00
|
|
|
// try to move towards the cll
|
2011-04-14 09:44:29 +10:00
|
|
|
if (movetowards(lf, c, DT_ORTH)) {
|
|
|
|
// couldn't move towards it for some reason.
|
|
|
|
// so stop trying.
|
|
|
|
if (db) dblog(".oO { couldn't walk towards f_targetcell. abandoning it. }");
|
|
|
|
killflag(f);
|
|
|
|
// remember NOT to target this one.
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
addignorecell(lf, c);
|
2011-04-14 09:44:29 +10:00
|
|
|
} else {
|
|
|
|
if (db) dblog(".oO { successfully walked towards f_targetcell. arrived at %d,%d }",lf->cell->x, lf->cell->y);
|
|
|
|
// moved towards it.
|
|
|
|
// reset lifetime
|
|
|
|
f->lifetime = AI_FOLLOWTIME;
|
|
|
|
|
|
|
|
// are we there yet?
|
|
|
|
if (lf->cell == c) {
|
2011-07-29 08:45:34 +10:00
|
|
|
// yes. remove target cell
|
2011-04-14 09:44:29 +10:00
|
|
|
if (db) dblog(".oO { arrived at f_targetcell. removing. }");
|
2011-07-29 08:45:34 +10:00
|
|
|
if (f->val[2] == MR_LF) {
|
|
|
|
lifeform_t *targlf;
|
|
|
|
// if we were chasing someone, keep looking
|
|
|
|
// for them.
|
|
|
|
targlf = findlf(lf->cell->map, atoi(f->text));
|
|
|
|
if (targlf) {
|
|
|
|
if (db) dblog(".oO { resuming pursuit of %s }", targlf->race->name);
|
|
|
|
addflag(lf->flags, F_TARGETLF, targlf->id, NA, NA, NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2011-04-14 09:44:29 +10:00
|
|
|
killflag(f);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (db) dblog(".oO { f_targetcell doesn't exist. abandoning. }");
|
|
|
|
// destination doesn't exist!
|
|
|
|
killflag(f);
|
|
|
|
// remember NOT to target this one.
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
addignorecell(lf, c);
|
2011-04-14 09:44:29 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
int aipickup(lifeform_t *lf, object_t *o) {
|
- [+] outdoor bug: at -1,-1. travel south. end up at 0,0!!!
- [+] blink should go to random place within lof, not los
- [+] sunglasses shuld reduce nightvis range, not visrange
* [+] since jolt needs adjacency, make it more powerful
- [+] use colours for spell descriptions
- [+] replace 'call wind' with 'zephyr'
* [+] add vault commonality.
- [+] add more common vaults - roundabout etc
* [+] change "addmonster" to take a string arg instrad of RACEID
- [+] pouring cursed water on blessed scroll didn't work.....
- [+] append "...god of xxx" to rc_god lifeforms
- [+] try to attack with f_pain -> INFINITE LOOP.
- [+] ARMOURPIERCE shouldn't hurt armour
- [+] ghast touchparalyze attack isn't working.
* [+] bug: when praying to gods, ones not in heaven aren't listed.
- [+] when a god apepars..."Hecta appears" x2
- [+] attacking fleeing lf should count as a backstab (if you have the
skill)
* [+] "nothing happens" during god spell effects
* [+] allow hunger to work on monsters
- [+] pressing 'a' on @Magic has weird results.
- [+] bug: got a gift form yumi during combat???? what for? healing?
initial vampire implementation
initial god implementation
- [+] they all start off in "heaven" map.
- [+] gods ahve f_piety. starts at 0
- [+] keep track of piety with each god. starts at 0 for each one.
* [+] let planeshift take you to heaven (for debugging)
* [+] everyone has 'pray' ability.
- [+] modpiety(rid, amt)
* [+] piety vals
* [+] when you pray
- [+] isangry(god) - ie is piety < 0
* [+] if you pray when god is angry, bad!
* [+] once piety gets over 200 or so, praying might give you a gift.
* [+] god_appears(lifeform_t *victim)
- [+] if >=0 (indiff / pleased), goes up to indiff over time(1 per
turn).
- [+] regain through doing actions ... in progress
- [+] lose through doing actions only if you have prayed to this god
before (angergodmaybe)
- [+] special: gods don't need LOS to cast spells.
- [+] gods planeshift away if not doing anything else.
* [+] @g to see your piety levels for each god
- [+] ?g for help on gods
- [+] IN general:
- [+] prey = oneoff effect
- [+] gift = ongoing
* [+] makeangry() vs modpiety
* [+] Yumi - fem,mercy/healing - if you die within the first few turns!
Hecta - partial
Avamon - partial
2011-08-04 04:43:05 +10:00
|
|
|
// special case
|
|
|
|
if ((o->type->id == OT_COFFIN) && (lf->race->id == R_GASCLOUD) && lfhasflagval(lf, F_ORIGRACE, R_VAMPIRE, NA, NA, NULL)) {
|
|
|
|
return rest(lf, B_TRUE);
|
|
|
|
}
|
2011-04-14 09:44:29 +10:00
|
|
|
if (isedible(o)) {
|
|
|
|
return eat(lf, o);
|
|
|
|
} else {
|
* [+] operate a candlabrum on the ground confers permenant light
producing!
* [+] bug - water appearing in walls.
- [+] make armour less common in forests
- [+] too many --more--s when enhancing stats. use drawmsg() rather
than more().
- [+] when i go up/down stairs, i keep ending up BESIDE them??
* [+] "you hear footstepszzzzzzzzzzzzzzzzzzzzzzz" (random junk)
- [+] when i start training with a spell active, it gets interrupted.
try again, interrupted again! works 3rd time.
- [+] replace lockpicking with "locksmithing"
- [+] replace 'body control' with 'slow metabolism'
- [+] pit traps broken - fixed now.
- [+] doheading issue in @M still.
* [+] how did zombie get 28 hp? bug in rollhitdice.
- [+] blind a skeleton with light. it gets blind, starts fleeing. but
because it can't SEE you, it stops fleeing instantly!
* [+] getflags(flagpile_t *fp, ... )
- [+] stun spell
- [+] only say "x2" etc if msgbuf we are going to draw still contains
the original text.
- [+] when you level up, your psionic skill determines your chance of
learning a new psionic spell?
- [+] when you teleport/use stairs, get all allies in SIGHT, not
adjacent.
* [+] more traps!
* [+] prisoners in cells
- [+] recruitment: instead of outright refusing to join, just up the
price.
* [+] make spellbook contents depend on map difficulty
- [+] cloak of shadows - give invisibility when in darkness
* [+] limited wish:
- [+] casting WISH reduces max hp by 50%!
- [+] monster ai code: if inventory full (or close), put non-eqiupped
stuff into containers
* [+] infinite loop in firedam to lf
- [+] pot of xp isn't working for monsters. they get no more hp!!
- [+] summonmosnter should jsut relocate existing uniques
- [+] 'planeshift' spell for gods - "unsummon"s them.
* [+] diety - greedgod
* [+] more village contents
2011-07-26 12:01:05 +10:00
|
|
|
return pickup(lf, o, o->amt, B_TRUE, B_TRUE);
|
2011-04-14 09:44:29 +10:00
|
|
|
}
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
|
* [+] need to set "needredraw" every time we exit:
- [+] make eating take longer - depends on lf size and food sizes
* [+] stop eating if something attacks you!
- [+] change spell code to cope with caster = NULL!!
- [+] why are rooms never more than 2 high
* [+] traps
* [+] eating bug again
* [+] disarm trap skill?
- [+] lots of needredraw bugs
- [+] bug with cursor jumping around lots
- [+] draw darkened visible cells in blue
* [+] shadow cloak
- [+] tree shouldn't prevent resting!
- [+] make plants not attack druids
* [+] cooking
- [+] stop eating if your eating object is no longer with you
* [+] FLAG CORRUPTION BUG
- [+] pet walking back and forth on rotted objects
- [+] purified food shouldn't decay anymore.
- [+] plants shouldn't sleep
- [+] RESTING on statbar not being cleared. the add of f_interrupted
was clearing statdirty before f_asleep got removed in killflag().
- [+] AI: don't eat if in battle
- [+] reduce projectile damage
- [+] show raceclass in statbars
- [+] smoke should make you cough.
- [+] when going up levle, only prompt for spells you can cast?? (don't
show "NOTCASTABLE")
- [+] Your young hawk dies. The stirge releases something!
- [+] sleeping thigns shoudn't follow you up/down stairs.
- [+] when throw'ng an object, don't let it stack (otherwise we might
destroy too much)
- [+] don't draw "c - " for nopickup objects.
- [+] saving throw for traps if you know about it.
- [+] druid - get xp for calming animals
- [+] rogue- get xp for picking locks, disarming traps.
- [+] metal should be immune to most damage types
* [+] make heavy blow need HEAVY weapon, not bashing.
- [+] can't rest/train while levitating!
- [+] gas traps only go off once.
- [+] bug: The goblin throws a boulder at you. A boulder misses you.
- [+] don't give short sword skill to wizard.
- [+] hearing range based on listen skill
* [+] coldness disease:
- [+] CRASH when swapping places
- [+] bug: i can teleport into an impassable object!
- [+] add: "really target (your ally)?"
- [+] give wizards school-based skill instead of manaspike + wildmagic
- [+] LevUp still not being cleared!!!
* [+] why is air wizard being prompted for call lightning at level 2???
* [+] summon weapon (summoning)
- [+] hold portal (mod)
- [+] reveal hidden
- [+] stench (death)
- [+] frostbite (minor but direct cold damage. 1dpower. maxpower 3)
- [+] grease (modific) creates oil in a circle
- [+] fear (death)
- [+] seeinvis (div)
- [+] locate obejct (div) tells you where a seen objcet is.
- [+] swap places (transl) "twiddle"
- [+] fire brand (fire, melee attaks deal fire damage)
- [+] iceedge
- [+] lore (div, temporary knowledge from a particular school?)
- [+] icicle (cold, deals cold dam and knocks enemies away)
* [+] chill (ice, 1d3 damage per exposed body part)
- [+] hail storm (ice, big damage in area)
- [+] wall of ice (creates icy wall, hp based on power)
2011-05-12 11:49:35 +10:00
|
|
|
|
|
|
|
int aipickupok(lifeform_t *lf, object_t *o) {
|
|
|
|
int ok = B_FALSE;
|
2011-06-29 18:48:48 +10:00
|
|
|
|
- [+] outdoor bug: at -1,-1. travel south. end up at 0,0!!!
- [+] blink should go to random place within lof, not los
- [+] sunglasses shuld reduce nightvis range, not visrange
* [+] since jolt needs adjacency, make it more powerful
- [+] use colours for spell descriptions
- [+] replace 'call wind' with 'zephyr'
* [+] add vault commonality.
- [+] add more common vaults - roundabout etc
* [+] change "addmonster" to take a string arg instrad of RACEID
- [+] pouring cursed water on blessed scroll didn't work.....
- [+] append "...god of xxx" to rc_god lifeforms
- [+] try to attack with f_pain -> INFINITE LOOP.
- [+] ARMOURPIERCE shouldn't hurt armour
- [+] ghast touchparalyze attack isn't working.
* [+] bug: when praying to gods, ones not in heaven aren't listed.
- [+] when a god apepars..."Hecta appears" x2
- [+] attacking fleeing lf should count as a backstab (if you have the
skill)
* [+] "nothing happens" during god spell effects
* [+] allow hunger to work on monsters
- [+] pressing 'a' on @Magic has weird results.
- [+] bug: got a gift form yumi during combat???? what for? healing?
initial vampire implementation
initial god implementation
- [+] they all start off in "heaven" map.
- [+] gods ahve f_piety. starts at 0
- [+] keep track of piety with each god. starts at 0 for each one.
* [+] let planeshift take you to heaven (for debugging)
* [+] everyone has 'pray' ability.
- [+] modpiety(rid, amt)
* [+] piety vals
* [+] when you pray
- [+] isangry(god) - ie is piety < 0
* [+] if you pray when god is angry, bad!
* [+] once piety gets over 200 or so, praying might give you a gift.
* [+] god_appears(lifeform_t *victim)
- [+] if >=0 (indiff / pleased), goes up to indiff over time(1 per
turn).
- [+] regain through doing actions ... in progress
- [+] lose through doing actions only if you have prayed to this god
before (angergodmaybe)
- [+] special: gods don't need LOS to cast spells.
- [+] gods planeshift away if not doing anything else.
* [+] @g to see your piety levels for each god
- [+] ?g for help on gods
- [+] IN general:
- [+] prey = oneoff effect
- [+] gift = ongoing
* [+] makeangry() vs modpiety
* [+] Yumi - fem,mercy/healing - if you die within the first few turns!
Hecta - partial
Avamon - partial
2011-08-04 04:43:05 +10:00
|
|
|
// special case
|
|
|
|
if ((o->type->id == OT_COFFIN) && (lf->race->id == R_GASCLOUD) && lfhasflagval(lf, F_ORIGRACE, R_VAMPIRE, NA, NA, NULL)) {
|
|
|
|
return B_TRUE;
|
|
|
|
}
|
|
|
|
|
2011-06-29 18:48:48 +10:00
|
|
|
if (hasflag(o->flags, F_SHOPITEM)) {
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
|
* [+] need to set "needredraw" every time we exit:
- [+] make eating take longer - depends on lf size and food sizes
* [+] stop eating if something attacks you!
- [+] change spell code to cope with caster = NULL!!
- [+] why are rooms never more than 2 high
* [+] traps
* [+] eating bug again
* [+] disarm trap skill?
- [+] lots of needredraw bugs
- [+] bug with cursor jumping around lots
- [+] draw darkened visible cells in blue
* [+] shadow cloak
- [+] tree shouldn't prevent resting!
- [+] make plants not attack druids
* [+] cooking
- [+] stop eating if your eating object is no longer with you
* [+] FLAG CORRUPTION BUG
- [+] pet walking back and forth on rotted objects
- [+] purified food shouldn't decay anymore.
- [+] plants shouldn't sleep
- [+] RESTING on statbar not being cleared. the add of f_interrupted
was clearing statdirty before f_asleep got removed in killflag().
- [+] AI: don't eat if in battle
- [+] reduce projectile damage
- [+] show raceclass in statbars
- [+] smoke should make you cough.
- [+] when going up levle, only prompt for spells you can cast?? (don't
show "NOTCASTABLE")
- [+] Your young hawk dies. The stirge releases something!
- [+] sleeping thigns shoudn't follow you up/down stairs.
- [+] when throw'ng an object, don't let it stack (otherwise we might
destroy too much)
- [+] don't draw "c - " for nopickup objects.
- [+] saving throw for traps if you know about it.
- [+] druid - get xp for calming animals
- [+] rogue- get xp for picking locks, disarming traps.
- [+] metal should be immune to most damage types
* [+] make heavy blow need HEAVY weapon, not bashing.
- [+] can't rest/train while levitating!
- [+] gas traps only go off once.
- [+] bug: The goblin throws a boulder at you. A boulder misses you.
- [+] don't give short sword skill to wizard.
- [+] hearing range based on listen skill
* [+] coldness disease:
- [+] CRASH when swapping places
- [+] bug: i can teleport into an impassable object!
- [+] add: "really target (your ally)?"
- [+] give wizards school-based skill instead of manaspike + wildmagic
- [+] LevUp still not being cleared!!!
* [+] why is air wizard being prompted for call lightning at level 2???
* [+] summon weapon (summoning)
- [+] hold portal (mod)
- [+] reveal hidden
- [+] stench (death)
- [+] frostbite (minor but direct cold damage. 1dpower. maxpower 3)
- [+] grease (modific) creates oil in a circle
- [+] fear (death)
- [+] seeinvis (div)
- [+] locate obejct (div) tells you where a seen objcet is.
- [+] swap places (transl) "twiddle"
- [+] fire brand (fire, melee attaks deal fire damage)
- [+] iceedge
- [+] lore (div, temporary knowledge from a particular school?)
- [+] icicle (cold, deals cold dam and knocks enemies away)
* [+] chill (ice, 1d3 damage per exposed body part)
- [+] hail storm (ice, big damage in area)
- [+] wall of ice (creates icy wall, hp based on power)
2011-05-12 11:49:35 +10:00
|
|
|
if (isedible(o)) {
|
2011-06-20 13:16:30 +10:00
|
|
|
if (caneat(lf, o) && !isinbattle(lf)) {
|
* [+] need to set "needredraw" every time we exit:
- [+] make eating take longer - depends on lf size and food sizes
* [+] stop eating if something attacks you!
- [+] change spell code to cope with caster = NULL!!
- [+] why are rooms never more than 2 high
* [+] traps
* [+] eating bug again
* [+] disarm trap skill?
- [+] lots of needredraw bugs
- [+] bug with cursor jumping around lots
- [+] draw darkened visible cells in blue
* [+] shadow cloak
- [+] tree shouldn't prevent resting!
- [+] make plants not attack druids
* [+] cooking
- [+] stop eating if your eating object is no longer with you
* [+] FLAG CORRUPTION BUG
- [+] pet walking back and forth on rotted objects
- [+] purified food shouldn't decay anymore.
- [+] plants shouldn't sleep
- [+] RESTING on statbar not being cleared. the add of f_interrupted
was clearing statdirty before f_asleep got removed in killflag().
- [+] AI: don't eat if in battle
- [+] reduce projectile damage
- [+] show raceclass in statbars
- [+] smoke should make you cough.
- [+] when going up levle, only prompt for spells you can cast?? (don't
show "NOTCASTABLE")
- [+] Your young hawk dies. The stirge releases something!
- [+] sleeping thigns shoudn't follow you up/down stairs.
- [+] when throw'ng an object, don't let it stack (otherwise we might
destroy too much)
- [+] don't draw "c - " for nopickup objects.
- [+] saving throw for traps if you know about it.
- [+] druid - get xp for calming animals
- [+] rogue- get xp for picking locks, disarming traps.
- [+] metal should be immune to most damage types
* [+] make heavy blow need HEAVY weapon, not bashing.
- [+] can't rest/train while levitating!
- [+] gas traps only go off once.
- [+] bug: The goblin throws a boulder at you. A boulder misses you.
- [+] don't give short sword skill to wizard.
- [+] hearing range based on listen skill
* [+] coldness disease:
- [+] CRASH when swapping places
- [+] bug: i can teleport into an impassable object!
- [+] add: "really target (your ally)?"
- [+] give wizards school-based skill instead of manaspike + wildmagic
- [+] LevUp still not being cleared!!!
* [+] why is air wizard being prompted for call lightning at level 2???
* [+] summon weapon (summoning)
- [+] hold portal (mod)
- [+] reveal hidden
- [+] stench (death)
- [+] frostbite (minor but direct cold damage. 1dpower. maxpower 3)
- [+] grease (modific) creates oil in a circle
- [+] fear (death)
- [+] seeinvis (div)
- [+] locate obejct (div) tells you where a seen objcet is.
- [+] swap places (transl) "twiddle"
- [+] fire brand (fire, melee attaks deal fire damage)
- [+] iceedge
- [+] lore (div, temporary knowledge from a particular school?)
- [+] icicle (cold, deals cold dam and knocks enemies away)
* [+] chill (ice, 1d3 damage per exposed body part)
- [+] hail storm (ice, big damage in area)
- [+] wall of ice (creates icy wall, hp based on power)
2011-05-12 11:49:35 +10:00
|
|
|
ok = B_TRUE;
|
|
|
|
}
|
|
|
|
} else if (canpickup(lf, o, 1)) {
|
|
|
|
ok = B_TRUE;
|
|
|
|
}
|
|
|
|
return ok;
|
|
|
|
}
|
|
|
|
|
2011-04-14 09:44:29 +10:00
|
|
|
int aiobok(lifeform_t *lf, object_t *o, lifeform_t *target) {
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
// non-humanoids can only use food.
|
|
|
|
if (!lfhasflag(lf, F_HUMANOID)) {
|
|
|
|
if (o->type->obclass->id != OC_FOOD) {
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
}
|
2011-04-14 09:44:29 +10:00
|
|
|
switch (o->type->id) {
|
|
|
|
case OT_POT_INVIS:
|
|
|
|
case OT_WAND_INVIS:
|
|
|
|
if (lfhasflag(target, F_INVISIBLE)) {
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case OT_POT_INVULN:
|
|
|
|
if (lfhasflag(target, F_INVULNERABLE)) {
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return B_TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
void aiturn(lifeform_t *lf) {
|
2010-12-07 18:34:26 +11:00
|
|
|
int db = B_FALSE;
|
2011-02-01 06:16:13 +11:00
|
|
|
object_t *curwep,*bestwep, *o;
|
2011-04-08 13:18:54 +10:00
|
|
|
int icanattack = B_FALSE;
|
2011-02-01 06:16:13 +11:00
|
|
|
object_t *curgun,*bestgun;
|
2010-12-02 12:17:54 +11:00
|
|
|
flag_t *f;
|
2011-02-01 06:16:13 +11:00
|
|
|
//flag_t *nextf;
|
|
|
|
// lifeform_t *fleefrom = NULL;
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
lifeform_t *target,*newtarget;
|
2011-02-01 06:16:13 +11:00
|
|
|
enum BODYPART bp;
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
//cell_t *c;
|
2011-04-14 09:44:29 +10:00
|
|
|
lifeform_t *master = NULL;
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
enum ATTRBRACKET iqb;
|
|
|
|
int n,i;
|
2011-08-24 18:15:09 +10:00
|
|
|
flag_t *retflag[MAXCANDIDATES];
|
|
|
|
int nretflags;
|
2011-04-14 09:44:29 +10:00
|
|
|
|
2010-12-07 18:34:26 +11:00
|
|
|
|
2011-02-16 05:21:33 +11:00
|
|
|
/*
|
2010-12-07 18:34:26 +11:00
|
|
|
if (wantdb && haslos(player, lf->cell)) {
|
|
|
|
db = B_TRUE;
|
|
|
|
} else {
|
|
|
|
db = B_FALSE;
|
|
|
|
}
|
2011-02-16 05:21:33 +11:00
|
|
|
*/
|
|
|
|
|
2011-05-27 10:41:34 +10:00
|
|
|
|
2011-02-16 05:21:33 +11:00
|
|
|
if (wantdb && lfhasflag(lf, F_DEBUG)) {
|
|
|
|
db = B_TRUE;
|
|
|
|
} else {
|
|
|
|
db = B_FALSE;
|
|
|
|
}
|
2010-12-07 18:34:26 +11:00
|
|
|
|
2011-02-01 06:16:13 +11:00
|
|
|
if (db) {
|
|
|
|
char lfname[BUFLEN];
|
2011-03-25 12:23:15 +11:00
|
|
|
real_getlfname(lf, lfname, B_FALSE);
|
2011-02-01 06:16:13 +11:00
|
|
|
dblog("AIMOVE: %s", lfname);
|
|
|
|
}
|
2010-12-07 18:34:26 +11:00
|
|
|
|
2010-12-02 12:17:54 +11:00
|
|
|
// if lifeform isn't alive, skip turn
|
|
|
|
if (isdead(lf)) {
|
2010-12-07 18:34:26 +11:00
|
|
|
if (db) dblog(".oO { i am not alive, skipping turn. }");
|
2010-12-02 12:17:54 +11:00
|
|
|
taketime(lf, SPEED_DEAD);
|
|
|
|
return;
|
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
|
2011-04-14 09:44:29 +10:00
|
|
|
///////////////////////////////////////////
|
|
|
|
// info gathering
|
|
|
|
///////////////////////////////////////////
|
|
|
|
// remember our intelligence
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
iqb = getattrbracket(getattr(lf, A_IQ), A_IQ, NULL);
|
2011-04-14 09:44:29 +10:00
|
|
|
|
|
|
|
// are we a pet?
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
f = lfhasflagval(lf, F_PETOF, NA, NA, NA, NULL);
|
|
|
|
if (f && (getallegiance(lf) == AL_FRIENDLY)) {
|
|
|
|
master = findlf(lf->cell->map, f->val[0]);
|
2011-04-14 09:44:29 +10:00
|
|
|
}
|
2010-12-02 12:17:54 +11:00
|
|
|
|
2011-05-07 06:57:44 +10:00
|
|
|
///////////////////////////////////////////////
|
|
|
|
// emergencies
|
|
|
|
///////////////////////////////////////////////
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
if (iqb >= AT_AVERAGE) {
|
2011-05-07 06:57:44 +10:00
|
|
|
if (celldangerous(lf, lf->cell, B_TRUE, NULL)) {
|
|
|
|
// if our cell is dangerous, move away!
|
|
|
|
if (!dorandommove(lf, B_NOBADMOVES, B_FALSE)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2010-12-02 12:17:54 +11:00
|
|
|
|
2011-04-14 09:44:29 +10:00
|
|
|
///////////////////////////////////////////////
|
|
|
|
// housekeeping - weapon changes, drop/pickup,
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
// use items, talk,etc
|
2011-04-14 09:44:29 +10:00
|
|
|
///////////////////////////////////////////////
|
|
|
|
|
2011-08-24 18:15:09 +10:00
|
|
|
if (lfhasflag(lf, F_ISPRISONER) && master && isplayer(master) && cansee(lf, master)) {
|
* [+] operate a candlabrum on the ground confers permenant light
producing!
* [+] bug - water appearing in walls.
- [+] make armour less common in forests
- [+] too many --more--s when enhancing stats. use drawmsg() rather
than more().
- [+] when i go up/down stairs, i keep ending up BESIDE them??
* [+] "you hear footstepszzzzzzzzzzzzzzzzzzzzzzz" (random junk)
- [+] when i start training with a spell active, it gets interrupted.
try again, interrupted again! works 3rd time.
- [+] replace lockpicking with "locksmithing"
- [+] replace 'body control' with 'slow metabolism'
- [+] pit traps broken - fixed now.
- [+] doheading issue in @M still.
* [+] how did zombie get 28 hp? bug in rollhitdice.
- [+] blind a skeleton with light. it gets blind, starts fleeing. but
because it can't SEE you, it stops fleeing instantly!
* [+] getflags(flagpile_t *fp, ... )
- [+] stun spell
- [+] only say "x2" etc if msgbuf we are going to draw still contains
the original text.
- [+] when you level up, your psionic skill determines your chance of
learning a new psionic spell?
- [+] when you teleport/use stairs, get all allies in SIGHT, not
adjacent.
* [+] more traps!
* [+] prisoners in cells
- [+] recruitment: instead of outright refusing to join, just up the
price.
* [+] make spellbook contents depend on map difficulty
- [+] cloak of shadows - give invisibility when in darkness
* [+] limited wish:
- [+] casting WISH reduces max hp by 50%!
- [+] monster ai code: if inventory full (or close), put non-eqiupped
stuff into containers
* [+] infinite loop in firedam to lf
- [+] pot of xp isn't working for monsters. they get no more hp!!
- [+] summonmosnter should jsut relocate existing uniques
- [+] 'planeshift' spell for gods - "unsummon"s them.
* [+] diety - greedgod
* [+] more village contents
2011-07-26 12:01:05 +10:00
|
|
|
if (isoutdoors(lf->cell->map) && pctchance(20)) {
|
|
|
|
object_t *o;
|
|
|
|
say(lf, "Thanks for getting me out!", SV_TALK);
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
o = addobfast(master->pack, OT_MANUAL);
|
* [+] operate a candlabrum on the ground confers permenant light
producing!
* [+] bug - water appearing in walls.
- [+] make armour less common in forests
- [+] too many --more--s when enhancing stats. use drawmsg() rather
than more().
- [+] when i go up/down stairs, i keep ending up BESIDE them??
* [+] "you hear footstepszzzzzzzzzzzzzzzzzzzzzzz" (random junk)
- [+] when i start training with a spell active, it gets interrupted.
try again, interrupted again! works 3rd time.
- [+] replace lockpicking with "locksmithing"
- [+] replace 'body control' with 'slow metabolism'
- [+] pit traps broken - fixed now.
- [+] doheading issue in @M still.
* [+] how did zombie get 28 hp? bug in rollhitdice.
- [+] blind a skeleton with light. it gets blind, starts fleeing. but
because it can't SEE you, it stops fleeing instantly!
* [+] getflags(flagpile_t *fp, ... )
- [+] stun spell
- [+] only say "x2" etc if msgbuf we are going to draw still contains
the original text.
- [+] when you level up, your psionic skill determines your chance of
learning a new psionic spell?
- [+] when you teleport/use stairs, get all allies in SIGHT, not
adjacent.
* [+] more traps!
* [+] prisoners in cells
- [+] recruitment: instead of outright refusing to join, just up the
price.
* [+] make spellbook contents depend on map difficulty
- [+] cloak of shadows - give invisibility when in darkness
* [+] limited wish:
- [+] casting WISH reduces max hp by 50%!
- [+] monster ai code: if inventory full (or close), put non-eqiupped
stuff into containers
* [+] infinite loop in firedam to lf
- [+] pot of xp isn't working for monsters. they get no more hp!!
- [+] summonmosnter should jsut relocate existing uniques
- [+] 'planeshift' spell for gods - "unsummon"s them.
* [+] diety - greedgod
* [+] more village contents
2011-07-26 12:01:05 +10:00
|
|
|
if (o) {
|
|
|
|
char obname[BUFLEN];
|
|
|
|
say(lf, "Here, let me teach you something as a reward.", SV_TALK);
|
|
|
|
getobname(o, obname, o->amt);
|
|
|
|
msgnocap("%c - %s", o->letter, obname);
|
|
|
|
}
|
2011-08-24 18:15:09 +10:00
|
|
|
// no longer an ally
|
* [+] operate a candlabrum on the ground confers permenant light
producing!
* [+] bug - water appearing in walls.
- [+] make armour less common in forests
- [+] too many --more--s when enhancing stats. use drawmsg() rather
than more().
- [+] when i go up/down stairs, i keep ending up BESIDE them??
* [+] "you hear footstepszzzzzzzzzzzzzzzzzzzzzzz" (random junk)
- [+] when i start training with a spell active, it gets interrupted.
try again, interrupted again! works 3rd time.
- [+] replace lockpicking with "locksmithing"
- [+] replace 'body control' with 'slow metabolism'
- [+] pit traps broken - fixed now.
- [+] doheading issue in @M still.
* [+] how did zombie get 28 hp? bug in rollhitdice.
- [+] blind a skeleton with light. it gets blind, starts fleeing. but
because it can't SEE you, it stops fleeing instantly!
* [+] getflags(flagpile_t *fp, ... )
- [+] stun spell
- [+] only say "x2" etc if msgbuf we are going to draw still contains
the original text.
- [+] when you level up, your psionic skill determines your chance of
learning a new psionic spell?
- [+] when you teleport/use stairs, get all allies in SIGHT, not
adjacent.
* [+] more traps!
* [+] prisoners in cells
- [+] recruitment: instead of outright refusing to join, just up the
price.
* [+] make spellbook contents depend on map difficulty
- [+] cloak of shadows - give invisibility when in darkness
* [+] limited wish:
- [+] casting WISH reduces max hp by 50%!
- [+] monster ai code: if inventory full (or close), put non-eqiupped
stuff into containers
* [+] infinite loop in firedam to lf
- [+] pot of xp isn't working for monsters. they get no more hp!!
- [+] summonmosnter should jsut relocate existing uniques
- [+] 'planeshift' spell for gods - "unsummon"s them.
* [+] diety - greedgod
* [+] more village contents
2011-07-26 12:01:05 +10:00
|
|
|
killflagsofid(lf->flags, F_PETOF);
|
2011-08-24 18:15:09 +10:00
|
|
|
killflagsofid(lf->flags, F_ISPRISONER);
|
* [+] operate a candlabrum on the ground confers permenant light
producing!
* [+] bug - water appearing in walls.
- [+] make armour less common in forests
- [+] too many --more--s when enhancing stats. use drawmsg() rather
than more().
- [+] when i go up/down stairs, i keep ending up BESIDE them??
* [+] "you hear footstepszzzzzzzzzzzzzzzzzzzzzzz" (random junk)
- [+] when i start training with a spell active, it gets interrupted.
try again, interrupted again! works 3rd time.
- [+] replace lockpicking with "locksmithing"
- [+] replace 'body control' with 'slow metabolism'
- [+] pit traps broken - fixed now.
- [+] doheading issue in @M still.
* [+] how did zombie get 28 hp? bug in rollhitdice.
- [+] blind a skeleton with light. it gets blind, starts fleeing. but
because it can't SEE you, it stops fleeing instantly!
* [+] getflags(flagpile_t *fp, ... )
- [+] stun spell
- [+] only say "x2" etc if msgbuf we are going to draw still contains
the original text.
- [+] when you level up, your psionic skill determines your chance of
learning a new psionic spell?
- [+] when you teleport/use stairs, get all allies in SIGHT, not
adjacent.
* [+] more traps!
* [+] prisoners in cells
- [+] recruitment: instead of outright refusing to join, just up the
price.
* [+] make spellbook contents depend on map difficulty
- [+] cloak of shadows - give invisibility when in darkness
* [+] limited wish:
- [+] casting WISH reduces max hp by 50%!
- [+] monster ai code: if inventory full (or close), put non-eqiupped
stuff into containers
* [+] infinite loop in firedam to lf
- [+] pot of xp isn't working for monsters. they get no more hp!!
- [+] summonmosnter should jsut relocate existing uniques
- [+] 'planeshift' spell for gods - "unsummon"s them.
* [+] diety - greedgod
* [+] more village contents
2011-07-26 12:01:05 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// too many objects?
|
|
|
|
i = countobs(lf->pack, B_FALSE);
|
|
|
|
if (i >= (MAXPILEOBS - 5)) {
|
|
|
|
object_t *container;
|
|
|
|
// get largest container with space
|
|
|
|
container = getbestcontainer(lf->pack);
|
|
|
|
if (container) {
|
|
|
|
object_t *o;
|
|
|
|
// find object which will fit
|
|
|
|
for (o = lf->pack->first ; o ; o = o->next) {
|
|
|
|
if ((o != container) && !isequipped(o) && obfits(o, container->contents)) {
|
|
|
|
// put it in.
|
|
|
|
moveob(o, container->contents, ALL);
|
|
|
|
if (cansee(player, lf)) {
|
|
|
|
char obname[BUFLEN];
|
|
|
|
char lfname[BUFLEN];
|
|
|
|
char containername[BUFLEN];
|
|
|
|
// announce
|
|
|
|
getobname(o, obname, o->amt);
|
|
|
|
getobname(container, containername, 1);
|
|
|
|
getlfname(lf, lfname);
|
|
|
|
msg("%s puts %s into %s.", lfname, obname, containername);
|
|
|
|
}
|
|
|
|
// timetime
|
|
|
|
taketime(lf, getactspeed(lf));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
// talking
|
|
|
|
f = lfhasflag(lf, F_RANDOMTALKPCT);
|
|
|
|
if (f) {
|
|
|
|
if (pctchance(f->val[0])) {
|
|
|
|
flag_t *poss[MAXCANDIDATES];
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
int nposs = 0,i;
|
|
|
|
|
2011-08-24 18:15:09 +10:00
|
|
|
getflags(lf->flags, retflag, &nretflags, F_RANDOMTALK, F_NONE);
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
for (i = 0; i < nretflags; i++) {
|
|
|
|
poss[nposs++] = retflag[i];
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
}
|
|
|
|
if (nposs) {
|
|
|
|
int vol;
|
|
|
|
f = poss[rnd(0,nposs-1)];
|
|
|
|
vol = rnd(f->val[1], f->val[2]);
|
|
|
|
sayphrase(lf, f->val[0], vol, NA, NULL);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-04-14 09:44:29 +10:00
|
|
|
///////////////////////////////////////////////
|
|
|
|
// healing
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
|
* [+] F_prone if you're knocked down
- [+] make sheilds very good against projectiles
- [+] make smoke just REDUCE vision, not block it.
- [+] noncorporeal should stop grabs!
* [+] don't say 'a javelin is damaged' when you throw it, just apply
the damge
- [+] increase damage bonus with every lore level. +10% each time
(ie. up to 50% at top)
* [+] give accuracy + critical bonus for lore levles too
- [+] typo: Enhance which skill enhance (1 left)? ['=next page,?=toggle]
- [+] Show Pain on botl.
* [+] more staves
- [+] low hitpoint warning for pets (or make them shriek, whine, etc)
- [+] CRITKNOCKDOWN
* [+] FINISH GRIZZLY
- [+] undead should be immune to poison!!
- [+] make code to auto add flags to undead.
- [+] if you ever move a door (ie. airblast), automatically open it.
- [+] young wolf shouldn't be able to open a door!
* [+] You throw a dart at the carpet snake. Your dart misses
you.--More--
- [+] no sprinting while burdneed
- [+] blood should be drawn BELOW stairs
- [+] weilded torch should do 1d4 fire damage (counts as a club)
* [+] The skeleton touches a leather belt then recoils in pain!The
skeleton drops a blessed leather belt.The skeleton puts on a
leather belt.
- [+] don't show "you can cast it at power level xxx" for abilities
* [+] more item randomising
- [+] make grey ooze splatter into acid
- [+] "the vine grabs you" if you walk onto an entangling vine.
- [+] don't start monsters within player's los
- [+] properly randomise sticks to snakes
- [+] stirge
- [+] leech (like stirge but can charge/leap, and slightly more hp /
damage)
- [+] treesnake
- [+] constrictor
- [+] cobra
- [+] stickes to snakes - make caster's weapon revert.
- [+] A something comes into view.
- [+] is invisibility code working properly when you see someone use
the invis spell?
- [+] don't include cosmetic objects in 'you see xxx'
* [+] monsters: don't use spells if you don't have lof.
- [+] pets not following around corners if you move diagonally. fixed a
little.
- [+] summon small animals (2-3 x SZ_SMALL)
* [+] jet of water
- [+] summon medium animals (2-4 x SZ_MEDIUM, wolf etc)
- [+] lightning storm (lightbning everyone within los, and more damage)
- [+] summon large animals (SZ_LARGE, horse, bear etc)
2011-05-03 17:34:07 +10:00
|
|
|
// special cases
|
|
|
|
if ((lf->race->id == R_STIRGE) || (lf->race->id == R_LEECH)) {
|
|
|
|
if (ispeaceful(lf)) {
|
|
|
|
int sleepval = 18;
|
|
|
|
|
|
|
|
if (modcounter(lf->flags, 1) >= sleepval) {
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
// we say that this ISNT on purpose, because otherwise
|
|
|
|
// we'll wake up as soon as we're healed. in this case
|
|
|
|
// we actually want to sleep forever (or until woken).
|
|
|
|
if (!gotosleep(lf, B_FALSE)) {
|
|
|
|
// force this since when not on purpose, gotosleep wont
|
|
|
|
// take time.
|
|
|
|
taketime(lf, getactspeed(lf));
|
|
|
|
return; // success
|
|
|
|
}
|
* [+] F_prone if you're knocked down
- [+] make sheilds very good against projectiles
- [+] make smoke just REDUCE vision, not block it.
- [+] noncorporeal should stop grabs!
* [+] don't say 'a javelin is damaged' when you throw it, just apply
the damge
- [+] increase damage bonus with every lore level. +10% each time
(ie. up to 50% at top)
* [+] give accuracy + critical bonus for lore levles too
- [+] typo: Enhance which skill enhance (1 left)? ['=next page,?=toggle]
- [+] Show Pain on botl.
* [+] more staves
- [+] low hitpoint warning for pets (or make them shriek, whine, etc)
- [+] CRITKNOCKDOWN
* [+] FINISH GRIZZLY
- [+] undead should be immune to poison!!
- [+] make code to auto add flags to undead.
- [+] if you ever move a door (ie. airblast), automatically open it.
- [+] young wolf shouldn't be able to open a door!
* [+] You throw a dart at the carpet snake. Your dart misses
you.--More--
- [+] no sprinting while burdneed
- [+] blood should be drawn BELOW stairs
- [+] weilded torch should do 1d4 fire damage (counts as a club)
* [+] The skeleton touches a leather belt then recoils in pain!The
skeleton drops a blessed leather belt.The skeleton puts on a
leather belt.
- [+] don't show "you can cast it at power level xxx" for abilities
* [+] more item randomising
- [+] make grey ooze splatter into acid
- [+] "the vine grabs you" if you walk onto an entangling vine.
- [+] don't start monsters within player's los
- [+] properly randomise sticks to snakes
- [+] stirge
- [+] leech (like stirge but can charge/leap, and slightly more hp /
damage)
- [+] treesnake
- [+] constrictor
- [+] cobra
- [+] stickes to snakes - make caster's weapon revert.
- [+] A something comes into view.
- [+] is invisibility code working properly when you see someone use
the invis spell?
- [+] don't include cosmetic objects in 'you see xxx'
* [+] monsters: don't use spells if you don't have lof.
- [+] pets not following around corners if you move diagonally. fixed a
little.
- [+] summon small animals (2-3 x SZ_SMALL)
* [+] jet of water
- [+] summon medium animals (2-4 x SZ_MEDIUM, wolf etc)
- [+] lightning storm (lightbning everyone within los, and more damage)
- [+] summon large animals (SZ_LARGE, horse, bear etc)
2011-05-03 17:34:07 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
// feigning death with enemies in sight?
|
|
|
|
if (lfhasflag(lf, F_FEIGNINGDEATH) && !safetorest(lf)) {
|
|
|
|
// just wait...
|
|
|
|
taketime(lf, getactspeed(lf));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
- [+] outdoor bug: at -1,-1. travel south. end up at 0,0!!!
- [+] blink should go to random place within lof, not los
- [+] sunglasses shuld reduce nightvis range, not visrange
* [+] since jolt needs adjacency, make it more powerful
- [+] use colours for spell descriptions
- [+] replace 'call wind' with 'zephyr'
* [+] add vault commonality.
- [+] add more common vaults - roundabout etc
* [+] change "addmonster" to take a string arg instrad of RACEID
- [+] pouring cursed water on blessed scroll didn't work.....
- [+] append "...god of xxx" to rc_god lifeforms
- [+] try to attack with f_pain -> INFINITE LOOP.
- [+] ARMOURPIERCE shouldn't hurt armour
- [+] ghast touchparalyze attack isn't working.
* [+] bug: when praying to gods, ones not in heaven aren't listed.
- [+] when a god apepars..."Hecta appears" x2
- [+] attacking fleeing lf should count as a backstab (if you have the
skill)
* [+] "nothing happens" during god spell effects
* [+] allow hunger to work on monsters
- [+] pressing 'a' on @Magic has weird results.
- [+] bug: got a gift form yumi during combat???? what for? healing?
initial vampire implementation
initial god implementation
- [+] they all start off in "heaven" map.
- [+] gods ahve f_piety. starts at 0
- [+] keep track of piety with each god. starts at 0 for each one.
* [+] let planeshift take you to heaven (for debugging)
* [+] everyone has 'pray' ability.
- [+] modpiety(rid, amt)
* [+] piety vals
* [+] when you pray
- [+] isangry(god) - ie is piety < 0
* [+] if you pray when god is angry, bad!
* [+] once piety gets over 200 or so, praying might give you a gift.
* [+] god_appears(lifeform_t *victim)
- [+] if >=0 (indiff / pleased), goes up to indiff over time(1 per
turn).
- [+] regain through doing actions ... in progress
- [+] lose through doing actions only if you have prayed to this god
before (angergodmaybe)
- [+] special: gods don't need LOS to cast spells.
- [+] gods planeshift away if not doing anything else.
* [+] @g to see your piety levels for each god
- [+] ?g for help on gods
- [+] IN general:
- [+] prey = oneoff effect
- [+] gift = ongoing
* [+] makeangry() vs modpiety
* [+] Yumi - fem,mercy/healing - if you die within the first few turns!
Hecta - partial
Avamon - partial
2011-08-04 04:43:05 +10:00
|
|
|
// hurt gods planeshift away
|
|
|
|
if (lf->race->raceclass->id == RC_GOD) {
|
|
|
|
if (gethppct(lf) <= 10) {
|
|
|
|
if (!castspell(lf, OT_S_PLANESHIFT, lf, NULL, lf->cell)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-04-14 09:44:29 +10:00
|
|
|
// need to heal?
|
|
|
|
if (lf->hp < (lf->maxhp/2)) {
|
|
|
|
if (!useitemwithflag(lf, F_AIHEALITEM)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// burdened?
|
|
|
|
if (isburdened(lf)) {
|
|
|
|
object_t *o,*heaviest = NULL;
|
|
|
|
float hevweight = 0;
|
|
|
|
|
|
|
|
if (db) dblog(".oO { i am burdened }");
|
|
|
|
|
|
|
|
// drop our heaviest non-equipped object
|
|
|
|
for (o = lf->pack->first ; o ; o = o->next) {
|
|
|
|
if (!isequipped(o)) {
|
|
|
|
float thisweight;
|
|
|
|
thisweight = getobweight(o);
|
|
|
|
if (thisweight > hevweight) {
|
|
|
|
hevweight = thisweight;
|
|
|
|
heaviest = o;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (heaviest) {
|
|
|
|
if (db) {
|
|
|
|
char obname[BUFLEN];
|
|
|
|
getobname(o, obname, ALL);
|
|
|
|
dblog(".oO { i will drop %s to lower my burden }", obname);
|
|
|
|
}
|
|
|
|
if (!drop(heaviest, ALL)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
if (db) dblog(".oO { drop failed! }");
|
|
|
|
}
|
|
|
|
if (db) dblog(".oO { couldn't drop anything }");
|
|
|
|
}
|
|
|
|
|
2010-12-07 18:34:26 +11:00
|
|
|
// do we have a better weapon we could use?
|
|
|
|
curwep = getweapon(lf);
|
|
|
|
bestwep = getbestweapon(lf);
|
|
|
|
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
if ((curwep != bestwep) && !isfirearm(curwep)) {
|
2010-12-07 18:34:26 +11:00
|
|
|
if (db) dblog(".oO { i have a better weapon than my current one (%s > %s) }",bestwep->type->name, curwep ? curwep->type->name : "nothing");
|
|
|
|
// weild better one
|
2011-02-01 06:16:13 +11:00
|
|
|
if (!weild(lf, bestwep)) return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// do we have a better firearm ?
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
curgun = getfirearm(lf);
|
2011-06-29 18:48:48 +10:00
|
|
|
if (curwep && hasflag(curwep->flags, F_TWOHANDED)) {
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
// we are using a two handed weapon. don't
|
|
|
|
// check for guns.
|
2011-06-29 18:48:48 +10:00
|
|
|
} else {
|
|
|
|
bestgun = getbestfirearm(lf);
|
2011-02-01 06:16:13 +11:00
|
|
|
|
2011-06-29 18:48:48 +10:00
|
|
|
if (curgun != bestgun) {
|
|
|
|
if (db) dblog(".oO { i have a better gun than my current one (%s > %s) }",bestgun->type->name, curgun ? curgun->type->name : "nothing");
|
|
|
|
// weild better one
|
|
|
|
if (!weild(lf, bestgun)) return;
|
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
}
|
|
|
|
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
// do we have ammo for an empty gun?
|
2011-03-04 12:22:36 +11:00
|
|
|
if (curgun) {
|
|
|
|
object_t *curammo;
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
curammo = getammo(curgun);
|
2011-03-04 12:22:36 +11:00
|
|
|
if (!curammo) {
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
o = getrandomammo(lf);
|
|
|
|
if (o && !loadfirearm(lf, curgun, o)) {
|
|
|
|
// success
|
|
|
|
return;
|
2011-03-04 12:22:36 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-02-01 06:16:13 +11:00
|
|
|
// do we have better armour?
|
|
|
|
for (bp = BP_RIGHTHAND ; bp < MAXBODYPARTS; bp++) {
|
|
|
|
object_t *curarm;
|
|
|
|
curarm = getarmour(lf, bp);
|
|
|
|
// do we have a better one?
|
|
|
|
for (o = lf->pack->first ; o ; o = o->next) {
|
2011-04-01 10:54:44 +11:00
|
|
|
if (canwear(lf, o, BP_NONE) && isbetterarmourthan(o, curarm)) {
|
2011-02-01 06:16:13 +11:00
|
|
|
// wear this armour instead
|
|
|
|
if (!wear(lf, o)) return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// now check whetehr we have ANY weapon
|
2011-04-08 13:18:54 +10:00
|
|
|
if (curwep || lfhasflag(lf, F_HASATTACK)) {
|
|
|
|
icanattack = B_TRUE;
|
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
|
|
|
|
// before attacking targets,
|
|
|
|
// look for any object which we _covet_.
|
|
|
|
// ie. if we covet something, we will pick it up
|
|
|
|
// instead of attacking our target.
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
if (!lfhasflag(lf, F_HIDING) && !lfhasflag(lf, F_FEIGNINGDEATH)) {
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
if (db) dblog(".oO { looking for covetted objects... }");
|
2011-06-09 18:58:35 +10:00
|
|
|
if (lookforobs(lf)) {
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
if (db) dblog(".oO { found covetted object. returning. }");
|
|
|
|
return;
|
|
|
|
}
|
2010-12-07 18:34:26 +11:00
|
|
|
}
|
2011-04-14 09:44:29 +10:00
|
|
|
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
// attacks
|
|
|
|
///////////////////////////////////////////////
|
2011-06-09 18:58:35 +10:00
|
|
|
target = gettargetlf(lf);
|
2010-12-07 18:34:26 +11:00
|
|
|
// do we already have a target we are attacking?
|
2011-06-09 18:58:35 +10:00
|
|
|
if (target) {
|
|
|
|
if (db) dblog(".oO { i have a target: lfid %d (%s). }", target->id, target->race->name);
|
|
|
|
// aquatic grabbers will try to drag their prey into the water
|
|
|
|
if (lfhasflagval(lf, F_GRABBING, target->id, NA, NA, NULL) && isaquatic(lf) ) {
|
|
|
|
if ( hasobwithflag(lf->cell->obpile, F_DEEPWATER) &&
|
|
|
|
!hasobwithflag(target->cell->obpile, F_DEEPWATER)) {
|
|
|
|
// move away!
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
if (!moveawayfrom(lf, target->cell, DT_ORTH, B_FALSE)) {
|
2011-06-09 18:58:35 +10:00
|
|
|
return;
|
2011-05-27 10:41:34 +10:00
|
|
|
}
|
|
|
|
}
|
2011-06-09 18:58:35 +10:00
|
|
|
}
|
|
|
|
// try to move towards them.
|
|
|
|
if (!aimovetolf(lf, target, B_TRUE)) {
|
|
|
|
// success
|
|
|
|
return;
|
2010-12-02 12:17:54 +11:00
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
}
|
|
|
|
|
2011-05-20 06:30:58 +10:00
|
|
|
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
// generic pre-movement actions.
|
|
|
|
///////////////////////////////////////////////
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
// need light?
|
2011-05-20 06:30:58 +10:00
|
|
|
if (!haslos(lf, lf->cell)) {
|
|
|
|
object_t *lamp;
|
|
|
|
lamp = hasobwithflagval(lf->pack, F_ACTIVATECONFER, F_PRODUCESLIGHT, NA, NA, NULL);
|
|
|
|
if (lamp && !isactivated(lamp)) {
|
|
|
|
if (db) dblog(".oO { it's dark and i have an inactive light source (%s) }", lamp->type->name);
|
|
|
|
if (!operate(lf, lamp, NULL)) {
|
|
|
|
if (db) dblog(".oO { successfully turned it on. }");
|
|
|
|
return;
|
|
|
|
} else {
|
|
|
|
if (db) dblog(".oO { failed to turn it on. }");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
// ally needs ammo?
|
|
|
|
for (i = 0; i < lf->nlos; i++) {
|
|
|
|
cell_t *c;
|
|
|
|
c = lf->los[i];
|
|
|
|
if (c->lf && (c->lf != lf) && areallies(lf, c->lf)) {
|
|
|
|
object_t *gun;
|
|
|
|
gun = getfirearm(c->lf);
|
|
|
|
if (gun && !getammo(gun)) {
|
|
|
|
object_t *o;
|
|
|
|
for (o = lf->pack->first ; o ; o = o->next) {
|
|
|
|
if (isammofor(o->type, gun) ) {
|
|
|
|
if (getcelldist(lf->cell, c) <= getmaxthrowrange(lf, o)) {
|
|
|
|
// throw it to them!
|
|
|
|
if (!throwat(lf, o, c)) {
|
|
|
|
// success
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2011-05-20 06:30:58 +10:00
|
|
|
|
2011-04-14 09:44:29 +10:00
|
|
|
///////////////////////////////////////////////
|
|
|
|
// movement
|
|
|
|
///////////////////////////////////////////////
|
2011-02-01 06:16:13 +11:00
|
|
|
// do we have a target cell?
|
|
|
|
f = hasflag(lf->flags, F_TARGETCELL);
|
|
|
|
if (f) {
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
int valid = B_TRUE;
|
|
|
|
cell_t *c;
|
|
|
|
// is it still valid?
|
|
|
|
c = getcellat(lf->cell->map, f->val[0], f->val[1]);
|
|
|
|
if (!c) {
|
|
|
|
valid = B_FALSE;
|
|
|
|
} else if (f->val[2] == MR_LF) {
|
|
|
|
lifeform_t *who;
|
|
|
|
who = findlf(lf->cell->map, atoi(f->text));
|
|
|
|
// lf doesn't exist?
|
|
|
|
if (!who) {
|
|
|
|
valid = B_FALSE;
|
|
|
|
} else if (cansee(lf, who) && (lf->cell != c)) {
|
|
|
|
// can see them and they're not where we are going?
|
|
|
|
valid = B_FALSE;
|
|
|
|
}
|
|
|
|
} else if (f->val[2] == MR_OB) {
|
|
|
|
object_t *what;
|
|
|
|
what = findobidinmap(lf->cell->map, atol(f->text));
|
|
|
|
if (!what) {
|
|
|
|
valid = B_FALSE;
|
|
|
|
} else if (haslos(lf, c) && (what->pile->where != c)) {
|
|
|
|
// if you can see the cell and object isn't there anymore
|
|
|
|
valid = B_FALSE;
|
2011-06-20 13:16:30 +10:00
|
|
|
} else if (c->lf && !areenemies(lf, c->lf) && haslos(lf, c) && (getcelldist(lf->cell, c) == 1)) {
|
|
|
|
// can see a non-enemy on top of the object, and we are adjacent
|
|
|
|
valid = B_FALSE;
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (valid) {
|
|
|
|
aimovetotargetcell(lf, f);
|
|
|
|
} else {
|
|
|
|
killflag(f);
|
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2011-04-14 09:44:29 +10:00
|
|
|
///////////////////////////////////////////////
|
|
|
|
// look for something to do (objects, things
|
|
|
|
// to attack, etc)
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
|
2011-02-01 06:16:13 +11:00
|
|
|
// look for any object which we want
|
2011-06-09 18:58:35 +10:00
|
|
|
/*
|
* [+] need to set "needredraw" every time we exit:
- [+] make eating take longer - depends on lf size and food sizes
* [+] stop eating if something attacks you!
- [+] change spell code to cope with caster = NULL!!
- [+] why are rooms never more than 2 high
* [+] traps
* [+] eating bug again
* [+] disarm trap skill?
- [+] lots of needredraw bugs
- [+] bug with cursor jumping around lots
- [+] draw darkened visible cells in blue
* [+] shadow cloak
- [+] tree shouldn't prevent resting!
- [+] make plants not attack druids
* [+] cooking
- [+] stop eating if your eating object is no longer with you
* [+] FLAG CORRUPTION BUG
- [+] pet walking back and forth on rotted objects
- [+] purified food shouldn't decay anymore.
- [+] plants shouldn't sleep
- [+] RESTING on statbar not being cleared. the add of f_interrupted
was clearing statdirty before f_asleep got removed in killflag().
- [+] AI: don't eat if in battle
- [+] reduce projectile damage
- [+] show raceclass in statbars
- [+] smoke should make you cough.
- [+] when going up levle, only prompt for spells you can cast?? (don't
show "NOTCASTABLE")
- [+] Your young hawk dies. The stirge releases something!
- [+] sleeping thigns shoudn't follow you up/down stairs.
- [+] when throw'ng an object, don't let it stack (otherwise we might
destroy too much)
- [+] don't draw "c - " for nopickup objects.
- [+] saving throw for traps if you know about it.
- [+] druid - get xp for calming animals
- [+] rogue- get xp for picking locks, disarming traps.
- [+] metal should be immune to most damage types
* [+] make heavy blow need HEAVY weapon, not bashing.
- [+] can't rest/train while levitating!
- [+] gas traps only go off once.
- [+] bug: The goblin throws a boulder at you. A boulder misses you.
- [+] don't give short sword skill to wizard.
- [+] hearing range based on listen skill
* [+] coldness disease:
- [+] CRASH when swapping places
- [+] bug: i can teleport into an impassable object!
- [+] add: "really target (your ally)?"
- [+] give wizards school-based skill instead of manaspike + wildmagic
- [+] LevUp still not being cleared!!!
* [+] why is air wizard being prompted for call lightning at level 2???
* [+] summon weapon (summoning)
- [+] hold portal (mod)
- [+] reveal hidden
- [+] stench (death)
- [+] frostbite (minor but direct cold damage. 1dpower. maxpower 3)
- [+] grease (modific) creates oil in a circle
- [+] fear (death)
- [+] seeinvis (div)
- [+] locate obejct (div) tells you where a seen objcet is.
- [+] swap places (transl) "twiddle"
- [+] fire brand (fire, melee attaks deal fire damage)
- [+] iceedge
- [+] lore (div, temporary knowledge from a particular school?)
- [+] icicle (cold, deals cold dam and knocks enemies away)
* [+] chill (ice, 1d3 damage per exposed body part)
- [+] hail storm (ice, big damage in area)
- [+] wall of ice (creates icy wall, hp based on power)
2011-05-12 11:49:35 +10:00
|
|
|
if (!isinbattle(lf)) {
|
|
|
|
if (db) dblog(".oO { looking for any ob which i want. }");
|
|
|
|
if (lookforobs(lf, B_ANY)) {
|
|
|
|
if (db) dblog(".oO { found ob that i want. returning. }");
|
|
|
|
return;
|
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
}
|
2011-06-09 18:58:35 +10:00
|
|
|
*/
|
2011-02-01 06:16:13 +11:00
|
|
|
|
|
|
|
// not attacking anyone in particular
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
if (db) dblog(".oO { i do not have a target or can't move towards it. looking for one. }");
|
|
|
|
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
// shopkeepers will return to their shops
|
|
|
|
if (hasjob(lf, J_SHOPKEEPER)) {
|
|
|
|
f = lfhasflag(lf, F_OWNSSHOP);
|
|
|
|
if (f) {
|
|
|
|
int myshop;
|
|
|
|
cell_t *where;
|
|
|
|
myshop = f->val[0];
|
|
|
|
// find the closest cell of my shop
|
|
|
|
where = getclosestroomcell(lf, myshop);
|
|
|
|
// move towards my shop. note that if the player leaves then
|
|
|
|
// re-enters this map, they will find that we have instantly
|
|
|
|
// teleported there (see mapentereffects).
|
|
|
|
if (aigoto(lf, where, MR_OTHER, NULL, PERMENANT)) {
|
|
|
|
// success
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
- [+] outdoor bug: at -1,-1. travel south. end up at 0,0!!!
- [+] blink should go to random place within lof, not los
- [+] sunglasses shuld reduce nightvis range, not visrange
* [+] since jolt needs adjacency, make it more powerful
- [+] use colours for spell descriptions
- [+] replace 'call wind' with 'zephyr'
* [+] add vault commonality.
- [+] add more common vaults - roundabout etc
* [+] change "addmonster" to take a string arg instrad of RACEID
- [+] pouring cursed water on blessed scroll didn't work.....
- [+] append "...god of xxx" to rc_god lifeforms
- [+] try to attack with f_pain -> INFINITE LOOP.
- [+] ARMOURPIERCE shouldn't hurt armour
- [+] ghast touchparalyze attack isn't working.
* [+] bug: when praying to gods, ones not in heaven aren't listed.
- [+] when a god apepars..."Hecta appears" x2
- [+] attacking fleeing lf should count as a backstab (if you have the
skill)
* [+] "nothing happens" during god spell effects
* [+] allow hunger to work on monsters
- [+] pressing 'a' on @Magic has weird results.
- [+] bug: got a gift form yumi during combat???? what for? healing?
initial vampire implementation
initial god implementation
- [+] they all start off in "heaven" map.
- [+] gods ahve f_piety. starts at 0
- [+] keep track of piety with each god. starts at 0 for each one.
* [+] let planeshift take you to heaven (for debugging)
* [+] everyone has 'pray' ability.
- [+] modpiety(rid, amt)
* [+] piety vals
* [+] when you pray
- [+] isangry(god) - ie is piety < 0
* [+] if you pray when god is angry, bad!
* [+] once piety gets over 200 or so, praying might give you a gift.
* [+] god_appears(lifeform_t *victim)
- [+] if >=0 (indiff / pleased), goes up to indiff over time(1 per
turn).
- [+] regain through doing actions ... in progress
- [+] lose through doing actions only if you have prayed to this god
before (angergodmaybe)
- [+] special: gods don't need LOS to cast spells.
- [+] gods planeshift away if not doing anything else.
* [+] @g to see your piety levels for each god
- [+] ?g for help on gods
- [+] IN general:
- [+] prey = oneoff effect
- [+] gift = ongoing
* [+] makeangry() vs modpiety
* [+] Yumi - fem,mercy/healing - if you die within the first few turns!
Hecta - partial
Avamon - partial
2011-08-04 04:43:05 +10:00
|
|
|
}
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
// look for any race which we hate
|
|
|
|
newtarget = NULL;
|
|
|
|
for (n = 0; n < lf->nlos; n++) {
|
|
|
|
lifeform_t *who;
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
if (lf->los[n] != lf->cell) {
|
|
|
|
who = lf->los[n]->lf;
|
|
|
|
if (who && cansee(lf, who)) {
|
|
|
|
if (lfhasflagval(lf, F_HATESRACE, who->race->id, NA, NA, NULL) ||
|
|
|
|
lfhasflagval(lf, F_HATESRACE, who->race->baseid, NA, NA, NULL) ) {
|
|
|
|
if (db) dblog(".oO { found a hated target - lfid %d (%s) ! }",who->id, who->race->name);
|
|
|
|
newtarget = who;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!newtarget) {
|
|
|
|
// now look for enemies
|
|
|
|
for (n = 0; n < lf->nlos; n++) {
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
if (lf->los[n] != lf->cell) {
|
|
|
|
lifeform_t *who;
|
|
|
|
who = lf->los[n]->lf;
|
|
|
|
if (who && cansee(lf, who)) {
|
|
|
|
if (areenemies(lf, who)) {
|
|
|
|
if (db) dblog(".oO { found an enemy target - lfid %d (%s) ! }",who->id, who->race->name);
|
|
|
|
newtarget = who;
|
|
|
|
break;
|
|
|
|
}
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (newtarget) {
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
if (aiattack(lf, newtarget, AI_FOLLOWTIME)) {
|
|
|
|
// failed for some reason. maybe target was feigning
|
|
|
|
// death?
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
} else {
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
// then move towards them...
|
|
|
|
if (db) dblog(".oO { moving towards my new target }");
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
if (icanattack) {
|
|
|
|
if (!movetowards(lf, newtarget->cell, DT_ORTH)) return;
|
|
|
|
} else {
|
|
|
|
if (db) dblog(".oO { won't move towards target - i have no weapon. }");
|
|
|
|
}
|
|
|
|
}
|
- [+] outdoor bug: at -1,-1. travel south. end up at 0,0!!!
- [+] blink should go to random place within lof, not los
- [+] sunglasses shuld reduce nightvis range, not visrange
* [+] since jolt needs adjacency, make it more powerful
- [+] use colours for spell descriptions
- [+] replace 'call wind' with 'zephyr'
* [+] add vault commonality.
- [+] add more common vaults - roundabout etc
* [+] change "addmonster" to take a string arg instrad of RACEID
- [+] pouring cursed water on blessed scroll didn't work.....
- [+] append "...god of xxx" to rc_god lifeforms
- [+] try to attack with f_pain -> INFINITE LOOP.
- [+] ARMOURPIERCE shouldn't hurt armour
- [+] ghast touchparalyze attack isn't working.
* [+] bug: when praying to gods, ones not in heaven aren't listed.
- [+] when a god apepars..."Hecta appears" x2
- [+] attacking fleeing lf should count as a backstab (if you have the
skill)
* [+] "nothing happens" during god spell effects
* [+] allow hunger to work on monsters
- [+] pressing 'a' on @Magic has weird results.
- [+] bug: got a gift form yumi during combat???? what for? healing?
initial vampire implementation
initial god implementation
- [+] they all start off in "heaven" map.
- [+] gods ahve f_piety. starts at 0
- [+] keep track of piety with each god. starts at 0 for each one.
* [+] let planeshift take you to heaven (for debugging)
* [+] everyone has 'pray' ability.
- [+] modpiety(rid, amt)
* [+] piety vals
* [+] when you pray
- [+] isangry(god) - ie is piety < 0
* [+] if you pray when god is angry, bad!
* [+] once piety gets over 200 or so, praying might give you a gift.
* [+] god_appears(lifeform_t *victim)
- [+] if >=0 (indiff / pleased), goes up to indiff over time(1 per
turn).
- [+] regain through doing actions ... in progress
- [+] lose through doing actions only if you have prayed to this god
before (angergodmaybe)
- [+] special: gods don't need LOS to cast spells.
- [+] gods planeshift away if not doing anything else.
* [+] @g to see your piety levels for each god
- [+] ?g for help on gods
- [+] IN general:
- [+] prey = oneoff effect
- [+] gift = ongoing
* [+] makeangry() vs modpiety
* [+] Yumi - fem,mercy/healing - if you die within the first few turns!
Hecta - partial
Avamon - partial
2011-08-04 04:43:05 +10:00
|
|
|
} else {
|
|
|
|
// god with no targets?
|
|
|
|
if (lf->race->raceclass->id == RC_GOD) {
|
|
|
|
if (onein(6)) {
|
|
|
|
// gods will planeshift away
|
|
|
|
if (!castspell(lf, OT_S_PLANESHIFT, lf, NULL, lf->cell)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
}
|
2010-12-02 12:17:54 +11:00
|
|
|
|
2011-04-14 09:44:29 +10:00
|
|
|
///////////////////////////////////////////////
|
|
|
|
// training
|
|
|
|
///////////////////////////////////////////////
|
2011-02-16 05:21:33 +11:00
|
|
|
|
2011-03-16 15:45:46 +11:00
|
|
|
// need to train skills?
|
2011-04-14 09:44:29 +10:00
|
|
|
if (readytotrain(lf)) {
|
|
|
|
if (safetorest(lf)) {
|
2011-03-16 15:45:46 +11:00
|
|
|
// special case - monsters don't need to actually rest to gain
|
|
|
|
// skills, although they DO still need to wait until the player
|
|
|
|
// is out of sight.
|
|
|
|
enhanceskills(lf);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-06-20 13:16:30 +10:00
|
|
|
// do we have armour which needs repairing?
|
|
|
|
if (getskill(lf, SK_ARMOUR) >= PR_SKILLED) {
|
|
|
|
if (db) dblog(".oO { do i have any armour to repair? }");
|
|
|
|
// just try to use the ability - it'll fail if we have nothing
|
|
|
|
// which we can repair.
|
|
|
|
if (!useability(lf, OT_A_REPAIR, NULL, NULL)) {
|
|
|
|
if (db) dblog(".oO { yes - done. }");
|
|
|
|
// success
|
|
|
|
return;
|
|
|
|
} else {
|
|
|
|
if (db) dblog(".oO { no armour to repair. }");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-04-14 09:44:29 +10:00
|
|
|
// pet movement - note that pets will only rest if their
|
|
|
|
// master is resting. the normal rest code underneath this section
|
|
|
|
// will never be called.
|
|
|
|
if (master) {
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
//lifeform_t *master;
|
|
|
|
//master = findlf(lf->cell->map, mf->val[0]);
|
|
|
|
if (!aimovetolf(lf, master, B_FALSE)) {
|
|
|
|
// success
|
2011-04-11 15:05:45 +10:00
|
|
|
return;
|
|
|
|
}
|
2011-04-14 09:44:29 +10:00
|
|
|
}
|
|
|
|
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
// resting / healing
|
|
|
|
///////////////////////////////////////////////
|
|
|
|
|
|
|
|
// need to heal?
|
|
|
|
if (needstorest(lf, NULL) && safetorest(lf)) {
|
|
|
|
if (db) dblog(".oO { resting to heal }");
|
|
|
|
rest(lf, B_TRUE);
|
2011-04-11 15:05:45 +10:00
|
|
|
return;
|
|
|
|
}
|
2010-12-02 12:17:54 +11:00
|
|
|
|
2011-04-14 09:44:29 +10:00
|
|
|
// DEFAULT - try to move in a random direction
|
|
|
|
if (db) dblog(".oO { default - moving randomly }");
|
2011-05-07 06:57:44 +10:00
|
|
|
dorandommove(lf, B_NOBADMOVES, B_TRUE); // this function will call rest() if we cant move
|
2011-02-01 06:16:13 +11:00
|
|
|
}
|
|
|
|
|
2011-04-14 09:44:29 +10:00
|
|
|
|
2011-02-01 06:16:13 +11:00
|
|
|
|
2011-03-18 12:25:18 +11:00
|
|
|
// is the spell 'spellid' okay for AI lifeform 'lf' to cast at 'victim', for given purpose.
|
|
|
|
// purpose could be F_AICASTTOFLEE or F_ATCASTTOATTACK
|
|
|
|
int aispellok(lifeform_t *lf, enum OBTYPE spellid, lifeform_t *victim, enum FLAG purpose) {
|
|
|
|
objecttype_t *ot;
|
|
|
|
flag_t *f;
|
|
|
|
int db = B_FALSE;
|
|
|
|
int ok = B_FALSE;
|
|
|
|
int specialcase = B_FALSE;
|
2011-03-24 16:09:31 +11:00
|
|
|
int specificcheckok = B_FALSE;
|
* [+] F_prone if you're knocked down
- [+] make sheilds very good against projectiles
- [+] make smoke just REDUCE vision, not block it.
- [+] noncorporeal should stop grabs!
* [+] don't say 'a javelin is damaged' when you throw it, just apply
the damge
- [+] increase damage bonus with every lore level. +10% each time
(ie. up to 50% at top)
* [+] give accuracy + critical bonus for lore levles too
- [+] typo: Enhance which skill enhance (1 left)? ['=next page,?=toggle]
- [+] Show Pain on botl.
* [+] more staves
- [+] low hitpoint warning for pets (or make them shriek, whine, etc)
- [+] CRITKNOCKDOWN
* [+] FINISH GRIZZLY
- [+] undead should be immune to poison!!
- [+] make code to auto add flags to undead.
- [+] if you ever move a door (ie. airblast), automatically open it.
- [+] young wolf shouldn't be able to open a door!
* [+] You throw a dart at the carpet snake. Your dart misses
you.--More--
- [+] no sprinting while burdneed
- [+] blood should be drawn BELOW stairs
- [+] weilded torch should do 1d4 fire damage (counts as a club)
* [+] The skeleton touches a leather belt then recoils in pain!The
skeleton drops a blessed leather belt.The skeleton puts on a
leather belt.
- [+] don't show "you can cast it at power level xxx" for abilities
* [+] more item randomising
- [+] make grey ooze splatter into acid
- [+] "the vine grabs you" if you walk onto an entangling vine.
- [+] don't start monsters within player's los
- [+] properly randomise sticks to snakes
- [+] stirge
- [+] leech (like stirge but can charge/leap, and slightly more hp /
damage)
- [+] treesnake
- [+] constrictor
- [+] cobra
- [+] stickes to snakes - make caster's weapon revert.
- [+] A something comes into view.
- [+] is invisibility code working properly when you see someone use
the invis spell?
- [+] don't include cosmetic objects in 'you see xxx'
* [+] monsters: don't use spells if you don't have lof.
- [+] pets not following around corners if you move diagonally. fixed a
little.
- [+] summon small animals (2-3 x SZ_SMALL)
* [+] jet of water
- [+] summon medium animals (2-4 x SZ_MEDIUM, wolf etc)
- [+] lightning storm (lightbning everyone within los, and more damage)
- [+] summon large animals (SZ_LARGE, horse, bear etc)
2011-05-03 17:34:07 +10:00
|
|
|
int needlos = B_TRUE;
|
|
|
|
enum LOFTYPE needlof = LOF_NEED;
|
2011-03-18 12:25:18 +11:00
|
|
|
|
|
|
|
if (lfhasflag(lf, F_DEBUG)) {
|
|
|
|
db = B_TRUE;
|
|
|
|
}
|
|
|
|
ot = findot(spellid);
|
|
|
|
|
* [+] F_prone if you're knocked down
- [+] make sheilds very good against projectiles
- [+] make smoke just REDUCE vision, not block it.
- [+] noncorporeal should stop grabs!
* [+] don't say 'a javelin is damaged' when you throw it, just apply
the damge
- [+] increase damage bonus with every lore level. +10% each time
(ie. up to 50% at top)
* [+] give accuracy + critical bonus for lore levles too
- [+] typo: Enhance which skill enhance (1 left)? ['=next page,?=toggle]
- [+] Show Pain on botl.
* [+] more staves
- [+] low hitpoint warning for pets (or make them shriek, whine, etc)
- [+] CRITKNOCKDOWN
* [+] FINISH GRIZZLY
- [+] undead should be immune to poison!!
- [+] make code to auto add flags to undead.
- [+] if you ever move a door (ie. airblast), automatically open it.
- [+] young wolf shouldn't be able to open a door!
* [+] You throw a dart at the carpet snake. Your dart misses
you.--More--
- [+] no sprinting while burdneed
- [+] blood should be drawn BELOW stairs
- [+] weilded torch should do 1d4 fire damage (counts as a club)
* [+] The skeleton touches a leather belt then recoils in pain!The
skeleton drops a blessed leather belt.The skeleton puts on a
leather belt.
- [+] don't show "you can cast it at power level xxx" for abilities
* [+] more item randomising
- [+] make grey ooze splatter into acid
- [+] "the vine grabs you" if you walk onto an entangling vine.
- [+] don't start monsters within player's los
- [+] properly randomise sticks to snakes
- [+] stirge
- [+] leech (like stirge but can charge/leap, and slightly more hp /
damage)
- [+] treesnake
- [+] constrictor
- [+] cobra
- [+] stickes to snakes - make caster's weapon revert.
- [+] A something comes into view.
- [+] is invisibility code working properly when you see someone use
the invis spell?
- [+] don't include cosmetic objects in 'you see xxx'
* [+] monsters: don't use spells if you don't have lof.
- [+] pets not following around corners if you move diagonally. fixed a
little.
- [+] summon small animals (2-3 x SZ_SMALL)
* [+] jet of water
- [+] summon medium animals (2-4 x SZ_MEDIUM, wolf etc)
- [+] lightning storm (lightbning everyone within los, and more damage)
- [+] summon large animals (SZ_LARGE, horse, bear etc)
2011-05-03 17:34:07 +10:00
|
|
|
if (ot) {
|
|
|
|
flag_t *f;
|
|
|
|
f = hasflag(ot->flags, F_LOSLOF);
|
|
|
|
if (f) {
|
|
|
|
needlos = f->val[0];
|
|
|
|
needlof = f->val[1];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-03-18 12:25:18 +11:00
|
|
|
// enough mp etc?
|
|
|
|
if (!cancast(lf, spellid, NULL)) {
|
|
|
|
if (db) {
|
|
|
|
char why[BUFLEN];
|
|
|
|
if (reason == E_NOMP) {
|
|
|
|
strcpy(why, "not enough mp");
|
|
|
|
} else if (reason == E_TOOPOWERFUL) {
|
|
|
|
strcpy(why, "spell too powerful");
|
|
|
|
} else if (reason == E_NOTREADY) {
|
|
|
|
strcpy(why, "abil not ready");
|
2011-03-22 18:06:28 +11:00
|
|
|
} else if (reason == E_NEEDGRAB) {
|
|
|
|
strcpy(why, "needs grab");
|
2011-03-18 12:25:18 +11:00
|
|
|
} else {
|
|
|
|
strcpy(why, "unknown reason");
|
|
|
|
}
|
2011-03-22 18:06:28 +11:00
|
|
|
if (db) {
|
|
|
|
if (ot) {
|
|
|
|
dblog(".oO { can't cast %s right now (%s) (mpcost=%d, i have %d) }",
|
|
|
|
ot ? ot->name : "?unkownspell?", why,
|
|
|
|
getmpcost(lf, ot->id), lf->mp);
|
|
|
|
} else {
|
|
|
|
dblog(".oO { can't cast ?unknownspell? right now }");
|
|
|
|
}
|
2011-03-18 12:25:18 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
|
2011-03-22 18:06:28 +11:00
|
|
|
// boost spell already active?
|
|
|
|
if (hasflag(ot->flags, F_ONGOING)) {
|
|
|
|
if (lfhasflagval(lf, F_BOOSTSPELL, ot->id, NA, NA, NULL)) {
|
|
|
|
if (db) {
|
|
|
|
dblog(".oO { can't cast %s - it is already active.", ot ? ot->name : "?unkownspell?");
|
|
|
|
}
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-03-18 12:25:18 +11:00
|
|
|
f = hasflag(ot->flags, purpose);
|
|
|
|
if (f) {
|
2011-08-06 07:34:35 +10:00
|
|
|
if ((f->val[1] == NA) || pctchance(f->val[1])) {
|
|
|
|
int range;
|
|
|
|
switch (f->val[0]) {
|
|
|
|
case ST_VICTIM:
|
|
|
|
range = getspellrange(spellid, getspellpower(lf, spellid));
|
|
|
|
if ((range == UNLIMITED) || (getcelldist(lf->cell, victim->cell) <= range)) {
|
|
|
|
if (db) {
|
|
|
|
dblog(".oO { spell possibility: %s }", ot ? ot->name : "?unkownspell?");
|
|
|
|
}
|
|
|
|
ok = B_TRUE;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
case ST_SELF:
|
|
|
|
case ST_ANYWHERE:
|
2011-03-18 12:25:18 +11:00
|
|
|
if (db) {
|
|
|
|
dblog(".oO { spell possibility: %s }", ot ? ot->name : "?unkownspell?");
|
|
|
|
}
|
|
|
|
ok = B_TRUE;
|
2011-08-06 07:34:35 +10:00
|
|
|
break;
|
|
|
|
case ST_ADJVICTIM:
|
|
|
|
if (getcelldist(lf->cell,victim->cell) == 1) {
|
|
|
|
if (ot->id == OT_A_GRAB) {
|
|
|
|
if (lfhasflag(lf, F_GRABBING) || lfhasflag(lf, F_GRABBEDBY) ||
|
|
|
|
lfhasflag(victim, F_GRABBING) || lfhasflag(victim, F_GRABBEDBY)) {
|
|
|
|
} else {
|
|
|
|
ok = B_TRUE;
|
|
|
|
}
|
|
|
|
} else if (ot->id == OT_A_CRUSH) {
|
|
|
|
// can only crush if you first grab something
|
|
|
|
if (lfhasflag(lf, F_GRABBING)) {
|
|
|
|
ok = B_TRUE;
|
|
|
|
}
|
|
|
|
} else if (ot->id == OT_A_SUCKBLOOD) {
|
|
|
|
// must attach first
|
|
|
|
if (lfhasflag(lf, F_ATTACHEDTO)) {
|
|
|
|
ok = B_TRUE;
|
|
|
|
}
|
2011-03-18 12:25:18 +11:00
|
|
|
} else {
|
|
|
|
ok = B_TRUE;
|
|
|
|
}
|
2011-08-06 07:34:35 +10:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case ST_ADJSELF:
|
|
|
|
if (getcelldist(lf->cell,victim->cell) == 1) {
|
2011-03-18 12:25:18 +11:00
|
|
|
ok = B_TRUE;
|
|
|
|
}
|
2011-08-06 07:34:35 +10:00
|
|
|
break;
|
|
|
|
case ST_SPECIAL:
|
|
|
|
specialcase = B_TRUE;
|
|
|
|
break;
|
|
|
|
}
|
* [+] F_prone if you're knocked down
- [+] make sheilds very good against projectiles
- [+] make smoke just REDUCE vision, not block it.
- [+] noncorporeal should stop grabs!
* [+] don't say 'a javelin is damaged' when you throw it, just apply
the damge
- [+] increase damage bonus with every lore level. +10% each time
(ie. up to 50% at top)
* [+] give accuracy + critical bonus for lore levles too
- [+] typo: Enhance which skill enhance (1 left)? ['=next page,?=toggle]
- [+] Show Pain on botl.
* [+] more staves
- [+] low hitpoint warning for pets (or make them shriek, whine, etc)
- [+] CRITKNOCKDOWN
* [+] FINISH GRIZZLY
- [+] undead should be immune to poison!!
- [+] make code to auto add flags to undead.
- [+] if you ever move a door (ie. airblast), automatically open it.
- [+] young wolf shouldn't be able to open a door!
* [+] You throw a dart at the carpet snake. Your dart misses
you.--More--
- [+] no sprinting while burdneed
- [+] blood should be drawn BELOW stairs
- [+] weilded torch should do 1d4 fire damage (counts as a club)
* [+] The skeleton touches a leather belt then recoils in pain!The
skeleton drops a blessed leather belt.The skeleton puts on a
leather belt.
- [+] don't show "you can cast it at power level xxx" for abilities
* [+] more item randomising
- [+] make grey ooze splatter into acid
- [+] "the vine grabs you" if you walk onto an entangling vine.
- [+] don't start monsters within player's los
- [+] properly randomise sticks to snakes
- [+] stirge
- [+] leech (like stirge but can charge/leap, and slightly more hp /
damage)
- [+] treesnake
- [+] constrictor
- [+] cobra
- [+] stickes to snakes - make caster's weapon revert.
- [+] A something comes into view.
- [+] is invisibility code working properly when you see someone use
the invis spell?
- [+] don't include cosmetic objects in 'you see xxx'
* [+] monsters: don't use spells if you don't have lof.
- [+] pets not following around corners if you move diagonally. fixed a
little.
- [+] summon small animals (2-3 x SZ_SMALL)
* [+] jet of water
- [+] summon medium animals (2-4 x SZ_MEDIUM, wolf etc)
- [+] lightning storm (lightbning everyone within los, and more damage)
- [+] summon large animals (SZ_LARGE, horse, bear etc)
2011-05-03 17:34:07 +10:00
|
|
|
|
2011-08-06 07:34:35 +10:00
|
|
|
// now check for line of sight / fire
|
|
|
|
switch (f->val[0]) {
|
|
|
|
case ST_VICTIM:
|
|
|
|
case ST_ADJVICTIM:
|
|
|
|
if (needlos && (!victim || !cansee(lf, victim)) ) {
|
|
|
|
if (db) dblog(".oO { cant cast %s - no LOS to victim }", ot ? ot->name : "?unkownspell?");
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
if (needlof && !haslof(lf->cell, victim->cell, needlof, NULL) ) {
|
|
|
|
if (db) dblog(".oO { cant cast %s - no LOF to victim }", ot ? ot->name : "?unkownspell?");
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
} else { // failed pctchance for spell
|
|
|
|
if (db) dblog(".oO { failed pct check for casting %s }", ot ? ot->name : "?unkownspell?");
|
|
|
|
return B_FALSE;
|
* [+] F_prone if you're knocked down
- [+] make sheilds very good against projectiles
- [+] make smoke just REDUCE vision, not block it.
- [+] noncorporeal should stop grabs!
* [+] don't say 'a javelin is damaged' when you throw it, just apply
the damge
- [+] increase damage bonus with every lore level. +10% each time
(ie. up to 50% at top)
* [+] give accuracy + critical bonus for lore levles too
- [+] typo: Enhance which skill enhance (1 left)? ['=next page,?=toggle]
- [+] Show Pain on botl.
* [+] more staves
- [+] low hitpoint warning for pets (or make them shriek, whine, etc)
- [+] CRITKNOCKDOWN
* [+] FINISH GRIZZLY
- [+] undead should be immune to poison!!
- [+] make code to auto add flags to undead.
- [+] if you ever move a door (ie. airblast), automatically open it.
- [+] young wolf shouldn't be able to open a door!
* [+] You throw a dart at the carpet snake. Your dart misses
you.--More--
- [+] no sprinting while burdneed
- [+] blood should be drawn BELOW stairs
- [+] weilded torch should do 1d4 fire damage (counts as a club)
* [+] The skeleton touches a leather belt then recoils in pain!The
skeleton drops a blessed leather belt.The skeleton puts on a
leather belt.
- [+] don't show "you can cast it at power level xxx" for abilities
* [+] more item randomising
- [+] make grey ooze splatter into acid
- [+] "the vine grabs you" if you walk onto an entangling vine.
- [+] don't start monsters within player's los
- [+] properly randomise sticks to snakes
- [+] stirge
- [+] leech (like stirge but can charge/leap, and slightly more hp /
damage)
- [+] treesnake
- [+] constrictor
- [+] cobra
- [+] stickes to snakes - make caster's weapon revert.
- [+] A something comes into view.
- [+] is invisibility code working properly when you see someone use
the invis spell?
- [+] don't include cosmetic objects in 'you see xxx'
* [+] monsters: don't use spells if you don't have lof.
- [+] pets not following around corners if you move diagonally. fixed a
little.
- [+] summon small animals (2-3 x SZ_SMALL)
* [+] jet of water
- [+] summon medium animals (2-4 x SZ_MEDIUM, wolf etc)
- [+] lightning storm (lightbning everyone within los, and more damage)
- [+] summon large animals (SZ_LARGE, horse, bear etc)
2011-05-03 17:34:07 +10:00
|
|
|
}
|
2011-03-18 12:25:18 +11:00
|
|
|
} else {
|
|
|
|
// invalid spell for this purpose
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
if (db) dblog(".oO { cant cast %s - not valid for given purpose }", ot ? ot->name : "?unkownspell?");
|
2011-03-18 12:25:18 +11:00
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (specialcase) {
|
|
|
|
if (ot->id == OT_S_TELEKINESIS) {
|
|
|
|
int i,nposs;
|
|
|
|
float maxweight;
|
|
|
|
maxweight = getlfweight(lf, B_NOOBS) +
|
|
|
|
(getlfweight(lf, B_NOOBS) * (getstatmod(lf, A_IQ) / 100));
|
|
|
|
|
|
|
|
nposs = 0;
|
|
|
|
for (i = 0; i < lf->nlos; i++) {
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
if (lf->los[i] != lf->cell) {
|
|
|
|
object_t *o;
|
|
|
|
for (o = lf->los[i]->obpile->first ; o ; o = o->next) {
|
|
|
|
if (!hasflag(o->flags, F_NOPICKUP) &&
|
|
|
|
getobweight(o) <= maxweight) {
|
|
|
|
ok = B_TRUE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (ok) break;
|
2011-03-18 12:25:18 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2011-03-24 16:09:31 +11:00
|
|
|
} else if (ot->id == OT_S_CHARM) {
|
|
|
|
if (getnearbypeaceful(lf)) {
|
|
|
|
ok = B_TRUE;
|
|
|
|
}
|
2011-03-18 12:25:18 +11:00
|
|
|
} else {
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
if (db) dblog(".oO { cant cast %s - specialcase conditions not yet coded }", ot ? ot->name : "?unkownspell?");
|
2011-03-18 12:25:18 +11:00
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!ok) {
|
Monster AI improvements:
- [+] replace f_target with f_targetlf
- [+] wantrange. for melee fighters (default), it's 0. for
spells/archers, it's higiher.
- [+] if we are further away than bestrange, move towards.
- [+] if we are closer than bestrange, move away
- [+] AND: move to wantrange before doing spells etc
- [+] if we have a ranged attack and wantrange is default, increase
it.
- [+] in movetowards/away, cells in the wrong dir should NEVER be
acceptable!
* [+] mflag_push for monsters
http://roguelikedeveloper.blogspot.com/2007/10/unangband-monst
er-ai-part-three.html
- [+] randomly use ranged attacks when adjacent
* [+] show trail in askcoords
- [+] when throwing, pass range to askcoords
- [+] max monsters per room is depth + 1
* [+] why do humans take ages to appear?
- [+] fireball spell is slow
- [+] why can i throw objects through magic barriers?
- [+] add a bonus for mastery of cartography - magic mapping every 50
turns.
- [+] crash with monsters moving off edge of world map
- [+] make magic barriers be ON stairs, not around them.
- [+] handle DIAGONAL entry to maps
- [+] OR make this impossible.
- [+] druid should get auto nature knoeldge as they levle up (levs 5 10
15).
- [+] CRASH flagpile corrupt
- [+] happening during AI movement.
- [+] make lightning storm only hit enemies
- [+] store last known movement dir in TARGETLF and PETOF.
- [+] limit monsters per room not working?!?!
- [+] make askcoords let you show object piles with .
- [+] make askcoords say "A magical barrier (+xx other objects)"
- [+] combine getlastknownmovedir into getlastknowncell
* [+] BUG: secret doors are showing up as . again!
* [+] implement trails (footprints & scent)
* [+] aimovetowardslf(lf, wantattack)
* [+] make pets use wantdist code?
- [+] what does expert/master tracking give you?
- [+] ex: your tracks don't last as long
- [+] ms: you don't leave tracks.
- [+] change f_reducemovement from multiplier to addition
- [+] comma still showing up scents and footprints incorrectly!!!!!!!!
Initial shallow/deep water:
- [+] restrict movement
- [+] check for drowning in turneffectslf AND movelf
- [+] warn before walking onto dangerous objects.
- [+] change how walkdam works for deepwater.
- [+] don't use walkdam flags.
- [+] don't make splashes of water on top of deepwater.
* [+] deep water will drown you if
- [+] don't leave footprints in either
- [+] create steam on fire damage, but don't CONVERT to it.
- [+] f_waterbreathing
- [+] can't drown in water
- [+] extra damage from cold/elec if in deep/shallow water
Initial swimming implementation
* [+] sacred/cursed ground
- [+] vending machine
- [+] don't transfer f_rarity flag when making objects / lifeforms.
Initial work on adding a goal to the game!
2011-05-25 12:12:00 +10:00
|
|
|
if (db) dblog(".oO { cant cast %s - targetting conditions cannot be met }", ot ? ot->name : "?unkownspell?");
|
2011-03-18 12:25:18 +11:00
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
|
2011-03-24 16:09:31 +11:00
|
|
|
// now check whether it meets specific spell conditions
|
|
|
|
specificcheckok = B_TRUE;
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
if (ot->id == OT_S_AIRBLAST) {
|
|
|
|
// target must be in a straight compass dir from us
|
|
|
|
if ((victim->x != lf->x) ||
|
|
|
|
(victim->y != lf->y) ||
|
|
|
|
(abs(victim->x - lf->x) != abs(victim->y - lf->y)) ) {
|
|
|
|
} else {
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
}
|
|
|
|
}
|
2011-03-24 16:09:31 +11:00
|
|
|
if (ot->id == OT_S_ANIMATEMETAL) {
|
|
|
|
object_t *wep;
|
|
|
|
wep = getweapon(lf);
|
|
|
|
if (!wep || !ismetal(wep->material->id)) {
|
|
|
|
specificcheckok = B_TRUE;
|
|
|
|
}
|
|
|
|
}
|
2011-03-18 12:25:18 +11:00
|
|
|
if ((ot->id == OT_S_BLINDNESS) && isblind(victim)) {
|
2011-03-24 16:09:31 +11:00
|
|
|
specificcheckok = B_FALSE;
|
2011-03-18 12:25:18 +11:00
|
|
|
}
|
- [+] outdoor bug: at -1,-1. travel south. end up at 0,0!!!
- [+] blink should go to random place within lof, not los
- [+] sunglasses shuld reduce nightvis range, not visrange
* [+] since jolt needs adjacency, make it more powerful
- [+] use colours for spell descriptions
- [+] replace 'call wind' with 'zephyr'
* [+] add vault commonality.
- [+] add more common vaults - roundabout etc
* [+] change "addmonster" to take a string arg instrad of RACEID
- [+] pouring cursed water on blessed scroll didn't work.....
- [+] append "...god of xxx" to rc_god lifeforms
- [+] try to attack with f_pain -> INFINITE LOOP.
- [+] ARMOURPIERCE shouldn't hurt armour
- [+] ghast touchparalyze attack isn't working.
* [+] bug: when praying to gods, ones not in heaven aren't listed.
- [+] when a god apepars..."Hecta appears" x2
- [+] attacking fleeing lf should count as a backstab (if you have the
skill)
* [+] "nothing happens" during god spell effects
* [+] allow hunger to work on monsters
- [+] pressing 'a' on @Magic has weird results.
- [+] bug: got a gift form yumi during combat???? what for? healing?
initial vampire implementation
initial god implementation
- [+] they all start off in "heaven" map.
- [+] gods ahve f_piety. starts at 0
- [+] keep track of piety with each god. starts at 0 for each one.
* [+] let planeshift take you to heaven (for debugging)
* [+] everyone has 'pray' ability.
- [+] modpiety(rid, amt)
* [+] piety vals
* [+] when you pray
- [+] isangry(god) - ie is piety < 0
* [+] if you pray when god is angry, bad!
* [+] once piety gets over 200 or so, praying might give you a gift.
* [+] god_appears(lifeform_t *victim)
- [+] if >=0 (indiff / pleased), goes up to indiff over time(1 per
turn).
- [+] regain through doing actions ... in progress
- [+] lose through doing actions only if you have prayed to this god
before (angergodmaybe)
- [+] special: gods don't need LOS to cast spells.
- [+] gods planeshift away if not doing anything else.
* [+] @g to see your piety levels for each god
- [+] ?g for help on gods
- [+] IN general:
- [+] prey = oneoff effect
- [+] gift = ongoing
* [+] makeangry() vs modpiety
* [+] Yumi - fem,mercy/healing - if you die within the first few turns!
Hecta - partial
Avamon - partial
2011-08-04 04:43:05 +10:00
|
|
|
if ((ot->id == OT_S_DISPERSAL) && (lf->race->raceclass->id == RC_GOD)) {
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
}
|
2011-04-01 10:54:44 +11:00
|
|
|
if ((ot->id == OT_S_DRAINLIFE) && isimmuneto(victim->flags, DT_NECROTIC)) {
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
}
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
if (ot->id == OT_A_FLURRY) {
|
|
|
|
if (!isdualweilding(lf)) {
|
* [+] F_prone if you're knocked down
- [+] make sheilds very good against projectiles
- [+] make smoke just REDUCE vision, not block it.
- [+] noncorporeal should stop grabs!
* [+] don't say 'a javelin is damaged' when you throw it, just apply
the damge
- [+] increase damage bonus with every lore level. +10% each time
(ie. up to 50% at top)
* [+] give accuracy + critical bonus for lore levles too
- [+] typo: Enhance which skill enhance (1 left)? ['=next page,?=toggle]
- [+] Show Pain on botl.
* [+] more staves
- [+] low hitpoint warning for pets (or make them shriek, whine, etc)
- [+] CRITKNOCKDOWN
* [+] FINISH GRIZZLY
- [+] undead should be immune to poison!!
- [+] make code to auto add flags to undead.
- [+] if you ever move a door (ie. airblast), automatically open it.
- [+] young wolf shouldn't be able to open a door!
* [+] You throw a dart at the carpet snake. Your dart misses
you.--More--
- [+] no sprinting while burdneed
- [+] blood should be drawn BELOW stairs
- [+] weilded torch should do 1d4 fire damage (counts as a club)
* [+] The skeleton touches a leather belt then recoils in pain!The
skeleton drops a blessed leather belt.The skeleton puts on a
leather belt.
- [+] don't show "you can cast it at power level xxx" for abilities
* [+] more item randomising
- [+] make grey ooze splatter into acid
- [+] "the vine grabs you" if you walk onto an entangling vine.
- [+] don't start monsters within player's los
- [+] properly randomise sticks to snakes
- [+] stirge
- [+] leech (like stirge but can charge/leap, and slightly more hp /
damage)
- [+] treesnake
- [+] constrictor
- [+] cobra
- [+] stickes to snakes - make caster's weapon revert.
- [+] A something comes into view.
- [+] is invisibility code working properly when you see someone use
the invis spell?
- [+] don't include cosmetic objects in 'you see xxx'
* [+] monsters: don't use spells if you don't have lof.
- [+] pets not following around corners if you move diagonally. fixed a
little.
- [+] summon small animals (2-3 x SZ_SMALL)
* [+] jet of water
- [+] summon medium animals (2-4 x SZ_MEDIUM, wolf etc)
- [+] lightning storm (lightbning everyone within los, and more damage)
- [+] summon large animals (SZ_LARGE, horse, bear etc)
2011-05-03 17:34:07 +10:00
|
|
|
specificcheckok = B_FALSE;
|
2011-04-01 10:54:44 +11:00
|
|
|
}
|
|
|
|
}
|
2011-08-24 18:15:09 +10:00
|
|
|
if ((ot->id == OT_S_FREEZEOB) && lfhasflag(lf, F_FREEZINGTOUCH)) {
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
}
|
2011-04-14 09:44:29 +10:00
|
|
|
if ((ot->id == OT_S_HASTE) && (lfhasflag(victim, F_FASTACT) || lfhasflag(victim, F_FASTACTMOVE)) ) {
|
2011-03-24 16:09:31 +11:00
|
|
|
specificcheckok = B_FALSE;
|
2011-03-18 12:25:18 +11:00
|
|
|
}
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
if (ot->id == OT_A_HEAVYBLOW) {
|
|
|
|
if (!getweapon(lf)) {
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
}
|
|
|
|
}
|
2011-04-14 09:44:29 +10:00
|
|
|
if (ot->id == OT_A_HIDE) {
|
|
|
|
if (lfhasflag(victim, F_HIDING)) {
|
|
|
|
specificcheckok = B_FALSE;
|
* [+] make vending machines use this container code instead.
- [+] don't say "you see a few things" if one of them is footsteps
* [+] IFMONSTER code failing....because flags are now SORTED!!!
- [+] tumble - askcoords is letting us pick a cell we don't have lof to.
* [+] assign a name to lfs once you hire them
* [+] coloured msgtext
- [+] make min dam reduction from AR be AR/5.
- [+] safebox
- [+] if intelligent, prompt before walking into RESTRICTMOVEMENT with
no getsweaker (val1)
* [+] make fire / ice damage mor elike netheck
- [+] towns should have gates on EVERY side
- [+] forest cells outside town gates need to be CLEARED. (maybe turn
to dirt)
- [+] fix up knock targetting to include magical barriers
- [+] say "open a bag?" not "operate a bag?"
* [+] implement immunetodisease
- [+] sort known skills in @s.
- [+] better damage bonus when attacking someone who is asleep
- [+] practive firearms/throwing
* [+] need objecttype->size
* [+] containers
* [+] change guns so you have to reload them. ("operate")
- [+] crash when loading map with water
- [+] SAVE OBJECT CONTENTSk
- [+] monsters with jobs aren't getting start items
- [+] shopkeeper has shotgun
- [+] bug: monster keeps swapping between shotgun and flail
- [+] when hiring, remember failure.
* [+] Inn
- [+] bug: pets fighting!!! then they all turn on you. never make
allies get angry unless the attacker is the player
* [+] hiring npcs
- [+] chat to pet: "stay close" or "keep your distance"
- [+] new 'furniture' obclass
- [+] allow for 'randomshop' regiontype
* [+] add enchantment school
- [+] cast a scroll of mending on itself. CRASH.
* [+] lessengravity should make you jump better and get knocked back
further
- [+] boostgrav/lessengrav cancel out each other.
* [+] CRASH when you fall down a hole and die.
- [+] problem: master gravitation doesn't let us cast levitat.
getspellschoolknown() should return the HIGHEST known skill, not
the first.
* [+] bug: dregion is null?!??!
* [+] dig a pit, if you cleared out land below, you just stay down
there.
- [+] potion of leveitation
- [+] warning msg when levitate is about to expire
* [+] if you fall upwards to the surface...
* [+] if you are ever on the surface while levitating....
- [+] BUG: cna't go up stairs to surface anymore!!!!!
- [+] get hungry LOTS more quickly when you start sprinting
* [+] monk slow metabolism psionic pell.
- [+] fix buf with lore giving LESS accuracy instead of more.
- [+] food shop
- [+] wand of digging not identified if you dig upwards
* [+] when you make ah ole in the roof, objects above should fall
through right away
* [+] all towns should have:
- [+] give monks more psionics spells.
- [+] sk_throwing skill
- [+] make calm animals use spellpower
* [+] add wisdom
* [+] need to save region data along with maps
* [+] COMBINE armour evasion and accuracy penalty!!!
* [+] make armour reduce accuracy as well (unless you have 'armour'
skill)
- [+] landmine trap
* [+] make friendly monsters of same raceclass swap ammo
- [+] rename 'pull' to 'suck' to avoid confusion with pull metal
* [+] food to fix blindness
- [+] potion of coffee
* [+] genericise statbrackets
* [+] tumble ability
* [+] simplify spell power
* [+] shopkeeprs should be allowed to pursue targets outside of the
shop.
- [+] give shopkeepers a shotgun
* [+] make F_RNDHOSTILE be able to ahve a random chance.
* [+] if you randomly generate food in a shop, still give it a price.
- [+] if peaceful humanoid walks into you, "sorry!"
- [+] sayphrase(lf, SP_SORRY, vol)
- [+] only let you recruit jobs with j_recruitable
- [+] CRASH - summon "monk"
- [+] dogs,
- [+] chickens,
- [+] drunks,
* [+] village objects
- [+] change armourrating AGAIN. instead of a percentage, make it a
number.
- [+] rename inn to "pub", since you can't sleep there.
* [+] random speech code
* [+] genericise sayphrase text based on lf's job
* [+] monks - add rest of abliities
- [+] add fiengdeath ability to some monsters
2011-07-14 07:40:28 +10:00
|
|
|
} else if (lfhasflag(victim, F_FEIGNINGDEATH)) {
|
|
|
|
specificcheckok = B_FALSE;
|
2011-04-14 09:44:29 +10:00
|
|
|
} else if (!safetorest(victim)) {
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
}
|
|
|
|
}
|
2011-03-18 12:25:18 +11:00
|
|
|
if ((ot->id == OT_S_INVISIBILITY) && lfhasflag(victim, F_INVISIBLE)) {
|
2011-03-24 16:09:31 +11:00
|
|
|
specificcheckok = B_FALSE;
|
2011-03-18 12:25:18 +11:00
|
|
|
}
|
|
|
|
if ((ot->id == OT_S_PAIN) && lfhasflag(victim, F_PAIN)) {
|
2011-03-24 16:09:31 +11:00
|
|
|
specificcheckok = B_FALSE;
|
2011-03-18 12:25:18 +11:00
|
|
|
}
|
|
|
|
if ((ot->id == OT_S_HEALING) && (lf->hp >= lf->maxhp)) {
|
2011-03-24 16:09:31 +11:00
|
|
|
specificcheckok = B_FALSE;
|
2011-03-04 12:22:36 +11:00
|
|
|
}
|
2011-03-18 12:25:18 +11:00
|
|
|
if ((ot->id == OT_S_HEALINGMIN) && (lf->hp >= lf->maxhp)) {
|
2011-03-24 16:09:31 +11:00
|
|
|
specificcheckok = B_FALSE;
|
2011-03-16 15:45:46 +11:00
|
|
|
}
|
2011-03-22 18:06:28 +11:00
|
|
|
if ((ot->id == OT_S_PARALYZE) && lfhasflag(victim, F_PARALYZED)) {
|
2011-03-24 16:09:31 +11:00
|
|
|
specificcheckok = B_FALSE;
|
2011-03-22 18:06:28 +11:00
|
|
|
}
|
|
|
|
if ((ot->id == OT_S_SLEEP) && lfhasflag(victim, F_ASLEEP)) {
|
2011-03-24 16:09:31 +11:00
|
|
|
specificcheckok = B_FALSE;
|
2011-03-22 18:06:28 +11:00
|
|
|
}
|
2011-04-14 09:44:29 +10:00
|
|
|
if ((ot->id == OT_S_SLOW) && (lfhasflag(victim, F_SLOWACT) || lfhasflag(victim, F_SLOWACTMOVE)) ) {
|
2011-03-24 16:09:31 +11:00
|
|
|
specificcheckok = B_FALSE;
|
2011-03-04 12:22:36 +11:00
|
|
|
}
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
if ((ot->id == OT_S_SMITEGOOD) && (getalignment(victim) != AL_GOOD)) {
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
}
|
|
|
|
if ((ot->id == OT_S_SMITEEVIL) && (getalignment(victim) != AL_EVIL)) {
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
}
|
2011-03-18 12:25:18 +11:00
|
|
|
if ((ot->id == OT_A_SPRINT) && lfhasflag(lf, F_SPRINTING)) {
|
2011-03-24 16:09:31 +11:00
|
|
|
specificcheckok = B_FALSE;
|
2011-03-04 12:22:36 +11:00
|
|
|
}
|
* [+] operate a candlabrum on the ground confers permenant light
producing!
* [+] bug - water appearing in walls.
- [+] make armour less common in forests
- [+] too many --more--s when enhancing stats. use drawmsg() rather
than more().
- [+] when i go up/down stairs, i keep ending up BESIDE them??
* [+] "you hear footstepszzzzzzzzzzzzzzzzzzzzzzz" (random junk)
- [+] when i start training with a spell active, it gets interrupted.
try again, interrupted again! works 3rd time.
- [+] replace lockpicking with "locksmithing"
- [+] replace 'body control' with 'slow metabolism'
- [+] pit traps broken - fixed now.
- [+] doheading issue in @M still.
* [+] how did zombie get 28 hp? bug in rollhitdice.
- [+] blind a skeleton with light. it gets blind, starts fleeing. but
because it can't SEE you, it stops fleeing instantly!
* [+] getflags(flagpile_t *fp, ... )
- [+] stun spell
- [+] only say "x2" etc if msgbuf we are going to draw still contains
the original text.
- [+] when you level up, your psionic skill determines your chance of
learning a new psionic spell?
- [+] when you teleport/use stairs, get all allies in SIGHT, not
adjacent.
* [+] more traps!
* [+] prisoners in cells
- [+] recruitment: instead of outright refusing to join, just up the
price.
* [+] make spellbook contents depend on map difficulty
- [+] cloak of shadows - give invisibility when in darkness
* [+] limited wish:
- [+] casting WISH reduces max hp by 50%!
- [+] monster ai code: if inventory full (or close), put non-eqiupped
stuff into containers
* [+] infinite loop in firedam to lf
- [+] pot of xp isn't working for monsters. they get no more hp!!
- [+] summonmosnter should jsut relocate existing uniques
- [+] 'planeshift' spell for gods - "unsummon"s them.
* [+] diety - greedgod
* [+] more village contents
2011-07-26 12:01:05 +10:00
|
|
|
if ((ot->id == OT_A_STEAL) || (ot->id == OT_S_CONFISCATE)) {
|
|
|
|
if (!countobs(victim->pack, B_FALSE)) {
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
}
|
|
|
|
}
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
if ((ot->id == OT_A_SWOOP) || (ot->id == OT_A_CHARGE)) {
|
|
|
|
flag_t *willflag;
|
|
|
|
flag_t *srflag;
|
|
|
|
int srange = 5;
|
|
|
|
|
|
|
|
willflag = lfhasflagval(lf, F_CANWILL, ot->id, NA, NA, NULL);
|
|
|
|
if (willflag) {
|
|
|
|
texttospellopts(f->text, NULL, NULL, NULL, &srange);
|
|
|
|
if (!srange) srange = 5;
|
|
|
|
}
|
2011-05-27 12:50:59 +10:00
|
|
|
// override...
|
|
|
|
srflag = lfhasflag(lf, F_SWOOPRANGE);
|
|
|
|
if (srflag) {
|
|
|
|
srange = srflag->val[0];
|
|
|
|
}
|
* [+] always add webs if there are randomly generated spiders on a level
- [+] non-wood doors
- [+] iron
- [+] only interrupt rest for hunger if it's 'starving' or 'vhungry'
- [+] limit the amount of jumping we can do from athletics skill.
- [+] no message when i lockpick with a -6 combat knife.
- [+] make small corpses give much less nutrition!
- [+] high unarmed skill should give you unarmed attacks with a
1-handed weapon.
- [+] dual weild
- [+] if you have twoweapon skill, when you weild a weapon, say
"weild as secondary weapon? y/n"
- [+] in attackcell(), check if we have a weapon in our second hand
AND are skilled in twoweaponing
- [+] if so, get an attack with both, but with an accuracy penalty
(until adept level)
- [+] make sure shiedl code doesn't accept weapons!
- [+] knockback() can now knock back other lfs that you hit on the way
* [+] faster resting obs (only via R)
- [+] replace F_RESTING with F_ASLEEP. v0 = onpurpose. if v0, you wake
up when at full hp/mp/etc
- [+] implement F_TRAINING with traincounter
- [+] don't say 'rest until nearby allies ar eheald' if they aren't
damaged
- [+] make listen dififculty check dependant on distance to noise
- [+] doesn't make sense for druid to be a vegetarian. use "can only
eat meat when hungry"
- [+] @@ - combine acc+dmg. ie. "weapon: mace (63%,2-9dmg)
- [+] @@ - show both weapons if dualweilding.
- [+] porcupine shoudl have F_SHARP corpse. implement F_CORPSEFLAGS
- [+] create monster - "giant ant" making "giant antlion"!
- [+] giant porcupine
- [+] implement
- [+] should attack ants on sight - f_hatesrace
- [+] if race=hatesrace or baserace = hatesrace, will attack it.
- [+] gust of wind - blow obs away!
- [+] thorns (grow spikes, attackers take dmg)
- [+] f_retaliate, v0=ndice,v1=dsides, v2=damype, text=obname
- [+] major healing (new spell)
2011-05-05 13:12:52 +10:00
|
|
|
|
|
|
|
|
|
|
|
if (!haslof(lf->cell, victim->cell, LOF_NEED,NULL)) {
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
} else if (isimmobile(lf)) {
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
} else if ((ot->id == OT_A_SWOOP) && !lfhasflag(lf, F_FLYING)) {
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
} else if (getcelldist(lf->cell, victim->cell) > srange) {
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
} else if (getcelldist(lf->cell, victim->cell) == 1) { // ie already adjacent
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
}
|
|
|
|
}
|
* [+] bug: secret doors revealed when we walk away from them.
- [+] make lamps last heaps longer
* [+] web spell
* [+] spider monstrer
* [+] funnelweb:
* [+] redback:
- [+] if you are wracked with pain, don't clear msg
- [+] check rarity for spiders
* [+] attack/defense mod if there is stickiness in your square
- [+] replace "sticky" with "restrictive"
* [+] make some mosnters start hidden
- [+] adjust spot checks basd on distance
- [+] ensure that attacking stops you hiding
- [+] casting spells stops you from being hidden
- [+] hidden mosnters shouldn't move unless their victim is ADJACENT.
- [+] hidden mosnters shouldn't cast spells, throw missiles, etc unless
their victim is ADJACENT.
- [-] XP CALC
- [+] funnelweb and redback are the same.
- [+] check this is right...... i want funnel web to be worse.
- [+] make hitconfer check in calcxpval take lifetime into account
- [+] ALSO assign an xp rating to each hitconferred flag.
- [+] hardcode this.
* [+] entangle spell
- [+] reveal secret doors if you see them get damaged.
* [+] make askcoords list restrivitce objects
- [+] ACTUALLY make vines not damaged by struggling
* [+] object descriptions, a/an needs to change if showing condition:
"a battered entangling vine"
- [+] wizard levelled up and was prompted for "WISH, GIFT"! shouldn't
happen!
- [+] The human diety reads a blessed scroll of create monster! -- but
nothing happens??
* [+] throw code
- [+] wizard: ask for school specialty at start, from: fire, ice, xxx
? You get this + WILD.
- [+] describe varpower spells
- [+] fix mp cost for varpower spells
- [+] we're not stopping running at staircases anymore for some reason.
- [+] CHARGE ability (like swoop but don't return to original positino)
- [+] need to honor f_canlearn when displaying new skills to learn!
- [+] ai: if we are going to player's last known loc (via targetcell),
abandon if we can SEE the player!
- [+] make shatter() into a function
- [+] oil potion makes oil puddle whan smashed
- [+] make flammable objects be able to convert to others
- [+] replace 'magic item usage' with 'channeling'
- [+] a cloud of darkness descends. this is a *cursed* wand of light.
- [+] spiders shouldn't be able to be stuck in a web!
* [+] spells should be able to have MULTIPLE schools.
- [+] don't bleed into walls
- [+] in @M, use colours to show which spells are too hard so far (ie
cost > maxmp)
* [+] in @M, use schools that you know
* [+] after loading game, barbarian is getting an extra attack?
You miss the eyebat. You punch the eyebat.
- [+] show objects on top of stairs
- [+] stuck mosnters must pass a saving throw to follow you up/down
stairs
- [+] genericise: trytomove(lf)
* [+] add more snakes
- [+] undead can't eat or drink? or MOST undead can't.
* [+] why can MONSTERS shoot webs through things? (but I can't)
- [+] barkskin - doesn't reduce max mp enough?
- [+] The skeleton touches a fuming aqua potion [tried] then recoils in
pain!
The skeleton drops a blessed fuming aqua potion [tried].
The skeleton drinks a fuming aqua potion!
- [+] why can't i use abilites anymore?
- [+] infinite loop bug due to ai only having one ignorecell.
- [+] make sleet storms rust all armour
- [+] make a kind of walkdam that hits armour
- [+] add this as well as walkdam for: acid, fire, water
- [+] Takeoff isn't prompting properly. only showing weapons!
* [+] waterproof obs (ie cloak)
* [+] walkdambp doesn't hurt body if you have a cloak
NATURE SPELLS:
- [+] mending, heals 1d6 damage
- [+] spark
- [+] purify food
- [+] sticks to snakes
- [+] calm animals (power_d4 hd)
* [+] charm animal (works on one animal up to power hit dice, temporary)
- [+] airblast
- [+] barkskin (power +2 AR, firevuln, ongoing)
- [+] soften earth (makes ground into mud)
- [+] warp wood (damages wooden objects)
- [+] repel insects
- [+] reduce poison
- [+] web
- [+] windshield
- [+] call lightning, air
- [+] resist elements, ongoing
- [+] passwall
- [+] poisonbolt
- [+] quench (puts out a fire)
- [+] sleet storm (lowers movement, vision)
- [+] healing
- [+] cure poison
* [+] calming scent
- [+] dig
- [+] entangle
- [+] levitate
- [+] flamepillar
- [+] hailstorm. like sleetstorm but hurts more. power d 6.
- [+] burning wave
- [+] gaseous form
* [+] knowledge skills:
* [+] force makespellchoicelist() to show spells in level order.
* [+] druid
- [+] check OBJECT rarity list (dumplev)
- [+] fix bug where heaps of books suddently appear from dlev 3 onwards
- [+] gain skills on level up for some jobs
- [+] f_levspellschool, v0=lev, v1 = school or ANY - select one
from that school
2011-04-23 14:27:42 +10:00
|
|
|
if ((ot->id == OT_S_WARPWOOD)) {
|
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
if (victim) {
|
|
|
|
object_t *oo;
|
|
|
|
for (oo = victim->pack->first ; oo ; oo = oo->next) {
|
|
|
|
if ((oo->type->material->id == MT_WOOD) && isequipped(oo)) {
|
|
|
|
specificcheckok = B_TRUE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2011-03-22 18:06:28 +11:00
|
|
|
if ((ot->id == OT_S_WEAKEN)) {
|
|
|
|
flag_t *lff;
|
|
|
|
for (lff = lf->flags->first; lff ; lff = lff->next) {
|
|
|
|
if ((lff->id == F_ATTRMOD) && (lff->val[0] == A_STR) && (lff->obfrom == OT_S_WEAKEN)) {
|
2011-03-24 16:09:31 +11:00
|
|
|
specificcheckok = B_FALSE;
|
|
|
|
break;
|
2011-03-22 18:06:28 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2011-03-24 16:09:31 +11:00
|
|
|
if (!specificcheckok) {
|
2011-05-27 12:50:59 +10:00
|
|
|
if (db) dblog(".oO { cant cast %s - specific spell check failed }", ot ? ot->name : "?unkownspell?");
|
2011-03-24 16:09:31 +11:00
|
|
|
return B_FALSE;
|
|
|
|
}
|
2011-03-04 12:22:36 +11:00
|
|
|
|
|
|
|
return B_TRUE;
|
|
|
|
}
|
|
|
|
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
int aiwants(lifeform_t *lf, object_t *o, int *covets) {
|
|
|
|
enum OBTYPE oid[MAXPILEOBS];
|
|
|
|
int oidcovet[MAXPILEOBS];
|
|
|
|
int noids = 0;
|
|
|
|
enum FLAG wantflag[MAXPILEOBS];
|
|
|
|
int wantflagcovet[MAXPILEOBS];
|
|
|
|
int nwantflags = 0;
|
|
|
|
makewantedoblist(lf, &noids, oid, oidcovet, &nwantflags, wantflag, wantflagcovet);
|
|
|
|
return aiwants_real(lf, o, covets, &noids, oid, oidcovet, &nwantflags, wantflag, wantflagcovet);
|
|
|
|
}
|
|
|
|
|
|
|
|
int aiwants_real(lifeform_t *lf, object_t *o, int *covets, int *noids, enum OBTYPE *oid, int *oidcovet,int *nwantflags, enum FLAG *wantflag, int *wantflagcovet) {
|
|
|
|
int i;
|
|
|
|
for (i = 0; i < *noids; i++) {
|
|
|
|
if (oid[i] == o->type->id) {
|
|
|
|
if (covets) {
|
|
|
|
*covets = oidcovet[i];
|
|
|
|
}
|
|
|
|
return B_TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (i = 0; i < *nwantflags; i++) {
|
|
|
|
if (hasflag(o->flags, wantflag[i])) {
|
|
|
|
if ((wantflag[i] == F_EDIBLE) && !caneat(lf, o)) { // special case
|
|
|
|
} else {
|
|
|
|
if (covets) {
|
|
|
|
*covets = wantflagcovet[i];
|
|
|
|
}
|
|
|
|
return B_TRUE;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
2011-03-04 12:22:36 +11:00
|
|
|
|
2011-06-09 18:58:35 +10:00
|
|
|
lifeform_t *gettargetlf(lifeform_t *lf) {
|
|
|
|
flag_t *f;
|
|
|
|
lifeform_t *target = NULL;
|
|
|
|
f = hasflag(lf->flags, F_TARGETLF);
|
|
|
|
if (f) {
|
|
|
|
target = findlf(lf->cell->map, f->val[0]);
|
|
|
|
}
|
|
|
|
return target;
|
|
|
|
}
|
|
|
|
|
2011-02-01 06:16:13 +11:00
|
|
|
object_t *hasbetterarmour(lifeform_t *lf, obpile_t *op) {
|
|
|
|
object_t *o;
|
|
|
|
|
|
|
|
for (o = op->first ; o ; o = o->next) {
|
|
|
|
if (isarmour(o)) {
|
|
|
|
object_t *curarm;
|
|
|
|
enum BODYPART bp;
|
|
|
|
flag_t *f;
|
|
|
|
// where does it go?
|
|
|
|
f = hasflag(o->flags, F_GOESON);
|
|
|
|
bp = f->val[0];
|
|
|
|
// is it better than what we have in that position?
|
|
|
|
curarm = getarmour(lf, bp);
|
|
|
|
if (isbetterwepthan(o, curarm)) {
|
|
|
|
return o;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return NULL;
|
2010-12-02 12:17:54 +11:00
|
|
|
}
|
|
|
|
|
2011-02-01 06:16:13 +11:00
|
|
|
object_t *hasbetterweapon(lifeform_t *lf, obpile_t *op) {
|
|
|
|
object_t *bestwep, *o;
|
|
|
|
|
|
|
|
bestwep = getbestweapon(lf);
|
|
|
|
for (o = op->first ; o ; o = o->next) {
|
|
|
|
if (isweapon(o) && isbetterwepthan(o, bestwep) && canweild(lf, o)) {
|
|
|
|
return o;
|
|
|
|
}
|
2010-12-02 12:17:54 +11:00
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
return NULL;
|
2010-12-02 12:17:54 +11:00
|
|
|
}
|
|
|
|
|
2011-02-01 06:16:13 +11:00
|
|
|
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
|
2011-02-01 06:16:13 +11:00
|
|
|
// returns B_TRUE if we did something
|
2011-06-09 18:58:35 +10:00
|
|
|
int lookforobs(lifeform_t *lf) {
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
object_t *o,*nexto;
|
2011-02-01 06:16:13 +11:00
|
|
|
enum OBTYPE oid[MAXPILEOBS];
|
2011-06-09 18:58:35 +10:00
|
|
|
int oidcovet[MAXPILEOBS];
|
2011-02-01 06:16:13 +11:00
|
|
|
int noids = 0;
|
|
|
|
enum FLAG wantflag[MAXPILEOBS];
|
2011-06-09 18:58:35 +10:00
|
|
|
int wantflagcovet[MAXPILEOBS];
|
2011-02-01 06:16:13 +11:00
|
|
|
int nwantflags = 0;
|
|
|
|
flag_t *f;
|
|
|
|
cell_t *c;
|
|
|
|
int i;
|
2011-02-16 05:21:33 +11:00
|
|
|
int db = B_FALSE;
|
2011-06-09 18:58:35 +10:00
|
|
|
lifeform_t *target;
|
|
|
|
int targdist = 999;
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
int covets = B_FALSE;
|
2011-06-09 18:58:35 +10:00
|
|
|
|
|
|
|
target = gettargetlf(lf);
|
|
|
|
if (target) {
|
|
|
|
targdist = getcelldist(lf->cell, target->cell);
|
|
|
|
}
|
2011-02-16 05:21:33 +11:00
|
|
|
|
|
|
|
if (wantdb && lfhasflag(lf, F_DEBUG)) {
|
|
|
|
db = B_TRUE;
|
|
|
|
} else {
|
|
|
|
db = B_FALSE;
|
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
makewantedoblist(lf, &noids, oid, oidcovet, &nwantflags, wantflag, wantflagcovet);
|
- [+] outdoor bug: at -1,-1. travel south. end up at 0,0!!!
- [+] blink should go to random place within lof, not los
- [+] sunglasses shuld reduce nightvis range, not visrange
* [+] since jolt needs adjacency, make it more powerful
- [+] use colours for spell descriptions
- [+] replace 'call wind' with 'zephyr'
* [+] add vault commonality.
- [+] add more common vaults - roundabout etc
* [+] change "addmonster" to take a string arg instrad of RACEID
- [+] pouring cursed water on blessed scroll didn't work.....
- [+] append "...god of xxx" to rc_god lifeforms
- [+] try to attack with f_pain -> INFINITE LOOP.
- [+] ARMOURPIERCE shouldn't hurt armour
- [+] ghast touchparalyze attack isn't working.
* [+] bug: when praying to gods, ones not in heaven aren't listed.
- [+] when a god apepars..."Hecta appears" x2
- [+] attacking fleeing lf should count as a backstab (if you have the
skill)
* [+] "nothing happens" during god spell effects
* [+] allow hunger to work on monsters
- [+] pressing 'a' on @Magic has weird results.
- [+] bug: got a gift form yumi during combat???? what for? healing?
initial vampire implementation
initial god implementation
- [+] they all start off in "heaven" map.
- [+] gods ahve f_piety. starts at 0
- [+] keep track of piety with each god. starts at 0 for each one.
* [+] let planeshift take you to heaven (for debugging)
* [+] everyone has 'pray' ability.
- [+] modpiety(rid, amt)
* [+] piety vals
* [+] when you pray
- [+] isangry(god) - ie is piety < 0
* [+] if you pray when god is angry, bad!
* [+] once piety gets over 200 or so, praying might give you a gift.
* [+] god_appears(lifeform_t *victim)
- [+] if >=0 (indiff / pleased), goes up to indiff over time(1 per
turn).
- [+] regain through doing actions ... in progress
- [+] lose through doing actions only if you have prayed to this god
before (angergodmaybe)
- [+] special: gods don't need LOS to cast spells.
- [+] gods planeshift away if not doing anything else.
* [+] @g to see your piety levels for each god
- [+] ?g for help on gods
- [+] IN general:
- [+] prey = oneoff effect
- [+] gift = ongoing
* [+] makeangry() vs modpiety
* [+] Yumi - fem,mercy/healing - if you die within the first few turns!
Hecta - partial
Avamon - partial
2011-08-04 04:43:05 +10:00
|
|
|
|
2011-02-01 06:16:13 +11:00
|
|
|
// current cell has an object we want?
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
for (o = lf->cell->obpile->first ; o ; o = nexto) {
|
|
|
|
nexto = o->next;
|
|
|
|
if (aiwants_real(lf, o, &covets, &noids, oid, oidcovet, &nwantflags, wantflag, wantflagcovet)) {
|
|
|
|
int getit = B_TRUE;
|
|
|
|
// if we are in battle only go for it if we covet it
|
|
|
|
if (target && !covets) getit = B_FALSE;
|
|
|
|
if (isdangerousob(o, lf, B_TRUE) || !aipickupok(lf, o)) getit = B_FALSE;
|
|
|
|
if (getit) {
|
|
|
|
if (db) dblog(".oO { current cell has ob i want (%s) }",o->type->name);
|
|
|
|
// try to pick it up
|
|
|
|
if (!aipickup(lf, o)) return B_TRUE;
|
|
|
|
if (db) dblog(".oO { pickup of %s failed, trying to eat! }",o->type->name);
|
|
|
|
if (!eat(lf, o)) return B_TRUE;
|
|
|
|
if (db) dblog(".oO { eating %s failed }",o->type->name);
|
2011-06-09 18:58:35 +10:00
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
}
|
|
|
|
}
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
|
2011-02-01 06:16:13 +11:00
|
|
|
// current cell has better weapon?
|
2011-04-01 10:54:44 +11:00
|
|
|
if (lfhasflag(lf, F_HUMANOID) && hasbp(lf, BP_WEAPON)) {
|
|
|
|
f = hasflag(lf->flags, F_WANTSBETTERWEP);
|
|
|
|
if (f) {
|
2011-06-09 18:58:35 +10:00
|
|
|
// if we are in battle only go for it if we covet it
|
|
|
|
if (!target || (f->val[1] == B_COVETS)) {
|
2011-04-01 10:54:44 +11:00
|
|
|
o = hasbetterweapon(lf, lf->cell->obpile);
|
2011-06-29 18:48:48 +10:00
|
|
|
if (o && !isdangerousob(o, lf, B_TRUE) && aipickupok(lf, o) && canpickup(lf, o, 1)) {
|
2011-04-01 10:54:44 +11:00
|
|
|
if (db) dblog(".oO { current cell has better weapon (%s) }",o->type->name);
|
|
|
|
// try to pick it up
|
|
|
|
if (!aipickup(lf, o)) return B_TRUE;
|
|
|
|
if (db) dblog(".oO { pickup of better wep %s failed! }",o->type->name);
|
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2011-04-01 10:54:44 +11:00
|
|
|
|
|
|
|
if (lfhasflag(lf, F_HUMANOID)) {
|
|
|
|
// current cell has better armour?
|
|
|
|
f = hasflag(lf->flags, F_WANTSBETTERARM);
|
|
|
|
if (f ) {
|
2011-06-09 18:58:35 +10:00
|
|
|
// if we are in battle only go for it if we covet it
|
|
|
|
if (!target || (f->val[1] == B_COVETS)) {
|
2011-04-01 10:54:44 +11:00
|
|
|
o = hasbetterarmour(lf, lf->cell->obpile);
|
2011-06-29 18:48:48 +10:00
|
|
|
if (o && !isdangerousob(o, lf, B_TRUE) && aipickupok(lf, o) && canpickup(lf, o, 1)) {
|
2011-04-01 10:54:44 +11:00
|
|
|
if (db) dblog(".oO { current cell has better armour (%s) }",o->type->name);
|
|
|
|
// try to pick it up
|
|
|
|
if (!aipickup(lf, o)) return B_TRUE;
|
|
|
|
if (db) dblog(".oO { pickup of better armour %s failed! }",o->type->name);
|
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// look around for objects which we want, if we don't already have a targetcell.
|
|
|
|
if (!hasflag(lf->flags, F_TARGETCELL)) {
|
|
|
|
if (db) dblog(".oO { no targetcell, so looking for remote objects }");
|
|
|
|
for (i = 0 ; i < lf->nlos; i++) {
|
|
|
|
int gothere = B_FALSE;
|
|
|
|
|
|
|
|
c = lf->los[i];
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
if ((c != lf->cell) && !c->lf && !lfhasflagval(lf, F_IGNORECELL, c->x, c->y, NA, NULL)) {
|
2011-06-09 18:58:35 +10:00
|
|
|
int celldist;
|
|
|
|
celldist = getcelldist(lf->cell, c);
|
|
|
|
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
for (o = c->obpile->first ; o ; o = nexto) {
|
|
|
|
nexto = o->next;
|
|
|
|
if (aiwants_real(lf, o, &covets, &noids, oid, oidcovet, &nwantflags, wantflag, wantflagcovet)) {
|
2011-06-09 18:58:35 +10:00
|
|
|
gothere = B_TRUE;
|
|
|
|
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
// if we are in battle only go for it if we covet it and
|
|
|
|
// it's closer than our target
|
|
|
|
if (target) {
|
|
|
|
if (!covets || (celldist > targdist)) {
|
|
|
|
gothere = B_FALSE;
|
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
}
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
|
|
|
|
if (gothere) {
|
|
|
|
if (db) dblog(".oO { remote cell has ob i want (%s). setting f_targetcell. }",o->type->name);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
} // end if aiwantsthisob
|
|
|
|
} // end foreach ob in cell
|
|
|
|
|
2011-02-01 06:16:13 +11:00
|
|
|
if (!gothere) {
|
2011-04-01 10:54:44 +11:00
|
|
|
if (lfhasflag(lf, F_HUMANOID) && hasbp(lf, BP_WEAPON)) {
|
|
|
|
// remote cell has better weapon?
|
|
|
|
f = hasflag(lf->flags, F_WANTSBETTERWEP);
|
|
|
|
if (f) {
|
2011-06-09 18:58:35 +10:00
|
|
|
// if we are in battle only go for it if we covet it
|
|
|
|
if (!target ||
|
|
|
|
((f->val[1] != B_COVETS) && (celldist <= targdist)) ) {
|
2011-04-01 10:54:44 +11:00
|
|
|
o = hasbetterweapon(lf, c->obpile);
|
2011-06-29 18:48:48 +10:00
|
|
|
if (o && !isdangerousob(o, lf, B_TRUE) && aipickupok(lf, o) &&
|
|
|
|
canpickup(lf, o, 1)) {
|
2011-04-01 10:54:44 +11:00
|
|
|
if (db) dblog(".oO { remote cell has better weapon (%s). setting f_targetcell }",o->type->name);
|
|
|
|
gothere = B_TRUE;
|
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!gothere) {
|
2011-04-01 10:54:44 +11:00
|
|
|
if (lfhasflag(lf, F_HUMANOID)) {
|
|
|
|
// remote cell has better armour?
|
|
|
|
f = hasflag(lf->flags, F_WANTSBETTERARM);
|
|
|
|
if (f) {
|
2011-06-09 18:58:35 +10:00
|
|
|
if (!target ||
|
|
|
|
((f->val[1] != B_COVETS) && (celldist <= targdist)) ) {
|
|
|
|
|
2011-04-01 10:54:44 +11:00
|
|
|
o = hasbetterarmour(lf, c->obpile);
|
2011-06-29 18:48:48 +10:00
|
|
|
if (o && !isdangerousob(o, lf, B_TRUE) && aipickupok(lf, o) &&
|
|
|
|
canpickup(lf, o, 1)) {
|
2011-04-01 10:54:44 +11:00
|
|
|
if (db) dblog(".oO { remote cell has better armour (%s). setting f_targetcell }",o->type->name);
|
|
|
|
gothere = B_TRUE;
|
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (gothere) {
|
2011-05-20 06:30:58 +10:00
|
|
|
// cast a spell?
|
|
|
|
if (cancast(lf, OT_S_CALLWIND, NULL) && haslof(lf->cell, c, LOF_NEED, NULL)) {
|
|
|
|
if (!castspell(lf, OT_S_CALLWIND, NULL, o, c)) {
|
|
|
|
// successful
|
|
|
|
return B_TRUE;
|
|
|
|
}
|
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
// start walking towards target cell
|
* [+] F_prone if you're knocked down
- [+] make sheilds very good against projectiles
- [+] make smoke just REDUCE vision, not block it.
- [+] noncorporeal should stop grabs!
* [+] don't say 'a javelin is damaged' when you throw it, just apply
the damge
- [+] increase damage bonus with every lore level. +10% each time
(ie. up to 50% at top)
* [+] give accuracy + critical bonus for lore levles too
- [+] typo: Enhance which skill enhance (1 left)? ['=next page,?=toggle]
- [+] Show Pain on botl.
* [+] more staves
- [+] low hitpoint warning for pets (or make them shriek, whine, etc)
- [+] CRITKNOCKDOWN
* [+] FINISH GRIZZLY
- [+] undead should be immune to poison!!
- [+] make code to auto add flags to undead.
- [+] if you ever move a door (ie. airblast), automatically open it.
- [+] young wolf shouldn't be able to open a door!
* [+] You throw a dart at the carpet snake. Your dart misses
you.--More--
- [+] no sprinting while burdneed
- [+] blood should be drawn BELOW stairs
- [+] weilded torch should do 1d4 fire damage (counts as a club)
* [+] The skeleton touches a leather belt then recoils in pain!The
skeleton drops a blessed leather belt.The skeleton puts on a
leather belt.
- [+] don't show "you can cast it at power level xxx" for abilities
* [+] more item randomising
- [+] make grey ooze splatter into acid
- [+] "the vine grabs you" if you walk onto an entangling vine.
- [+] don't start monsters within player's los
- [+] properly randomise sticks to snakes
- [+] stirge
- [+] leech (like stirge but can charge/leap, and slightly more hp /
damage)
- [+] treesnake
- [+] constrictor
- [+] cobra
- [+] stickes to snakes - make caster's weapon revert.
- [+] A something comes into view.
- [+] is invisibility code working properly when you see someone use
the invis spell?
- [+] don't include cosmetic objects in 'you see xxx'
* [+] monsters: don't use spells if you don't have lof.
- [+] pets not following around corners if you move diagonally. fixed a
little.
- [+] summon small animals (2-3 x SZ_SMALL)
* [+] jet of water
- [+] summon medium animals (2-4 x SZ_MEDIUM, wolf etc)
- [+] lightning storm (lightbning everyone within los, and more damage)
- [+] summon large animals (SZ_LARGE, horse, bear etc)
2011-05-03 17:34:07 +10:00
|
|
|
if (aigoto(lf, c, MR_OB, o, AI_FOLLOWTIME)) {
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
2011-02-01 06:16:13 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2011-02-16 05:21:33 +11:00
|
|
|
if (db) dblog(".oO { didn't find any obs i want }");
|
2011-02-01 06:16:13 +11:00
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
void makewantedoblist(lifeform_t *lf, int *noids, enum OBTYPE *oid, int *oidcovet,int *nwantflags, enum FLAG *wantflag, int *wantflagcovet) {
|
|
|
|
int i;
|
|
|
|
flag_t *f;
|
2011-08-24 18:15:09 +10:00
|
|
|
flag_t *retflag[MAXCANDIDATES];
|
|
|
|
int nretflags;
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
|
|
|
|
// construct a list of objects which we want
|
|
|
|
*noids = 0;
|
2011-08-24 18:15:09 +10:00
|
|
|
getflags(lf->flags, retflag, &nretflags, F_WANTS, F_WANTSOBFLAG, F_NONE);
|
* [+] why did i get a gift from yumi in the middle of a battle?
- [+] need alignment. f_alignment. default neutral.
- [+] slight change to armour damage calc
- [+] thrown poisoned weapons don't work!
- [+] holy aura spell. lv3 cleric.
* [+] are kobolds working properly?? seem buggy
* [+] calmed down a war hound with a mushroom.
- [+] use wisdom for checks for unwise things, not iq.
* [+] hecta should only care about attacking evil creatures if they
were NOT hostile.
- [+] optimise:
- [+] use getflags() more often.
- [+] lookforobs() - redo code for ai wanting things.
* [+] precalclos - 28%
* [+] hasbetterweapon()
- [+] haslos - 27.3%
- [+] when you move now, you don't have los to your previous cell on
the first drawscreen when your turn starts!!!!!
- [+] ai is coming too close before firing ranged weapons. allow them
to stay within 2 - maxrange if they have a weapon.
- [+] also let them fire form furhter away!
* [+] give healing potion to hurt (intelligent) lf to calm them down?
* [+] Amberon (m) purity, righteousness
* [+] Hecta - female, death, undead, evil, night
* [+] Felix - male, thieves, greed
* [+] bug - i found jimbo dead!
- [+] cave vault (different wall types, boulder at the entrance, lots of
food, bears)
2011-08-10 12:40:29 +10:00
|
|
|
for (i = 0; i < nretflags; i++) {
|
|
|
|
f = retflag[i];
|
|
|
|
if (f->id == F_WANTS) {
|
|
|
|
oid[*noids] = f->val[0];
|
|
|
|
oidcovet[*noids] = (f->val[1] == B_COVETS) ? B_TRUE : B_FALSE;
|
|
|
|
(*noids)++;
|
|
|
|
} else if (f->id == F_WANTSOBFLAG) {
|
|
|
|
wantflag[*nwantflags] = f->val[0];
|
|
|
|
wantflagcovet[*nwantflags] = (f->val[1] == B_COVETS) ? B_TRUE : B_FALSE;
|
|
|
|
(*nwantflags)++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (hasflag(lf->flags, F_HUNGER)) {
|
|
|
|
// monsters dont normaly need to eat. if they have hunger, it's due
|
|
|
|
// to a spell.
|
|
|
|
wantflag[*nwantflags] = F_EDIBLE;
|
|
|
|
wantflagcovet[*nwantflags] = B_TRUE;
|
|
|
|
(*nwantflags)++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-03-16 15:45:46 +11:00
|
|
|
// try to use an item with the given flag on ourself.
|
|
|
|
// returns B_FALSE if successful
|
|
|
|
int useitemwithflag(lifeform_t *lf, enum FLAG whichflag) {
|
|
|
|
object_t *o;
|
|
|
|
for (o = lf->pack->first ; o ; o = o->next) {
|
|
|
|
if (hasflag(o->flags, whichflag)) {
|
|
|
|
if (aiobok(lf, o, lf)) {
|
|
|
|
if (o->type->obclass->id == OC_POTION) {
|
|
|
|
if (canquaff(lf, o)) {
|
|
|
|
quaff(lf, o);
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
} else if (o->type->obclass->id == OC_SCROLL) {
|
|
|
|
if (!readsomething(lf, o)) {
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
|
|
|
} else if ((o->type->obclass->id == OC_WAND) && getcharges(o)) {
|
|
|
|
// if wand, use it on ourself
|
|
|
|
if (!operate(lf, o, lf->cell)) {
|
|
|
|
return B_FALSE;
|
|
|
|
}
|
2011-06-20 13:16:30 +10:00
|
|
|
// here on are special cases
|
|
|
|
} else if (o->type->id == OT_ASHCONCEAL) {
|
|
|
|
throwat(lf, o, lf->cell);
|
2011-03-16 15:45:46 +11:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// failed to use an item
|
|
|
|
return B_TRUE;
|
|
|
|
}
|
2011-04-14 09:44:29 +10:00
|
|
|
|
|
|
|
|