Jump to content

Niemand

Moderator
  • Posts

    2,138
  • Joined

  • Last visited

Everything posted by Niemand

  1. I haven't seen any listing of what creature summon levels will actually be summoned by which levels of summoning spells, so out of curiosity I did some testing and this is what I found out: -Call beast seems to summon creatures whose summon level is equal to its level divided by 2 and rounded down to a whole integer -Create Illusions summons creatures whose summon levels are equal to its level -Summon Aid summons creatures whose summon levels are one greater than its level -Arcane Summon summons creatures whose summon levels are 3 greater than its level I thought that this information might be useful to designers who want to balance summoning power, partiularly in higher level scenarios. Correction: Due to my poor ability to do single digit subtraction, I had misstated the number for Arcane Summon
  2. What you want is: Code: if(choice == 1){ if(something){ //do stuff } else{ //do other stuff }}else if(choice == 2){ //do different stuff} The problem was that you combined two conditions into one if statement, so that the else block occurred if either was false, when you wanted it to occur when only a specific one was false. EDIT: How did I mispell 'that' as 'htta'?
  3. I'm guessing your problem is this: Each giant chief is equipped with an invulnerability potion. When it begins to fight, it drinks the potion, and you won't be able to hurt it for a few turns. A couple of ways to deal with this are to hit the chiefs very suddenly, so you damage them significantly before they get a turn and drink their potion, and to just wait he potion out. The invulnerability potion only lasts a few rounds, and after that you can start doing damage to the chief again. Often times the chief isn't alone, so while he's invulnerable you can kill off his minions. They really aren't too bad, you just have to tolerate fending them off for a little while before you can get to the real fighting.
  4. ME is a reserved constant, defined equal to -1, except when running a creature (or terrain? I can't remember.) script. You need a different variable name I think. Also, you can get the selected pc with a get_selected_char() call. Or, you can ask the player to selecta pc with run_select_a_pc() and get_selected_pc(). It might also be a nice touch to alter the strings so that the player is asked "Do you want [name of selected character] to rest on the alter?" and so forth. You can do this with the string manipulation calls without too much trouble.
  5. If I remember rightly; having just return from the Vahnatai lands, you won't have done many of the dungeons in the eastern galley, such as the Nephar fort, hidden sliths, and so on. I think those might be a good place to go next.
  6. I have never used the debug mode either; but there are easier ways than the character editor to set sdfs. What I have found is that generally I wanted to set several sdf's to a particular set of values all at once; for instance, so that once I've tested and I'm sure that a quest works, I want to set all the flags as if I had done it, so that I don't have to do it over and over to test the next bit of the scenario. To that end, I made an item which when used presents a text entry box, and when you enter a number code into it, sets a group of flags to pedefined values. I then put the item right next to where the party starts, (I'll remove it in the final version of course.) and when I enter the scenario again, all I have to do is use this wand a couple of times and skip the first half of the scenario. Depending on what you want to set sdf's for, I think that this method might help. EDIT: Thought I would post the code for that: The item definition: Code: begindefineitem 451; clear; it_name = "Wand of Debug"; it_full_name = "Wand of Debug"; it_inventory_icon = 8; it_floor_which_sheet = 1045; it_floor_which_icon = 9; it_variety = 21; it_ability_1 = 207; it_ability_str_1 = 28; it_identified = 1; it_magic = 1; and the state the item calls: Code: beginstate 28; //Wand of debug reset_dialog(); add_dialog_choice(0,"Ok"); add_dialog_choice(1,"Cancel"); add_dialog_str(0,"A=All, 1=Camp Placing, 2=put base camp in clearing, 3=Visiting Village and Manor, 4=Notebook Quest, 5=1st Crystal Quest, 6=2nd Crystal Quest, Z=set off attack",0); x = run_dialog(0); if(x == 2) end(); get_text_response("A or 1-6; other gives list"); y = 0; check_text_response_match("A"); if(got_text_match()) y = 100; check_text_response_match("1"); if(got_text_match()) y = 1; check_text_response_match("2"); if(got_text_match()) y = 2; check_text_response_match("3"); if(got_text_match()) y = 3; //more checking for text matches, but I think you get the point if((y == 1) || (y == 100)){ //set a bunch of flags } if((y == 2) || (y == 100)){ //set a bunch of flags } if((y == 3) || (y == 100)){ //set a bunch of flags } if((y == 4) || (y == 100)){ //set a bunch of flags } if((y == 5) || (y == 100)){ //set a bunch of flags } if((y == 6) || (y == 100)){ set_flag(204,1,1); set_flag(205,3,1); } if(y == 100) set_flag(5,9,2); if(y==7) set_flag(5,3,1); if(y==0) set_state_continue(28);break;
  7. I read a bit and I liked what I saw. The linked pages are a big help instead of just having a single massive page of text like I've seen in some other places. Please keep up the good work!
  8. First, it looks like you're not using get_text_response correctly. If you look in the docs you will see that it has a void return type, so doing that assignment is meaningless. Basically to use it you need to call get_text_response and then repeatedly call check_text_response to see if the response was one of a set of particular strings. You should take a look at the numeric input script that someone made (Kelandon?). In any case, you can see a good example of numeric input in the part of the HLPM that asks for a level to make the party. Another thing to keep in mind about debugging in general is that even a good compiler may be confused by an error on one line, not report it, and then start reporting nonsense errors on following lines. So if you really think a line is correct when you're told there is an error there, take a close look at the lines above it; they are often to blame.
  9. Yes; use a SDF to keep track of whether the message has been displayed. If it already has, don't display it again.
  10. Closing the doors doesn't just slow them down; it also gives you warning. When you hear a door opening sound and you know that you didn't just open a door it's harder for the monsters to take you by surprise. I found this very useful in towns that spawn more wandering monsters.
  11. One thing that I have had to use the two flag method for is storing tick numbers when I can't be sure that the party will stay in the town or outdoor section that uses the tick number.
  12. Confound my slowness! I had nothing substantial to add to Alorael's answer.
  13. No, I don't think there is. It's also rather bad about being put into the background, which I also find to be a nuisance.
  14. Try Alint. It shows a number of other errors in the first script alone.
  15. You place the text file into the scripts folder, where it entirely replaces the z60monasterdlg.txt file, which is the file that you should back up your original copy of.
  16. Well, unkillable friendly npc's might not be much of a suprise since he's already done unkillable enemy npcs. set_char_unkillable(ME,1); appears in 19 different creature scripts for A4.
  17. You can use char_loc_x(get_target()) and char_loc_y(get_target()) to find out the x and y coordinates of the target. I would recommend that you just have it check its target just before shooting fields to make sure that it is really aiming at a magic user. I have myself encountered some weird targeting difficulties, such as creatures temporarily targeting themselves. You can get around this kind of problem pretty well by storing the target in a variable of your own and making sure that the creature continues targeting the same target by using set_target to reset the target to your stored value.
  18. Caps Lock may be your problem. The debug shortcuts are all Shift + Letter, so if caps lock is on, you'll be doing debug actions rather than ordinary game actions.
  19. There are several undead which do this , I believe. If you see a line print out that says "Algernon is drained" when fighting one of these, it means that some of his xp has been stolen.
  20. The acid protection or lack thereof thing is weird. I'm afraid that I can't remember having any particular trouble with this fight myself. Is Arcane Shield any help to you? It might help you to not die as quickly. Sanctuary might come in handy too, so that they shouldn't be able to attack you until you hit them.
  21. My dissappointment with the infinte arrows is that I always enjoyed being able to switch ammunition with the same bow. It was a little bit of work to deal with running out of arrows, but I considered it like running out of spell points; as a good player it was a constraint that one dealt with carefully, and which really made dungeons more interesting. Now, there's less thought involved; just point and shoot over and over until everything is dead.
  22. Seeing that what you are building depends on using terrains, I'm surprised that my idea works, but if it does, good! Like I said before, what I posted was just a simplistic version; I'm not surprised that it had to be adapted. About the script having their states run several times a turn, the standard way to deal with this is use get_current_tick to find out the tick, and store it in a variable. Then, every time the state is run, check to see if the current tick is different from the stored previous tick. If they are the same, it is still the same turn, so have your script do nothing. If they are different, store the new value and do whatever it is you want to do once a turn. A good example of this is creature scripts with custom abilities that they are only supposed to use once a turn. See the beginning of state 3 of t13kimzahn in The Za-Khazi Run for an example.
  23. If you already have a powerful spell caster, a dark wyrm can come in handy. It has its darkness breathing, can absorb a lot of damage, and has reasonable melee capability. In A3 I used mine to kill Rhentar-Ihrno.
  24. First, note that the game's north direction is to the upper-right side of your computer screen, so, talking in terms of the direction markers at the corners of the game screen, do you blocking motion in the cardinal directions, N, S, E, and W, or do you mean blocking movement in the other four directions, NE, NW, SE, and SW? Either way, I have some ideas, but the implementation would depend on what's in the puzzle. In the space occupied by the puzzle, are there any terrains or terrain scripts? I have an idea, which I will try to implement, and we can see if it meets your needs. Edit: Here's what I came up with. It may need some tinkering to make it fit for you/make it more foolproof. Code: beginstate START_STATE;if(get_flag(A, == 1){ y = 0; while (y< C ){ x = 0; while(x< C ){ if(get_terrain(x,y) == D) set_terrain(x,y,0); x = x + 1; } y = y + 1; } if(get_terrain(char_loc_x(0),char_loc_y(0) - 1) == 0) set_terrain(char_loc_x(0),char_loc_y(0) - 1,D); if(get_terrain(char_loc_x(0),char_loc_y(0) + 1) == 0) set_terrain(char_loc_x(0),char_loc_y(0) + 1,D); if(get_terrain(char_loc_x(0) - 1,char_loc_y(0)) == 0) set_terrain(char_loc_x(0) - 1,char_loc_y(0),D); if(get_terrain(char_loc_x(0) + 1,char_loc_y(0)) == 0) set_terrain(char_loc_x(0) + 1,char_loc_y(0),D); }break; This is intended to be the START_STATE of the town. Obviously you can add anything else you want to the start state. I've written it with an A, B, C, and D. These are spot where you will need to fill in numbers. A,B is the coordinates of an SDF to switch the motion blocking on. C is the width of the town, 32, 48, or 64, and D is the number of a terrain to block the party with. I imagined the D terrain as probably being: Code: begindefineterrain D; import = 0; te_full_move_block = 1; te_can_look_at = 0; The blocking works by placing terrain D directly to the N, S, E, and W of the party's lead member, and moving the terrains every turn so that they don't get left all over the place. Some imporovements could involve finding the first living member of the party instead of character 0, and altering the loops so that only the area of the town containing the puzzle is affected.
  25. In A2 Arcane Summon was a bit odd. At the level one the guaranteed vampire was nice, level two guaranteed a demon, which was quite useful, but then level 3 always gave an eyebeast, which may technically have been a more powerful spellcaster than the demon, but had fewer hp, and lacked the melee capability. I found once I had level 3 that I wanted level 2 back.
×
×
  • Create New...