Ok this fix seems to have worked for the incorrect base stat issue, incase anyone else has the same problem im posting my fix. Go to your server in modHandleData find the Packet_UseStatPoint, and replace it with my code below. This fix simply takes off the boost from stats from the users stats before adding the extra stat point. Also note that this fix is for the Crypto Version, and if you are using another version then the same general idea should work. ``` Public Sub Packet_PlayerStatsPacket(ByVal STR As Long, ByVal DEX As Long, ByVal CON As Long, ByVal INTEL As Long, ByVal WIS As Long, ByVal CHA As Long, ByVal MaxExp As Long, ByVal Exp As Long, ByVal lvl As Long) Dim SubStr As Long, SubDex As Long, SubCon As Long, SubIntel As Long, SubWis As Long, SubCha As Long SubStr = 0 SubDex = 0 SubCon = 0 SubIntel = 0 SubWis = 0 SubCha = 0 If GetPlayerWeaponSlot(MyIndex) > 0 Then SubStr = SubStr + Item(GetPlayerInvItemNum(MyIndex, GetPlayerWeaponSlot(MyIndex))).AddSTR SubDex = SubDex + Item(GetPlayerInvItemNum(MyIndex, GetPlayerWeaponSlot(MyIndex))).AddDEX SubCon = SubCon + Item(GetPlayerInvItemNum(MyIndex, GetPlayerWeaponSlot(MyIndex))).AddCON SubIntel = SubIntel + Item(GetPlayerInvItemNum(MyIndex, GetPlayerWeaponSlot(MyIndex))).AddINTEL SubWis = SubWis + Item(GetPlayerInvItemNum(MyIndex, GetPlayerWeaponSlot(MyIndex))).AddWIS SubCha = SubCha + Item(GetPlayerInvItemNum(MyIndex, GetPlayerWeaponSlot(MyIndex))).AddCHA End If If GetPlayerArmorSlot(MyIndex) > 0 Then SubStr = SubStr + Item(GetPlayerInvItemNum(MyIndex, GetPlayerArmorSlot(MyIndex))).AddSTR SubDex = SubDex + Item(GetPlayerInvItemNum(MyIndex, GetPlayerArmorSlot(MyIndex))).AddDEX SubCon = SubCon + Item(GetPlayerInvItemNum(MyIndex, GetPlayerArmorSlot(MyIndex))).AddCON SubIntel = SubIntel + Item(GetPlayerInvItemNum(MyIndex, GetPlayerArmorSlot(MyIndex))).AddINTEL SubWis = SubWis + Item(GetPlayerInvItemNum(MyIndex, GetPlayerArmorSlot(MyIndex))).AddWIS SubCha = SubCha + Item(GetPlayerInvItemNum(MyIndex, GetPlayerArmorSlot(MyIndex))).AddCHA End If If GetPlayerShieldSlot(MyIndex) > 0 Then SubStr = SubStr + Item(GetPlayerInvItemNum(MyIndex, GetPlayerShieldSlot(MyIndex))).AddSTR SubDex = SubDex + Item(GetPlayerInvItemNum(MyIndex, GetPlayerShieldSlot(MyIndex))).AddDEX SubCon = SubCon + Item(GetPlayerInvItemNum(MyIndex, GetPlayerShieldSlot(MyIndex))).AddCON SubIntel = SubIntel + Item(GetPlayerInvItemNum(MyIndex, GetPlayerShieldSlot(MyIndex))).AddINTEL SubWis = SubWis + Item(GetPlayerInvItemNum(MyIndex, GetPlayerShieldSlot(MyIndex))).AddWIS SubCha = SubCha + Item(GetPlayerInvItemNum(MyIndex, GetPlayerShieldSlot(MyIndex))).AddCHA End If If GetPlayerHelmetSlot(MyIndex) > 0 Then SubStr = SubStr + Item(GetPlayerInvItemNum(MyIndex, GetPlayerHelmetSlot(MyIndex))).AddSTR SubDex = SubDex + Item(GetPlayerInvItemNum(MyIndex, GetPlayerHelmetSlot(MyIndex))).AddDEX SubCon = SubCon + Item(GetPlayerInvItemNum(MyIndex, GetPlayerHelmetSlot(MyIndex))).AddCON SubIntel = SubIntel + Item(GetPlayerInvItemNum(MyIndex, GetPlayerHelmetSlot(MyIndex))).AddINTEL SubWis = SubWis + Item(GetPlayerInvItemNum(MyIndex, GetPlayerHelmetSlot(MyIndex))).AddWIS SubCha = SubCha + Item(GetPlayerInvItemNum(MyIndex, GetPlayerHelmetSlot(MyIndex))).AddCHA End If If GetPlayerLegsSlot(MyIndex) > 0 Then SubStr = SubStr + Item(GetPlayerInvItemNum(MyIndex, GetPlayerLegsSlot(MyIndex))).AddSTR SubDex = SubDex + Item(GetPlayerInvItemNum(MyIndex, GetPlayerLegsSlot(MyIndex))).AddDEX SubCon = SubCon + Item(GetPlayerInvItemNum(MyIndex, GetPlayerLegsSlot(MyIndex))).AddCON SubIntel = SubIntel + Item(GetPlayerInvItemNum(MyIndex, GetPlayerLegsSlot(MyIndex))).AddINTEL SubWis = SubWis + Item(GetPlayerInvItemNum(MyIndex, GetPlayerLegsSlot(MyIndex))).AddWIS SubCha = SubCha + Item(GetPlayerInvItemNum(MyIndex, GetPlayerLegsSlot(MyIndex))).AddCHA End If If GetPlayerRingSlot(MyIndex) > 0 Then SubStr = SubStr + Item(GetPlayerInvItemNum(MyIndex, GetPlayerRingSlot(MyIndex))).AddSTR SubDex = SubDex + Item(GetPlayerInvItemNum(MyIndex, GetPlayerRingSlot(MyIndex))).AddDEX SubCon = SubCon + Item(GetPlayerInvItemNum(MyIndex, GetPlayerRingSlot(MyIndex))).AddCON SubIntel = SubIntel + Item(GetPlayerInvItemNum(MyIndex, GetPlayerRingSlot(MyIndex))).AddINTEL SubWis = SubWis + Item(GetPlayerInvItemNum(MyIndex, GetPlayerRingSlot(MyIndex))).AddWIS SubCha = SubCha + Item(GetPlayerInvItemNum(MyIndex, GetPlayerRingSlot(MyIndex))).AddCHA End If If GetPlayerNecklaceSlot(MyIndex) > 0 Then SubStr = SubStr + Item(GetPlayerInvItemNum(MyIndex, GetPlayerNecklaceSlot(MyIndex))).AddSTR SubDex = SubDex + Item(GetPlayerInvItemNum(MyIndex, GetPlayerNecklaceSlot(MyIndex))).AddDEX SubCon = SubCon + Item(GetPlayerInvItemNum(MyIndex, GetPlayerNecklaceSlot(MyIndex))).AddCON SubIntel = SubIntel + Item(GetPlayerInvItemNum(MyIndex, GetPlayerNecklaceSlot(MyIndex))).AddINTEL SubWis = SubWis + Item(GetPlayerInvItemNum(MyIndex, GetPlayerNecklaceSlot(MyIndex))).AddWIS SubCha = SubCha + Item(GetPlayerInvItemNum(MyIndex, GetPlayerNecklaceSlot(MyIndex))).AddCHA End If If SubStr > 0 Then frmStable.lblSTR.Caption = Val(STR) - SubStr & " (+" & SubStr & ")" Else frmStable.lblSTR.Caption = Val(STR) End If If SubDex > 0 Then frmStable.lblDEX.Caption = Val(DEX) - SubDex & " (+" & SubDex & ")" Else frmStable.lblDEX.Caption = Val(DEX) End If If SubCon > 0 Then frmStable.lblCON.Caption = Val(CON) - SubCon & " (+" & SubCon & ")" Else frmStable.lblCON.Caption = Val(CON) End If If SubIntel > 0 Then frmStable.lblINTEL.Caption = Val(INTEL) - SubIntel & " (+" & SubIntel & ")" Else frmStable.lblINTEL.Caption = Val(INTEL) End If If SubWis > 0 Then frmStable.lblWIS.Caption = Val(WIS) - SubWis & " (+" & SubWis & ")" Else frmStable.lblWIS.Caption = Val(WIS) End If If SubCha > 0 Then frmStable.lblCHA.Caption = Val(CHA) - SubCha & " (+" & SubCha & ")" Else frmStable.lblCHA.Caption = Val(CHA) End If frmStable.lblEXP.Caption = Val(Exp) & " / " & Val(MaxExp) frmStable.shpTNL.Width = (((Val(Exp)) / (Val(MaxExp))) * 150) frmStable.lblLevel.Caption = Val(lvl) Player(MyIndex).Level = Val(lvl) End Sub ```