|
From: <kw...@us...> - 2002-10-26 08:14:03
|
Update of /cvsroot/decaldev/source/DecalFilters
In directory usw-pr-cvs1:/tmp/cvs-serv7338
Modified Files:
CharacterStats.cpp
Log Message:
death removes non-item enchantments
revised vitae calculations
Index: CharacterStats.cpp
===================================================================
RCS file: /cvsroot/decaldev/source/DecalFilters/CharacterStats.cpp,v
retrieving revision 1.32
retrieving revision 1.33
diff -C2 -d -r1.32 -r1.33
*** CharacterStats.cpp 25 Oct 2002 22:52:06 -0000 1.32
--- CharacterStats.cpp 26 Oct 2002 08:13:58 -0000 1.33
***************
*** 255,259 ****
else if (vType.lVal == 0x19) Level = vVal.lVal;
else if (vType.lVal == 0x1E) Rank = vVal.lVal;
! else if (vType.lVal == 0x2B) Deaths = vVal.lVal;
else if (vType.lVal == 0x62) Birth = vVal.lVal;
else if (vType.lVal == 0x7D) Age = vVal.lVal;
--- 255,278 ----
else if (vType.lVal == 0x19) Level = vVal.lVal;
else if (vType.lVal == 0x1E) Rank = vVal.lVal;
! else if (vType.lVal == 0x2B)
! {
! Deaths = vVal.lVal;
!
! // Remove all but item based enchantments
! for (std::list<cEnchantment *>::iterator tpi = Enchantments.begin(); tpi != Enchantments.end(); tpi++)
! {
! time_t CurrentTime = time(NULL);
! long SecondsLeft = (*tpi)->ExpireTime - CurrentTime;
!
! if ( SecondsLeft >= 0 )
! {
! delete *tpi;
! Enchantments.erase(tpi--);
! }
! }
!
! RecalcSecStats();
! RecalcSkills();
! }
else if (vType.lVal == 0x62) Birth = vVal.lVal;
else if (vType.lVal == 0x7D) Age = vVal.lVal;
***************
*** 540,550 ****
IMessageMember* pVitae = (IMessageMember*) vVitae.pdispVal;
pVitae->get_Member( _variant_t ("adjustment"), &vVitae);
! Vitae = vVitae.fltVal;
}
else
! Vitae = 1.0;
}
else
! Vitae = 1.0;
// Added to allow for varying enchantmentMask section since the above section doesn't
--- 559,569 ----
IMessageMember* pVitae = (IMessageMember*) vVitae.pdispVal;
pVitae->get_Member( _variant_t ("adjustment"), &vVitae);
! Vitae = vVitae.fltVal + 0.001f; // for float inaccuracies like 0.9499999881
}
else
! Vitae = 1.0f;
}
else
! Vitae = 1.0f;
// Added to allow for varying enchantmentMask section since the above section doesn't
***************
*** 668,672 ****
_ASSERTE(vAdjustment.vt == VT_R4);
! AddEnchant(vSpellID.iVal, vIndex.iVal, vDuration.dblVal, vFamily.lVal, vTimeElapsed.dblVal, vEffectMask.lVal, vAffected.lVal, vAdjustment.fltVal);
break;
--- 687,698 ----
_ASSERTE(vAdjustment.vt == VT_R4);
! if( 666 == vSpellID.iVal ) // Vitae isn't a normal enchantment
! {
! Vitae = vAdjustment.fltVal + 0.001f; // for float inaccuracies like 0.9499999881
! RecalcSecStats();
! RecalcSkills();
! }
! else
! AddEnchant(vSpellID.iVal, vIndex.iVal, vDuration.dblVal, vFamily.lVal, vTimeElapsed.dblVal, vEffectMask.lVal, vAffected.lVal, vAdjustment.fltVal);
break;
***************
*** 691,695 ****
pRecord->get_Member (_variant_t ("layer"), &vLayer);
! RemoveEnchant(vSpellID.iVal, vLayer.iVal);
}
--- 717,724 ----
pRecord->get_Member (_variant_t ("layer"), &vLayer);
! if( 666 == vSpellID.iVal ) // Vitae isn't a normal enchantment
! Vitae = 1.0f;
! else
! RemoveEnchant(vSpellID.iVal, vLayer.iVal);
}
***************
*** 745,762 ****
break;
}
- /*
- case 0x01AC: // Your death.
- {
- for (int i=0;i<vNumSpells.lVal;i++)
- {
- pMember->get_Member (_variant_t (long(i)), &vSpell1);
- IMessageMember* pRecord = (IMessageMember*) vSpell1.pdispVal;
-
- RemoveEnchant(vSpellID.iVal, vLayer.iVal);
- }
-
- break;
- }
- */
case 0x004C: // Spellbook Add
{
--- 774,777 ----
***************
*** 795,801 ****
void cCharacterStats::AddEnchant(int SpellID, int Layer, double Duration, DWORD Family, double Elapsed, DWORD AffectMask, DWORD Affected, float Adjustment)
{
- if(SpellID==666)
- Vitae = Adjustment;
-
time_t TimeExpires = time(NULL);
// duration of the spell plus the (negative) number the server sends us indicating how many seconds have elapsed
--- 810,813 ----
***************
*** 885,891 ****
void cCharacterStats::RemoveEnchant(int SpellID, int Layer)
{
- if(SpellID==666)
- Vitae = 1.00;
-
for (std::list< cEnchantment * >::iterator tpi = Enchantments.begin(); tpi != Enchantments.end(); tpi++)
{
--- 897,900 ----
***************
*** 1543,1547 ****
return E_FAIL;
! *pVal = long((1.00 - Vitae) * 100);
return S_OK;
}
--- 1552,1556 ----
return E_FAIL;
! *pVal = long((1.00 - Vitae) * 100 + 0.5f);
return S_OK;
}
|