From bigdog at cablelynx.com Wed Apr 24 23:07:29 2002 From: bigdog at cablelynx.com (Andrew) Date: Thu Jan 13 17:53:04 2005 Subject: [cf-admin] Creating a server Message-ID: <000801c1ec0e$b8805540$6401a8c0@mickb> Yes i am wanting to start a server on crossfire myself can you help me or tell me how i can do that? -------------- next part -------------- An HTML attachment was scrubbed... URL: http://shadowknight.real-time.com/pipermail/crossfire/attachments/20020424/fde78eb4/attachment.html From crossfire-devel-admin at archives.real-time.com Sat Apr 27 21:36:07 2002 From: crossfire-devel-admin at archives.real-time.com (crossfire-devel-admin@archives.real-time.com) Date: Thu Jan 13 17:54:04 2005 Subject: [CF-Devel] Issues I'de like to bring up References: Message-ID: <000401c1ee5d$741b4d00$0802a8c0@KAMERIA> ----- Original Message ----- From: "Tim Rightnour" To: Sent: Monday, April 28, 2003 9:33 AM Subject: Re: [CF-Devel] Issues I'de like to bring up > > On 28-Apr-03 Justin Zaun wrote: > > Agreed. but the boring people should have some built-in AI. hold some > > kind of converation that really don't give up any info at all. > > Heh.. how fun/annoying would it be to put an eliza engine on all the speechless > NPC's... :) Of course you would have to seed it with game relevant > information, like possibly lore. > > Could do things like look for basic words like "hello hi help" and have it just > spit out a random peice of lore, and if you say something more complex, have it > just generate an eliza response. Of course.. to make it interesting, much like > rumors in nethack, we would have to preload some false ones. > That was part of the idea for lore, to feed conversation by key word as well as generate books. I was playing with Megahal one day and thought it would be neat to have some NPC's hooked to a couple of 'personalities' with some game information. Many years ago on PostModernMoo, I played with markov chainers that would listen in on conversations and the spit out a jumble of orderly nonsense. I always wanted to do a site where I had 'great writer' markov chainers filled up with all their works and you could generate a pseudo story. Anyway, they chew up CPU, but then again that was when 40mzh was bleeding edge (hey, maybe have the engine on the clientside...) Of course I didn't think to jumble up the lore, but feed it out random based on weight and keyword. I didn't think it would be all NPC's but there is no reason it couldn't be (unless it was onerous for players to hear all the chatting.) Since it will take a while to build up a lore pile, I figure there is time to work out the details. Heck there is still some waffling on the data format. Something a bit more than a single keyword -> lore table would be required I think. Andi suggested location and level information has been kicked around. False rumors is a new twist - a good idea, I guess there will have to be a little guide for lore creation including ranking and lies guidlines. Maybe even a true/false field for maintainers to see (maye also hooked to a player's charisma...If they don't like you they lie more often...) _______________________________________________ crossfire-devel mailing list crossfire-devel@lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel From crossfire-devel-admin at archives.real-time.com Sat Apr 27 23:28:16 2002 From: crossfire-devel-admin at archives.real-time.com (crossfire-devel-admin@archives.real-time.com) Date: Thu Jan 13 17:54:04 2005 Subject: [CF-Devel] More Lore Message-ID: <000801c1ee6d$1f48df80$0802a8c0@KAMERIA> Ok, more thoughts on lore: For generic lore in the arches I believe it is established that it is sufficient to populate the lore <> endlore field with weighted values, e.g. arch orc <..> lore @5 Orcs are the foul brethern to goblins. @4 Dwarves and Orcs have a strong hatred of one another. ... endlore Whereby the object name, level and other information could be grabbed from the arch if necessary too. If you customize a creature you need to grab this out of the maps however, e.g. if you make a special dragon, you can put in special lore, it is stored on the map. This has to be picked up during the map lore collection however. This would capture the arch name and name if the object had one (have to remember to check for no name...) but I don't know how stuff like level and such can be easily snagged with a script if it has not been changed (look up the arch?- yuck) For map and quest type information this is not going to work, some maps have nothing of interest, and some like the city maps have many many points of interest. If you were to go with a header file, you would need to account for different topics. Also this information can be more tricky to manage since it is more specific. This is why I think a specific maplore arch object would be good in addition to the lore field. As an invisible object, map makers can put many different maplore arches on the map and they can be pretty chock full of info. Say name is primary key, the mesg field can be used for a list of other key words perhaps. Other fields can be assigned for holding information too, the level field for level information, or title field for location information or whatever. This can be easily collected via script into a messages type file for actual use in the game, (even collected via dm command if need be), the main point of storing the lore with the maps being portability and customization. The only thing is that both types of lore should follow the same data format, style guidelines (including truth and falsehood, weighting and level and key word information) and be accessable through the same 'lore engine', although not perhaps in the same way... -------------- next part -------------- An HTML attachment was scrubbed... URL: http://shadowknight.real-time.com/pipermail/crossfire/attachments/20020428/800eedfc/attachment.html From crossfire-devel-admin at archives.real-time.com Mon Apr 29 04:59:47 2002 From: crossfire-devel-admin at archives.real-time.com (crossfire-devel-admin@archives.real-time.com) Date: Thu Jan 13 17:54:05 2005 Subject: [CF-Devel] Materials (was FW: DIAMONDS) References: Message-ID: <001801c1ef64$9938f760$0802a8c0@KAMERIA> Well since by now this thread has digressed almost to the point that we are debating materials *as* player classes, solid gold dancers handing out diamonds, and DM powers for everyone, I suggest it die a quiet death. _______________________________________________ crossfire-devel mailing list crossfire-devel@lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel From crossfire-devel-admin at archives.real-time.com Mon Apr 29 05:07:02 2002 From: crossfire-devel-admin at archives.real-time.com (crossfire-devel-admin@archives.real-time.com) Date: Thu Jan 13 17:54:06 2005 Subject: [CF-Devel] More Lore References: <000801c1ee6d$1f48df80$0802a8c0@KAMERIA> <3EAE276B.1020101@sonic.net> Message-ID: <001b01c1ef65$9c4fdee0$0802a8c0@KAMERIA> Ok, I hope you don't get the idea that I'm trying to escalate scope every message, I am primarily concerned with establishing a good and useful repository of lore. How this is used in the game is of interest at the moment only in that it is properly supported by the data format. However since people are suggesting different things, I am collecting further information on how to proceed. I do propose to do any of the necessary remaining work to implement this since the lore field has been incorporated into the arches. Any code needed to collect the lore I'll write (initially in Python, but I will translate to Perl if I have to). I will of course leave a lot of room for writing the actual lore however, and any code that uses this data. I don't believe any further changes to the server code is necessary unless it is decided to embed a lore tag in the map data format (hey, I might even be able to manage that myself too.) I will try to be specific to the point of annoyance on this. Anyway here is how I thought I was seeing it working. There are two types of lore on the table here, generic lore in the arches, and specific lore in the maps. I'll start with the basic proposal: generic lore in the arches. Generic lore is such that it applies to a class of objects like a monster or a ability or whatever. This will never show up in a map. Lore in the arches is entirely contained in between the lore <-> endlore tags. It should look like this: arch mogo name mogo [...] all usual arch info lore @chance 3: A mogo is found useful for foobar. @ chance1: Some mogo are cursed with juju. endlore end This information is collected by script into a file that looks like: mogo A mogo is found useful for foobar. Some mogo are cursed with juju. [...] I did plan to use XML format, but if this is a problem, it could just as easily be written like so: name mogo chance 3: A mogo is found useful for foobar chance 1: Some mogo are cursed with juju. end Then this file is used to generate anything from books to NPC messages. The rank is calculated within that item entry(and not within all lore), so the chance in this case of seeing the first line is three in 4 and the second line is one in four. The name is pulled from the arch name (I had planned on collecting by name so that if there were a couple of arches with the same name they would all be one entry) and while it does not have to be, there needs to be some way to seperate the groups and this seemed simplest. It also provides a convienent handle. That's it for general lore. Map lore is specific, when making a map, if the mapmaker *changes* the lore of an arch they place on the map, it is going to get written to the map (try it...). So this should be collected too since it is there anyway and is just wasted if not used. For specific lore such as this however there you might not want to store it as simply as the generic lore, but you do want it to be compatible so that if someone writes a cool book generator or robot or some such based on this format it will work across the board. If you place a dwarf named Ernie in Boomtown who holds the sacred cup of Umluk, and you want this to show up in the lore of the land (libraries, oracles whatever), you would want something like this: arch dwarf name Ernie [...] lore @chance20: The sages of Umluk were known have a passion for orcknuckle and would often nip off to the redlight district of Boomtown for a quick game or three. @chance5: The finest 'knucle player in Boomtown is Ernie the Dwarf. @chance1: The word on the street is that Ernie the Dwarf won a sacred artifact from the sages of Umluk in a game of orcknuckle. endlore end ...of course the cup would have it's own lore mentioning Umluk and sages and such. The point being if ever the cup gets moved and Ernie gets the axe due to low ratings - the lore manages itself. Well it is pretty stupid to collect this under Ernie since there could be 40 Ernie's with all the gnolls, demons, dragons and other NPC's all around the world. Also someone may customize the lore but not the name. Also there is a whole bunch of this type of lore that would be more related to the map itself (like cities or legends or the like) than a specific arch so how do you deal with that? I did suggest a lore field in the map header but this was not well regarded at first, so I proposed to extend what was already occuring and make a special arch just for map lore where by it provides a name field and a lore field and could be collected by the same script as everything else. If it is more acceptable again to put a lore field in the map header (only need to instruct the server to ignore it is all...) then I suppose there is no real need for a maplore arch (although any arch on a map could be used as a maplore arch really...). Well for a while I thought if you are collecting information anyway, you can grab the lore, check the map arch for vitals such as level, hp, resistances, abilities or whatever. Since this type if data is in the current book code it would be nice to incorporate it as well. If these were not in the map because they were not modified, you could jump to the archetypes file and read the parent arch from there to get this info. Since this is a script to generate metadata into a repository, it can be as slow as cheese soup. Of course this is a whole pain in the butt because as was mentioned item type influences the meaning of these fields and it is much simpler and more nice to do this as suggested in the lore field itself. All issues with using fields for name, location, level, distance from Arizona or alternate key words or whatever anyone needs in the future can be handled as Mark suggested. lore @ : put your message here endlore So in the case of Ernie the Dwarf, you would now have: lore @ chance "20", region "Boomtown", key "rumour", true: The sages of Umluk were known have a passion for orcknuckle and would often nip off to the redlight district of Boomtown for a quick game or three. [...] endlore And you can dump a lot of lines in the lore field of the map itself. I do wonder however how would you seperate the different subjects for weighting purposes since having many entries in one lore field would also weight the messages. Also unless a name is put in the lore field there won't be one. That may not be an issue I suppose. Also things like name and location generally would apply to all the lore in that block so adding it to each delimiter would be a pain and bloat up the arches, especially if there are 10 different items. The end result I am picturing something like this: mogo A mogo is found useful for foobar. Some mogo are cursed with juju. Boomtown rumour The sages of Umluk were known have a passion for orcknuckle and would often nip off to the redlight district of Boomtown for a quick game or three. The finest 'knucle player in Boomtown is Ernie the Dwarf. The word on the street is that Ernie the Dwarf won a sacred artifact from the sages of Umluk in a game of orcknuckle. [...] Then again it could written like this directly in the lore field right from the start... I don't really know what will be done with region, level, key word, or true/false, but I can see it as being useful if a NPC robot was written that answered three questions (keyword), or library code weighted location and level or keyword (legend, rumor, recipe... whatever) when generating books, or (more contraversial for reasons mentioned) NPCs in an area could be assigned certain or key words (e.g. @@match Boomtown ) or what ever. Taking a point from other discussions where I have given quick functional examples and gotten totally misunderstood, I have to make it clear here that I am not proposing the above examples or advocating specific features as stated, just saying what types of information may be useful in the lore datatype and why it might theoretically at some point be used. As long as it is consistant so that I don't have to rewrite 500 entries that cannot be modified by script or it otherwise does not have to be totally reworked for new futuristic data mining tactics two months from now, I'll be alright. _______________________________________________ crossfire-devel mailing list crossfire-devel@lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel From crossfire-devel-admin at archives.real-time.com Tue Apr 30 04:25:37 2002 From: crossfire-devel-admin at archives.real-time.com (crossfire-devel-admin@archives.real-time.com) Date: Thu Jan 13 17:54:06 2005 Subject: [CF-Devel] More Lore References: <000801c1ee6d$1f48df80$0802a8c0@KAMERIA> <3EAE276B.1020101@sonic.net> <001b01c1ef65$9c4fdee0$0802a8c0@KAMERIA> <3EAF5404.8060502@sonic.net> Message-ID: <001c01c1f028$feddee80$0802a8c0@KAMERIA> > But at some level, I wonder if it really makes sense to try and grap > information from maps instead of just having something like a 'scorn.lore' or a > 'dungeon.lore' or whatever else - that lore file just being a freestanding file > in the proper lore syntax. A lot easier to collect those. A lot easier for > anyone else dealing with those maps in the future to find the lore information. > I did do that initially with the script (I put some sample .lor files in different map folders to represent information on those quests.) This is fine, but there are two reasons I wanted to put it in the maps, 1. external .lore files will not get updated and will go out of sync (this will happen with lore in maps also, but to a lesser degree and more locally since if the map is no longer used, the lore will no longer be used.) 2. It will require a run through the maps anyway to collect arches with modified lore. ...You know the more I think about it (and I didn't plan on writing this till just now...), a maplore arch with only a name and a lore field wouldn't be that bad, it wouldn't require any changes to server or editor at all (add a lore field to a marker perhaps?--what the heck is the marker for anyway) would work in both map editors by default, and they would show up in the map editor as a big bright letter L icons just waiting to be clicked on by map makers much like the creators or no_magic arches or other system arches do... It would automatically add lore to the maps in a usable format and use the same collection routines as the arch lore, and It wouldn't be any more of a hassle than managing a handful of connectors really... arch Object face maplore.111 name lore endlore invisible 1 no_pick 1 end > As for collection, I'd prefer that the scripts be in perl and not python, > largely because I know the former, and not the later. Which is probably related > to why all the existing scripts are also in perl. However, that isn't a major > point. If I can't wing it myself I'll call in the perl posse since Perl is required software and Python isn't. I'll still do it as a CFPython script as well (maybe make a map with bunch of big levers where you can go as DM to access these sort of things - one lever to reload the lore, one to reload the arches, one to send a nasty e-mail to the ring a bell in Mark's house...) > server changes - I'd think something needs to be done to read in the lore file > and process all the meanings (area, weighting, etc). > > As for file format, probably doesn't make a big difference - but do keep in > mind that the server has to be able to parse it. And since we are taking raw > data, I don't know if it makes a lot of sense to convert it to xml - one could > certainly have an option in the collect script to also spew out xml if desired. > AT some level, I'd prefer not to require yet more libraries to compile the server. Yes, after I posted that I thought about XML and using this data from a server perspective. I was primarily considering accessing this lore from the scripting language (writing classes that could be used to generate books or simple chat routines in python) when I should be thinking more openly. You can blame Andreas for this since he mentioned XML a little while ago and got me all excited about it again. So even though it would be nice someday not to have to convert data or write parsers from scratch, there is no compelling reason to use XML at this point* so I'll stick to something very close to the treasures and archetypes formats. > It is not legal to have multiple arches with the same name, so the point of > using the name to combine data doesn't really apply. But I otherwise think that > idea is fine - the probability of lore information about an orc is only relative > to the orc itself. Actually I was intending to use the name field not the object field so there would be overlap. This was intentional since the name is more friendly, is more commonly used from in the game, (especially for stuff like 'say') so more relevant, and will collapse similar arches into the same bucket of lore (although why you'd put lore on stuff like windows and standard sword arches is beyond me...) *Of course if a simple XML parser is something that we wanted to explore someday there is always Perl, Python and shell friendly PYX notation and the really tiny xmln and xmlv C utilities used to power it (http://pyxie.sourceforge.net). And to compile these from source you need expat (http://www.libexpat.org) so it isnt' painless... _______________________________________________ crossfire-devel mailing list crossfire-devel@lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel From crossfire-devel-admin at archives.real-time.com Tue Apr 30 22:46:06 2002 From: crossfire-devel-admin at archives.real-time.com (crossfire-devel-admin@archives.real-time.com) Date: Thu Jan 13 17:54:07 2005 Subject: [CF-Devel] More Lore References: <3EB0C323.9000700@sonic.net> <2546.1051791621@www60.gmx.net> Message-ID: <001201c1f0c2$ba46ac40$0802a8c0@KAMERIA> > I also want to comment on Todd's screenshot: > The lore icon is really nice, and yes one can see it easily. > But think about a 50x50 map where you can't see initially > where the lore is. Then, just imagine you do cut/copy/paste > actions and suddenly the lore is deleted or copied to another > map, or dublicated. Imagine lore moving under the floor due to > fill commands..., or getting lost in a map resize action... > How is this different than the lore coming in from the arches? Remember if you put lore in an orc or in a magical putter you have to be careful not to cut and paste that to another map, (also it is still much easier to manage than connectors and the like). Remember that lore is going to work it's way into the maps through the arches anyway. Putting it in the header only means you need two routines to collect it and a way to distinguish between the lore fields in the header. That is the only benefit - that you need to collect it from two different places in two different ways. I can't see it provides any extra flexability or functionality. There was really not even a need to make a special map lore arch since you could just use an orc for the same purpose really, it just makes it easier to see if it has it's own icon. here is what it looks like with lore archs - you need to collect all lore/endlore tags and the name in the arch they are in if it is there. arch map msg Creator: FooBar Date: sometime 2003 endmsg width 25 height 20 enter_x 1 enter_y 1 end arch grass end arch lore name Jabba the Hut lore @ chance ='3', type='legend': It is said that back in Imperial times... endlore end arch grass y 1 end arch orc name Phil the sneak hp 20 sp 34 {...} lore @ chance='1', type ='hint', locatation='Tatoonie': There is one fellow in the lair of Jabba the Hut whom might sell you the key to the Bantha cage, for a price. endlore end arch lore name My Left Foot lore @ chance='1', type = 'nonsense': My left foot hurts. @ chance='1': Shazzbot! endlore end arch foo [...] And here it is with lore in the header: Now you will need to take the entire above script and add a routine to collect header lore and make the necessary changes to the map editor to manage it. arch map msg Creator: FooBar Date: sometime 2003 endmsg width 25 height 20 enter_x 1 enter_y 1 lore @@Jabba the Hut: @ chance ='3', type='legend': It is said that back in Imperial times... @@My left foot: @ chance='1', type = 'nonsense': My left foot hurts. @ chance='1': Shazzbot! endlore end arch grass end arch grass y 1 end arch orc name Phil the sneak hp 20 sp 34 {...} lore @ chance='1', type ='hint', locatation='Tatoonie': There is one fellow in the lair of Jabba the Hut whom might sell you the key to the Bantha cage, for a price. endlore end arch foo[...] So is it worth it to add stuff to the header at the cost of adding in new delimiters to separate the different lore topics and making changes to the map editor to deal with it? If you want to do it that's fine, still works, I just don't think there is a compelling reason for it... _______________________________________________ crossfire-devel mailing list crossfire-devel@lists.real-time.com https://mailman.real-time.com/mailman/listinfo/crossfire-devel From jshelley at ictransnet.com Mon Apr 1 08:39:27 2002 From: jshelley at ictransnet.com (Johnny Shelley) Date: Thu Jan 13 18:02:14 2005 Subject: [CF-Devel] guilds maps In-Reply-To: <3CA7E909.2FD29FA3@sonic.net> Message-ID: Joris Bontje wrote: > > There are 2 options: > 1) put it in as a linked mapset (so every new server will have it) Actually theres a sub-option here. I would prefer to change the maps a bit and link a guild into each existing town that has an unlinked guild building rather than using the 'guild island' map. Its a bit hokey that all the player guilds are on the same island with basically nothing else there, but this was the easiest way to test the maps originally without disturbing things. I think the best way to handle this would be to move the guild sales map to scorn and then just give directions to the guild house once the keys have been purchased. Any objections to this idea? johnny PGP Public Key available from: http://www.keyserver.net:11371/pks/lookup?op=get&search=0x17BF1DD3 From jbontje at suespammers.org Mon Apr 1 12:55:34 2002 From: jbontje at suespammers.org (Joris Bontje) Date: Thu Jan 13 18:02:14 2005 Subject: [CF-Devel] guilds maps In-Reply-To: References: <3CA7E909.2FD29FA3@sonic.net> Message-ID: <20020401185534.GA8283@mids.student.utwente.nl> On Mon, Apr 01, 2002 at 09:39:27AM -0500, Johnny Shelley wrote: > Joris Bontje wrote: > > > > There are 2 options: > > 1) put it in as a linked mapset (so every new server will have it) > > Actually theres a sub-option here. I would prefer to change the maps a > bit and link a guild into each existing town that has an unlinked guild > building rather than using the 'guild island' map. > > Its a bit hokey that all the player guilds are on the same island with > basically nothing else there, but this was the easiest way to test the > maps originally without disturbing things. > > I think the best way to handle this would be to move the guild sales map > to scorn and then just give directions to the guild house once the keys > have been purchased. Sounds good, how many home towns do we have? Joris Bontje / mids -- Gpg Key: Id=0xF19326A9 / http://mids.student.utwente.nl/~mids/jbontje.pub Key fingerprint = 730D 9B3A F406 F28A 957D 6397 31E8 6D4C F193 26A9 -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 240 bytes Desc: not available Url : http://shadowknight.real-time.com/pipermail/crossfire/attachments/20020401/a25d98a7/attachment.pgp From bugs at real-time.com Thu Apr 4 02:10:02 2002 From: bugs at real-time.com (bugs@real-time.com) Date: Thu Jan 13 18:02:14 2005 Subject: [CF-Devel] Your Bugzilla buglist needs attention. Message-ID: <200204040810.g348A2Q29565@crusader.real-time.com> [This e-mail has been automatically generated.] You have one or more bugs assigned to you in the Bugzilla bugsystem (http://bugzilla.real-time.com/) that require attention. All of these bugs are in the NEW state, and have not been touched in 7 days or more. You need to take a look at them, and decide on an initial action. Generally, this means one of three things: (1) You decide this bug is really quick to deal with (like, it's INVALID), and so you get rid of it immediately. (2) You decide the bug doesn't belong to you, and you reassign it to someone else. (Hint: if you don't know who to reassign it to, make sure that the Component field seems reasonable, and then use the "Reassign bug to owner of selected component" option.) (3) You decide the bug belongs to you, but you can't solve it this moment. Just use the "Accept bug" command. To get a list of all NEW bugs, you can use this URL (bookmark it if you like!): http://bugzilla.real-time.com/buglist.cgi?bug_status=NEW&assigned_to=crossfire-devel@lists.real-time.com Or, you can use the general query page, at http://bugzilla.real-time.com/query.cgi. Appended below are the individual URLs to get to all of your NEW bugs that haven't been touched for a week or more. You will get this message once a day until you've dealt with these bugs! http://bugzilla.real-time.com/show_bug.cgi?id=368 http://bugzilla.real-time.com/show_bug.cgi?id=374 http://bugzilla.real-time.com/show_bug.cgi?id=379 http://bugzilla.real-time.com/show_bug.cgi?id=381 http://bugzilla.real-time.com/show_bug.cgi?id=382 http://bugzilla.real-time.com/show_bug.cgi?id=384 http://bugzilla.real-time.com/show_bug.cgi?id=385 http://bugzilla.real-time.com/show_bug.cgi?id=386 http://bugzilla.real-time.com/show_bug.cgi?id=388 http://bugzilla.real-time.com/show_bug.cgi?id=389 http://bugzilla.real-time.com/show_bug.cgi?id=390 http://bugzilla.real-time.com/show_bug.cgi?id=391 From jshelley at cahaus.com Sat Apr 6 16:28:38 2002 From: jshelley at cahaus.com (Johnny Shelley) Date: Thu Jan 13 18:02:14 2005 Subject: [CF-Devel] guilds maps In-Reply-To: <20020401185534.GA8283@mids.student.utwente.nl> Message-ID: On Mon, 1 Apr 2002, Joris Bontje wrote: > > Actually theres a sub-option here. I would prefer to change the maps a > > bit and link a guild into each existing town that has an unlinked guild > > building rather than using the 'guild island' map. > > Sounds good, how many home towns do we have? Ok, finally got a few hours to work on this. The maps need a little basic testing first, but are complete. Unless there are any objections, I think mids will be checking this in sometime next week. Changes -- Guild houses are now located in: Scorn, Lone Town, Santo Dominion, Brest, Darcap, Caterham, Nurnberg, Navar and Wolfsburg. Guild sales house is in Scorn. Jail map (with damned exits) is in Scorn. Nethack in Crossfire updated to have damned exits and an exit to Scorn. Only access to this mapset is from the upper floor of the guilds and requires 'capturing a spectre' and 20 amulets of lifesaving to pay for the portal. johnny PGP Public Key available from: http://www.keyserver.net:11371/pks/lookup?op=get&search=0x17BF1DD3 From jaris at student.matnat.uio.no Sun Apr 7 14:53:47 2002 From: jaris at student.matnat.uio.no (Jari Petter Sundell) Date: Thu Jan 13 18:02:15 2005 Subject: [CF-Devel] Female characters Message-ID: Ever considered adding the gender to the game? There have been female (atleast that entity claimed to be one) players complaining about only being able to select male characters. -- Rakshasa "Largo-sama... Hidoi... Hidoi desu..." From mwedel at sonic.net Sun Apr 7 21:28:32 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:15 2005 Subject: [CF-Devel] Female characters References: Message-ID: <3CB10050.F43D53EF@sonic.net> Jari Petter Sundell wrote: > > Ever considered adding the gender to the game? There have been female > (atleast that entity claimed to be one) players complaining about only > being able to select male characters. I will note that in fact, you don't select gender in crossfire. For some classes, hard to tell any difference (a male or female fighter would still be called a fighter, but there is obviously a difference between priest and priestess). Changing this is a moderate amount of work (would need to add something to the archetype to specify the alternate name, and then add some code at character creation to select the sex, as well as something in the player structure to record what sex the character is). This is presuming that for all other purposes, the two sexes are equal (eg, male don't have a higher maximum strength or anything). If someone wants to tackle this, fine by me - I can more or less say what it would take to do so, but this is fairly low on my priority list. However, the above changes do not start to address any messages that may be in the maps that contain a gender reference. I'm not sure in fact that there are any (I would think they would typically be like 'you should go do X and Y'). From jshelley at ictransnet.com Sun Apr 7 22:24:07 2002 From: jshelley at ictransnet.com (Johnny Shelley) Date: Thu Jan 13 18:02:15 2005 Subject: [CF-Devel] new alchemy formulae / artifacts Message-ID: I have added a few new alchemy formulae and artifacts. I plan to start play testing them on mids's server sometime this week and hopefully get them into cvs if they aren't terribly unbalancing. Diffs of lib/formulae and lib/artifacts are attached. I'd appreciate a little feedback on whether or not some of the new formulae are too powerful or game unbalancing. johnny PGP Public Key available from: http://www.keyserver.net:11371/pks/lookup?op=get&search=0x17BF1DD3 -------------- next part -------------- --- formulae.bak Sun Apr 7 18:29:34 2002 +++ formulae Sun Apr 7 22:42:29 2002 @@ -412,6 +412,49 @@ yield 3 ingred water of the wise,icecube,booze # +# -- command undead +Object the Dead +arch dust_generic +chance 14 +yield 5 +ingred skull's tongue,lich dust,zombie's corpse +# +# -- light +Object visibility +arch dust_generic +chance 24 +yield 6 +ingred torch,water of ruby,pile of sulphur +# +# -- darkness +Object impenatrability +arch dust_generic +chance 15 +yield 3 +ingred burnt out torch,lead,dust of Biren's mist +# +# -- mana blast +Object consuming wrath +arch dust_generic +chance 16 +yield 5 +ingred water of diamond,water of ruby,pile of phosphorus,lead,pile of sulphur +# +# -- medium mana ball +Object encompassing rage +arch dust_generic +chance 4 +yield 5 +ingred water of diamond,water of ruby,pile of philosophical phosphorus,lead,pile of philosophical sulphur +# +# +# -- medium snowstowm +Object blizzards +arch dust_generic +chance 5 +yield 5 +ingred water of sapphire,dust of frost,bottle of philosophical oil +# # Potions -- these give 'non-contact' protections, have # attack effects on the 'drinker' (or one it is # thrown at ;), give immunities, give cures and @@ -632,6 +675,13 @@ yield 3 ingred sage's head,water of the wise # +# -- cure disease +Object cure illness +arch potion_generic +chance 20 +yield 5 +ingred lich dust,balm of first aid,red rose +# # -- attack potions. Drinker/target is effected adversely # # -- sm. lightning @@ -690,6 +740,26 @@ yield 7 ingred dust of conflagration,3 booze,bottle of philosophical oil # +# -- poison cloud +Object noxious fumes +arch potion_generic +chance 15 +yield 7 +ingred 3 xan's wing,scorpion's stinger,water of emerald +# +# -- color spray. very powerful, probably should be a quest item +Object Rainbow Wave +arch potion_generic +chance 0 +yield 3 +ingred 3 wyvern of chaos's steak,7 water of diamond,block of true lead,3 potion of electric shock,3 dread's eye,5 skull's tongue +# +# -- ball lightning +Object lasting shock +arch potion_generic +chance 3 +yield 3 +ingred 3 water of diamond,3 potion of electric shock,electric dragon's steak # # ------------------- # Missile weapons @@ -756,6 +826,102 @@ yield 20 ingred 20 arrow,3 unicorn horn,2 water of sapphire,clover,white rose # +# +Object Magic +arch arrow +chance 4 +trans 1 +yield 20 +ingred 20 arrow,potion of mystic power +# +# +Object Magic +arch bolt +chance 4 +trans 1 +yield 20 +ingred 20 bolt,potion of mystic power +# +# +Object Fire +arch arrow +chance 4 +trans 1 +yield 20 +ingred 20 arrow,wyvern's steak +# +# +Object Fire +arch bolt +chance 4 +trans 1 +yield 20 +ingred 20 bolt,wyvern's steak +# +# +Object Frost +arch arrow +chance 4 +trans 1 +yield 20 +ingred 20 arrow,ghost's ectoplasm +# +# +Object Frost +arch bolt +chance 4 +trans 1 +yield 20 +ingred 20 bolt,ghost's ectoplasm +# +# +Object Lightning +arch arrow +chance 4 +trans 1 +yield 20 +ingred 20 arrow,skull's tooth +# +# +Object Lightning +arch bolt +chance 4 +trans 1 +yield 20 +ingred 20 bolt,skull's tooth +# +# +Object Paralysis +arch arrow +chance 4 +trans 1 +yield 20 +ingred 20 arrow,beholdereye +# +# +Object Paralysis +arch bolt +chance 4 +trans 1 +yield 20 +ingred 20 bolt,beholdereye +# +# +Object Poison +arch arrow +chance 4 +trans 1 +yield 20 +ingred 20 arrow,scorpion's stinger +# +# +Object Poison +arch bolt +chance 4 +trans 1 +yield 20 +ingred 20 bolt,scorpion's stinger +# # ------------------- # Armour 'n stuff # ------------------- @@ -766,6 +932,47 @@ trans 1 yield 1 ingred cloak,spectre's ectoplasm,3 balm of aethereality +# +# ------------------ +# Weapons +# ------------------ +# +Object Auriga +arch bow +chance 1 +trans 1 +yield 1 +ingred bow,3 potion of might,hill giant's corpse,block of true lead,troll's heart +# +Object Thunder +arch bow +chance 3 +trans 1 +yield 1 +ingred bow,titan's head,10 dust of stasis,block of fixed mercury,cunning gnome's corpse +# +Object Thunder +arch crossbow +chance 3 +trans 1 +yield 1 +ingred crossbow,titan's head,10 dust of stasis,block of fixed mercury,cunning gnome's corpse +# +Object Poisoning +arch dagger +chance 5 +trans 1 +yield 1 +ingred dagger,5 scorpion's stinger,10 xan's wing,3 chinese dragon's steak,bottle of philosophical oil +# +Object Poisoning +arch falchion +chance 3 +trans 1 +yield 1 +ingred falchion,5 scorpion's stinger,10 xan's wing,3 chinese dragon's steak,bottle of philosophical oil +# +# # ------------------- # Amulets # ------------------- -------------- next part -------------- --- artifacts.bak Sun Apr 7 18:47:15 2002 +++ artifacts Sun Apr 7 22:42:03 2002 @@ -3628,6 +3628,36 @@ value 1 end # +# -- poison cloud +Allowed potion_generic +chance 1 +Object noxious fumes +stand_still 1 +type 5 +sp 21 +value 1 +end +# +# -- ball lightning +Allowed potion_generic +chance 1 +Object lasting shock +stand_still 1 +type 5 +sp 88 +value 15 +end +# +# -- color spray +Allowed potion_generic +chance 1 +Object Rainbow Wave +stand_still 1 +type 5 +sp 85 +value 20 +end +# # - curative potions # Allowed balm_generic @@ -3667,6 +3697,15 @@ value 2 end # +Allowed potion_generic +chance 1 +Object cure illness +stand_still 1 +type 5 +sp 171 +value 3 +end +# # - protective potions # Allowed balm_generic @@ -4045,6 +4084,42 @@ value 1 end # +Allowed dust_generic +chance 1 +Object the Dead +type 5 +sp 140 +level -30 +value 1 +end +# +# -- mana blast +Allowed dust_generic +chance 1 +Object consuming wrath +type 5 +sp 180 +value 3 +end +# +# -- medium mana ball +Allowed dust_generic +chance 1 +Object encompassing rage +type 5 +sp 182 +value 6 +end +# +# -- medium snowstorm +Allowed dust_generic +chance 1 +Object blizzards +type 5 +sp 169 +value 4 +end +# # dusts w/ provide detection # Allowed dust_generic @@ -4101,6 +4176,26 @@ Object Biren's mist type 5 sp 138 +value 1 +end +# +# misc. dusts +# +# -- light +Allowed dust_generic +chance 1 +Object visibility +type 5 +sp 157 +value 1 +end +# +# -- darkness +Allowed dust_generic +chance 1 +Object impenatrability +type 5 +sp 158 value 1 end # From bugs at mail.real-time.com Sun Apr 7 21:36:46 2002 From: bugs at mail.real-time.com (bugs@mail.real-time.com) Date: Thu Jan 13 18:02:15 2005 Subject: [CF-Devel] [Bug 391] Changed - gtk-client causes memory leak Message-ID: <200204080236.g382akt01389@crusader.real-time.com> http://bugzilla.real-time.com/show_bug.cgi?id=391 *** shadow/391 Sat Feb 23 11:15:23 2002 --- shadow/391.tmp.1385 Sun Apr 7 21:36:46 2002 *************** *** 38,40 **** --- 38,49 ---- ------- Additional Comments From jukkaho@mail.student.oulu.fi 2002-02-23 11:15 ------- Changed severity to normal since imlib was the main cause of problem after program was terminated. + + ------- Additional Comments From mwedel@scruz.net 2002-04-07 21:36 ------- + + The gtk client (current CVS version) recently underwent some big changes to + its image code - would be curious to know if this is still observed. + + Note that there are about 4000 images, each 32x32. If you do the math, + assuming 4 bytes/pixel (32 bit display), that comes to 16 MB of space needed to + hold the images. From bugs at mail.real-time.com Mon Apr 8 00:04:57 2002 From: bugs at mail.real-time.com (bugs@mail.real-time.com) Date: Thu Jan 13 18:02:15 2005 Subject: [CF-Devel] [Bug 391] Changed - gtk-client causes memory leak Message-ID: <200204080504.g3854vE02935@crusader.real-time.com> http://bugzilla.real-time.com/show_bug.cgi?id=391 *** shadow/391 Sun Apr 7 21:36:46 2002 --- shadow/391.tmp.2932 Mon Apr 8 00:04:57 2002 *************** *** 47,49 **** --- 47,61 ---- Note that there are about 4000 images, each 32x32. If you do the math, assuming 4 bytes/pixel (32 bit display), that comes to 16 MB of space needed to hold the images. + + + ------- Additional Comments From jukkaho@mail.student.oulu.fi 2002-04-08 00:04 ------- + I tested the cvs version and X process still went up to 300 MB from 30 MB + quickly as I played through raffle 1. Memory went back to 30MB after I quit the + client. + + So.. nothing much has changed except that now X goes back to normal instead of + growing few megabytes. + + Configure script of client complains about too old gtk-configure though. I will + check this too later today. \ No newline at end of file From root at garbled.net Mon Apr 8 02:01:04 2002 From: root at garbled.net (Tim Rightnour) Date: Thu Jan 13 18:02:15 2005 Subject: [CF-Devel] Female characters In-Reply-To: <3CB10050.F43D53EF@sonic.net> Message-ID: On 08-Apr-02 Mark Wedel wrote: > However, the above changes do not start to address any messages that may be > in > the maps that contain a gender reference. I'm not sure in fact that there > are > any (I would think they would typically be like 'you should go do X and Y'). No.. but typically, internal messages (like the damage messages) refer to he/him alot. There are probably alot of things internally that would need to be rewritten to autocalculate him/her/he/she/it. I think getting the messages right would be non trivial. I'm also sure there are alot more in the maps than you think. --- Tim Rightnour NetBSD: Free multi-architecture OS http://www.netbsd.org/ NetBSD supported hardware database: http://mail-index.netbsd.org/cgi-bin/hw.cgi From andi.vogl at gmx.net Mon Apr 8 10:58:19 2002 From: andi.vogl at gmx.net (Andreas Vogl) Date: Thu Jan 13 18:02:15 2005 Subject: [CF-Devel] new alchemy formulae / artifacts References: Message-ID: <12220.1018281499@www6.gmx.net> My thoughts about the formulae/artifacts changes, proposed by Johnny Shelley: I think the new spell-potions are okay, but they should be reserved to alchemy and not appear in shops/dungeons often. (Thus, chances of the more useful potions should be slightly increased in the artifacts file IMO). The reason is not that it would be unbalancing, but it would further reduce the amount of useful potions showing up. The fancy spell-potions should be reserverd to alchemists who really like to have something exotic. The cure illness potion is an exception. I think that one is very useful, but I'm not sure about the balance aspect there. For lowlevels the required lich dust might be pretty hard - On the other hand, for highlevels it might be a too easy way to cure self-infection of hardcore disease if the formulae was easier. I like the simple arrow/bolt receipes very much. Projectile weapons are currently underpowered (or why else does nobody use them?), so this can only be of help. Btw, I wonder if it is possible to use several of these formulaes, one after the other, to generate arrows with multiple attacktypes? Theoretically, "transmutation" receipes should allow this, or not? About the artifacts: First of all - I think the formulaes are sane. But again I wonder if it is possible to apply these to artifact weapons which already had bonuses before? That should still be okay for daggers and bows, but we should keep an eye on it if it works. Not that suddenly someone adds swords, axes and stuff... ;-) Andreas PS.: I believe attacktypes on bows do not work currently. Last time I checked (for the JavaEditor type-definitions) it seemed attacktypes on bows have no effect. > I have added a few new alchemy formulae and artifacts. I plan to start > play testing them on mids's server sometime this week and hopefully get > them into cvs if they aren't terribly unbalancing. > > Diffs of lib/formulae and lib/artifacts are attached. I'd appreciate a > little feedback on whether or not some of the new formulae are too > powerful or game unbalancing. > > johnny -- GMX - Die Kommunikationsplattform im Internet. http://www.gmx.net From jshelley at ictransnet.com Mon Apr 8 14:53:12 2002 From: jshelley at ictransnet.com (Johnny Shelley) Date: Thu Jan 13 18:02:15 2005 Subject: [CF-Devel] new alchemy formulae / artifacts In-Reply-To: <12220.1018281499@www6.gmx.net> Message-ID: On Mon, 8 Apr 2002, Andreas Vogl wrote: > I think the new spell-potions are okay, but they should be reserved > to alchemy and not appear in shops/dungeons often. (Thus, chances > of the more useful potions should be slightly increased in the > artifacts file IMO). I'm not sure about this. I don't think any of the alchemy items are really useless. The first time I went thru the volcano in ancient pupland, I used about 500 dust of biren's mist to reduce the damage I took. I'd be pretty hard pressed to decide which are the most useful. It really depends on what you need at the time. > The cure illness potion is an exception. I think that one is very useful, > but I'm not sure about the balance aspect there. For lowlevels the required > lich dust might be pretty hard - On the other hand, for highlevels it might > be a too easy way to cure self-infection of hardcore disease if the > formulae was easier. I agree. I have replaced lich dust with booze. I suppose either one could make you sick. > I like the simple arrow/bolt receipes very much. Projectile weapons > are currently underpowered (or why else does nobody use them?), so this > can only be of help. They really are underpowered, and the arrows of fire, cold, lightning are pretty weak. They just add an attack type, but not really enough damage to make them worth using in place of say 'arrows of slay dragon'. I Think maybe we should bump the damage on them up to maybe 7 or 8. > Btw, I wonder if it is possible to use several of these formulaes, > one after the other, to generate arrows with multiple attacktypes? > Theoretically, "transmutation" receipes should allow this, or not? It is not possible. The formulae uses both the name and title, so 'arrow of Fire' is not equivilant to 'arrow'. Same thing w/ swords, daggers, etc. I wouldn't mind making more artifact weapons and armour available through alchemy, using fairly simple (but non-trivial to acquire) formulae that have a lower failure rate. johnny PGP Public Key available from: http://www.keyserver.net:11371/pks/lookup?op=get&search=0x17BF1DD3 From jshelley at ictransnet.com Tue Apr 9 18:06:30 2002 From: jshelley at ictransnet.com (Johnny Shelley) Date: Thu Jan 13 18:02:15 2005 Subject: [CF-Devel] more alchemy formulae Message-ID: After talking with AV for a bit and not getting screamed at by anyone so far, I've added quite a few lower level random artifacts to the alchemy formulae. My hope is that by making reasonable equipment available through alchemy it will be beneficial enough at low levels to be used more. Of course, I hope I haven't unbalanced things terribly much. In addition, I have beefed up the damage on some of the special arrows as well to make them a bit more useful and made a few of the more difficult formulae a bit simpler to collect items for / cast successfully. Diffs from current cvs are attached, please yell at me if I've made anything too simple. johnny PGP Public Key available from: http://www.keyserver.net:11371/pks/lookup?op=get&search=0x17BF1DD3 -------------- next part -------------- --- formulae.orig Sun Apr 7 18:29:34 2002 +++ formulae Tue Apr 9 18:29:36 2002 @@ -166,6 +166,12 @@ chance 40 ingred 3 emerald,water of the wise # +# water of pearl +Object pearl +arch water +chance 40 +ingred 3 pearl,water of the wise +# # # -------------- # Potions -- incl. balms, figurines, and dusts @@ -183,12 +189,18 @@ chance 25 ingred 3 dragon scale,water of the wise # -# -- cold prot. +# -- cold prot. #1 Object warmth arch balm_generic chance 25 ingred chinese dragon's steak,water of the wise,icecube # +# -- cold prot. #2 +Object warmth +arch balm_generic +chance 25 +ingred chinese dragon's steak,water of the wise,water of pearl +# # -- elect prot. Object insulation arch balm_generic @@ -323,13 +335,20 @@ yield 4 ingred 2 lead,pile of philosophical phosphorus # -# -- icestorm +# -- icestorm #1 Object frost arch dust_generic chance 18 yield 4 ingred icecube,icecube,icecube,water of diamond # +# -- icestorm #2 +Object frost +arch dust_generic +chance 18 +yield 3 +ingred water of pearl,water of diamond,pile of gypsum +# # -- shockwave Object concussion arch dust_generic @@ -411,6 +430,56 @@ chance 6 yield 3 ingred water of the wise,icecube,booze +# +# biren's mist #2 +Object Biren's mist +arch dust_generic +chance 6 +yield 3 +ingred water of the wise,water of pearl,booze +# +# -- command undead +Object the Dead +arch dust_generic +chance 14 +yield 5 +ingred skull's tongue,lich dust,zombie's corpse +# +# -- light +Object visibility +arch dust_generic +chance 24 +yield 6 +ingred torch,water of ruby,pile of sulphur +# +# -- darkness +Object impenatrability +arch dust_generic +chance 15 +yield 3 +ingred burnt out torch,lead,dust of Biren's mist +# +# -- mana blast +Object consuming wrath +arch dust_generic +chance 16 +yield 5 +ingred water of diamond,pile of phosphorus,lead,pile of sulphur +# +# -- medium mana ball +Object encompassing rage +arch dust_generic +chance 4 +yield 5 +ingred water of diamond,pile of philosophical phosphorus,lead,pile of philosophical sulphur +# +# +# -- medium snowstowm +Object blizzards +arch dust_generic +chance 5 +yield 5 +ingred water of sapphire,dust of frost,bottle of philosophical oil # # Potions -- these give 'non-contact' protections, have # attack effects on the 'drinker' (or one it is @@ -595,7 +664,7 @@ arch potion_heal chance 4 yield 4 -ingred potion of restoration,mushroom of Healing,red rose +ingred potion of life,mushroom of Healing,red rose # # -- healing recipe #2 Object NONE @@ -632,6 +701,13 @@ yield 3 ingred sage's head,water of the wise # +# -- cure disease +Object cure illness +arch potion_generic +chance 20 +yield 5 +ingred booze,balm of first aid,red rose +# # -- attack potions. Drinker/target is effected adversely # # -- sm. lightning @@ -690,6 +766,26 @@ yield 7 ingred dust of conflagration,3 booze,bottle of philosophical oil # +# -- poison cloud +Object noxious fumes +arch potion_generic +chance 15 +yield 7 +ingred 3 xan's wing,scorpion's stinger,water of emerald +# +# -- color spray. very powerful, probably should be a quest item +Object Rainbow Wave +arch potion_generic +chance 0 +yield 6 +ingred 3 wyvern of chaos's steak,7 water of diamond,potion of electric shock,dread's eye,skull's tongue +# +# -- ball lightning +Object lasting shock +arch potion_generic +chance 3 +yield 3 +ingred 3 water of diamond,3 potion of electric shock,electric dragon's steak # # ------------------- # Missile weapons @@ -715,7 +811,7 @@ chance 0 yield 20 trans 1 -ingred 20 bolt,dragon's heart,lich dust,water of emerald,demon's icor,scorpion's stinger +ingred 20 bolt,dragon's heart,lich dust,water of emerald,scorpion's stinger # # Object Assassinating Dragons @@ -723,22 +819,22 @@ chance 0 yield 20 trans 1 -ingred 20 arrow,dragon's heart,lich dust,water of emerald,demon's icor,scorpion's stinger +ingred 20 arrow,dragon's heart,lich dust,water of emerald,scorpion's stinger # Object Assassinating Trolls arch bolt chance 0 trans 1 -yield 30 -ingred 30 bolt,troll's heart,demon's icor,scorpion's stinger +yield 20 +ingred 20 bolt,troll's heart,scorpion's stinger,lich dust # # Object Assassinating Trolls arch arrow chance 0 -yield 30 +yield 20 trans 1 -ingred 30 arrow,troll's heart,demon's icor,scorpion's stinger +ingred 20 arrow,troll's heart,scorpion's stinger,lich dust # # Object Blessedness @@ -746,7 +842,7 @@ chance 0 trans 1 yield 20 -ingred 20 bolt,3 unicorn horn,2 water of sapphire,clover +ingred 20 bolt,unicorn horn,2 water of sapphire,clover # # Object Blessedness @@ -754,10 +850,106 @@ chance 0 trans 1 yield 20 -ingred 20 arrow,3 unicorn horn,2 water of sapphire,clover,white rose +ingred 20 arrow,unicorn horn,2 water of sapphire,clover +# +# +Object Magic +arch arrow +chance 4 +trans 1 +yield 20 +ingred 20 arrow,potion of mystic power +# +# +Object Magic +arch bolt +chance 4 +trans 1 +yield 20 +ingred 20 bolt,potion of mystic power +# +# +Object Fire +arch arrow +chance 4 +trans 1 +yield 20 +ingred 20 arrow,wyvern's steak +# +# +Object Fire +arch bolt +chance 4 +trans 1 +yield 20 +ingred 20 bolt,wyvern's steak +# +# +Object Frost +arch arrow +chance 4 +trans 1 +yield 20 +ingred 20 arrow,ghost's ectoplasm +# +# +Object Frost +arch bolt +chance 4 +trans 1 +yield 20 +ingred 20 bolt,ghost's ectoplasm +# +# +Object Lightning +arch arrow +chance 4 +trans 1 +yield 20 +ingred 20 arrow,skull's tooth +# +# +Object Lightning +arch bolt +chance 4 +trans 1 +yield 20 +ingred 20 bolt,skull's tooth +# +# +Object Paralysis +arch arrow +chance 4 +trans 1 +yield 20 +ingred 20 arrow,beholdereye +# +# +Object Paralysis +arch bolt +chance 4 +trans 1 +yield 20 +ingred 20 bolt,beholdereye +# +# +Object Poison +arch arrow +chance 4 +trans 1 +yield 20 +ingred 20 arrow,scorpion's stinger +# +# +Object Poison +arch bolt +chance 4 +trans 1 +yield 20 +ingred 20 bolt,scorpion's stinger # # ------------------- -# Armour 'n stuff +# Cloaks # ------------------- # Object minor protection @@ -765,7 +957,361 @@ chance 5 trans 1 yield 1 -ingred cloak,spectre's ectoplasm,3 balm of aethereality +ingred cloak,spectre's ectoplasm,balm of aethereality +# +# ------------------- +# Armour +# ------------------- +# +Object Gorokh +arch scale_mail +chance 3 +trans 1 +yield 1 +ingred scale mail,potion of magic resistance,demon's head +# +Object Gorokh +arch plate_mail +chance 3 +trans 1 +yield 1 +ingred plate mail,potion of magic resistance,demon's head +# +Object Gnarg +arch scale_mail +chance 4 +trans 1 +yield 1 +ingred scale mail,potion of resist poison,troll's heart +# +Object Gnarg +arch plate_mail +chance 4 +trans 1 +yield 1 +ingred plate mail,potion of resist poison,troll's heart +# +Object Protection +arch scale_mail +chance 6 +trans 1 +yield 1 +ingred scale mail,amulet of Shielding,3 lead +# +Object Protection +arch plate_mail +chance 6 +trans 1 +yield 1 +ingred plate mail,amulet of Shielding,3 lead +# +Object Berwean +arch plate_mail +chance 4 +trans 1 +yield 1 +ingred plate mail,raas's icor,3 pixie's wings,3 xan's wing +# +Object Berwean +arch mithril_chainmail +chance 2 +trans 1 +yield 1 +ingred mithril chainmail,raas's icor,3 pixie's wings,3 xan's wing,5 potion of speed +# +Object Ruggilli +arch plate_mail +chance 2 +trans 1 +yield 1 +ingred plate mail,3 dragon's steak,dragon's eye,dragon scale,fire para-elemental's residue +# +Object Ruggilli +arch scale_mail +chance 2 +trans 1 +yield 1 +ingred scale mail,3 dragon's steak,dragon's eye,dragon scale,fire para-elemental's residue +# +Object Power +arch plate_mail +chance 2 +trans 1 +yield 1 +ingred plate mail,3 dragon's steak,balm of aethereality,potion of strength +# +Object Displacement +arch robe +chance 4 +trans 1 +yield 1 +ingred robe,3 balm of transparency,block of fixed mercury +# +Object metal weave +arch robe +chance 4 +trans 1 +yield 1 +ingred robe,block of true lead,balm of aethereality +# +# ------------------ +# Helmets +# ------------------ +# +Object Xebinon +arch helmet +chance 2 +trans 1 +yield 1 +ingred helmet,3 magic power potion,bottle of philosophical oil +# +Object Dark Vision +arch helmet +chance 3 +trans 1 +yield 1 +ingred helmet,dread's eye,3 dust of night vision,bottle of philosophical oil +# +Object Might +arch full_helmet +chance 3 +trans 1 +yield 1 +ingred full helmet,3 potion of might,hill giant's corpse,bottle of philosophical oil +# +Object Valriel +arch full_helmet +chance 4 +trans 1 +yield 1 +ingred full helmet,holy symbol,balm of beauty,bottle of philosophical oil +# +Object Argoth +arch full_helmet +chance 2 +trans 1 +yield 1 +ingred full helmet,3 dragon's steak,mithril crystal,bottle of philosophical oil +# +Object Lythander +arch helmet +chance 5 +trans 1 +yield 1 +ingred helmet,3 clover,bottle of philosophical oil +# +Object Sorig +arch crown +chance 3 +trans 1 +yield 1 +ingred crown,lightning para-elemental's residue,potion of shock resistance,bottle of philosophical oil +# +# ------------------ +# Shields +# ------------------ +# +Object Deflection +arch high_shield +chance 5 +trans 1 +yield 1 +ingred high shield,balm of aethereality,block of true lead +# +Object Mostrai +arch small_shield +chance 3 +trans 1 +yield 1 +ingred small shield,balm of asbestos,mithril crystal +# +Object Mostrai +arch high_shield +chance 3 +trans 1 +yield 1 +ingred high shield,balm of asbestos,mithril crystal +# +# ------------------ +# Gauntlets / Gloves +# ------------------ +# +Object Havok +arch gloves +chance 4 +trans 1 +yield 1 +ingred gloves,ogre's corpse,bottle of philosophical oil +# +Object marksmanship +arch gloves +chance 5 +trans 1 +yield 1 +ingred gloves,5 arrow of accuracy,bottle of mineral oil +# +Object Sorig +arch gloves +chance 3 +trans 1 +yield 1 +ingred gloves,hill giant's heart,lightning para-elemental's residue,bottle of philosophical oil +# +Object the Titans +arch gauntlets +chance 3 +trans 1 +yield 1 +ingred gauntlets,titan's head,bottle of philosophical oil +# +Object bladed steel +arch gloves +chance 5 +trans 1 +yield 1 +ingred gloves,hill giant's hand,bottle of mineral oil +# +Object Sorig +arch gauntlets +chance 1 +trans 1 +yield 1 +ingred gauntlets,hill giant's heart,lightning para-elemental's residue,bottle of philosophical oil,electric dragon's steak +# +# ------------------ +# Bows / Crossbows +# ------------------ +# +Object Auriga +arch bow +chance 1 +trans 1 +yield 1 +ingred bow,3 potion of might,hill giant's corpse,block of true lead,troll's heart +# +Object Thunder +arch bow +chance 3 +trans 1 +yield 1 +ingred bow,titan's head,dust of stasis,block of fixed mercury,cunning gnome's corpse +# +Object Thunder +arch crossbow +chance 3 +trans 1 +yield 1 +ingred crossbow,titan's head,dust of stasis,block of fixed mercury,cunning gnome's corpse +# +# ------------------ +# Weapons +# ------------------ +# +Object Poisoning +arch dagger +chance 5 +trans 1 +yield 1 +ingred dagger,scorpion's stinger,3 xan's wing,bottle of philosophical oil +# +Object Poisoning +arch falchion +chance 3 +trans 1 +yield 1 +ingred falchion,scorpion's stinger,3 xan's wing,bottle of philosophical oil +# +Object Fear +arch morningstar +chance 5 +trans 1 +yield 1 +ingred morningstar,wyvern's steak,bottle of philosophical oil +# +Object Gnarg +arch sword +chance 5 +trans 1 +yield 1 +ingred long sword,troll's corpse,xan's wing,bottle of philosophical oil +# +Object Kragi +arch sword +chance 10 +trans 1 +yield 1 +ingred sword,potion of health,bottle of philosophical oil +# +Object Slay Ogre +arch sword +chance 6 +trans 1 +yield 1 +ingred sword,ogre's heart,bottle of philosophical oil +# +Object Valriel +arch large_morningstar +chance 3 +trans 1 +yield 1 +ingred large morningstar,demon's head,holy symbol,bottle of philosophical oil +# +Object Gorokh +arch broadsword +chance 3 +trans 1 +yield 1 +ingred broadsword,light angel's head,holy symbol,bottle of philosophical oil +# +Object the Devourers +arch mace +chance 3 +trans 1 +yield 1 +ingred mace,ice para-elemental's residue,holy symbol,bottle of philosophical oil +# +Object Slay Troll +arch sword +chance 5 +trans 1 +yield 1 +ingred long sword,troll's heart,bottle of philosophical oil +# +Object Slay Undead +arch axe +chance 5 +trans 1 +yield 1 +ingred axe,ghost's ectoplasm,zombie's corpse,bottle of philosophical oil +# +Object Glamdri +arch sabre +chance 2 +trans 1 +yield 1 +ingred sabre,potion of magic resistance,beholdereye,bottle of philosophical oil +# +Object Sorig +arch scimitar +chance 3 +trans 1 +yield 1 +ingred scimitar,lightning para-elemental's residue,holy symbol,bottle of philosophical oil +# +Object Ruggilli +arch large_morningstar +chance 3 +trans 1 +yield 1 +ingred large morningstar,wyvern's steak,holy symbol,bottle of philosophical oil +# +Object Paralysis +arch dagger +chance 6 +trans 1 +yield 1 +ingred dagger,cunning gnome's corpse,bottle of mineral oil +# # ------------------- # Amulets # ------------------- -------------- next part -------------- --- artifacts.orig Sun Apr 7 18:47:15 2002 +++ artifacts Tue Apr 9 18:34:52 2002 @@ -2892,7 +2892,8 @@ Object Fire attacktype 4 type 13 -value 5 +dam -8 +value 6 end # Allowed all @@ -2900,7 +2901,8 @@ Object Frost attacktype 16 type 13 -value 5 +dam -8 +value 6 end # Allowed all @@ -2909,7 +2911,8 @@ Object Poison attacktype 1025 type 13 -value 5 +dam -8 +value 6 magic 1 end # @@ -2918,7 +2921,8 @@ Object Lightning attacktype 8 type 13 -value 5 +dam -8 +value 6 end # Allowed all @@ -3369,6 +3373,15 @@ end # Allowed water +chance 17 +difficulty 2 +Object pearl +type 54 +food 1 +value 50 +end +# +Allowed water chance 15 difficulty 3 Object emerald @@ -3404,7 +3417,6 @@ value 191 end # -# # FOOD. Types of food which can effect player status # # Note: an item is cursed, the effect is generally reversed! @@ -3628,6 +3640,36 @@ value 1 end # +# -- poison cloud +Allowed potion_generic +chance 1 +Object noxious fumes +stand_still 1 +type 5 +sp 21 +value 1 +end +# +# -- ball lightning +Allowed potion_generic +chance 1 +Object lasting shock +stand_still 1 +type 5 +sp 88 +value 15 +end +# +# -- color spray +Allowed potion_generic +chance 1 +Object Rainbow Wave +stand_still 1 +type 5 +sp 85 +value 20 +end +# # - curative potions # Allowed balm_generic @@ -3667,6 +3709,15 @@ value 2 end # +Allowed potion_generic +chance 1 +Object cure illness +stand_still 1 +type 5 +sp 171 +value 3 +end +# # - protective potions # Allowed balm_generic @@ -4045,6 +4096,42 @@ value 1 end # +Allowed dust_generic +chance 1 +Object the Dead +type 5 +sp 140 +level -30 +value 1 +end +# +# -- mana blast +Allowed dust_generic +chance 1 +Object consuming wrath +type 5 +sp 180 +value 3 +end +# +# -- medium mana ball +Allowed dust_generic +chance 1 +Object encompassing rage +type 5 +sp 182 +value 6 +end +# +# -- medium snowstorm +Allowed dust_generic +chance 1 +Object blizzards +type 5 +sp 169 +value 4 +end +# # dusts w/ provide detection # Allowed dust_generic @@ -4101,6 +4188,28 @@ Object Biren's mist type 5 sp 138 +value 1 +end +# +# misc. dusts +# +# -- light +Allowed dust_generic +chance 1 +Object visibility +type 5 +sp 157 +level -20 +value 1 +end +# +# -- darkness +Allowed dust_generic +chance 1 +Object impenatrability +type 5 +sp 158 +level -20 value 1 end # From mwedel at sonic.net Tue Apr 9 23:44:48 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:15 2005 Subject: [CF-Devel] more alchemy formulae References: Message-ID: <3CB3C340.2080301@sonic.net> Maybe not directly related to this topic, but on the periphery. Has anything been done to make the formulas more accessible to the players (characters)? From my playing experience, if you try to do it honestly (find formula within the game), it seems next to impossible to get much in the way of a set of formulas to make anything. So is it more or less a given that the formula's will be found on the web, looking at the file, etc? I know that that is hard to prevent in any case (just like people looking at the spoilers), but I wonder if we want to try to do something to make them even more game accessible. From root at garbled.net Wed Apr 10 03:07:37 2002 From: root at garbled.net (Tim Rightnour) Date: Thu Jan 13 18:02:15 2005 Subject: [CF-Devel] more alchemy formulae In-Reply-To: <3CB3C340.2080301@sonic.net> Message-ID: On 10-Apr-02 Mark Wedel wrote: > Has anything been done to make the formulas more accessible to the players > (characters)? From my playing experience, if you try to do it honestly (find > formula within the game), it seems next to impossible to get much in the way > of > a set of formulas to make anything. Why not make the books containing formulae more common in treasure piles, or less costly in bookstores? Personally.. I'd like it if those books had a purpose. Say for example, you have a recipie book. When you get a formulae, you can use your writing skill and literacy to transcribe the recepie into your book. Then the players have a nice little reference available to them for future alchemy use. In addition, if you ready the book, and it contains the recepie you are attempting, it gives you a bonus. Maybe it could also automatically attempt to write down anything you discover by fiddling. --- Tim Rightnour NetBSD: Free multi-architecture OS http://www.netbsd.org/ NetBSD supported hardware database: http://mail-index.netbsd.org/cgi-bin/hw.cgi From jshelley at ictransnet.com Wed Apr 10 14:22:35 2002 From: jshelley at ictransnet.com (Johnny Shelley) Date: Thu Jan 13 18:02:15 2005 Subject: [CF-Devel] more alchemy formulae In-Reply-To: <3CB3C340.2080301@sonic.net> Message-ID: On Tue, 9 Apr 2002, Mark Wedel wrote: > Has anything been done to make the formulas more accessible to the players > (characters)? From my playing experience, if you try to do it honestly (find > formula within the game), it seems next to impossible to get much in the way of > a set of formulas to make anything. Most recipe books seem to be random, with a few exceptions that map makers have created. Currently, random book types seem to be determined by a random roll of 0-5 in tailor_readable_ob() which is in common/readable.c. It would be pretty trivial to add a few more case statements to the roll, but there's no easy way to weight the possibilities in a simple text file. Currently, a random book has an equal chance of being a monster, description, artifact description, spell path description, alchemy formula, god description or a book from the messages file. I think the best way to handle this would be to take the overall number of books and then do a random roll for a specific book from the entire list. As it is, a book type with only 5 books has just as much a chance of being selected as a book type with 500. johnny PGP Public Key available from: http://www.keyserver.net:11371/pks/lookup?op=get&search=0x17BF1DD3 From mwedel at sonic.net Thu Apr 11 01:15:21 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:16 2005 Subject: [CF-Devel] more alchemy formulae References: Message-ID: <3CB529F9.2020506@sonic.net> Tim Rightnour wrote: > On 10-Apr-02 Mark Wedel wrote: > >> Has anything been done to make the formulas more accessible to the players >>(characters)? From my playing experience, if you try to do it honestly (find >>formula within the game), it seems next to impossible to get much in the way >>of >>a set of formulas to make anything. >> > > Why not make the books containing formulae more common in treasure piles, or > less costly in bookstores? I haven't looked lately, but one problem I used to have is just finding books in the stores or anyplace that would otherwise sell them. > > Personally.. I'd like it if those books had a purpose. Say for example, you > have a recipie book. When you get a formulae, you can use your writing skill > and literacy to transcribe the recepie into your book. Then the players have a > nice little reference available to them for future alchemy use. In addition, > if you ready the book, and it contains the recepie you are attempting, it gives > you a bonus. There are different approaches to doing this. I'd personally like it to be fairly automated (you'd need to have a copy command or something) - the more it is maintained automatically, the easier it is then for the You could enforce the notion that the character has to know the formula to use it. Thus, just the fact that the player knows you need to mix X and Y isn't of any use. I believe some quest formulas already do that The simplest way to do this would just make something like a 'known formula' invisibile object in the players inventory. in the msg on that, you just list all the formula the character knows - when the character reads a book that has a formula, that new formula is added to the message. When they try to make something, the alchemy code finds that object and sees if the formula they are making matches one in that list. Some server command that lists all the formula the character knows (by looking at the object, then finding the formula, and displaying it) could be added. A more ambitious approach would be to make the formula into archetypes/objects. This archetype is then copied into the players inventory (invisible object) when the player learns something. The msg/endmsg aspect of the archetype could get used for the description (eg, eye of dragon plus and arrow, stir once, and get an arrow of dragon slaying). The nice thing is by the this being an object, maps could make up new archetypes without needing to modify the formulae file. From root at garbled.net Thu Apr 11 07:40:15 2002 From: root at garbled.net (Tim Rightnour) Date: Thu Jan 13 18:02:16 2005 Subject: [CF-Devel] more alchemy formulae In-Reply-To: <3CB529F9.2020506@sonic.net> Message-ID: On 11-Apr-02 Mark Wedel wrote: > There are different approaches to doing this. I'd personally like it to be > fairly automated (you'd need to have a copy command or something) - the more > it > is maintained automatically, the easier it is then for the That was my intent. To make it semi-automated. The player wouldn't have to actually type in the formulae again. > You could enforce the notion that the character has to know the formula to > use > it. Thus, just the fact that the player knows you need to mix X and Y isn't > of > any use. I believe some quest formulas already do that I understnad the concept behind that, but I have two problems with it. 1) You can't discover anything via experimentation. Thats no fun. 2) I think it makes alchemy even more obscure a skill. By making it harder to use, having to collect formulae and all, I think even less people would use it. Thats not to say it doesn't make some sort of sense. But it kinda turns alchemy into yet another spell to learn. I can see the advantages of doing that, as it makes a little more game sense, but I think the disadvantages outweigh it. BTW- Is there any way to set the reply-to on the lists to croosfire-devel? It's kinda annoying to have to reset the to: all the time. --- Tim Rightnour NetBSD: Free multi-architecture OS http://www.netbsd.org/ NetBSD supported hardware database: http://mail-index.netbsd.org/cgi-bin/hw.cgi From norbert.irmer at t-online.de Sat Apr 13 09:32:31 2002 From: norbert.irmer at t-online.de (Norbert Irmer) Date: Thu Jan 13 18:02:16 2005 Subject: [CF-Devel] patch for generators to create special ability monsters Message-ID: <3CB8417F.8050009@t-online.de> I made a map, for which it was neccessary to make a small change to the generator code. I have included it, together with my changes to the server code. Notes: The map 'island' shall be the end of a quest, based on Lovecraft horror stories, like "Mountains Of Madness", or "Call Of Cthulhu". The map uses generators, which create Giant Worms with some additional resistancies (or else they are killed to fast by the other monsters in the map). To achieve this, it was necessary to slightly modify the file "common/time.c". The changes i made to it are contained in the file "my_changes_to_time.c". I find it hard enough to play, but i would be happy to hear the opinions of other players. -------------- next part -------------- A non-text attachment was scrubbed... Name: cthulhu.tar.gz Type: application/gzip Size: 12621 bytes Desc: not available Url : http://shadowknight.real-time.com/pipermail/crossfire/attachments/20020413/d99777c7/cthulhu.tar.bin From michael.toennies at nord-com.net Sat Apr 13 10:11:21 2002 From: michael.toennies at nord-com.net (Michael Toennies) Date: Thu Jan 13 18:02:16 2005 Subject: [CF-Devel] sdl Message-ID: I read about the gtk client and sdl client and that you think you can migrate it in gtk. You have a misunderstanding about what sdl is and how you should use it. As a low level library, sdl is the next part over interfaces like openGL or DirectX. under DX and OPGL should be hardware and hardware drivers only. Of course, it is possible to use it like you do - inserting it in a higher level library. But thats the really the worst of all possible solutions - where you got a min?num of performance for alot of overhead. Libs like SDL are good for build things like gtk OVER it. But not in it. One reason is, that you than have with a high chance a mixed grafik blitting. This always eliminate every chance to do real fast gfx blitting. In unix/linux system you will have normally a speed up, when you include sdl in gtk and other higher libs. Thats because these system are normally really bad in grafik speed things. Under windows, the sdl client has frames rates over 60. Even under unix/linux you can do similar when you setup the sdl client right. Because there are many window widgets out for SDL, using it native and having all the things you need, using gtk + sdl as portable client is really a worse idea. Beside this will not really accepted from users other platforms (performance isssues, many libs to install, etc.). The sdl client in CVS is full usable, you can even play mpegs and mp3 with it. It will give CF a real portable client, based on a low level library, independend from every higher system and a semiprof. look. From jbontje at suespammers.org Sat Apr 13 10:33:18 2002 From: jbontje at suespammers.org (Joris Bontje) Date: Thu Jan 13 18:02:16 2005 Subject: [CF-Devel] patch for generators to create special ability monsters In-Reply-To: <3CB8417F.8050009@t-online.de> References: <3CB8417F.8050009@t-online.de> Message-ID: <20020413153318.GA23630@mids.student.utwente.nl> Skipped content of type multipart/mixed-------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 240 bytes Desc: not available Url : http://shadowknight.real-time.com/pipermail/crossfire/attachments/20020413/e05d71c8/attachment.pgp From jbontje at suespammers.org Sat Apr 13 10:53:15 2002 From: jbontje at suespammers.org (Joris Bontje) Date: Thu Jan 13 18:02:16 2005 Subject: [CF-Devel] patch for generators to create special ability monsters In-Reply-To: <20020413153318.GA23630@mids.student.utwente.nl> References: <3CB8417F.8050009@t-online.de> <20020413153318.GA23630@mids.student.utwente.nl> Message-ID: <20020413155315.GA26705@mids.student.utwente.nl> I have installed the patch and map on my testserver hostname: mids.student.utwente.nl port: 13327 To get to /cthulhu/island, take the well in scorn between the weapon and armour shop. On request I can install playerfiles on the server to make testing easier. Joris Bontje / mids -- Gpg Key: Id=0xF19326A9 / http://mids.student.utwente.nl/~mids/jbontje.pub Key fingerprint = 730D 9B3A F406 F28A 957D 6397 31E8 6D4C F193 26A9 -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 240 bytes Desc: not available Url : http://shadowknight.real-time.com/pipermail/crossfire/attachments/20020413/ef3d3b2a/attachment.pgp From root at garbled.net Sat Apr 13 10:56:04 2002 From: root at garbled.net (Tim Rightnour) Date: Thu Jan 13 18:02:16 2005 Subject: [CF-Devel] patch for generators to create special ability mo In-Reply-To: <3CB8417F.8050009@t-online.de> Message-ID: On 13-Apr-02 Norbert Irmer wrote: > I made a map, for which it was neccessary to make a > small change to the generator code. I have included > it, together with my changes to the server code. So I have some issues. 1) You should have sent a diff of the code. Please do so in the future. It would also be nice to send the diff separately from the map, for those of us who would review the code, not the map. (if I can just click on the diff and look at it from my mail-reader, the chances are higher that I will look at it rather than if I have to untar it, and expend extra effort) 2) I would also like to see a description of eaxctly what you did. Ie, you have this routine patch_monster, that seems to interpret a string off one of the fields in the monster/arch. I'd like to know the exact syntax of this string, and how it works.. etc. Basically, I want you to document your proposed change. (ideally, in a format, that if we accepted it, we could place it in the map-making guide) 3) Your code looks like it's very beta quality. Lots of printfs all over the place (presumably for debugging) and none of the appropriate logging functions were used. As the code stands, I feel it's not ready for inclusion. That being said, I don't really object to the concept of what I *think* this code is doing. If you were just posting it to get a general feel for how we would react to it, then I guess it's fine, but if you want it to be put into the game, you really need to clean it up, and document it. Also, at a cursory glance, it looked like you used a different indentation/formatting style than the crossfire norm. You will need to conform there as well. Anyhow.. these are just my suggestions and opinions. My intention is not to browbeat you over this submission. --- Tim Rightnour NetBSD: Free multi-architecture OS http://www.netbsd.org/ NetBSD supported hardware database: http://mail-index.netbsd.org/cgi-bin/hw.cgi From norbert.irmer at t-online.de Sat Apr 13 11:10:50 2002 From: norbert.irmer at t-online.de (Norbert Irmer) Date: Thu Jan 13 18:02:16 2005 Subject: [CF-Devel] patch for generators to create special ability mo References: Message-ID: <3CB8588A.4050003@t-online.de> Tim Rightnour wrote: > 1) You should have sent a diff of the code. Please do so in the > future. It > would also be nice to send the diff separately from the map, for those > of us > who would review the code, not the map. (if I can just click on the > diff and > look at it from my mail-reader, the chances are higher that I will > look at it > rather than if I have to untar it, and expend extra effort) > > 2) I would also like to see a description of eaxctly what you did. > Ie, you > have this routine patch_monster, that seems to interpret a string off > one of > the fields in the monster/arch. I'd like to know the exact syntax of > this > string, and how it works.. etc. Basically, I want you to document your > proposed change. (ideally, in a format, that if we accepted it, we > could place > it in the map-making guide) > > 3) Your code looks like it's very beta quality. Lots of printfs all > over the > place (presumably for debugging) and none of the appropriate logging > functions > were used. As the code stands, I feel it's not ready for inclusion. > > That being said, I don't really object to the concept of what I > *think* this > code is doing. If you were just posting it to get a general feel for > how we > would react to it, then I guess it's fine, but if you want it to be > put into > the game, you really need to clean it up, and document it. Yes, off course. I just wanted to get a quick reaction, and show which idea i had in mind. In the included map, the generated giant worms are almost killed immediately, if they don't have certain resistancies. > Also, at a cursor > glance, it looked like you used a different indentation/formatting > style than > the crossfire norm. You will need to conform there as well. Yes, it's difficult to overcome old habits. But I think the guy who wrote the generate_monster() function used the same identation rule as me (two spaces) > Anyhow.. these are just my suggestions and opinions. My intention is > not to > browbeat you over this submission. I am quite happy with the overall reaction. I had not expected that the crossfire community is still that alive. Best regards, Norbert From mgzachar at stonline.sk Sat Apr 13 11:55:14 2002 From: mgzachar at stonline.sk (Debian User) Date: Thu Jan 13 18:02:16 2005 Subject: [CF-Devel] Corrupt archives? Message-ID: <20020413185514.A21025@stonline.sk> Reporting possible corruption of crossfire-1.0.0-maps.tar.bz2 2994Kb crossfire-1.0.0-maps.tar.gz 4326Kb Today I have downloaded above files as well as other sources of crossfire. For the Atempt of extracting them failed. Download was from ftp.ifi.uio.no. Since first one was corrupt I'we tried the other but bouth seem to be defective. Repeated download from different site (ftp.real-time.com) produced the same result. Problem is in bouth of them in compresion which seem's strange as different compressors were used. Could You please check on it and let me know if problem is some where on my side? I even downloaded latest versions of bzip and gzip, compiled them and tried these two archives with then with same result. If the problem is in files themself's then all the copies on Interner are faulty. Rest of sources extracted and compiled without problems. mgz:/usr/local/src$ bzip2 --version bzip2, a block-sorting file compressor. Version 1.0.2, 30-Dec-2001. mgz:/usr/local/src$ bunzip2 -tvv crossfire-1.0.0-maps.tar.bz2 crossfire-1.0.0-maps.tar.bz2: [1: huff+mtf data integrity (CRC) error in data You can use the `bzip2recover' program to attempt to recover data from undamaged sections of corrupted files. Regards Michael (mgzachar@stonline.sk) From migeot_o at epita.fr Sat Apr 13 04:53:23 2002 From: migeot_o at epita.fr (Olivier Migeot) Date: Thu Jan 13 18:02:16 2005 Subject: [CF-Devel] ISO server? Message-ID: <20020413115323.7d202ac7.migeot_o@epita.fr> What should I do to run an iso-server? What must I tweak from the original server package? And is there any running iso-server? Thanks ;) -- Olivier Migeot, Etudiant ING1 "D?sol?, pas ce soir j'ai la migraine." (COWmasutra, page 2) From jbontje at suespammers.org Sat Apr 13 14:17:49 2002 From: jbontje at suespammers.org (Joris Bontje) Date: Thu Jan 13 18:02:16 2005 Subject: [CF-Devel] mids test verser Message-ID: <20020413191749.GA27294@mids.student.utwente.nl> I made a mistake my testserver is on port 13337 hostname: mids.student.utwente.nl port: 13337 Sorry, Joris Bontje / mids -- Gpg Key: Id=0xF19326A9 / http://mids.student.utwente.nl/~mids/jbontje.pub Key fingerprint = 730D 9B3A F406 F28A 957D 6397 31E8 6D4C F193 26A9 -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 240 bytes Desc: not available Url : http://shadowknight.real-time.com/pipermail/crossfire/attachments/20020413/b7d43cd1/attachment.pgp From jbontje at suespammers.org Sat Apr 13 17:26:46 2002 From: jbontje at suespammers.org (Joris Bontje) Date: Thu Jan 13 18:02:17 2005 Subject: [CF-Devel] guilds in cvs Message-ID: <20020413222645.GA28177@mids.student.utwente.nl> The guild maps and the jail map are placed in CVS as announced on the mailinglist: http://mailman.real-time.com/pipermail/crossfire-devel/2002-March/003069.html http://mailman.real-time.com/pipermail/crossfire-devel/2002-April/003070.html Changes ------- Guild houses are now located in: Scorn, Lone Town, Santo Dominion, Brest, Darcap, Caterham, Nurnberg, Navar and Wolfsburg. Guild sales house is in Scorn. Jail map (with damned exits) is in Scorn. Nethack in Crossfire updated to have damned exits and an exit to Scorn. Only access to this mapset is from the upper floor of the guilds and requires 'capturing a spectre' and 20 amulets of lifesaving to pay for the portal. ------ Thanks to cryo for the creation of these maps. Regards, Joris Bontje / mids -- Gpg Key: Id=0xF19326A9 / http://mids.student.utwente.nl/~mids/jbontje.pub Key fingerprint = 730D 9B3A F406 F28A 957D 6397 31E8 6D4C F193 26A9 -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 240 bytes Desc: not available Url : http://shadowknight.real-time.com/pipermail/crossfire/attachments/20020414/df45a7c8/attachment.pgp From michael.toennies at nord-com.net Sat Apr 13 18:58:22 2002 From: michael.toennies at nord-com.net (Michael Toennies) Date: Thu Jan 13 18:02:17 2005 Subject: [CF-Devel] dx client, sdl client & iso grafik Message-ID: Because i got alot of mails about this 3 topics, here same facts. I left CF dev and will not work or finish on any of this topics. The dx client will not work under win XP or later and its droped by me. I will not release the source or do any work on it. You had to get is "as it is". The sdl client was coded by me to be the successor of the dx client and used as flat & iso client. The CVS version is iso only but full workable. Someone has a flat code too from me for this version. Anyone who want can overtake the cvs code. As my last info, the current dev team has no plans for the sdl client and will drop the source in some time. The iso gfx was for the iso sdl client and is not ready. I opend a "iso crossfire project" and split the iso & sdl branch in indepented project, which can be found here. http://isocrossfire.sourceforge.net/ Because i heave some heavy work to do, there was nothing happens on the project last month. But i had nearly finished a full workable iso set in the time and you will find some new grafiks on the site. You will find some screen shots of a newer sdl client and a new iso set on this site too. From andi.vogl at gmx.net Sun Apr 14 07:37:11 2002 From: andi.vogl at gmx.net (Andreas Vogl) Date: Thu Jan 13 18:02:17 2005 Subject: [CF-Devel] patch for generators to create special ability monsters In-Reply-To: <3CB8417F.8050009@t-online.de> Message-ID: <003901c1e3b1$1dcceb90$c86ebb81@gizmo> I think the map is quite okay. But it is a rather small map with tought monsters and artifacts on it - It is definitly a "final map", as you said. It should not be directly linked to a city or worldmap. The question is: Where is the quest to attach the map to? :-) Why is there a darkness field with these artifacts there? What are the dragons about? And why is a sacrifice of a giant worm's eye needed? And how is the player supposed to know? If there were some maps with a quest, containing storyline-elements to explain these things, that would be great. IMO, the maps should not be linked into CVS before they contain a complete quest. I'm also in doubt if these level 107 rods with flu/leprosy are a good idea. The balance of diseases have changed several times in the past. It becomes very difficult to balance these diseases when every newby has the chance of applying a level 107- version. About the patch to monster generators: When I understand it right, this code reads comma-seperated attributes from the generator's slaying string. It is a nice idea, but the implementation isn't good. The CF map format really shouldn't get more complicated than it already is. A better approach would be to put a monster in the inventory of the generator, and let it produce dublications of the "inventory monster". Besides, it would be great if this code could be reused for creators and summoning runes. Andreas > > I made a map, for which it was neccessary to make a > small change to the generator code. I have included > it, together with my changes to the server code. > > Notes: > > The map 'island' shall be the end of a quest, based > on Lovecraft horror stories, like "Mountains Of Madness", > or "Call Of Cthulhu". > > The map uses generators, which create Giant Worms with > some additional resistancies (or else they are killed > to fast by the other monsters in the map). > To achieve this, it was necessary to slightly modify > the file "common/time.c". The changes i made to it > are contained in the file "my_changes_to_time.c". > > I find it hard enough to play, but i would be happy to > hear the opinions of other players. > > From norbert.irmer at t-online.de Sun Apr 14 08:48:03 2002 From: norbert.irmer at t-online.de (Norbert Irmer) Date: Thu Jan 13 18:02:17 2005 Subject: [CF-Devel] patch for generators to create special ability monsters References: <003901c1e3b1$1dcceb90$c86ebb81@gizmo> Message-ID: <3CB98893.2030803@t-online.de> Hi, Putting a monster in the inventory of the generator and copying it, is a nice idea, since it is more flexible and faster. Perhaps one could even use the 'copy_object()' function for it. The 'move_creator()' function has a big contra, it currently just handles single square things (that was the reason, i used the 'generate_monster()' function, which works fine). I wanted some powerful disease rods as a reward for my quest (and i had in mind to make them god-given, just forgot it). But i had to realize, that diseases are quite weak , and its quite difficult to kill anything with them. But after some experimenting i found out, that flu level 107 is quite useful, even for a high level character (the leprosy level 107 horn is just fun stuff, since it takes much to long to kill st with it and isn't very infectious; but at least it is possible to kill dragons with it (though this takes a few minutes, but its fun seeing them crumble to pieces:))) Yes, you are right, the storyline is missing. I need some good ideas. I think i have to read my two Lovecraft books from Akham House again :) Andreas Vogl wrote: >I think the map is quite okay. But it is a rather small map >with tought monsters and artifacts on it - It is definitly a >"final map", as you said. It should not be directly linked >to a city or worldmap. > >The question is: Where is the quest to attach the map to? :-) >Why is there a darkness field with these artifacts there? >What are the dragons about? And why is a sacrifice of a >giant worm's eye needed? And how is the player supposed to know? > >If there were some maps with a quest, containing storyline-elements >to explain these things, that would be great. >IMO, the maps should not be linked into CVS before they contain a >complete quest. > >I'm also in doubt if these level 107 rods with flu/leprosy >are a good idea. The balance of diseases have changed several >times in the past. It becomes very difficult to balance these >diseases when every newby has the chance of applying a level 107- >version. > > >About the patch to monster generators: >When I understand it right, this code reads comma-seperated >attributes from the generator's slaying string. > >It is a nice idea, but the implementation isn't good. >The CF map format really shouldn't get more complicated than >it already is. >A better approach would be to put a monster in the inventory >of the generator, and let it produce dublications of >the "inventory monster". >Besides, it would be great if this code could be reused >for creators and summoning runes. > > > From mwedel at sonic.net Sun Apr 14 21:44:55 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:17 2005 Subject: [CF-Devel] patch for generators to create special ability monsters References: <003901c1e3b1$1dcceb90$c86ebb81@gizmo> <3CB98893.2030803@t-online.de> Message-ID: <3CBA3EA7.1070709@sonic.net> Norbert Irmer wrote: > Hi, > > Putting a monster in the inventory of the generator and copying it, is > a nice idea, since it is more flexible and faster. Perhaps one could even > use the 'copy_object()' function for it. Probably. The code to have the generators inventory make a monster should be pretty easy - it would be something like if (generator->inv) then obj_to_create=generator->inv; else obj_to_create=generator->other_arch (or something pretty close to that). The other really nice thing about using a monster in the inventory is then that map editor can use its standard object interface to change it. The potential tricky part is that the process_object loop probably expects monsters to be on a map. The easiest approach, which probably would not break anything, is to put a check in at the top level such that if op->type==monster && op->map==NULL continue (althought I think you would need to check for FLAG_IS_MONSTER, but not sure). > The 'move_creator()' function has a big contra, it currently just handles > single square things (that was the reason, i used the 'generate_monster()' > function, which works fine). I'm also pretty sure that the move_creator is designed to create one item, so it also wouldn't create an objects (monsters) abilities, treasures, etc. From mwedel at sonic.net Sun Apr 14 21:53:24 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:17 2005 Subject: [CF-Devel] Corrupt archives? References: <20020413185514.A21025@stonline.sk> Message-ID: <3CBA40A4.3020703@sonic.net> Debian User wrote: > mgz:/usr/local/src$ bzip2 --version > > bzip2, a block-sorting file compressor. Version 1.0.2, 30-Dec-2001. > > mgz:/usr/local/src$ bunzip2 -tvv crossfire-1.0.0-maps.tar.bz2 > crossfire-1.0.0-maps.tar.bz2: > [1: huff+mtf data integrity (CRC) error in data > > You can use the `bzip2recover' program to attempt to recover > data from undamaged sections of corrupted files. I would suggest that there is something wrong with your system. On a freshly download copy from real-time: [hugin:/export/programs/tmp] (44) % bunzip2 -tvv crossfire-1.0.0-maps.tar.bz2 crossfire-1.0.0-maps.tar.bz2: [1: huff+mtf rt+rld] [2: huff+mtf rt+rld] [3: huff+mtf rt+rld] [4: huff+mtf rt+rld] [5: huff+mtf rt+rld] [6: huff+mtf rt+rld] [7: huff+mtf rt+rld] [8: huff+mtf rt+rld] [9: huff+mtf rt+rld] [10: huff+mtf rt+rld] [11: huff+mtf rt+rld] [12: huff+mtf rt+rld] [13: huff+mtf rt+rld] [14: huff+mtf rt+rld] [15: huff+mtf rt+rld] [16: huff+mtf rt+rld] [17: huff+mtf rt+rld] [18: huff+mtf rt+rld] [19: huff+mtf rt+rld] [20: huff+mtf rt+rld] [21: huff+mtf rt+rld] [22: huff+mtf rt+rld] [23: huff+mtf rt+rld] [24: huff+mtf rt+rld] [25: huff+mtf rt+rld] [26: huff+mtf rt+rld] [27: huff+mtf rt+rld] [28: huff+mtf rt+rld] [29: huff+mtf rt+rld] [30: huff+mtf rt+rld] [31: huff+mtf rt+rld] [32: huff+mtf rt+rld] [33: huff+mtf rt+rld] [34: huff+mtf rt+rld] [35: huff+mtf rt+rld] [36: huff+mtf rt+rld] [37: huff+mtf rt+rld] [38: huff+mtf rt+rld] [39: huff+mtf rt+rld] [40: huff+mtf rt+rld] [41: huff+mtf rt+rld] [42: huff+mtf rt+rld] [43: huff+mtf rt+rld] ok [hugin:/export/programs/tmp] (48) % bzip2 --version bzip2, a block-sorting file compressor. Version 1.0.1, 23-June-2000. Copyright (C) 1996-2000 by Julian Seward. This program is free software; you can redistribute it and/or modify it under the terms set out in the LICENSE file, which is included in the bzip2-1.0 source distribution. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the LICENSE file for more details. It impossible to diagnose the cause further - it could by anything as simple as not downloading the file in binary form, to bad memory/bad disk/bad cpu (or overclocked cpu) on your system, to buggy software. From leaf at real-time.com Mon Apr 15 16:50:01 2002 From: leaf at real-time.com (Rick Tanner) Date: Thu Jan 13 18:02:17 2005 Subject: [CF-Devel] Reply to: address (was: more alchemy formulae) In-Reply-To: Message-ID: It is possible to specify a reply to: address in Mailman. This will make responding to the list easier. However, if you want to respond to the sender only, then you will have to manually remove the crossfire-devel address. Anyone else have a preference on keeping the list as is, or having a reply to: address ? Thanks, - Rick Tanner On Thu, 11 Apr 2002, Tim Rightnour wrote: > > BTW- Is there any way to set the reply-to on the lists to croosfire-devel? > It's kinda annoying to have to reset the to: all the time. > From jbontje at suespammers.org Mon Apr 15 17:04:34 2002 From: jbontje at suespammers.org (Joris Bontje) Date: Thu Jan 13 18:02:17 2005 Subject: [CF-Devel] Reply to: address (was: more alchemy formulae) In-Reply-To: References: Message-ID: <20020415220434.GA17180@mids.student.utwente.nl> On Mon, Apr 15, 2002 at 04:50:01PM -0500, Rick Tanner wrote: > On Thu, 11 Apr 2002, Tim Rightnour wrote: > > BTW- Is there any way to set the reply-to on the lists to croosfire-devel? > > It's kinda annoying to have to reset the to: all the time. > > It is possible to specify a reply to: address in Mailman. > This will make responding to the list easier. > > However, if you want to respond to the sender only, then you will have to > manually remove the crossfire-devel address. > > Anyone else have a preference on keeping the list as is, or having a reply > to: address ? My email client (mutt) has a special reply to list option (shift L), but I think setting a reply to field is great... Don't change the From field please, like some lists do... Joris Bontje / mids -- Gpg Key: Id=0xF19326A9 / http://mids.student.utwente.nl/~mids/jbontje.pub Key fingerprint = 730D 9B3A F406 F28A 957D 6397 31E8 6D4C F193 26A9 -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 240 bytes Desc: not available Url : http://shadowknight.real-time.com/pipermail/crossfire/attachments/20020416/cede9bfa/attachment.pgp From norbert.irmer at t-online.de Mon Apr 15 19:45:46 2002 From: norbert.irmer at t-online.de (Norbert Irmer) Date: Thu Jan 13 18:02:17 2005 Subject: [CF-Devel] patch for generators to create special ability monsters References: <003901c1e3b1$1dcceb90$c86ebb81@gizmo> <3CB98893.2030803@t-online.de> <3CBA3EA7.1070709@sonic.net> <3CBB706D.6090007@t-online.de> Message-ID: <3CBB743A.50607@t-online.de> Sorry, i was bit unclear in my last message. I meant, how can i inform the server that a certain MULTIPART object IS the inventory of another object. Norbert Irmer wrote: > Mark Wedel wrote: > >> Norbert Irmer wrote: >> >>> Hi, >>> >>> Putting a monster in the inventory of the generator and copying it, is >>> a nice idea, since it is more flexible and faster. Perhaps one could >>> even >>> use the 'copy_object()' function for it. >> >> >> >> >> Probably. The code to have the generators inventory make a monster >> should be pretty easy - it would be something like if >> (generator->inv) then obj_to_create=generator->inv; else >> obj_to_create=generator->other_arch (or something pretty close to that). >> >> The other really nice thing about using a monster in the inventory >> is then that map editor can use its standard object interface to >> change it. >> > > I tried to follow your advice, and have written a replacement for > 'generate_monster()'. > that in my opinion it should work. The main problem now is, how do i > inform > the server, that a certain object IS the inventory of another object. > With the current map load function this isn't possible. > > Here's my code (i have included it for further discussion): > > void generate_monster(object *gen) { > int i; > object *op,*head=NULL,*prev=NULL,*gob; > archetype *at=gen->other_arch; > > if(GENERATE_SPEED(gen)&&rndm(0, GENERATE_SPEED(gen)-1)) > return; > > if(gen->other_arch==NULL) { > if(gen->inv==NULL) { > LOG(llevError,"Generator without other_arch or inv: > %s\n",gen->name); > return; > } > gob=gen->inv; > i=find_free_spot(gob->arch,gen->map,gen->x,gen->y,1,9); > if (i==-1) return; > while(gob!=NULL) { > op=get_object(); > copy_object(gob,op); > op->x=gen->x+freearr_x[i]+gob->arch->clone.x; > op->y=gen->y+freearr_y[i]+gob->arch->clone.y; > if(head!=NULL) > op->head=head,prev->more=op; > if (rndm(0, 9)) generate_artifact(op, gen->map->difficulty); > insert_ob_in_map(op,gen->map,gen,0); > if (QUERY_FLAG(op, FLAG_FREED)) return; > if(op->randomitems!=NULL) > create_treasure(op->randomitems,op,GT_APPLY, > gen->map->difficulty,0); > if(head==NULL) > head=op; > prev=op; > gob=gob->more; > } > } > else { > i=find_free_spot(at,gen->map,gen->x,gen->y,1,9); > if (i==-1) return; > while(at!=NULL) { > op=arch_to_object(at); > op->x=gen->x+freearr_x[i]+at->clone.x; > op->y=gen->y+freearr_y[i]+at->clone.y; > if(head!=NULL) > op->head=head,prev->more=op; > if (rndm(0, 9)) generate_artifact(op, gen->map->difficulty); > insert_ob_in_map(op,gen->map,gen,0); > if (QUERY_FLAG(op, FLAG_FREED)) return; > if(op->randomitems!=NULL) > create_treasure(op->randomitems,op,GT_APPLY, > gen->map->difficulty,0); > if(head==NULL) > head=op; > prev=op; > at=at->more; > } > } > } > > > From norbert.irmer at t-online.de Mon Apr 15 19:29:33 2002 From: norbert.irmer at t-online.de (Norbert Irmer) Date: Thu Jan 13 18:02:17 2005 Subject: [CF-Devel] patch for generators to create special ability monsters References: <003901c1e3b1$1dcceb90$c86ebb81@gizmo> <3CB98893.2030803@t-online.de> <3CBA3EA7.1070709@sonic.net> Message-ID: <3CBB706D.6090007@t-online.de> Mark Wedel wrote: > Norbert Irmer wrote: > >> Hi, >> >> Putting a monster in the inventory of the generator and copying it, is >> a nice idea, since it is more flexible and faster. Perhaps one could >> even >> use the 'copy_object()' function for it. > > > > Probably. The code to have the generators inventory make a monster > should be pretty easy - it would be something like if > (generator->inv) then obj_to_create=generator->inv; else > obj_to_create=generator->other_arch (or something pretty close to that). > > The other really nice thing about using a monster in the inventory is > then that map editor can use its standard object interface to change it. > I tried to follow your advice, and have written a replacement for 'generate_monster()'. that in my opinion it should work. The main problem now is, how do i inform the server, that a certain object IS the inventory of another object. With the current map load function this isn't possible. Here's my code (i have included it for further discussion): void generate_monster(object *gen) { int i; object *op,*head=NULL,*prev=NULL,*gob; archetype *at=gen->other_arch; if(GENERATE_SPEED(gen)&&rndm(0, GENERATE_SPEED(gen)-1)) return; if(gen->other_arch==NULL) { if(gen->inv==NULL) { LOG(llevError,"Generator without other_arch or inv: %s\n",gen->name); return; } gob=gen->inv; i=find_free_spot(gob->arch,gen->map,gen->x,gen->y,1,9); if (i==-1) return; while(gob!=NULL) { op=get_object(); copy_object(gob,op); op->x=gen->x+freearr_x[i]+gob->arch->clone.x; op->y=gen->y+freearr_y[i]+gob->arch->clone.y; if(head!=NULL) op->head=head,prev->more=op; if (rndm(0, 9)) generate_artifact(op, gen->map->difficulty); insert_ob_in_map(op,gen->map,gen,0); if (QUERY_FLAG(op, FLAG_FREED)) return; if(op->randomitems!=NULL) create_treasure(op->randomitems,op,GT_APPLY, gen->map->difficulty,0); if(head==NULL) head=op; prev=op; gob=gob->more; } } else { i=find_free_spot(at,gen->map,gen->x,gen->y,1,9); if (i==-1) return; while(at!=NULL) { op=arch_to_object(at); op->x=gen->x+freearr_x[i]+at->clone.x; op->y=gen->y+freearr_y[i]+at->clone.y; if(head!=NULL) op->head=head,prev->more=op; if (rndm(0, 9)) generate_artifact(op, gen->map->difficulty); insert_ob_in_map(op,gen->map,gen,0); if (QUERY_FLAG(op, FLAG_FREED)) return; if(op->randomitems!=NULL) create_treasure(op->randomitems,op,GT_APPLY, gen->map->difficulty,0); if(head==NULL) head=op; prev=op; at=at->more; } } } From mwedel at sonic.net Tue Apr 16 01:02:11 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:17 2005 Subject: [CF-Devel] patch for generators to create special ability monsters References: <003901c1e3b1$1dcceb90$c86ebb81@gizmo> <3CB98893.2030803@t-online.de> <3CBA3EA7.1070709@sonic.net> <3CBB706D.6090007@t-online.de> <3CBB743A.50607@t-online.de> Message-ID: <3CBBBE63.1050704@sonic.net> Norbert Irmer wrote: > Sorry, i was bit unclear in my last message. > I meant, how can i inform the server that a certain MULTIPART object > IS the inventory of another object. It shouldn't be any different than if the object was a non multipart object. However, the load code doesn't support multipart objects in the inventory. I don't think the code to support this is very extensive. I think all that needs to be changed is around line 235 in loader - it should check the return value for lex_load - if LL_MORE is returned, it then needs to link with the previous part. The only problem as I see is that lex_load isn't keep tracking of the last object. Fortunately, insert_ob_in_ob is simplified to the extent that the last object inserted will be in parent->inv, so linking it in should be easy enough - as long as the behaviour of insert_ob_in_ob doesn't change. There are also potential programs if the object is merged with something else, but that shouldn't ever happen with multipart objects. From norbert.irmer at t-online.de Tue Apr 16 09:27:54 2002 From: norbert.irmer at t-online.de (Norbert Irmer) Date: Thu Jan 13 18:02:17 2005 Subject: [CF-Devel] patch for generators to create special ability monsters References: <003901c1e3b1$1dcceb90$c86ebb81@gizmo> <3CB98893.2030803@t-online.de> <3CBA3EA7.1070709@sonic.net> <3CBB706D.6090007@t-online.de> <3CBB743A.50607@t-online.de> <3CBBBE63.1050704@sonic.net> Message-ID: <3CBC34EA.1080506@t-online.de> Mark Wedel wrote: > It shouldn't be any different than if the object was a non multipart > object. However, the load code doesn't support multipart objects in > the inventory. > > I don't think the code to support this is very extensive. I think all > that needs to be changed is around line 235 in loader - it should > check the return value for lex_load - if LL_MORE is returned, it then > needs to link with the previous part. The only problem as I see is > that lex_load isn't keep tracking of the last object. Fortunately, > insert_ob_in_ob is simplified to the extent that the last object > inserted will be in parent->inv, so linking it in should be easy > enough - as long as the behaviour of insert_ob_in_ob doesn't change. > > There are also potential problems if the object is merged with > something else, but that shouldn't ever happen with multipart objects. Thanks for your help again. I found out that in the 'lex_load' function only the head part of a multipart monster is created and inserted into the map. The creation of the remaining parts happens in 'link_multipart_objects(mapstruct *m)' in 'map.c', which checks if the 'more' field of the arch of an object (ob->arch->more) is set. So the solution was quite simple, i do the same, and just add the head of a multipart monster (or better said, its arch) into the inventory of a generator, and create the remaining parts when the 'generate_monster()' function is called. So for example an acid pool generator in a map which creates electric dragons with hp 1000 would simply be: arch acid_pool x 1 carrying 200000 arch big_elec hp 1000 end end Only problem now is, that the generator shouldn't get destroyed, or else you have the single head part of an electric dragon in your map (this doesn't crashes the server, but looks wrong) Here is my changed 'generate_monster()' function again (i can create a patch if wanted, but perhaps this isn't necessary, since this was the only thing i had to change): void generate_monster(object *gen) { int i; object *op,*head=NULL,*prev=NULL,*gob; archetype *at; if(GENERATE_SPEED(gen)&&rndm(0, GENERATE_SPEED(gen)-1)) return; if(gen->inv!=NULL) { gob=gen->inv; /* the generator inv just contains the head of the monster, */ /* if it is mulipart */ i=find_free_spot(gob->arch,gen->map,gen->x,gen->y,1,9); if (i==-1) return; op=get_object(); copy_object(gob,op); op->x=gen->x+freearr_x[i]+gob->arch->clone.x; op->y=gen->y+freearr_y[i]+gob->arch->clone.y; if (rndm(0, 9)) generate_artifact(op, gen->map->difficulty); insert_ob_in_map(op,gen->map,gen,0); if (QUERY_FLAG(op, FLAG_FREED)) return; if(op->randomitems!=NULL) create_treasure(op->randomitems,op,GT_APPLY, gen->map->difficulty,0); head=op; prev=op; at=gob->arch->more; } else { if(gen->other_arch==NULL) { LOG(llevError,"Generator without other_arch or inv: %s\n",gen->name); return; } at=gen->other_arch; i=find_free_spot(at,gen->map,gen->x,gen->y,1,9); if (i==-1) return; } while(at!=NULL) { op=arch_to_object(at); op->x=gen->x+freearr_x[i]+at->clone.x; op->y=gen->y+freearr_y[i]+at->clone.y; if(head!=NULL) op->head=head,prev->more=op; if (rndm(0, 9)) generate_artifact(op, gen->map->difficulty); insert_ob_in_map(op,gen->map,gen,0); if (QUERY_FLAG(op, FLAG_FREED)) return; if(op->randomitems!=NULL) create_treasure(op->randomitems,op,GT_APPLY, gen->map->difficulty,0); if(head==NULL) head=op; prev=op; at=at->more; } } From root at garbled.net Tue Apr 16 12:57:56 2002 From: root at garbled.net (Tim Rightnour) Date: Thu Jan 13 18:02:18 2005 Subject: [CF-Devel] patch for generators to create special ability mo In-Reply-To: <3CBC34EA.1080506@t-online.de> Message-ID: On 16-Apr-02 Norbert Irmer wrote: > Only problem now is, that the generator shouldn't get destroyed, or else > you have the > single head part of an electric dragon in your map (this doesn't crashes > the server, but > looks wrong) Couldn't you modify the routines that destroy objects to special case generators and destroy thier inventory? --- Tim Rightnour NetBSD: Free multi-architecture OS http://www.netbsd.org/ NetBSD supported hardware database: http://mail-index.netbsd.org/cgi-bin/hw.cgi From dnh at hawthorn.csse.monash.edu.au Tue Apr 16 16:48:13 2002 From: dnh at hawthorn.csse.monash.edu.au (David Hurst) Date: Thu Jan 13 18:02:18 2005 Subject: [CF-Devel] Reply to: address (was: more alchemy formulae) In-Reply-To: References: Message-ID: <20020416214813.GA10968@hawthorn.csse.monash.edu.au> > Anyone else have a preference on keeping the list as is, or having a reply > to: address ? I would really like a reply-to: address, using mutt it is a real pain in the arse having to constantly change the address each time I reply to a message. dnh From mwedel at sonic.net Wed Apr 17 00:21:00 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:18 2005 Subject: [CF-Devel] patch for generators to create special ability mo References: Message-ID: <3CBD063C.5010600@sonic.net> Tim Rightnour wrote: > On 16-Apr-02 Norbert Irmer wrote: > >>Only problem now is, that the generator shouldn't get destroyed, or else >>you have the >>single head part of an electric dragon in your map (this doesn't crashes >>the server, but >>looks wrong) >> > > Couldn't you modify the routines that destroy objects to special case > generators and destroy thier inventory? Yep - probably around line 1450 in server/attack.c. If FLAG_GENERATOR is set, then something like while (op->inv) { tmp = op->inv; remove_ob(tmp); free_ob(tmp) ; } is probably all that is needed. From norbert.irmer at t-online.de Wed Apr 17 08:02:29 2002 From: norbert.irmer at t-online.de (Norbert Irmer) Date: Thu Jan 13 18:02:18 2005 Subject: [CF-Devel] patch for generators to create special ability mo References: <3CBD063C.5010600@sonic.net> Message-ID: <3CBD7265.8010601@t-online.de> Mark Wedel wrote: > Tim Rightnour wrote: > >> Couldn't you modify the routines that destroy objects to special case >> generators and destroy thier inventory? > > Yep - probably around line 1450 in server/attack.c. If > FLAG_GENERATOR is set, then something like > > while (op->inv) { > tmp = op->inv; > remove_ob(tmp); > free_ob(tmp) ; > } > > is probably all that is needed. Yes, this solves the problem. I have encountered another problem. When i put fog into the inventory of a generator, the server crashes after some time. I suppose the reason is, that fog itself is a generator, which destroys itself after one generation (probably to achieve the random fog movement?) and it isn't expected that it is in the inventory of another object. But i am not sure. Is it possible to do a debug build ? Perhaps with 'configure --with-debug' ? From norbert.irmer at t-online.de Wed Apr 17 10:34:27 2002 From: norbert.irmer at t-online.de (Norbert Irmer) Date: Thu Jan 13 18:02:19 2005 Subject: [CF-Devel] patch for generators to create special ability monsters References: <3CBD063C.5010600@sonic.net> <3CBD7265.8010601@t-online.de> <3CBD82F6.5080304@t-online.de> Message-ID: <3CBD9603.1080102@t-online.de> I created diff files, containing the changes i made to 'server/time.c' and 'common/map.c'. I also fixed a small bug, which made fog be swallowed by deep_swamp in 'server/swamp.c'. The code for replicating objects put in the inventory of generators seem to work fine now. (A funny detail: if you put fog in the inventory of a generator, the generator starts producing the arch set by 'other_arch' when the fog is used up:) I also included two maps for testing, 'test' and 'island'. -------------- next part -------------- ? Makefile ? common-map.c.diff Index: map.c =================================================================== RCS file: /cvsroot/crossfire/crossfire/common/map.c,v retrieving revision 1.36 diff -c -5 -r1.36 map.c *** map.c 6 Feb 2002 05:54:46 -0000 1.36 --- map.c 17 Apr 2002 15:14:22 -0000 *************** *** 446,455 **** --- 446,458 ---- */ int arch_out_of_map(archetype *at,mapstruct *m,int x,int y) { archetype *tmp; + if(m==0) + return 1; + if(at==NULL) return out_of_map(m,x,y); for(tmp=at;tmp!=NULL;tmp=tmp->more) if(out_of_map(m,x+tmp->clone.x,y+tmp->clone.y)) -------------- next part -------------- Index: swamp.c =================================================================== RCS file: /cvsroot/crossfire/crossfire/server/swamp.c,v retrieving revision 1.5 diff -c -5 -r1.5 swamp.c *** swamp.c 8 Feb 2002 20:19:37 -0000 1.5 --- swamp.c 17 Apr 2002 15:16:45 -0000 *************** *** 71,81 **** new_draw_info(NDI_UNIQUE, 0,above, "survived due to your woodsman skill."); } } break; } ! } else if (!QUERY_FLAG(above, FLAG_ALIVE)) { if (rndm(0, 2) == 0) decrease_ob(above); } above = nabove; } } --- 71,81 ---- new_draw_info(NDI_UNIQUE, 0,above, "survived due to your woodsman skill."); } } break; } ! } else if (!QUERY_FLAG(above, FLAG_ALIVE) && !QUERY_FLAG(above, FLAG_FLYING)) { if (rndm(0, 2) == 0) decrease_ob(above); } above = nabove; } } -------------- next part -------------- Index: time.c =================================================================== RCS file: /cvsroot/crossfire/crossfire/server/time.c,v retrieving revision 1.40 diff -c -5 -r1.40 time.c *** time.c 2 Jan 2002 06:53:23 -0000 1.40 --- time.c 17 Apr 2002 15:17:15 -0000 *************** *** 83,103 **** free_object(op); } void generate_monster(object *gen) { int i; ! object *op,*head=NULL,*prev=NULL; ! archetype *at=gen->other_arch; if(GENERATE_SPEED(gen)&&rndm(0, GENERATE_SPEED(gen)-1)) return; ! if(gen->other_arch==NULL) { ! LOG(llevError,"Generator without other_arch: %s\n",gen->name); ! return; } ! i=find_free_spot(at,gen->map,gen->x,gen->y,1,9); ! if (i==-1) return; while(at!=NULL) { op=arch_to_object(at); op->x=gen->x+freearr_x[i]+at->clone.x; op->y=gen->y+freearr_y[i]+at->clone.y; if(head!=NULL) --- 83,127 ---- free_object(op); } void generate_monster(object *gen) { int i; ! object *op,*head=NULL,*prev=NULL,*gob; ! archetype *at; if(GENERATE_SPEED(gen)&&rndm(0, GENERATE_SPEED(gen)-1)) return; ! ! if(gen->inv!=NULL) { ! gob=gen->inv; /* the generator inv just contains the head of the monster, */ ! /* if it is mulipart */ ! i=find_free_spot(gob->arch,gen->map,gen->x,gen->y,1,9); ! if (i==-1) return; ! op=get_object(); ! copy_object(gob,op); ! op->x=gen->x+freearr_x[i]+gob->arch->clone.x; ! op->y=gen->y+freearr_y[i]+gob->arch->clone.y; ! if (rndm(0, 9)) generate_artifact(op, gen->map->difficulty); ! insert_ob_in_map(op,gen->map,gen,0); ! if (QUERY_FLAG(op, FLAG_FREED)) return; ! if(op->randomitems!=NULL) ! create_treasure(op->randomitems,op,GT_APPLY, ! gen->map->difficulty,0); ! head=op; ! prev=op; ! at=gob->arch->more; } ! else { ! if(gen->other_arch==NULL) { ! LOG(llevError,"Generator without other_arch or inv: %s\n",gen->name); ! return; ! } ! at=gen->other_arch; ! i=find_free_spot(at,gen->map,gen->x,gen->y,1,9); ! if (i==-1) return; ! } ! while(at!=NULL) { op=arch_to_object(at); op->x=gen->x+freearr_x[i]+at->clone.x; op->y=gen->y+freearr_y[i]+at->clone.y; if(head!=NULL) -------------- next part -------------- arch map reset_timeout 7200 difficulty 2 width 16 height 16 enter_x 1 enter_y 1 msg Creator: Gnat the Gnu Email: gnu@foo.bar Date: Tue Apr 16 01:13:30 2002 endmsg end arch acid_pool x 1 carrying 200000 arch big_elec hp 1000 end end arch acid_pool x 9 y 5 carrying 400000 arch fog end end -------------- next part -------------- arch map name island_treasure reset_timeout 7200 difficulty 1 width 32 height 32 enter_x 1 enter_y 1 msg Creator: CF Java Map Editor Date: 4/11/2002 endmsg end arch flagstone end arch mine10 end arch flagstone y 1 end arch mine3 y 1 end arch flagstone y 2 end arch mine3 y 2 end arch flagstone y 3 end arch mine3 y 3 end arch flagstone y 4 end arch mine3 y 4 end arch flagstone y 5 end arch mine3 y 5 end arch flagstone y 6 end arch mine3 y 6 end arch flagstone y 7 end arch mine3 y 7 end arch flagstone y 8 end arch mine3 y 8 end arch flagstone y 9 end arch mine3 y 9 end arch flagstone y 10 end arch mine3 y 10 end arch flagstone y 11 end arch mine3 y 11 end arch flagstone y 12 end arch mine3 y 12 end arch flagstone y 13 end arch mine3 y 13 end arch flagstone y 14 end arch mine3 y 14 end arch flagstone y 15 end arch mine3 y 15 end arch flagstone y 16 end arch mine3 y 16 end arch flagstone y 17 end arch mine3 y 17 end arch flagstone y 18 end arch mine3 y 18 end arch flagstone y 19 end arch mine3 y 19 end arch flagstone y 20 end arch mine3 y 20 end arch flagstone y 21 end arch mine3 y 21 end arch flagstone y 22 end arch mine3 y 22 end arch flagstone y 23 end arch mine3 y 23 end arch flagstone y 24 end arch mine3 y 24 end arch flagstone y 25 end arch mine3 y 25 end arch flagstone y 26 end arch mine3 y 26 end arch flagstone y 27 end arch mine4 y 27 end arch flagstone y 28 end arch boulder y 28 end arch flagstone y 29 end arch boulder y 29 end arch flagstone y 30 end arch boulder y 30 end arch flagstone y 31 end arch mine4 y 31 end arch flagstone x 1 end arch mine2 x 1 end arch flagstone x 1 y 1 end arch flagstone x 1 y 2 end arch flagstone x 1 y 3 end arch flagstone x 1 y 4 end arch flagstone x 1 y 5 end arch flagstone x 1 y 6 end arch flagstone x 1 y 7 end arch g_worm Con 90 hp 6000 exp 20000 x 1 y 7 resist_magic 100 resist_electricity 100 resist_cold 100 resist_slow 100 end arch flagstone x 1 y 8 end arch flagstone x 1 y 9 end arch flagstone x 1 y 10 end arch flagstone x 1 y 11 end arch flagstone x 1 y 12 end arch flagstone x 1 y 13 end arch flagstone x 1 y 14 end arch flagstone x 1 y 15 end arch flagstone x 1 y 16 end arch flagstone x 1 y 17 end arch byakie name cave byakie Str 90 Dex 65 Con 90 Wis 20 Pow 75 Int 30 hp 10000 maxhp 8000 sp 200 maxsp 200 exp 500000 dam 60 wc -50 ac -40 x 1 y 17 speed -0.700000 level 50 resist_electricity 100 resist_cold 100 resist_confusion 100 resist_acid 100 resist_slow 100 resist_paralyze 100 arch ability_cold end arch ability_slow end arch ability_missile end end arch flagstone x 1 y 18 end arch flagstone x 1 y 19 end arch flagstone x 1 y 20 end arch flagstone x 1 y 21 end arch flagstone x 1 y 22 end arch flagstone x 1 y 23 end arch flagstone x 1 y 24 end arch flagstone x 1 y 25 end arch flagstone x 1 y 26 end arch button_handle x 1 y 26 connected 1 end arch flagstone x 1 y 27 end arch mine2 x 1 y 27 end arch flagstone x 1 y 28 end arch boulder x 1 y 28 end arch flagstone x 1 y 29 end arch flagstone x 1 y 30 end arch flagstone x 1 y 31 end arch mine2 x 1 y 31 end arch flagstone x 2 end arch mine2 x 2 end arch flagstone x 2 y 1 end arch flagstone x 2 y 2 end arch flagstone x 2 y 3 end arch flagstone x 2 y 4 end arch flagstone x 2 y 5 end arch flagstone x 2 y 6 end arch flagstone x 2 y 7 end arch flagstone x 2 y 8 end arch flagstone x 2 y 9 end arch flagstone x 2 y 10 end arch flagstone x 2 y 11 end arch flagstone x 2 y 12 end arch flagstone x 2 y 13 end arch flagstone x 2 y 14 end arch flagstone x 2 y 15 end arch flagstone x 2 y 16 end arch flagstone x 2 y 17 end arch flagstone x 2 y 18 end arch flagstone x 2 y 19 end arch flagstone x 2 y 20 end arch flagstone x 2 y 21 end arch flagstone x 2 y 22 end arch g_worm Con 90 hp 6000 exp 20000 x 2 y 22 resist_magic 100 resist_electricity 100 resist_cold 100 resist_slow 100 end arch flagstone x 2 y 23 end arch flagstone x 2 y 24 end arch flagstone x 2 y 25 end arch flagstone x 2 y 26 end arch flagstone x 2 y 27 end arch mine2 x 2 y 27 end arch flagstone x 2 y 28 end arch flagstone x 2 y 29 end arch flagstone x 2 y 30 end arch boulder x 2 y 30 end arch flagstone x 2 y 31 end arch mine2 x 2 y 31 end arch flagstone x 3 end arch mine2 x 3 end arch flagstone x 3 y 1 end arch flagstone x 3 y 2 end arch byakie name cave byakie Str 90 Dex 65 Con 90 Wis 20 Pow 75 Int 30 hp 10000 maxhp 8000 sp 200 maxsp 200 exp 500000 dam 60 wc -50 ac -40 x 3 y 2 speed -0.700000 level 50 resist_electricity 100 resist_cold 100 resist_confusion 100 resist_acid 100 resist_slow 100 resist_paralyze 100 arch ability_cold end arch ability_slow end arch ability_missile end end arch flagstone x 3 y 3 end arch flagstone x 3 y 4 end arch flagstone x 3 y 5 end arch flagstone x 3 y 6 end arch flagstone x 3 y 7 end arch flagstone x 3 y 8 end arch flagstone x 3 y 9 end arch flagstone x 3 y 10 end arch flagstone x 3 y 11 end arch flagstone x 3 y 12 end arch flagstone x 3 y 13 end arch flagstone x 3 y 14 end arch flagstone x 3 y 15 end arch flagstone x 3 y 16 end arch flagstone x 3 y 17 end arch flagstone x 3 y 18 end arch flagstone x 3 y 19 end arch pentagram_111 x 3 y 19 end arch flagstone x 3 y 20 end arch flagstone x 3 y 21 end arch flagstone x 3 y 22 end arch flagstone x 3 y 23 end arch flagstone x 3 y 24 end arch flagstone x 3 y 25 end arch flagstone x 3 y 26 end arch flagstone x 3 y 27 end arch mine2 x 3 y 27 end arch flagstone x 3 y 28 end arch boulder x 3 y 28 end arch flagstone x 3 y 29 end arch boulder x 3 y 29 end arch flagstone x 3 y 30 end arch flagstone x 3 y 31 end arch mine2 x 3 y 31 end arch flagstone x 4 end arch mine2 x 4 end arch flagstone x 4 y 1 end arch flagstone x 4 y 2 end arch flagstone x 4 y 3 end arch flagstone x 4 y 4 end arch mine10 x 4 y 4 end arch flagstone x 4 y 5 end arch mine11 x 4 y 5 end arch flagstone x 4 y 6 end arch mine11 x 4 y 6 end arch flagstone x 4 y 7 end arch mine11 x 4 y 7 end arch flagstone x 4 y 8 end arch mine11 x 4 y 8 end arch flagstone x 4 y 9 end arch mine11 x 4 y 9 end arch flagstone x 4 y 10 end arch mine11 x 4 y 10 end arch flagstone x 4 y 11 end arch mine11 x 4 y 11 end arch flagstone x 4 y 12 end arch mine11 x 4 y 12 end arch flagstone x 4 y 13 end arch mine11 x 4 y 13 end arch flagstone x 4 y 14 end arch mine11 x 4 y 14 end arch flagstone x 4 y 15 end arch mine11 x 4 y 15 end arch flagstone x 4 y 16 end arch mine4 x 4 y 16 end arch flagstone x 4 y 17 end arch flagstone x 4 y 18 end arch flagstone x 4 y 19 end arch flagstone x 4 y 20 end arch flagstone x 4 y 21 end arch flagstone x 4 y 22 end arch flagstone x 4 y 23 end arch flagstone x 4 y 24 end arch big_elec Str 90 Dex 65 Con 90 Pow 75 Int 30 hp 10000 maxhp 8000 sp 300 maxsp 300 dam 60 wc -50 ac -40 x 4 y 24 level 90 resist_magic 50 resist_fire 50 resist_acid 100 arch ability_lightning sp 88 end end arch flagstone x 4 y 25 end arch flagstone x 4 y 26 end arch flagstone x 4 y 27 end arch mine2 x 4 y 27 end arch flagstone x 4 y 28 end arch flagstone x 4 y 29 end arch boulder x 4 y 29 end arch flagstone x 4 y 30 end arch flagstone x 4 y 31 end arch mine2 x 4 y 31 end arch flagstone x 5 end arch mine2 x 5 end arch flagstone x 5 y 1 end arch flagstone x 5 y 2 end arch flagstone x 5 y 3 end arch flagstone x 5 y 4 end arch mine16 x 5 y 4 end arch flagstone x 5 y 5 end arch mine17 x 5 y 5 end arch flagstone x 5 y 6 end arch mine14 x 5 y 6 end arch flagstone x 5 y 7 end arch mine14 x 5 y 7 end arch flagstone x 5 y 8 end arch mine14 x 5 y 8 end arch flagstone x 5 y 9 end arch mine14 x 5 y 9 end arch flagstone x 5 y 10 end arch mine14 x 5 y 10 end arch flagstone x 5 y 11 end arch mine14 x 5 y 11 end arch flagstone x 5 y 12 end arch mine14 x 5 y 12 end arch flagstone x 5 y 13 end arch mine14 x 5 y 13 end arch flagstone x 5 y 14 end arch mine14 x 5 y 14 end arch flagstone x 5 y 15 end arch mine17 x 5 y 15 end arch flagstone x 5 y 16 end arch mine13 x 5 y 16 end arch flagstone x 5 y 17 end arch flagstone x 5 y 18 end arch flagstone x 5 y 19 end arch flagstone x 5 y 20 end arch flagstone x 5 y 21 end arch flagstone x 5 y 22 end arch flagstone x 5 y 23 end arch flagstone x 5 y 24 end arch flagstone x 5 y 25 end arch flagstone x 5 y 26 end arch flagstone x 5 y 27 end arch mine2 x 5 y 27 end arch flagstone x 5 y 28 end arch flagstone x 5 y 29 end arch flagstone x 5 y 30 end arch boulder x 5 y 30 end arch flagstone x 5 y 31 end arch mine2 x 5 y 31 end arch flagstone x 6 end arch mine2 x 6 end arch flagstone x 6 y 1 end arch flagstone x 6 y 2 end arch flagstone x 6 y 3 end arch flagstone x 6 y 4 end arch mine16 x 6 y 4 end arch flagstone x 6 y 5 end arch mine13 x 6 y 5 end arch flagstone x 6 y 6 end arch flagstone x 6 y 7 end arch flagstone x 6 y 8 end arch flagstone x 6 y 9 end arch flagstone x 6 y 10 end arch flagstone x 6 y 11 end arch flagstone x 6 y 12 end arch flagstone x 6 y 13 end arch flagstone x 6 y 14 end arch flagstone x 6 y 15 end arch mine16 x 6 y 15 end arch flagstone x 6 y 16 end arch mine13 x 6 y 16 end arch flagstone x 6 y 17 end arch flagstone x 6 y 18 end arch g_worm Con 90 hp 6000 exp 20000 x 6 y 18 resist_magic 100 resist_electricity 100 resist_cold 100 resist_slow 100 end arch flagstone x 6 y 19 end arch flagstone x 6 y 20 end arch flagstone x 6 y 21 end arch flagstone x 6 y 22 end arch flagstone x 6 y 23 end arch flagstone x 6 y 24 end arch flagstone x 6 y 25 end arch flagstone x 6 y 26 end arch flagstone x 6 y 27 end arch mine2 x 6 y 27 end arch flagstone x 6 y 28 end arch boulder x 6 y 28 end arch flagstone x 6 y 29 end arch flagstone x 6 y 30 end arch flagstone x 6 y 31 end arch mine2 x 6 y 31 end arch flagstone x 7 end arch mine2 x 7 end arch flagstone x 7 y 1 end arch flagstone x 7 y 2 end arch flagstone x 7 y 3 end arch flagstone x 7 y 4 end arch mine16 x 7 y 4 end arch flagstone x 7 y 5 end arch mine13 x 7 y 5 end arch flagstone x 7 y 6 end arch flagstone x 7 y 7 end arch byakie name cave byakie Str 90 Dex 65 Con 90 Wis 20 Pow 75 Int 30 hp 10000 maxhp 8000 sp 200 maxsp 200 exp 500000 dam 60 wc -50 ac -40 x 7 y 7 speed -0.700000 level 50 resist_electricity 100 resist_cold 100 resist_confusion 100 resist_acid 100 resist_slow 100 resist_paralyze 100 arch ability_cold end arch ability_slow end arch ability_missile end end arch flagstone x 7 y 8 end arch flagstone x 7 y 9 end arch flagstone x 7 y 10 end arch flagstone x 7 y 11 end arch byakie name cave byakie Str 90 Dex 65 Con 90 Wis 20 Pow 75 Int 30 hp 10000 maxhp 8000 sp 200 maxsp 200 exp 500000 dam 60 wc -50 ac -40 x 7 y 11 speed -0.700000 level 50 resist_electricity 100 resist_cold 100 resist_confusion 100 resist_acid 100 resist_slow 100 resist_paralyze 100 arch ability_cold end arch ability_slow end arch ability_missile end end arch flagstone x 7 y 12 end arch flagstone x 7 y 13 end arch flagstone x 7 y 14 end arch flagstone x 7 y 15 end arch mine16 x 7 y 15 end arch flagstone x 7 y 16 end arch mine13 x 7 y 16 end arch flagstone x 7 y 17 end arch flagstone x 7 y 18 end arch flagstone x 7 y 19 end arch flagstone x 7 y 20 end arch mine8 x 7 y 20 end arch flagstone x 7 y 21 end arch mine3 x 7 y 21 end arch flagstone x 7 y 22 end arch mine3 x 7 y 22 end arch flagstone x 7 y 23 end arch mine3 x 7 y 23 end arch flagstone x 7 y 24 end arch mine3 x 7 y 24 end arch flagstone x 7 y 25 end arch mine3 x 7 y 25 end arch flagstone x 7 y 26 end arch mine3 x 7 y 26 end arch flagstone x 7 y 27 end arch mine12 x 7 y 27 end arch flagstone x 7 y 28 end arch flagstone x 7 y 29 end arch boulder x 7 y 29 end arch flagstone x 7 y 30 end arch flagstone x 7 y 31 end arch mine2 x 7 y 31 end arch flagstone x 8 end arch mine2 x 8 end arch flagstone x 8 y 1 end arch flagstone x 8 y 2 end arch flagstone x 8 y 3 end arch flagstone x 8 y 4 end arch mine16 x 8 y 4 end arch flagstone x 8 y 5 end arch mine13 x 8 y 5 end arch flagstone x 8 y 6 end arch flagstone x 8 y 7 end arch flagstone x 8 y 8 end arch flagstone x 8 y 9 end arch flagstone x 8 y 10 end arch flagstone x 8 y 10 end arch flagstone x 8 y 11 end arch flagstone x 8 y 11 end arch flagstone x 8 y 12 end arch flagstone x 8 y 13 end arch flagstone x 8 y 14 end arch flagstone x 8 y 15 end arch mine16 x 8 y 15 end arch flagstone x 8 y 16 end arch mine13 x 8 y 16 end arch flagstone x 8 y 17 end arch flagstone x 8 y 18 end arch flagstone x 8 y 19 end arch flagstone x 8 y 20 end arch flagstone x 8 y 21 end arch flagstone x 8 y 22 end arch flagstone x 8 y 23 end arch flagstone x 8 y 24 end arch flagstone x 8 y 25 end arch boulder x 8 y 25 end arch flagstone x 8 y 26 end arch flagstone x 8 y 27 end arch flagstone x 8 y 28 end arch flagstone x 8 y 29 end arch flagstone x 8 y 30 end arch flagstone x 8 y 31 end arch mine2 x 8 y 31 end arch flagstone x 9 end arch mine2 x 9 end arch flagstone x 9 y 1 end arch flagstone x 9 y 2 end arch flagstone x 9 y 3 end arch flagstone x 9 y 4 end arch mine16 x 9 y 4 end arch flagstone x 9 y 5 end arch mine13 x 9 y 5 end arch flagstone x 9 y 6 end arch flagstone x 9 y 7 end arch flagstone x 9 y 8 end arch flagstone x 9 y 9 end arch flagstone x 9 y 9 end arch flagstone x 9 y 10 end arch flagstone x 9 y 10 end arch flagstone x 9 y 10 end arch flagstone x 9 y 11 end arch flagstone x 9 y 11 end arch flagstone x 9 y 12 end arch flagstone x 9 y 13 end arch flagstone x 9 y 14 end arch flagstone x 9 y 15 end arch mine16 x 9 y 15 end arch flagstone x 9 y 16 end arch mine13 x 9 y 16 end arch flagstone x 9 y 17 end arch flagstone x 9 y 18 end arch flagstone x 9 y 19 end arch flagstone x 9 y 20 end arch flagstone x 9 y 21 end arch flagstone x 9 y 22 end arch flagstone x 9 y 23 end arch flagstone x 9 y 24 end arch flagstone x 9 y 25 end arch flagstone x 9 y 26 end arch flagstone x 9 y 27 end arch flagstone x 9 y 28 end arch flagstone x 9 y 29 end arch flagstone x 9 y 30 end arch boulder x 9 y 30 end arch flagstone x 9 y 31 end arch mine2 x 9 y 31 end arch flagstone x 10 end arch mine2 x 10 end arch flagstone x 10 y 1 end arch boulder x 10 y 1 end arch flagstone x 10 y 2 end arch flagstone x 10 y 3 end arch flagstone x 10 y 4 end arch mine9 x 10 y 4 end arch flagstone x 10 y 5 end arch mine12 x 10 y 5 end arch flagstone x 10 y 6 end arch flagstone x 10 y 7 end arch big_elec Str 90 Dex 65 Con 90 Pow 75 Int 30 hp 10000 maxhp 8000 sp 300 maxsp 300 dam 60 wc -50 ac -40 x 10 y 7 level 90 resist_magic 50 resist_fire 50 resist_acid 100 arch ability_lightning sp 88 end end arch flagstone x 10 y 8 end arch flagstone x 10 y 9 end arch flagstone x 10 y 9 end arch flagstone x 10 y 10 end arch flagstone x 10 y 10 end arch flagstone x 10 y 11 end arch flagstone x 10 y 12 end arch g_worm Con 90 hp 6000 exp 20000 x 10 y 12 resist_magic 100 resist_electricity 100 resist_cold 100 resist_slow 100 end arch flagstone x 10 y 13 end arch flagstone x 10 y 14 end arch flagstone x 10 y 15 end arch mine16 x 10 y 15 end arch flagstone x 10 y 16 end arch mine13 x 10 y 16 end arch flagstone x 10 y 17 end arch flagstone x 10 y 18 end arch flagstone x 10 y 19 end arch flagstone x 10 y 20 end arch flagstone x 10 y 21 end arch flagstone x 10 y 22 end arch flagstone x 10 y 23 end arch flagstone x 10 y 24 end arch flagstone x 10 y 25 end arch flagstone x 10 y 26 end arch flagstone x 10 y 27 end arch flagstone x 10 y 28 end arch flagstone x 10 y 29 end arch flagstone x 10 y 30 end arch flagstone x 10 y 31 end arch mine2 x 10 y 31 end arch flagstone x 11 end arch stair_up_1 slaying /city/city hp 6 sp 14 x 11 end arch boulder x 11 end arch flagstone x 11 y 1 end arch flagstone x 11 y 2 end arch flagstone x 11 y 3 end arch flagstone x 11 y 4 end arch gate_closed_1 x 11 y 4 speed 0.500000 connected 1 end arch flagstone x 11 y 5 end arch gate_closed_1 x 11 y 5 speed 0.500000 connected 2 end arch flagstone x 11 y 6 end arch flagstone x 11 y 7 end arch flagstone x 11 y 8 end arch flagstone x 11 y 9 end arch flagstone x 11 y 10 end arch flagstone x 11 y 11 end arch flagstone x 11 y 12 end arch flagstone x 11 y 13 end arch flagstone x 11 y 14 end arch brazier x 11 y 14 end arch flagstone x 11 y 15 end arch mine16 x 11 y 15 end arch flagstone x 11 y 16 end arch mine17 x 11 y 16 end arch flagstone x 11 y 17 end arch mine3 x 11 y 17 end arch flagstone x 11 y 18 end arch mine3 x 11 y 18 end arch flagstone x 11 y 19 end arch mine3 x 11 y 19 end arch flagstone x 11 y 20 end arch mine3 x 11 y 20 end arch flagstone x 11 y 21 end arch mine3 x 11 y 21 end arch flagstone x 11 y 22 end arch mine3 x 11 y 22 end arch flagstone x 11 y 23 end arch mine3 x 11 y 23 end arch flagstone x 11 y 24 end arch mine3 x 11 y 24 end arch flagstone x 11 y 25 end arch mine3 x 11 y 25 end arch flagstone x 11 y 26 end arch mine3 x 11 y 26 end arch flagstone x 11 y 27 end arch mine4 x 11 y 27 end arch flagstone x 11 y 28 end arch flagstone x 11 y 29 end arch flagstone x 11 y 30 end arch flagstone x 11 y 31 end arch mine2 x 11 y 31 end arch flagstone x 12 end arch stair_up_1 slaying /city/city hp 6 sp 14 x 12 end arch flagstone x 12 y 1 end arch flagstone x 12 y 2 end arch flagstone x 12 y 3 end arch flagstone x 12 y 4 end arch gate_closed_1 x 12 y 4 speed 0.500000 connected 1 end arch flagstone x 12 y 5 end arch gate_closed_1 x 12 y 5 speed 0.500000 connected 2 end arch flagstone x 12 y 6 end arch flagstone x 12 y 7 end arch flagstone x 12 y 8 end arch flagstone x 12 y 9 end arch flagstone x 12 y 10 end arch pentagram_111 slaying /cthulhu/island hp 28 sp 14 x 12 y 10 connected 3 end arch flagstone x 12 y 11 end arch flagstone x 12 y 12 end arch flagstone x 12 y 13 end arch flagstone x 12 y 13 end arch flagstone x 12 y 14 end arch flagstone x 12 y 15 end arch mine16 x 12 y 15 end arch flagstone x 12 y 16 end arch mine13 x 12 y 16 end arch flagstone x 12 y 17 end arch flagstone x 12 y 18 end arch byakie name cave byakie Str 90 Dex 65 Con 90 Wis 20 Pow 75 Int 30 hp 10000 maxhp 8000 sp 200 maxsp 200 exp 500000 dam 60 wc -50 ac -40 x 12 y 18 speed -0.700000 level 50 resist_electricity 100 resist_cold 100 resist_confusion 100 resist_acid 100 resist_slow 100 resist_paralyze 100 arch ability_cold end arch ability_slow end arch ability_missile end end arch flagstone x 12 y 19 end arch flagstone x 12 y 20 end arch flagstone x 12 y 21 end arch flagstone x 12 y 22 end arch flagstone x 12 y 23 end arch flagstone x 12 y 24 end arch flagstone x 12 y 25 end arch flagstone x 12 y 26 end arch button_handle x 12 y 26 connected 2 end arch flagstone x 12 y 27 end arch mine2 x 12 y 27 end arch flagstone x 12 y 28 end arch flagstone x 12 y 29 end arch flagstone x 12 y 30 end arch flagstone x 12 y 31 end arch mine2 x 12 y 31 end arch flagstone x 13 end arch stair_up_1 slaying /city/city hp 6 sp 14 x 13 end arch flagstone x 13 y 1 end arch flagstone x 13 y 2 end arch flagstone x 13 y 3 end arch flagstone x 13 y 4 end arch gate_closed_1 x 13 y 4 speed 0.500000 connected 1 end arch flagstone x 13 y 5 end arch gate_closed_1 x 13 y 5 speed 0.500000 connected 2 end arch flagstone x 13 y 6 end arch flagstone x 13 y 7 end arch flagstone x 13 y 8 end arch flagstone x 13 y 9 end arch flagstone x 13 y 10 end arch creator x 13 y 11 connected 3 lifesave 1 end arch flagstone x 13 y 11 end arch flagstone x 13 y 12 end arch flagstone x 13 y 13 end arch flagstone x 13 y 13 end arch flagstone x 13 y 14 end arch altar_trigger slaying Giant Worm's eye food 1 x 13 y 14 connected 3 end arch flagstone x 13 y 15 end arch mine16 x 13 y 15 end arch flagstone x 13 y 16 end arch mine13 x 13 y 16 end arch flagstone x 13 y 17 end arch flagstone x 13 y 18 end arch flagstone x 13 y 19 end arch flagstone x 13 y 20 end arch flagstone x 13 y 21 end arch flagstone x 13 y 22 end arch g_worm Con 90 hp 6000 exp 20000 x 13 y 22 resist_magic 100 resist_electricity 100 resist_cold 100 resist_slow 100 end arch flagstone x 13 y 23 end arch flagstone x 13 y 24 end arch byakie name cave byakie Str 90 Dex 65 Con 90 Wis 20 Pow 75 Int 30 hp 10000 maxhp 8000 sp 200 maxsp 200 exp 500000 dam 60 wc -50 ac -40 x 13 y 24 speed -0.700000 level 50 resist_electricity 100 resist_cold 100 resist_confusion 100 resist_acid 100 resist_slow 100 resist_paralyze 100 arch ability_cold end arch ability_slow end arch ability_missile end end arch flagstone x 13 y 25 end arch flagstone x 13 y 26 end arch flagstone x 13 y 27 end arch mine2 x 13 y 27 end arch flagstone x 13 y 28 end arch flagstone x 13 y 29 end arch flagstone x 13 y 30 end arch flagstone x 13 y 31 end arch mine2 x 13 y 31 end arch flagstone x 14 end arch stair_up_1 slaying /city/city hp 6 sp 14 x 14 end arch boulder x 14 end arch flagstone x 14 y 1 end arch flagstone x 14 y 2 end arch flagstone x 14 y 3 end arch flagstone x 14 y 4 end arch gate_closed_1 x 14 y 4 speed 0.500000 connected 1 end arch flagstone x 14 y 5 end arch gate_closed_1 x 14 y 5 speed 0.500000 connected 2 end arch flagstone x 14 y 6 end arch flagstone x 14 y 7 end arch flagstone x 14 y 8 end arch flagstone x 14 y 9 end arch flagstone x 14 y 10 end arch flagstone x 14 y 11 end arch flagstone x 14 y 12 end arch flagstone x 14 y 13 end arch flagstone x 14 y 13 end arch flagstone x 14 y 14 end arch flagstone x 14 y 15 end arch mine16 x 14 y 15 end arch flagstone x 14 y 16 end arch mine13 x 14 y 16 end arch flagstone x 14 y 17 end arch flagstone x 14 y 18 end arch flagstone x 14 y 19 end arch flagstone x 14 y 20 end arch flagstone x 14 y 21 end arch flagstone x 14 y 22 end arch flagstone x 14 y 23 end arch flagstone x 14 y 24 end arch flagstone x 14 y 25 end arch flagstone x 14 y 26 end arch flagstone x 14 y 27 end arch mine2 x 14 y 27 end arch flagstone x 14 y 28 end arch flagstone x 14 y 29 end arch flagstone x 14 y 30 end arch flagstone x 14 y 31 end arch mine2 x 14 y 31 end arch flagstone x 15 end arch stair_up_1 slaying /city/city hp 6 sp 14 x 15 end arch boulder x 15 end arch flagstone x 15 y 1 end arch flagstone x 15 y 2 end arch flagstone x 15 y 3 end arch flagstone x 15 y 4 end arch gate_closed_1 x 15 y 4 speed 0.500000 connected 1 end arch flagstone x 15 y 5 end arch gate_closed_1 x 15 y 5 speed 0.500000 connected 2 end arch flagstone x 15 y 6 end arch flagstone x 15 y 7 end arch flagstone x 15 y 8 end arch flagstone x 15 y 9 end arch flagstone x 15 y 10 end arch flagstone x 15 y 11 end arch flagstone x 15 y 12 end arch flagstone x 15 y 12 end arch flagstone x 15 y 13 end arch flagstone x 15 y 13 end arch flagstone x 15 y 14 end arch brazier x 15 y 14 end arch flagstone x 15 y 15 end arch mine16 x 15 y 15 end arch flagstone x 15 y 16 end arch mine13 x 15 y 16 end arch flagstone x 15 y 17 end arch flagstone x 15 y 18 end arch big_elec Str 90 Dex 65 Con 90 Pow 75 Int 30 hp 10000 maxhp 8000 sp 300 maxsp 300 dam 60 wc -50 ac -40 x 15 y 18 level 90 resist_magic 50 resist_fire 50 resist_acid 100 arch ability_lightning sp 88 end end arch flagstone x 15 y 19 end arch flagstone x 15 y 20 end arch flagstone x 15 y 21 end arch flagstone x 15 y 22 end arch flagstone x 15 y 23 end arch flagstone x 15 y 24 end arch flagstone x 15 y 25 end arch flagstone x 15 y 26 end arch flagstone x 15 y 27 end arch mine2 x 15 y 27 end arch flagstone x 15 y 28 end arch flagstone x 15 y 29 end arch flagstone x 15 y 30 end arch flagstone x 15 y 31 end arch mine2 x 15 y 31 end arch flagstone x 16 end arch mine2 x 16 end arch flagstone x 16 y 1 end arch flagstone x 16 y 2 end arch flagstone x 16 y 3 end arch flagstone x 16 y 4 end arch mine10 x 16 y 4 end arch flagstone x 16 y 5 end arch mine4 x 16 y 5 end arch flagstone x 16 y 6 end arch big_elec Str 90 Dex 65 Con 90 Pow 75 Int 30 hp 10000 maxhp 8000 sp 300 maxsp 300 dam 60 wc -50 ac -40 x 16 y 6 level 90 resist_magic 50 resist_fire 50 resist_acid 100 arch ability_lightning sp 88 end end arch flagstone x 16 y 7 end arch flagstone x 16 y 8 end arch flagstone x 16 y 9 end arch flagstone x 16 y 10 end arch flagstone x 16 y 11 end arch flagstone x 16 y 12 end arch flagstone x 16 y 13 end arch flagstone x 16 y 14 end arch flagstone x 16 y 15 end arch mine16 x 16 y 15 end arch flagstone x 16 y 16 end arch mine13 x 16 y 16 end arch flagstone x 16 y 17 end arch flagstone x 16 y 18 end arch flagstone x 16 y 19 end arch flagstone x 16 y 20 end arch flagstone x 16 y 21 end arch flagstone x 16 y 22 end arch pentagram_111 x 16 y 22 end arch flagstone x 16 y 23 end arch flagstone x 16 y 24 end arch flagstone x 16 y 25 end arch flagstone x 16 y 26 end arch flagstone x 16 y 27 end arch mine2 x 16 y 27 end arch flagstone x 16 y 28 end arch flagstone x 16 y 29 end arch flagstone x 16 y 30 end arch flagstone x 16 y 31 end arch mine2 x 16 y 31 end arch flagstone x 17 end arch mine2 x 17 end arch flagstone x 17 y 1 end arch flagstone x 17 y 2 end arch flagstone x 17 y 3 end arch flagstone x 17 y 4 end arch mine16 x 17 y 4 end arch flagstone x 17 y 5 end arch mine13 x 17 y 5 end arch flagstone x 17 y 6 end arch flagstone x 17 y 7 end arch flagstone x 17 y 8 end arch flagstone x 17 y 9 end arch flagstone x 17 y 10 end arch g_worm Con 90 hp 6000 exp 20000 x 17 y 10 resist_magic 100 resist_electricity 100 resist_cold 100 resist_slow 100 end arch flagstone x 17 y 11 end arch flagstone x 17 y 12 end arch flagstone x 17 y 13 end arch flagstone x 17 y 14 end arch flagstone x 17 y 15 end arch mine16 x 17 y 15 end arch flagstone x 17 y 16 end arch mine13 x 17 y 16 end arch flagstone x 17 y 17 end arch flagstone x 17 y 18 end arch flagstone x 17 y 19 end arch flagstone x 17 y 20 end arch flagstone x 17 y 21 end arch flagstone x 17 y 22 end arch flagstone x 17 y 23 end arch flagstone x 17 y 24 end arch flagstone x 17 y 25 end arch flagstone x 17 y 26 end arch flagstone x 17 y 27 end arch mine2 x 17 y 27 end arch flagstone x 17 y 28 end arch flagstone x 17 y 29 end arch g_worm Con 90 hp 6000 exp 20000 x 17 y 29 resist_magic 100 resist_electricity 100 resist_cold 100 resist_slow 100 end arch flagstone x 17 y 30 end arch flagstone x 17 y 31 end arch mine2 x 17 y 31 end arch flagstone x 18 end arch mine2 x 18 end arch flagstone x 18 y 1 end arch flagstone x 18 y 2 end arch flagstone x 18 y 3 end arch flagstone x 18 y 4 end arch mine16 x 18 y 4 end arch flagstone x 18 y 5 end arch mine13 x 18 y 5 end arch flagstone x 18 y 6 end arch flagstone x 18 y 7 end arch flagstone x 18 y 8 end arch flagstone x 18 y 9 end arch flagstone x 18 y 10 end arch flagstone x 18 y 11 end arch byakie name cave byakie Str 90 Dex 65 Con 90 Wis 20 Pow 75 Int 30 hp 10000 maxhp 8000 sp 200 maxsp 200 exp 500000 dam 60 wc -50 ac -40 x 18 y 11 speed -0.700000 level 50 resist_electricity 100 resist_cold 100 resist_confusion 100 resist_acid 100 resist_slow 100 resist_paralyze 100 arch ability_cold end arch ability_slow end arch ability_missile end end arch flagstone x 18 y 12 end arch flagstone x 18 y 13 end arch flagstone x 18 y 14 end arch flagstone x 18 y 15 end arch mine16 x 18 y 15 end arch flagstone x 18 y 16 end arch mine13 x 18 y 16 end arch flagstone x 18 y 17 end arch flagstone x 18 y 18 end arch g_worm Con 90 hp 6000 exp 20000 x 18 y 18 resist_magic 100 resist_electricity 100 resist_cold 100 resist_slow 100 end arch flagstone x 18 y 19 end arch flagstone x 18 y 20 end arch flagstone x 18 y 21 end arch flagstone x 18 y 22 end arch flagstone x 18 y 23 end arch flagstone x 18 y 24 end arch flagstone x 18 y 25 end arch flagstone x 18 y 26 end arch flagstone x 18 y 27 end arch mine2 x 18 y 27 end arch flagstone x 18 y 28 end arch flagstone x 18 y 29 end arch flagstone x 18 y 30 end arch flagstone x 18 y 31 end arch mine2 x 18 y 31 end arch flagstone x 19 end arch mine2 x 19 end arch flagstone x 19 y 1 end arch flagstone x 19 y 2 end arch g_worm Con 90 hp 6000 exp 20000 x 19 y 2 resist_magic 100 resist_electricity 100 resist_cold 100 resist_slow 100 end arch flagstone x 19 y 3 end arch flagstone x 19 y 4 end arch mine16 x 19 y 4 end arch flagstone x 19 y 5 end arch mine13 x 19 y 5 end arch flagstone x 19 y 6 end arch flagstone x 19 y 7 end arch byakie name cave byakie Str 90 Dex 65 Con 90 Wis 20 Pow 75 Int 30 hp 10000 maxhp 8000 sp 200 maxsp 200 exp 500000 dam 60 wc -50 ac -40 x 19 y 7 speed -0.700000 level 50 resist_electricity 100 resist_cold 100 resist_confusion 100 resist_acid 100 resist_slow 100 resist_paralyze 100 arch ability_cold end arch ability_slow end arch ability_missile end end arch flagstone x 19 y 8 end arch flagstone x 19 y 9 end arch flagstone x 19 y 10 end arch flagstone x 19 y 11 end arch flagstone x 19 y 12 end arch flagstone x 19 y 13 end arch flagstone x 19 y 14 end arch flagstone x 19 y 15 end arch mine16 x 19 y 15 end arch flagstone x 19 y 16 end arch mine13 x 19 y 16 end arch flagstone x 19 y 17 end arch flagstone x 19 y 18 end arch flagstone x 19 y 19 end arch flagstone x 19 y 20 end arch flagstone x 19 y 21 end arch flagstone x 19 y 22 end arch flagstone x 19 y 23 end arch flagstone x 19 y 24 end arch flagstone x 19 y 25 end arch flagstone x 19 y 26 end arch flagstone x 19 y 27 end arch mine2 x 19 y 27 end arch flagstone x 19 y 28 end arch flagstone x 19 y 29 end arch flagstone x 19 y 30 end arch flagstone x 19 y 31 end arch mine2 x 19 y 31 end arch flagstone x 20 end arch mine2 x 20 end arch flagstone x 20 y 1 end arch flagstone x 20 y 2 end arch flagstone x 20 y 3 end arch flagstone x 20 y 4 end arch mine16 x 20 y 4 end arch flagstone x 20 y 5 end arch mine13 x 20 y 5 end arch flagstone x 20 y 6 end arch flagstone x 20 y 7 end arch flagstone x 20 y 8 end arch flagstone x 20 y 9 end arch flagstone x 20 y 10 end arch flagstone x 20 y 11 end arch flagstone x 20 y 12 end arch flagstone x 20 y 13 end arch flagstone x 20 y 14 end arch flagstone x 20 y 15 end arch mine16 x 20 y 15 end arch flagstone x 20 y 16 end arch mine13 x 20 y 16 end arch flagstone x 20 y 17 end arch flagstone x 20 y 18 end arch flagstone x 20 y 19 end arch flagstone x 20 y 20 end arch flagstone x 20 y 21 end arch flagstone x 20 y 22 end arch flagstone x 20 y 23 end arch flagstone x 20 y 24 end arch flagstone x 20 y 25 end arch flagstone x 20 y 26 end arch flagstone x 20 y 27 end arch mine2 x 20 y 27 end arch flagstone x 20 y 28 end arch flagstone x 20 y 29 end arch flagstone x 20 y 30 end arch flagstone x 20 y 31 end arch mine2 x 20 y 31 end arch flagstone x 21 end arch mine2 x 21 end arch flagstone x 21 y 1 end arch flagstone x 21 y 2 end arch flagstone x 21 y 3 end arch flagstone x 21 y 4 end arch mine16 x 21 y 4 end arch flagstone x 21 y 5 end arch mine17 x 21 y 5 end arch flagstone x 21 y 6 end arch mine11 x 21 y 6 end arch flagstone x 21 y 7 end arch mine11 x 21 y 7 end arch flagstone x 21 y 8 end arch mine11 x 21 y 8 end arch flagstone x 21 y 9 end arch mine11 x 21 y 9 end arch flagstone x 21 y 10 end arch mine11 x 21 y 10 end arch flagstone x 21 y 11 end arch mine11 x 21 y 11 end arch flagstone x 21 y 12 end arch mine11 x 21 y 12 end arch flagstone x 21 y 13 end arch mine11 x 21 y 13 end arch flagstone x 21 y 14 end arch mine11 x 21 y 14 end arch flagstone x 21 y 15 end arch mine17 x 21 y 15 end arch flagstone x 21 y 16 end arch mine13 x 21 y 16 end arch flagstone x 21 y 17 end arch flagstone x 21 y 18 end arch flagstone x 21 y 19 end arch flagstone x 21 y 20 end arch flagstone x 21 y 21 end arch flagstone x 21 y 22 end arch flagstone x 21 y 23 end arch flagstone x 21 y 24 end arch flagstone x 21 y 25 end arch flagstone x 21 y 26 end arch flagstone x 21 y 27 end arch mine2 x 21 y 27 end arch flagstone x 21 y 28 end arch flagstone x 21 y 29 end arch flagstone x 21 y 30 end arch flagstone x 21 y 31 end arch mine2 x 21 y 31 end arch flagstone x 22 end arch mine2 x 22 end arch flagstone x 22 y 1 end arch flagstone x 22 y 2 end arch byakie name cave byakie Str 90 Dex 65 Con 90 Wis 20 Pow 75 Int 30 hp 10000 maxhp 8000 sp 200 maxsp 200 exp 500000 dam 60 wc -50 ac -40 x 22 y 2 speed -0.700000 level 50 resist_electricity 100 resist_cold 100 resist_confusion 100 resist_acid 100 resist_slow 100 resist_paralyze 100 arch ability_cold end arch ability_slow end arch ability_missile end end arch flagstone x 22 y 3 end arch flagstone x 22 y 4 end arch mine9 x 22 y 4 end arch flagstone x 22 y 5 end arch mine14 x 22 y 5 end arch flagstone x 22 y 6 end arch mine14 x 22 y 6 end arch flagstone x 22 y 7 end arch mine14 x 22 y 7 end arch flagstone x 22 y 8 end arch mine14 x 22 y 8 end arch flagstone x 22 y 9 end arch mine14 x 22 y 9 end arch flagstone x 22 y 10 end arch mine14 x 22 y 10 end arch flagstone x 22 y 11 end arch mine14 x 22 y 11 end arch flagstone x 22 y 12 end arch mine14 x 22 y 12 end arch flagstone x 22 y 13 end arch mine14 x 22 y 13 end arch flagstone x 22 y 14 end arch mine14 x 22 y 14 end arch flagstone x 22 y 15 end arch mine14 x 22 y 15 end arch flagstone x 22 y 16 end arch mine12 x 22 y 16 end arch flagstone x 22 y 17 end arch flagstone x 22 y 18 end arch flagstone x 22 y 19 end arch flagstone x 22 y 20 end arch mine8 x 22 y 20 end arch flagstone x 22 y 21 end arch mine3 x 22 y 21 end arch flagstone x 22 y 22 end arch mine3 x 22 y 22 end arch flagstone x 22 y 23 end arch mine3 x 22 y 23 end arch flagstone x 22 y 24 end arch mine3 x 22 y 24 end arch flagstone x 22 y 25 end arch mine3 x 22 y 25 end arch flagstone x 22 y 26 end arch mine3 x 22 y 26 end arch flagstone x 22 y 27 end arch mine12 x 22 y 27 end arch flagstone x 22 y 28 end arch flagstone x 22 y 29 end arch flagstone x 22 y 30 end arch flagstone x 22 y 31 end arch mine2 x 22 y 31 end arch flagstone x 23 end arch mine2 x 23 end arch flagstone x 23 y 1 end arch flagstone x 23 y 2 end arch flagstone x 23 y 3 end arch flagstone x 23 y 4 end arch flagstone x 23 y 5 end arch flagstone x 23 y 6 end arch flagstone x 23 y 7 end arch flagstone x 23 y 8 end arch flagstone x 23 y 9 end arch flagstone x 23 y 10 end arch flagstone x 23 y 11 end arch flagstone x 23 y 12 end arch flagstone x 23 y 13 end arch flagstone x 23 y 14 end arch flagstone x 23 y 15 end arch flagstone x 23 y 16 end arch flagstone x 23 y 17 end arch flagstone x 23 y 18 end arch flagstone x 23 y 19 end arch flagstone x 23 y 20 end arch flagstone x 23 y 21 end arch flagstone x 23 y 22 end arch flagstone x 23 y 23 end arch flagstone x 23 y 24 end arch flagstone x 23 y 25 end arch flagstone x 23 y 26 end arch flagstone x 23 y 27 end arch flagstone x 23 y 28 end arch flagstone x 23 y 29 end arch flagstone x 23 y 30 end arch flagstone x 23 y 31 end arch mine2 x 23 y 31 end arch flagstone x 24 end arch mine2 x 24 end arch flagstone x 24 y 1 end arch flagstone x 24 y 2 end arch flagstone x 24 y 3 end arch flagstone x 24 y 4 end arch flagstone x 24 y 5 end arch flagstone x 24 y 6 end arch flagstone x 24 y 7 end arch flagstone x 24 y 8 end arch flagstone x 24 y 9 end arch flagstone x 24 y 10 end arch flagstone x 24 y 11 end arch g_worm Con 90 hp 6000 exp 20000 x 24 y 11 resist_magic 100 resist_electricity 100 resist_cold 100 resist_slow 100 end arch flagstone x 24 y 12 end arch flagstone x 24 y 13 end arch flagstone x 24 y 14 end arch flagstone x 24 y 15 end arch flagstone x 24 y 16 end arch flagstone x 24 y 17 end arch flagstone x 24 y 18 end arch flagstone x 24 y 19 end arch flagstone x 24 y 20 end arch flagstone x 24 y 21 end arch flagstone x 24 y 22 end arch flagstone x 24 y 23 end arch flagstone x 24 y 24 end arch flagstone x 24 y 25 end arch flagstone x 24 y 26 end arch flagstone x 24 y 27 end arch flagstone x 24 y 28 end arch flagstone x 24 y 29 end arch flagstone x 24 y 30 end arch flagstone x 24 y 31 end arch mine2 x 24 y 31 end arch flagstone x 25 end arch mine2 x 25 end arch flagstone x 25 y 1 end arch flagstone x 25 y 2 end arch flagstone x 25 y 3 end arch flagstone x 25 y 4 end arch flagstone x 25 y 5 end arch flagstone x 25 y 6 end arch flagstone x 25 y 7 end arch flagstone x 25 y 8 end arch flagstone x 25 y 9 end arch flagstone x 25 y 10 end arch flagstone x 25 y 11 end arch flagstone x 25 y 12 end arch flagstone x 25 y 13 end arch flagstone x 25 y 14 end arch flagstone x 25 y 15 end arch flagstone x 25 y 16 end arch flagstone x 25 y 17 end arch flagstone x 25 y 18 end arch flagstone x 25 y 19 end arch flagstone x 25 y 20 end arch flagstone x 25 y 21 end arch flagstone x 25 y 22 end arch flagstone x 25 y 23 end arch flagstone x 25 y 24 end arch flagstone x 25 y 25 end arch flagstone x 25 y 26 end arch flagstone x 25 y 27 end arch flagstone x 25 y 28 end arch flagstone x 25 y 29 end arch flagstone x 25 y 30 end arch flagstone x 25 y 31 end arch mine13 x 25 y 31 end arch flagstone x 26 end arch mine16 x 26 end arch flagstone x 26 y 1 end arch mine11 x 26 y 1 end arch flagstone x 26 y 2 end arch mine11 x 26 y 2 end arch flagstone x 26 y 3 end arch mine11 x 26 y 3 end arch flagstone x 26 y 4 end arch mine11 x 26 y 4 end arch flagstone x 26 y 5 end arch mine11 x 26 y 5 end arch flagstone x 26 y 6 end arch mine11 x 26 y 6 end arch flagstone x 26 y 7 end arch mine11 x 26 y 7 end arch flagstone x 26 y 8 end arch mine11 x 26 y 8 end arch flagstone x 26 y 9 end arch mine11 x 26 y 9 end arch flagstone x 26 y 10 end arch mine11 x 26 y 10 end arch flagstone x 26 y 11 end arch mine11 x 26 y 11 end arch flagstone x 26 y 12 end arch mine11 x 26 y 12 end arch flagstone x 26 y 13 end arch mine11 x 26 y 13 end arch flagstone x 26 y 14 end arch mine11 x 26 y 14 end arch flagstone x 26 y 15 end arch mine11 x 26 y 15 end arch flagstone x 26 y 16 end arch mine11 x 26 y 16 end arch flagstone x 26 y 17 end arch mine11 x 26 y 17 end arch flagstone x 26 y 18 end arch mine11 x 26 y 18 end arch flagstone x 26 y 19 end arch mine11 x 26 y 19 end arch flagstone x 26 y 20 end arch mine11 x 26 y 20 end arch flagstone x 26 y 21 end arch mine11 x 26 y 21 end arch flagstone x 26 y 22 end arch mine11 x 26 y 22 end arch flagstone x 26 y 23 end arch mine11 x 26 y 23 end arch flagstone x 26 y 24 end arch mine11 x 26 y 24 end arch flagstone x 26 y 25 end arch mine11 x 26 y 25 end arch flagstone x 26 y 26 end arch mine11 x 26 y 26 end arch flagstone x 26 y 27 end arch mine11 x 26 y 27 end arch flagstone x 26 y 28 end arch mine11 x 26 y 28 end arch flagstone x 26 y 29 end arch mine11 x 26 y 29 end arch flagstone x 26 y 30 end arch mine11 x 26 y 30 end arch flagstone x 26 y 31 end arch mine13 x 26 y 31 end arch flagstone x 27 end arch mine16 x 27 end arch flagstone x 27 y 1 end arch mine14 x 27 y 1 end arch flagstone x 27 y 2 end arch mine14 x 27 y 2 end arch flagstone x 27 y 3 end arch blocked x 27 y 3 end arch blocked x 27 y 4 end arch blocked x 27 y 5 end arch blocked x 27 y 6 end arch blocked x 27 y 7 end arch blocked x 27 y 8 end arch blocked x 27 y 9 end arch blocked x 27 y 10 end arch blocked x 27 y 11 end arch blocked x 27 y 12 end arch blocked x 27 y 13 end arch blocked x 27 y 14 end arch blocked x 27 y 15 end arch blocked x 27 y 16 end arch blocked x 27 y 17 end arch blocked x 27 y 18 end arch blocked x 27 y 19 end arch blocked x 27 y 20 end arch blocked x 27 y 21 end arch blocked x 27 y 22 end arch blocked x 27 y 23 end arch blocked x 27 y 24 end arch flagstone x 27 y 25 end arch mine17 x 27 y 25 end arch flagstone x 27 y 26 end arch mine14 x 27 y 26 end arch flagstone x 27 y 27 end arch mine14 x 27 y 27 end arch flagstone x 27 y 28 end arch mine17 x 27 y 28 end arch flagstone x 27 y 29 end arch mine17 x 27 y 29 end arch flagstone x 27 y 30 end arch mine14 x 27 y 30 end arch flagstone x 27 y 31 end arch mine12 x 27 y 31 end arch flagstone x 28 end arch flagstone x 28 end arch mine2 x 28 end arch flagstone x 28 y 1 end arch flagstone x 28 y 1 end arch pit_open hp 12 sp 10 x 28 y 1 speed 0.500000 value 1 end arch flagstone x 28 y 2 end arch flagstone x 28 y 3 end arch blocked x 28 y 3 end arch blocked x 28 y 4 end arch blocked x 28 y 5 end arch blocked x 28 y 6 end arch blocked x 28 y 7 end arch blocked x 28 y 8 end arch blocked x 28 y 9 end arch blocked x 28 y 10 end arch blocked x 28 y 11 end arch blocked x 28 y 12 end arch blocked x 28 y 13 end arch blocked x 28 y 14 end arch blocked x 28 y 15 end arch blocked x 28 y 16 end arch blocked x 28 y 17 end arch blocked x 28 y 18 end arch blocked x 28 y 19 end arch blocked x 28 y 20 end arch blocked x 28 y 21 end arch blocked x 28 y 22 end arch blocked x 28 y 23 end arch blocked x 28 y 24 end arch flagstone x 28 y 25 end arch mine13 x 28 y 25 end arch flagstone x 28 y 26 end arch pit_open hp 4 sp 20 x 28 y 26 speed 0.500000 value 1 end arch flagstone x 28 y 27 end arch flagstone x 28 y 28 end arch mine16 x 28 y 28 end arch flagstone x 28 y 29 end arch mine13 x 28 y 29 end arch flagstone x 28 y 30 end arch pit_open hp 17 sp 23 x 28 y 30 speed 0.500000 value 1 end arch flagstone x 28 y 31 end arch flagstone x 29 end arch mine7 x 29 end arch flagstone x 29 y 1 end arch flagstone x 29 y 2 end arch flagstone x 29 y 3 end arch blocked x 29 y 3 end arch blocked x 29 y 4 end arch blocked name darkness x 29 y 5 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 6 no_pass 0 is_floor 1 end arch horn name Eye Of Spreading Death msg An incredibly loathsome artifact. It is murmured it once was part of the body of one of the Great Old Ones endmsg face dragon_eye.111 hp 500 maxhp 500 sp 173 x 29 y 6 level 107 weight 200 startequip 1 end arch blocked name darkness x 29 y 7 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 8 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 9 no_pass 0 is_floor 1 end arch byakie name cave byakie Str 90 Dex 65 Con 90 Wis 20 Pow 75 Int 30 hp 10000 maxhp 8000 sp 200 maxsp 200 exp 500000 dam 60 wc -50 ac -40 x 29 y 9 speed -0.700000 level 50 resist_electricity 100 resist_cold 100 resist_confusion 100 resist_acid 100 resist_slow 100 resist_paralyze 100 arch ability_cold end arch ability_slow end arch ability_missile end end arch blocked name darkness x 29 y 10 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 11 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 12 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 13 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 14 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 15 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 16 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 17 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 18 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 19 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 20 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 21 no_pass 0 is_floor 1 end arch blocked name darkness x 29 y 22 no_pass 0 is_floor 1 end arch horn name Finger Of Slow Decay msg An incredibly loathsome artifact. It is murmured it once was part of the body of one of the Great Old Ones endmsg face finger.111 hp 1000 maxhp 1000 sp 175 x 29 y 22 level 107 weight 200 startequip 1 end arch blocked x 29 y 23 end arch blocked x 29 y 24 end arch flagstone x 29 y 25 end arch mine12 x 29 y 25 end arch flagstone x 29 y 26 end arch flagstone x 29 y 27 end arch flagstone x 29 y 28 end arch mine16 x 29 y 28 end arch flagstone x 29 y 29 end arch mine12 x 29 y 29 end arch flagstone x 29 y 30 end arch flagstone x 29 y 31 end arch flagstone x 30 end arch acid_pool x 30 carrying 5400000 arch g_worm Con 90 hp 6000 exp 20000 resist_magic 100 resist_electricity 100 resist_cold 100 resist_slow 100 end end arch flagstone x 30 y 1 end arch flagstone x 30 y 2 end arch flagstone x 30 y 3 end arch blocked x 30 y 3 end arch blocked x 30 y 4 end arch blocked name darkness x 30 y 5 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 6 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 7 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 8 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 9 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 10 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 11 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 12 no_pass 0 is_floor 1 end arch byakie name cave byakie Str 90 Dex 65 Con 90 Wis 20 Pow 75 Int 30 hp 10000 maxhp 8000 sp 200 maxsp 200 exp 500000 dam 60 wc -50 ac -40 x 30 y 12 speed -0.700000 level 50 resist_electricity 100 resist_cold 100 resist_confusion 100 resist_acid 100 resist_slow 100 resist_paralyze 100 arch ability_cold end arch ability_slow end arch ability_missile end end arch blocked name darkness x 30 y 13 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 14 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 15 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 16 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 17 no_pass 0 is_floor 1 end arch byakie name cave byakie Str 90 Dex 65 Con 90 Wis 20 Pow 75 Int 30 hp 10000 maxhp 8000 sp 200 maxsp 200 exp 500000 dam 60 wc -50 ac -40 x 30 y 17 speed -0.700000 level 50 resist_electricity 100 resist_cold 100 resist_confusion 100 resist_acid 100 resist_slow 100 resist_paralyze 100 arch ability_cold end arch ability_slow end arch ability_missile end end arch blocked name darkness x 30 y 18 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 19 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 20 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 21 no_pass 0 is_floor 1 end arch blocked name darkness x 30 y 22 no_pass 0 is_floor 1 end arch blocked x 30 y 23 end arch blocked x 30 y 24 end arch flagstone x 30 y 25 end arch acid_pool x 30 y 25 carrying 5400000 arch g_worm Con 90 hp 6000 exp 20000 resist_magic 100 resist_electricity 100 resist_cold 100 resist_slow 100 end end arch flagstone x 30 y 26 end arch flagstone x 30 y 27 end arch flagstone x 30 y 28 end arch mine2 x 30 y 28 end arch flagstone x 30 y 29 end arch acid_pool x 30 y 29 carrying 5400000 arch g_worm Con 90 hp 6000 exp 20000 resist_magic 100 resist_electricity 100 resist_cold 100 resist_slow 100 end end arch flagstone x 30 y 30 end arch flagstone x 30 y 31 end arch flagstone x 31 end arch mine0 x 31 end arch flagstone x 31 y 1 end arch flagstone x 31 y 2 end arch flagstone x 31 y 3 end arch blocked x 31 y 3 end arch blocked x 31 y 4 end arch blocked name darkness x 31 y 5 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 6 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 7 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 8 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 9 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 10 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 11 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 12 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 13 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 14 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 15 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 16 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 17 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 18 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 19 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 20 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 21 no_pass 0 is_floor 1 end arch blocked name darkness x 31 y 22 no_pass 0 is_floor 1 end arch blocked x 31 y 23 end arch blocked x 31 y 24 end arch flagstone x 31 y 25 end arch mine5 x 31 y 25 end arch flagstone x 31 y 26 end arch flagstone x 31 y 27 end arch flagstone x 31 y 28 end arch mine9 x 31 y 28 end arch flagstone x 31 y 29 end arch mine5 x 31 y 29 end arch flagstone x 31 y 30 end arch flagstone x 31 y 31 end arch flagstone x 31 y 31 end From norbert.irmer at t-online.de Wed Apr 17 10:58:48 2002 From: norbert.irmer at t-online.de (Norbert Irmer) Date: Thu Jan 13 18:02:19 2005 Subject: [CF-Devel] patch for generators to create special ability mo References: <3CBD063C.5010600@sonic.net> <3CBD7265.8010601@t-online.de> Message-ID: <3CBD9BB8.3060706@t-online.de> Oh, sorry. I forgot the patch to 'server/attack.c', which destroys the objects in the inventory of a generator, when the generator gets destroyed. -------------- next part -------------- Index: attack.c =================================================================== RCS file: /cvsroot/crossfire/crossfire/server/attack.c,v retrieving revision 1.66 diff -c -5 -r1.66 attack.c *** attack.c 11 Mar 2002 22:02:37 -0000 1.66 --- attack.c 17 Apr 2002 15:50:14 -0000 *************** *** 1244,1254 **** char buf[MAX_BUF]; object *old_hitter=NULL; /* this is used in case of servant monsters */ int maxdam=0; int battleg=0; /* true if op standing on battleground */ int killed_script_rtn = 0; ! object *owner=NULL; int evtid; #ifdef PLUGINS CFParm CFP; #endif /* Object has been killed. Lets clean it up */ --- 1244,1254 ---- char buf[MAX_BUF]; object *old_hitter=NULL; /* this is used in case of servant monsters */ int maxdam=0; int battleg=0; /* true if op standing on battleground */ int killed_script_rtn = 0; ! object *owner=NULL,*tmp; int evtid; #ifdef PLUGINS CFParm CFP; #endif /* Object has been killed. Lets clean it up */ *************** *** 1447,1456 **** --- 1447,1463 ---- play_sound_player_only(owner->contr, SOUND_PET_IS_KILLED,0,0); new_draw_info(NDI_UNIQUE, 0,owner,buf); } remove_friendly_object(op); } + if(QUERY_FLAG(op,FLAG_GENERATOR)) { + while (op->inv) { /* destroy the inventory of generators */ + tmp = op->inv; + remove_ob(tmp); + free_object(tmp) ; + } + } remove_ob(op); free_object(op); } /* Player has been killed! */ else { From norbert.irmer at t-online.de Wed Apr 17 09:13:10 2002 From: norbert.irmer at t-online.de (Norbert Irmer) Date: Thu Jan 13 18:02:20 2005 Subject: [CF-Devel] patch for generators to create special ability mo References: <3CBD063C.5010600@sonic.net> <3CBD7265.8010601@t-online.de> Message-ID: <3CBD82F6.5080304@t-online.de> Norbert Irmer wrote: > Yes, this solves the problem. > > I have encountered another problem. When i put fog into the inventory > of a generator, > the server crashes after some time. I suppose the reason is, that fog > itself is a > generator, which destroys itself after one generation (probably to > achieve the > random fog movement?) and it isn't expected that it is in the > inventory of > another object. But i am not sure. Is it possible to do a debug build ? > Perhaps with 'configure --with-debug' ? Ok, i just did export CFLAGS="-g" export LDFLAGS="-g" When doing a stack trace i get Program received signal SIGSEGV, Segmentation fault. 0x80a05d0 in get_map_from_coord (m=0x0, x=0xbfbff6b0, y=0xbfbff6b4) at map.c:1845 1845 if (*x>=0 && *x=0 && *y < MAP_HEIGHT(m)) (gdb) info stack #0 0x80a05d0 in get_map_from_coord (m=0x0, x=0xbfbff6b0, y=0xbfbff6b4) at map.c:1845 #1 0x809da4d in blocked (m=0x0, x=0, y=-1) at map.c:315 #2 0x809dc6a in arch_blocked (at=0x8283400, m=0x0, x=0, y=-1) at map.c:438 #3 0x80a3539 in find_free_spot (at=0x8283400, m=0x0, x=0, y=0, start=1, stop=9) at object.c:1935 #4 0x8086b10 in generate_monster (gen=0x8bb2c44) at time.c:119 #5 0x8088ac2 in process_object (op=0x8bb2c44) at time.c:1186 #6 0x8066ba9 in process_events (map=0x0) at main.c:922 #7 0x806713d in main (argc=1, argv=0xbfbffc28) at main.c:1147 #8 0x8049d45 in _start () As mark wrote in a previous mail, the problem is caused by process_object processing the object in the inventory of the generator. But a top level check in process_object like if op->type==monster && op->map==NULL continue is no solution, as the fog example shows. I would propose to change 'find_free_spot' or even better 'arch_out_of_map', which is called by 'find_free_spot', so that false is returned if map==NULL. From mwedel at sonic.net Thu Apr 18 00:22:23 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:20 2005 Subject: [CF-Devel] patch for generators to create special ability mo References: <3CBD063C.5010600@sonic.net> <3CBD7265.8010601@t-online.de> <3CBD82F6.5080304@t-online.de> Message-ID: <3CBE580F.90207@sonic.net> Norbert Irmer wrote: > Norbert Irmer wrote: > > Program received signal SIGSEGV, Segmentation fault. > 0x80a05d0 in get_map_from_coord (m=0x0, x=0xbfbff6b0, y=0xbfbff6b4) > at map.c:1845 > 1845 if (*x>=0 && *x=0 && *y < MAP_HEIGHT(m)) > (gdb) info stack > #0 0x80a05d0 in get_map_from_coord (m=0x0, x=0xbfbff6b0, y=0xbfbff6b4) > at map.c:1845 > #1 0x809da4d in blocked (m=0x0, x=0, y=-1) at map.c:315 > #2 0x809dc6a in arch_blocked (at=0x8283400, m=0x0, x=0, y=-1) at map.c:438 > #3 0x80a3539 in find_free_spot (at=0x8283400, m=0x0, x=0, y=0, start=1, > stop=9) at object.c:1935 > #4 0x8086b10 in generate_monster (gen=0x8bb2c44) at time.c:119 > #5 0x8088ac2 in process_object (op=0x8bb2c44) at time.c:1186 > #6 0x8066ba9 in process_events (map=0x0) at main.c:922 > #7 0x806713d in main (argc=1, argv=0xbfbffc28) at main.c:1147 > #8 0x8049d45 in _start () > > As mark wrote in a previous mail, the problem is caused by process_object > processing the object in the inventory of the generator. > But a top level check in process_object like > if op->type==monster && op->map==NULL continue > is no solution, as the fog example shows. Probably because the fog type is not a monster. IT is unclear to me why you want to put fog in the inventory of a generator - the only reason somethign needs to be in the inventory are if you are changing the values. If you are just using the standard fog arch, then you should use the other_arch. > > I would propose to change 'find_free_spot' or even better > 'arch_out_of_map', > which is called by 'find_free_spot', so that false is returned if > map==NULL. The change should be higher up - in generator monster in this case. Changing find_free_spot or arch_out_of_map is not the right place - that will mask other programming problems in the future. Certain programming practices should be caught with errors. If find_free_spot is passed a null map, IMO, it should crash - the code calling it should make sure it is doing the right thing. One reason I say this is that in some cases, if find_free_spot returns that there is no space available, it may be use other fallback code. From norbert.irmer at t-online.de Thu Apr 18 10:35:07 2002 From: norbert.irmer at t-online.de (Norbert Irmer) Date: Thu Jan 13 18:02:20 2005 Subject: [CF-Devel] patch for generators to create special ability mo References: <3CBD063C.5010600@sonic.net> <3CBD7265.8010601@t-online.de> <3CBD82F6.5080304@t-online.de> <3CBE580F.90207@sonic.net> Message-ID: <3CBEE7AB.7020700@t-online.de> Mark Wedel wrote: > > Probably because the fog type is not a monster. > > IT is unclear to me why you want to put fog in the inventory of a > generator - the only reason somethign needs to be in the inventory are > if you are changing the values. If you are just using the standard > fog arch, then you should use the other_arch. The reason was, that i noticed that fog is swallowed by deep_swamp. After browsing the swamp code, i saw that swamp swallows everything which is a player or not alive (like fog). So i just wanted to try out to create fog which has the alive flag set to prevent this (i did not fully understand at that point in time why fog has to be a generator, and that this would not solve the problem). But anyway, this gave me the idea, that sometimes it might be necessary to put something else (not a monster) into the inventory of a generator (monsters without maps doesn't seem to be processed anyway, at least i had no problems when i put monsters into the inv of generators). >> I would propose to change 'find_free_spot' or even better >> 'arch_out_of_map', >> which is called by 'find_free_spot', so that false is returned if >> map==NULL. > > The change should be higher up - in generator monster in this case. > > Changing find_free_spot or arch_out_of_map is not the right place - > that will mask other programming problems in the future. Certain > programming practices should be caught with errors. If find_free_spot > is passed a null map, IMO, it should crash - the code calling it > should make sure it is doing the right thing. One reason I say this > is that in some cases, if find_free_spot returns that there is no > space available, it may be use other fallback code. You are probably right. This could hide other programming errors. If it is intended that find_free_spot or arch_out_of_map should never be called with map=0, then it is the wrong way to put such a check into them (interesting idea: if there is no map, is there then no free spot either ? (theory of undefined terms:)) I removed the check "if(m==0) return 1;" from arch_out_of_map in map.c again (just don't apply the patch "common-map.c.diff" i sent), and added a similiar check to "generate_monster" instead. -------------- next part -------------- Index: time.c =================================================================== RCS file: /cvsroot/crossfire/crossfire/server/time.c,v retrieving revision 1.40 diff -c -5 -r1.40 time.c *** time.c 2 Jan 2002 06:53:23 -0000 1.40 --- time.c 18 Apr 2002 15:25:51 -0000 *************** *** 83,103 **** free_object(op); } void generate_monster(object *gen) { int i; ! object *op,*head=NULL,*prev=NULL; ! archetype *at=gen->other_arch; if(GENERATE_SPEED(gen)&&rndm(0, GENERATE_SPEED(gen)-1)) return; ! if(gen->other_arch==NULL) { ! LOG(llevError,"Generator without other_arch: %s\n",gen->name); return; } ! i=find_free_spot(at,gen->map,gen->x,gen->y,1,9); ! if (i==-1) return; while(at!=NULL) { op=arch_to_object(at); op->x=gen->x+freearr_x[i]+at->clone.x; op->y=gen->y+freearr_y[i]+at->clone.y; if(head!=NULL) --- 83,130 ---- free_object(op); } void generate_monster(object *gen) { int i; ! object *op,*head=NULL,*prev=NULL,*gob; ! archetype *at; if(GENERATE_SPEED(gen)&&rndm(0, GENERATE_SPEED(gen)-1)) return; ! ! if(gen->map==NULL) /* generators doesn't operate if not in a map */ return; + + if(gen->inv!=NULL) { + gob=gen->inv; /* the generator inv just contains the head of the monster, */ + /* if it is mulipart */ + i=find_free_spot(gob->arch,gen->map,gen->x,gen->y,1,9); + if (i==-1) return; + op=get_object(); + copy_object(gob,op); + op->x=gen->x+freearr_x[i]+gob->arch->clone.x; + op->y=gen->y+freearr_y[i]+gob->arch->clone.y; + if (rndm(0, 9)) generate_artifact(op, gen->map->difficulty); + insert_ob_in_map(op,gen->map,gen,0); + if (QUERY_FLAG(op, FLAG_FREED)) return; + if(op->randomitems!=NULL) + create_treasure(op->randomitems,op,GT_APPLY, + gen->map->difficulty,0); + head=op; + prev=op; + at=gob->arch->more; + } + else { + if(gen->other_arch==NULL) { + LOG(llevError,"Generator without other_arch or inv: %s\n",gen->name); + return; + } + at=gen->other_arch; + i=find_free_spot(at,gen->map,gen->x,gen->y,1,9); + if (i==-1) return; } ! while(at!=NULL) { op=arch_to_object(at); op->x=gen->x+freearr_x[i]+at->clone.x; op->y=gen->y+freearr_y[i]+at->clone.y; if(head!=NULL) From phil at micronetix.com Sat Apr 20 21:48:29 2002 From: phil at micronetix.com (phil) Date: Thu Jan 13 18:02:20 2005 Subject: [CF-Devel] Compiling crossfire under win32 Message-ID: <200204202148.AA992346918@micronetix.com> I'm compiling crossfire in Visual C++ right now. I've encountered several problems. ---- In config.h line 531-535: /* #ifndef WIN32 /* ***win32 disable watchdog as win32 default */ #define WATCHDOG #endif */ Visual C++ doesn't like nested comments. Not sure why this is commented out in the first place, doesn't make sense. I removed the comments, and that fixed the problem. ---- In c_onject.c line 619-620: }; #endif #endif should be #endif }; #endif Otherwise, the brackets get messed up. This isn't just a win32 problem. ---- I had to add image.c and weather.c to the project. ---- In weather.c, line 84 is: long long int tmp; I had to change it to: long int tmp; ---- Given all that, I got crossfire to compile from today's CVS. I tried to get a diff, but the CVS server isn't responding. -Philip From phil at micronetix.com Sat Apr 20 22:03:10 2002 From: phil at micronetix.com (phil) Date: Thu Jan 13 18:02:20 2005 Subject: [CF-Devel] One more thing for crossfire under win32 Message-ID: <200204202203.AA1954874124@micronetix.com> One more change to get crossfire to run under win32. In installwin32.bat, change: copy lib\crossfire.png share\*.* copy lib\help\*.* share\help\*.* to: copy lib\crossfire.png share\*.* copy lib\crossfire.0 share\*.* copy lib\crossfire.1 share\*.* copy lib\help\*.* share\help\*.* -Philip From mwedel at sonic.net Sat Apr 20 23:51:59 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:20 2005 Subject: [CF-Devel] Compiling crossfire under win32 References: <200204202148.AA992346918@micronetix.com> Message-ID: <3CC2456F.1020307@sonic.net> phil wrote: > I'm compiling crossfire in Visual C++ right now. I've encountered several problems. > > ---- > > In config.h line 531-535: > /* > #ifndef WIN32 /* ***win32 disable watchdog as win32 default */ > #define WATCHDOG > #endif > */ > > Visual C++ doesn't like nested comments. Not sure why this is commented out in the first place, doesn't make sense. I removed the comments, and that fixed the problem. > I note that in CVS, it is not commented out. Its unclear what the #ifndef WIN32 is really there for - if the watchdog doesn't work on windows, then as it is is OK (but the comment should be moved to the comment block above and actually say something to that effect). If instead it's just a preference setting (because the functionality may not have much use on windows systems), then the #ifndef stuff should probably be removed - as the user goes through this, they can then really decide if they want it or not. the watchdog stuff is really optional, and enabling it on most all machines it not likely to be much an issue, unless something is listening on port 13325 and doesn't like the udp packets it generates. > ---- > > In c_onject.c line 619-620: > > }; > #endif > #endif > > should be > > #endif > }; > #endif > > Otherwise, the brackets get messed up. This isn't just a win32 problem. That code was really hokey - I've fixed it up - defining SAVE_INTERVAL without a value won't work, but since the sample in config.h has a value, I don't thin ktaht is a big issue - any more than many other defines in config.h probably won't work if just defined with no value. > > ---- > > I had to add image.c and weather.c to the project. If you can get a diff of that, I'll apply it to the server. > > ---- > > In weather.c, line 84 is: > long long int tmp; > I had to change it to: > long int tmp; > ---- I think your code is probably more proper - I don't have a copy of the ANSI C spec, but I don't think long long is part of ANSI C - rather it is just a widely used/supported extension. From mwedel at sonic.net Sat Apr 20 23:53:48 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:20 2005 Subject: [CF-Devel] One more thing for crossfire under win32 References: <200204202203.AA1954874124@micronetix.com> Message-ID: <3CC245DC.7070609@sonic.net> phil wrote: > One more change to get crossfire to run under win32. > > In installwin32.bat, change: > > copy lib\crossfire.png share\*.* > copy lib\help\*.* share\help\*.* > > to: > > copy lib\crossfire.png share\*.* actually, the crossfire.png file shouldn't exist anymore, so I've removed that line from the file. From phil at micronetix.com Sun Apr 21 11:48:49 2002 From: phil at micronetix.com (phil) Date: Thu Jan 13 18:02:20 2005 Subject: [CF-Devel] Compiling crossfire under win32 Message-ID: <200204211148.AA387056336@micronetix.com> Mark Wedel wrote: >phil wrote: >> I had to add image.c and weather.c to the project. > > > If you can get a diff of that, I'll apply it to the server. Thanks for the quick response. Checked out CVS and recompiled just now. I made some other changes, like using Python 2.2.1, and changing the documentation to reflect that. Plus, Visual Studio automatically translated some things to English. Anyway, the diffs are attached. (One diff? Multiple diffs? I dunno. I'm new at this, be gentle.) -Philip -------------- next part -------------- Index: crossfire/run_win32.bat =================================================================== RCS file: /cvsroot/crossfire/crossfire/run_win32.bat,v retrieving revision 1.5 diff -r1.5 run_win32.bat 0a1 > @echo off Index: crossfire/make_win32/INSTALL_WIN32.txt =================================================================== RCS file: /cvsroot/crossfire/crossfire/make_win32/INSTALL_WIN32.txt,v retrieving revision 1.2 diff -r1.2 INSTALL_WIN32.txt 9c9 < The current Crossfire server use Python 2.1.1 . --- > The current Crossfire server use Python 2.2.1 . 12c12 < d:\python21 . You can install the package of course on a different --- > c:\python22 . You can install the package of course on a different Index: crossfire/make_win32/crossfire32.dsp =================================================================== RCS file: /cvsroot/crossfire/crossfire/make_win32/crossfire32.dsp,v retrieving revision 1.9 diff -r1.9 crossfire32.dsp 3c3 < # ** NICHT BEARBEITEN ** --- > # ** DO NOT EDIT ** 8,9c8,9 < !MESSAGE Dies ist kein gültiges Makefile. Zum Erstellen dieses Projekts mit NMAKE < !MESSAGE verwenden Sie den Befehl "Makefile exportieren" und führen Sie den Befehl --- > !MESSAGE This is not a valid makefile. To build this project using NMAKE, > !MESSAGE use the Export Makefile command and run 13,14c13,14 < !MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben < !MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: --- > !MESSAGE You can specify a configuration when running NMAKE > !MESSAGE by defining the macro CFG on the command line. For example: 18c18 < !MESSAGE Für die Konfiguration stehen zur Auswahl: --- > !MESSAGE Possible choices for configuration are: 20,22c20,22 < !MESSAGE "crossfire32 - Win32 FullDebug" (basierend auf "Win32 (x86) Console Application") < !MESSAGE "crossfire32 - Win32 ReleaseQuit" (basierend auf "Win32 (x86) Console Application") < !MESSAGE "crossfire32 - Win32 ReleaseLog" (basierend auf "Win32 (x86) Console Application") --- > !MESSAGE "crossfire32 - Win32 FullDebug" (based on "Win32 (x86) Console Application") > !MESSAGE "crossfire32 - Win32 ReleaseQuit" (based on "Win32 (x86) Console Application") > !MESSAGE "crossfire32 - Win32 ReleaseLog" (based on "Win32 (x86) Console Application") 107c107 < # ADD CPP /nologo /MT /W3 /Gi /GX /O2 /Ob2 /I "..\include" /I "..\random_maps" /I "..\\" /I "..\plugin\include" /I "d:\Python21\include" /D "_CONSOLE" /D "DEBUG" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "DEBUG_MOVEATTACK" /YX"preheader.pch" /FD /c --- > # ADD CPP /nologo /MT /w /W0 /Gi /GX /O2 /Ob2 /I "..\include" /I "..\random_maps" /I "..\\" /I "..\plugin\include" /I "d:\Python21\include" /D "_CONSOLE" /D "DEBUG" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "DEBUG_MOVEATTACK" /YX"preheader.pch" /FD /c 2097a2098,2105 > # Begin Source File > > SOURCE=..\socket\image.c > # End Source File > # Begin Source File > > SOURCE=..\server\weather.c > # End Source File Index: crossfire/make_win32/installwin32.bat =================================================================== RCS file: /cvsroot/crossfire/crossfire/make_win32/installwin32.bat,v retrieving revision 1.7 diff -r1.7 installwin32.bat 23c23 < echo ** unpack maps in \share before you run the server! ** --- > echo ** unpack maps and archs in \share before you run the server! ** Index: crossfire/server/c_object.c =================================================================== RCS file: /cvsroot/crossfire/crossfire/server/c_object.c,v retrieving revision 1.35 diff -r1.35 c_object.c 615a616,619 > } > #else > save_player(op,1); /* To avoid cheating */ > }; From jshelley at ictransnet.com Sun Apr 21 23:10:38 2002 From: jshelley at ictransnet.com (Johnny Shelley) Date: Thu Jan 13 18:02:20 2005 Subject: [CF-Devel] gaea / ruggilli bug Message-ID: As of latest cvs, gaea and ruggilli are now allowed weapons and armour respectively. This is a Bad Thing(tm), no? johnny PGP Public Key available from: http://www.keyserver.net:11371/pks/lookup?op=get&search=0x17BF1DD3 From mwedel at sonic.net Mon Apr 22 01:12:01 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:20 2005 Subject: [CF-Devel] gaea / ruggilli bug References: Message-ID: <3CC3A9B1.2090009@sonic.net> Johnny Shelley wrote: > As of latest cvs, gaea and ruggilli are now allowed weapons and armour > respectively. This is a Bad Thing(tm), no? Yep. I've attached the diff that I came up with to fix the problem - I didn't do much of the god code, so perhaps someone else knows why the arch is checked. It appears that this bug in CVS has been around for a very long time - it is possible some other change in some code elsewhere resulted in this bug showing up, but if so, I'm not sure what that would be. -------------- next part -------------- Index: server/gods.c =================================================================== RCS file: /cvsroot/crossfire/crossfire/server/gods.c,v retrieving revision 1.28 diff -c -r1.28 gods.c *** server/gods.c 30 Oct 2001 02:30:20 -0000 1.28 --- server/gods.c 22 Apr 2002 06:02:54 -0000 *************** *** 370,375 **** --- 370,381 ---- check_special_prayers (op, new_god); } + /* op is the player. + * exp_obj is the widsom experience. + * flag is the flag to check against. + * string is the string to print out. + */ + int worship_forbids_use (object *op, object *exp_obj, uint32 flag, char *string) { if(QUERY_FLAG(&op->arch->clone,flag)) *************** *** 402,414 **** */ void update_priest_flag (object *god, object *exp_ob, uint32 flag) { - /* GROS - Corrected here the 'god flowers' bug. */ if(QUERY_FLAG(god,flag)&&!QUERY_FLAG(exp_ob,flag)) SET_FLAG(exp_ob,flag); else if(QUERY_FLAG(exp_ob,flag)&&!QUERY_FLAG(god,flag)) { ! if (!(QUERY_FLAG(&(exp_ob->arch->clone),flag))) ! CLEAR_FLAG(exp_ob,flag); }; } --- 408,428 ---- */ void update_priest_flag (object *god, object *exp_ob, uint32 flag) { if(QUERY_FLAG(god,flag)&&!QUERY_FLAG(exp_ob,flag)) SET_FLAG(exp_ob,flag); else if(QUERY_FLAG(exp_ob,flag)&&!QUERY_FLAG(god,flag)) { ! /* When this is called with the exp_ob set to the player, ! * this check is broken, because most all players arch ! * allow use of weapons. I'm not actually sure why this ! * check is here - I guess if you had a case where the ! * value in the archetype (wisdom) should over ride the restrictions ! * the god places on it, this may make sense. But I don't think ! * there is any case like that. ! */ ! ! /* if (!(QUERY_FLAG(&(exp_ob->arch->clone),flag)))*/ ! CLEAR_FLAG(exp_ob,flag); }; } From mwedel at sonic.net Mon Apr 22 23:05:55 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:20 2005 Subject: [CF-Devel] Compiling crossfire under win32 References: <200204211148.AA387056336@micronetix.com> Message-ID: <3CC4DDA3.3010204@sonic.net> phil wrote: > Mark Wedel wrote: > > Thanks for the quick response. Checked out CVS and recompiled just now. I made some other changes, like using Python 2.2.1, and changing the documentation to reflect that. Plus, Visual Studio automatically translated some things to English. > > Anyway, the diffs are attached. (One diff? Multiple diffs? I dunno. I'm new at this, be gentle.) Context diffs (-c) work best. Taking a quick look at the patches, it seems the unix patch really doesn't like the carriage returns that are in the original files, which makes life difficult for me to patch. If someone with windows running who has CVS wants to apply the patch, that is great, with one minor cavaet: > =================================================================== > RCS file: /cvsroot/crossfire/crossfire/server/c_object.c,v > retrieving revision 1.35 > diff -r1.35 c_object.c > 615a616,619 > >> } >>#else >> save_player(op,1); /* To avoid cheating */ >> }; >> > This is not what the old code does, and really should not be applied. What it basically means is that anytime a player drops an item, the character will get saved. Before I changed the code, tehre were two layers of #ifdefs - one checking to see if SAVE_INTERVAL was defined, and another checking to see if SAVE_INTERVAL was a non zero value. The #else in the old code, which corresponds to that above, matched that second #if - ie, if SAVE_INTERVAL was defined to be zero, then save whenever the player drops an item. The patch above is outside that code, which means if SAVE_INTERVAL is not defined, then save everytime a player drops an item. This is not desirable - the code as currently in CVS should be fine - if you want characters to be saved whenver they drop and item, just set SAVE_INTERVAL to zero in the config.h file. From mwedel at sonic.net Mon Apr 22 23:20:54 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:20 2005 Subject: [CF-Devel] Increased object information idea. Message-ID: <3CC4E126.5010106@sonic.net> I'm thinking that if a player examines an _identified_ item, that perhaps some additional information that is not currently included should be. This would be things like the sp regeneration penalty, spell encumbrance, max speed allowed by armor, and base weapon speed. Some of these are very easy to figure out (apply armor or weapon and you know the speeds they give). The sp regen penalty is much trickier - you can sort of empirically find it out through a bit of work. My thought here is to make it a little easier to evaluate what really is good armor vs what is bad armor if your a spellcaster. This will probably also make it easier for new players (if the equipment since spell regen penalty 5, that may be some clue why it takes so long to get sp back). The argument against this would be that not knowing the exact values is part of the game. And there can certainly be some truth behind that opinion. From henric at lysator.liu.se Tue Apr 23 05:16:28 2002 From: henric at lysator.liu.se (Henric Karlsson) Date: Thu Jan 13 18:02:20 2005 Subject: [CF-Devel] Increased object information idea. In-Reply-To: <3CC4E126.5010106@sonic.net> Message-ID: On Mon, 22 Apr 2002, Mark Wedel wrote: > > I'm thinking that if a player examines an _identified_ item, that perhaps some > additional information that is not currently included should be. > > This would be things like the sp regeneration penalty, spell encumbrance, max > speed allowed by armor, and base weapon speed. > > Some of these are very easy to figure out (apply armor or weapon and you know > the speeds they give). The sp regen penalty is much trickier - you can sort of > empirically find it out through a bit of work. > > My thought here is to make it a little easier to evaluate what really is good > armor vs what is bad armor if your a spellcaster. This will probably also make > it easier for new players (if the equipment since spell regen penalty 5, that > may be some clue why it takes so long to get sp back). > > The argument against this would be that not knowing the exact values is part > of the game. And there can certainly be some truth behind that opinion. > I think this might be a good idea as well. It's always nice to be able to get the info in-game instead of looking at spoilers or code. But I think it should be fairly hard to get the info. How about introducing an other *identify* scroll, only available as scroll, that shows more info than the normal identify scroll/spell. This ofcourse implies that every object keeps track of, if it has been identified or *identified*. /Henric (aka Gambold) From josefiller at lucent.com Tue Apr 23 05:48:52 2002 From: josefiller at lucent.com (Karl-Jose Filler) Date: Thu Jan 13 18:02:21 2005 Subject: [CF-Devel] Compiling crossfire 1.1.0 on HPUX Message-ID: <3CC53C14.AEEB11A0@lucent.com> Hi I'm trying to get crossfire running on an old HP box, the old one 0.9x ran fine but it's gone ... No I try to get 1.1 running (first compiling) but include/plugin.h contains #include and this file I cannot find on my HP. Am I the first one to put this on HP-UX, or are there any hints how to do it ? Thanks for your help Jose Environment: CPU B132 OS: HP-UX 10.20 C-Compiler: gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release) -------------- next part -------------- A non-text attachment was scrubbed... Name: josefiller.vcf Type: text/x-vcard Size: 270 bytes Desc: Card for Karl-Jose Filler Url : http://shadowknight.real-time.com/pipermail/crossfire/attachments/20020423/d458433a/josefiller.vcf From edler at heydernet.de Wed Apr 24 16:14:18 2002 From: edler at heydernet.de (Bernd Edler) Date: Thu Jan 13 18:02:21 2005 Subject: [CF-Devel] re: Corrupt archives? Message-ID: Hello, on 2002-04-13 mgzachar@stonline.sk wrote: >Reporting possible corruption of crossfire-1.0.0-maps.tar February this year, I came back to crossfire after some time of absent. I wanted to upgrade from 0.95.4 (yes it's old) to the latest stable release: 1.0.0 . I found the maps archive to be broken on ifi.no as well as on sunet.se, but sourceforge and real-time were ok. You can easily verify that the archives differ, because they don't even have the same size. (bz2: 3066588=ok ) ifi and sunet also seem to be awful slow at mirroring. They still don't have crossfire-1.1.0, whose release was over a month ago. Apropos crossfire-1.1.0 - is it just me, or is the file "lib/faces" missing? Well my server wouldn't start without it. So I had to get the archetypes and run collect.pl. Apropos collect.pl: I had to rtfs to find out its usage. So i think something like this could be helpful: if ((scalar @ARGV != 1) || ($ARGV[0] =~ m/^--?[hH](elp)?$/)){ die ("\nUSAGE: perl collect.pl ARCHDIR\n". "\nWhere ARCHDIR is the directory where you stored the ". "raw archetypes.\n". "This script will then create these files:\n". "archetypes,bmaps,bmaps.paths,faces,animations.\n" ) } greetings, Bernd Edler ps.: I have just finished reading through all postings since 01-2001 (puh - lots of stuff, but very interesting). So don't wonder if i bother you with my silly questions/opinions about old stuff. (No need to worry, i have only 11 topics on my list ;-) From leaf at real-time.com Tue Apr 23 15:59:55 2002 From: leaf at real-time.com (Rick Tanner) Date: Thu Jan 13 18:02:21 2005 Subject: [CF-Devel] Test: reply-to: address Message-ID: A specific reply-to: address (back to the list) is in place. Please keep this mind when responding to posts, and that this can be removed if needed. Thanks. - Rick Tanner leaf@real-time.com -- From root at garbled.net Tue Apr 23 19:40:09 2002 From: root at garbled.net (Tim Rightnour) Date: Thu Jan 13 18:02:21 2005 Subject: [CF-Devel] Test: reply-to: address In-Reply-To: Message-ID: On 23-Apr-02 Rick Tanner wrote: > Please keep this mind when responding to posts, and that this can be > removed if needed. I don't see it in the headers of the message you sent. --- Tim Rightnour NetBSD: Free multi-architecture OS http://www.netbsd.org/ NetBSD supported hardware database: http://mail-index.netbsd.org/cgi-bin/hw.cgi From leaf at real-time.com Tue Apr 23 19:44:51 2002 From: leaf at real-time.com (Rick Tanner) Date: Thu Jan 13 18:02:21 2005 Subject: [CF-Devel] Test: reply-to: address In-Reply-To: Message-ID: Mistake in configuration on my part. Consider this test 2 On Tue, 23 Apr 2002, Rick Tanner wrote: > > A specific reply-to: address (back to the list) is in place. > > Please keep this mind when responding to posts, and that this can be > removed if needed. > > Thanks. > > - Rick Tanner > leaf@real-time.com > > > -- From mwedel at sonic.net Tue Apr 23 22:21:06 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:21 2005 Subject: [CF-Devel] Increased object information idea. References: Message-ID: <3CC624A2.1060502@sonic.net> Henric Karlsson wrote: > I think this might be a good idea as well. It's always nice to be able to > get the info in-game instead of looking at spoilers or code. But I think > it should be fairly hard to get the info. How about introducing an other > *identify* scroll, only available as scroll, that shows more info than the > normal identify scroll/spell. This ofcourse implies that every object > keeps track of, if it has been identified or *identified*. I'm not sure if I like the different levels of identification. Presumably, stuff in the store should be fully identified, so it doesn't effect that that much. But it then seems an extra bother to first do a lesser identify to see if the object may be interesting and then doing the greater identify to know the esoteric properties. And given the properties I described, I'm not sure how many people would do a greater identify. Now, the entire identification system could be redone - you could have levels of identification. Like up to level 5, you only get basic properties (ac, dam, armor), levels 5-10 add the resistence values, 10-15 add price information, etc (exact details on this would have to get worked out). The level an item was identified would be directly corresponding the the caster level or the level of the skill involved. Thus, if you only have level 1 in identify food (woodsmen), you won't find out very much. I'm not convinced that doing that is really worthwhile, but if diferent levels of identification were added, I think that is the way that it should be done instead of flag_identiifed1, flag_skill_id, flag_identified_2, etc. At a very basic level, doing such a change probably wouldn't be that difficult - any item that has flag_identified set when loaded just has is id_level set to 110. Items, when saved out, don't have flag_identified set anymore. The other places that sets an item as identified just need to store the value (if greater than what is there). The hardest part is changing the examine code to look at the level of the id and decide what it should provide. From mwedel at sonic.net Tue Apr 23 23:26:14 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:21 2005 Subject: [CF-Devel] Compiling crossfire 1.1.0 on HPUX References: <3CC53C14.AEEB11A0@lucent.com> Message-ID: <3CC633E6.2050508@sonic.net> Karl-Jose Filler wrote: > Hi > > I'm trying to get crossfire running on an old HP box, the old one 0.9x ran fine > but it's gone ... > > No I try to get 1.1 running (first compiling) but > > include/plugin.h > > contains > > #include > > and this file I cannot find on my HP. > > Am I the first one to put this on HP-UX, or are there any hints how to do it ? You may very well be the first to try to compile on HP-UX in recent history. the dlfcn.h file is part of the dynamic linking. I don't know anything about HP-UX - it seems pretty obvious that you are missing that file in the includes - it may be called something else, or dynamic loading may be not well supported, or it may use another set of interfaces. Unfortunately, my linux distribution doesn't appear to have any man pages on the dl routes. My first thought would be to just try commenting it out, and see what happens. Taking a quick look at the plugin_python.c file, I don't see any direct references to the dl routines. From mwedel at sonic.net Tue Apr 23 23:30:32 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:21 2005 Subject: [CF-Devel] re: Corrupt archives? References: Message-ID: <3CC634E8.3040909@sonic.net> Bernd Edler wrote: > Hello, > ifi and sunet also seem to be awful slow at mirroring. > They still don't have crossfire-1.1.0, whose release was over > a month ago. I'm pretty sure the ifi was 'manually mirroring'. I don't know if anyone is still doing so - probably not. sunet is probably mirroring of ifi, so if ifi doesn't get updated, sunet won't either. I don't know who is responsible for sunet. > > Apropos crossfire-1.1.0 - is it just me, or is the file > "lib/faces" missing? Well my server wouldn't start without it. > So I had to get the archetypes and run collect.pl. Looks like it is - not sur ewhy. > > Apropos collect.pl: I had to rtfs to find out its usage. > So i think something like this could be helpful: A good idea. Normally, collect.pl is run by the makefile, but adding documentation is never a bad thing. > From yann.chachkoff at mailandnews.com Wed Apr 24 10:01:50 2002 From: yann.chachkoff at mailandnews.com (Yann Chachkoff) Date: Thu Jan 13 18:02:21 2005 Subject: [CF-Devel] Compiling crossfire 1.1.0 on HPUX Message-ID: <3CC6E74B@mailandnews.com> >===== Original Message From Karl-Jose Filler ===== >Hi > >I'm trying to get crossfire running on an old HP box, the old one 0.9x ran fine >but it's gone ... > >No I try to get 1.1 running (first compiling) but > >include/plugin.h > >contains > >#include > >and this file I cannot find on my HP. > >Am I the first one to put this on HP-UX, or are there any hints how to do it ? > >Thanks for your help > > Jose > >Environment: > CPU B132 > OS: HP-UX 10.20 > C-Compiler: gcc version egcs-2.91.66 19990314 (egcs-1.1.2 release) Sorry for not having answered faster to your question, but documentation about HPUX wasn't easy to find for me :) It appears that HPUX uses a different shared library mechanism than most unix systems do. The common way is dlopen/dlclose while HPUX uses shl_load/shl_unload. I do not have an HPUX system to test the following function wrappers. Tell me if those work well on your system: Add the following functions in plugins.c; Also replace #include by #include ; Don't forget to update the function prototypes list (sproto.h) ! void *dlopen( const char *path, int mode ) { void *ret; ret = shl_load( path, BIND_IMMEDIATE | BIND_FIRST | BIND_VERBOSE, 0); return ret; } int dlclose( void *handle ) { return shl_unload( (shl_t) handle ); } void *dlsym( void *handle, const char *sym ) { void *value=0; if ( shl_findsym( (shl_t*)&handle, sym, TYPE_PROCEDURE, &value ) != 0 ) return 0; return value; } char *dlerror( void ) { return strerror( errno ); } ------------------------------------------------ Visit http://www.selentine.dyndns.org for a journey into a fantastic world ! (But don't expect too much...) ------------------------------------------------ From yann.chachkoff at mailandnews.com Wed Apr 24 10:11:40 2002 From: yann.chachkoff at mailandnews.com (Yann Chachkoff) Date: Thu Jan 13 18:02:21 2005 Subject: [CF-Devel] Compiling crossfire 1.1.0 on HPUX Message-ID: <3CC6E974@mailandnews.com> > Unfortunately, my linux distribution doesn't appear to have any man pages on >the dl routes. My first thought would be to just try commenting it out, and see >what happens. Taking a quick look at the plugin_python.c file, I don't see any >direct references to the dl routines. The dl functions are used to load the plugins libraries. Those are compiled as shared libs under unix systems, and are DLLs under Windows. The dl functions are used inside initOnePlugin() to load the library and get pointer references to the various plugin functions. A different code is used for Win32 systems, since the DLL handling uses very different functions. dl functions are not used on HPUX, but a very close mechanism is used so porting shouldn't be too difficult. ------------------------------------------------ Visit http://www.selentine.dyndns.org for a journey into a fantastic world ! (But don't expect too much...) ------------------------------------------------ From phil at micronetix.com Sat Apr 27 18:19:50 2002 From: phil at micronetix.com (phil) Date: Thu Jan 13 18:02:22 2005 Subject: [CF-Devel] Crossfire under win32 project file Message-ID: <200204271819.AA259326744@micronetix.com> OK, it compiles with Visual C++ straight from CVS now. Attached are updated project and readme files for the make_win32 directory. I modified things to use Python 2.2.1, instead of 2.1.1. Hopefully, this'll be the last post on this topic for quite a while. -Philip -------------- next part -------------- How to Install a Crossfire Server on Windows: Please follow the steps in the right order! o First step: Before you can compile the Crossfire source, you must install a python script engine on your computer. Python is the default script engine of Crossfire. You can find the python engine here: http://www.python.org/. The current Crossfire server use Python 2.2.1 . The Package comes with Installer and pre compiled libs & dlls, you have only to install them. The VisualC Crossfire settings are for c:\python22 . You can install the package of course on a different spot, but you habe then to change the pathes in the VC settings. Go in Settings/C++ and Settings/Link and change the optional include and libs path to the new python installation path. o 2nd step: Go in make_win32 (this is the same folder where this doc should be) and run "installwin32.bat"! Be sure you do this before you compile! The bat-file will make & copy all folders and files you need to run the server later, except the maps! You must download a map package and install them the share folder. Its must look like this: crossfire\share\maps\... . o 3rd step: You must compile the program. You'll need Visual C++ to do this (or some other ANSI C-compiler that can read *.dsw files). After unpacking the crossfire package, doubleclick on "crossfire32.dsw". There are 3 projects in your Workspace: Crossfire32 (the server), libcross.lib and plugin_python . You need to compile all 3. Easiest way is to select the plugin_python - ReleaseLog as active Project, this will compile all others too. Then - in Visual C++ - press to compile. If you don't have an appropriate compiler you can try to get the binary (crossfire32.exe file and plugin_python.dll) from *somewhere*. After the compiler is successul, the VC copies the crossfire32.exe in the "crossfire" folder and the plugin_python.dll in the crossfire/share/plugins folder. NOTE: The compiling will give you >400 warning messages. Thats some casting warnings from the original unix source - they are not harmfull. Ignore them, we will remove it when we get time for it. o Last step: Run the program "crossfire32.exe" (in the directory "crossfire"). A dos-prompt should open now, showing lots of weird text: the server logs. You're done - the server is up and ready for connections. :-) If you still have troubles, write to the Crossfire mailing list: . Doing so, please provide as much information on your problem as possible! Most important: Tell us exactly what version of crossfire you've used. If it's an old version, update first and see if that solves your problem. -------------- next part -------------- # Microsoft Developer Studio Project File - Name="crossfire32" - Package Owner=<4> # Microsoft Developer Studio Generated Build File, Format Version 6.00 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Console Application" 0x0103 CFG=crossfire32 - Win32 FullDebug !MESSAGE This is not a valid makefile. To build this project using NMAKE, !MESSAGE use the Export Makefile command and run !MESSAGE !MESSAGE NMAKE /f "crossfire32.mak". !MESSAGE !MESSAGE You can specify a configuration when running NMAKE !MESSAGE by defining the macro CFG on the command line. For example: !MESSAGE !MESSAGE NMAKE /f "crossfire32.mak" CFG="crossfire32 - Win32 FullDebug" !MESSAGE !MESSAGE Possible choices for configuration are: !MESSAGE !MESSAGE "crossfire32 - Win32 FullDebug" (based on "Win32 (x86) Console Application") !MESSAGE "crossfire32 - Win32 ReleaseQuit" (based on "Win32 (x86) Console Application") !MESSAGE "crossfire32 - Win32 ReleaseLog" (based on "Win32 (x86) Console Application") !MESSAGE # Begin Project # PROP AllowPerConfigDependencies 0 # PROP Scc_ProjName "" # PROP Scc_LocalPath "" CPP=cl.exe RSC=rc.exe !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 1 # PROP BASE Output_Dir "crossfire32___Win32_FullDebug" # PROP BASE Intermediate_Dir "crossfire32___Win32_FullDebug" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 1 # PROP Output_Dir "FullDebug" # PROP Intermediate_Dir "FullDebug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "DEBUG" /D "TIME_ARCH_LOAD" /D "CS_LOGSTATS" /D "ESRV_DEBUG" /FD /GZ /I./include /I./random_maps /c # ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I ".\include" /I ".\random_maps" /I ".\\" /I ".\plugin\include" /I "..\include" /I "..\random_maps" /I "..\\" /I "..\plugin\include" /I "d:\Python21\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "DEBUG" /D "ESRV_DEBUG" /FD /GZ /I./include /I./random_maps /c # ADD BASE RSC /l 0x407 /i "../include" /d "_DEBUG" # ADD RSC /l 0x407 /i "../include" /d "_DEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"d:\python21\libs" # Begin Special Build Tool SOURCE="$(InputPath)" PostBuild_Cmds=copy FullDebug\crossfire32.exe ..\crossfire32.exe # End Special Build Tool !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "crossfire32___Win32_ReleaseQuit" # PROP BASE Intermediate_Dir "crossfire32___Win32_ReleaseQuit" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /Gi /GX /O2 /I ".\include" /I ".\random_maps" /I ".\\" /I ".\plugin\include" /I "..\include" /I "..\random_maps" /I "..\\" /I "..\plugin\include" /I "d:\Python21\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c # SUBTRACT BASE CPP /YX /Yc /Yu # ADD CPP /nologo /MT /W3 /Gi /GX /O2 /I ".\include" /I ".\random_maps" /I ".\\" /I ".\plugin\include" /I "..\include" /I "..\random_maps" /I "..\\" /I "..\plugin\include" /I "d:\Python21\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c # SUBTRACT CPP /YX /Yc /Yu # ADD BASE RSC /l 0x407 /d "NDEBUG" # ADD RSC /l 0x407 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:console /machine:I386 /libpath:"d:\python21\libs" # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:console /machine:I386 /libpath:"d:\python21\libs" # Begin Special Build Tool SOURCE="$(InputPath)" PostBuild_Cmds=copy ReleaseQuit\crossfire32.exe ..\crossfire32.exe # End Special Build Tool !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Use_MFC 0 # PROP BASE Use_Debug_Libraries 0 # PROP BASE Output_Dir "crossfire32___Win32_ReleaseLog" # PROP BASE Intermediate_Dir "crossfire32___Win32_ReleaseLog" # PROP BASE Ignore_Export_Lib 0 # PROP BASE Target_Dir "" # PROP Use_MFC 0 # PROP Use_Debug_Libraries 0 # PROP Output_Dir "ReleaseLog" # PROP Intermediate_Dir "ReleaseLog" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /Gi /GX /O2 /Ob2 /I "..\include" /I "..\random_maps" /I "..\\" /I "..\plugin\include" /I "d:\Python21\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "DEBUG" /YX"preheader.pch" /FD /c # ADD CPP /nologo /MT /W3 /Gi /GX /O2 /Ob2 /I "..\include" /I "..\random_maps" /I "..\\" /I "..\plugin\include" /I "d:\Python21\include" /D "_CONSOLE" /D "DEBUG" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "DEBUG_MOVEATTACK" /YX"preheader.pch" /FD /c # ADD BASE RSC /l 0x407 /d "NDEBUG" # ADD RSC /l 0x407 /d "NDEBUG" BSC32=bscmake.exe # ADD BASE BSC32 /nologo # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:console /pdb:none /machine:I386 /libpath:"d:\python21\libs" # ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib /nologo /subsystem:console /pdb:none /machine:I386 /libpath:"d:\python21\libs" # SUBTRACT LINK32 /debug # Begin Special Build Tool SOURCE="$(InputPath)" PostBuild_Cmds=copy ReleaseLog\crossfire32.exe ..\crossfire32.exe # End Special Build Tool !ENDIF # Begin Target # Name "crossfire32 - Win32 FullDebug" # Name "crossfire32 - Win32 ReleaseQuit" # Name "crossfire32 - Win32 ReleaseLog" # Begin Group "Quellcodedateien" # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Group "socket" # PROP Default_Filter "" # Begin Source File SOURCE=..\socket\image.c # End Source File # Begin Source File SOURCE=..\socket\info.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\socket" # PROP Intermediate_Dir "ReleaseQuit\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\socket" # PROP Intermediate_Dir "ReleaseLog\socket" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\socket\init.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\socket" # PROP Intermediate_Dir "ReleaseQuit\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\socket" # PROP Intermediate_Dir "ReleaseLog\socket" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\socket\item.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\socket" # PROP Intermediate_Dir "ReleaseQuit\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\socket" # PROP Intermediate_Dir "ReleaseLog\socket" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\socket\loop.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\socket" # PROP Intermediate_Dir "ReleaseQuit\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\socket" # PROP Intermediate_Dir "ReleaseLog\socket" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\socket\lowlevel.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\socket" # PROP Intermediate_Dir "ReleaseQuit\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\socket" # PROP Intermediate_Dir "ReleaseLog\socket" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\socket\metaserver.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\socket" # PROP Intermediate_Dir "ReleaseQuit\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\socket" # PROP Intermediate_Dir "ReleaseLog\socket" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\socket\request.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\socket" # PROP Intermediate_Dir "ReleaseQuit\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\socket" # PROP Intermediate_Dir "ReleaseLog\socket" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\socket\sounds.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\socket" # PROP Intermediate_Dir "ReleaseQuit\socket" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\socket" # PROP Intermediate_Dir "ReleaseLog\socket" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # End Group # Begin Group "server" # PROP Default_Filter "" # Begin Source File SOURCE=..\server\alchemy.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\apply.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\attack.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\ban.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\c_chat.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\c_misc.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\c_move.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\c_new.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\c_object.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\c_party.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\c_range.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\c_wiz.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\commands.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\disease.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\egoitem.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\gods.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\hiscore.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\init.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\login.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\main.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\monster.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\move.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\pets.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\player.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\plugins.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\resurrection.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\rune.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\shop.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\skill_util.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\skills.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\spell_effect.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\spell_util.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\swamp.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\swap.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\time.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # Begin Source File SOURCE=..\server\timers.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\server" !ENDIF # End Source File # Begin Source File SOURCE=..\server\weather.c # End Source File # Begin Source File SOURCE=..\server\win32.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\server" # PROP Intermediate_Dir "ReleaseQuit\server" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\server" # PROP Intermediate_Dir "ReleaseLog\server" # ADD BASE CPP /YX"crossfire32.pch" # ADD CPP /YX"crossfire32.pch" !ENDIF # End Source File # End Group # Begin Group "random_maps" # PROP Default_Filter "" # Begin Source File SOURCE=..\random_maps\decor.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\door.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\exit.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\expand2x.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\floor.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\maze_gen.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\monster.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\random_map.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\reader.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\rogue_layout.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\room_gen_onion.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\room_gen_spiral.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\snake.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\special.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\square_spiral.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\style.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\treasure.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\wall.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\random_maps" # PROP Intermediate_Dir "ReleaseQuit\random_maps" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP BASE Intermediate_Dir "Win32_ReleaseNormal\random_maps" # PROP Intermediate_Dir "ReleaseLog\random_maps" !ENDIF # End Source File # End Group # Begin Group "common" # PROP Default_Filter "" # Begin Source File SOURCE=..\common\anim.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\arch.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\button.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\exp.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\friend.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\glue.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\holy.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\image.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\info.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\init.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\item.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\links.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\living.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\loader.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\logger.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\los.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\map.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\object.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\player.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\porting.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE="..\common\re-cmp.c" !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\readable.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\recipe.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\shstr.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\time.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\treasure.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # Begin Source File SOURCE=..\common\utils.c !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" # PROP Intermediate_Dir "FullDebug\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP BASE Intermediate_Dir "Win32_Release\common" # PROP Intermediate_Dir "ReleaseQuit\common" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" # PROP Intermediate_Dir "ReleaseLog\common" !ENDIF # End Source File # End Group # End Group # Begin Group "Header-Dateien" # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File SOURCE=..\include\arch.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\artifact.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\attack.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\book.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\commands.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\config.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\define.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\expand2x.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\face.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\funcpoint.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\global.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\god.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\includes.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\libproto.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\living.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\loader.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\logger.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\map.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\material.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\maze_gen.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\newclient.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\newserver.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\object.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\player.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\plugin.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\plugproto.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\race.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\random_map.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE="..\include\re-cmp.h" !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\recipe.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\room_gen.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\random_maps\rproto.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\shstr.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\skillist.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\skills.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\sockproto.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\sounds.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\spellist.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\spells.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\sproto.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\treasure.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\version.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\win32.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # Begin Source File SOURCE=..\include\xdir.h !IF "$(CFG)" == "crossfire32 - Win32 FullDebug" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseQuit" # PROP Intermediate_Dir "ReleaseQuit" !ELSEIF "$(CFG)" == "crossfire32 - Win32 ReleaseLog" !ENDIF # End Source File # End Group # Begin Source File SOURCE=..\common\loader.l # End Source File # End Target # End Project From temitchell at sympatico.ca Sat Apr 27 23:55:25 2002 From: temitchell at sympatico.ca (Todd Mitchell) Date: Thu Jan 13 18:02:22 2005 Subject: [CF-Devel] suggestion for flying Message-ID: <001301c1ee70$e8f36e60$0a02a8c0@kameria> Hi, I have been thinking a lot about the suggestions from Mark Wedel about no_pass and flying posted in the map mail list (below), and I have been mulling over how much milage you could get from implementing a few different pass conditions for map objects. First off it really improves the value of ranged combat, you can put in moats, broken bridges to jump over, fire over obstacles, really use windows to good advantage by putting archers in them... you could use this to fake elevation too (really make use of those elevation arch walls). This would add a lot to multiplayer maps since characters would be able to deploy themselves to their mutual advantage (you take the archers on the left, I'll go for the door...). A pile of smaller baddies with ranged attacks would be more effective, since you couldn't just wade into them unless you could fly, and it would be more reasonable than putting them in a room with a too-little door. It would give flying spells a lot more usage (jumping as well). You would get a lot more maps where the full-on charge would not be a good option and that is a good thing. It would probably break a bunch of maps however, but I don't think it would be hard to fix them. This same strategy could also be used for other pass conditions like a no_phase_pass for a phase spell or giving ghosts the ability to pass certain walls (or a ring of ghost walking perhaps). You would certainly want to add other pass conditons at the same time rather than work it over twice. ****************************************** FROM: Mark WedelDATE: 03/19/2002 19:55:54 SUBJECT: RE: [CF-maps] fly_on but no_pass Best I know, there is no way to directly what you want to do. no_pass applies to both flying and walking creatures, and ignores the fly_on and walk_on (and off) flags. What the walk_on, etc, flags do is control if the object that has them automatically get applied when the event happens. This is how the automatic exits work - they have walk_on and fly_on. Similarly, this is how player movers that control one aspect would work - you would set the walk_on but not the fly_on. the walk/fly_off flags say that the space should be re-examined when the player leaves it. This is mostly used for buttons (so they can see if they should still be depressed or not). Now it makes a lot of sense to have a no_walk_pass and no_fly_pass - There are lots of things that something should be able to fly over but not walk over (water, acid pits, etc). In theory, I guess you should be able to walk into those and then instantly die (drown, dissolved, etc), but that would be a bit unfriendly. It should be noted that many objects have the fly attribute - eg, most spells and missile weapons. Thus, if you create a moat which things can fly over, you have to be careful because if there are monsters on the far side and they don't have range weapons, the player could kill them off quite safely. OTOH, this is no worse than big monsters trapped in small rooms. If I was to do this, I would internally rename the no_pass to no_walk_pass and create a new flag called no_fly_pass. Put the appropriate loader/saver support in. If when loading a map with just the old no_pass flag, you set/clear both of those values appropriate. Update all the references to FLAG_NO_PASS as appropriate (looks to be about 30 of them), evaluating each one to see if it should be FLAG_NO_WALK_PASS or the FLAG_NO_FLY_PASS - certainly some new case is needed in the actual move logic to check the objects status wrt what the space allows. This would probably necessitate changing the P_NO_PASS flags in a similar fashion. All of that isn't very hard - takes some work, and is a bit time consuming. The hardest part is monster logic - right now, I'm pretty sure that some of the 'can the monster hit the player' looks at the no pass attributes - this would need to get redone a bit - just because the monster may not be able to have a path to move to the player, it may certainly have a path to fire a weapon/spell at the player. From temitchell at sympatico.ca Sun Apr 28 01:11:14 2002 From: temitchell at sympatico.ca (Todd Mitchell) Date: Thu Jan 13 18:02:22 2005 Subject: [CF-Devel] suggestion for flying References: <001301c1ee70$e8f36e60$0a02a8c0@kameria> Message-ID: <001e01c1ee7b$807dca00$0a02a8c0@kameria> Sorry I should have been more clear about what I was talking about- that's a problem with mulling I suppose. I was quoting MW in his response to someone asking how to make a fly over but no pass for walking object . I was at the same time trying to make a split level map, so I latched onto this. I thought I should suggest it in this forum as a potential game improvement. It would be really nice to have a flight pass flag since it would allow for some neat maps. It might also be nice to include other pass conditions in the same change if anyone can think of any they would want (moving in the astral plane, shadow walking for ninjas only, swimming, the super secret shuffle...) rather than doing it again later. I just thought the no_fly_pass flag was a great idea. I would be willing to help if there is anything I could do (test it, modify the arc files...) but the actual coding is beyond me (although I would like to learn). The hard part as MW says would be having the monsters be able to use these pass conditions to attack. From jbontje at suespammers.org Sun Apr 28 03:10:22 2002 From: jbontje at suespammers.org (Joris Bontje) Date: Thu Jan 13 18:02:22 2005 Subject: crossfire32 patch rejected (was Re: [CF-Devel] Crossfire under win32 project file) In-Reply-To: <200204271819.AA259326744@micronetix.com> References: <200204271819.AA259326744@micronetix.com> Message-ID: <20020428081022.GA11451@mids.student.utwente.nl> On Sat, Apr 27, 2002 at 06:19:50PM -0500, phil wrote: > OK, it compiles with Visual C++ straight from CVS now. Attached are > updated project and readme files for the make_win32 directory. > I modified things to use Python 2.2.1, instead of 2.1.1. Hopefully, > this'll be the last post on this topic for quite a while. [cut] The crossfire32.dsp file that you suplied in your email messages was NOT changed for Python 2.2.1. Please check this and resend the new file. I do know nothing about Visual C++, but should the crossfire32.dsw file also be updated with the python (and weather and image) changes? Regards, Joris Bontje -- Gpg Key: Id=0xF19326A9 / http://mids.student.utwente.nl/~mids/jbontje.pub Key fingerprint = 730D 9B3A F406 F28A 957D 6397 31E8 6D4C F193 26A9 -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 240 bytes Desc: not available Url : http://shadowknight.real-time.com/pipermail/crossfire/attachments/20020428/a8a4163c/attachment.pgp From mwedel at sonic.net Mon Apr 29 00:10:47 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:22 2005 Subject: [CF-Devel] Crossfire 1.2.0 and Client 1.2.1 released Message-ID: <3CCCD5D7.6080001@sonic.net> Crossfire 1.2.0 has been released. Files released for this version: sums (bsd) filename 12646 1322 crossfire-1.2.0-arch.tar.bz2 50427 1416 crossfire-1.2.0-arch.tar.gz 13102 2854 crossfire-1.2.0-maps.tar.bz2 63943 4178 crossfire-1.2.0-maps.tar.gz 38596 2715 crossfire-1.2.0.tar.bz2 50500 3025 crossfire-1.2.0.tar.gz 46793 375 crossfire-client-1.2.1.tar.gz 13123 1266 crossfire-client-images.1.2.1.tar.gz Sums (md5) c69b4a1db0c5c877900016753cd9a7ec crossfire-1.2.0-README bdcb851949415557b3a9fbcf95834a88 crossfire-1.2.0-arch.tar.bz2 4d2babc7d9af590f6c16e5dbc93b4301 crossfire-1.2.0-arch.tar.gz c9553d81508dffaa1332c46d3a4d807e crossfire-1.2.0-maps.tar.bz2 9550a9731a3c3198a5eaa3f69fe5a8b4 crossfire-1.2.0-maps.tar.gz d380b8998b4eee38858279081619c48f crossfire-1.2.0.tar.bz2 c71ed3509489343336dff2c84cee55fc crossfire-1.2.0.tar.gz 802c9577fa657b5fa91fccc6ca5ced93 crossfire-client-1.2.1.tar.gz 0e0e89480f27214f45bfa7b79a75de2d crossfire-client-images.1.2.1.tar.gz crossfire-client-1.2.1 is the client (X11) distribution - standard X11 and gtk interfaces are provided. This has had changes to image handling and better gui config in the gtk client. crossfire-client-images.1.2.1.tar.gz is a prebuilt image file for the client - downloading this file will reduce the amount of download that needs to happen during play if the -cache option is used. This file should be untarred in the ${prefix}/share/crossfire-client directory, where ${prefix} is the --prefix option given when configure is run. The default path is /usr/local/share/crossfire-client/. crossfire-1.2.0.tar.{gz/bz2} contains the server code with prebuilt archetype and image files. crossfire-1.2.0.arch.tar.{gz/bz2} contains the unpacked archetype changes. This is not needed if you only want to compile the server and play the game. crossfire-1.2.0-maps.tar.{gz/bz2} contains the maps. This is needed with the server distribution. FOR FIRST TIME USERS: You will only need the appropriate server, map and client file. You do not need the arch file. If you just want to play the game at some remote server, you need the client and perhaps the image archive file. Crossfire is avaible on the following ftp sites Primary: ftp://ftp.sourceforge.net/pub/sourceforge/crossfire (64.28.67.101) Secondary: ftp://ftp.real-time.com/pub/games/crossfire ftp://ftp.cs.city.ac.uk/pub/games/crossfire/ ftp://ftp.cs.titech.ac.jp/pub/games/crossfire ftp://mirror.aarnet.edu.au/games/roguelike/crossfire/ ftp://crossfire.futt.org//pub/crossfire The initial upload of this release is only made to sourceforge - it should show up on the mirrors shortly. Mark Wedel mwedel@sonic.net Complete changelog: server: Changes for 1.2.0: Makefile.in, include/version.h: Update for 1.2.0 release lib/Makefile.in: have it make an archive for the archetypes. MSW 2002-04-28 doc/Developers/protocol: Add documentation about the map2 protocol command. socket/request.c: Fix bad indentation for the map2 function. No actual functional code changes, but some comments updated. Running diff with the -w option will make the changes, or lack thereof, more viewable. MSW 2002-04-28 crossedit/xutil.c: Update to use name of png file. lib/archetypes: collected - pl_dragon arch changed a while back, with no new collect. lib/collect.pl.in: Add some notes about usage if no option is given or if --help is given. server/gods.c: Fix that resulted in weapon/armor restrictions not working. MSW 2002-04-23 Various minor bugfixes. Note the changes may appear larger than they really are due to formatting/indentation changes. Run diff -w to supress those: make_win32/installwin32.bat: Update for new image files. server/c_object.c: Fix SAVE_INTERVAL #ifdef block. It failed to compile as it was written. Simplify code, but it should have the same effect. server/move.c: Modify push_object so that if a player swaps position with his pet, we send a esrv_map_scroll. This should save bandwidth, and also prevents display corruption when fog of war on the client is in use. Add some new comments, adjust some formatting. server/player.c: Fix minor typo in comment. server/skills.c: Modify new_draw_info that is responsible for the "You pray" messages to not have the NDI_UNIQUE flag so that they can get batched up, depending on users value of output-count server/swap.c: Remove swapped out per player unique maps from the list of maps. Reduces cpu and memory consumption by a minor amount, and results in a cleaner 'maps command output. server/weather.c: Add standard crossfire banner to top of file. Modify long long declartion to just be a long. MSW 2002-04-20 socket/item.c: Add checks to esrv_move_object - before it just trusted the client that the destination target to move items into was a container. Now do valid checking that the object can be picked up, that the container can hold it, etc. MSW 2002-04-18 Add utils/crossloop.web.in script. This script is used on metalforge - it generates the backtrace file, compresses the core, and sends out mail. configure.in, configure: Rebuilt to make the crossloop.web script. utils/Makefile.in: Install the crossloop.web script. Include the crossloop.web.in script when making the archive. utils/crossloop.web.in: New file. MSW 2002-04-14 Update to improve image caching and faceset support in the client. The main change is adding the 'requestinfo image_info' and 'requestinfo image_sums' commands. common/image.c: Checksum the bmaps file when we load it - we send this as part of the image_info data. doc/Developers/protocol: Document the requestinfo data. include/global.h: Add extern for bmaps_checksum, and the define for ROTATE_RIGHT which is used for checksumming. include/newserver.h: Update SC version to 1027 so that clients can know if they can issue requestinfo commands. include/sockproto.h: rebuilt lib/adm/collect_images.pl: Add support for it to make a crossfire-images distribution that the client can use to bootstrap its image set. socket/image.c: Change SendFaceCmd to take a NewSocket parameter instead of a player parameter - in this way, it can be used before the AddMe command - this allows the client to download images before issuing that command. Add send_image_info and send_image_sums function which send the requestinfo data to the client. socket/loop.c: Move the askface command from the player commands to the newsocket commands. Add RequestInfo functino that determines the type of request and calls the specific function to deal with it. MSW 2002-03-25 client: Changes for 1.2.1: Makefile.in: Add pixmaps/question.sdl to archive list. configure, configure.in: Update for 1.2.1 release. MSW 2002-04-28 gtk/config.c: Allocate string data for want_faceset - data returned by gtk_entry_get_text is non persistent. MSW 2002-04-28 gtk/gx11.c: Fix bug in that the wrong variable was being passed to negotiate_connection, resulting in the sound not being properly communicated to the client. MSW 2002-04-19 Main change is to make all the configuration options now available in the configure window in the gtk client. The way all the various values was stored was changed around, so it is now pretty trivial to add any future options. For the most part, most of the logic of the other code is unchanged - one thing that is different is that the clients use the larger virtual maps that are normally used for fog of map - this means that fog of war can be turned on and off. There are probably some bugs in this, but it seems to basically work - no horrendous bugs that I noticed that prevent it from working at all. - common/client.c: replaced config values with new system. Always send setup mapredraw 1 to server to make toggling for fog of war easier, and it doesn't use any significant bandwidth. common/client.h: Add new value configuration system/defines. remove the old values. common/commands.c, common/image.c,common/metaserver.c,common/player.c : update for new configuration value system common/init.c: Add config_names which is used for the load/save logic. update the init and clear functions to set up new values. gtk/Makefile.in: add config.c file. gtk/gtkproto.h: rebuilt. gtk/config.c: New file - holds the config creating code, as well as the load and save for the gdefaults file. gtk/gx11.c: Remove some widgets now in config.c, move itemlist to gx11.h, remove some other values that are in the new configuration scheme. gtk/gx11.h: Moved several structures and externs from gx11.c to gx11.h so they are available to config.c. Remove several values that are done with the new config arrays. gtk/image.c, gtk/keys.c, gtk/sdl.c, gtk/sound.c: : update for new configuration value system gtk/map.c: update for new configuration value system, modified so that fog of war map logic is used all the time. Change allocate_map to no longer refer to map_size global - use the x and y values in the map structure. x11/x11.c: update for new configuration value system - the x11 portion still uses the old load/save method - this should get converted. Many of the options available in the gtk client have no corresponding use in the x11 client. x11/x11.h: update for new configuration value system x11/xutil.c: update for new configuration value system. Most of the map logic is now synced up with the gtk/map.c MSW 2002-04-03 configure.in, configure: Fix the --disable-sound configure option (when used, it won't look for sound support, and will not build the sound-src directory). Likewise, if that option is not used but configure does not find any supported sound systems, it also will not build the sound-src directory. MSW 2002-03-31 Various fixes/enhancements: 1) For the files stored in the players cache, include the image set suffix (eg, base, clsc) when saving the file. 2) Add a gui update element to the gtk client when running with -download_all_fa ces. For the cfclient, print the updates to the window. 3) Apply patch by 'Alfie' that shows skill experience in the cfclientp 4) Fix caching bugs with the cfclient that caused it to not work right. common/client.c: Add callbacks to image_update_download_status from the download all image routine. It is this callback that provides whatever update mechanism for the player. common/external.h: add image_update_download_status common/image.c: Modify display_newpng to put in the image set name of the saved cache files if that information is available. gtk/gtkproto.h: rebuilt. gtk/gx11.c: Make get_window_coord non static so other files can use it. gtk/image.c: Add image_update_download_status that draws a progress bar. Convenient side effect is that other GUI elements are now updated as part of this, so player can access other menu items. x11/png.c: Fix some bugs when using cached images - rgba_to_xpixmap was using initialized bpp value - we now know this is always 4. create_and_rescale_image_from_data did not match the parameters as the common routines use. Also missing some logic for allocating the data and linking it back to the cache entry. x11/x11.c: Add display for skill experience. This necessitated making some of the windows bigger. x11/x11.h: Remove now unused fields from PixmapInfo structure (fg, bg, bitmap) x11/x11proto.h: rebuilt x11/xutil.c: Remove code that was storing data into the unusued fields in the PixmapInfo structure. Add missing call to init_common_cache_data. Add image_update_download_status function that just does a draw info. MSW 2002-03-26 Many changes to image handling. The most noteworthy are: 1) Ability to use different image sets. 2) Ability to get checksums of all images and download missing images before play starts. 3) Storing cache information for images in a bmaps.client file so that it can know if it has a match without needing to load the image and checksum it. 4) Can use crossfire-image archives to bootstrap the client with a large number of images to save the time of downloading them later. README: Update some out of data information about sounds, add section describing the image handling. configure,configure.in: Make the SOUNDDIR be based and datadir and not an absolute path - this means using a different -prefix changes the location of where it will find the sound file. Moved some of the defines into the config.h file so that we don't need to pass them as -D compiler options. Add code to properly substitute DATADIR and BINDIR values. common/Makefile.in: Add image.c to list of files. Fix depend directive. common/cconfig.h: Remove some options that no longer did anything. common/client.c: clean up some unused global variables, add a few new ones. and support for replyinfo protocol command. Modify negotiate connection to issue requestinfo requests, set up face set to use, use setup command to set caching behaviour, and support for it to download all image sums and missing images before play starts. common/client.h: Update VERSION_SC to 1027. Remove some unused global externs. Add FaceSets structure, Face_Information structure, the later which holds some user preferences. Add Cache_Entry structure, as well as some state when negotiating the connection. common/commands.c: Add ReplyInfoCmd function. Move FaceCmd to common/image.c. Add handling of received setup command for faceache and faceset information. Remove some dead code. common/config.h.in: Add BINDIR and DATADIR defines so we don't need to pass them on the command line. common/external.h: Add some more functions that are called back from the common area. common/image.c: New file - cache logic, png image load code, and protocol image related commands in this file. This removes some of the code that was previously in the GUI area of the client into a common area. common/init.c: Add TEST_FREE_AND_CLEAR macro. Add code to clear some of the newly added structures. common/proto.h: rebuilt. gnome/gnome-cf.h: remove cache_images extern. gtk/gcfclient.man: Update man page for new options (-download_all_faces, -faceset) gtk/gtkproto.h: rebuilt. gtk/gx11.c: add redraw_needed flag so the map window is properly redrawn when caching images and new images show up. Change some other variables to deal with new image code. pixmaps changed to a pointer so that a copy can be held in the common cache structure. Add support for new options. Remove some code that is now in the common/image.c file. gtk/gx11.h: Remove keepcache, change cache_images, add redraw_needed, and change type of pixmaps to be a pointer. gtk/image.c: Move requestface to the common/image.c, change pixmaps to pointer type. remove finish_face_cmd and ReadImages command. gtk/map.c: Change pixmaps to pointer types. gtk/sdl.c: add redraw paramter to sdl_gen_map. change pixmaps type to pointer. gtk/sound.c: Add missing / when running cfsndserv. x11/png.c: Remove gdk related code from the file. Add rgba_to_xpixmap data so tha the common area can load the png file. x11/sound.c: Add missing / when running cfsndserv. x11/x11.c: change pixmap type to pointer. Add new options (-faceset and -download_all_faces). Remove -keepcache option. change cache_images to face_info.cache_images. Change how the pixmaps are generated x11/x11.h: remove keepcache and cache_images variables. Change pixmaps to pointer type. x11/x11proto.h: rebuilt. x11/xutil.c: remove keepcache option. Change pixmap type to pointer. Move requestface and finish_face_cmd to common/image.c MSW 2002-03-25 From jshelley at cahaus.com Mon Apr 29 17:12:03 2002 From: jshelley at cahaus.com (Johnny Shelley) Date: Thu Jan 13 18:02:23 2005 Subject: [CF-Devel] Archetype reversion of modified monsters Message-ID: I seem to have found a problem with modified monsters reverting to the default resistances of their archetype. In addition, a few other things change as well. I'm not sure, but this seems to be limited to color spray. After taking damage from it monsters sometimes change resistances. The easiest way to replicate this seems to be to use a default archetype, give it a few immunities and a ton of hp so color spray won't kill it flat out. Dump the object to check the resistances (this also seems a bit funny, I often have to fiddle w/ resistances a bit before I find a combination that will actually modify from the default archetype). Zap the monster a few times with color spray until it causes damage, then dump it again and check the resistances. This step may have to be repeated a few times. johnny PGP Public Key available from: http://www.keyserver.net:11371/pks/lookup?op=get&search=0x17BF1DD3 From jshelley at ictransnet.com Mon Apr 29 21:05:57 2002 From: jshelley at ictransnet.com (Johnny Shelley) Date: Thu Jan 13 18:02:23 2005 Subject: [CF-Devel] Archetype reversion of modified monsters In-Reply-To: Message-ID: On Mon, 29 Apr 2002, Johnny Shelley wrote: > I seem to have found a problem with modified monsters reverting to the > default resistances of their archetype. In addition, a few other things > change as well. I'm not sure, but this seems to be limited to color > spray. After taking damage from it monsters sometimes change > resistances. After a bit more playing around, it seems that color spray is probably not the cause of the problem. Sorry for any confusion. The problem seems to recur consistently when a modified multi-part monster hits itself w/ a spell its not 100% immune to. This still doesn't quite explain how I was able to kill the firegod w/ colorspray, but its easier to reproduce in any event. johnny PGP Public Key available from: http://www.keyserver.net:11371/pks/lookup?op=get&search=0x17BF1DD3 From jshelley at cahaus.com Mon Apr 29 23:07:47 2002 From: jshelley at cahaus.com (Johnny Shelley) Date: Thu Jan 13 18:02:23 2005 Subject: [CF-Devel] Archetype reversion of modified monsters In-Reply-To: Message-ID: On Mon, 29 Apr 2002, Johnny Shelley wrote: > On Mon, 29 Apr 2002, Johnny Shelley wrote: > > > I seem to have found a problem with modified monsters reverting to the > > default resistances of their archetype. In addition, a few other things > > change as well. I'm not sure, but this seems to be limited to color > > spray. After taking damage from it monsters sometimes change > > resistances. Ok, this is hopefully my last correction of myself. It seems that monsters w/o immunity to slow who hit themselves, or are hit by it revert. This also explains the firegod thing as he isn't immune to slow. Hopefully that narrows it down enough. johnny PGP Public Key available from: http://www.keyserver.net:11371/pks/lookup?op=get&search=0x17BF1DD3 From mwedel at sonic.net Tue Apr 30 01:40:18 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:02:23 2005 Subject: [CF-Devel] Archetype reversion of modified monsters References: Message-ID: <3CCE3C52.4090706@sonic.net> Johnny Shelley wrote: > On Mon, 29 Apr 2002, Johnny Shelley wrote: > > >>I seem to have found a problem with modified monsters reverting to the >>default resistances of their archetype. In addition, a few other things >>change as well. I'm not sure, but this seems to be limited to color >>spray. After taking damage from it monsters sometimes change >>resistances. >> > > After a bit more playing around, it seems that color spray is probably > not the cause of the problem. Sorry for any confusion. The problem seems > to recur consistently when a modified multi-part monster hits itself w/ > a spell its not 100% immune to. This still doesn't quite explain how I > was able to kill the firegod w/ colorspray, but its easier to reproduce > in any event. This is a long standing 'bug' (feature). When you modify the attributes of an object, those values are stored in the object structure. When something then modifies the object, like the the monster equipping and item or getting affected by a spell, it needs to recalculate the creatures resistances, attributes, and so forth. As a starting point, it then goes back to the archetype, and the calculated values then overwrite those entries in the save file. The correct approach would be to have alternate fields in the object structure, and these get used as the base values when calculating the final values. Another work around that was used was to make it so the creature wouldn't apply anything, but you get an interesting effect that casting a beneficial spell on the monster could then perhaps make it wimpier (as the base value would then be used). A convenient work around is to just create a force object that lasts forever and put it in the creatures inventory (make sure it is applied). it will still use the original archetypes value when the object changes, but it will also apply the force object which will adjust the final values accordingly. From lembark at wrkhors.com Mon Apr 1 00:47:59 2002 From: lembark at wrkhors.com (Steven Lembark) Date: Thu Jan 13 18:04:14 2005 Subject: [CF List] levels & exp In-Reply-To: <3CA7E8A6.829A4BEC@sonic.net> References: <000101c1d89a$9a71ff90$c86ebb81@gizmo> <1017628672.7104.12.camel@asellus.localnet> <3CA7E8A6.829A4BEC@sonic.net> Message-ID: <168410000.1017643679@dizzy.wrkhors.com> > There are some very deep random dungeons. The problems I have with some > of them is that since they only use 'standard' monsters, the difficulty > can jump pretty good. The giant race dungeon comes to mind - you start > with things like ogres, then small trolls, hill giants, and then goes to > trolls. There is a pretty big gap (I find) between the hill giant and > trolls - I might be able to slice my way through the hill giants without > much trouble, but once the trolls show it, it becomes quite difficult. > > The real solution is more dungeons. I don't necessarily think that the > entire series should necessarily go from level 1 to 30 - by series, I > mean something like the set of quests you get in scorn. Most of the good > commercial games I have played have good side quests to fill in some > level and exp you may need. > > but realistically, the amount of maps in crossfire have not increased > much in recent time, and thats probably the bigger issue - having more > maps, even if not part of a larger quest, but rather something like > 'there is a cool item at the end of this (which the raffles basically > are))' to fill in for more of the levels would be most useful. But the monsters aren't the only part. Well-designed dungeons can be physically harder even with the same monsters due to fewer places to hide/escape or combinations of monsters and traps. Random dungeons can help with the monsters being well- scaled, but the really interesting parts come from dungeon layout itself. Catch there is that we need people to do the careful design. If this were a commercial product we'd be paying people to do that part. Since we aren't, the next best thing is to make the process fun to plan && well-streamlined. Emphasis there would be on allowing people to lay out "effective" dungeons [whatever definition we come up with] with minimal overhead. -- Steven Lembark 2930 W. Palmer Workhorse Computing Chicago, IL 60647 +1 800 762 1582 From henric at lysator.liu.se Mon Apr 1 17:23:08 2002 From: henric at lysator.liu.se (Henric Karlsson) Date: Thu Jan 13 18:04:14 2005 Subject: [CF List] levels & exp In-Reply-To: <168410000.1017643679@dizzy.wrkhors.com> Message-ID: On Mon, 1 Apr 2002, Steven Lembark wrote: > > > There are some very deep random dungeons. The problems I have with some > > of them is that since they only use 'standard' monsters, the difficulty > > can jump pretty good. The giant race dungeon comes to mind - you start > > with things like ogres, then small trolls, hill giants, and then goes to > > trolls. There is a pretty big gap (I find) between the hill giant and > > trolls - I might be able to slice my way through the hill giants without [...] Well there is, if I remeber correctly a directory maps/styles/monsterstyles/ Where it seems possible to define your own random levels (with respect to monsters). So if a map has a special monster need it should probably be possible to do even with random levels. > > But the monsters aren't the only part. Well-designed dungeons > can be physically harder even with the same monsters due to > fewer places to hide/escape or combinations of monsters and > traps. Random dungeons can help with the monsters being well- > scaled, but the really interesting parts come from dungeon > layout itself. > > Catch there is that we need people to do the careful design. [...] > the process fun to plan && well-streamlined. Emphasis there > would be on allowing people to lay out "effective" dungeons > [whatever definition we come up with] with minimal overhead. Maybe a map editor could give some support here? I currently have no idea how to make an "effective map" template, but I have a few other ideas that would simplify map making. How about a few quick buttons, to which you could temporay assign a few commonly used tiles for the current map. Like if you use stone floor tiles and lava alot on a map. And in the Java editor, a "fill below" option like the old X11 editor had. A random level monster designer, that makes files to put under the styles/ directory. Maybe there could be templates for commonly used map mechanisms, like a 1-8 randomizer; spikes,boulder and 8 buttons. I know these aren't really hard to make, but if you're new to map making a collection of map mechanisms could at least give you some ideas on what is possible. (or just a machanism gallery in the help section) /Henric From lembark at wrkhors.com Mon Apr 1 17:28:02 2002 From: lembark at wrkhors.com (lembark@wrkhors.com) Date: Thu Jan 13 18:04:14 2005 Subject: [CF List] levels & exp In-Reply-To: References: Message-ID: <24580000.1017703682@duke.wrkhors.com> >> the process fun to plan && well-streamlined. Emphasis there >> would be on allowing people to lay out "effective" dungeons >> [whatever definition we come up with] with minimal overhead. > > > Maybe a map editor could give some support here? I currently have no idea > how to make an "effective map" template, but I have a few other ideas that > would simplify map making. > > How about a few quick buttons, to which you could temporay assign a few > commonly used tiles for the current map. Like if you use stone floor tiles > and lava alot on a map. > And in the Java editor, a "fill below" option like the old X11 editor had. > A random level monster designer, that makes files to put under the styles/ > directory. > Maybe there could be templates for commonly used map mechanisms, like a > 1-8 randomizer; spikes,boulder and 8 buttons. I know these aren't really > hard to make, but if you're new to map making a collection of map > mechanisms could at least give you some ideas on what is possible. (or > just a machanism gallery in the help section) Going overboard for a moment, what about a design document w/ suggestions from the better maps. It could include comments on why the maps seem good and what the designers did do make them work. Might be worth [yet another] mailing list for dungeon designers to discuss what they do and how. The archive of this list would make a nice reference on how to do things properly and probably give some good feedback to the map-designer-tool maintainers on how to improve that also. -- Steven Lembark 2930 W. Palmer Workhorse Computing Chicago, IL 60647 +1 800 762 1582 From mwedel at sonic.net Mon Apr 1 21:44:14 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:04:14 2005 Subject: [CF List] levels & exp References: <24580000.1017703682@duke.wrkhors.com> Message-ID: <3CA9290E.5B9D5B9D@sonic.net> Henric Karlsson wrote: > Well there is, if I remeber correctly a directory > maps/styles/monsterstyles/ > Where it seems possible to define your own random levels (with respect to > monsters). So if a map has a special monster need it should probably be > possible to do even with random levels. Thats true - as long as you can change the current monsters, that works out fine. > > How about a few quick buttons, to which you could temporay assign a few > commonly used tiles for the current map. Like if you use stone floor tiles > and lava alot on a map. At least in the x11 editor, you could use the picks to do that - the picks were just normal maps, so I would think it would be possible to take the objects you will commonly use and make them into a picks type map (its just a flag which I think changes the behaviour on how things work). Steven Lembark wrote: > Going overboard for a moment, what about a design document > w/ suggestions from the better maps. It could include comments > on why the maps seem good and what the designers did do make > them work. There isn't a defined document, but in the server directory, there is the doc/Developers/mapguide which says a few things to do. Probably the biggest thing IMO that makes maps good are details/problem solving/paying attention to clues given (eg, not just go in and kill everything in sight). > > Might be worth [yet another] mailing list for dungeon designers > to discuss what they do and how. The archive of this list would > make a nice reference on how to do things properly and probably > give some good feedback to the map-designer-tool maintainers on > how to improve that also. There is a crossfire-maps mailing list at sourceforge. Not used very much at current time. I think there is probably a large amount of cross subscriber membership. From andi.vogl at gmx.net Wed Apr 3 09:30:02 2002 From: andi.vogl at gmx.net (Andreas Vogl) Date: Thu Jan 13 18:04:14 2005 Subject: [CF List] editor features (RE: level & exp) Message-ID: <27819.1017847802@www33.gmx.net> Several feature request for the JavaEditor have been issued and I'd like to reply with my thoughts about them: > > How about a few quick buttons, to which you could temporay assign > > a few commonly used tiles for the current map. Like if you use > > stone floor tiles and lava alot on a map. > > At least in the x11 editor, you could use the picks to do that [...] Yes, pickmaps are indeed missing in the JavaEditor. However, I don't want them to be all popup windows like in Crossedit, clogging the entire screen. Therefore I plan to integrate them into the framework which is going to be a bit difficult. While I'd love to have pickmaps, there's a line of other things which I consider of higher priority atm. > [...]And in the Java editor, a "fill below" option like the > old X11 editor had. True, that would be helpful. > A random level monster designer, that makes files to put under > the styles/ directory. These style maps are ordinary Crossfire maps. The best way to edit these is by using the map editor directly. A special "design-interface" for these style maps could provide additional help, but seems a lot of work for little gain. > Maybe there could be templates for commonly used map mechanisms, > like a 1-8 randomizer; spikes,boulder and 8 buttons. I know > these aren't really hard to make, but if you're new to map making > a collection of map mechanisms could at least give you some ideas > on what is possible. (or just a machanism gallery in the help section) At least for me, templates for map mechanisms seem too complicated to realize in the Editor atm. Maybe at a later point when all basic things are done... Anyways, a map gallery with simple working examples appears to be more practical - and simple to do. > > [...] what about a design document w/ suggestions from the better > > maps. It could include comments on why the maps seem good [...] > > There isn't a defined document, but in the server directory, there > is the doc/Developers/mapguide which says a few things to do. I think the best thing we can do is provide an Editor which makes map-creation a simple, exciting and entertaining process. There's not much use IMO trying to "hammer" into people's heads what a good map is and what they *must* do when creating maps. It's not that people don't know what a good map is - The question is: How hard is it to create such maps, and how many people are both able and willing to do it with the existing tools? Andreas -- GMX - Die Kommunikationsplattform im Internet. http://www.gmx.net From scott at campy.tymnet.com Wed Apr 3 12:22:13 2002 From: scott at campy.tymnet.com (Scott Wedel) Date: Thu Jan 13 18:04:14 2005 Subject: [CF List] editor features (RE: level & exp) Message-ID: <200204031822.LAA01498@moots.tymnet.com> >While I'd love to have pickmaps, there's a line of other things >which I consider of higher priority atm. I think a roadmap for the map editor, the CF server and the CF client would be useful. Presumably, it'd just be a list of the projects that are important that the primary developer(s) intend on doing. Roadmaps help prevent developers from implementing features that no one else cares about and providing encouragement for completing features that are highly anticipated. >> There isn't a defined document, but in the server directory, there >> is the doc/Developers/mapguide which says a few things to do. > >I think the best thing we can do is provide an Editor which >makes map-creation a simple, exciting and entertaining process. >There's not much use IMO trying to "hammer" into people's heads >what a good map is and what they *must* do when creating maps. >It's not that people don't know what a good map is - The question >is: How hard is it to create such maps, and how many people >are both able and willing to do it with the existing tools? I think the tools for creating a map is a similar situation as having a computer language. The ability to specify and create definitely exists. The challenge for someone wishing to create a CF map is that a truly helpful style and techniques guide does not exist. It would be like learning C programming from the ANSI C language spec. A document showing the proper way to do certain things in a map would be helpful. It would also serve as a spec as how particular map features are supposed to work so maps don't rely upon what others consider a bug. Also, if experienced map designers contributed a helpful hints section then that would be helpful. A truly powerful map creator would include options for things like one way doors and automatically create the inaccessible mechanical room with the button, spikes, boulder and links (or whatever method) needed for a one way door and other complicated, interesting map features. From temitchell at sympatico.ca Mon Apr 8 21:24:20 2002 From: temitchell at sympatico.ca (Todd Mitchell) Date: Thu Jan 13 18:04:14 2005 Subject: [CF List] SDL Client Message-ID: <001301c1df6d$a821c7e0$0a02a8c0@kameria> I picked up the SDL client from /~michtoen (thanks) and can fire it up - but how can I change the server list - it seems to only pick up localhost or the metaserver. There is no where I can see to edit in my crossfire server address. Is the SDL client the main push now, how close is it to working? The DX client is really tickin me off (the cache and DX is buggy for me in general) and I need a good, simple to install client for Win32 if I expect to lure people into playing. Also what is the deal with the ISO arches vs the regular arches? I have been working on a friend of mine to help out with some graphics but don't want them all to be obsolete due to format changes in the near future or unusable since the ISO are not being pushed for some time. (I did make an pretty crystal ball, but gave up on spiffin up the poor pirates - I am not an artist). I noticed that lots of the ISO arches were the same as the .clsc. (clasic vs base?) arch images. There did not seem to be a whole lot of ISO in the set up on michtoen's directories. Is there a more complete ISO somewhere? Yadda Yadda - anyway I like the cartoony arches - I would like to see more in this vein (the Wraith is great). Too bad they are being depriciated but I can see the need for visual consistancy. Anyway that's it for today - thanks -Todd From dmaddox099 at yahoo.com Mon Apr 8 23:35:17 2002 From: dmaddox099 at yahoo.com (Donald J. Maddox) Date: Thu Jan 13 18:04:14 2005 Subject: [CF List] unsubscribe dmaddox099@yahoo.com Message-ID: <20020409043517.61332.qmail@web12508.mail.yahoo.com> __________________________________________________ Do You Yahoo!? Yahoo! Tax Center - online filing with TurboTax http://taxes.yahoo.com/ From mwedel at sonic.net Tue Apr 9 02:27:53 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:04:14 2005 Subject: [CF List] SDL Client References: <001301c1df6d$a821c7e0$0a02a8c0@kameria> Message-ID: <3CB297F9.4030304@sonic.net> Todd Mitchell wrote: > I picked up the SDL client from /~michtoen (thanks) and can fire it up - but > how can I change the server list - it seems to only pick up localhost or the > metaserver. There is no where I can see to edit in my crossfire server > address. Is the SDL client the main push now, how close is it to working? > The DX client is really tickin me off (the cache and DX is buggy for me in > general) and I need a good, simple to install client for Win32 if I expect > to lure people into playing. Best I know, the SDL client is not currently being developed. MT put it into CVS (not sure if it is the latest of what he was working on or not), but generally speaking, I don't think anyone else has done much (if any) work on it - the unix users/developers were generally happier to continue to work on the gtk clients. My granted limited experience with SDL is that it is a very low level interface - this means that if you want to have scrollbars, you need to make your own widget to do so. I'm not a windows user/developer myself, but I know some people have mentioned that there is a windows gtk port. Someone seeing how feasible it might be to make the gtk client compile on windows (and release a windows version of it) may be interesting. If work on the SDL client is serious, I would suggest it gets merged into the existing 'unix' client setup, if possible, as then it could share more of the common code, and if something is added there, then everyone benefits (where as right now, if I make a change to the unix clients, the sdl client gets no benefit). > > Also what is the deal with the ISO arches vs the regular arches? I have > been working on a friend of mine to help out with some graphics but don't > want them all to be obsolete due to format changes in the near future or > unusable since the ISO are not being pushed for some time. (I did make an > pretty crystal ball, but gave up on spiffin up the poor pirates - I am not > an artist). I noticed that lots of the ISO arches were the same as the > .clsc. (clasic vs base?) arch images. There did not seem to be a whole lot > of ISO in the set up on michtoen's directories. Is there a more complete > ISO somewhere? The ISO arches were started by MT. Iso crossfire has split from 'main' (flat) crossfire (for lack of a better term) several months back. Iso crossfire is registered at sourceforge - I'm not sure of its current status. Currently, the iso images/archs are not progressing in the flat crossfire. There is a iso_arch directory in CVS. That started off from the main crossfire arch, and iso images put in as they were done, which is why it is not as complete. Plus, my understanding was that a fair number of the 'flat' images would work just fine in the iso layout (eg, most objects). In theory, it could be possible to make the iso another alternate image set (like the 'classic' one is right now). There are some complications to this - ignoring for the moment that the current server still breaks apart big objects into smaller images (which do not re-assemble properly in iso - that will get fixed some day), there are also issues of images/archs between the two sets not matching the same footprint, eg, in the iso set, a titan for example would have a smaller footprint (basically where is feet are), where as in the flat set, its footprint is basically the entire area the image is. > Yadda Yadda - anyway I like the cartoony arches - I would like to see more > in this vein (the Wraith is great). Too bad they are being depriciated but > I can see the need for visual consistancy. The two image sets currently in crossfire (main/base and the 'classic', which is a mix of the more cartoony looking images and non scaled xpm images) are likely to remain indefinately. Unfortunately, to the best of my knowledge, only the unix clients really support playing with the other set. From quinet at gamers.org Wed Apr 10 08:01:58 2002 From: quinet at gamers.org (Raphaël Quinet) Date: Thu Jan 13 18:04:14 2005 Subject: [CF List] SDL Client In-Reply-To: <3CB297F9.4030304@sonic.net> References: <001301c1df6d$a821c7e0$0a02a8c0@kameria> <3CB297F9.4030304@sonic.net> Message-ID: <20020410150158.0fb700cd.quinet@gamers.org> On Tue, 09 Apr 2002 00:27:53 -0700, "Mark Wedel" wrote: > Todd Mitchell wrote: > > [...] Is the SDL client the main push now, how close is it to working? > > The DX client is really tickin me off (the cache and DX is buggy for me in > > general) and I need a good, simple to install client for Win32 if I expect > > to lure people into playing. > > My granted limited experience with SDL is that it is a very low level > interface - this means that if you want to have scrollbars, you need to make > your own widget to do so. It is possible (as explained on the SDL site) to embed an SDL area inside a GTK+ widget. I do not know how much would be gained from that, because limiting the usage of SDL to the map area and maybe the inventory would probably not bring many benefits compared to the GTK+ client, but this should be possible anyway. > I'm not a windows user/developer myself, but I know some people have mentioned > that there is a windows gtk port. Someone seeing how feasible it might be to > make the gtk client compile on windows (and release a windows version of it) may > be interesting. GTK+ 2.0 shoud compile "out of the box" on Windows. It should not be too hard to adapt the code written for GTK+ 1.x to the 2.x API. Another option is to use the hacked version of GTK+ 1.3 for Windows that was used to compile the Windows version of the GIMP. Follow the links from http://www.gimp.org/win32/ But the best long-term option is probably to make sure that the Crossfire client uses GTK+ 2.0 and follows the portability guidelines so that it could compile easily on all platforms (UNIX, Windows, MacOS X and maybe even OS/2, although the last one may require some work). -Raphael From Kimmo.Hoikka at Digia.com Wed Apr 10 14:54:24 2002 From: Kimmo.Hoikka at Digia.com (Kimmo Hoikka) Date: Thu Jan 13 18:04:14 2005 Subject: [CF List] draining Message-ID: <3CB49870.5060307@Digia.com> Hi there seems to be something badly wrong with the draining code at the moment. I have been recently killed twice (first time by a lich and second time by a demilich) with a single hit and at the same time lost all exp in all categories (first time from level 40 and second time from 36). Both times I have hit the monster once and he hits once and that single hit drains all exp and kills at once... I play a dragon and do not have that much prot in draining but still, a single hit should not drain 40 levels... rather frustrating feature -- ___ <@,@> Kimmo Hoikka - www.hoikka.com [`-'] Pellonm?enraitti 3 as 8, 53850 Lpr -"-"- +358(0)40 738 0747 From mwedel at sonic.net Thu Apr 11 00:44:40 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] SDL Client References: <001301c1df6d$a821c7e0$0a02a8c0@kameria> <3CB297F9.4030304@sonic.net> <20020410150158.0fb700cd.quinet@gamers.org> Message-ID: <3CB522C8.2060500@sonic.net> Raphakl Quinet wrote: > On Tue, 09 Apr 2002 00:27:53 -0700, "Mark Wedel" wrote: > > It is possible (as explained on the SDL site) to embed an SDL area inside a > GTK+ widget. I do not know how much would be gained from that, because > limiting the usage of SDL to the map area and maybe the inventory would > probably not bring many benefits compared to the GTK+ client, but this > should be possible anyway. In fact, the GTK client already does that for the map drawing window (can do that - it's optional depending of the -sdl option is used or not). At least on the unix side, it does improve performance a bit. > GTK+ 2.0 shoud compile "out of the box" on Windows. It should not be too > hard to adapt the code written for GTK+ 1.x to the 2.x API. Another option > is to use the hacked version of GTK+ 1.3 for Windows that was used to > compile the Windows version of the GIMP. Follow the links from > http://www.gimp.org/win32/ Moving to GTK 2.0 will need to happen sooner or later. I can't imagine that there should be too much work involved in the change, but who knows. > But the best long-term option is probably to make sure that the Crossfire > client uses GTK+ 2.0 and follows the portability guidelines so that it > could compile easily on all platforms (UNIX, Windows, MacOS X and maybe > even OS/2, although the last one may require some work). Ignoring the graphics aspect (which shouldn't be an issue if the toolkit is supported on the other platforms), most of the client is simple C code. Things that may be issue are path names (and anything that does a getenv call), and possible the socket code, but that later should be posix as is. From quinet at gamers.org Thu Apr 11 05:25:57 2002 From: quinet at gamers.org (Raphaël Quinet) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] SDL Client In-Reply-To: <3CB522C8.2060500@sonic.net> References: <001301c1df6d$a821c7e0$0a02a8c0@kameria> <3CB297F9.4030304@sonic.net> <20020410150158.0fb700cd.quinet@gamers.org> <3CB522C8.2060500@sonic.net> Message-ID: <20020411122557.6ed0374a.quinet@gamers.org> On Wed, 10 Apr 2002 22:44:40 -0700, "Mark Wedel" wrote: > Rapha?l Quinet wrote: > In fact, the GTK client already does that for the map drawing window (can do > that - it's optional depending of the -sdl option is used or not). At least on > the unix side, it does improve performance a bit. Well, this just shows that I haven't been following the development of the GTK client since last year. I should have checked the "-sdl" option before posting (there is no such option in the rather old version that I am using). > Moving to GTK 2.0 will need to happen sooner or later. I can't imagine that > there should be too much work involved in the change, but who knows. This is reasonably easy. It should be possible to prepare the transition by compiling the current version using GTK+ 1.2.10 with the global symbol GTK_DISABLE_COMPAT_H. If everything works, then the code can be compiled with GTK+ 2.0 with the compatibility options, and then later without them (disabling the deprecated APIs). -Rapha?l From migeot_o at epita.fr Sat Apr 13 04:59:26 2002 From: migeot_o at epita.fr (Olivier Migeot) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] ISO? Message-ID: <20020413115926.650f44e6.migeot_o@epita.fr> Few questions about ISO... * How can I set an iso-server? What should I tweak from the original package to do it? * Why can't the CVS version of the iso-client display map??? Thanks -- Olivier Migeot, Etudiant ING1 "D?sol?, pas ce soir j'ai la migraine." (COWmasutra, page 2) From quinet at gamers.org Mon Apr 15 09:26:45 2002 From: quinet at gamers.org (Raphaël Quinet) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] Map reset time (was: New To Crossfire) In-Reply-To: <3CA54965.8EDC2571@sonic.net> References: <20020329220545.EDAC16B65A@mailgw.onshore.com> <20020329224334.GA29902@mids.student.utwente.nl> <3CA54965.8EDC2571@sonic.net> Message-ID: <20020415162645.2437e713.quinet@gamers.org> On Fri, 29 Mar 2002 21:13:09 -0800, "Mark Wedel" wrote: > Joris Bontje wrote: > > Some maps, for instance pupland' raffle1 is very popular because of the > > specific enemies you find there.. There are often requests to the > > dungeon master to manually reset it. With more people you will have more > > of these problems. I think shortening the reset time isnt good for > > everything, having more maps is better. > > Yep - and duplicating the map probably doesn't solve the problem (Eg, have a > raffle1a, raffle1b, all the same content but different instances). In that > case, the player may just do them in order since if they liked the first one > for hte monsters it contains, they probably like the second one with the same > monsters. While reading this old thread, I came up with an idea that could solve this problem: duplicate the maps, but make sure that a player who visits and/or who solves one of these maps cannot visit the other ones within the next hour or so (using half of the map reset time should be a good value for this "temporary ban"). This could be done by introducing a time-limited object in the player's inventory. Using the usual inventory checks, the player would be prevented from entering the other maps until the invisible object has expired. Just like some of the invisible keys/pass/... that are used in many maps, except that the object would be time-limited in this case. This should not be too hard to implement: the expiration time would have to be set when the object is added the the player's inventory. When the current time (server time) is greater than the expiration time, then the object is removed from the inventory. In fact, the object does not have to be removed precisely when it expires, because that would require frequent tests on all objects in the inventory. Instead, the object can remain in the inventory until there is an inventory test for this type of invisible objects. > Many maps have a problem in that they don't reset if anyone visits them before > they would reset. Eg, if raffle1 is due to reset at 1 pm, and someone visits it > at 12:45 pm, now it won't reset to 2:45 pm. This is controllable in the maps > themselves, and all shops ignore that visit factor, but those are about the only > that do. > > The reason behind that is that it could take more than 2 hours to solve a > dungeon, and you don't want the early parts resetting on you. Actually, the real problem is not the fact that the reset time is extended if someone re-visits the map too early. As you mentioned, this is a very useful feature, especially because some people take longer than others to solve the same dungeon, so customizing the reset time for the maps would not be sufficient. For most maps, extending the reset time after each visit is a good idea. The real problem is that the players have no way to know if the map has been reset or not before entering it. And if they enter it too early, then the reset time is extended. If there was any way for a player to know if the map that they are about to enter has been visited recently, then some of these issues would not exist at all. I suggest the following solution: introduce a new archetype for exits, which would change faces depending on whether the target map is currently in memory (or swapped out) or if it has been reset. The difference between the images could be minor (light coming from a door or window, position of the door handle, sign added on the door, ...). The players would learn what the differences are, and after a while they would avoid entering the maps that haven't been reset yet. -Rapha?l From scott at campy.tymnet.com Mon Apr 15 19:29:18 2002 From: scott at campy.tymnet.com (Scott Wedel) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] Map reset time (was: New To Crossfire) Message-ID: <200204160029.SAA08274@moots.tymnet.com> The map reset logic is fundamentally a kludge. The intent is to have maps reset so they can be played again while allowing a player deep in a dungeon get out without facing fresh maps. The kludge is to extend the reset time whenever a map is visited and to have the map reset timeout longer than what it'd take to complete the dungeon. A better scheme for resetting maps would be to note what maps are part of a connected set of maps. Then the map reset logic could decline to reset any of the connected maps if a player is on any of the maps (letting a player in a dungeon get out) and set a relatively short reset timeout if the maps are unoccupied. As for the current kludge, it could be further kludged to extend the map reset timeout only after a character makes some number of moves in the map. That'd allow a player to see that a map is unchanged and immediately leave without changing the map reset timeout. > Introduce a new archetype for exits, which would change faces depending on > whether the target map is currently in memory (or swapped out) or if it > has been reset. Absolutely a terrible idea. The map reset logic should be utterly invisible to players. Players should only know that maps with dead monsters and so on means another player was there recently. From mwedel at sonic.net Tue Apr 16 00:28:49 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] Map reset time (was: New To Crossfire) References: <200204160029.SAA08274@moots.tymnet.com> Message-ID: <3CBBB691.5020401@sonic.net> Scott Wedel wrote: > A better scheme for resetting maps would be to note what maps are part of a > connected set of maps. Then the map reset logic could decline to reset any of the > connected maps if a player is on any of the maps (letting a player in a dungeon > get out) and set a relatively short reset timeout if the maps are unoccupied. Yep - this makes a lot more sense. The reset time for unoccupied maps could be relative short (10 minutes let say for maps in town - enough time for a player currently working on the map to make some visits to shops to buy/sell extra stuff. The reset time should probably be related to how close/far the map is to various services. The easiest way to do this would probably be to add a field in the map structure called something like 'related_maps' or 'map_series'. When the map logic is about to reset a map, it looks for any other maps in its series, and if any have a greater reset time than the map to reset, the current map is reset to the timeout on the one with the higest timeout. The effect of this will to that eventually all maps in a series will get the same reset time, at which point they all reset. > As for the current kludge, it could be further kludged to extend the map reset > timeout only after a character makes some number of moves in the map. That'd > allow a player to see that a map is unchanged and immediately leave without > changing the map reset timeout. This could be done. However, if the reset time for unoccupied maps is relatively short, players could literally guard the map - "don't enter yet - I'm waiting for it to reset". >>Introduce a new archetype for exits, which would change faces depending on >>whether the target map is currently in memory (or swapped out) or if it >>has been reset. >> > > Absolutely a terrible idea. The map reset logic should be utterly invisible > to players. Players should only know that maps with dead monsters and so on > means another player was there recently. But realistically, players do care about the status. If a player is waiting for a map to reset, the fact that it is empty or not is apparant to them. And they can always use the 'maps command to see when the map will reset or whatever else. However, changing the image is trickier, as there is no convenient way to find what leads to a map. So for example, the server may not the pupland1 has reset, but it doesn't know what leads to it. So for an image to change, the exit object that leads to the map would need to re-examine its exit to see the status of it. Doing this is not hard, but doing it in a timely enough fashion would be. Probably a better approach would be that if you examine the exit, it tells you the status (eg, this map is active, and there are x players in it, or this map will reset at 10:18 pm (x minutes from now), etc). This also provides real useful information - eg, I should come back half an hour from now or whatever. This basically provides a more convenient interface than the maps command, which is what the player are probably looking at anyways. From scott at campy.tymnet.com Tue Apr 16 01:10:32 2002 From: scott at campy.tymnet.com (Scott Wedel) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] Map reset time (was: New To Crossfire) Message-ID: <200204160610.AAA08577@moots.tymnet.com> >>>Introduce a new archetype for exits, which would change faces depending on >>>whether the target map is currently in memory (or swapped out) or if it >>>has been reset. >>> >> >> Absolutely a terrible idea. The map reset logic should be utterly invisible >> to players. Players should only know that maps with dead monsters and so on >> means another player was there recently. > > > But realistically, players do care about the status. If a player is waiting >for a map to reset, the fact that it is empty or not is apparant to them. And >they can always use the 'maps command to see when the map will reset or whatever >else. But that is an unfortunate artifact of the game's design becoming an user interface issue. The only place that changing maps should be obvious is when going from outdoors to indoors (change in scale from a house being same size as the character to becoming a large room). It certainly should not be encouraged to know where in a series of caves, for instance, are the boundaries between maps. >> As for the current kludge, it could be further kludged to extend the map reset >> timeout only after a character makes some number of moves in the map. That'd >> allow a player to see that a map is unchanged and immediately leave without >> changing the map reset timeout. > This could be done. However, if the reset time for unoccupied maps is > relatively short, players could literally guard the map - "don't enter yet - I'm > waiting for it to reset". How can any map reset logic avoid this issue? There are unsolvable potential conflicts of one player entering and leaving in an attempt to complete a set of maps vs another player wanting the maps to reset in order to start that set of maps. The whole idea of maps needing to reset quicker because everyone wants to do a particular map (presumably often for another time) suggests deeper problems with the game. Players should want to and be encouraged to explore, not do the same map yet again. Because the map reset time is known that allows players to hang around waiting for it to reset. Maybe the reset logic should instead be that a map will never be reset until after a fixed time since most recent activity and then a .1% per minute of being reset (and resetting adjacent maps also idle for long enough). That way once a map is cleaned out then players are better off going elsewhere than waiting for a map to reset. From Kimmo.Hoikka at Digia.com Tue Apr 16 01:34:45 2002 From: Kimmo.Hoikka at Digia.com (Kimmo Hoikka) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] Map reset time (was: New To Crossfire) References: <200204160610.AAA08577@moots.tymnet.com> Message-ID: <3CBBC605.9040701@Digia.com> > > >The whole idea of maps needing to reset quicker because everyone wants to do a >particular map (presumably often for another time) suggests deeper problems >with the game. Players should want to and be encouraged to explore, not do the >same map yet again. > I agree with that, better to make more maps and more quests than kludges for map resetting, remember also that a map-connecting parameter is missing from all current maps and there is plenty of them (>1000 map files in maps directory ). One example of a map people tend to run through over and over again is raffle1. I wonder if people are just lazy or what since there are dozens of maps with similar monsters in the game, enough for everyone. > Maybe the reset logic should instead >be that a map will never be reset until after a fixed time since most recent >activity and then a .1% per minute of being reset (and resetting adjacent maps >also idle for long enough). That way once a map is cleaned out then players >are better off going elsewhere than waiting for a map to reset. > Fixed reset has one problem: the map may reset while you are exploring it which is pretty nasty in the harder maps. I see no problem with the current map reset system so I wonder why it should be changed. As I recall this thread of discussion started with someone new to crossfire (as the topic still reminds) and people new to crossfire should learn to explore around the world to find all the maps of their level, raffle is not the only place to gain low level exp, it may be the nearest and easiest... -- Kimmo Hoikka Technology Manager, Architecture Digia Inc. Laserkatu 6, FIN - 53840 Lappeenranta E-mail: Kimmo.Hoikka@Digia.com Tel. 0424 7777 505 GSM: +358 40 7380747 ------------------------------------------------------------------ PRIVACY AND CONFIDENTIALITY NOTICE This message and any attachments are intended only for use by the named addressee and may contain privileged and/or confidential information. If you are not the named addressee you should not disseminate, copy or take any action in reliance on it. If you have received this message in error, please contact the sender immediately and delete the message and any attachments accompanying it. Digia does not accept liability for any corruption, interception, amendment, tampering or viruses occurring to this message. For more information, contact info@digia.com From mwedel at sonic.net Wed Apr 17 00:16:25 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] Map reset time (was: New To Crossfire) References: <200204160610.AAA08577@moots.tymnet.com> <3CBBC605.9040701@Digia.com> Message-ID: <3CBD0529.9050209@sonic.net> Kimmo Hoikka wrote: > I agree with that, better to make more maps and more quests than kludges > for map resetting, remember also that a map-connecting parameter is > missing from all current maps and there is plenty of them (>1000 map > files in maps directory ). One example of a map people tend to run > through over and over again is raffle1. I wonder if people are just lazy > or what since there are dozens of maps with similar monsters in the > game, enough for everyone. Note that off all the maps in the maps file, probably only a fairly small portion would need to be set up so they are linked together and reset at the same time. There may be several reasons raffle1 is so often used - it is easy to get to, may have a decent reward, and all the monsters are spawned by lots of generator. The later point means that if you just want to kill hill giants, you can go to that map and get an endless supply. > Fixed reset has one problem: the map may reset while you are exploring > it which is pretty nasty in the harder maps. I see no problem with the > current map reset system so I wonder why it should be changed. As I > recall this thread of discussion started with someone new to crossfire > (as the topic still reminds) and people new to crossfire should learn to > explore around the world to find all the maps of their level, raffle is > not the only place to gain low level exp, it may be the nearest and > easiest... Well, one thing that could certainly be improved is to not lengthen the reset time if a player isn't on it long enough - thus, if a player enters, sees its been cleared out, it doesn't extend the map reset time another 2 hours. However, this also gets tricky. You have a map like raffle1 where the main entry map doesn't have any monsters, so you need to go to the second map to see its status. So tuning the times is very tricky - you want to make sure that the map doesn't get unexpectedly lengthen because the player is just going to see its status, but at the same time, you don't want maps re-setting if a player who is in progress, and lets say cleared out the first two levels, zip through to say level 3 to continue where they left on - you don't really want levels 1 and 2 to reset. So to do that then requires that maps get linked up. I will note that such a link approach doesn't need to be done all at once - the maps with the most problems would get updated first. From andi.vogl at gmx.net Wed Apr 17 05:57:04 2002 From: andi.vogl at gmx.net (Andreas Vogl) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] Map reset time (was: New To Crossfire) References: <3CBD0529.9050209@sonic.net> Message-ID: <4753.1019041024@www36.gmx.net> My opinion is that we should not significantly lower reset times. Some maps are easier than others, eventually even "too easy" compared to the rest. Those get cleared out first, then they are empty. That is only fair IMO - it helps to rebalance the impact of such maps. Players are not supposed to keep repeating the same maps all over and over again. My favourite maps being cleared out has frequently led me to explore new areas. In the end, this often turned out to be a lot more fun than repeating my old, well-known maps. Besides, it is a fact that about 90% of the players spend 90% of their time in a 10% area of the crossfire world. No wonder that they face cleared- out maps! There are a lot of excellent maps with get hardly ever played just because they are somewhat further away from the common places. And if anyone thinks there are too few maps to play, then maybe it's just time for that person to sit down and design a bunch of new ones. :-) Andreas -- GMX - Die Kommunikationsplattform im Internet. http://www.gmx.net From lukasdi at gmx.de Wed Apr 17 17:37:30 2002 From: lukasdi at gmx.de (Luke) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] Levels, exp and stats (tewaking the mobs in common) Message-ID: <3CBDF92A.9010605@gmx.de> Hello y'all, i just wanna report a werid observation me and my friends made : We're playing crossfire since some years (remember the server crashing all 15 mins..jep that was the time we had begun to play that great game...). In the end all of us got better and made it to the maxlev after some days of immediate playing and the game has begun to bore us beside the fact that there are many quests, things and maps to explore in CF too...so we decided to tweak the stats of our mobs (cause the most part of the game is hack'n slay in a clever way): We had a lot of fun in tweaking all the stats * 3.(better said ATTRIBUTES like STR,DEX,INT...) The mobs became really hard again at all levels and the exp flew in tons...in other words the game made fun again ,but after a while we discovered strange phenomena (like soft walls couldnt be opened after they have been scratched one time..and so on) and sometimes the game crashes too... So we took out gdb, recompiled the 1.0 version with it and looked what happened when the server crashes. After that we really wondered why the server worked that long time without crashing at all :P The reason was , like you surly can imagine, that lots of stat-lookups and stat-computings have just been desiged to use a (too) short ranged table (capable to manage all stats from 1 to 30 i think).DEX made the most problems (game crashed sometimes when giants threw boulder and so on...) I can understand that this has been made to reduce the computing time but now its nearly impossible to raise the mobstats above 30. It would need to make bigger tables or rewrite a lot of the code... However i just wanted to report that. It would be great if you could change that in the future when you're on rewriting maybe that special parts of code. It was relly cool how to be very vulnerable at level 45, fighting against all mobs with really good eq. You could kill all of them but they killed you very fast too (just fair for great heroes i think). Anyways we died often but had still more fun than before (cause on the one hand it was hard to kill a mob but on the other hand you got 3*exp for that work). Lets say we had more respect to all kinds of mobs.... If you know a possibility to make the mobs hitting harder, move faster and cast real mean and mighty without changing their stats , so please let me know :) Thanks for reading. Farewells Luke. From scott at campy.tymnet.com Wed Apr 17 16:52:55 2002 From: scott at campy.tymnet.com (Scott Wedel) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] Levels, exp and stats (tewaking the mobs in common) Message-ID: <200204172152.PAA09658@moots.tymnet.com> >We had a lot of fun in tweaking all the stats * 3.(better said >ATTRIBUTES like STR,DEX,INT...). > >After that we really wondered why the server worked that long time >without crashing at all :P > >The reason was , like you surely can imagine, that lots of stat-lookups >and stat-computings have just been desiged to use a (too) short ranged >table (capable to manage all stats from 1 to 30 i think).DEX made the >most problems (game crashed sometimes when giants threw boulder and so >on...) Two thoughts on this: 1) It implies that CF server has an error in that can read in stats with illegal values. There should be error checking to prevent that. 2) It is an very interesting idea on how to make the game better. Monsters with sufficiently high stat bonuses (actual values are probably unknown due to reading past the end of tables) are reported to make the game interesting for characters of relatively high level. That suggests that maybe stat tables should be extended to say 100 so monsters can be made strong and quick enough to be a challenge. That also suggests that to keep the game challenging that the max stat for players should remain at 30. From temitchell at sympatico.ca Wed Apr 17 20:58:52 2002 From: temitchell at sympatico.ca (Todd Mitchell) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] Map reset time (was: New To Crossfire) References: <3CBD0529.9050209@sonic.net> <4753.1019041024@www36.gmx.net> Message-ID: <001901c1e67c$970b06e0$0a02a8c0@kameria> For sure. I'm fairly new to Crossfire myself but this seems real obvious - I don't find a problem with the map resets. I think that having more maps - more directions about where some of these maps are (for the lower levels) - and perhaps having multiple possible starting locations (pick a few developed cities and have a random placement server option to spread starting players out a bit) would be more fun for everyone than lowering map reset times. ----- Original Message ----- From: "Andreas Vogl" To: Sent: Wednesday, April 17, 2002 6:57 AM Subject: Re: [CF List] Map reset time (was: New To Crossfire) > My opinion is that we should not significantly lower reset times. > > Some maps are easier than others, eventually even "too easy" > compared to the rest. Those get cleared out first, then they are empty. > That is only fair IMO - it helps to rebalance the impact of such maps. > > Players are not supposed to keep repeating the same maps all over > and over again. My favourite maps being cleared out has frequently led > me to explore new areas. In the end, this often turned out to be a lot > more fun than repeating my old, well-known maps. > > Besides, it is a fact that about 90% of the players spend 90% of their time > in a 10% area of the crossfire world. No wonder that they face cleared- > out maps! There are a lot of excellent maps with get hardly ever played > just because they are somewhat further away from the common places. > And if anyone thinks there are too few maps to play, then maybe it's just > time for that person to sit down and design a bunch of new ones. :-) > > > Andreas > > -- > GMX - Die Kommunikationsplattform im Internet. > http://www.gmx.net > > _______________________________________________ > crossfire-list mailing list > crossfire-list@lists.real-time.com > https://mailman.real-time.com/mailman/listinfo/crossfire-list > From temitchell at sympatico.ca Wed Apr 17 21:37:04 2002 From: temitchell at sympatico.ca (Todd Mitchell) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] Levels, exp and stats (tewaking the mobs in common) References: <200204172152.PAA09658@moots.tymnet.com> Message-ID: <002701c1e681$ed2b6ba0$0a02a8c0@kameria> I made a FRP system (based loosely on the old Marvel Superheros system) that worked on this concept and it worked very well. It was highly stat driven and based on a percentile table but with the players capped at around 30 (+ or - with racial differences). It was great for making challenging encounters without going really heavy with the hitpoints or magic. (as an example - elves were npc's with a high agility and man they could move fast and shoot a bow... 1 elf was fairly easy, 5 a chore and 25 - no way buddy.) I have no idea how this would impact Crossfire, but the concept brought me back to those grand old days. ----- Original Message ----- From: "Scott Wedel" To: Sent: Wednesday, April 17, 2002 5:52 PM Subject: Re: [CF List] Levels, exp and stats (tewaking the mobs in common) > > >We had a lot of fun in tweaking all the stats * 3.(better said > >ATTRIBUTES like STR,DEX,INT...). > > > >After that we really wondered why the server worked that long time > >without crashing at all :P > > > >The reason was , like you surely can imagine, that lots of stat-lookups > >and stat-computings have just been desiged to use a (too) short ranged > >table (capable to manage all stats from 1 to 30 i think).DEX made the > >most problems (game crashed sometimes when giants threw boulder and so > >on...) > > Two thoughts on this: > 1) It implies that CF server has an error in that can read in stats > with illegal values. There should be error checking to prevent that. > > 2) It is an very interesting idea on how to make the game better. > Monsters with sufficiently high stat bonuses (actual values are > probably unknown due to reading past the end of tables) are reported > to make the game interesting for characters of relatively high level. > That suggests that maybe stat tables should be extended to say 100 so > monsters can be made strong and quick enough to be a challenge. That > also suggests that to keep the game challenging that the max stat for > players should remain at 30. > > _______________________________________________ > crossfire-list mailing list > crossfire-list@lists.real-time.com > https://mailman.real-time.com/mailman/listinfo/crossfire-list > From mwedel at sonic.net Thu Apr 18 00:38:06 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:04:15 2005 Subject: [CF List] Levels, exp and stats (tewaking the mobs in common) References: <200204172152.PAA09658@moots.tymnet.com> Message-ID: <3CBE5BBE.6070309@sonic.net> > In the end all of us got better and made it to the maxlev after some days of > immediate playing and the game has begun to bore us beside the fact that > there are many quests, things and maps to explore in CF too...so we decided > to tweak the stats of our mobs (cause the most part of the game is hack'n > slay in a clever way): Note IMO the really problem is that players can get to level 110 in three days. IMO, that is what should be fixed. Calls to increase max level or the max stats don't really fix that much. > > We had a lot of fun in tweaking all the stats * 3.(better said ATTRIBUTES > like STR,DEX,INT...) The mobs became really hard again at all levels and > the exp flew in tons...in other words the game made fun again ,but after a > while we discovered strange phenomena (like soft walls couldnt be opened > after they have been scratched one time..and so on) and sometimes the game > crashes too... I take it you basically did something like update the arch's so all the monster stats were 3 times tougher? I guess this works in your case, but this obviously is not a really good solution for most public servers. > The reason was , like you surly can imagine, that lots of stat-lookups and > stat-computings have just been desiged to use a (too) short ranged table > (capable to manage all stats from 1 to 30 i think).DEX made the most > problems (game crashed sometimes when giants threw boulder and so on...) I > can understand that this has been made to reduce the computing time but now > its nearly impossible to raise the mobstats above 30. It would need to > make bigger tables or rewrite a lot of the code... Just extend the tables. The main crossfire base can not reasonably accomdate everything that people may want to do with it - or to do so starts to make code that is a real pain to maintain (like 3 or 4 different stat tables or whatever else). Extending the tables shouldn't be really hard - they are in common/living.c, and are already defined to the MAX_STAT+1 size. > > However i just wanted to report that. It would be great if you could change > that in the future when you're on rewriting maybe that special parts of > code. There is no plan to increase the max_Stat, and thus no plan to increase the size of the tables. > > If you know a possibility to make the mobs hitting harder, move faster and > cast real mean and mighty without changing their stats , so please let me > know [:)] biggest thing would be to just increase the speed of the monsters. Increasing dam obviously increases damage. Increase maxsp (and starting sp) will make them cast more spells in most cases. > Two thoughts on this: 1) It implies that CF server has an error in that can > read in stats with illegal values. There should be error checking to > prevent that. There is - that is what the MAX_STAT value is for. But if you increase that value without increasing the tables, its not expected that bad things will happen. I will note that MAX_STAT is buried in define.h - it is not in config.h or otherwise place that suggest that is can just be modified and have everything work. > > 2) It is an very interesting idea on how to make the game better. Monsters > with sufficiently high stat bonuses (actual values are probably unknown due > to reading past the end of tables) are reported to make the game > interesting for characters of relatively high level. That suggests that > maybe stat tables should be extended to say 100 so monsters can be made > strong and quick enough to be a challenge. That also suggests that to keep > the game challenging that the max stat for players should remain at 30. If you don't change MAX_STATS, things work as expected. Note that the stats for monsters have different meaning than for players. Strength basically just amounts to a damage bonus. You can just increase the damage and get mostly the same effect (and/or wc so the monster can hit). I'm not sure what if anything dex really does for monsters - maybe some AC points, Can just as easily increase AC. I think con is used for hp regen, pow for mana regen. So for the most part, you don't really need high stats to make the monsters tougher, as monsters use native values inherent to them. From erhard.sanio at gmx.net Thu Apr 25 10:05:08 2002 From: erhard.sanio at gmx.net (erhard.sanio@gmx.net) Date: Thu Jan 13 18:04:16 2005 Subject: [CF List] Experience Categories Message-ID: <16264.1019747108@www20.gmx.net> Playing Crossfire for a while, I consider the chances to obtain experience in the different categories seriously imbalanced. As far as I see it, there are six categories reflecting a number of skills. Three of them, namely physical, intelligence, and wisdom, are combat oriented, while the other three, personality, agility, and mental, widely are not. Now it is more or less easy once one knows the game and the foes, to gain overall experience, mainly by fighting. Experience is scaling exponentially: some 1000 for the first level gain, then 2000, and so on. Later on, in level 40 or so, several million xp are necessary in order to gain a new level. Opponents are scaling exponentially, too, e.g. a kobold gives 1 xp or so, while a dragon may give some 100,000 xp, a retributioner or balrog even more. Weaponry, armament, stats, and general fighting Know-how are following this scheme: once one is sufficiently armed and shielded, knows the opponents and the methods of attack, defense, and flight, one is able to overcome the foes most times. The non-combat skills are scaling poorly if at all: Personality: singing: Ok, to some extent, it scales (first kobold, then goblins, ogres etc.). But i felt it virtually impossible to pacify anything above those monster levels. I fail to see that it will ever be possible to pacify even a fairy dragon or similar little beast - not to mention angels, demons, or hill giants. oratory: I never succeeded in orating to anybody Agility: disarm: Ok, I disarmed a shitload of traps. But especially as a young player, I died often thus suffering a net loss rather than gain. In higher levels, I am succeeding now most time. Yet, the reward is far too low to win anything with that: when you are level 42 slaying lots of retributioners, balrogs, or dragons, 5-50xp for a disarmed trap are nothing less than a challenge. Much more, any death will deprive you the gains of patient experience gain. So you will stagnate at best. stealing: Sure one may stand in the mid of a gang of monsters who use to pickup thus carry lots of stuff, trying to steal from everybody in the adjacent tiles. This works fine in raffle1 with goblins, and may give some 5,000-10,000 xp per hour if one is really busy. Fine though bit boring for low levels, but not being repeatable with even relatively harmless critters such as trolls - not to mention dragons or retributioners who will roast, chill, zap, or beat you to a pulp before you have stolen anything. hiding: not yet tried intensely, but seems similar. Mental: literacy: For a low level character, literacy grants some steady flow of a bit of mental xp, especially once the character obtained a library card. Identifying and reading spellbooks also helps a lot. So does identifying stuff with the literacy skill. smithing, Identifying stuff using the skills listed beneath is a great alchemy, help for general playing, and the gain of some xp is warmly woodsman, welcomed. But again: As a young player, you profit a bit in alchemy, terms of xp, but later, the gain is - in relationship to combat et alii gains - simply ridiculous. It is possible to gain some 10,000- 25,000 xp per hour by slaying, say skeletons in the raffle1, and identifying the remains and the loot. In the same time, a good player may have slain monsters with tens of millions of xp gain. Though the situation for mental is slightly better than for the others, the complaint still remains: xp does not scale. Identifying a winterblade does not considerably add more xp than identifying an orc's dagger does. As a result, you find level 110 players who are level 1 in personality, and level5-10 in agility and mental at best. You will encounter better values quite seldom. What should or might be done? First, possibilities to gain more xp, and especially gaining xp in an exponential scale as with fighting, seems highly desirable. This does not mean or imply that xp gain should be easy or without risk, on contrary. Yet, it should be possible to have a character with level 50 or more in mental, agility, or personality: a master bard, orator, thief, or sage. Maybe, minimum values in the non- combat abilities should be required in order to be possible to win further combat experience (and vice versa) once a scheme of better xp gain for non-combat skills has been implemented (e.g. one has to be at minimum level 20 or 30 in any categories in order to ascend to level 110). just some ideas. If I missed something, and it is already possible to gain noncombat xp better than i found out, forget my post. regards, es -- GMX - Die Kommunikationsplattform im Internet. http://www.gmx.net From henric at lysator.liu.se Fri Apr 26 03:58:13 2002 From: henric at lysator.liu.se (Henric Karlsson) Date: Thu Jan 13 18:04:16 2005 Subject: [CF List] Experience Categories In-Reply-To: <16264.1019747108@www20.gmx.net> Message-ID: On Thu, 25 Apr 2002 erhard.sanio@gmx.net wrote: > Playing Crossfire for a while, I consider the chances to obtain experience > in the different categories seriously imbalanced. As far as I see it, there > are six categories reflecting a number of skills. > > Three of them, namely physical, intelligence, and wisdom, are combat > oriented, while the other three, personality, agility, and mental, widely are not. > [...] > > The non-combat skills are scaling poorly if at all: > True, they do scale, but unlike combat skills like melee you can't improve the result much with equipment. Take singing as an example, I find it that either you sing and calm monsters or you don't succeed at all. If you wield a sword and bring enough healing potions you can kill significantly tougher monsters. > Personality: > singing: Ok, to some extent, it scales (first kobold, then goblins, ogres > etc.). But i felt it virtually impossible to pacify anything above > > those monster levels. I fail to see that it will ever be possible > to pacify even a fairy dragon or similar little beast - not to > mention angels, demons, or hill giants. You just need more levels in personality. > oratory: I never succeeded in orating to anybody You need to pacify monsters before you can orate them. Try to orate a cleaning woman, you should succed even at 0 xp i Personality. > > > Agility: > disarm: Ok, I disarmed a shitload of traps. But especially as a young > player, I died often thus suffering a net loss rather than gain. > In higher levels, I am succeeding now most time. Yet, the reward > is far too low to win anything with that: when you are level 42 > slaying lots of retributioners, balrogs, or dragons, 5-50xp for a > disarmed trap are nothing less than a challenge. Much more, any > death will deprive you the gains of patient experience gain. So > you will stagnate at best. There are higher level traps out there that would give you more xp. Still not compareable too 100k xp you can get from monsters though. > stealing: Sure one may stand in the mid of a gang of monsters who use [...] Stealing scale nicely when monsters get tougher. Same problem as with singing though. Either you can steal or you can't. > Mental: > literacy: For a low level character, literacy grants some steady flow of > a bit of mental xp, especially once the character obtained a > library card. Identifying and reading spellbooks also helps > a lot. So does identifying stuff with the literacy skill. > smithing, Identifying stuff using the skills listed beneath is a great > alchemy, help for general playing, and the gain of some xp is warmly > woodsman, welcomed. But again: As a young player, you profit a bit in > alchemy, terms of xp, but later, the gain is - in relationship to combat > et alii gains - simply ridiculous. It is possible to gain some 10,000- > 25,000 xp per hour by slaying, say skeletons in the raffle1, and > identifying the remains and the loot. In the same time, a good > player may have slain monsters with tens of millions of xp gain. Try use some alchemy recipies. You still get rather low xp even for complicated recipies, but this is slightly compensated with, that you can make large batches. > > Though the situation for mental is slightly better than for the others, the > complaint still remains: xp does not scale. Identifying a winterblade does > not considerably add more xp than identifying an orc's dagger does. > I find mental skill to be the hardest to gain high xp lvls in. > As a result, you find level 110 players who are level 1 in personality, and > level5-10 in agility and mental at best. You will encounter better values > quite seldom. > The problem here is that few (none ?) quests or maps require any other skills than combat skills to finnish. [...] > just some ideas. If I missed something, and it is already possible to gain > noncombat xp better than i found out, forget my post. It is possible but it's alot harder than to gain combat xp. /Henric From andi.vogl at gmx.net Fri Apr 26 13:13:45 2002 From: andi.vogl at gmx.net (Andreas Vogl) Date: Thu Jan 13 18:04:16 2005 Subject: [CF List] Experience Categories In-Reply-To: <16264.1019747108@www20.gmx.net> Message-ID: <000001c1ed4e$2018e920$c86ebb81@gizmo> in reply to Erhard Sanio: > Playing Crossfire for a while, I consider the chances to > obtain experience in the different categories seriously > imbalanced. [...] The reason why the non-combat skills are so broken is that they are handled completely in the wrong way. For some reason, many Crossfire developers seem to avoid mapmaking. All skills in Crossfire are designed to work on any monster, on any map. Preferably in a way that nobody has to even think about it, and so that no new maps are needed. But it is never going to work that way! As Henric Karlsson stated in his previous post: Special skills need special maps. Currently, all maps are designed for the combat skills. We can never have a properly working stealing, hiding or mental skill when there are no maps supporting those. Additionally, the skill system must also support the creation of such special maps. For example: If there was a value to tune the difficulty of stealing from a particular monster, I could make a good quest for thieves. If there was some way to trigger events when a stealing-attempt failed, I could make even better stealing quests. Same applies for singing: Give me a way to tune the difficulty of pacifying/orating a monster, I create one that is a terrible fighter but easy-prey for bard-skills. Only in that way can non-combat skills ever get on one level with the combat skills. There must be places/quests where non-combat skills offer real advantages. And it must be possible to balance them *independent* from the combat aspect. Monsters must be able to show different "vulnerabilities" for defined skills. There is no way to make skills like stealing or singing work on the pure combat maps we currently have. Well, in fact, there is one: Create a way to sing or steal monsters to death. Then, create weapons for singing/stealing like "flute of terror", and "lockpicks of doom". But wait - doesn't that end up in combat skills... ? :-) Andreas From scott at campy.tymnet.com Fri Apr 26 13:49:32 2002 From: scott at campy.tymnet.com (Scott Wedel) Date: Thu Jan 13 18:04:16 2005 Subject: [CF List] Experience Categories Message-ID: <200204261849.MAA14176@moots.tymnet.com> >From: "Andreas Vogl" >There is no way to make skills like stealing or singing >work on the pure combat maps we currently have. >Well, in fact, there is one: >Create a way to sing or steal monsters to death. Hopefully that is meant as a joke. I was with you all the way upto that point. The point of skills being distinct from combat is that they are *not* combat skills, but allow other means of solving problems. It could be possible for a particularly stealthy character to get treasure from a map without ever defeating a monster. Your suggestions on better integrating skills into the game are some of the best ideas I've seen here in a long time. The archetypes should allow specifying stealing, singing and hiding resistance levels. That would allow a mapmaker to put items needed for solving a dungeon on a powerful monster that is vulnerable to stealing or being pacified. And a mapmaker could make the monsters in a particular dungeon have extra difficulty seeing hidden players. Special skills do not require special maps. It does require existing maps are adjusted when applicable. Pirates in a drinking area should be particularly vulnerable to singing and oratory. From andi.vogl at gmx.net Fri Apr 26 14:46:53 2002 From: andi.vogl at gmx.net (Andreas Vogl) Date: Thu Jan 13 18:04:16 2005 Subject: [CF List] Experience Categories In-Reply-To: <200204261849.MAA14176@moots.tymnet.com> Message-ID: <000101c1ed5b$1ed69230$c86ebb81@gizmo> in reply to Scott Wedel: > > Create a way to sing or steal monsters to death. > > Hopefully that is meant as a joke. I was with you all the > way up to that point. LOL, of course this was meant as a joke! ;) I hope nobody would ever seriously want to implement what I have written in those last lines. > Your suggestions on better integrating skills into the game are > some of the best ideas I've seen here in a long time. The > archetypes should allow specifying stealing, singing and hiding > resistance levels. That would allow a mapmaker to put items needed > for solving a dungeon on a powerful monster that is vulnerable to > stealing or being pacified. And a mapmaker could make the monsters > in a particular dungeon have extra difficulty seeing hidden players. Yes, this is exactly what I had in mind. > Special skills do not require special maps. It does require > existing maps are adjusted when applicable. Pirates in a drinking > area should be particularly vulnerable to singing and oratory. That's true. Modifying existing maps is fine and makes a lot of sense in this case. Andreas From Kimmo.Hoikka at Digia.com Sat Apr 27 05:02:45 2002 From: Kimmo.Hoikka at Digia.com (Kimmo Hoikka) Date: Thu Jan 13 18:04:16 2005 Subject: [CF List] Experience Categories References: <000101c1ed5b$1ed69230$c86ebb81@gizmo> Message-ID: <3CCA7745.3000806@Digia.com> Hi! To the first message in this thread I just wanted to say that the only category I have never (without party cheating) managed to make to level 110 is mental. Stealing from and singing to calm retributioners and arch angels gives really fast exp in agility and personal categories (high death rate also :). high level treasure chests in random maps give somewhat experience to mental but not with same rate, perhaps the levels could be adjusted a bit. To the personality skills I have an additional idea: the game has a few bagpipes, make then give a skill of musicant. also an artifact bagpipe or other instrument would be nice that gives some attribute bonus to the skill related with personality skills (charisma?) to improve the ability to calm monsters with that skill. All skills have related items that improve the ability to use that skill, so why not personality skills also, perhaps a bullhorn to give oratory/singing a boost also ;). Mental is a bit tougher, reading glasses would be a good item to give the ability to find traps better and read higher level books, the game also needs more high level things for mental skills to get exp. An additional mental skill could be telekinesy, moving obstacles and perhaps monsters? that could give a good way to get exp as monsters already have levels. Moving a big dragon would require high levels but would grants lots of exp. This skill would also give interesting new ways of game play... Another additional skill idea I have had for a while, handicraft: the ability to manufacture items from raw materials. Making containers, weapons and armour from leather, wood and iron would be really interesting, with better level you would be able to get some bonuses to them, lighter weapon, bag of holding, tougher armour, etc. the skill would be similar to alchemy so I guess it would not require lots of code. If someone gives me the source code for the windows server I could code it myself, as I am too lazy to install linux at the moment :( and for the last thing, why could't someone sing a monster to death? Finnish folklore has a guy (v?in?m?inen) who sang his foes to swamp and thus killed them, why couldn't a monster choke to his laughter? ;) Andreas Vogl wrote: >in reply to Scott Wedel: > >>>Create a way to sing or steal monsters to death. >>> >>> >>Hopefully that is meant as a joke. I was with you all the >>way up to that point. >> >> > >LOL, of course this was meant as a joke! ;) >I hope nobody would ever seriously want to implement >what I have written in those last lines. > > > >>Your suggestions on better integrating skills into the game are >>some of the best ideas I've seen here in a long time. The >>archetypes should allow specifying stealing, singing and hiding >>resistance levels. That would allow a mapmaker to put items needed >>for solving a dungeon on a powerful monster that is vulnerable to >>stealing or being pacified. And a mapmaker could make the monsters >>in a particular dungeon have extra difficulty seeing hidden players. >> >> > >Yes, this is exactly what I had in mind. > > > >>Special skills do not require special maps. It does require >>existing maps are adjusted when applicable. Pirates in a drinking >>area should be particularly vulnerable to singing and oratory. >> >> > >That's true. Modifying existing maps is fine and makes a lot >of sense in this case. > > >Andreas > > >_______________________________________________ >crossfire-list mailing list >crossfire-list@lists.real-time.com >https://mailman.real-time.com/mailman/listinfo/crossfire-list > > -- ___ <@,@> Kimmo Hoikka - www.hoikka.com [`-'] Pellonm?enraitti 3 as 8, 53850 Lpr -"-"- +358(0)40 738 0747 From lembark at wrkhors.com Sat Apr 27 10:32:51 2002 From: lembark at wrkhors.com (Steven Lembark) Date: Thu Jan 13 18:04:16 2005 Subject: [CF List] Experience Categories In-Reply-To: <200204261849.MAA14176@moots.tymnet.com> References: <200204261849.MAA14176@moots.tymnet.com> Message-ID: <12960000.1019921571@[192.168.200.4]> -- Scott Wedel > Your suggestions on better integrating skills into the game are > some of the best ideas I've seen here in a long time. The > archetypes should allow specifying stealing, singing and hiding > resistance levels. That would allow a mapmaker to put items needed > for solving a dungeon on a powerful monster that is vulnerable to > stealing or being pacified. And a mapmaker could make the monsters > in a particular dungeon have extra difficulty seeing hidden players. Might also be a good way to differentiate races/classes. Various types might be born with skills or be denied them without an artifact. Would be interesting for group play at least, since maps could be made that require a group to manage them. -- Steven Lembark 2930 W. Palmer Workhorse Computing Chicago, IL 60647 +1 800 762 1582 From mwedel at sonic.net Sat Apr 27 18:34:59 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:04:16 2005 Subject: [CF List] Experience Categories References: <000101c1ed5b$1ed69230$c86ebb81@gizmo> <3CCA7745.3000806@Digia.com> Message-ID: <3CCB35A3.1080604@sonic.net> Going to respond to this entire thread here... First, adding some values like 'skill_resist_{singing/stealing/whatever}' to monsters (or even objects) wouldn't be that difficult. I'm not sure the term resist is proper - what these should really be are modifiers to the creatures effective level when something tries to use a skill against it (however, for monsters, I'm not sure, but it may be simpler to make those absolute values, since the values otherwise used may depend on various factors). Doing this IMO would be a really good thing. Currently, there is logic in place so that 'special' monsters (which basically mean if it has a 'msg' buffer) are immune to many skill effects because it wasn't considered proper that players could perhaps avoid the encounter with a monster and get the key or other quest item. Putting in those skill_resist basically removes that need - if you want to make it so that you can't steal from the quest monster, you just give it a really high skill_resist_stealing value. I'm not sure if there is much use for players to have these values - you could certainly include those values in racial or class modifications (the barbarian, not knowing the ways of the world, is easier to steal from or something). But since currently only players really use skills, there isn't a lot to gain in that. It would certainly be interesting for some monsters, like the cunning gnomes, to use stealing. Things like singing and oratory obviously don't work against players, since they can still decide who they want to attack. An extension of some skills could also be in order - allow players to set traps, and if the trap kills a monster, they get exp in the appropriate category (either int or agility, or perhaps both). Players (and their party members) could safely pass over their own trap - this would allow for example a character to set a bunch of traps along a hallway, and then lure the monster down it, hopefully killing the monster. Some have said you could make a bard like class that uses singing for various effects. IMO, this should be much different than the wizard or cleric classes - eg, it shouldn't have yet another mana/grace it pulls from to cast effects. I think it would be more interesting that there is no limit to the amount of time you could use the singing, but they just effectively have a long casting time. Musical instruments, or tools for all the skills, could certainly be added. IMO, these tools shouldn't modify the stats, but instead modify the skill level. Thus, a 'masterwork lockpicks', to borrow the AD&D term, might give +1 effective level to lock picking. The bagpipes of sounding give +2 to perform (singing). To do this would mean that you would have to add something like 'skill_adj_{singing/stealing/lockpicking/whatever}' to the archs, but that shouldn't be that hard to do (the skill_adj and skill_resist would use the same index numbers and just have a static array). Better names for these should probably come it. These skill bonuses could also be given to classes/races. You could even extend this some - all races/classes start with most all skills, they just have a 'unlearned' penalty of say -10 until they learn them. Realistically, anyone can try to pick a lock, but without training, your chance is very low. You could even add various magical books (use once) that give permanent adjustments - eg, Twainers Book on Advanced Lockpick may give you a +2 permanent bonus to lockpicking as long as your current bonus is less than 25 or something. Lots of ideas. Some harder than others. But I would like to finish this by saying that everything doesn't have to be equal. Granted, there may be desire for players to have everything maxed out at 110, but for some things, being level 110 vs level 20 may not really mean very much in terms of actual game play (physique, magic, and praying have obvious game implications high levels mean more sp/grace/wc. But really, do you need level 110 agility for anything? There can certainly be desire that maybe there is that level 60 monster you can steal from, but once you get sufficient level (not sure what the odds are, but I would think it is level 80), you always succeed stealing from the level 60 monster. The fact that there is a maximum always comes into problem - you now have level 80 stealing, and perhaps nothing intresting to steal from, and so on. Certainly, the skills should be made more interesting, and be more usuable. But I think that trying to balance the skills so that it is equal difficulty in getting to level 110 physique and level 110 agility will likely be very difficult - if you jack up the exp you get for doing agailty things, you have to be careful that it isn't jacked up too much at low levels so that getting to level 10 is now trivial easy for example. Many of the skills are somewhat gutted right now because without the restrictions, people were finding ways to get to level 110 in oratory in a couple hours of play. From mwedel at sonic.net Mon Apr 29 00:10:47 2002 From: mwedel at sonic.net (Mark Wedel) Date: Thu Jan 13 18:04:16 2005 Subject: [CF List] Crossfire 1.2.0 and Client 1.2.1 released Message-ID: <3CCCD5D7.6080001@sonic.net> Crossfire 1.2.0 has been released. Files released for this version: sums (bsd) filename 12646 1322 crossfire-1.2.0-arch.tar.bz2 50427 1416 crossfire-1.2.0-arch.tar.gz 13102 2854 crossfire-1.2.0-maps.tar.bz2 63943 4178 crossfire-1.2.0-maps.tar.gz 38596 2715 crossfire-1.2.0.tar.bz2 50500 3025 crossfire-1.2.0.tar.gz 46793 375 crossfire-client-1.2.1.tar.gz 13123 1266 crossfire-client-images.1.2.1.tar.gz Sums (md5) c69b4a1db0c5c877900016753cd9a7ec crossfire-1.2.0-README bdcb851949415557b3a9fbcf95834a88 crossfire-1.2.0-arch.tar.bz2 4d2babc7d9af590f6c16e5dbc93b4301 crossfire-1.2.0-arch.tar.gz c9553d81508dffaa1332c46d3a4d807e crossfire-1.2.0-maps.tar.bz2 9550a9731a3c3198a5eaa3f69fe5a8b4 crossfire-1.2.0-maps.tar.gz d380b8998b4eee38858279081619c48f crossfire-1.2.0.tar.bz2 c71ed3509489343336dff2c84cee55fc crossfire-1.2.0.tar.gz 802c9577fa657b5fa91fccc6ca5ced93 crossfire-client-1.2.1.tar.gz 0e0e89480f27214f45bfa7b79a75de2d crossfire-client-images.1.2.1.tar.gz crossfire-client-1.2.1 is the client (X11) distribution - standard X11 and gtk interfaces are provided. This has had changes to image handling and better gui config in the gtk client. crossfire-client-images.1.2.1.tar.gz is a prebuilt image file for the client - downloading this file will reduce the amount of download that needs to happen during play if the -cache option is used. This file should be untarred in the ${prefix}/share/crossfire-client directory, where ${prefix} is the --prefix option given when configure is run. The default path is /usr/local/share/crossfire-client/. crossfire-1.2.0.tar.{gz/bz2} contains the server code with prebuilt archetype and image files. crossfire-1.2.0.arch.tar.{gz/bz2} contains the unpacked archetype changes. This is not needed if you only want to compile the server and play the game. crossfire-1.2.0-maps.tar.{gz/bz2} contains the maps. This is needed with the server distribution. FOR FIRST TIME USERS: You will only need the appropriate server, map and client file. You do not need the arch file. If you just want to play the game at some remote server, you need the client and perhaps the image archive file. Crossfire is avaible on the following ftp sites Primary: ftp://ftp.sourceforge.net/pub/sourceforge/crossfire (64.28.67.101) Secondary: ftp://ftp.real-time.com/pub/games/crossfire ftp://ftp.cs.city.ac.uk/pub/games/crossfire/ ftp://ftp.cs.titech.ac.jp/pub/games/crossfire ftp://mirror.aarnet.edu.au/games/roguelike/crossfire/ ftp://crossfire.futt.org//pub/crossfire The initial upload of this release is only made to sourceforge - it should show up on the mirrors shortly. Mark Wedel mwedel@sonic.net Complete changelog: server: Changes for 1.2.0: Makefile.in, include/version.h: Update for 1.2.0 release lib/Makefile.in: have it make an archive for the archetypes. MSW 2002-04-28 doc/Developers/protocol: Add documentation about the map2 protocol command. socket/request.c: Fix bad indentation for the map2 function. No actual functional code changes, but some comments updated. Running diff with the -w option will make the changes, or lack thereof, more viewable. MSW 2002-04-28 crossedit/xutil.c: Update to use name of png file. lib/archetypes: collected - pl_dragon arch changed a while back, with no new collect. lib/collect.pl.in: Add some notes about usage if no option is given or if --help is given. server/gods.c: Fix that resulted in weapon/armor restrictions not working. MSW 2002-04-23 Various minor bugfixes. Note the changes may appear larger than they really are due to formatting/indentation changes. Run diff -w to supress those: make_win32/installwin32.bat: Update for new image files. server/c_object.c: Fix SAVE_INTERVAL #ifdef block. It failed to compile as it was written. Simplify code, but it should have the same effect. server/move.c: Modify push_object so that if a player swaps position with his pet, we send a esrv_map_scroll. This should save bandwidth, and also prevents display corruption when fog of war on the client is in use. Add some new comments, adjust some formatting. server/player.c: Fix minor typo in comment. server/skills.c: Modify new_draw_info that is responsible for the "You pray" messages to not have the NDI_UNIQUE flag so that they can get batched up, depending on users value of output-count server/swap.c: Remove swapped out per player unique maps from the list of maps. Reduces cpu and memory consumption by a minor amount, and results in a cleaner 'maps command output. server/weather.c: Add standard crossfire banner to top of file. Modify long long declartion to just be a long. MSW 2002-04-20 socket/item.c: Add checks to esrv_move_object - before it just trusted the client that the destination target to move items into was a container. Now do valid checking that the object can be picked up, that the container can hold it, etc. MSW 2002-04-18 Add utils/crossloop.web.in script. This script is used on metalforge - it generates the backtrace file, compresses the core, and sends out mail. configure.in, configure: Rebuilt to make the crossloop.web script. utils/Makefile.in: Install the crossloop.web script. Include the crossloop.web.in script when making the archive. utils/crossloop.web.in: New file. MSW 2002-04-14 Update to improve image caching and faceset support in the client. The main change is adding the 'requestinfo image_info' and 'requestinfo image_sums' commands. common/image.c: Checksum the bmaps file when we load it - we send this as part of the image_info data. doc/Developers/protocol: Document the requestinfo data. include/global.h: Add extern for bmaps_checksum, and the define for ROTATE_RIGHT which is used for checksumming. include/newserver.h: Update SC version to 1027 so that clients can know if they can issue requestinfo commands. include/sockproto.h: rebuilt lib/adm/collect_images.pl: Add support for it to make a crossfire-images distribution that the client can use to bootstrap its image set. socket/image.c: Change SendFaceCmd to take a NewSocket parameter instead of a player parameter - in this way, it can be used before the AddMe command - this allows the client to download images before issuing that command. Add send_image_info and send_image_sums function which send the requestinfo data to the client. socket/loop.c: Move the askface command from the player commands to the newsocket commands. Add RequestInfo functino that determines the type of request and calls the specific function to deal with it. MSW 2002-03-25 client: Changes for 1.2.1: Makefile.in: Add pixmaps/question.sdl to archive list. configure, configure.in: Update for 1.2.1 release. MSW 2002-04-28 gtk/config.c: Allocate string data for want_faceset - data returned by gtk_entry_get_text is non persistent. MSW 2002-04-28 gtk/gx11.c: Fix bug in that the wrong variable was being passed to negotiate_connection, resulting in the sound not being properly communicated to the client. MSW 2002-04-19 Main change is to make all the configuration options now available in the configure window in the gtk client. The way all the various values was stored was changed around, so it is now pretty trivial to add any future options. For the most part, most of the logic of the other code is unchanged - one thing that is different is that the clients use the larger virtual maps that are normally used for fog of map - this means that fog of war can be turned on and off. There are probably some bugs in this, but it seems to basically work - no horrendous bugs that I noticed that prevent it from working at all. - common/client.c: replaced config values with new system. Always send setup mapredraw 1 to server to make toggling for fog of war easier, and it doesn't use any significant bandwidth. common/client.h: Add new value configuration system/defines. remove the old values. common/commands.c, common/image.c,common/metaserver.c,common/player.c : update for new configuration value system common/init.c: Add config_names which is used for the load/save logic. update the init and clear functions to set up new values. gtk/Makefile.in: add config.c file. gtk/gtkproto.h: rebuilt. gtk/config.c: New file - holds the config creating code, as well as the load and save for the gdefaults file. gtk/gx11.c: Remove some widgets now in config.c, move itemlist to gx11.h, remove some other values that are in the new configuration scheme. gtk/gx11.h: Moved several structures and externs from gx11.c to gx11.h so they are available to config.c. Remove several values that are done with the new config arrays. gtk/image.c, gtk/keys.c, gtk/sdl.c, gtk/sound.c: : update for new configuration value system gtk/map.c: update for new configuration value system, modified so that fog of war map logic is used all the time. Change allocate_map to no longer refer to map_size global - use the x and y values in the map structure. x11/x11.c: update for new configuration value system - the x11 portion still uses the old load/save method - this should get converted. Many of the options available in the gtk client have no corresponding use in the x11 client. x11/x11.h: update for new configuration value system x11/xutil.c: update for new configuration value system. Most of the map logic is now synced up with the gtk/map.c MSW 2002-04-03 configure.in, configure: Fix the --disable-sound configure option (when used, it won't look for sound support, and will not build the sound-src directory). Likewise, if that option is not used but configure does not find any supported sound systems, it also will not build the sound-src directory. MSW 2002-03-31 Various fixes/enhancements: 1) For the files stored in the players cache, include the image set suffix (eg, base, clsc) when saving the file. 2) Add a gui update element to the gtk client when running with -download_all_fa ces. For the cfclient, print the updates to the window. 3) Apply patch by 'Alfie' that shows skill experience in the cfclientp 4) Fix caching bugs with the cfclient that caused it to not work right. common/client.c: Add callbacks to image_update_download_status from the download all image routine. It is this callback that provides whatever update mechanism for the player. common/external.h: add image_update_download_status common/image.c: Modify display_newpng to put in the image set name of the saved cache files if that information is available. gtk/gtkproto.h: rebuilt. gtk/gx11.c: Make get_window_coord non static so other files can use it. gtk/image.c: Add image_update_download_status that draws a progress bar. Convenient side effect is that other GUI elements are now updated as part of this, so player can access other menu items. x11/png.c: Fix some bugs when using cached images - rgba_to_xpixmap was using initialized bpp value - we now know this is always 4. create_and_rescale_image_from_data did not match the parameters as the common routines use. Also missing some logic for allocating the data and linking it back to the cache entry. x11/x11.c: Add display for skill experience. This necessitated making some of the windows bigger. x11/x11.h: Remove now unused fields from PixmapInfo structure (fg, bg, bitmap) x11/x11proto.h: rebuilt x11/xutil.c: Remove code that was storing data into the unusued fields in the PixmapInfo structure. Add missing call to init_common_cache_data. Add image_update_download_status function that just does a draw info. MSW 2002-03-26 Many changes to image handling. The most noteworthy are: 1) Ability to use different image sets. 2) Ability to get checksums of all images and download missing images before play starts. 3) Storing cache information for images in a bmaps.client file so that it can know if it has a match without needing to load the image and checksum it. 4) Can use crossfire-image archives to bootstrap the client with a large number of images to save the time of downloading them later. README: Update some out of data information about sounds, add section describing the image handling. configure,configure.in: Make the SOUNDDIR be based and datadir and not an absolute path - this means using a different -prefix changes the location of where it will find the sound file. Moved some of the defines into the config.h file so that we don't need to pass them as -D compiler options. Add code to properly substitute DATADIR and BINDIR values. common/Makefile.in: Add image.c to list of files. Fix depend directive. common/cconfig.h: Remove some options that no longer did anything. common/client.c: clean up some unused global variables, add a few new ones. and support for replyinfo protocol command. Modify negotiate connection to issue requestinfo requests, set up face set to use, use setup command to set caching behaviour, and support for it to download all image sums and missing images before play starts. common/client.h: Update VERSION_SC to 1027. Remove some unused global externs. Add FaceSets structure, Face_Information structure, the later which holds some user preferences. Add Cache_Entry structure, as well as some state when negotiating the connection. common/commands.c: Add ReplyInfoCmd function. Move FaceCmd to common/image.c. Add handling of received setup command for faceache and faceset information. Remove some dead code. common/config.h.in: Add BINDIR and DATADIR defines so we don't need to pass them on the command line. common/external.h: Add some more functions that are called back from the common area. common/image.c: New file - cache logic, png image load code, and protocol image related commands in this file. This removes some of the code that was previously in the GUI area of the client into a common area. common/init.c: Add TEST_FREE_AND_CLEAR macro. Add code to clear some of the newly added structures. common/proto.h: rebuilt. gnome/gnome-cf.h: remove cache_images extern. gtk/gcfclient.man: Update man page for new options (-download_all_faces, -faceset) gtk/gtkproto.h: rebuilt. gtk/gx11.c: add redraw_needed flag so the map window is properly redrawn when caching images and new images show up. Change some other variables to deal with new image code. pixmaps changed to a pointer so that a copy can be held in the common cache structure. Add support for new options. Remove some code that is now in the common/image.c file. gtk/gx11.h: Remove keepcache, change cache_images, add redraw_needed, and change type of pixmaps to be a pointer. gtk/image.c: Move requestface to the common/image.c, change pixmaps to pointer type. remove finish_face_cmd and ReadImages command. gtk/map.c: Change pixmaps to pointer types. gtk/sdl.c: add redraw paramter to sdl_gen_map. change pixmaps type to pointer. gtk/sound.c: Add missing / when running cfsndserv. x11/png.c: Remove gdk related code from the file. Add rgba_to_xpixmap data so tha the common area can load the png file. x11/sound.c: Add missing / when running cfsndserv. x11/x11.c: change pixmap type to pointer. Add new options (-faceset and -download_all_faces). Remove -keepcache option. change cache_images to face_info.cache_images. Change how the pixmaps are generated x11/x11.h: remove keepcache and cache_images variables. Change pixmaps to pointer type. x11/x11proto.h: rebuilt. x11/xutil.c: remove keepcache option. Change pixmap type to pointer. Move requestface and finish_face_cmd to common/image.c MSW 2002-03-25