diff --git a/Codigo/ApplyEffectOnHit.cls b/Codigo/ApplyEffectOnHit.cls index 3971ff8f..0f593455 100644 --- a/Codigo/ApplyEffectOnHit.cls +++ b/Codigo/ApplyEffectOnHit.cls @@ -65,6 +65,10 @@ Public Property Get IBaseEffectOverTime_TypeId() As Integer IBaseEffectOverTime_TypeId = e_EffectOverTimeType.eApplyEffectOnHit End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(DotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = DotInfo.UniqueId End Property diff --git a/Codigo/ApplyEffectOnParty.cls b/Codigo/ApplyEffectOnParty.cls index 4cff5dee..de3b4a1a 100644 --- a/Codigo/ApplyEffectOnParty.cls +++ b/Codigo/ApplyEffectOnParty.cls @@ -93,6 +93,10 @@ Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = DotInfo.UniqueId End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(DotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_CasterIsValid() As Boolean IBaseEffectOverTime_CasterIsValid = IsValidRef(Source) End Property @@ -268,7 +272,9 @@ Private Sub ApplyEffectTo(ByVal TargetId As Integer, ByVal TargetType As e_Refer Set Effect = FindEffectOnTarget(DotInfo.TargetRef.ArrayIndex, UserList(TargetId).EffectOverTime, EffectIdToApply) If Effect Is Nothing Then Call CreateEffect(DotInfo.TargetRef.ArrayIndex, DotInfo.TargetRef.RefType, TargetId, TargetType, EffectIdToApply) - ElseIf EffectOverTime(DotInfo.EotId).Override Then + ElseIf EffectOverTime(EffectIdToApply).Override And _ + (Effect.EotId = EffectIdToApply Or EffectIdToApply = ApplyEffectId) Then + 'either we don't override personal buff with other bard buff or we override anohter bard buff with ours on ourself Call Effect.Reset(DotInfo.TargetRef.ArrayIndex, DotInfo.TargetRef.RefType, EffectIdToApply) End If Call RegisterNewHelp(TargetId, DotInfo.TargetRef.ArrayIndex) diff --git a/Codigo/Declares.bas b/Codigo/Declares.bas index e2833aeb..a40b6810 100644 --- a/Codigo/Declares.bas +++ b/Codigo/Declares.bas @@ -1138,6 +1138,7 @@ End Enum Public Type t_EffectOverTime Type As e_EffectOverTimeType + SharedTypeId As e_EotTypeId Limit As e_EOTTargetLimit SubType As Integer TickPowerMin As Single @@ -2967,11 +2968,23 @@ Public Enum e_EffectOverTimeType [EffectTypeCount] End Enum +Public Enum e_EotTypeId + eNone = 0 + eHealingDot = 1 + eManaSong = 2 + eSpeedSong = 3 + eHitSing = 4 + eEvasionSong = 5 + eDivineProtection = 6 + [EotTypeIdCount] +End Enum + Public Enum e_EOTTargetLimit eSingle = 1 'Only one on target for this type eSingleByCaster 'The target can have more than 1 effect of this type but only 1 for every caster eAny 'No limits eSingleByType 'can only have one effect of given type active at the time (like weapon poison) + eSingleByTypeId 'only one by TypeId (so we can have different buff that share the same id and can't stack like different lvls of the same buff) End Enum Public Type t_BaseDotInfo diff --git a/Codigo/DrunkEffect.cls b/Codigo/DrunkEffect.cls index 41927937..392a00fc 100644 --- a/Codigo/DrunkEffect.cls +++ b/Codigo/DrunkEffect.cls @@ -69,6 +69,10 @@ Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = DotInfo.UniqueId End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(DotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_CasterIsValid() As Boolean IBaseEffectOverTime_CasterIsValid = IsValidRef(DotInfo.TargetRef) End Property diff --git a/Codigo/EffectOverTime/AttrackEffect.cls b/Codigo/EffectOverTime/AttrackEffect.cls index d2ec2458..33aba098 100644 --- a/Codigo/EffectOverTime/AttrackEffect.cls +++ b/Codigo/EffectOverTime/AttrackEffect.cls @@ -81,6 +81,10 @@ Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = DotInfo.UniqueId End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(DotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_CasterIsValid() As Boolean IBaseEffectOverTime_CasterIsValid = IsValidRef(Source) End Property diff --git a/Codigo/EffectOverTime/BonusDamageEffect.cls b/Codigo/EffectOverTime/BonusDamageEffect.cls index 1d4d2881..f2141778 100644 --- a/Codigo/EffectOverTime/BonusDamageEffect.cls +++ b/Codigo/EffectOverTime/BonusDamageEffect.cls @@ -71,6 +71,10 @@ Public Property Get IBaseEffectOverTime_TypeId() As Integer IBaseEffectOverTime_TypeId = e_EffectOverTimeType.eBonusDamage End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(EffectInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = EffectInfo.UniqueId End Property diff --git a/Codigo/EffectOverTime/DelayedBlast.cls b/Codigo/EffectOverTime/DelayedBlast.cls index 112f1251..542417d1 100644 --- a/Codigo/EffectOverTime/DelayedBlast.cls +++ b/Codigo/EffectOverTime/DelayedBlast.cls @@ -69,6 +69,10 @@ Public Property Get IBaseEffectOverTime_TypeId() As Integer IBaseEffectOverTime_TypeId = e_EffectOverTimeType.eDelayedBlast End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(DotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = DotInfo.UniqueId End Property diff --git a/Codigo/EffectOverTime/MultipleAttacks.cls b/Codigo/EffectOverTime/MultipleAttacks.cls index 92316206..0f483123 100644 --- a/Codigo/EffectOverTime/MultipleAttacks.cls +++ b/Codigo/EffectOverTime/MultipleAttacks.cls @@ -73,6 +73,10 @@ Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = mDotInfo.UniqueId End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(mDotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_CasterIsValid() As Boolean IBaseEffectOverTime_CasterIsValid = IsValidRef(mDotInfo.TargetRef) End Property diff --git a/Codigo/EffectOverTime/ProtectEffect.cls b/Codigo/EffectOverTime/ProtectEffect.cls index 7b15d6bd..f1caf78c 100644 --- a/Codigo/EffectOverTime/ProtectEffect.cls +++ b/Codigo/EffectOverTime/ProtectEffect.cls @@ -68,6 +68,10 @@ Public Property Get IBaseEffectOverTime_TypeId() As Integer IBaseEffectOverTime_TypeId = e_EffectOverTimeType.eProtection End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(DotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = DotInfo.UniqueId End Property diff --git a/Codigo/EffectOverTime/TransformEffect.cls b/Codigo/EffectOverTime/TransformEffect.cls index 287665e9..7e635900 100644 --- a/Codigo/EffectOverTime/TransformEffect.cls +++ b/Codigo/EffectOverTime/TransformEffect.cls @@ -89,6 +89,10 @@ Public Property Get IBaseEffectOverTime_TypeId() As Integer IBaseEffectOverTime_TypeId = e_EffectOverTimeType.eTransform End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(DotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = DotInfo.UniqueId End Property diff --git a/Codigo/EffectOverTime/UnequipItem.cls b/Codigo/EffectOverTime/UnequipItem.cls index 8b7d0dc7..ea816b0d 100644 --- a/Codigo/EffectOverTime/UnequipItem.cls +++ b/Codigo/EffectOverTime/UnequipItem.cls @@ -73,6 +73,10 @@ Public Property Get IBaseEffectOverTime_TypeId() As Integer IBaseEffectOverTime_TypeId = e_EffectOverTimeType.eUnequip End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(mDotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = mDotInfo.UniqueId End Property diff --git a/Codigo/EffectProvoke.cls b/Codigo/EffectProvoke.cls index 858a2ee8..ed605589 100644 --- a/Codigo/EffectProvoke.cls +++ b/Codigo/EffectProvoke.cls @@ -83,6 +83,10 @@ Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = DotInfo.UniqueId End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(DotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_CasterIsValid() As Boolean IBaseEffectOverTime_CasterIsValid = IsValidRef(Source) End Property diff --git a/Codigo/EffectProvoked.cls b/Codigo/EffectProvoked.cls index a7f7ae7e..e5b1f616 100644 --- a/Codigo/EffectProvoked.cls +++ b/Codigo/EffectProvoked.cls @@ -80,6 +80,10 @@ Public Property Get IBaseEffectOverTime_TypeId() As Integer IBaseEffectOverTime_TypeId = e_EffectOverTimeType.eProvoked End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(DotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = DotInfo.UniqueId End Property diff --git a/Codigo/EffectsOverTime.bas b/Codigo/EffectsOverTime.bas index df0c2420..58625f7a 100644 --- a/Codigo/EffectsOverTime.bas +++ b/Codigo/EffectsOverTime.bas @@ -498,6 +498,11 @@ On Error GoTo FindEffectOnTarget_Err Set FindEffectOnTarget = EffectList.EffectList(i) Exit Function End If + ElseIf EffectLimit = eSingleByTypeId Then + If EffectList.EffectList(i).SharedTypeId = EffectOverTime(EffectId).SharedTypeId Then + Set FindEffectOnTarget = EffectList.EffectList(i) + Exit Function + End If End If Next i Exit Function diff --git a/Codigo/FileIO.bas b/Codigo/FileIO.bas index b55fb46e..6c599c48 100644 --- a/Codigo/FileIO.bas +++ b/Codigo/FileIO.bas @@ -816,6 +816,7 @@ On Error GoTo ErrHandler 114 For i = 1 To EffectCount EffectOverTime(i).Type = val(Leer.GetValue("EOT" & i, "Type")) EffectOverTime(i).SubType = val(Leer.GetValue("EOT" & i, "SubType")) + EffectOverTime(i).SharedTypeId = val(Leer.GetValue("EOT" & i, "SharedTypeId")) EffectOverTime(i).TickPowerMin = val(Leer.GetValue("EOT" & i, "TickPowerMin")) EffectOverTime(i).TickPowerMax = val(Leer.GetValue("EOT" & i, "TickPowerMax")) EffectOverTime(i).Ticks = val(Leer.GetValue("EOT" & i, "Ticks")) diff --git a/Codigo/IBaseEffectOverTime.cls b/Codigo/IBaseEffectOverTime.cls index 53006dc3..30b4c9b6 100644 --- a/Codigo/IBaseEffectOverTime.cls +++ b/Codigo/IBaseEffectOverTime.cls @@ -69,6 +69,9 @@ End Property Public Property Get TypeId() As Integer End Property +Public Property Get SharedTypeId() As Integer +End Property + Public Property Get EotId() As Integer End Property diff --git a/Codigo/InvUsuario.bas b/Codigo/InvUsuario.bas index c2e932a9..da0a6824 100644 --- a/Codigo/InvUsuario.bas +++ b/Codigo/InvUsuario.bas @@ -653,9 +653,15 @@ Function MeterItemEnInventario(ByVal UserIndex As Integer, ByRef MiObj As t_Obj) Dim Y As Integer Dim Slot As Integer - + If MiObj.ObjIndex = 12 Then + UserList(UserIndex).Stats.GLD = UserList(UserIndex).Stats.GLD + MiObj.amount + MeterItemEnInventario = True + Call WriteUpdateGold(UserIndex) + Exit Function + End If '¿el user ya tiene un objeto del mismo tipo? ????? 100 Slot = GetSlotForItemInInvetory(UserIndex, MiObj) + If Slot <= 0 Then 118 Call WriteLocaleMsg(UserIndex, MsgInventoryIsFull, e_FontTypeNames.FONTTYPE_FIGHT) 120 MeterItemEnInventario = False diff --git a/Codigo/Matematicas.bas b/Codigo/Matematicas.bas index 8ab0e7a7..3699bfc4 100644 --- a/Codigo/Matematicas.bas +++ b/Codigo/Matematicas.bas @@ -123,6 +123,15 @@ RandomNumber_Err: 102 Call TraceError(Err.Number, Err.Description, "Matematicas.RandomNumber", Erl) End Function +Public Function RandomRange(ByVal LowerBound As Single, ByVal UpperBound As Single) As Single + On Error GoTo RandomNumber_Err +100 RandomRange = Rnd + RandomRange = RandomRange * (UpperBound - LowerBound) + LowerBound + Exit Function +RandomNumber_Err: +102 Call TraceError(Err.Number, Err.Description, "Matematicas.RandomNumber", Erl) +End Function + Public Sub SetMask(ByRef mask As Long, ByVal value As Long) mask = mask Or value End Sub diff --git a/Codigo/Modulo_InventANDobj.bas b/Codigo/Modulo_InventANDobj.bas index 2543142d..eee2bd43 100644 --- a/Codigo/Modulo_InventANDobj.bas +++ b/Codigo/Modulo_InventANDobj.bas @@ -316,16 +316,6 @@ Public Sub NpcDropeo(ByRef npc As t_Npc, ByRef UserIndex As Integer) End If -110 If UserList(UserIndex).Invent.MagicoObjIndex = 383 Then -112 If npc.QuizaProb = 0 Then -114 Probabilidad = RandomNumber(1, DropMult / 2) 'Tiro Item? - Else -116 Probabilidad = RandomNumber(1, npc.QuizaProb / 2) 'Tiro Item? - - End If - - End If - 118 If Probabilidad <> 1 Then Exit Sub 120 objRandom = RandomNumber(1, npc.NumQuiza) 'Que item puede ser que tire? diff --git a/Codigo/Modulo_UsUaRiOs.bas b/Codigo/Modulo_UsUaRiOs.bas index d1e31d71..bd3766b1 100644 --- a/Codigo/Modulo_UsUaRiOs.bas +++ b/Codigo/Modulo_UsUaRiOs.bas @@ -3526,8 +3526,6 @@ Public Sub RemoveUserInvisibility(ByVal UserIndex As Integer) Dim RemoveHiddenState As Boolean If IsFeatureEnabled("remove-inv-on-attack") And Not MapInfo(.pos.Map).KeepInviOnAttack Then RemoveHiddenState = .flags.Oculto > 0 Or .flags.invisible > 0 - Else - RemoveHiddenState = .flags.Oculto > 0 End If 'I see you... If RemoveHiddenState And .flags.AdminInvisible = 0 Then diff --git a/Codigo/StatModifier.cls b/Codigo/StatModifier.cls index d7775ba6..58198793 100644 --- a/Codigo/StatModifier.cls +++ b/Codigo/StatModifier.cls @@ -69,6 +69,10 @@ Public Property Get IBaseEffectOverTime_TypeId() As Integer IBaseEffectOverTime_TypeId = e_EffectOverTimeType.eApplyModifiers End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(DotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = DotInfo.UniqueId End Property diff --git a/Codigo/TranslationEffect.cls b/Codigo/TranslationEffect.cls index 79ae780c..ed3adbe9 100644 --- a/Codigo/TranslationEffect.cls +++ b/Codigo/TranslationEffect.cls @@ -90,6 +90,10 @@ Public Property Get IBaseEffectOverTime_TypeId() As Integer IBaseEffectOverTime_TypeId = e_EffectOverTimeType.eTranslation End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(DotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = DotInfo.UniqueId End Property diff --git a/Codigo/UpdateHpOverTime.cls b/Codigo/UpdateHpOverTime.cls index 7ea659ab..ef818d1d 100644 --- a/Codigo/UpdateHpOverTime.cls +++ b/Codigo/UpdateHpOverTime.cls @@ -102,6 +102,10 @@ Public Property Get IBaseEffectOverTime_TypeId() As Integer IBaseEffectOverTime_TypeId = e_EffectOverTimeType.eHealthModifier End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(DotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = DotInfo.UniqueId End Property diff --git a/Codigo/UpdateManaOverTime.cls b/Codigo/UpdateManaOverTime.cls index c3273e67..eb9943f7 100644 --- a/Codigo/UpdateManaOverTime.cls +++ b/Codigo/UpdateManaOverTime.cls @@ -59,14 +59,18 @@ Public Sub Setup(ByVal SourceIndex As Integer, ByVal SourceType As e_ReferenceTy TickCount = 0 Call SetBaseDot(DotInfo, TargetIndex, TargetType, ID, EffectId) Call SetRef(Source, SourceIndex, SourceType) - With EffectOverTime(EffectId) + Call ConfigEffect +End Sub + +Private Sub ConfigEffect() + With EffectOverTime(DotInfo.EotId) DotManaMin = .TickPowerMin DotManaMax = .TickPowerMax TargetTicks = .Ticks TickTime = .TickTime TickEffect = .TickFX If DotInfo.TargetRef.RefType = eUser And EffectOverTime(DotInfo.EotId).ClientEffectTypeId > 0 Then - Call WriteSendSkillCdUpdate(TargetIndex, .ClientEffectTypeId, ID, .TickTime * TargetTicks, .TickTime * TargetTicks, .buffType) + Call WriteSendSkillCdUpdate(DotInfo.TargetRef.ArrayIndex, .ClientEffectTypeId, DotInfo.UniqueId, .TickTime * TargetTicks, .TickTime * TargetTicks, .buffType) End If End With End Sub @@ -87,6 +91,10 @@ Public Property Get IBaseEffectOverTime_CasterArrayIndex() As Integer IBaseEffectOverTime_CasterArrayIndex = Source.ArrayIndex End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(DotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_CasterRefType() As e_ReferenceType IBaseEffectOverTime_CasterRefType = Source.RefType End Property @@ -139,9 +147,18 @@ End Property Public Function IBaseEffectOverTime_Reset(ByVal SourceUserId As Integer, ByVal SourceType As e_ReferenceType, ByVal NewEffectId As Integer) As Boolean IBaseEffectOverTime_Reset = True TickCount = 0 - If DotInfo.TargetRef.RefType = eUser And EffectOverTime(DotInfo.EotId).ClientEffectTypeId > 0 Then - Call WriteSendSkillCdUpdate(DotInfo.TargetRef.ArrayIndex, EffectOverTime(DotInfo.EotId).ClientEffectTypeId, _ - DotInfo.UniqueId, (TickTime * TargetTicks) - TimeSinceLastTick, TickTime * TargetTicks, EffectOverTime(DotInfo.EotId).buffType) + If NewEffectId <> DotInfo.EotId Then + DotInfo.EotId = NewEffectId + If DotInfo.TargetRef.RefType = eUser And EffectOverTime(DotInfo.EotId).ClientEffectTypeId > 0 Then + Call WriteSendSkillCdUpdate(DotInfo.TargetRef.ArrayIndex, EffectOverTime(DotInfo.EotId).ClientEffectTypeId, DotInfo.UniqueId, _ + 0, 0, EffectOverTime(DotInfo.EotId).buffType) + End If + Call ConfigEffect + Else + If DotInfo.TargetRef.RefType = eUser And EffectOverTime(DotInfo.EotId).ClientEffectTypeId > 0 Then + Call WriteSendSkillCdUpdate(DotInfo.TargetRef.ArrayIndex, EffectOverTime(DotInfo.EotId).ClientEffectTypeId, _ + DotInfo.UniqueId, (TickTime * TargetTicks) - TimeSinceLastTick, TickTime * TargetTicks, EffectOverTime(DotInfo.EotId).buffType) + End If End If End Function @@ -202,8 +219,8 @@ Public Property Get IBaseEffectOverTime_KeepAfterDead() As Boolean End Property Public Sub PerformAction() - Dim TickMana As Long - TickMana = RandomNumber(DotManaMin, DotManaMax) + Dim TickMana As Single + TickMana = RandomRange(DotManaMin, DotManaMax) If DotInfo.TargetRef.RefType = e_ReferenceType.eUser Then With UserList(DotInfo.TargetRef.ArrayIndex) Dim CurrentMana, MaxMana As Long diff --git a/Codigo/clsTrap.cls b/Codigo/clsTrap.cls index d383b4b5..68e28eff 100644 --- a/Codigo/clsTrap.cls +++ b/Codigo/clsTrap.cls @@ -78,6 +78,10 @@ Public Property Get IBaseEffectOverTime_TypeId() As Integer IBaseEffectOverTime_TypeId = e_EffectOverTimeType.eTrap End Property +Public Property Get IBaseEffectOverTime_SharedTypeId() As Integer + IBaseEffectOverTime_SharedTypeId = EffectOverTime(mDotInfo.EotId).SharedTypeId +End Property + Public Property Get IBaseEffectOverTime_UniqueId() As Long IBaseEffectOverTime_UniqueId = mDotInfo.UniqueId End Property