From: Jaka K. <lyn...@us...> - 2012-12-28 21:33:00
|
gemrb: Infinity Engine emulator The branch master has been updated via 14ce76b78a34b060ac587a865cf836e59d73acbe (commit) via 8ae65a099af25a85d2f2336dfa94cc6db600e0d9 (commit) via 0220ef45d8eced5b0e6504291861eff2a4a26edf (commit) Summary of changes: gemrb/GUIScripts/ie_feats.py | 4 ++-- gemrb/GUIScripts/iwd2/GUIREC.py | 13 +++++++------ gemrb/core/Scriptable/Actor.cpp | 2 +- gemrb/plugins/GUIScript/GUIScript.cpp | 11 +++++++++-- 4 files changed, 19 insertions(+), 11 deletions(-) from 598aa8cd10506e8786d09fa5e360d2f5544aaf52 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://gemrb.git.sourceforge.net/git/gitweb.cgi?p=gemrb/gemrb;a=commitdiff;h=14ce76b78a34b060ac587a865cf836e59d73acbe commit 14ce76b78a34b060ac587a865cf836e59d73acbe Author: Jaka Kranjc <lyn...@us...> Date: Fri Dec 28 22:28:27 2012 +0100 iwd2: fixed spell failure calculation to consider gear properly diff --git a/gemrb/GUIScripts/iwd2/GUIREC.py b/gemrb/GUIScripts/iwd2/GUIREC.py index 2ff0b2d..2514b2c 100644 --- a/gemrb/GUIScripts/iwd2/GUIREC.py +++ b/gemrb/GUIScripts/iwd2/GUIREC.py @@ -632,8 +632,9 @@ def DisplayWeapons (pc): RecordsTextArea.Append ("[/color]\n") # Casting Failure - total = GemRB.GetSpellFailure (pc) - other = 5*(tohit["Armor"] + tohit["Shield"]) - 5*GemRB.HasFeat(pc, FEAT_ARMORED_ARCANA) + failure = GemRB.GetSpellFailure (pc) + total = failure["Total"] + other = 5*(failure["Armor"] + failure["Shield"]) - 5*GemRB.HasFeat(pc, FEAT_ARMORED_ARCANA) # account for armored arcana only if it doesn't cause a negative value (eating into the misc bonus) verbose = 0 if other < 0: @@ -643,13 +644,13 @@ def DisplayWeapons (pc): verbose = 1 RecordsTextArea.Append (delimited_txt (41390 , ":", str (total)+"%", 0)) # Armor Penalty (same as for skills and everything else) - if verbose and tohit["Armor"]: + if verbose and failure["Armor"]: AddIndent() - RecordsTextArea.Append (delimited_txt (39816 , ":", PlusMinusStat(5*tohit["Armor"])+"%", 0)) + RecordsTextArea.Append (delimited_txt (39816 , ":", PlusMinusStat(5*failure["Armor"])+"%", 0)) # Shield Penalty - if verbose and tohit["Shield"]: + if verbose and failure["Shield"]: AddIndent() - RecordsTextArea.Append (delimited_txt (39822, ":", PlusMinusStat(5*tohit["Shield"])+"%", 0)) + RecordsTextArea.Append (delimited_txt (39822, ":", PlusMinusStat(5*failure["Shield"])+"%", 0)) # Other, just a guess to show the remainder if other: AddIndent() diff --git a/gemrb/plugins/GUIScript/GUIScript.cpp b/gemrb/plugins/GUIScript/GUIScript.cpp index 43b1f90..37e30d5 100644 --- a/gemrb/plugins/GUIScript/GUIScript.cpp +++ b/gemrb/plugins/GUIScript/GUIScript.cpp @@ -9964,9 +9964,16 @@ static PyObject* GemRB_GetSpellFailure(PyObject * /*self*/, PyObject* args) GET_GAME(); GET_ACTOR_GLOBAL(); + PyObject *failure = PyDict_New(); // true means arcane, so reverse the passed argument - int failure = actor->GetSpellFailure(!cleric); - return PyInt_FromLong(failure); + PyDict_SetItemString(failure, "Total", PyInt_FromLong (actor->GetSpellFailure(!cleric))); + // set also the shield and armor penalty - we can't reuse the ones for to-hit boni, since they also considered armor proficiency + int am = 0, sm = 0; + actor->GetArmorFailure(0, am, sm); + PyDict_SetItemString(failure, "Armor", PyInt_FromLong (am)); + PyDict_SetItemString(failure, "Shield", PyInt_FromLong (sm)); + + return failure; } PyDoc_STRVAR( GemRB_IsDualWielding__doc, http://gemrb.git.sourceforge.net/git/gitweb.cgi?p=gemrb/gemrb;a=commitdiff;h=8ae65a099af25a85d2f2336dfa94cc6db600e0d9 commit 8ae65a099af25a85d2f2336dfa94cc6db600e0d9 Author: Jaka Kranjc <lyn...@us...> Date: Fri Dec 28 22:14:21 2012 +0100 Actor::GetSpellFailure: don't take armor proficiency into account only armored arcana levels can help diff --git a/gemrb/core/Scriptable/Actor.cpp b/gemrb/core/Scriptable/Actor.cpp index 38654b7..7410258 100644 --- a/gemrb/core/Scriptable/Actor.cpp +++ b/gemrb/core/Scriptable/Actor.cpp @@ -2430,7 +2430,7 @@ ieDword Actor::GetSpellFailure(bool arcana) const } if (!arcana) return base; - ieDword armor = -GetArmorFailure(); + ieDword armor = -GetArmorFailure(0); if (armor) { ieDword feat = GetFeat(FEAT_ARMORED_ARCANA); http://gemrb.git.sourceforge.net/git/gitweb.cgi?p=gemrb/gemrb;a=commitdiff;h=0220ef45d8eced5b0e6504291861eff2a4a26edf commit 0220ef45d8eced5b0e6504291861eff2a4a26edf Author: Jaka Kranjc <lyn...@us...> Date: Fri Dec 28 22:07:44 2012 +0100 fixed armored arcana / armor proficiency feat id on the py side too core got the fix in 56305fe22ab but I forgot to sync the copy diff --git a/gemrb/GUIScripts/ie_feats.py b/gemrb/GUIScripts/ie_feats.py index a28879d..d3cde78 100644 --- a/gemrb/GUIScripts/ie_feats.py +++ b/gemrb/GUIScripts/ie_feats.py @@ -22,8 +22,8 @@ FEAT_AEGIS_OF_RIME = 0 FEAT_AMBIDEXTERITY = 1 FEAT_AQUA_MORTIS = 2 -FEAT_ARMORED_ARCANA = 3 -FEAT_ARMOUR_PROFICIENCY = 4 +FEAT_ARMOUR_PROFICIENCY = 3 +FEAT_ARMORED_ARCANA = 4 FEAT_ARTERIAL_STRIKE = 5 FEAT_BLIND_FIGHT = 6 FEAT_BULLHEADED = 7 ----------------------------------------------------------------------- This is an automated email from the git hooks/post-receive script. -- gemrb: Infinity Engine emulator |