Jump to content

Niemand

Moderator
  • Posts

    2,138
  • Joined

  • Last visited

Everything posted by Niemand

  1. To your first question, sort of, but not exactly. You can have the creature' script call who_hit_me() to find out if it has been attacked that round, but this means that it will wait until its turn to react to being attacked. So, if you were going to do something like advance the plot when the party attacks a certain enemy, you might need to put fallback code into the creature's DEAD_STATE as well, just in case the party somehow wipes it out in one round before it gets a chance to act. To your second question: yes. However, there is a distinction between having the attacked creature turn hostile and all of the friendly creatures in the town turn hostile; the latter you can tune with set_crime_tolerance().
  2. Quote: I will see if I can broaden selection of objects to enable terrain to be pushed around. That doesn't make any sense if you're referring to what I think you are (using arrow keys or similar to 'move' terrains). When you move an object it's clear that what you're doing is changing the position of that instance so that it appears somewhere else. For terrains, though, we have a grid, within which every cell must contain some terrain. So the idea of 'moving' a terrain isn't entirely clear. If I 'move' a terrain out of one space in the grid, it must both replace whatever terrain was in the grid space I moved it into, and some terrain must come into existence in the grid space I moved it out of. You could try things like swapping the terrains in two grid locations, with the effect of turning the zone into a huge slide puzzle, or you could overwrite terrains and leave behind a trail of empty terrains, which would be peculiar and potentially destructive. So, unless I've misunderstood what problem you're trying to solve and how you're trying to solve it, I think that copying and pasting sections of terrain, combined with manual redrawing as needed, is a better answer.
  3. The first thing I have to say is please, for the love of all good things, don't mix up all of the keyboard shortcuts. I'm not sure what exactly would be entailed in allowing the standard cut, copy, and paste shortcuts to work normally on text when a dialog is showing, but the basic method would not be to check whether a dialog is showing so much as to switch behaviors when you show a dialog and switch them back when you take a dialog down, I think.
  4. @Celtic Minstrel: The Edit menu is there; that doesn't mean that its work as they should. If I remember correctly, things happen like that the scenario entry text fields won't accept text copied from other applications, but can be copied from, and will paste text copied from themselves.
  5. Originally Posted By: Ishad Nha Scenario Editor code won't compile after I updated it. There are three obvious lines of stray characters in TFileio.cpp for starters. TFILEIO.CPP:1395: error: expected unqualified-id before '<<' token TFILEIO.CPP:1466: error: expected unqualified-id before '==' token TFILEIO.CPP:1538: error: expected unqualified-id before '>>' token These are conflict markers, placed into the code by svn. You need to resolve the conflict before you can compile the code sensibly or commit it to the repository.
  6. I can't think of any part of the Mac version where copy and paste work properly either; I've lost a good deal of time trying to fix that.
  7. You're not going to make transparency much more complicated than what there is now using Quickdraw, as far as I know. Moving to Quartz would support this and be a good idea just in general. Doing so would be difficult, I think, largely because there's a big pile of code that will need to be altered, but image formats have nothing to do with it. Quartz has no 'standard image format'; internally it stores data as uncompressed bitmaps (like any compositing system as far as I'm aware), but that's irrelevant to the user as it provides all of the drawing functions one would expect and can work with data loaded from a suitably wide variety of image formats.
  8. I typically consume between 1300 and 1800 kcal per week day, including one to two cans of soda. I recently discovered the hard way that cutting this out of my diet had a sizable negative impact, as it eliminated somewhere between .1 and .2 of my energy intake. Ideally, I ought to find another source for that energy, but as I think I eat an otherwise acceptably healthy diet, I don't feel that there's all that great a need to do so. While I like many sodas, a good orange (not Sunkist, which is bitter and awful) is about my favorite type. I'm not overly fond of standard Coke, and I refuse to ingest Mountain Dew. I do tend to favor sweeter sodas, and so I am rather partial to Vess brand, which I have to import these days, as it isn't sold this far north.
  9. It is a simple measure which theoretically protects against the dumber address harvesters. It's far from perfect, as any programmer worth his salt could capture addresses from the more common methods of obscuration, but the theory is, in part, that people writing address harvesters for spam operations may well not be worth any salt.
  10. The string manipulation calls are fairly simple if a bit obtuse. You are given a 'string buffer' which is your workspace in which to construct strings. It's really just a string itself that you can tack pieces onto, retrieve the contents of, and delete the contents of. To do a task like what you want there are several stages. First, you have to assume that the string buffer may have been used before, so you'll want to empty it out before doing anything else; the clear_buffer() call does this. Next, you have to fetch the value you want to use, in this case the party's gold, which comes from coins_amount(). You can put this in an integer variable, or just use the result directly as the argument to the call in the next step. That step is: Once you have the number you're interested in, you turn it into a string and add that string to the buffer using append_number(). The command combining these two steps is then append_number(coins_amount()). Now the string buffer holds a string made from your number, and you want to get it out again. To do this, the game requires you to place the result into an intermediate string variable (See note). You do this by passing the string variable you want to put the data into as the argument to get_buffer_text(). Finally, you can then use the new contents of that string variable for your dialog choice. It's actually not that much code when written out. Assuming you have declared a string variable str: Code: clear_buffer();append_number(coins_amount());get_buffer_text(str);add_dialog_choice(which_option,str); Note: The get_buffer_text() call is a rather odd one in that I think it is possibly the only call in Avernumscript which exhibits pass-by-reference behavior, rather than the pass-by-value behavior of all other calls. This is confusing, since most people unfamiliar with programming will not be aware of such a distinction, and probably not even someone familiar with programming would guess that this function would work in this way. However, I think that Jeff probably discovered that he was stuck with this kludge because the most natural way to write the necessary call—as a function which returns a string as its result, is not, I believe, allowed by Avernumscript. Sigh.
  11. I volunteered to judge, way back when, and I will still do it if we ever move to wrap this up.
  12. My point is that the dialog, and its associated functions (change_outdoor_size() and change_outdoor_size_event_filter()) merely take the user's requests; they do none of the actual work. If you want to understand them that's fine and a useful thing to do in and of itself, I just wanted to make sure you didn't get your time wasted by being sidetracked to the wrong area of the code.
  13. The problem has nothing to do with the dialog that lets the user select the changes to make, it's in the function do_save_change_to_outdoor_size() in Bl A Fileio.cpp. Your statement that 'Coordinates of area rectangles were reversed' could be an important clue though, as it may mean the only actual problem is one extra port() call or one call too few. If I get time tonight I'll take another look at it in light of this information.
  14. When the developer tools are installed, they install all of the standard headers, both in the typical Unix locations (/usr/include/) and in a set of special places, the software development kits (/Developer/SDKs/), and Xcode knows to look in these places by default. I have had some issues with the new 10.6 SDK's standard C++ headers, but the BoE project is configured to default to the 10.4 SDK by default, I think. With regard to the specific errors your screenshot shows: Some of those are a bit peculiar looking. Would you open up the disclosure triangles by a couple of the "No such file or directory" ones, and check from where they were included? It may also help to click the small button (a pale gray lozenge with dark gray horizontal lines) to show the exact command issued to the compiler, with all arguments. Then we can see where it's actually looking for header files. (Sorry this is such a massive pain; this project is not terribly well set up, having sort of grown organically, and it's showing.)
  15. Well, that means it's at least trying to get something done. What are the first couple of errors? Also, one thing that may not have been obvious, and didn't occur to me until now is that you will need to have the boost libraries installed on your machine in order to compile from source; you can download them from http://www.boost.org/. (Watch out when building boost, it will likely try to build only a single version of itself which will then prevent you from using it to create 'universal' binaries. I had an awful time coercing it to build 4-way intel/ppc 32/64 binaries, and I'm afraid that I don't seem to have kept any notes on what I did, but I think that ppc/intel fat binaries are likely good enough here, to take a look at this discussion when you're working on the install. )
  16. Yes, the latest versions of UBB do this every once in a while. It doesn't seem to indicate any real problems, and there's nothing anyone can do to stop it, so the best solution seems to be ignoring it.
  17. Gah, I've never seen it give a message like that before. At any rate the best single resource is the built-in documentation; try 'Xcode Help' and 'Xcode Quickstart' in the Help menu. I suspect, though that your problem is likely more the way that the project is setup, rather than the way Xcode is supposed to be used. Here's my best guess as to what's wrong: Which target do you have selected? You can find the list under 'Set Active Target' in the Project menu. I just checked out a fresh copy and the 'Common Data Files' target was selected by default, which does not include an executable that can be run. If it's not already, select the 'Blades of Exile' target.
  18. Also, you may need to differentiate strictly between errors and warnings; there are still a lot (hundreds, as I recall) of warnings we haven't gotten cleaned up that won't actually affect building or running the program.
  19. While it may be awkwardly stated, it's not unreasonable that geography should be a major cause in the development of skin pigmentation. It is my vague understanding that this is often the case in humans in the real world. He's saying that their skin is dark because it confers a useful advantage, not because they are somehow inferior. The portion immediately preceding what you quote, Sukutak, is what I would consider problematic; I must admit I simply missed noticing it until now. Having examined it in context, I am led to believe that this is not so much racism as poor word choice. However, I do agree that this sort of word choice is bad all around, as whether or not it springs from racism it will certainly put the thought into people's minds. Necrophilius, you would be advised to choose your words more carefully in future; for example in such a context 'people' would have served admirably, without introducing problematic connotations.
  20. The trouble with this is what I mentioned above as far as I can tell. Your replacement sound will play once, then stop, and you'll get no indication of when that happens. Replaying the sound after a number of ticks is what I did in Stairway, but it doesn't really work very well since if the player decides to move around rapidly you'll cut off the sound to start it again, or if the player moves slowly there may be a lengthy period when the sound doesn't play at all. It functions, but not elegantly.
  21. 40-80 is probably too wide a range to aim for for any single type of monster, I would point out. Anything you come up with (unless it has a script which alters it on the fly to match the opponents) will almost certainly come out way to tough for a level 40 party and pointlessly easy for a level 80 party. The best way in my experience to tune monsters by level is simply to guess and then fight them with an appropriate party. If they destroy you way too quickly, turn down their power, if they're too weak turn it up, and if there are certain elements of the fight that don't work to your satisfaction, tweak them. There's not a whole lot more to be said in general, besides that setting a monster's level is the first and fastest way to bring it to approximately where you want it.
  22. You can play a sound in the background, but you won't be able to get any notification of when it finishes to be able to loop it nicely.
  23. I doubt that defragmenting would have any bearing on the problem, although with WIndows one never knows. Uncle: I fear I have no notion how to solve such a problem, but it may help to make a few details clearer: Does this happen when you run the game full-screen? Do things begin to go wrong only after you close the game, or does it begin while the game is running? Were I Jeff and looking into such a problem these would be things I would likely want to know.
  24. Quote: It might be that there is a default hard-coding which can be overridden by a scenario data script. That would mean that it was not, in fact, hard-coded, but would be very good news.
×
×
  • Create New...