Monday, 24 October 2011

Difficult Times

Daisy When Her Eye Was Good (Only a few weeks ago.)

Every now and then, events in life mount up against you and make things more difficult or stressful than usual. When such times occur, they seem to dominate a lot of your time and thinking, and virtual worlds have to take a back seat, especially if one is not feeling that well themselves. The last few weeks have been like that!

I apologise in advance, but this post will be a little rare on news regarding the module. I have been dropping into the toolset on moments of rare respite, but will now simply explain what has kept me from doing it as much as I would have liked:-

1) First and foremost, Daisy, another one of our pet rabbits has been taken ill. I noticed a small discolouration in her eye about 10 days ago, and since taking her to the vets, I have found out that it may be to do with the Encephalitozzon Cuniculi parasite, which had also given Honey, another one of our rabbits a health problem as well (but had not affected the eye in her case). This time, however, even with treatment, there is a possibility that Daisy might have to have her eye removed, which is a dangerous operation for rabbits. Daisy is a feisty young female rabbit and administering the treatment has not been easy - and is stressful for everybody involved, even when I try to be as quick and straightforward as possible. Time will tell how well the treatment works for her.

2) Both my wife and I have been suffering from "colds". Although while she still manages to get into work, I have been restricted to laying in bed some days. (Having M.E. makes these sorts of things more difficult to cope with.) As you can imagine, trying to cope with a sick rabbit while more sick than usual yourself is not easy.

3) Personal circumstances involving a neighbour have added to the stress levels of late. To be clear, my wife and I get along with the neighbours fine, but (without going into details), their current personal situation has indirectly involved us (as neighbours) and is taking some of my attention to help resolve. Not being well at the best of times means dealing with such situations prevents me from dealing with much else, including my hobby.

4) Lastly, with everything else going on, I have had little or no time to be creative, and so instead have tried to finish reading a book entitled, "Does God Believe In Atheists?" by John Blanchard. This, in turn, added to my interests in understanding more about God's plan of Predestination and Man's Freewill. So, in the little time I have had between dealing with sickness (personal and with Daisy), my head has been spinning with that issue .... unable to think about the module due to everything else going on. Isn't it strange how your mind latches onto certain topics when you are unwell.

At the moment, I am still suffering and taking over-the-counter remedies to help bring relief. Some days are better than others, but I am still not well enough to cope with the other aspects going on in my life at the moment and so (probably) not much work will be done on the module until at least one or two of the above situations is resolved. I think if I saw definite improvements in Daisy, and my wife and I could be rid of our current infections, then coping with other issues will become easier and I should be able to get back into a slow-paced, but steady approach to continue chipping away at it again.

In brief ... I'm sicker than usual ... coping strategies are compromised ... external situations are testing those strategies to the limit ... nothing left in me to do much else ... even if I want to. :(

Thursday, 6 October 2011

Monster AI: Supernatural Abilities v Item Immunities

Over the past few days I have been coding some AI (artificial intelligence) for a creature that the heroes can encounter. As the creature I had in mind was not already included in the game, I decided to script the creature's special abilities myself. In the process of doing this, I realised that my own understanding of the "supernatural rule" with respect to "immunities" may be wrong.

What Is Immunity?

When referring to the 3E core rules, supernatural abilities of creatures are those magical abilities that go away in an anti-magic field, but are not subject to spell resistance. Yet, the rules are a little more vague when it comes to the meaning of "immunity" in general, with respect to either of these other two terms. For instance, according to 3E rules, an elf is immune to sleep. I understand this to mean that an elf will not be subject to any form of magic that will cause it to sleep: whether by spells or supernatural effects!

In NWN, a PC can acquire items that offer various forms of "immunity". However, I am beginning to think that using the term "immunity" in this sense is a bit of a misnomer. The reason I say this, is because when checking scripts of supernatural effects, they do NOT check for items that offer immunity against them. Therefore, this would suggest that the term "immunity" in this sense is better translated as "a 100% spell resistance to a certain spell or type of spell". e.g. Immunity to "death" means a 100% spell resistance to spells and spell-like abilities that result in instant death, as opposed to instant death caused by a supernatural gaze attack. Therefore, an item "immunity" does not mean the same thing as an elf's "immunity to sleep".

Immunities In Play

Having given this some thought, I believe I am going to change the description of an item offering "Immunity" to something like "100% Spell Resistance to xxxx" to help avoid any confusion. Or, maybe try to make it clear that supernatural effects are not counted as those effects covered by immunities.

UPDATE: I believe I have all the information regarding the way immunities handle supernatural effects and have decided to make being immune to something, immune to everything that fits the description, including supernatural sources.

My conclusions are simply that a spell (or effect or special ability) script called from an ExecuteScript function does not allow the immunity check functions to work properly if it uses them. Therefore, any scripts that require immunity checking called via ExecuteScript require their own custom immunity checks added to the code. If the same scripts are called as a "spell" using their (if added) spells.2da row number, then the OC immunity check functions appear to work fine.