I think the problem is that (i could be wrong) "recipe" should be appearing in CmbType in Item Editor (though i could be wrong) - its just not appearing (in game) in the drop down list and hence i dont see part of the mod as i should. UPDATE: My Projectiles window isn't showing up as it should either (like the frarecipe, it just isn't there when in game). any ideas? UPDATE 2: Accidently double posted this when trying to paste this into a PM. sorry about that :'( HOW IT SHOULD LOOK: ![](http://i1127.photobucket.com/albums/l632/EsoGuildPB/howitshouldlook.png) HOW IT -DOES- LOOK: ![](http://i1127.photobucket.com/albums/l632/EsoGuildPB/isthisnormal.png) Frm_Item_Editor (Client) ``` Option Explicit Private LastIndex As Long Private Sub ChkTwoh_Click() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If ChkTwoh.Value = 0 Then Item(EditorIndex).istwohander = False Else Item(EditorIndex).istwohander = True End If ' Error handler Exit Sub errorhandler: HandleError "chkTwoh", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub cmbBind_Click() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub Item(EditorIndex).BindType = cmbBind.ListIndex ' Error handler Exit Sub errorhandler: HandleError "cmbBind_Click", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub cmbClassReq_Click() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub Item(EditorIndex).ClassReq = cmbClassReq.ListIndex ' Error handler Exit Sub errorhandler: HandleError "cmbClassReq_Click", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub cmbSound_Click() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If cmbSound.ListIndex >= 0 Then Item(EditorIndex).sound = cmbSound.List(cmbSound.ListIndex) Else Item(EditorIndex).sound = "None." End If ' Error handler Exit Sub errorhandler: HandleError "cmdSound_Click", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub cmbTool_Click() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub Item(EditorIndex).Data3 = cmbTool.ListIndex ' Error handler Exit Sub errorhandler: HandleError "cmbTool_Click", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub cmdDelete_Click() Dim tmpIndex As Long ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub ClearItem EditorIndex tmpIndex = lstIndex.ListIndex lstIndex.RemoveItem EditorIndex - 1 lstIndex.AddItem EditorIndex & ": " & Item(EditorIndex).Name, EditorIndex - 1 lstIndex.ListIndex = tmpIndex ItemEditorInit ' Error handler Exit Sub errorhandler: HandleError "cmdDelete_Click", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub Form_Load() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler scrlPic.max = numitems scrlAnim.max = MAX_ANIMATIONS scrlPaperdoll.max = NumPaperdolls ' Error handler Exit Sub errorhandler: HandleError "Form_Load", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub cmdSave_Click() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler Call ItemEditorOk ' Error handler Exit Sub errorhandler: HandleError "cmdSave_Click", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub cmdCancel_Click() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler Call ItemEditorCancel ' Error handler Exit Sub errorhandler: HandleError "cmdCancel_Click", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub cmbType_Click() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub If (cmbType.ListIndex >= ITEM_TYPE_WEAPON) And (cmbType.ListIndex MAX_ITEMS Then Exit Sub lblAccessReq.Caption = "Access Req: " & scrlAccessReq.Value Item(EditorIndex).AccessReq = scrlAccessReq.Value ' Error handler Exit Sub errorhandler: HandleError "scrlAccessReq_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlAddHp_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler lblAddHP.Caption = "Add HP: " & scrlAddHp.Value Item(EditorIndex).AddHP = scrlAddHp.Value ' Error handler Exit Sub errorhandler: HandleError "scrlAddHP_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlAddMp_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler lblAddMP.Caption = "Add MP: " & scrlAddMP.Value Item(EditorIndex).AddMP = scrlAddMP.Value ' Error handler Exit Sub errorhandler: HandleError "scrlAddMP_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlAddExp_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler lblAddExp.Caption = "Add Exp: " & scrlAddExp.Value Item(EditorIndex).AddEXP = scrlAddExp.Value ' Error handler Exit Sub errorhandler: HandleError "scrlAddExp_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlAnim_Change() Dim sString As String ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub If scrlAnim.Value = 0 Then sString = "None" Else sString = Trim$(Animation(scrlAnim.Value).Name) End If lblAnim.Caption = "Anim: " & sString Item(EditorIndex).Animation = scrlAnim.Value ' Error handler Exit Sub errorhandler: HandleError "scrlAnim_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlDamage_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub lblDamage.Caption = "Damage: " & scrlDamage.Value Item(EditorIndex).Data2 = scrlDamage.Value ' Error handler Exit Sub errorhandler: HandleError "scrlDamage_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlFishing_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler lblFishing.Caption = "Fishing: " & scrlFishing.Value Item(EditorIndex).FXP = scrlFishing.Value ' Error handler Exit Sub errorhandler: HandleError "scrlFishing_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlLevelReq_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub lblLevelReq.Caption = "Level req: " & scrlLevelReq Item(EditorIndex).LevelReq = scrlLevelReq.Value ' Error handler Exit Sub errorhandler: HandleError "scrlLevelReq_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlMining_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler lblMining.Caption = "Mining: " & scrlMining.Value Item(EditorIndex).MXP = scrlMining.Value ' Error handler Exit Sub errorhandler: HandleError "scrlMining_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlPaperdoll_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub lblPaperdoll.Caption = "Paperdoll: " & scrlPaperdoll.Value Item(EditorIndex).Paperdoll = scrlPaperdoll.Value ' Error handler Exit Sub errorhandler: HandleError "scrlPaperdoll_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlPic_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub lblPic.Caption = "Pic: " & scrlPic.Value Item(EditorIndex).Pic = scrlPic.Value ' Error handler Exit Sub errorhandler: HandleError "scrlPic_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlPrice_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub lblPrice.Caption = "Price: " & scrlPrice.Value Item(EditorIndex).Price = scrlPrice.Value ' Error handler Exit Sub errorhandler: HandleError "scrlPrice_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlRarity_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub lblRarity.Caption = "Rarity: " & scrlRarity.Value Item(EditorIndex).Rarity = scrlRarity.Value ' Error handler Exit Sub errorhandler: HandleError "scrlRarity_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlSpeed_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub lblSpeed.Caption = "Speed: " & scrlSpeed.Value / 1000 & " sec" Item(EditorIndex).speed = scrlSpeed.Value ' Error handler Exit Sub errorhandler: HandleError "scrlSpeed_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlStatBonus_Change(Index As Integer) Dim text As String ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler Select Case Index Case 1 text = "+ Str: " Case 2 text = "+ End: " Case 3 text = "+ Int: " Case 4 text = "+ Agi: " Case 5 text = "+ Will: " End Select lblStatBonus(Index).Caption = text & scrlStatBonus(Index).Value Item(EditorIndex).Add_Stat(Index) = scrlStatBonus(Index).Value ' Error handler Exit Sub errorhandler: HandleError "scrlStatBonus_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlStatReq_Change(Index As Integer) Dim text As String ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler Select Case Index Case 1 text = "Str: " Case 2 text = "End: " Case 3 text = "Int: " Case 4 text = "Agi: " Case 5 text = "Will: " End Select lblStatReq(Index).Caption = text & scrlStatReq(Index).Value Item(EditorIndex).Stat_Req(Index) = scrlStatReq(Index).Value ' Error handler Exit Sub errorhandler: HandleError "scrlStatReq_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlSpell_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub If Len(Trim$(Spell(scrlSpell.Value).Name)) > 0 Then lblSpellName.Caption = "Name: " & Trim$(Spell(scrlSpell.Value).Name) Else lblSpellName.Caption = "Name: None" End If lblSpell.Caption = "Spell: " & scrlSpell.Value Item(EditorIndex).Data1 = scrlSpell.Value ' Error handler Exit Sub errorhandler: HandleError "scrlSpell_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlWoodcutting_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler lblWoodcutting.Caption = "Woodcuting: " & scrlWoodcutting.Value Item(EditorIndex).WcXP = scrlWoodcutting.Value ' Error handler Exit Sub errorhandler: HandleError "scrlWoodcutting_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub txtDesc_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub Item(EditorIndex).Desc = txtDesc.text ' Error handler Exit Sub errorhandler: HandleError "txtDesc_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub txtName_Validate(Cancel As Boolean) Dim tmpIndex As Long ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub tmpIndex = lstIndex.ListIndex Item(EditorIndex).Name = Trim$(txtName.text) lstIndex.RemoveItem EditorIndex - 1 lstIndex.AddItem EditorIndex & ": " & Item(EditorIndex).Name, EditorIndex - 1 lstIndex.ListIndex = tmpIndex ' Error handler Exit Sub errorhandler: HandleError "txtName_Validate", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub ' projectile Private Sub scrlProjectileDamage_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub lblProjectileDamage.Caption = "Damage: " & scrlProjectileDamage.Value Item(EditorIndex).ProjecTile.Damage = scrlProjectileDamage.Value ' Error handler Exit Sub errorhandler: HandleError "scrlProjectilePic_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub ' projectile Private Sub scrlProjectilePic_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub lblProjectilePic.Caption = "Pic: " & scrlProjectilePic.Value Item(EditorIndex).ProjecTile.Pic = scrlProjectilePic.Value ' Error handler Exit Sub errorhandler: HandleError "scrlProjectilePic_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub ' ProjecTile Private Sub scrlProjectileRange_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub lblProjectileRange.Caption = "Range: " & scrlProjectileRange.Value Item(EditorIndex).ProjecTile.Range = scrlProjectileRange.Value ' Error handler Exit Sub errorhandler: HandleError "scrlProjectileRange_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub ' projectile Private Sub scrlProjectileSpeed_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub lblProjectileSpeed.Caption = "Speed: " & scrlProjectileSpeed.Value Item(EditorIndex).ProjecTile.speed = scrlProjectileSpeed.Value ' Error handler Exit Sub errorhandler: HandleError "scrlRarity_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlItem1_Change() If scrlItem1.Value > 0 Then lblItem1.Caption = "Item: " & Trim$(Item(scrlItem1.Value).Name) Else lblItem1.Caption = "Item: None" End If Item(EditorIndex).Recipe(RecipeIndex) = scrlItem1.Value End Sub Private Sub scrlItemNum_Change() RecipeIndex = scrlItemNum.Value lblItemNum.Caption = "Item: " & RecipeIndex scrlItem1.Value = Item(EditorIndex).Recipe(RecipeIndex) End Sub Private Sub scrlResult_Change() If scrlResult.Value > 0 Then lblResult.Caption = "Result: " & Trim$(Item(scrlResult.Value).Name) Else lblResult.Caption = "Result: None" End If Item(EditorIndex).Data3 = scrlResult.Value End Sub Private Sub scrlSmithReq_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub lblSmith.Caption = "SM: " & scrlSmithReq Item(EditorIndex).SmithReq = scrlSmithReq.Value ' Error handler Exit Sub errorhandler: HandleError "scrlSmithReq_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlEnchantReq_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub lblEnchants.Caption = "EN: " & scrlEnchantReq Item(EditorIndex).EnchantReq = scrlEnchantReq.Value ' Error handler Exit Sub errorhandler: HandleError "scrlSwordReq_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub scrlAlchemyReq_Change() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub lblAlchemy.Caption = "Cook: " & scrlAlchemyReq Item(EditorIndex).AlchemyReq = scrlAlchemyReq.Value ' Error handler Exit Sub errorhandler: HandleError "scrlAlchemyReq_Change", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub chkAL_Click() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub Item(EditorIndex).Alchemist = chkAL.Value ' Error handler Exit Sub errorhandler: HandleError "chkAL_Click", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub chkEN_Click() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub Item(EditorIndex).Enchanter = chkEN.Value ' Error handler Exit Sub errorhandler: HandleError "chkEN_Click", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub chkSM_Click() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub Item(EditorIndex).Smithy = chkSM.Value ' Error handler Exit Sub errorhandler: HandleError "chkSM_Click", "frmEditor_Item", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub Private Sub cmbCTool_Click() If EditorIndex = 0 Or EditorIndex > MAX_ITEMS Then Exit Sub Item(EditorIndex).Tool = cmbCTool.ListIndex End Sub ``` and becuase i feel like folks might wanna see my modconstants too (client): ``` Option Explicit ' API Declares Public Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByRef msg() As Byte, ByVal wParam As Long, ByVal lParam As Long) As Long Public Declare Function GetForegroundWindow Lib "user32" () As Long ' animated buttons Public Const MAX_MENUBUTTONS As Long = 4 Public Const MAX_MAINBUTTONS As Long = 9 Public Const MENUBUTTON_PATH As String = "\Data Files\graphics\gui\menu\buttons\" Public Const MAINBUTTON_PATH As String = "\Data Files\graphics\gui\main\buttons\" ' Hotbar Public Const HotbarTop As Long = 2 Public Const HotbarLeft As Long = 2 Public Const HotbarOffsetX As Long = 8 ' Inventory constants Public Const InvTop As Long = 24 Public Const InvLeft As Long = 12 Public Const InvOffsetY As Long = 3 Public Const InvOffsetX As Long = 3 Public Const InvColumns As Long = 5 ' Bank constants Public Const BankTop As Long = 38 Public Const BankLeft As Long = 42 Public Const BankOffsetY As Long = 3 Public Const BankOffsetX As Long = 4 Public Const BankColumns As Long = 11 ' spells constants Public Const SpellTop As Long = 24 Public Const SpellLeft As Long = 12 Public Const SpellOffsetY As Long = 3 Public Const SpellOffsetX As Long = 3 Public Const SpellColumns As Long = 5 ' shop constants Public Const ShopTop As Long = 6 Public Const ShopLeft As Long = 8 Public Const ShopOffsetY As Long = 2 Public Const ShopOffsetX As Long = 4 Public Const ShopColumns As Long = 5 ' Character consts Public Const EqTop As Long = 224 Public Const EqLeft As Long = 18 Public Const EqOffsetX As Long = 10 Public Const EqColumns As Long = 4 ' values Public Const MAX_BYTE As Byte = 255 Public Const MAX_INTEGER As Integer = 32767 Public Const MAX_LONG As Long = 2147483647 ' path constants Public Const SOUND_PATH As String = "\Data Files\sound\" Public Const MUSIC_PATH As String = "\Data Files\music\" ' Font variables Public Const FONT_NAME As String = "Georgia" Public Const FONT_SIZE As Byte = 14 ' Log Path and variables Public Const LOG_DEBUG As String = "debug.txt" Public Const LOG_PATH As String = "\Data Files\logs\" ' Map Path and variables Public Const MAP_PATH As String = "\Data Files\maps\" Public Const MAP_EXT As String = ".map" ' Gfx Path and variables Public Const GFX_PATH As String = "\Data Files\graphics\" Public Const GFX_EXT As String = ".png" Public Const FONT_PATH As String = "\data files\graphics\fonts\" ' Key constants Public Const VK_UP As Long = &H26 Public Const VK_DOWN As Long = &H28 Public Const VK_LEFT As Long = &H25 Public Const VK_RIGHT As Long = &H27 Public Const VK_SHIFT As Long = &H10 Public Const VK_RETURN As Long = &HD Public Const VK_CONTROL As Long = &H11 ' Menu states Public Const MENU_STATE_NEWACCOUNT As Byte = 0 Public Const MENU_STATE_DELACCOUNT As Byte = 1 Public Const MENU_STATE_LOGIN As Byte = 2 Public Const MENU_STATE_GETCHARS As Byte = 3 Public Const MENU_STATE_NEWCHAR As Byte = 4 Public Const MENU_STATE_ADDCHAR As Byte = 5 Public Const MENU_STATE_DELCHAR As Byte = 6 Public Const MENU_STATE_USECHAR As Byte = 7 Public Const MENU_STATE_INIT As Byte = 8 ' Speed moving vars Public Const WALK_SPEED As Byte = 4 Public Const RUN_SPEED As Byte = 6 Public Const ADMIN_SPEED As Byte = 18 ' Tile size constants Public Const PIC_X As Long = 32 Public Const PIC_Y As Long = 32 ' Sprite, item, spell size constants Public Const SIZE_X As Long = 32 Public Const SIZE_Y As Long = 32 ' ******************************************************** ' * The values below must match with the server's values * ' ******************************************************** ' General constants Public Const MAX_PLAYERS As Long = 70 Public Const MAX_ITEMS As Long = 255 Public Const MAX_NPCS As Long = 255 Public Const MAX_ANIMATIONS As Long = 255 Public Const MAX_INV As Long = 35 Public Const MAX_MAP_ITEMS As Long = 255 Public Const MAX_MAP_NPCS As Long = 100 Public Const MAX_SHOPS As Long = 50 Public Const MAX_PLAYER_SPELLS As Long = 35 Public Const MAX_SPELLS As Long = 255 Public Const MAX_TRADES As Long = 30 Public Const MAX_RESOURCES As Long = 100 Public Const MAX_LEVELS As Long = 100 Public Const MAX_BANK As Long = 99 Public Const MAX_HOTBAR As Long = 12 Public Const MAX_PARTYS As Long = 35 Public Const MAX_PARTY_MEMBERS As Long = 4 Public Const MAX_SWITCHES As Long = 1000 Public Const MAX_VARIABLES As Long = 1000 Public Const MAX_WEATHER_PARTICLES As Long = 250 Public Const MAX_PLAYER_PROJECTILES As Long = 20 ' Website Public Const GAME_WEBSITE As String = "http://www.touchofdeathforums.com" ' text color constants Public Const Black As Byte = 0 Public Const Blue As Byte = 1 Public Const Green As Byte = 2 Public Const Cyan As Byte = 3 Public Const Red As Byte = 4 Public Const Magenta As Byte = 5 Public Const Brown As Byte = 6 Public Const Grey As Byte = 7 Public Const DarkGrey As Byte = 8 Public Const BrightBlue As Byte = 9 Public Const BrightGreen As Byte = 10 Public Const BrightCyan As Byte = 11 Public Const BrightRed As Byte = 12 Public Const Pink As Byte = 13 Public Const Yellow As Byte = 14 Public Const White As Byte = 15 Public Const DarkBrown As Byte = 16 Public Const Orange As Byte = 17 Public Const GoldenYellow As Byte = 18 Public Const Capri As Byte = 19 Public Const SayColor As Byte = White Public Const GlobalColor As Byte = Cyan Public Const BroadcastColor As Byte = White Public Const TellColor As Byte = BrightGreen Public Const EmoteColor As Byte = BrightCyan Public Const AdminColor As Byte = BrightCyan Public Const HelpColor As Byte = Cyan Public Const WhoColor As Byte = BrightGreen Public Const JoinLeftColor As Byte = DarkGrey Public Const NpcColor As Byte = Brown Public Const AlertColor As Byte = Red Public Const NewMapColor As Byte = BrightGreen ' Boolean constants Public Const NO As Byte = 0 Public Const YES As Byte = 1 ' String constants Public Const NAME_LENGTH As Byte = 20 Public Const MUSIC_LENGTH As Byte = 40 Public Const ACCOUNT_LENGTH As Byte = 12 ' Sex constants Public Const SEX_MALE As Byte = 0 Public Const SEX_FEMALE As Byte = 1 ' Map constants Public Const MAX_MAPS As Long = 100 Public MAX_MAPX As Byte Public MAX_MAPY As Byte Public Const MAP_MORAL_NONE As Byte = 0 Public Const MAP_MORAL_SAFE As Byte = 1 ' Tile constants Public Const TILE_TYPE_WALKABLE As Byte = 0 Public Const TILE_TYPE_BLOCKED As Byte = 1 Public Const TILE_TYPE_WARP As Byte = 2 Public Const TILE_TYPE_ITEM As Byte = 3 Public Const TILE_TYPE_NPCAVOID As Byte = 4 Public Const TILE_TYPE_KEY As Byte = 5 Public Const TILE_TYPE_KEYOPEN As Byte = 6 Public Const TILE_TYPE_RESOURCE As Byte = 7 Public Const TILE_TYPE_DOOR As Byte = 8 Public Const TILE_TYPE_NPCSPAWN As Byte = 9 Public Const TILE_TYPE_SHOP As Byte = 10 Public Const TILE_TYPE_BANK As Byte = 11 Public Const TILE_TYPE_HEAL As Byte = 12 Public Const TILE_TYPE_TRAP As Byte = 13 Public Const TILE_TYPE_SLIDE As Byte = 14 Public Const TILE_TYPE_SOUND As Byte = 15 Public Const TILE_TYPE_CHECKPOINT As Byte = 16 Public Const TILE_TYPE_ARENA As Byte = 17 Public Const TILE_TYPE_CRAFT As Byte = 18 ' max number of crafting items Public Const MAX_RECIPE_ITEMS As Long = 5 'Weather Type Constants Public Const WEATHER_TYPE_NONE As Byte = 0 Public Const WEATHER_TYPE_RAIN As Byte = 1 Public Const WEATHER_TYPE_SNOW As Byte = 2 Public Const WEATHER_TYPE_HAIL As Byte = 3 Public Const WEATHER_TYPE_SANDSTORM As Byte = 4 Public Const WEATHER_TYPE_STORM As Byte = 5 ' Item constants Public Const ITEM_TYPE_NONE As Byte = 0 Public Const ITEM_TYPE_WEAPON As Byte = 1 Public Const ITEM_TYPE_ARMOR As Byte = 2 Public Const ITEM_TYPE_HELMET As Byte = 3 Public Const ITEM_TYPE_SHIELD As Byte = 4 Public Const ITEM_TYPE_CONSUME As Byte = 5 Public Const ITEM_TYPE_KEY As Byte = 6 Public Const ITEM_TYPE_CURRENCY As Byte = 7 Public Const ITEM_TYPE_SPELL As Byte = 8 Public Const ITEM_TYPE_RECIPE As Byte = 10 Public Const ITEM_TYPE_SUMMON As Byte = 9 ' Direction constants Public Const DIR_UP As Byte = 0 Public Const DIR_DOWN As Byte = 1 Public Const DIR_LEFT As Byte = 2 Public Const DIR_RIGHT As Byte = 3 ' Constants for player movement: Tiles per Second Public Const MOVING_WALKING As Byte = 1 Public Const MOVING_RUNNING As Byte = 2 ' Admin constants Public Const ADMIN_MONITOR As Byte = 1 Public Const ADMIN_MAPPER As Byte = 2 Public Const ADMIN_DEVELOPER As Byte = 3 Public Const ADMIN_CREATOR As Byte = 4 ' NPC constants Public Const NPC_BEHAVIOUR_ATTACKONSIGHT As Byte = 0 Public Const NPC_BEHAVIOUR_ATTACKWHENATTACKED As Byte = 1 Public Const NPC_BEHAVIOUR_FRIENDLY As Byte = 2 Public Const NPC_BEHAVIOUR_SHOPKEEPER As Byte = 3 Public Const NPC_BEHAVIOUR_GUARD As Byte = 4 ' Spell constants Public Const SPELL_TYPE_DAMAGEHP As Byte = 0 Public Const SPELL_TYPE_DAMAGEMP As Byte = 1 Public Const SPELL_TYPE_HEALHP As Byte = 2 Public Const SPELL_TYPE_HEALMP As Byte = 3 Public Const SPELL_TYPE_WARP As Byte = 4 ' Game editor constants Public Const EDITOR_ITEM As Byte = 1 Public Const EDITOR_NPC As Byte = 2 Public Const EDITOR_SPELL As Byte = 3 Public Const EDITOR_SHOP As Byte = 4 Public Const EDITOR_RESOURCE As Byte = 5 Public Const EDITOR_ANIMATION As Byte = 6 ' Target type constants Public Const TARGET_TYPE_NONE As Byte = 0 Public Const TARGET_TYPE_PLAYER As Byte = 1 Public Const TARGET_TYPE_NPC As Byte = 2 Public Const TARGET_TYPE_EVENT As Byte = 4 ' Dialogue box constants Public Const DIALOGUE_TYPE_NONE As Byte = 0 Public Const DIALOGUE_TYPE_TRADE As Byte = 1 Public Const DIALOGUE_TYPE_FORGET As Byte = 2 Public Const DIALOGUE_TYPE_PARTY As Byte = 3 ' Do Events Public Const nLng As Long = (&H80 Or &H1 Or &H4 Or &H20) + (&H8 Or &H40) ' Scrolling action message constants Public Const ACTIONMSG_STATIC As Long = 0 Public Const ACTIONMSG_SCROLL As Long = 1 Public Const ACTIONMSG_SCREEN As Long = 2 ' stuffs Public HalfX As Integer Public HalfY As Integer Public ScreenX As Integer Public ScreenY As Integer Public StartXValue As Integer Public StartYValue As Integer Public EndXValue As Integer Public EndYValue As Integer ' Autotiles Public Const AUTO_INNER As Byte = 1 Public Const AUTO_OUTER As Byte = 2 Public Const AUTO_HORIZONTAL As Byte = 3 Public Const AUTO_VERTICAL As Byte = 4 Public Const AUTO_FILL As Byte = 5 ' Autotile types Public Const AUTOTILE_NONE As Byte = 0 Public Const AUTOTILE_NORMAL As Byte = 1 Public Const AUTOTILE_FAKE As Byte = 2 Public Const AUTOTILE_ANIM As Byte = 3 Public Const AUTOTILE_CLIFF As Byte = 4 Public Const AUTOTILE_WATERFALL As Byte = 5 ' Rendering Public Const RENDER_STATE_NONE As Long = 0 Public Const RENDER_STATE_NORMAL As Long = 1 Public Const RENDER_STATE_AUTOTILE As Long = 2 'Chatbubble Public Const ChatBubbleWidth As Long = 200 Public Const EFFECT_TYPE_FADEIN As Long = 1 Public Const EFFECT_TYPE_FADEOUT As Long = 2 Public Const EFFECT_TYPE_FLASH As Long = 3 Public Const EFFECT_TYPE_FOG As Long = 4 Public Const EFFECT_TYPE_WEATHER As Long = 5 Public Const EFFECT_TYPE_TINT As Long = 6 Public Const cmbCTool As Long = 1 ```