Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
I'll tell you the way I've heard it works, but this is from memory and it's been a long time since I looked it up.
The mechanics under the hood is that protection from undead makes it so that half of the actions against the person with the ring fail if the attacker is undead. So an undead who targets you will only get to attack half the time. This can also affect spells, but if it's a group wide spell it will actually target someone at random and if that person has the correct item it will roll to see if the entire party is affected.
There are different rules for elemental protections (like the fire chain, rod, etc).
Here is how the code works for something like BREATH (I omitted MOST of the procedure and only showing the line we are concerned with).
[This line says, if you make your LUCK saving throw, you take 1/2 dmg]
IF (RANDOM MOD 20) >= CHARACTR[ CHARX].LUCKSKIL[ 3] THEN
HITDAM := (HITDAM + 1) DIV 2;
[this line says if you have an "item VS special attack type breath" then you take 1/2 dmg.]
IF CHARACTR[ CHARX].WEPVSTY3[ 1][ BATTLERC[ BATG].B.BREATHE] THEN
HITDAM := (HITDAM + 1) DIV 2;
So that's typical of other saving throws, but lets look at level drain procedure!
[this line says if you are victim of level drain and have an items VS special attack type drain then EXIT the level drain procedure! Thus avoiding level drain]
IF CHARACTR[ MYVICTIM].WEPVSTY3[ 1][ 4] THEN
EXIT( DRAINLEV);
So It would seem that ring would stop you from being level drained.
I'm going to patch the code so that I have a full party all with undead protection rings and roam around until I find a bunch of vampires. Then I'll just parry for about 5 or 6 rounds and see if anyone gets drained.
I believe that will put this to rest.
Thanks for the quest!
Enjoy.
I do believe the PASCAL code disagrees with that analysis. I'll admit, I'm leaving a bit of room here that I could be mistaken and that's why I wanted to run the test. The code where undead attacks occur determine first if they can hit you at all. If they can't hit you, then you skip the whole level drain routine. But its very weird, because it seems to target 2 characters at a time and if one resists it might default to hit the other one. Even if the first character avoids it due to having a protection of some sort.
Its very confusing the way they wrote the code, and it almost seems they wrote it like that on purpose because it would have been much simpler to case loops. But they didn't and there are weird calls to variables in memory that aren't even used!
I'll test it when I get a bit more free time. I have 5 kids so free time is at a minimum.
What you said about drain protection lines up with his assessment of the "Protection: elemental protection"
Later in the article he identified that the Ring of undead protection had "Class protection: undead", while they list the shuriken as "Elemental protection: Poison Drain".
I think what you're saying lines up with what he's saying, except what kind of protection the ring itself falls under.
I think their vision of the initial design of wizardry exceeded the disk space available on the apple platform at that time and thus unused or needlessly convoluted code.