This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
user:loggy:castingai [2022/02/15 00:25] loggy |
user:loggy:castingai [2023/02/04 02:24] loggy fix pen/mr banding |
||
---|---|---|---|
Line 6: | Line 6: | ||
The battlefield location array seems to be stored with offsets of %%((coord2 * 200) + coord 1) * 0x20%% | The battlefield location array seems to be stored with offsets of %%((coord2 * 200) + coord 1) * 0x20%% | ||
+ | Or is it? | ||
+ | |||
+ | When looking for specific units in squares, it's instead %%(index, 0-7 inclusive + ((coord2 * 200) + coord1) * 8)%% | ||
Line 25: | Line 28: | ||
* 4, cause fear type 1 [1] | * 4, cause fear type 1 [1] | ||
* 7, poison damage [1] | * 7, poison damage [1] | ||
- | * 8, remove fatigue? [0] | + | * 8, remove fatigue? [-1] |
* 9, undocumented | * 9, undocumented | ||
- | * 10, bless/buff type 1 [0] | + | * 10, bless/buff type 1 [-1] |
* 11, cause affliction [1] | * 11, cause affliction [1] | ||
- | * 13, heal [0] | + | * 13, heal [-1] |
- | * 23, buff type 2 [0] | + | * 23, buff type 2 [-1] |
* 24, damage x3 vs demon/ | * 24, damage x3 vs demon/ | ||
* 28, enslave [1] | * 28, enslave [1] | ||
Line 142: | Line 145: | ||
* If the spell' | * If the spell' | ||
* square spread = 1 | * square spread = 1 | ||
- | * accurate square weight = min(1, aoe) * number of effects * 20 | + | * accurate square weight = max(1, aoe) * number of effects * 20 |
- | * inaccurate square weight = min(1, aoe) * number of effects * 10 | + | * inaccurate square weight = max(1, aoe) * number of effects * 10 |
* If the final precision is 90+ OR the distance being aimed at is less than (final prec/3): | * If the final precision is 90+ OR the distance being aimed at is less than (final prec/3): | ||
* square spread = 0 | * square spread = 0 | ||
Line 161: | Line 164: | ||
* If the square struck was the originally picked square at the centre of the square spread (and not the extra ones around it), add (this square' | * If the square struck was the originally picked square at the centre of the square spread (and not the extra ones around it), add (this square' | ||
* If the total score from all the squares is greater than 0: | * If the total score from all the squares is greater than 0: | ||
- | * score = max(1, -5 + closed d10 + (score / 100)) | + | * score = max(1, -5 + closed d10 + (score / 100)) [This divides the weighting multiplied scores from the above by 100 regardless of which spread/ |
- | * If the spell is being aimed less than 10 squares from the caster, some enemies were considered by the spell, and the spell would affect | + | * If the spell is being aimed less than 10 squares from the caster, and the spell is an offensive effect number (effects that returned 1 on the list somewhere above) |
* score = max(1, (score * 10)/max(2, distance from caster)) | * score = max(1, (score * 10)/max(2, distance from caster)) | ||
* Otherwise: | * Otherwise: | ||
Line 283: | Line 286: | ||
* If the spell offers an easy mr check, consider victim' | * If the spell offers an easy mr check, consider victim' | ||
* If the spell does not offer a normal MR check, and (user' | * If the spell does not offer a normal MR check, and (user' | ||
- | * If the spell offers a normal MR check: | + | * If the spell offers a normal MR check, do the first one that applies: |
- | * if (mr > pen bonus + 8), do nothing to damage | + | * if (mr >= pen bonus + 23), divide |
- | * if (mr < pen bonus + 11), multiply | + | * if (mr >= pen bonus + 20), divide |
- | * if (mr < pen bonus + 14), divide damage by 2 | + | * if (mr >= pen bonus + 17), divide damage by 6 |
- | * if (mr < pen bonus + 17), divide damage by 6 | + | * if (mr >= pen bonus + 14), divide damage by 3 |
- | * if (mr < pen bonus + 20), divide damage by 12 | + | * if (mr >= pen bonus + 11), divide damage by 2 |
- | * if (mr < pen bonus + 23), divide | + | * if (mr >= pen bonus + 8), multiply |
+ | * Otherwise, do nothing to damage | ||
If MR check for half damage, multiply damage by 2/3 [shouldn' | If MR check for half damage, multiply damage by 2/3 [shouldn' |