Mercurial > mm7
comparison Player.cpp @ 118:acff5a5d563b
Items bonus fix
author | Ritor1 |
---|---|
date | Sun, 10 Feb 2013 23:06:36 +0600 |
parents | 81e93310f73c |
children | 1c471f3629fb |
comparison
equal
deleted
inserted
replaced
117:ff2dbca3de20 | 118:acff5a5d563b |
---|---|
3387 | 3387 |
3388 if ( a2 >= 16 ) | 3388 if ( a2 >= 16 ) |
3389 { | 3389 { |
3390 v6 = 0; | 3390 v6 = 0; |
3391 while ( !HasItemEquipped((ITEM_EQUIP_TYPE)v6) | 3391 while ( !HasItemEquipped((ITEM_EQUIP_TYPE)v6) |
3392 || *(int *)&this->spellbook.pDarkSpellbook.bIsSpellAvailable[36 * *(int *)v7 + 5] != a1 ) | 3392 || *(int *)&this->pInventoryItems[a2-1].uItemID != a1 ) |
3393 { | 3393 { |
3394 ++v6; | 3394 ++v6; |
3395 if ( (signed int)v6 >= 16 ) | 3395 if ( (signed int)v6 >= 16 ) |
3396 return 0; | 3396 return 0; |
3397 } | 3397 } |
5448 { | 5448 { |
5449 if ( IsUnarmed() != 1 ) | 5449 if ( IsUnarmed() != 1 ) |
5450 { | 5450 { |
5451 if ( v6->HasItemEquipped(EQUIP_TWO_HANDED) ) | 5451 if ( v6->HasItemEquipped(EQUIP_TWO_HANDED) ) |
5452 { | 5452 { |
5453 v22 = v21->GetEquippedItemEquipType(1u); | 5453 v22 = this->GetEquippedItemEquipType(1u); |
5454 if ( v22 >= 0 ) | 5454 if ( v22 >= 0 ) |
5455 { | 5455 { |
5456 if ( v22 <= 2 ) | 5456 if ( v22 <= 2 ) |
5457 { | 5457 { |
5458 if ( v6->pEquipment.uOffHand || (v24 = v23, pItemsTable->pItems[v23].uSkillType != 4) ) | 5458 v23 = this->pInventoryItems[this->pEquipment.uMainHand].uItemID; |
5459 if ( v6->pEquipment.uOffHand || pItemsTable->pItems[v23].uSkillType != 4 ) | |
5459 { | 5460 { |
5460 v24 = v23; | 5461 v24 = v23; |
5461 v26 = pItemsTable->pItems[v23].uDamageRoll; | 5462 v26 = pItemsTable->pItems[v23].uDamageRoll; |
5462 v25 = pItemsTable->pItems[v23].uDamageDice; | 5463 v25 = pItemsTable->pItems[v23].uDamageDice; |
5463 } | 5464 } |
5494 v5 = 0; | 5495 v5 = 0; |
5495 return v5 + v62 + v61; | 5496 return v5 + v62 + v61; |
5496 } | 5497 } |
5497 if ( v6->HasItemEquipped(EQUIP_TWO_HANDED) ) | 5498 if ( v6->HasItemEquipped(EQUIP_TWO_HANDED) ) |
5498 { | 5499 { |
5499 v17 = v16->GetEquippedItemEquipType(1u); | 5500 v17 = this->GetEquippedItemEquipType(1u); |
5500 if ( v17 >= 0 ) | 5501 if ( v17 >= 0 ) |
5501 { | 5502 { |
5502 if ( v17 <= 2 ) | 5503 if ( v17 <= 2 ) |
5503 v5 = pItemsTable->pItems[*(int *)&v6->spellbook.pDarkSpellbook.bIsSpellAvailable[36 * v6->pEquipment.uMainHand + 5]].uDamageMod; | 5504 v5 = pItemsTable->pItems[*(int *)&v6->spellbook.pDarkSpellbook.bIsSpellAvailable[36 * v6->pEquipment.uMainHand + 5]].uDamageMod; |
5504 } | 5505 } |
5515 v5 = 1; | 5516 v5 = 1; |
5516 return v5 + v62 + v61; | 5517 return v5 + v62 + v61; |
5517 } | 5518 } |
5518 if ( v6->HasItemEquipped(EQUIP_TWO_HANDED) ) | 5519 if ( v6->HasItemEquipped(EQUIP_TWO_HANDED) ) |
5519 { | 5520 { |
5520 v9 = v8->GetEquippedItemEquipType(1u); | 5521 v9 = this->GetEquippedItemEquipType(1u); |
5521 if ( v9 >= 0 ) | 5522 if ( v9 >= 0 ) |
5522 { | 5523 { |
5523 if ( v9 <= 2 ) | 5524 if ( v9 <= 2 ) |
5524 { | 5525 { |
5525 v5 = pItemsTable->pItems[v10].uDamageDice + pItemsTable->pItems[v10].uDamageMod; | 5526 v5 = pItemsTable->pItems[this->pInventoryItems[this->pEquipment.uMainHand].uItemID].uDamageDice + pItemsTable->pItems[this->pInventoryItems[this->pEquipment.uMainHand].uItemID].uDamageMod; |
5526 if ( !v6->pEquipment.uOffHand ) | 5527 if ( !v6->pEquipment.uOffHand ) |
5527 { | 5528 { |
5528 if ( pItemsTable->pItems[v10].uSkillType == 4 ) | 5529 if ( pItemsTable->pItems[this->pInventoryItems[this->pEquipment.uMainHand].uItemID].uSkillType == 4 ) |
5529 ++v5; | 5530 ++v5; |
5530 } | 5531 } |
5531 } | 5532 } |
5532 } | 5533 } |
5533 } | 5534 } |
5534 if ( a3 || !v6->HasItemEquipped((ITEM_EQUIP_TYPE)0) || (v12 = v11->GetEquippedItemEquipType(0), v12 < 0) || v12 > 2 ) | 5535 if ( a3 || !v6->HasItemEquipped((ITEM_EQUIP_TYPE)0) || (v12 = v11->GetEquippedItemEquipType(0), v12 < 0) || v12 > 2 ) |
5535 return v5 + v62 + v61; | 5536 return v5 + v62 + v61; |
5536 v14 = pItemsTable->pItems[v13].uDamageMod; | 5537 v14 = pItemsTable->pItems[this->pInventoryItems[this->pEquipment.uOffHand].uItemID].uDamageMod; |
5537 v15 = pItemsTable->pItems[v13].uDamageDice; | 5538 v15 = pItemsTable->pItems[this->pInventoryItems[this->pEquipment.uOffHand].uItemID].uDamageDice; |
5538 LABEL_88: | 5539 LABEL_88: |
5539 v5 += v15 + v14; | 5540 v5 += v15 + v14; |
5540 } | 5541 } |
5541 return v5 + v62 + v61; | 5542 return v5 + v62 + v61; |
5542 } | 5543 } |
6039 v9 = &v2->pEquipment; | 6040 v9 = &v2->pEquipment; |
6040 while ( 1 ) | 6041 while ( 1 ) |
6041 { | 6042 { |
6042 if ( v2->HasItemEquipped(v71) ) | 6043 if ( v2->HasItemEquipped(v71) ) |
6043 { | 6044 { |
6044 v11 = (PLAYER_SKILL_TYPE)pItemsTable->pItems[*(int *)&v2->spellbook.pDarkSpellbook.bIsSpellAvailable[36 * v9->uOffHand + 5]].uSkillType; | 6045 v11 = (PLAYER_SKILL_TYPE)pItemsTable->pItems[v2->pInventoryItems[*(_DWORD *)v9].uItemID].uEquipType; |
6045 LOBYTE(v12) = v10->GetActualSkillLevel(v11); | 6046 LOBYTE(v12) = this->GetActualSkillLevel(v11); |
6046 a1 = v12; | 6047 a1 = v12; |
6047 SkillToMastery(v12); | 6048 SkillToMastery(v12); |
6048 v13 = v11 - 5; | 6049 v13 = v11 - 5; |
6049 if ( !v13 ) | 6050 if ( !v13 ) |
6050 return a1 & 0x3F; | 6051 return a1 & 0x3F; |
6097 v20 = (ITEM_EQUIP_TYPE)0; | 6098 v20 = (ITEM_EQUIP_TYPE)0; |
6098 while ( 1 ) | 6099 while ( 1 ) |
6099 { | 6100 { |
6100 if ( v2->HasItemEquipped(v20) ) | 6101 if ( v2->HasItemEquipped(v20) ) |
6101 { | 6102 { |
6102 v22 = *(int *)&v2->spellbook.pDarkSpellbook.bIsSpellAvailable[36 * *(int *)v21 + 5]; | 6103 v22 = this->pInventoryItems[this->pEquipment.pIndices[v20]].uItemID; |
6103 if ( pItemsTable->pItems[v22].uEquipType <= 1u ) | 6104 if ( pItemsTable->pItems[v22].uEquipType <= 1u ) |
6104 break; | 6105 break; |
6105 } | 6106 } |
6106 v20 = (ITEM_EQUIP_TYPE)((int)v20 + 1); | 6107 v20 = (ITEM_EQUIP_TYPE)((int)v20 + 1); |
6107 if ( (signed int)v20 >= 16 ) | 6108 if ( (signed int)v20 >= 16 ) |
6150 if ( v23 > PLAYER_SKILL_SPEAR ) | 6151 if ( v23 > PLAYER_SKILL_SPEAR ) |
6151 { | 6152 { |
6152 if ( v23 == PLAYER_SKILL_MACE ) | 6153 if ( v23 == PLAYER_SKILL_MACE ) |
6153 { | 6154 { |
6154 v28 = __OFSUB__(v26, 2); | 6155 v28 = __OFSUB__(v26, 2); |
6155 v27 = ((v26 - 2) & 0x80000000u) != 0; | 6156 v27 = v26 - 2 < 0; |
6156 goto LABEL_53; | 6157 goto LABEL_53; |
6157 } | 6158 } |
6158 LABEL_55: | 6159 LABEL_55: |
6159 v30 = v71 * (v25 & 0x3F); | 6160 v30 = v71 * (v25 & 0x3F); |
6160 return (int)((char *)v69 + v30); | 6161 return (int)((char *)v69 + v30); |
6161 } | 6162 } |
6162 v28 = __OFSUB__(v26, 3); | 6163 v28 = __OFSUB__(v26, 3); |
6163 v27 = ((v26 - 3) & 0x80000000u) != 0; | 6164 v27 = v26 - 3 < 0; |
6164 } | 6165 } |
6165 LABEL_53: | 6166 LABEL_53: |
6166 if ( !(v27 ^ v28) ) | 6167 if ( !(v27 ^ v28) ) |
6167 v71 = (ITEM_EQUIP_TYPE)1; | 6168 v71 = (ITEM_EQUIP_TYPE)1; |
6168 goto LABEL_55; | 6169 goto LABEL_55; |
6182 v68 = 0; | 6183 v68 = 0; |
6183 while ( 1 ) | 6184 while ( 1 ) |
6184 { | 6185 { |
6185 if ( v2->HasItemEquipped(v35) ) | 6186 if ( v2->HasItemEquipped(v35) ) |
6186 { | 6187 { |
6187 v37 = *(int *)&v2->spellbook.pDarkSpellbook.bIsSpellAvailable[36 * *(int *)v36 + 5]; | 6188 v37 = *(int *)&v2->pInventoryItems[v35].uItemID; |
6188 if ( pItemsTable->pItems[v37].uEquipType <= 1u ) | 6189 if ( pItemsTable->pItems[v37].uEquipType <= 1u ) |
6189 break; | 6190 break; |
6190 } | 6191 } |
6191 v35 = (ITEM_EQUIP_TYPE)((int)v35 + 1); | 6192 v35 = (ITEM_EQUIP_TYPE)((int)v35 + 1); |
6192 if ( (signed int)v35 >= 16 ) | 6193 if ( (signed int)v35 >= 16 ) |