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 )