ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/TODO
(Generate patch)

Comparing deliantra/server/TODO (file contents):
Revision 1.5 by root, Sat Sep 16 13:11:19 2006 UTC vs.
Revision 1.119 by root, Thu Mar 13 12:20:50 2008 UTC

12006-09-16 01:38:16 17 objects in mortal queue 1Here are listed some todos which should be looked into sometimes.
2
3* drakkar pking system assumed to be well-balanced: any documentation?
4
5* tutorial in client
618:24:32 <qwe> just a note
718:25:19 <qwe> about the inscription change, the tutorial have to be update, since I
8 was reading it (by then) to get what was wrong and the instructions
9 there are outdated.
10
11* missile weapons seem to be buggy w.r.t. applying things to players like
12 their sp attributed. see handcrossbow, which has eg. sp 30 set, which
13 increases their spell regen.
14
15* when detect monster is casted while eg. a ball of lighning is active, it's not
16 shown long enough for the player to notice (probably due to LOS calculations).
17
18* important: mobs can cross shop-boundaries using shopmats. this must not be :/
19
20* important: word-of-recall cast before dieing will recall you out of nimbus.
21
22* drop all and get all will result in trying to pick up yourself
23 (likely harmless)
24
25* IMPORTANT: 05:13:11 -cfbot:#cf- [Lurker] Oh, and autopickup arrows.
26 05:13:21 -cfbot:#cf- [Lurker] picks up your own in-flight-arrows.
27
28* IMPORTANT: create bomb, take it (owner gets cleared), bomb expldoes in inventory => harms players b/c no owner
29
30* sync_job in random map prepare still exists.
31
32* IMPORTANT:
33 "cannot change rod when levitating"
34
35* vanessa kept active because of:
36 owner of: {cnt:1122393,uuid:<1.26f992059>,name:"spear",flags:[17,24,111],type:15}(on <freed objects map>@1+1)
37 owner of: {cnt:961349,uuid:<1.26f96ab45>,name:"throwing dagger",flags:[17,24,111],type:15}(on <freed objects map>@1+1)
38 -> owner probably got set somehow after destruction, but how... (must be sth,. with thrown ob).
39
40* dragon cannot apply ipo writing pen (lack the body), but use skill fine
41
42* 2007-09-17 21:15:39.7368 BUG: process_events(): removed object is on active list: {cnt:2940058,uuid:<1.255dcdc9a>,name:"mover",flags:[2,8,11,64,103],type:40}(on /quests/peterm/Demonology/GroundLevel@10+17)
43
44http://stonewashed.net/sfx.html
45
462007-09-23 02:41:37.7100 name sand, arch pstone_1, type 0 with fly/walk on/off not handled in move_apply()
472007-09-23 02:41:37.7101 name bench, arch bench_2_1_1, type 0 with fly/walk on/off not handled in move_apply()
482007-09-23 02:41:37.8285 name bench, arch bench_2_1_1, type 0 with fly/walk on/off not handled in move_apply()
492007-09-23 02:41:37.8297 name bench, arch bench_2_1_1, type 0 with fly/walk on/off not handled in move_apply()
50
51http://www.anthro.wayne.edu/museum/MuseumCollectionSummary/Pictures/Ren%20Cen/stoneware%20bottle.jpg
52
532007-08-21 18:38:41.9104 [ABT] [server_tick()] /localvol/root/src/cf.schmorp.de/server/server/main.C:500
542007-08-21 18:38:41.9103 [ABT] [process_events()] /localvol/root/src/cf.schmorp.de/server/server/main.C:275
552007-08-21 18:38:41.9103 [ABT] [process_players1] /localvol/root/src/cf.schmorp.de/server/server/main.C:245
562007-08-21 18:38:41.9103 [ABT] [handle_newcs_player(object*)] /localvol/root/src/cf.schmorp.de/server/server/player.C:2271
572007-08-21 18:38:41.9102 [ABT] [??] /localvol/root/src/cf.schmorp.de/server/socket/loop.C:106
582007-08-21 18:38:41.9102 [ABT] [std::deque<command, slice_allocator<command> >::pop_front()] /usr/include/c++/4.1.3/bits/stl_deque.h:1059
592007-08-21 18:38:41.9102 [ABT] [player_apply(object*, object*, int, int)] /localvol/root/src/cf.schmorp.de/server/server/apply.C:2612
602007-08-21 18:38:41.9102 [ABT] [manual_apply(object*, object*, int)] /localvol/root/src/cf.schmorp.de/server/server/apply.C:2509
612007-08-21 18:38:41.9102 [ABT] [apply_special(object*, object*, int)] /localvol/root/src/cf.schmorp.de/server/server/apply.C:3145
622007-08-21 18:38:41.9102 [ABT] [object::change_weapon(object*)] /localvol/root/src/cf.schmorp.de/server/common/object.C:506
632007-08-21 18:38:41.9101 [ABT] [LOG(int, char const*, ...)] /localvol/root/src/cf.schmorp.de/server/common/logger.C:60
642007-08-21 18:38:41.9101 [ABT] [log_backtrace(char const*)] /localvol/root/src/cf.schmorp.de/server/server/./cfperl.xs:1126
652007-08-21 18:38:41.9100 [ABT] 2007-08-21 18:38:41.5967 Hanke changed to unapplied weapon {cnt:3617314,uuid:<1.22acc8d86>,name:"generic builder",flags:[29,80,98],type:160}(on ~Hanke/brest/apartments/brest_town_house@11+21)rpse
662007-08-21 18:38:41.5967 Hanke changed to unapplied weapon {cnt:3617314,uuid:<1.22acc8d86>,name:"generic builder",flags:[29,80,98],type:160}(on ~Hanke/brest/apartments/brest_town_house@11+21)
67
68
69* prisondemadness in pod/books.pod ends in =head1 Order of the gravestone, rather mysteriously.
70
71* for the future: adjust sp regenration in that way that it doesn't
72 regenrate when food is below < 200 (a magic constant)
73
74* IMPORTANT: create a no_drop flag and set it on the nexus (or somehow avoid
75 stuff beig dropped on the teleporter there).
76
77* gcfclient wings books at <4kb of text. thansk a lot mr. stupid fucking idiot
78 crossfire developer who thinks that 4k is enough for everybody.
79 implement a workaround, either just telling people that their book
80 is winged or not sending it as book but as separate paragraphs or multiple
81 books. must be multiple paragraphs:
82 /* 4096 is probably way overkill, but 1024 could very well be too small.
83
84* level 100 inscription with 4 kills: a single random_Scorll treasure
85 item in the ancient mages of forgotten town palace create
86 many *hundreds* of actual scrolls when instantiated?
87
8807:20:32 -cfbot:#cf- [Incen] that's odd. a pile of dust called "potion"
8907:21:05 -cfbot:#cf- [Incen] it was dust of piercing vision
9007:21:20 -cfbot:#cf- [Lina] seems to happen when picked up and unidentified
9107:21:37 <schmorp> unidentified they are called potions?
9207:21:48 -cfbot:#cf- [Incen] ayup
9307:22:06 -cfbot:#cf- [Lina] dusts/potions/figurines/balms
94
95* totla invisibility is too hard to get. monsters should attack the
96 player when hit by him or his spell anyways.
97
98* IMPORTANT: cnanot enter G<xxx|yyy> in chat/irc, as it gets expanded
99
100* grammar: 2007-07-05 08:46:07 msg: You open up deep wounds sandy with a brutal swipe.
101
102* is_animated is sometimes written twice when saving, because it must be off when
103 no animation is set. this does not work, of course, because later the flag is written again.
104 should probably be fixed on load, not on save.
105
106* 20:09:34 -cfbot:#cf- Teufelhunden was killed by ball_lightning
107 obviously this should be the real name, not the arch name.
108
109* new players sometimes seem to lack statistics
110
111* 21:37:28 -cfbot:#cf- [Drakna] yeah see meditation heals but it eats up food. but if yoiu have no food you can still
112
113* IMPORTANT: client structures (ns) seem to never get released ever.
114
115* IMPORTANT: never-defined archetypes should be flagged as such and a suitable
116 check fucntion should be designed - the same for empty treasurelists
117 and similar stuff.
118
119* IMPORTANT: reloading archetypes should create copies of used archetypes, letting
120 existing objects refer to the old archteypoes (for purposes of saving).
121 UPDATE: this is done, but an upgrade of in-memory objects is highly
122 advisable, as well as testing wether reloading actually works :)
123
124* there is no "fire 0" to start firing on yourself as opposed to fire 5 etc. which starts
125 firing into a specific direction. fire 0 only fires once (this is a bug, but most clients
126 move firing on yourself on non-shift-kp_5 because servers do not support the shifted
127 semantics).
128
129* /morok_dun/mines1 n world_120_109 does not exist, but the other mine promises a quest
130 there. be inventive.
131
132* victim {cnt:55798339,uuid:<1.149eb6a43>,name:"ice",flags:[0,8,103],type:23}(on /whalingoutpost/misc/frostcavern1@49+16) already dead in hit_player()
133 sanctuary etc. hits lava-"ice" and kills it in the process. other stuff seems to not work as expected with sanctuary
134 hitting items it shouldn't.
135
136* can users in theory steal the gems out of their snitchangel pet monsters?
137 => the nodrop mechanism used for that should also disallow stealing.
138
139* bowmode should offer different capabilities given on level of user
140 (Leonov).
141
142* player_sold 1 still gets added to maps at some point, but server cnanot read it.
143 resolve the situation by either implementing it fully or removing it fully.
144
145* climbing, meditating, levitating skills etc. should give you experience per use
146
147* rewrite banish in perl (low priority)
148
149* nekosan snatches the fish, which stays in the playr inventory.
150 remove should automaticlaly send esrv_del_item, and nobody else should,
151 for inv items. same for ipo.
152
153* 2007-02-03 03:49:06.010 loading /opt/crossfire/share/crossfire/maps//navar_city/city1houses (43970)
154 2007-02-03 03:49:06.011 Discarding object without arch: texas
155 2007-02-03 03:54:36.926 loading /opt/crossfire/share/crossfire/maps//navar_city/misc/city1mermaid (15753)
156 2007-02-03 03:54:36.926 Discarding object without arch: event_say
157
158* IMPORTANT:
159 entering instantiated random maps whose meta file is missing freezes the player.
160
161* random speed should result in randomised initial animation face.
162
163* example of why a player was kept alive long after having logged out.
164 those are probably in a player inventory.
165 2007-01-23 14:32:17.413 player-scheduler refcnt nulla 2,1 9,9
166 2007-01-23 14:31:40.821 owner: {cnt:1291946,uuid:<1,bd23b6aa>,name:"trident",flags:[17,24,111],type:15}(on (null)@1+1)
167 2007-01-23 14:31:40.822 owner: {cnt:741779,uuid:<1,bd1b5193>,name:"throwing dagger",flags:[17,24,98],type:15}(on (null)@1+1)
168 2007-01-23 14:31:40.824 owner: {cnt:1403336,uuid:<1,bd2569c8>,name:"throwing hammer",flags:[17,24,111],type:15}(on (null)@1+1)
169 2007-01-23 14:31:40.824 owner: {cnt:1291941,uuid:<1,bd23b6a5>,name:"throwing star",flags:[17,111],type:15}(on (null)@1+1)
170 2007-01-23 14:31:40.825 owner: {cnt:1294661,uuid:<1,bd23c145>,name:"axe",flags:[17,111],type:15}(on (null)@1+1)
171 2007-01-23 14:31:40.828 owner: {cnt:1323712,uuid:<1,bd2432c0>,name:"spear",flags:[17,24,111],type:15}(on (null)@1+1)
172 2007-01-23 14:31:40.828 owner: {cnt:742413,uuid:<1,bd1b540d>,name:"spear",flags:[17,24,74],type:15}(on (null)@1+1)
173 2007-01-23 14:31:40.828 owner: {cnt:1420216,uuid:<1,bd25abb8>,name:"throwing dagger",flags:[17,24,111],type:15}(on (null)@1+1)
174
175* 2007-01-15 03:17:33.547 victim (arch door_look_1, name ice) already dead in hit_player()
176 => use debug_desc
177 => find out whats causing it
178
179* training center (kobold etc.) does not stop working after 30-40min
180 but goes on for 2 hours _at least_.
181
182* /mlab/cwdccastleofmarquis3, goto and then charm => very very high cpu usage.
183 original crossfire: 100% cpu usage => freeze
184 after mapspace::update fix: 40%
185 after map protocol optimisation: 15%
186
187* 2007-01-14 21:15:58.605 Fiery, Wist's fervent pupil was hit by counterspell with counterspell attack.
188 this is simply counterwall hitting monsters. but why does it happen?
189
190* 2007-01-15 01:02:00.183 Query_cost: item {cnt:1636781,uuid:<1,a1f0f9ad>,name:"boulder",flags:[17],type:0}(on ?random/d8250dbd970319bd5f35fb4f2b9b46a9@44+34) hasn't got a valid type
191 fix once and for all please. a) type 0 is valid b) maybe the boulder should have another type.
192
193* animated weapons should come back to the player when he dies/disconnects?
194 2007-01-14 18:50:07 info: winvirus chats: Could you make it so if you have an
195 animated weapon out and you disconnect, that it'd simply a) fall to the
196 ground or b) return to your inv? Rather than disappearing into the void of
197 nothingness.
198
199* 16:09 <@schmorp> und eigentlich soltlen dort alle leeren maps gelöscht werden
200 16:09 <@schmorp> so daß nur maps existieren, die overwirtes enthalten
201 16:09 <@schmorp> erinnert mich dran
202
203* map converter
204 elmex: because of the faces and all the other nice things - i guess
205 [HUH?? please specify or remove]
206
207* implement no-drop-on-destroy flag (done)
208 for example to remove the specialcases for books that are destroyed
209 and contain spells (should be done)
210
211* look at these logs:
22006-09-16 01:38:16 Got unknown value in map header: race human 212 2006-09-16 01:38:16 Got unknown value in map header: race human
32006-09-16 01:37:42 BUG: remove_ob(): name pedestal, archname pedestal destroyed leaving object
42006-09-16 01:37:33 invalid type defined in shopitems in string cloak:5;spellbook:35;ring:15;book:28;scroll:25;wand:28;armour improver:2;weapon improver:2;rod:32;potion:10;horn:35;amulet:17;power_crystal:25;gem:0;lamp:-10;*:-90;
52006-09-16 01:37:17 Map darkness for poison on /quests/peterm/FireTemple/Fire2 is too high (6) 213 2006-09-16 01:37:17 Map darkness for poison on /quests/peterm/FireTemple/Fire2 is too high (6)
214 2007-01-15 02:46:23.746 winvirus has two money entries of (silvercoin)
215 2007-01-15 02:46:23.746 winvirus has two money entries of (goldcoin)
216 2007-01-15 02:46:23.746 winvirus has two money entries of (platinacoin)
217 2007-01-15 02:46:23.745 winvirus has two money entries of (royalty)
6 218
7requirements need to be dcoumented: json-sykc, safe:hole, gperf, glib, std::tr1 (::unoredred_map) 219* make sure custom keys get saved in same order as they are being loaded.
8 220
9Various bits, in no particular order. This is far from a complete list - 221* wishlist: implement buildable "safe floors" for apartments. or make all apartments safe and
10however it keeps growing as various problems are discovered that 222 implement buildable non-safe floors.
11don't have an easy fix. Some of the things are put here just so my mailbox
12doesn't overflow.
13
14------------------------------------------------------------------------------
15Known Bugs:
16
17These are things which don't work as expected, but are difficult enough to
18fix that they get put here:
19
20Make lighting not go through walls. Maybe move it to the 'set_wall'
21function - hard to do so that it is still somewhat efficient yet the same
22light source does not illuminate the same space multiple times.
23
24If a shop is placed in a random map (special map), the objects below the
25shop wall stick around - normally not much a problem, unless it is placed
26in a glory hole (treasure level), in which case coins are now beneath the wall.
27
28Slaying is sloppy in that it uses strstr. This, an item that has 'slaying
29giant' (like holyword of mostrai) will kill ants. strstr matching was most
30likely added to support comma seperated slaying lists (slaying demon,undead).
31However, the code should really insist on exact matching, and if necessary
32break apart the comma seperated list. Probably best to make something like a
33'does_slay()' function which can be used all over the place (consistent
34behaviour is a good thing). If performance for this becomes an issue, making
35a slaying a set of pointers could be done (char **slaying), and it gets filled
36in at load time, and at save time, gets filled in the opposite direction.
37However, from a simple basis, a check in does_slay() can be done to see if
38slaying does contain a comma, and if not, just do simple strcmp, and only if
39it does does extra work need to be done. MSW 2003-03-28
40
41
42------------------------------------------------------------------------------
43Future feature requests
44
45- Change code so that if a player kills another player, he gets no
46 exp. Perhaps also log number of times a player has killed another player
47 so problematic player killers can be more easily tracked. This should
48 be pretty simple, but is mostly here because I want to re-write the
49 kill_player for the new skill code, and that should clean things up
50 up a bit to make this code easier to put in.
51
52- Allow possibility of one players magic not harming another player (should
53 probably be a flag/settings value) - given that most spells are large
54 area of effect spells, this may make cooperative adventuring easier.
55 However, this could be a little odd - if my friend it immune to my fireball,
56 shouldn't I be immune to my fireball also? But if that is allowed, you
57 now have the case people could cast fireballs on themselves and hit a
58 whole bunch of surrounding monsters. Perhaps allow this no damage
59 attribute based on different spells, eg, it could be argued that for bolt
60 spells you'd aim it so that it doesn't hit your friend, but that same
61 claim can't be made for fireballs. Or maybe add something like the
62 ability of spells to not take effect to some range, eg, 'cast lightning
63 bolt range 6' or the like, in which case it goes 6 spaces before the
64 lightning actually starts.
65
66- Refine blocking of spaces - instead of 'blocks all or nothing', ability
67 to block walking but not flying, block swimming (for future expansion
68 of oceans). Also, add different LOS blocking for differing conditions -
69 if flying, jungles shouldn't block line of sight, but they still should
70 if your walking. Also, add seperate blocking (pass) for monsters and
71 players, eg, block_monster and block_player. What should probably be done
72 is make this a bitmask or the like with multiple possiblities. If the
73 object doesn't have another bitmask set, object can't pass through. For
74 compatiblity reasons, no_pass should set all the new no_pass_.. bits.
75 Note that these bits should also be extended for movement of more than
76 just the player, eg, spells, diseases, etc. Thus, you could have something
77 like a 'no spell propogation' space - players could still cast spells on
78 themselves, but range spells don't go anywhare.
79
80- Ability for stores to set different prices for goods (eg, remote store
81 charges more for the services it provides).
82
83- dm command 'Follow' which lets him see what a player is doing, where he
84 is going, etc.
85
86- Further control on what players can do on maps/spaces. For example,
87 prohibit players from shouting, attacking others, issuing tell,
88 etc.
89
90- Change inscription - instead of looking at range field of the player,
91 have the spell to be inscribed part of the inscription command, eg
92 'inscribe scroll of identify'.
93
94- If player tries to login with same name/password as a character currently
95 active, drop the old connection and associate the player with the new
96 connection. Useful if connection is dropped but server hasn't detected
97 it yet.
98
99- Generalize the code better - split between 'rules' and 'engine'. The engine
100 would be the aspect of loading/saving objects, dealing with maps, and
101 basic object support (exits, levers, etc - things useful for any working
102 system). The 'rules' would be the more general genre of the game -
103 a science fiction game would have a different set of rules than the
104 fantasy game. And even the same genre may have a different ruleset
105 (ie, adding new skills). This is sort of like the current server/common
106 split, but goes a bit more than that - the engine would be able to compile
107 into an executable with the addition of some basic stub functions,
108 but playing as such would really just amount to a ghost moving accross
109 a world which time is pretty much stopped (as monsters would be in the
110 rules side, and not engine).
111- Changing the stat generation system - instead of roll based, give some
112 number of points. This makes it easier for players to choose what they
113 want to play - otherwise, I think some clients will be written that will
114 do this for the players in any case.
115- Change draw_info so that server tells client what type of message it is
116 instead of the color. Client can then decide what color to draw it
117 or other special handling.
118- Change code so that objects 'spill over' to other spaces if too many
119 get piled in one space.
120- More/better maps. Add more quest maps or maps to take advantage of
121 newer features (ie, church maps for each god, maps for alchemy quests
122 or with rare ingredients, etc)
123- Add some identifier for unique objects so that if the player that has
124 a unique objects quits the game, the object goes back into circulation.
125- Add flag to make price of objects not affected by charisma or other
126 abilities. This should act like gems do right now (pay 1.03, receive
127 0.97). In this way, gems don't have to be hardcoded, and other items
128 could be similarly set. Nuggets should be added to this list - its possible
129 to make small amounts of money alchemy silver and then selling the nuggets.
130- Add/change door handling - make them more real life - they stick around,
131 can be opened, closed, different keys for different doors, etc. This
132 sort of mimics the gate behaviour, except keys may need to open them, etc.
133
134- Add armor quality, with armor being damaged as it is used. Add repair
135 shops to go with this. Uncertain if people really like this idea or not
136 Further notes from mailing list:
137 Item has current quality rating - different items have different max
138 ratings - magic would increase its rating. ITem operates normally
139 when it has 50%+ of its quality. At less than 50%, item loses
140 functionality in a limited fashion (eg, multiply quality percentage
141 by two to determine effective abilities in terms of percentage.)
142 Item max qualities should be in the same range for most all items, so
143 that powerful items given to low level characters get dinged up just
144 as fast as their normal items.
145 Diminished effects would be handled in fix player.
146 Cost to repair based on how damage item is (100 = half cost,
147 0 = full cost). Items can be repaired on pro-rated basis. Repair
148 anvils would need to get added.
149 Items are damaged based on how much damage player takes - more
150 damaging attacks have higher chance to do item damage. Amount of
151 damage done to items might depend somewhat on damage done to player.
152 Acid attacks would be changed to use this same code - they just
153 always damage items at a much higher rate. Different ideas is that
154 chance of item damage is fixed, but amount done is based on damage
155 sustained. Other idea is that chance of damage is based on
156 real damage (percent, square root, other adjustments, perhaps
157 ignoring low values), but damage is somewhat constant.
158 Should probably be tunables in settings to determine amount of damage
159 done to item, and how often item is damaged.
160
161- Change players draining exp from others. Currently, there are problems
162 in that it not adjusted based on levels, so there are various abuses
163 draining from low level characters. Also, generally it is not possibled
164 to drain exp from monsters. Possible ideas:
165 - Change draining from other players to be a ratio of levels (ie, a level
166 10 character draining from level 5 only gets half the exp.
167 - Ability to drain exp from monsters (might make drain weapons more
168 useful). Maybe have monster lose some portion of the exp he would
169 award when drained, and try to adjust level/other stats downward as
170 it looses exp?
171- Fix map loading/saving so it can do it over several ticks for smoother
172 performance (maybe thread it?)
173- Add adjustments to objects that adjusts chance of skill success.
174 Eg, objects the player use may adjust the characters effective level in
175 using a skill. Likewise, objects/monsters could have resistances to
176 certain skills (eg, skill_resist values).
177
178- Delete oldest swapped map in case the TMPDIR disk fills up while
179 swapping out a map. To do this, detection of error on save would need
180 to be done (presently, the fputs are done without return value checks.)
181
182- Seperate weapon speed and real speed for players - one is used for attacking
183 only, and the other for movement only. Right now, a characters real speed
184 could become the weapon speed when they attack something.
185 Make speed more variable for some actions (limit how much can be picked up
186 at once, certain skills should take longer than others.)
187- Make monster pick up more intelligent - only pick up items if they may be of
188 some use (perhaps base this on int - stupid monsters might pick up everything)
189- Add different dragon scales, in which different types of armor could be made
190 from.
191- Add random terrain type square. Idea being you might make something a
192 random tree, and when the map is loaded, it chooses a tree random. This
193 would allow some variation in maps each time with possibly keeping the bulk
194 of it the same (Depending how extensively the random trees are used.
195- Allow transportation objects (ie, horses, carts, dragon, griffins, boats,
196 etc.) Flying objects should probably ignore line of sight for most
197 objects (you are above the forest or mountains, but then fog should still
198 affect things). To do this, a terrain type value probably needs to be added,
199 and this acts a bitmask. Thus, transports compare bitmasks to see if
200 travel through that is allowed.
201
202- Change identification handling. Possible idea is to have different levels
203 of identification, with low level only showing basic information, and high
204 level showing full detail. Skill identification should basically use this,
205 with the skill level determining actual level. Depending on level of
206 identification, different information may be revealed (value, face,
207 name, etc).
208- Allow monsters to be randomly generated on a map without generators (ie,
209 orcs show up in forests or whatever.) Uses this as an option to use instead
210 of the existing random encounter code.
211- Have monsters potentially attack others if they are damaged by a friend.
212 It looks like the code should already allow this, but I think the problem is
213 that monster reevaluate their objectives too often, and which time they
214 switch back to attacking the player.
215- Allow treasure lists to be specified as part of the objects message
216- Perhaps print out a message shortly before a spell effect is about to end.
217- Rewrite all variables, using own typedefs of type:
218 [us]int8, [us]int16, [us]int32 : Variables that should be at least that
219 size (is there actually anything that needs to be precisely some size?)
220 These typedefs can be set depending on system type.
221- If communication remains the same (keyword matches),
222 highlite the keywords or in some way make them more noticable so players
223 can know to use them. This is no worse than many commercial games which
224 give you just a few choices to choose from to continue a conversation.
225- Statues turning into golems when activated (like doors).
226- Figurine (when a figurine pet dies, it becomes a figurine, and can be reused)
227
228- Ability to aim at targets not in the front row. This should apply for
229 most range attacks (thus, in a group of orcs, the ones not immediately
230 around the player could still use missile weapons.)
231
232- Better sound support - instead of having hardcoded events for sounds (eg,
233 button push, door open, etc), sounds should be tied to objects, with some
234 number of sound events (eg, object active, object destroyed, object moved,
235 objected attacked, repeat forever, random, etc). Information about how far
236 they can be heard (in spaces) should also be contained. When a sound is
237 played, then do a simple check to see nearby players, and if one is within
238 potential range, then check for intervening objects (walls). Walls would
239 have some dampening effect, counting for more spaces (something behind a
240 wall may sound 5 spaces further away.)
241 Exactly how to store the sound information would need to be investigated -
242 the cheapest in terms of memory would be something like how animations are
243 done - have a global array of the sound information. However, sound
244 information would be tied pretty closely to object types (eg, if the sound
245 info said its used for both apply and destroy, then if some other object
246 used that same info, it'd also get that apply and destroy behaviour). This
247 is probably good enough - one could make individual sound information
248 sequences for the individual parts if those were needed.
249
250- Make the elevation of terrain adjust line of sight. If on the tallest
251 mountain, you would be able to see over neighboring mountains and not
252 get your view blocked.
253
254- Change attacktype handling. Currently, attacktypes are just bitmasks,
255 so if a weapon does 'dam 30' it does 30 dam for all attacktypes it has
256 set.
257 The idea is to make an array of dam values for the attacktype, so
258 you could have a weapon like 'phys 12, fire 6'. This then gets adjusted by
259 appropriate resistances the creature has.
260 For attacktypes that are effects (slow, paralyze, etc) dam should be the
261 potency of the effect (number of ticks player is effected).
262 If an item has multiple dam values set, then it would do damage from all
263 the attacktypes (eg, a phys 10 fire 3 is something like a flameblade
264 which does mostly physical and a little fire).
265
266- Improve material code:
267 1) Make material file more readable. Mostly, make it one entry per
268 line (no comma seperated lists), with values 0 by default, so only
269 values that are different need to be entered. Maybe make materials
270 archtypes, and then use treasurelist type setup below?
271 2) Remove random material selection from the material file and put it
272 elsewhere - basically, more fined grained material control (silver daggers,
273 but not silver axes for example). Perhaps the idea of material
274 type treasurelists?
275 3) Remove material bitmask. Instead, have a pointer to the actual materialtype
276 struct, and determine basis on that (eg, this could burn up, etc). If
277 necessary, add some appropiates field to the material struct that
278 denote those abilities.
279 4) Suffix to be used for alternative image names and animation sequence
280 for objects (eg, dagger.111.gold for example)
281 5) Some way to denote that even though 'materialname' is set, that the loader
282 should still do appropriate adjustements for the material. Thus, if a
283 person sets the material in the editor, the server will adjust the values
284 appropriately.
285 6) Allow for multiple materials in same object. Trickier to do this.
286 7) More hints for materials. Eg, is it a notable material that should be
287 included in the object name, or mundane? Likewise, is it a type of material
288 that can be reconstituted (metals) or not (wood, stone, etc)
289
290Improve exit/teleporter code. With tiled maps, it is now desirable to move
291 monsters between those maps, so exits should be able to move monsters. Add
292 bitmask/flag to exit to denote what it moves - players, monsters, or
293 objects.
294
295Add exp rewarder type object. It's basic properties:
296 1) amount of exp to reward the player (stats.exp)
297 2) Skill to award the exp to (skill field)
298 3) Flag to denote we should teach the player this skill if they don't
299 have it (can_use_skill flag?) In this way, rewarders could grant
300 skills to the player.
301 4) Different ways to be activated (walk on/fly on, as well as it being
302 activated from something that 'pushes' it (aka, magic mouth, button,
303 etc)). In the case of another object activating it, the player
304 would still need to be on the space the object is on.
305 5) Use the 'slaying' field to denote that if the player has a force in
306 his inventory by the same name, he doesn't get the reward, and if
307 they don't have such a force, we add one to the player (so you can't
308 get the same reward repeatedly). Use something like 'value' or
309 other field to denote how many ticks the force lasts for. If value
310 is zero, then force never expires
311 6) Use nrof to denote how many times the reward works. Eg, if nrof
312 is 1, then once a player uses it, no one else can get that reward
313 until the map resets.
314
315Secondary features:
316
317These are more features (low priority at that) to be added. Some of these
318may be related to items above, or they may be things that just would not
319add a lot to the game (IMO).
320
321- Flag so that there is a random chance that an object will or will not appear
322 on a map (this is perhaps better handled by treasurelists. Unfortunately,
323 treasurelists can not be set in the maps).
324- Ability to have pixmaps set in maps or otherwise be able to load images
325 without having to rebuild the default images.
326

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines