ericp07 Posted March 7, 2011 Author Share Posted March 7, 2011 I believe I'm starting to put all of this together, but I can feel that my mind is still working to absorb the information. Now, I'm getting a syntax error much earlier in the same file, but again, it looks to me like it's structured/coded according to what we've discussed: IF ~~ EP#MelPreJoin1 SAY ~Thank you, <CHARNAME>. What brings you through these parts? Do you need help? Could you use a hunter and wilderness warrior in your group?~ ++ ~I could use your services, yes, and there's room in my group for you. Please join in, and be my eyes and ears.~ + EP#MelJoined ++ ~I'm afraid I can't afford a mercenary right now. I need to gather a large of coin to rescue a friend.~ + EP#MelFirstMeetCoin ++ ~I have no need of your services now. Perhaps another time.~ IF ~~ EXIT END All the needed elements are in place, right? Well, the installer chokes on this one, too: [Meleryn/dialogues/EP#Mel.d] PARSE ERROR at line 46 column 1-2 Near Text: IF syntax error [Meleryn/dialogues/EP#Mel.d] ERROR at line 46 column 1-2 Near Text: IF Parsing.Parse_error ERROR: parsing [Meleryn/dialogues/EP#Mel.d]: Parsing.Parse_error ERROR: compiling [Meleryn/dialogues/EP#Mel.d]! Stopping installation because of error. This makes me feel really dense (when I know that I'm only partially dense)! What's wrong with this one, now? Thanks, Eric Link to comment
cmorgan Posted March 7, 2011 Share Posted March 7, 2011 On the single line thing, there are probably better folks out there to explain this than me. But my take is that while it is perfectly possible to run your whole darned mod into one big long line, all the code that i admire the most has structure that is readily apparent through indentation. From a practical standpoint, being able to see where blocks begin and end, and where everything is nested, means quick and easy troubleshooting. The bigg has made it possible (because some modders don't indent) to do things like this IF ~RandomNum(3,3) Global("c-arantoran","GLOBAL",2)~ THEN BEGIN a2511 SAY ~[C-TORAN] Hey, don't poke me... I don't want any trouble.~ IF ~~ THEN EXIT END IF ~RandomNum(3,2) Global("c-arantoran","GLOBAL",2)~ THEN BEGIN a2512 SAY ~[C-TORAN] Worst deal I even made. I'll move over here, out of the way.~ IF ~~ THEN EXIT END IF ~RandomNum(3,1) Global("c-arantoran","GLOBAL",2)~ THEN BEGIN a2513 SAY ~[C-TORAN] No problem here. I will keep my mouth shut.~ IF ~~ THEN EXIT END IF ~RandomNum(3,3) Global("c-arantoran","GLOBAL",0)~ THEN BEGIN a2514 SAY ~[C-TORAN] Just drinking my wages, same as always.~ IF ~~ THEN EXIT END IF ~RandomNum(3,2) Global("c-arantoran","GLOBAL",0)~ THEN BEGIN a2515 SAY ~[C-TORAN] Every time I get a contract finished, I say I am going to quit and invest the money. Then I come here, and all I invest in is more drink.~ IF ~~ THEN EXIT END IF ~RandomNum(3,1) Global("c-arantoran","GLOBAL",0)~ THEN BEGIN a2516 SAY ~[C-TORAN] Too many contracts for guard duty. It starts to eat at you, standing there for hours, watching a wall. Makes a man want to drink.~ IF ~~ THEN EXIT END At the end, in the master file, I go back and re-do the correct indentation, because I want the ease of troubleshooting (regexp seacrh and add newlines) With correct nesting/indentation IF ~RandomNum(3,3) Global("c-arantoran","GLOBAL",2)~ THEN BEGIN a2511 SAY ~[C-TORAN] Hey, don't poke me... I don't want any trouble.~ IF ~~ THEN EXIT END IF ~RandomNum(3,2) Global("c-arantoran","GLOBAL",2)~ THEN BEGIN a2512 SAY ~[C-TORAN] Worst deal I even made. I'll move over here, out of the way.~ IF ~~ THEN EXIT END IF ~RandomNum(3,1) Global("c-arantoran","GLOBAL",2)~ THEN BEGIN a2513 SAY ~[C-TORAN] No problem here. I will keep my mouth shut.~ IF ~~ THEN EXIT END IF ~RandomNum(3,3) Global("c-arantoran","GLOBAL",0)~ THEN BEGIN a2514 SAY ~[C-TORAN] Just drinking my wages, same as always.~ IF ~~ THEN EXIT END IF ~RandomNum(3,2) Global("c-arantoran","GLOBAL",0)~ THEN BEGIN a2515 SAY ~[C-TORAN] Every time I get a contract finished, I say I am going to quit and invest the money. Then I come here, and all I invest in is more drink.~ IF ~~ THEN EXIT END IF ~RandomNum(3,1) Global("c-arantoran","GLOBAL",0)~ THEN BEGIN a2516 SAY ~[C-TORAN] Too many contracts for guard duty. It starts to eat at you, standing there for hours, watching a wall. Makes a man want to drink.~ IF ~~ THEN EXIT END This gets way, way more critical when you start patching things. Link to comment
cmorgan Posted March 7, 2011 Share Posted March 7, 2011 OK, you are close, but you missed that "say is an island unto itself" also has "transition is an island unto itself": IF ~~ EP#MelPreJoin1 SAY ~Thank you, <CHARNAME>. What brings you through these parts? Do you need help? Could you use a hunter and wilderness warrior in your group?~ ++ ~I could use your services, yes, and there's room in my group for you. Please join in, and be my eyes and ears.~ + EP#MelJoined ++ ~I'm afraid I can't afford a mercenary right now. I need to gather a large of coin to rescue a friend.~ + EP#MelFirstMeetCoin ++ ~I have no need of your services now. Perhaps another time.~ EXIT END startcreatingstate = IF ~~ EP#MelPreJoin1 thestate = SAY ~Thank you, <CHARNAME>. What brings you through these parts? Do you need help? Could you use a hunter and wilderness warrior in your group?~ replystate 1 plus transition = ++ ~I could use your services, yes, and there's room in my group for you. Please join in, and be my eyes and ears.~ + EP#MelJoined replystate 2 plus transition = ++ ~I'm afraid I can't afford a mercenary right now. I need to gather a large of coin to rescue a friend.~ + EP#MelFirstMeetCoin replystate 3 plus transition = ++ ~I have no need of your services now. Perhaps another time.~ EXIT endcreatingstate = END So what you did was you created a reply without a transition ++ ~I have no need of your services now. Perhaps another time.~ and then added a transition unattached to a reply state = IF ~~ EXIT Link to comment
ericp07 Posted March 7, 2011 Author Share Posted March 7, 2011 I greatly favor the structured, formatted, indented style (but using shortcuts wherever possible) as well, but I don't even know how to properly indent everything yet, so the best I can do for now is to write line by line. I'll definitely be breaking out any instances in my files of IF ~~ EXIT END to two separate lines, so that END always appears, by itself, as the last line of any code block that needs it. To further complicate things, I'm considering rewriting as much content as possible into CHAINs. It appears to me that doing this is more efficient than using the .bcs/.dlg pairing (which, to me, is too much work). I'm nowhere near ready to attempt that, though. - E Link to comment
ericp07 Posted March 7, 2011 Author Share Posted March 7, 2011 OK, you are close, but you missed that "say is an island unto itself" also has "transition is an island unto itself": IF ~~ EP#MelPreJoin1 SAY ~Thank you, <CHARNAME>. What brings you through these parts? Do you need help? Could you use a hunter and wilderness warrior in your group?~ ++ ~I could use your services, yes, and there's room in my group for you. Please join in, and be my eyes and ears.~ + EP#MelJoined ++ ~I'm afraid I can't afford a mercenary right now. I need to gather a large of coin to rescue a friend.~ + EP#MelFirstMeetCoin ++ ~I have no need of your services now. Perhaps another time.~ EXIT END startcreatingstate = IF ~~ EP#MelPreJoin1 thestate = SAY ~Thank you, <CHARNAME>. What brings you through these parts? Do you need help? Could you use a hunter and wilderness warrior in your group?~ replystate 1 plus transition = ++ ~I could use your services, yes, and there's room in my group for you. Please join in, and be my eyes and ears.~ + EP#MelJoined replystate 2 plus transition = ++ ~I'm afraid I can't afford a mercenary right now. I need to gather a large of coin to rescue a friend.~ + EP#MelFirstMeetCoin replystate 3 plus transition = ++ ~I have no need of your services now. Perhaps another time.~ EXIT endcreatingstate = END So what you did was you created a reply without a transition ++ ~I have no need of your services now. Perhaps another time.~ and then added a transition unattached to a reply state = IF ~~ EXIT That agrees with the earlier idea of not tacking EXIT onto the end of a line, but instead using IF ~~ EXIT by itself. I think I've got that detail down now, and will keep an eye out for it going forward. [Edit]Although I'm still not clear yet about EXITs, but I'll get there.[/Edit] Thanks again, Eric Link to comment
ericp07 Posted March 7, 2011 Author Share Posted March 7, 2011 Wow, now EP#Mel.d is fixed up! The installer gets through it, and now I'm addressing errors in EP#MelB.d. With this file, I believe the main problem is that I should have things set up as CHAINs. Got a lot of work to do in cleaning up this file, so I'll get to it, and report back the next time I find a problem I can't solve myself. Happy modding, Eric Link to comment
ericp07 Posted March 8, 2011 Author Share Posted March 8, 2011 Error related to this variable timer set up in Meleryn.tp2: // Variable Timers for lovetalks PRINT ~Please choose one of the following: [1] 15 minutes real time minimum between dialoguess [2] 30 minutes real time minimum between dialoguess [3] 45 minutes real time minimum between dialoguess [4] 1 hour real time minimum between dialoguess (recommended) [5] 1 hour 30 minutes real time minimum between dialoguess [6] 2 hours real time minimum between dialoguess~ OUTER_SPRINT ~EP#Mel_TIMER~ ~placeholder_value~ OUTER_WHILE (!(IS_AN_INT ~EP#Mel_TIMER~) OR (~EP#Mel_TIMER~ > 0x6) OR (~EP#Mel_TIMER~ < 0x1)) BEGIN PRINT ~Please select 1, 2, 3, 4, 5 or 6 and press enter.~ ACTION_READLN ~EP#Mel_TIMER~ END ACTION_IF ("EP#Mel_TIMER" = 1) THEN BEGIN APPEND ~gtimes.ids~ ~900 EP#Mel_TIMER~ PRINT ~Speed: minimum 15 minutes real time between dialoguess~ END ACTION_IF ("EP#Mel_TIMER" = 2) THEN BEGIN APPEND ~gtimes.ids~ ~1800 EP#Mel_TIMER~ PRINT ~Speed: minimum 30 minutes real time between dialoguess~ END ACTION_IF ("EP#Mel_TIMER" = 3) THEN BEGIN APPEND ~gtimes.ids~ ~2700 EP#Mel_TIMER~ PRINT ~Speed: minimum 45 minutes real time between dialoguess~ END ACTION_IF ("EP#Mel_TIMER" = 4) THEN BEGIN APPEND ~gtimes.ids~ ~3600 EP#Mel_TIMER~ PRINT ~Speed: minimum 1 hour real time between dialoguess~ END ACTION_IF ("EP#Mel_TIMER" = 5) THEN BEGIN APPEND ~gtimes.ids~ ~5400 EP#Mel_TIMER~ PRINT ~Speed: minimum 1 hour 30 minutes real time between dialoguess~ END ACTION_IF ("EP#Mel_TIMER" = 6) THEN BEGIN APPEND ~gtimes.ids~ ~7200 EP#Mel_TIMER~ PRINT ~Speed: minimum 2 hours real time between dialoguess~ END Only thing I can think of is that something meaningful needs to go where "placeholder_value" is, but I wouldn't know what to enter. The installer reports this: [action list near line 346, column 435 of Meleryn/dialogues/EP#MelB.d] PARSE WARNING at line 346 column 1-75 Near Text: ) [SetGlobalTimer] argument [EP#Mel_TIMER] not found in [GTimes.IDS] What bone-headed slip did I make this time? Thanks, Eric Link to comment
ericp07 Posted March 15, 2011 Author Share Posted March 15, 2011 Latest install error: [Meleryn/dialogues/EP#MelB.d] PARSE ERROR at line 232 column 1-15 Near Text: DO syntax error [Meleryn/dialogues/EP#MelB.d] ERROR at line 232 column 1-15 Near Text: DO Parsing.Parse_error ERROR: parsing [Meleryn/dialogues/EP#MelB.d]: Parsing.Parse_error ERROR: compiling [Meleryn/dialogues/EP#MelB.d]! Stopping installation because of error. Relevant portion of EP#MelB.d; the SAY line in C1.2 is line 232, as referenced above: IF ~~ EP#MelRomanceTalk1.1_1 SAY ~A fine example of an independent spirit in action, to handle yourself as you do. I've traveled in good company, too. Been on my own since I left my friend Silvanestri in the High Forest to take up the hunt that brought me here. Times come when I have no animal friends to call on for help, so I appreciate having trusted companions with me.~ ++ ~Indeed, there's much to be said about good companionship!~ DO ~IncrementGlobal("EP#MelPCScore","GLOBAL",1)~ EXIT ++ ~Even if we can see to our own needs, having company feels better than being alone, sometimes. While I was growing up in Candlekeep, I enjoyed the times I spent with Imoen so much more than most of my moments alone.~ DO ~IncrementGlobal("EP#MelPCScore","GLOBAL",1)~ EXIT END // C1.2 IF ~InParty("EP#Mel") Global("EP#MelLovetalk","LOCALS",3)~ EP#MelRomanceTalk1.2 SAY ~Blah~ DO ~IncrementGlobal("EP#MelSelfSuf","GLOBAL",1)~ ++ ~Blah~ DO ~SetGlobalTimer("EP#MelRomance","GLOBAL",EP#Mel_TIMER) IncrementGlobal("EP#MelPCScore","GLOBAL",1)~ + EP#MelRomanceTalk1.2_1 ++ ~Blah~ DO ~SetGlobalTimer("EP#MelRomance","GLOBAL",EP#Mel_TIMER) IncrementGlobal("EP#MelPCScore","GLOBAL",-1)~ EXIT END Is this another case where there's a transition missing, or is something else causing the error? Please help! Thanks, Eric Link to comment
cmorgan Posted March 15, 2011 Share Posted March 15, 2011 SAY ~Blah~ DO ~IncrementGlobal("EP#MelSelfSuf","GLOBAL",1)~ doesn't work (probably cut and paste) Link to comment
ericp07 Posted March 15, 2011 Author Share Posted March 15, 2011 SAY ~Blah~ DO ~IncrementGlobal("EP#MelSelfSuf","GLOBAL",1)~ doesn't work (probably cut and paste) This has me very concerned. How can I set this up so it will work? Knowing that will help me clean up any other instances of this (of which I know there are several in my files). Do I need to set up the increment in the .baf, instead of in the .d? Code in haste, repent at leisure Thanks, Eric Link to comment
cmorgan Posted March 15, 2011 Share Posted March 15, 2011 IF ~~ EP#MelRomanceTalk1.1_1 SAY ~A fine example of an independent spirit in action, to handle yourself as you do. I've traveled in good company, too. Been on my own since I left my friend Silvanestri in the High Forest to take up the hunt that brought me here. Times come when I have no animal friends to call on for help, so I appreciate having trusted companions with me.~ ++ ~Indeed, there's much to be said about good companionship!~ DO ~IncrementGlobal("EP#MelPCScore","GLOBAL",1)~ EXIT ++ ~Even if we can see to our own needs, having company feels better than being alone, sometimes. While I was growing up in Candlekeep, I enjoyed the times I spent with Imoen so much more than most of my moments alone.~ DO ~IncrementGlobal("EP#MelPCScore","GLOBAL",1)~ EXIT END works - you have it right, with SAY as an island all by itself. Here, you have attached a transition to the SAY instead of the REPLY. Think about it this way. SAY is the launch platform. You just dumped the warhead on the platform. You need to load it into a launcher: these are the replies. The reply contains the transition, whether it be EXIT, EXTERN, etc. A rewrite of this to actually load the launchers woyld be to add it to the payload already created: // C1.2 IF ~InParty("EP#Mel") Global("EP#MelLovetalk","LOCALS",3)~ EP#MelRomanceTalk1.2 SAY ~Blah~ ++ ~Blah~ DO ~IncrementGlobal("EP#MelSelfSuf","GLOBAL",1) IncrementGlobal("EP#MelPCScore","GLOBAL",1) SetGlobalTimer("EP#MelRomance","GLOBAL",EP#Mel_TIMER)~ + EP#MelRomanceTalk1.2_1 ++ ~Blah~ DO ~IncrementGlobal("EP#MelSelfSuf","GLOBAL",1) IncrementGlobal("EP#MelPCScore","GLOBAL",-1) SetGlobalTimer("EP#MelRomance","GLOBAL",EP#Mel_TIMER)~ EXIT END You will also want to close off the variable that sets this to run, so // C1.2 IF ~InParty("EP#Mel") Global("EP#MelLovetalk","LOCALS",3)~ EP#MelRomanceTalk1.2 SAY ~Blah~ ++ ~Blah~ DO ~SetGlobal("EP#MelLovetalk","LOCALS",4) IncrementGlobal("EP#MelSelfSuf","GLOBAL",1) IncrementGlobal("EP#MelPCScore","GLOBAL",1) SetGlobalTimer("EP#MelRomance","GLOBAL",EP#Mel_TIMER)~ + EP#MelRomanceTalk1.2_1 ++ ~Blah~ DO ~SetGlobal("EP#MelLovetalk","LOCALS",4) IncrementGlobal("EP#MelSelfSuf","GLOBAL",1) IncrementGlobal("EP#MelPCScore","GLOBAL",-1) SetGlobalTimer("EP#MelRomance","GLOBAL",EP#Mel_TIMER)~ EXIT END Link to comment
ericp07 Posted March 16, 2011 Author Share Posted March 16, 2011 OK, yes, I see what you mean about transitions on REPLYs, and not on SAYs. Your analogy helps! Thanks, now I know how to proceed. - E Link to comment
ericp07 Posted March 21, 2011 Author Share Posted March 21, 2011 Got another one. Meleryn won't join a party that includes Edwin, Viconia, Xulaye, or any Invoker or Necromancer, because she opposes their ways. So, I've written what I thought was the correct way to account for this. I've examined my code several times, and tried a few different things, but for whatever reason, I can't find the error: [trigger list near line 40, column 67 of Meleryn/dialogues/EP#Mel.d] PARSE WARNING at line 40 column 1-18 Near Text: syntax error WARNING: cannot verify trigger ~EP#MelInvokHostile~: Parsing.Parse_error [Meleryn/dialogues/EP#Mel.d] PARSE ERROR at line 42 column 1-2 Near Text: IF syntax error [Meleryn/dialogues/EP#Mel.d] ERROR at line 42 column 1-2 Near Text: IF Parsing.Parse_error ERROR: parsing [Meleryn/dialogues/EP#Mel.d]: Parsing.Parse_error ERROR: compiling [Meleryn/dialogues/EP#Mel.d]! Stopping installation because of error. Here's the code block in question: IF ~~ EP#MelInitial SAY ~What's your name?~ ++ ~My name is <CHARNAME>. Well to you, Meleryn.~ + EP#MelPreJoin1 ++ ~I'm sorry, but I don't have time to talk with you right now.~ + EP#MelEndTalk ++ ~Perhaps later.~ + EP#MelFirstMeetDenied ++ ~A ranger, by the look of you. What's your combat specialty?~ + EP#MelFirstMeetCombatStyle + ~GlobalLT("Chapter","GLOBAL",3)~ + ~I don't need your services now, but perhaps you could help me. I'm looking for a mage named Irenicus. Have you heard of him?~ + EP#MelFirstMeetIren + ~GlobalGT("Chapter","GLOBAL",2)~ + ~I'm not sure I need another hand. What are your skills?~ + EP#MelFirstMeetSkills + ~RandomNum(3,1)~ + ~Leave me be.~ + EP#MelRefused1 + ~Global("EP#MelRedWizHostile","GLOBAL",1)~ + EP#MelRedWizHostile + ~Global("EP#MelInvokHostile","GLOBAL",1)~ + EP#MelInvokHostile + ~Global("EP#MelNecroHostile","GLOBAL",1)~ + EP#MelNecroHostile + ~Global("EP#MelDrowHostile","GLOBAL",1)~ + EP#MelDrowHostile IF ~~ EXIT END I have all conditions and variables set up in EP#Mel.baf (and can show any of those, if needed). What exactly is failing here that I'm not seeing? Please help! Thanks, Eric Link to comment
cmorgan Posted March 21, 2011 Share Posted March 21, 2011 Eric... 1. check your construction again. You have an unattended exit. If we are sticking with the analogy above, you have launcher missile missile missile missile If in chapter 1 or 2, a missile If in chapter 3 or above, a missile If (randomly, a 1 in 3 chance of it existing), a missile an unexploded warhead lying on top of all the missiles. And remember, the engine evaluates those missiles from bottom to top - the bottom reply state is the first missile that it attempts to fire, all the way up to the first one. So even if it did parse, you would only ever see the EXIT state. ~~ = ~there_are_no_conditions_on_this_so_do_it_immediately~ in this context, this means always exit the state without showing any responses = the equivalent of QUIT = closing the dialog box. You can't write IF ~~ EP#MelInitial SAY ~What's your name?~ ++ ~My name is <CHARNAME>. Well to you, Meleryn.~ + EP#MelPreJoin1 IF ~~ THEN EXIT END or even IF ~~ EP#MelInitial SAY ~What's your name?~ IF ~~ THEN EXIT ++ ~My name is <CHARNAME>. Well to you, Meleryn.~ + EP#MelPreJoin1 END Looking at it, it can't make sense, because you already have replies that show up with no other conditions. ++ = IF ~~ THEN REPLY, which means "if no condition, then show this string and allow the user to follow this pathway". Given this, the engine will evaluate in favor of IF ~~ EXIT. You will never see any replies. Recode to try: IF ~~ EP#MelInitial SAY ~What's your name?~ ++ ~My name is <CHARNAME>. Well to you, Meleryn.~ + EP#MelPreJoin1 ++ ~I'm sorry, but I don't have time to talk with you right now.~ + EP#MelEndTalk ++ ~Perhaps later.~ + EP#MelFirstMeetDenied ++ ~A ranger, by the look of you. What's your combat specialty?~ + EP#MelFirstMeetCombatStyle + ~GlobalLT("Chapter","GLOBAL",3)~ + ~I don't need your services now, but perhaps you could help me. I'm looking for a mage named Irenicus. Have you heard of him?~ + EP#MelFirstMeetIren + ~GlobalGT("Chapter","GLOBAL",2)~ + ~I'm not sure I need another hand. What are your skills?~ + EP#MelFirstMeetSkills + ~RandomNum(3,1)~ + ~Leave me be.~ + EP#MelRefused1 IF ~Global("EP#MelRedWizHostile","GLOBAL",1)~ THEN GOTO EP#MelRedWizHostile IF ~Global("EP#MelInvokHostile","GLOBAL",1)~ THEN GOTO EP#MelInvokHostile IF ~Global("EP#MelNecroHostile","GLOBAL",1)~ THEN GOTO EP#MelNecroHostile IF ~Global("EP#MelDrowHostile","GLOBAL",1)~ THEN GOTO EP#MelDrowHostile END 2. Can someone confirm this usage? I am not sure about it - I'd write + ~Global("EP#MelRedWizHostile","GLOBAL",1)~ + EP#MelRedWizHostile as IF ~Global("EP#MelRedWizHostile","GLOBAL",1)~ THEN GOTO EP#MelRedWizHostile I am pretty sure that you ave to do the longhand if you are using it in this way. + ~condition~ + ~replystatetext~ + newstate ++ ~replystate~ + newstate both are standard and valid, but I don't remember seeing + ~condition~ + newstate (How would weidu be able to tell the difference between + ~condition~ + ~replystatetext~ + newstate and + ~condition~ + newstate ?) 3. The first part of your post, the unverified trigger ~EP#MelInvokHostile~, probably is where you still have that without the rest of the code; ~Global("EP#MelInvokHostile","GLOBAL",1)~ or something like that. Link to comment
ericp07 Posted March 21, 2011 Author Share Posted March 21, 2011 I found part of the problem: I didn't have Global("EP#MelInvokHostile","GLOBAL",0) in the conditions of the relevant script block in EP#Mel.baf. I've corrected that, but I get the exact same error messages when I try installing again. I'm reading through your explanation, cmorgan, and I thank you for your patience in explaining all this. I don't yet see how and why it works as it does, I guess because I'm still trying to sort out when and how to use shorthand, and I'm not yet to the point where I can scan a page of text and spot the errors without slowly reading through everything. Still trying to fix this... [Edit]OK, maybe GOTO is really needed in those spots where the variables related to Invokers and Necromancers are checked. I'll see if making that change will solve the problem.[/Edit] - E Link to comment
Recommended Posts
Archived
This topic is now archived and is closed to further replies.