As before, bootstrap the new (equippable) Shield Bash attack to the shields. Then add this code to shields (there's a better hierarchical way to apply this, but I'm going the easy route here).
@Final Phase (users) 5500
Code:
~ Work out if we're equipped, or, if we're the child of a magic item,
~ if our parent is equipped.
var result as number
result = field[gIsEquip].value
if (container.ishero = 0) then
result += container.parent.field[gIsEquip].value
endif
~ If shield bash is being used, allow for use of shield and bash.
~ Remove shield AC if equipped, unless Improved Shield Bash exists.
if (result <> 0) then
var ac as number
if (container.ishero = 0) then
if (container.parent.gizmo.child[wShldBash].field[gIsEquip].value <> 0) then
perform hero.assign[Hero.ShldOffOK]
if (#hasfeat[fImpShBash] = 0) then
ac = container.parent.field[mAC].value + container.parent.field[BonEnhance].value
endif
hero.child[ArmorClass].field[tACShield].value -= ac
elseif (container.parent.gizmo.child[wShldBash].field[wIs2nd].value <> 0) then
perform hero.assign[Hero.ShldOffOK]
if (#hasfeat[fImpShBash] = 0) then
ac = container.parent.field[mAC].value + container.parent.field[BonEnhance].value
endif
hero.child[ArmorClass].field[tACShield].value -= ac
endif
elseif (hero.child[wShldBash].field[gIsEquip].value <> 0) then
perform hero.assign[Hero.ShldOffOK]
if (#hasfeat[fImpShBash] = 0) then
ac = field[mAC].value
endif
hero.child[ArmorClass].field[tACShield].value -= ac
elseif (hero.child[wShldBash].field[wIs2nd].value <> 0) then
perform hero.assign[Hero.ShldOffOK]
if (#hasfeat[fImpShBash] = 0) then
ac = field[mAC].value
endif
hero.child[ArmorClass].field[tACShield].value -= ac
endif
endif
Let me know if that works.