├── .gitignore
├── LICENSE
├── README.md
├── TODO.md
├── debugging-lua-scripts.png
├── mtanksl.OpenTibia.Build
├── .gitignore
├── Program.cs
├── README.md
└── mtanksl.OpenTibia.Build.csproj
├── mtanksl.OpenTibia.Common
├── .gitignore
├── AndRecomputableSource.cs
├── IRecomputableSource.cs
├── Objects Diagram.cd
├── Objects
│ ├── Component.cs
│ ├── Container.cs
│ ├── Creature.cs
│ ├── DoorItem.cs
│ ├── FluidItem.cs
│ ├── GameObject.cs
│ ├── House.cs
│ ├── HouseAccessList.cs
│ ├── HouseTile.cs
│ ├── IBattleCollection.cs
│ ├── IByteArrayStream.cs
│ ├── IByteArrayStreamReader.cs
│ ├── IByteArrayStreamWriter.cs
│ ├── IClient.cs
│ ├── IConnection.cs
│ ├── IContainer.cs
│ ├── IContainerCollection.cs
│ ├── IContent.cs
│ ├── IHasFeatureFlag.cs
│ ├── IIncomingPacket.cs
│ ├── IMapGetTile.cs
│ ├── IMessageCollection.cs
│ ├── IOutgoingPacket.cs
│ ├── IWindowCollection.cs
│ ├── Inventory.cs
│ ├── Item.cs
│ ├── ItemMetadata.cs
│ ├── Locker.cs
│ ├── Metadata
│ │ ├── AttackItem.cs
│ │ ├── DefenseItem.cs
│ │ ├── LootItem.cs
│ │ ├── VoiceCollection.cs
│ │ └── VoiceItem.cs
│ ├── Monster.cs
│ ├── MonsterMetadata.cs
│ ├── Npc.cs
│ ├── NpcMetadata.cs
│ ├── Player.cs
│ ├── PlayerAchievementsCollection.cs
│ ├── PlayerBlessCollection.cs
│ ├── PlayerCombatCollection.cs
│ ├── PlayerMountCollection.cs
│ ├── PlayerOutfitCollection.cs
│ ├── PlayerSpellCollection.cs
│ ├── PlayerStorageCollection.cs
│ ├── PlayerVipCollection.cs
│ ├── ReadableItem.cs
│ ├── Safe.cs
│ ├── Skills.cs
│ ├── SplashItem.cs
│ ├── StackableItem.cs
│ ├── TeleportItem.cs
│ ├── Tile.cs
│ ├── Town.cs
│ ├── Waypoint.cs
│ └── Window.cs
├── OrRecomputableSource.cs
├── Recomputable.cs
├── RecomputableOfT.cs
├── RecomputableSource.cs
├── Structures
│ ├── AccountManagerType.cs
│ ├── Addon.cs
│ ├── AmmoAction.cs
│ ├── AmmoType.cs
│ ├── AnimatedTextColor.cs
│ ├── BlockType.cs
│ ├── ChaseMode.cs
│ ├── Clock.cs
│ ├── DamageType.cs
│ ├── Direction.cs
│ ├── FeatureFlag.cs
│ ├── FightMode.cs
│ ├── FloorChange.cs
│ ├── FluidColor.cs
│ ├── FluidType.cs
│ ├── FrameColor.cs
│ ├── Gender.cs
│ ├── ItemMetadataFlags.cs
│ ├── Light.cs
│ ├── MagicEffectType.cs
│ ├── Marker.cs
│ ├── MoveDirection.cs
│ ├── Offset.cs
│ ├── OperatingSystem.cs
│ ├── Origin.cs
│ ├── Outfit.cs
│ ├── PartyIcon.cs
│ ├── Position.cs
│ ├── ProjectileType.cs
│ ├── Race.cs
│ ├── Rank.cs
│ ├── SafeMode.cs
│ ├── Skill.cs
│ ├── SkullIcon.cs
│ ├── Slot.cs
│ ├── SlotType.cs
│ ├── SpecialCondition.cs
│ ├── TalkType.cs
│ ├── TextColor.cs
│ ├── TopOrder.cs
│ ├── Vocation.cs
│ ├── WarIcon.cs
│ └── WeaponType.cs
└── mtanksl.OpenTibia.Common.csproj
├── mtanksl.OpenTibia.Data.Common
├── .gitignore
├── Models
│ ├── DbAccount.cs
│ ├── DbBan.cs
│ ├── DbBugReport.cs
│ ├── DbDebugAssert.cs
│ ├── DbHouse.cs
│ ├── DbHouseAccessList.cs
│ ├── DbHouseItem.cs
│ ├── DbMotd.cs
│ ├── DbPlayer.cs
│ ├── DbPlayerAchievement.cs
│ ├── DbPlayerBless.cs
│ ├── DbPlayerDeath.cs
│ ├── DbPlayerDepotItem.cs
│ ├── DbPlayerItem.cs
│ ├── DbPlayerKill.cs
│ ├── DbPlayerOutfit.cs
│ ├── DbPlayerSpell.cs
│ ├── DbPlayerStorage.cs
│ ├── DbPlayerVip.cs
│ ├── DbRuleViolationReport.cs
│ ├── DbServerStorage.cs
│ └── DbWorld.cs
├── Repositories
│ ├── IAccountRepository.cs
│ ├── IBanRepository.cs
│ ├── IBugReportRepository.cs
│ ├── IDebugAssertRepository.cs
│ ├── IHouseRepository.cs
│ ├── IMotdRepository.cs
│ ├── IPlayerRepository.cs
│ ├── IRuleViolationReportRepository.cs
│ ├── IServerStorageRepository.cs
│ └── IWorldRepository.cs
└── mtanksl.OpenTibia.Data.Common.csproj
├── mtanksl.OpenTibia.Data.InMemory
├── .gitignore
├── InMemoryContext.cs
└── mtanksl.OpenTibia.Data.InMemory.csproj
├── mtanksl.OpenTibia.Data.MsSql
├── .gitignore
├── MsSqlContext.cs
├── MsSqlContextFactory.cs
├── README.md
├── mtanksl.OpenTibia.Data.MsSql.csproj
└── structure.sql
├── mtanksl.OpenTibia.Data.MySql
├── .gitignore
├── MySqlContext.cs
├── MySqlContextFactory.cs
├── README.md
├── mtanksl.OpenTibia.Data.MySql.csproj
└── structure.sql
├── mtanksl.OpenTibia.Data.PostgreSql
├── .gitignore
├── PostgreSqlContext.cs
├── PostgreSqlContextFactory.cs
├── README.md
├── mtanksl.OpenTibia.Data.PostgreSql.csproj
└── structure.sql
├── mtanksl.OpenTibia.Data.Sqlite
├── .gitignore
├── README.md
├── SqliteContext.cs
├── SqliteContextFactory.cs
├── database.db.dist
├── mtanksl.OpenTibia.Data.Sqlite.csproj
└── structure.sql
├── mtanksl.OpenTibia.Data
├── .gitignore
├── Contexts
│ └── DatabaseContext.cs
├── Repositories
│ ├── AccountRepository.cs
│ ├── BanRepository.cs
│ ├── BugReportRepository.cs
│ ├── DebugAssertRepository.cs
│ ├── HouseRepository.cs
│ ├── MotdRepository.cs
│ ├── PlayerRepository.cs
│ ├── RuleViolationReportRepository.cs
│ ├── ServerStorageRepository.cs
│ └── WorldRepository.cs
└── mtanksl.OpenTibia.Data.csproj
├── mtanksl.OpenTibia.FileFormats
├── .gitignore
├── Dat
│ ├── DatAttribute.cs
│ ├── DatFile.cs
│ ├── ExtraInfo.cs
│ ├── Item.cs
│ └── ItemFlags.cs
├── Otb
│ ├── Item.cs
│ ├── ItemFlags.cs
│ ├── ItemGroup.cs
│ ├── OtbAttribute.cs
│ ├── OtbFile.cs
│ ├── OtbInfo.cs
│ ├── OtbType.cs
│ ├── OtbVersion.cs
│ └── TibiaVersion.cs
├── Otbm
│ ├── Area.cs
│ ├── HouseTile.cs
│ ├── Item.cs
│ ├── MapInfo.cs
│ ├── OtbmAttribute.cs
│ ├── OtbmFile.cs
│ ├── OtbmInfo.cs
│ ├── OtbmType.cs
│ ├── OtbmVersion.cs
│ ├── Tile.cs
│ ├── TileFlags.cs
│ ├── Town.cs
│ └── Waypoint.cs
├── Pic
│ ├── Image.cs
│ ├── PicFile.cs
│ └── Sprite.cs
├── Spr
│ ├── SprFile.cs
│ └── Sprite.cs
├── Xml
│ ├── Houses
│ │ ├── House.cs
│ │ └── HouseFile.cs
│ ├── Items
│ │ ├── Item.cs
│ │ └── ItemsFile.cs
│ ├── Monsters
│ │ ├── AttackItem.cs
│ │ ├── ChangeTargetStrategy.cs
│ │ ├── DefenseCollection.cs
│ │ ├── DefenseItem.cs
│ │ ├── ElementItem.cs
│ │ ├── FlagItem.cs
│ │ ├── HealthItem.cs
│ │ ├── ImmunityItem.cs
│ │ ├── LightItem.cs
│ │ ├── LookItem.cs
│ │ ├── LootItem.cs
│ │ ├── Monster.cs
│ │ ├── MonsterFile.cs
│ │ ├── TargetStrategy.cs
│ │ ├── VoiceCollection.cs
│ │ └── VoiceItem.cs
│ ├── Npcs
│ │ ├── HealthItem.cs
│ │ ├── LightItem.cs
│ │ ├── LookItem.cs
│ │ ├── Npc.cs
│ │ ├── NpcFile.cs
│ │ ├── VoiceCollection.cs
│ │ └── VoiceItem.cs
│ └── Spawns
│ │ ├── Monster.cs
│ │ ├── Npc.cs
│ │ ├── Spawn.cs
│ │ └── SpawnFile.cs
└── mtanksl.OpenTibia.FileFormats.csproj
├── mtanksl.OpenTibia.Game.Common
├── .gitignore
├── CommandHandlers
│ ├── ICommandHandler.cs
│ ├── ICommandHandlerOfT.cs
│ ├── ICommandResultHandler.cs
│ └── ICommandResultHandlerOfT.cs
├── Commands
│ ├── Command.cs
│ ├── CommandResult.cs
│ ├── Incoming
│ │ ├── Battle
│ │ │ ├── ParseStartAttackCommand.cs
│ │ │ ├── ParseStartFollowCommand.cs
│ │ │ ├── ParseStopAttackCommand.cs
│ │ │ └── ParseStopFollowCommand.cs
│ │ ├── Button
│ │ │ ├── ParseLogOutCommand.cs
│ │ │ ├── ParseQuestsCommand.cs
│ │ │ └── ParseStopCommand.cs
│ │ ├── Client
│ │ │ └── ParsePongCommand.cs
│ │ ├── CombatControl
│ │ │ └── ParseCombatControlsCommand.cs
│ │ ├── Console
│ │ │ ├── ParseAnswerReportRuleViolationCommand.cs
│ │ │ ├── ParseCloseChannelCommand.cs
│ │ │ ├── ParseCloseNpcsChannelCommand.cs
│ │ │ ├── ParseCloseReportRuleViolationChannelAnswerCommand.cs
│ │ │ ├── ParseCloseReportRuleViolationChannelQuestionCommand.cs
│ │ │ ├── ParseExcludePlayerCommand.cs
│ │ │ ├── ParseInvitePlayerChannelCommand.cs
│ │ │ ├── ParseOpenNewChannelCommand.cs
│ │ │ ├── ParseProcessReportRuleViolationCommand.cs
│ │ │ ├── ParseQuestionReportRuleViolationCommand.cs
│ │ │ ├── ParseTalkBroadcastCommand.cs
│ │ │ ├── ParseTalkChannelRedAnonymousCommand.cs
│ │ │ ├── ParseTalkChannelRedCommand.cs
│ │ │ ├── ParseTalkChannelYellowCommand.cs
│ │ │ ├── ParseTalkPrivateCommand.cs
│ │ │ ├── ParseTalkPrivatePlayerToNpcCommand.cs
│ │ │ ├── ParseTalkPrivateRedCommand.cs
│ │ │ ├── ParseTalkSayCommand.cs
│ │ │ ├── ParseTalkUnknownCommand.cs
│ │ │ ├── ParseTalkWhisperCommand.cs
│ │ │ └── ParseTalkYellCommand.cs
│ │ ├── Container
│ │ │ ├── ParseCloseContainerCommand.cs
│ │ │ └── ParseOpenParentContainerCommand.cs
│ │ ├── Control
│ │ │ ├── ParseStopWalkCommand.cs
│ │ │ ├── ParseTurnCommand.cs
│ │ │ ├── ParseWalkCommand.cs
│ │ │ └── ParseWalkToCommand.cs
│ │ ├── Dialog
│ │ │ ├── ParseDebugAssertCommand.cs
│ │ │ ├── ParseEditListDialogCommand.cs
│ │ │ ├── ParseEditTextDialogCommand.cs
│ │ │ ├── ParseEnterGameCommand.cs
│ │ │ ├── ParseOpenQuestCommand.cs
│ │ │ ├── ParseOpenReportRuleViolationCommand.cs
│ │ │ ├── ParseOpenedMyPrivateChannelCommand.cs
│ │ │ ├── ParseOpenedNewChannelCommand.cs
│ │ │ ├── ParseOpenedPrivateChannelCommand.cs
│ │ │ ├── ParseReportBugCommand.cs
│ │ │ ├── ParseReportRuleViolationCommand.cs
│ │ │ ├── ParseSelectedCharacterCommand.cs
│ │ │ └── ParseSelectedOutfitCommand.cs
│ │ ├── DisallowCommand.cs
│ │ ├── GameWindow
│ │ │ ├── Look
│ │ │ │ ├── ParseLookCommand.cs
│ │ │ │ ├── ParseLookFromContainerCommand.cs
│ │ │ │ ├── ParseLookFromInventoryCommand.cs
│ │ │ │ └── ParseLookFromTileCommand.cs
│ │ │ ├── MoveItem
│ │ │ │ ├── ParseMoveItemCommand.cs
│ │ │ │ ├── ParseMoveItemFromContainerToContainerCommand.cs
│ │ │ │ ├── ParseMoveItemFromContainerToInventoryCommand.cs
│ │ │ │ ├── ParseMoveItemFromContainerToTileCommand.cs
│ │ │ │ ├── ParseMoveItemFromInventoryToContainerCommand.cs
│ │ │ │ ├── ParseMoveItemFromInventoryToInventoryCommand.cs
│ │ │ │ ├── ParseMoveItemFromInventoryToTileCommand.cs
│ │ │ │ ├── ParseMoveItemFromTileToContainerCommand.cs
│ │ │ │ ├── ParseMoveItemFromTileToInventoryCommand.cs
│ │ │ │ └── ParseMoveItemFromTileToTileCommand.cs
│ │ │ ├── ParseInviteToPartyCommand.cs
│ │ │ ├── ParseJoinPartyCommand.cs
│ │ │ ├── ParseLeavePartyCommand.cs
│ │ │ ├── ParseMountCommand.cs
│ │ │ ├── ParsePassLeadershipToCommand.cs
│ │ │ ├── ParseRevokePartyCommand.cs
│ │ │ ├── ParseSetOutfitCommand.cs
│ │ │ ├── ParseSharedExperienceCommand.cs
│ │ │ ├── RotateItem
│ │ │ │ ├── ParseRotateItemCommand.cs
│ │ │ │ ├── ParseRotateItemFromContainerCommand.cs
│ │ │ │ ├── ParseRotateItemFromInventoryCommand.cs
│ │ │ │ └── ParseRotateItemFromTileCommand.cs
│ │ │ ├── TradeWith
│ │ │ │ ├── ParseAcceptTradeCommand.cs
│ │ │ │ ├── ParseCancelOrRejectTradeCommand.cs
│ │ │ │ ├── ParseLookItemTradeCommand.cs
│ │ │ │ ├── ParseTradeWithCommand.cs
│ │ │ │ ├── ParseTradeWithFromContainerCommand.cs
│ │ │ │ ├── ParseTradeWithFromInventoryCommand.cs
│ │ │ │ └── ParseTradeWithFromTileCommand.cs
│ │ │ ├── UseItem
│ │ │ │ ├── ParseUseItemCommand.cs
│ │ │ │ ├── ParseUseItemFromContainerCommand.cs
│ │ │ │ ├── ParseUseItemFromHotkeyCommand.cs
│ │ │ │ ├── ParseUseItemFromInventoryCommand.cs
│ │ │ │ └── ParseUseItemFromTileCommand.cs
│ │ │ ├── UseItemWithCreature
│ │ │ │ ├── ParseUseItemWithCreatureCommand.cs
│ │ │ │ ├── ParseUseItemWithCreatureFromContainerCommand.cs
│ │ │ │ ├── ParseUseItemWithCreatureFromHotkeyCommand.cs
│ │ │ │ ├── ParseUseItemWithCreatureFromInventoryCommand.cs
│ │ │ │ └── ParseUseItemWithCreatureFromTileCommand.cs
│ │ │ └── UseItemWithItem
│ │ │ │ ├── ParseUseItemWithItemCommand.cs
│ │ │ │ ├── ParseUseItemWithItemFromContainerToContainerCommand.cs
│ │ │ │ ├── ParseUseItemWithItemFromContainerToInventoryCommand.cs
│ │ │ │ ├── ParseUseItemWithItemFromContainerToTileCommand.cs
│ │ │ │ ├── ParseUseItemWithItemFromHotkeyToContainerCommand.cs
│ │ │ │ ├── ParseUseItemWithItemFromHotkeyToInventoryCommand.cs
│ │ │ │ ├── ParseUseItemWithItemFromHotkeyToTileCommand.cs
│ │ │ │ ├── ParseUseItemWithItemFromInventoryToContainerCommand.cs
│ │ │ │ ├── ParseUseItemWithItemFromInventoryToInventoryCommand.cs
│ │ │ │ ├── ParseUseItemWithItemFromInventoryToTileCommand.cs
│ │ │ │ ├── ParseUseItemWithItemFromTileToContainerCommand.cs
│ │ │ │ ├── ParseUseItemWithItemFromTileToInventoryCommand.cs
│ │ │ │ └── ParseUseItemWithItemFromTileToTileCommand.cs
│ │ ├── IgnoreCommand.cs
│ │ ├── Info
│ │ │ └── ParseInfoProtocolCommand.cs
│ │ ├── NpcTrade
│ │ │ ├── ParseBuyNpcTradeCommand.cs
│ │ │ ├── ParseCloseNpcTradeCommand.cs
│ │ │ ├── ParseLookItemNpcTradeCommand.cs
│ │ │ └── ParseSellNpcTradeCommand.cs
│ │ └── Vip
│ │ │ ├── ParseAddVipCommand.cs
│ │ │ └── ParseRemoveVipCommand.cs
│ ├── IncomingCommand.cs
│ └── Outgoing
│ │ ├── Container
│ │ ├── ContainerAddItemCommand.cs
│ │ ├── ContainerCreateItemCommand.cs
│ │ ├── ContainerRefreshItemCommand.cs
│ │ ├── ContainerRemoveItemCommand.cs
│ │ └── ContainerReplaceItemCommand.cs
│ │ ├── Creature
│ │ ├── Attack
│ │ │ ├── Attack.cs
│ │ │ ├── CancelInvisibilityAttack.cs
│ │ │ ├── ChallengeAttack.cs
│ │ │ ├── DamageAttack.cs
│ │ │ └── HealingAttack.cs
│ │ ├── Condition
│ │ │ ├── Condition.cs
│ │ │ ├── ConditionSpecialCondition.cs
│ │ │ ├── DamageCondition.cs
│ │ │ ├── DrowningCondition.cs
│ │ │ ├── DrunkCondition.cs
│ │ │ ├── HasteCondition.cs
│ │ │ ├── InvisibleCondition.cs
│ │ │ ├── LightCondition.cs
│ │ │ ├── LogoutBlockCondition.cs
│ │ │ ├── MagicShieldCondition.cs
│ │ │ ├── OutfitCondition.cs
│ │ │ ├── ProtectionZoneBlockCondition.cs
│ │ │ ├── SkillCondition.cs
│ │ │ ├── SlowedCondition.cs
│ │ │ └── StealthCondition.cs
│ │ ├── CreatureAddConditionCommand.cs
│ │ ├── CreatureAttackAreaCommand.cs
│ │ ├── CreatureAttackCreatureCommand.cs
│ │ ├── CreatureDeathCommand.cs
│ │ ├── CreatureDestroyCommand.cs
│ │ ├── CreatureMoveCommand.cs
│ │ ├── CreatureRemoveConditionCommand.cs
│ │ ├── CreatureUpdateDirectionCommand.cs
│ │ ├── CreatureUpdateHealthCommand.cs
│ │ ├── CreatureUpdateInvisibleCommand.cs
│ │ ├── CreatureUpdateLightCommand.cs
│ │ ├── CreatureUpdateOutfitCommand.cs
│ │ └── CreatureUpdateSpeedCommand.cs
│ │ ├── Effect
│ │ ├── ShowAnimatedTextCommand.cs
│ │ ├── ShowMagicEffectCommand.cs
│ │ ├── ShowProjectileCommand.cs
│ │ └── ShowTextCommand.cs
│ │ ├── FluidItem
│ │ └── FluidItemUpdateFluidTypeCommand.cs
│ │ ├── Inventory
│ │ ├── InventoryAddItemCommand.cs
│ │ ├── InventoryCreateItemCommand.cs
│ │ ├── InventoryRefreshItemCommand.cs
│ │ ├── InventoryRemoveItemCommand.cs
│ │ └── InventoryReplaceItemCommand.cs
│ │ ├── Item
│ │ ├── ItemCloneCommand.cs
│ │ ├── ItemDecrementCommand.cs
│ │ ├── ItemDestroyCommand.cs
│ │ ├── ItemMoveCommand.cs
│ │ └── ItemTransformCommand.cs
│ │ ├── Monster
│ │ ├── MonsterSayCommand.cs
│ │ └── MonsterYellCommand.cs
│ │ ├── Npc
│ │ ├── NpcSayCommand.cs
│ │ ├── NpcSayToPlayerCommand.cs
│ │ ├── NpcTradeCommand.cs
│ │ └── NpcTradeUpdateStatsCommand.cs
│ │ ├── Player
│ │ ├── PlayerAchievementCommand.cs
│ │ ├── PlayerAddExperienceCommand.cs
│ │ ├── PlayerAddItemCommand.cs
│ │ ├── PlayerAddSkillPointsCommand.cs
│ │ ├── PlayerBlessCommand.cs
│ │ ├── PlayerCountItemsCommand.cs
│ │ ├── PlayerCountMoneyCommand.cs
│ │ ├── PlayerCreateItemCommand.cs
│ │ ├── PlayerCreateItemsCommand.cs
│ │ ├── PlayerCreateMoneyCommand.cs
│ │ ├── PlayerDestroyItemsCommand.cs
│ │ ├── PlayerDestroyMoneyCommand.cs
│ │ ├── PlayerLoginCommand.cs
│ │ ├── PlayerLogoutCommand.cs
│ │ ├── PlayerLookCreatureCommand.cs
│ │ ├── PlayerLookItemCommand.cs
│ │ ├── PlayerMoveCreatureCommand.cs
│ │ ├── PlayerMoveItemCommand.cs
│ │ ├── PlayerRemoveExperienceCommand.cs
│ │ ├── PlayerRemoveSkillPointsCommand.cs
│ │ ├── PlayerRotateItemCommand.cs
│ │ ├── PlayerSayCommand.cs
│ │ ├── PlayerSayToNpcCommand.cs
│ │ ├── PlayerTradeWithCommand.cs
│ │ ├── PlayerUpdateCapacityCommand.cs
│ │ ├── PlayerUpdateExperienceCommand.cs
│ │ ├── PlayerUpdateManaCommand.cs
│ │ ├── PlayerUpdateSkillCommand.cs
│ │ ├── PlayerUpdateSoulCommand.cs
│ │ ├── PlayerUpdateStaminaCommand.cs
│ │ ├── PlayerUseItemCommand.cs
│ │ ├── PlayerUseItemWithCreatureCommand.cs
│ │ ├── PlayerUseItemWithItemCommand.cs
│ │ ├── PlayerWalkToCommand.cs
│ │ ├── PlayerWhisperCommand.cs
│ │ └── PlayerYellCommand.cs
│ │ ├── SplashItem
│ │ └── SplashItemUpdateFluidTypeCommand.cs
│ │ ├── StackableItem
│ │ └── StackableItemUpdateCountCommand.cs
│ │ └── Tile
│ │ ├── TileAddCreatureCommand.cs
│ │ ├── TileAddItemCommand.cs
│ │ ├── TileCreateItemCommand.cs
│ │ ├── TileCreateItemOrIncrementCommand.cs
│ │ ├── TileCreateMonsterCommand.cs
│ │ ├── TileCreateMonsterCorpseCommand.cs
│ │ ├── TileCreateNpcCommand.cs
│ │ ├── TileCreatePlayerCommand.cs
│ │ ├── TileCreatePlayerCorpseCommand.cs
│ │ ├── TileRefreshItemCommand.cs
│ │ ├── TileRemoveCreatureCommand.cs
│ │ ├── TileRemoveItemCommand.cs
│ │ └── TileReplaceItemCommand.cs
├── Common
│ ├── AchievementConstants.cs
│ ├── Constants.cs
│ ├── Context.cs
│ ├── Formula.cs
│ ├── IDatabase.cs
│ ├── IServer.cs
│ ├── Pool.cs
│ ├── QueueDictionaryOfTKeyOfTValue.cs
│ ├── QueueHashSetOfT.cs
│ ├── Serializer.cs
│ ├── ServerObjects
│ │ ├── ChannelCollection
│ │ │ ├── Channel.cs
│ │ │ ├── IChannelCollection.cs
│ │ │ └── Statement.cs
│ │ ├── CombatCollection
│ │ │ ├── Hit.cs
│ │ │ └── ICombatCollection.cs
│ │ ├── Config
│ │ │ ├── ExperienceStagesConfig.cs
│ │ │ ├── RookingConfig.cs
│ │ │ └── WorldType.cs
│ │ ├── GuildCollection
│ │ │ ├── Guild.cs
│ │ │ └── IGuildCollection.cs
│ │ ├── IClientFactory.cs
│ │ ├── ICommandHandlerCollection.cs
│ │ ├── IConfig.cs
│ │ ├── IDatabaseFactory.cs
│ │ ├── IEventHandlerCollection.cs
│ │ ├── IFeatures.cs
│ │ ├── IGameObjectCollection.cs
│ │ ├── IGameObjectComponentCollection.cs
│ │ ├── IGameObjectEventHandlerCollection.cs
│ │ ├── IGameObjectPool.cs
│ │ ├── IGameObjectScriptCollection.cs
│ │ ├── IItemFactory.cs
│ │ ├── IMap.cs
│ │ ├── IMessageCollectionFactory.cs
│ │ ├── IMonsterFactory.cs
│ │ ├── INpcFactory.cs
│ │ ├── IPathResolver.cs
│ │ ├── IPathfinding.cs
│ │ ├── IPlayerFactory.cs
│ │ ├── IPluginCollection.cs
│ │ ├── IPluginLoader.cs
│ │ ├── IPositionalEventHandlerCollection.cs
│ │ ├── IRandomization.cs
│ │ ├── IRateLimiting.cs
│ │ ├── IScriptCollection.cs
│ │ ├── IServerStatistics.cs
│ │ ├── IValues.cs
│ │ ├── IWaitingList.cs
│ │ ├── Logger
│ │ │ ├── ILogger.cs
│ │ │ ├── ILoggerProvider.cs
│ │ │ ├── LogLevel.cs
│ │ │ └── StopwatchLogger.cs
│ │ ├── LuaScriptCollection
│ │ │ ├── ILuaScope.cs
│ │ │ ├── ILuaScriptCollection.cs
│ │ │ ├── LuaException.cs
│ │ │ └── LuaScope.cs
│ │ ├── NpcTradingCollection
│ │ │ ├── INpcTradingCollection.cs
│ │ │ └── NpcTrading.cs
│ │ ├── OutfitCollection
│ │ │ ├── IMountCollection.cs
│ │ │ ├── IOutfitCollection.cs
│ │ │ ├── MountConfig.cs
│ │ │ └── OutfitConfig.cs
│ │ ├── PacketsFactory
│ │ │ └── IPacketToCommand.cs
│ │ ├── PartyCollection
│ │ │ ├── IPartyCollection.cs
│ │ │ └── Party.cs
│ │ ├── QuestCollection
│ │ │ ├── IQuestCollection.cs
│ │ │ ├── MissionConfig.cs
│ │ │ └── QuestConfig.cs
│ │ ├── RuleViolationCollection
│ │ │ ├── IRuleViolationCollection.cs
│ │ │ └── RuleViolation.cs
│ │ ├── SpawnCollection
│ │ │ ├── IRaidCollection.cs
│ │ │ ├── ISpawnCollection.cs
│ │ │ └── Spawner.cs
│ │ ├── TradingCollection
│ │ │ ├── ITradingCollection.cs
│ │ │ └── Trading.cs
│ │ └── VocationCollection
│ │ │ ├── IVocationCollection.cs
│ │ │ ├── VocationConfig.cs
│ │ │ └── VocationConstantsConfig.cs
│ └── ServerStatus.cs
├── Components
│ ├── Behaviour.cs
│ ├── Creature
│ │ ├── AttackStrategy
│ │ │ ├── CombineComboRandomAttackStrategy.cs
│ │ │ ├── CombineRandomAttackStrategy.cs
│ │ │ ├── DoNotAttackStrategy.cs
│ │ │ ├── IAttackStrategy.cs
│ │ │ ├── IntervalAndChanceAttackStrategy.cs
│ │ │ ├── MonsterAttackPluginAttackStrategy.cs
│ │ │ └── PlayerInventoryAttackStrategy.cs
│ │ ├── ChangeTargetStrategy
│ │ │ ├── DoChangeTargetStrategy.cs
│ │ │ ├── DoNotChangeTargetStrategy.cs
│ │ │ ├── IChangeTargetStrategy.cs
│ │ │ └── IntervalAndChanceChangeTargetStrategy.cs
│ │ ├── CreatureConditionBehaviour.cs
│ │ ├── TargetStrategy
│ │ │ ├── CombineRandomTargetStrategy.cs
│ │ │ ├── ITargetStrategy.cs
│ │ │ ├── IntervalAndChanceTargetStrategy.cs
│ │ │ ├── MostDamageToAttackerTargetStrategy.cs
│ │ │ ├── MostDamagedByAttackerTargetStrategy.cs
│ │ │ ├── NearestTargetStrategy.cs
│ │ │ ├── RandomTargetStrategy.cs
│ │ │ └── WeakestTargetStrategy.cs
│ │ └── WalkStrategy
│ │ │ ├── ApproachWalkStrategy.cs
│ │ │ ├── DoNotWalkStrategy.cs
│ │ │ ├── FollowWalkStrategy.cs
│ │ │ ├── IWalkStrategy.cs
│ │ │ ├── KeepDistanceWalkStrategy.cs
│ │ │ ├── NpcWalkStrategy.cs
│ │ │ ├── RandomWalkStrategy.cs
│ │ │ ├── RunAwayOnLowHealthWalkStrategy.cs
│ │ │ └── RunAwayWalkStrategy.cs
│ ├── DelayBehaviour.cs
│ ├── Item
│ │ ├── ItemDecayDestroyBehaviour.cs
│ │ ├── ItemDecayTransformBehaviour.cs
│ │ ├── ItemStreetLampSwitchOffScheduledBehaviour.cs
│ │ └── ItemStreetLampSwitchOnScheduledBehaviour.cs
│ ├── Monster
│ │ ├── MonsterTalkBehaviour.cs
│ │ └── MonsterThinkBehaviour.cs
│ ├── MultipleDelayBehaviour.cs
│ ├── MultipleEventHandlerBehaviour.cs
│ ├── MultipleGameObjectEventHandlerBehaviour.cs
│ ├── MultiplePositionalEventHandlerBehaviour.cs
│ ├── Npc
│ │ ├── MultipleQueueNpcThinkBehaviour.cs
│ │ ├── NpcTalkBehaviour.cs
│ │ └── SingleQueueNpcThinkBehaviour.cs
│ ├── Player
│ │ ├── PlayerCooldownBehaviour.cs
│ │ ├── PlayerEnvironmentLightBehaviour.cs
│ │ ├── PlayerIdleBehaviour.cs
│ │ ├── PlayerMuteBehaviour.cs
│ │ ├── PlayerPingBehaviour.cs
│ │ ├── PlayerRegenerationConditionBehaviour.cs
│ │ ├── PlayerThinkBehaviour.cs
│ │ └── PlayerWalkDelayBehaviour.cs
│ ├── RealClockScheduledBehaviour.cs
│ ├── StateBehaviour.cs
│ └── TibiaClockScheduledBehaviour.cs
├── EventHandlers
│ ├── IEventHandler.cs
│ └── IEventHandlerOfT.cs
├── Events
│ ├── Container
│ │ ├── ContainerAddItemEventArgs.cs
│ │ ├── ContainerRefreshItemEventArgs.cs
│ │ ├── ContainerRemoveItemEventArgs.cs
│ │ └── ContainerReplaceItemEventArgs.cs
│ ├── Creature
│ │ ├── CreatureAppearEventArgs.cs
│ │ ├── CreatureDeathEventArgs.cs
│ │ ├── CreatureDisappearEventArgs.cs
│ │ ├── CreatureKillEventArgs.cs
│ │ ├── CreatureUpdateDirectionEventArgs.cs
│ │ ├── CreatureUpdateHealthEventArgs.cs
│ │ ├── CreatureUpdateInvisibleEventArgs.cs
│ │ ├── CreatureUpdateLightEventArgs.cs
│ │ ├── CreatureUpdateOutfitEventArgs.cs
│ │ └── CreatureUpdateSpeedEventArgs.cs
│ ├── GameEventArgs.cs
│ ├── Global
│ │ ├── GlobalDecayEventArgs.cs
│ │ ├── GlobalEnvironmentLightEventArgs.cs
│ │ ├── GlobalPingEventArgs.cs
│ │ ├── GlobalRaidEventArgs.cs
│ │ ├── GlobalRealClockTickEventArgs.cs
│ │ ├── GlobalServerReloadedEventArgs.cs
│ │ ├── GlobalSpawnEventArgs.cs
│ │ ├── GlobalTibiaClockTickEventArgs.cs
│ │ └── GlobalTickEventArgs.cs
│ ├── Inventory
│ │ ├── InventoryAddItemEventArgs.cs
│ │ ├── InventoryRefreshItemEventArgs.cs
│ │ ├── InventoryRemoveItemEventArgs.cs
│ │ └── InventoryReplaceItemEventArgs.cs
│ ├── Monster
│ │ ├── MonsterSayEventArgs.cs
│ │ └── MonsterYellEventArgs.cs
│ ├── Npc
│ │ ├── NpcSayEventArgs.cs
│ │ └── NpcSayToPlayerEventArgs.cs
│ ├── ObserveEventArgs.cs
│ ├── Player
│ │ ├── PlayerAdvanceLevelEventArgs.cs
│ │ ├── PlayerAdvanceSkillEventArgs.cs
│ │ ├── PlayerBuyNpcTradeEventArgs.cs
│ │ ├── PlayerCloseNpcTradeEventArgs.cs
│ │ ├── PlayerCloseNpcsChannelEventArgs.cs
│ │ ├── PlayerEarnAchievementEventArgs.cs
│ │ ├── PlayerLoginEventArgs.cs
│ │ ├── PlayerLogoutEventArgs.cs
│ │ ├── PlayerSayEventArgs.cs
│ │ ├── PlayerSayToNpcEventArgs.cs
│ │ ├── PlayerSellNpcTradeEventArgs.cs
│ │ ├── PlayerUpdateCapacityEventArgs.cs
│ │ ├── PlayerUpdateExperienceEventArgs.cs
│ │ ├── PlayerUpdateManaEventArgs.cs
│ │ ├── PlayerUpdateSkillEventArgs.cs
│ │ ├── PlayerUpdateSoulEventArgs.cs
│ │ ├── PlayerUpdateStaminaEventArgs.cs
│ │ ├── PlayerWhisperEventArgs.cs
│ │ └── PlayerYellEventArgs.cs
│ └── Tile
│ │ ├── TileAddCreatureEventArgs.cs
│ │ ├── TileAddItemEventArgs.cs
│ │ ├── TileRefreshItemEventArgs.cs
│ │ ├── TileRemoveCreatureEventArgs.cs
│ │ ├── TileRemoveItemEventArgs.cs
│ │ └── TileReplaceItemEventArgs.cs
├── Extensions
│ ├── ContainerExtensions.cs
│ ├── CreatureExtensions.cs
│ ├── FluidItemExtensions.cs
│ ├── InventoryExtensions.cs
│ ├── ItemExtensions.cs
│ ├── MonsterExtensions.cs
│ ├── NpcExtensions.cs
│ ├── PlayerExtensions.cs
│ ├── SplashItemExtensions.cs
│ ├── StackableItemExtensions.cs
│ └── TileExtensions.cs
├── GameObjectScripts
│ └── GameObjectScript.cs
├── Plugins
│ ├── Ammunition.cs
│ ├── AmmunitionPlugin.cs
│ ├── CreatureDeathPlugin.cs
│ ├── CreatureKillPlugin.cs
│ ├── CreatureStepInPlugin.cs
│ ├── CreatureStepOutPlugin.cs
│ ├── DialoguePlugin.cs
│ ├── InventoryDeEquipPlugin.cs
│ ├── InventoryEquipPlugin.cs
│ ├── ItemCreationPlugin.cs
│ ├── MonsterAttackPlugin.cs
│ ├── MonsterCreationPlugin.cs
│ ├── NpcCreationPlugin.cs
│ ├── PlayerAdvanceLevelPlugin.cs
│ ├── PlayerAdvanceSkillPlugin.cs
│ ├── PlayerCreationPlugin.cs
│ ├── PlayerEarnAchievementPlugin.cs
│ ├── PlayerLoginPlugin.cs
│ ├── PlayerLogoutPlugin.cs
│ ├── PlayerMoveCreaturePlugin.cs
│ ├── PlayerMoveItemPlugin.cs
│ ├── PlayerRotateItemPlugin.cs
│ ├── PlayerSayPlugin.cs
│ ├── PlayerUseItemPlugin.cs
│ ├── PlayerUseItemWithCreaturePlugin.cs
│ ├── PlayerUseItemWithItemPlugin.cs
│ ├── Plugin.cs
│ ├── Raid.cs
│ ├── RaidPlugin.cs
│ ├── Rune.cs
│ ├── RunePlugin.cs
│ ├── ServerRecordPlugin.cs
│ ├── ServerSavePlugin.cs
│ ├── ServerShutdownPlugin.cs
│ ├── ServerStartupPlugin.cs
│ ├── Spell.cs
│ ├── SpellPlugin.cs
│ ├── Weapon.cs
│ └── WeaponPlugin.cs
├── Promises
│ ├── AsyncMethodBuilderAttribute.cs
│ ├── Extensions
│ │ ├── PromiseExtensions.cs
│ │ └── TaskExtensions.cs
│ ├── Promise.cs
│ ├── PromiseCanceledException.cs
│ ├── PromiseResult.cs
│ └── PromiseStatus.cs
├── Scripts
│ └── Script.cs
└── mtanksl.OpenTibia.Game.Common.csproj
├── mtanksl.OpenTibia.Game
├── .gitignore
├── CommandHandlers
│ ├── CommandHandlerCommandHandlerCollectionOfT.cs
│ ├── CommandHandlerOfT.cs
│ ├── CommandResultHandlerCommandHandlerCollectionOfT.cs
│ ├── CommandResultHandlerOfT.cs
│ ├── ContainerAddItem
│ │ ├── ContainerAddItemNpcTradingUpdateStatsHandler.cs
│ │ ├── ContainerAddItemTradingRejectHandler.cs
│ │ └── ContainerAddItemUpdatePlayerCapacityHandler.cs
│ ├── ContainerRemoveItem
│ │ ├── ContainerRemoveItemNpcTradingUpdateStatsHandler.cs
│ │ ├── ContainerRemoveItemTradingRejectHandler.cs
│ │ └── ContainerRemoveItemUpdatePlayerCapacityHandler.cs
│ ├── CreatureDestroy
│ │ ├── CleanUpChannelCollectionHandler.cs
│ │ ├── CleanUpCombatCollectionHandler.cs
│ │ ├── CleanUpContainerCollectionHandler.cs
│ │ ├── CleanUpPartyCollectionHandler.cs
│ │ ├── CleanUpRuleViolationCollectionHandler.cs
│ │ ├── CleanUpWindowCollectionHandler.cs
│ │ ├── NpcDestroyNpcTradingRejectHandler.cs
│ │ └── PlayerDestroyTradingRejectHandler.cs
│ ├── CreatureMove
│ │ ├── CreatureMoveContainerCloseHandler.cs
│ │ ├── CreatureMoveTileAddingScriptingHandler.cs
│ │ ├── CreatureMoveTileRemovingScriptingHandler.cs
│ │ ├── CreatureMoveTradingRejectHandler.cs
│ │ ├── HoleHandler.cs
│ │ ├── HouseTileHandler.cs
│ │ ├── MagicForcefieldHandler.cs
│ │ ├── PitfallHandler.cs
│ │ ├── ProtectionZoneBlockHandler.cs
│ │ └── StairsHandler.cs
│ ├── FluidItemUpdateFluidType
│ │ ├── FluidItemUpdateFluidTypeNpcTradingUpdateStatsHandler.cs
│ │ └── FluidItemUpdateFluidTypeTradingRejectHandler.cs
│ ├── InlineCommandHandlerOfT.cs
│ ├── InlineCommandResultHandlerOfT.cs
│ ├── InventoryAddItem
│ │ ├── InventoryAddItemNpcTradingUpdateStatsHandler.cs
│ │ ├── InventoryAddItemUpdatePlayerCapacityHandler.cs
│ │ └── InventoryAddingItemScriptingHandler.cs
│ ├── InventoryRemoveItem
│ │ ├── InventoryRemoveItemNpcTradingUpdateStatsHandler.cs
│ │ ├── InventoryRemoveItemUpdatePlayerCapacityHandler.cs
│ │ └── InventoryRemovingItemScriptingHandler.cs
│ ├── ItemDestroy
│ │ ├── ItemDestroyContainerCloseHandler.cs
│ │ ├── ItemDestroyNpcTradingUpdateStatsHandler.cs
│ │ ├── ItemDestroyTradingRejectHandler.cs
│ │ └── ItemDestroyUpdatePlayerCapacityHandler.cs
│ ├── ItemMove
│ │ ├── ItemMoveContainerCloseHandler.cs
│ │ └── ItemMoveTradingRejectHandler.cs
│ ├── ItemTransform
│ │ ├── ItemTransformContainerCloseHandler.cs
│ │ ├── ItemTransformNpcTradingUpdateStatsHandler.cs
│ │ ├── ItemTransformTradingRejectHandler.cs
│ │ └── ItemTransformUpdatePlayerCapacityHandler.cs
│ ├── PlayerMoveCreature
│ │ └── MoveCreatureScriptingHandler.cs
│ ├── PlayerMoveItem
│ │ ├── CandlestickMoveHandler.cs
│ │ ├── DustbinHandler.cs
│ │ ├── Hole2Handler.cs
│ │ ├── InventoryCapacityHandler.cs
│ │ ├── InventoryDressHandler.cs
│ │ ├── LavaHandler.cs
│ │ ├── LetterHandler.cs
│ │ ├── MagicForcefield2Handler.cs
│ │ ├── MoveItemChestHandler.cs
│ │ ├── MoveItemHouseTileHandler.cs
│ │ ├── MoveItemScriptingHandler.cs
│ │ ├── ParcelHandler.cs
│ │ ├── Pitfall2Handler.cs
│ │ ├── SafeHandler.cs
│ │ ├── ShallowWaterHandler.cs
│ │ ├── SplitStackableItemHandler.cs
│ │ ├── Stairs2Handler.cs
│ │ ├── SwampHandler.cs
│ │ ├── TapestryHandler.cs
│ │ ├── TarHandler.cs
│ │ ├── TrapMoveHandler.cs
│ │ └── WaterBallsHandler.cs
│ ├── PlayerRotateItem
│ │ ├── RotateItemChestHandler.cs
│ │ ├── RotateItemScriptingHandler.cs
│ │ └── RotateItemTransformHandler.cs
│ ├── PlayerSay
│ │ ├── AccountManagerSayHandler.cs
│ │ ├── BanPlayerHandler.cs
│ │ ├── CreateItemHandler.cs
│ │ ├── CreateMonsterHandler.cs
│ │ ├── CreateNpcHandler.cs
│ │ ├── DestroyMonsterNpcItemHandler.cs
│ │ ├── DisplayAnimatedTextHandler.cs
│ │ ├── DisplayMagicEffectHandler.cs
│ │ ├── DisplayProjectileTypeHandler.cs
│ │ ├── EditHouseDoorHandler.cs
│ │ ├── EditHouseGuestHandler.cs
│ │ ├── EditHouseSubOwnerHandler.cs
│ │ ├── GamemasterCommandHandler.cs
│ │ ├── HelpHandler.cs
│ │ ├── HouseKickHandler.cs
│ │ ├── InvisibleHandler.cs
│ │ ├── KickPlayerHandler.cs
│ │ ├── OnlineHandler.cs
│ │ ├── PlayerSayScriptingHandler.cs
│ │ ├── RaidHandler.cs
│ │ ├── RulesHandler.cs
│ │ ├── ServerInfoHandler.cs
│ │ ├── SpellsHandler.cs
│ │ ├── TeleportDownHandler.cs
│ │ ├── TeleportHandler.cs
│ │ ├── TeleportPlayerHandler.cs
│ │ ├── TeleportToHomeTownHandler.cs
│ │ ├── TeleportToPlayerHandler.cs
│ │ ├── TeleportToTownHandler.cs
│ │ ├── TeleportToWaypointHandler.cs
│ │ ├── TeleportUpHandler.cs
│ │ ├── UnBanPlayerHandler.cs
│ │ └── UptimeHandler.cs
│ ├── PlayerTradeWith
│ │ ├── TradeWithChestHandler.cs
│ │ └── TradeWithHouseTileHandler.cs
│ ├── PlayerUseItem
│ │ ├── BabySealDollHandler.cs
│ │ ├── BananaChocolateShakeHandler.cs
│ │ ├── BlueSurpriseBagHandler.cs
│ │ ├── BlueberryBushHandler.cs
│ │ ├── BookHandler.cs
│ │ ├── ClayLumpHandler.cs
│ │ ├── CloseDoorHandler.cs
│ │ ├── ConstructionKitHandler.cs
│ │ ├── ContainerOpenHandler.cs
│ │ ├── CrystalCoinHandler.cs
│ │ ├── DiceHandler.cs
│ │ ├── EpaminondasDollHandler.cs
│ │ ├── ExplosivePresentHandler.cs
│ │ ├── FerumbrasDollHandler.cs
│ │ ├── FireworksRocketHandler.cs
│ │ ├── FlaskOfDemonicBloodHandler.cs
│ │ ├── FoodHandler.cs
│ │ ├── GarlicBreadOrCookieHandler.cs
│ │ ├── GateOfExpertiseDoorHandler.cs
│ │ ├── GoldCoinHandler.cs
│ │ ├── LadderHandler.cs
│ │ ├── LockedDoorHandler.cs
│ │ ├── LockerOpenHandler.cs
│ │ ├── MusicalInstrumentHandler.cs
│ │ ├── NorsemanDollHandler.cs
│ │ ├── OpenDoorHandler.cs
│ │ ├── PandaTeddyHandler.cs
│ │ ├── PartyCakeHandler.cs
│ │ ├── PartyHatHandler.cs
│ │ ├── PartyTrumpetHandler.cs
│ │ ├── PhoenixCharmHandler.cs
│ │ ├── PiggyBankHandler.cs
│ │ ├── PlatinumCoinHandler.cs
│ │ ├── RedSurpriseBagHandler.cs
│ │ ├── SantaDollHandler.cs
│ │ ├── SealedDoorHandler.cs
│ │ ├── SewerHandler.cs
│ │ ├── SnowHeapHandler.cs
│ │ ├── SolitudeCharmHandler.cs
│ │ ├── SpellbookHandler.cs
│ │ ├── SpiritualCharmHandler.cs
│ │ ├── StuffedDragonHandler.cs
│ │ ├── SuspiciousSurpriseBagHandler.cs
│ │ ├── TrapHandler.cs
│ │ ├── TwinSunCharmHandler.cs
│ │ ├── UnityCharmHandler.cs
│ │ ├── UseItemChestHandler.cs
│ │ ├── UseItemScriptingHandler.cs
│ │ ├── UseItemTransformHandler.cs
│ │ ├── WatchHandler.cs
│ │ └── WindowHandler.cs
│ ├── PlayerUseItemWithCreature
│ │ ├── AntidotePotionHandler.cs
│ │ ├── FluidItemHandler.cs
│ │ ├── GreatHealthPotionHandler.cs
│ │ ├── GreatManaPotionHandler.cs
│ │ ├── GreatSpiritPotionHandler.cs
│ │ ├── HealthPotionHandler.cs
│ │ ├── ManaPotionHandler.cs
│ │ ├── RunesHandler.cs
│ │ ├── SmallHealthPotionHandler.cs
│ │ ├── StrongHealthPotionHandler.cs
│ │ ├── StrongManaPotionHandler.cs
│ │ ├── UltimateHealthPotionHandler.cs
│ │ ├── UseItemWithCreatureScriptingHandler.cs
│ │ └── VoodooDollHandler.cs
│ ├── PlayerUseItemWithItem
│ │ ├── BakingTrayWithDoughHandler.cs
│ │ ├── BakingTrayWithGarlicDoughHandler.cs
│ │ ├── BlessedWoodenStakeHandler.cs
│ │ ├── BunchOfSugarCaneHandler.cs
│ │ ├── CrowbarHandler.cs
│ │ ├── FireBugHandler.cs
│ │ ├── FishingRodHandler.cs
│ │ ├── FlourHandler.cs
│ │ ├── FluidItem2Handler.cs
│ │ ├── JuiceSqueezerHandler.cs
│ │ ├── KeyHandler.cs
│ │ ├── KnifeHandler.cs
│ │ ├── LumpOfCakeDoughHandler.cs
│ │ ├── LumpOfChocolateDoughHandler.cs
│ │ ├── LumpOfDoughHandler.cs
│ │ ├── LumpOfGarlicDoughHandler.cs
│ │ ├── LumpOfHolyWaterDoughHandler.cs
│ │ ├── MacheteHandler.cs
│ │ ├── ObsidianKnifeHandler.cs
│ │ ├── PickHandler.cs
│ │ ├── RopeHandler.cs
│ │ ├── Runes2Handler.cs
│ │ ├── SawHandler.cs
│ │ ├── ScytheHandler.cs
│ │ ├── ShovelHandler.cs
│ │ ├── SickleHandler.cs
│ │ ├── UseItemWithItemScriptingHandler.cs
│ │ └── WheatHandler.cs
│ ├── SplashItemUpdateFluidType.cs
│ │ ├── SplashItemUpdateFluidTypeNpcTradingUpdateStatsHandler.cs
│ │ └── SplashItemUpdateFluidTypeTradingRejectHandler.cs.cs
│ ├── StackableItemUpdateCount
│ │ ├── StackableItemUpdateCountNpcTradingUpdateStatsHandler.cs
│ │ ├── StackableItemUpdateCountTradingRejectHandler.cs
│ │ └── StackableItemUpdateCountUpdatePlayerCapacitytHandler.cs
│ ├── TileAddCreature
│ │ └── TileAddingCreatureScriptingHandler.cs
│ └── TileRemoveCreature
│ │ └── TileRemovingCreatureScriptingHandler.cs
├── Common
│ ├── Database.cs
│ ├── Objects
│ │ ├── BattleCollection.cs
│ │ ├── Client.cs
│ │ ├── ContainerCollection.cs
│ │ ├── GameConnection.cs
│ │ ├── InfoConnection.cs
│ │ ├── LoginConnection.cs
│ │ ├── RateLimitingConnection.cs
│ │ ├── RawConnection.cs
│ │ ├── TibiaConnection.cs
│ │ └── WindowCollection.cs
│ ├── Server.cs
│ └── ServerObjects
│ │ ├── ChannelCollection.cs
│ │ ├── ClientFactory.cs
│ │ ├── CombatCollection.cs
│ │ ├── CommandHandlerCollection.cs
│ │ ├── Config.cs
│ │ ├── ConsoleLoggerProvider.cs
│ │ ├── DatabaseFactory.cs
│ │ ├── EventHandlerCollection.cs
│ │ ├── Features.cs
│ │ ├── GameObjectCollection.cs
│ │ ├── GameObjectComponentCollection.cs
│ │ ├── GameObjectEventHandlerCollection.cs
│ │ ├── GameObjectPool.cs
│ │ ├── GameObjectScriptCollection.cs
│ │ ├── GuildCollection.cs
│ │ ├── ItemFactory.cs
│ │ ├── Logger.cs
│ │ ├── LuaScriptCollection.cs
│ │ ├── Map.cs
│ │ ├── MessageCollection.cs
│ │ ├── MessageCollectionFactory.cs
│ │ ├── MonsterFactory.cs
│ │ ├── MountCollection.cs
│ │ ├── NpcFactory.cs
│ │ ├── NpcTradingCollection.cs
│ │ ├── OutfitCollection.cs
│ │ ├── PacketToCommand.cs
│ │ ├── PartyCollection.cs
│ │ ├── PathResolver.cs
│ │ ├── Pathfinding.cs
│ │ ├── PlayerFactory.cs
│ │ ├── PluginCollection.cs
│ │ ├── PluginLoader.cs
│ │ ├── PositionalEventHandlerCollection.cs
│ │ ├── QuestCollection.cs
│ │ ├── RaidCollection.cs
│ │ ├── Randomization.cs
│ │ ├── RateLimiting.cs
│ │ ├── RuleViolationCollection.cs
│ │ ├── ScriptCollection.cs
│ │ ├── ServerStatistics.cs
│ │ ├── SpawnCollection.cs
│ │ ├── TradingCollection.cs
│ │ ├── Values.cs
│ │ ├── VocationCollection.cs
│ │ └── WaitingList.cs
├── EventHandlers
│ ├── CreatureDeath
│ │ └── CreatureDeathScriptingHandler.cs
│ ├── CreatureKill
│ │ └── CreatureKillScriptingHandler.cs
│ ├── EventHandler.cs
│ ├── EventHandlerOfT.cs
│ ├── InlineEventHandler.cs
│ ├── InlineEventHandlerOfT.cs
│ ├── InventoryAddItem
│ │ ├── FeetEquipHandler.cs
│ │ ├── HelmetOfTheDeepEquipHandler.cs
│ │ ├── InventoryAddItemScriptingHandler.cs
│ │ └── RingEquipHandler.cs
│ ├── InventoryRemoveItem
│ │ ├── FeetDeEquipHandler.cs
│ │ ├── HelmetOfTheDeDeepEquipHandler.cs
│ │ ├── InventoryRemoveItemScriptingHandler.cs
│ │ └── RingDeEquipHandler.cs
│ ├── PlayerAdvanceLevel
│ │ └── PlayerAdvanceLevelScriptingHandler.cs
│ ├── PlayerAdvanceSkill
│ │ └── PlayerAdvanceSkillScriptingHandler.cs
│ ├── PlayerEarnAchievement
│ │ └── PlayerEarnAchievementScriptingHandler.cs
│ ├── PlayerLogin
│ │ ├── AccountManagerLoginHandler.cs
│ │ ├── PlayerLoginScriptingHandler.cs
│ │ ├── PlayerLoginVipHandler.cs
│ │ ├── RecordHandler.cs
│ │ └── WelcomeHandler.cs
│ ├── PlayerLogout
│ │ ├── PlayerLogoutScriptingHandler.cs
│ │ └── PlayerLogoutVipHandler.cs
│ ├── TileAddCreature
│ │ ├── BladesHandler.cs
│ │ ├── CampfireHandler.cs
│ │ ├── EnergyFieldHandler.cs
│ │ ├── FireFieldHandler.cs
│ │ ├── JungleMawHandler.cs
│ │ ├── NoLogoutZoneHandler.cs
│ │ ├── OceanFloorHandler.cs
│ │ ├── OpenTrapHandler.cs
│ │ ├── PoisonFieldHandler.cs
│ │ ├── ProtectionZoneHandler.cs
│ │ ├── SearingFireHandler.cs
│ │ ├── SnowPressHandler.cs
│ │ ├── SpikesHandler.cs
│ │ ├── SwimEnterHandler.cs
│ │ ├── TileAddCreatureScriptingHandler.cs
│ │ └── TilePressHandler.cs
│ └── TileRemoveCreature
│ │ ├── CloseDoorAutomaticallyHandler.cs
│ │ ├── SwimLeaveHandler.cs
│ │ ├── TileDepressHandler.cs
│ │ └── TileRemoveCreatureScriptingHandler.cs
├── GameObjectScripts
│ ├── Items
│ │ ├── ItemScript.cs
│ │ ├── StreetLampSwitchOffItemScript.cs
│ │ └── StreetLampSwitchOnItemScript.cs
│ ├── Monsters
│ │ └── MonsterScript.cs
│ ├── Npcs
│ │ └── NpcScript.cs
│ └── Players
│ │ └── PlayerScript.cs
├── Plugins
│ ├── LuaScriptingAmmunitionPlugin.cs
│ ├── LuaScriptingCreatureDeathPlugin.cs
│ ├── LuaScriptingCreatureKillPlugin.cs
│ ├── LuaScriptingCreatureStepInPlugin.cs
│ ├── LuaScriptingCreatureStepOutPlugin.cs
│ ├── LuaScriptingDialoguePlugin.cs
│ ├── LuaScriptingInventoryDeEquipPlugin.cs
│ ├── LuaScriptingInventoryEquipPlugin.cs
│ ├── LuaScriptingItemCreationPlugin.cs
│ ├── LuaScriptingMonsterAttackPlugin.cs
│ ├── LuaScriptingMonsterCreationPlugin.cs
│ ├── LuaScriptingNpcCreationPlugin.cs
│ ├── LuaScriptingPlayerAdvanceLevelPlugin.cs
│ ├── LuaScriptingPlayerAdvanceSkillPlugin.cs
│ ├── LuaScriptingPlayerCreationPlugin.cs
│ ├── LuaScriptingPlayerEarnAchievementPlugin.cs
│ ├── LuaScriptingPlayerLoginPlugin.cs
│ ├── LuaScriptingPlayerLogoutPlugin.cs
│ ├── LuaScriptingPlayerMoveCreaturePlugin.cs
│ ├── LuaScriptingPlayerMoveItemPlugin.cs
│ ├── LuaScriptingPlayerRotateItemPlugin.cs
│ ├── LuaScriptingPlayerSayPlugin.cs
│ ├── LuaScriptingPlayerUseItemPlugin.cs
│ ├── LuaScriptingPlayerUseItemWithCreaturePlugin.cs
│ ├── LuaScriptingPlayerUseItemWithItemPlugin.cs
│ ├── LuaScriptingRaidPlugin.cs
│ ├── LuaScriptingRunePlugin.cs
│ ├── LuaScriptingServerRecordPlugin.cs
│ ├── LuaScriptingServerSavePlugin.cs
│ ├── LuaScriptingServerShutdownPlugin.cs
│ ├── LuaScriptingServerStartupPlugin.cs
│ ├── LuaScriptingSpellPlugin.cs
│ └── LuaScriptingWeaponPlugin.cs
├── Scripts
│ ├── ContainerAddItemScripts.cs
│ ├── ContainerRemoveItemScripts.cs
│ ├── CreatureDeathScripts.cs
│ ├── CreatureDestroyScripts.cs
│ ├── CreatureKillScripts.cs
│ ├── CreatureMoveScripts.cs
│ ├── FluidItemUpdateFluidTypeScripts.cs
│ ├── GlobalScripts.cs
│ ├── InventoryAddItemScripts.cs
│ ├── InventoryRemoveItemScripts.cs
│ ├── ItemDestroyScripts.cs
│ ├── ItemMoveScripts.cs
│ ├── ItemTransformScripts.cs
│ ├── PlayerAdvanceLevelScripts.cs
│ ├── PlayerAdvanceSkillScripts.cs
│ ├── PlayerEarnAchievementScripts.cs
│ ├── PlayerLoginScripts.cs
│ ├── PlayerLogoutScripts.cs
│ ├── PlayerMoveCreatureScripts.cs
│ ├── PlayerMoveItemScripts.cs
│ ├── PlayerRotateItemScripts.cs
│ ├── PlayerSayScripts.cs
│ ├── PlayerTradeWithScripts.cs
│ ├── PlayerUseItemScripts.cs
│ ├── PlayerUseItemWithCreatureScripts.cs
│ ├── PlayerUseItemWithItemScripts.cs
│ ├── SplashItemUpdateFluidTypeScripts.cs
│ ├── StackableItemUpdateCountScripts.cs
│ ├── TileAddCreatureScripts.cs
│ └── TileRemoveCreatureScripts.cs
└── mtanksl.OpenTibia.Game.csproj
├── mtanksl.OpenTibia.GameData
├── data
│ ├── clibs
│ │ ├── mime
│ │ │ └── core.dll
│ │ └── socket
│ │ │ └── core.dll
│ ├── database.db
│ ├── dlls
│ │ └── mtanksl.OpenTibia.Plugins
│ │ │ └── mtanksl.OpenTibia.Plugins.dll
│ ├── gameobjectscripts
│ │ ├── config.lua
│ │ └── lib.lua
│ ├── items
│ │ ├── 772
│ │ │ ├── items.otb
│ │ │ └── tibia.dat
│ │ ├── 860
│ │ │ ├── items.otb
│ │ │ └── tibia.dat
│ │ ├── 870
│ │ │ ├── items.otb
│ │ │ └── tibia.dat
│ │ ├── Definition
│ │ │ └── items.xsd
│ │ └── items.xml
│ ├── lib.lua
│ ├── lualibs
│ │ ├── _mobdebug.lua
│ │ ├── ltn12.lua
│ │ ├── mime.lua
│ │ ├── socket.lua
│ │ └── socket
│ │ │ ├── ftp.lua
│ │ │ ├── headers.lua
│ │ │ ├── http.lua
│ │ │ ├── smtp.lua
│ │ │ ├── tp.lua
│ │ │ └── url.lua
│ ├── monsters
│ │ ├── Achad.xml
│ │ ├── Acid Blob.xml
│ │ ├── Acolyte of the Cult.xml
│ │ ├── Adept of the Cult.xml
│ │ ├── Amazon.xml
│ │ ├── Ancient Scarab.xml
│ │ ├── Annihilon.xml
│ │ ├── Apprentice Sheng.xml
│ │ ├── Arachir the Ancient One.xml
│ │ ├── Ashmunrah.xml
│ │ ├── Assassin.xml
│ │ ├── Avalanche.xml
│ │ ├── Axeitus Headbanger.xml
│ │ ├── Azure Frog.xml
│ │ ├── Badger.xml
│ │ ├── Bandit.xml
│ │ ├── Banshee.xml
│ │ ├── Barbaria.xml
│ │ ├── Barbarian Bloodwalker.xml
│ │ ├── Barbarian Brutetamer.xml
│ │ ├── Barbarian Headsplitter.xml
│ │ ├── Barbarian Skullhunter.xml
│ │ ├── Baron Brute.xml
│ │ ├── Bat.xml
│ │ ├── Battlemaster Zunzu.xml
│ │ ├── Bear.xml
│ │ ├── Behemoth.xml
│ │ ├── Berserker Chicken.xml
│ │ ├── Betrayed Wraith.xml
│ │ ├── Big Boss Trolliver.xml
│ │ ├── Black Knight.xml
│ │ ├── Black Sheep.xml
│ │ ├── Blazing Fire Elemental.xml
│ │ ├── Blightwalker.xml
│ │ ├── Blistering Fire Elemental.xml
│ │ ├── Blood Crab.xml
│ │ ├── Bloodpaw.xml
│ │ ├── Blue Djinn.xml
│ │ ├── Bog Raider.xml
│ │ ├── Bonebeast.xml
│ │ ├── Bonelord.xml
│ │ ├── Bones.xml
│ │ ├── Boogey.xml
│ │ ├── Bovinus.xml
│ │ ├── Braindeath.xml
│ │ ├── Brimstone Bug.xml
│ │ ├── Brutus Bloodbeard.xml
│ │ ├── Bug.xml
│ │ ├── Butterfly (Blue).xml
│ │ ├── Butterfly (Purple).xml
│ │ ├── Butterfly (Red).xml
│ │ ├── Butterfly (Yellow).xml
│ │ ├── Captain Jones.xml
│ │ ├── Carniphila.xml
│ │ ├── Carrion Worm.xml
│ │ ├── Cat.xml
│ │ ├── Cave Rat.xml
│ │ ├── Centipede.xml
│ │ ├── Chakoya Toolshaper.xml
│ │ ├── Chakoya Tribewarden.xml
│ │ ├── Chakoya Windcaller.xml
│ │ ├── Charged Energy Elemental.xml
│ │ ├── Chicken.xml
│ │ ├── Chizzoron the Distorter.xml
│ │ ├── Cobra.xml
│ │ ├── Cockroach.xml
│ │ ├── Coldheart.xml
│ │ ├── Colerian the Barbarian.xml
│ │ ├── Coral Frog.xml
│ │ ├── Countess Sorrow.xml
│ │ ├── Crab.xml
│ │ ├── Crazed Beggar.xml
│ │ ├── Crimson Frog.xml
│ │ ├── Crocodile.xml
│ │ ├── Crypt Shambler.xml
│ │ ├── Crystal Spider.xml
│ │ ├── Cursed Gladiator.xml
│ │ ├── Cyclops Drone.xml
│ │ ├── Cyclops Smith.xml
│ │ ├── Cyclops.xml
│ │ ├── Damaged Worker Golem.xml
│ │ ├── Darakan the Executioner.xml
│ │ ├── Dark Apprentice.xml
│ │ ├── Dark Magician.xml
│ │ ├── Dark Monk.xml
│ │ ├── Dark Torturer.xml
│ │ ├── Deadeye Devious.xml
│ │ ├── Death Blob.xml
│ │ ├── Deathbringer.xml
│ │ ├── Deathslicer.xml
│ │ ├── Deathspawn.xml
│ │ ├── Deepsea Blood Crab.xml
│ │ ├── Deer.xml
│ │ ├── Defiler.xml
│ │ ├── Definition
│ │ │ └── monsters.xsd
│ │ ├── Demodras.xml
│ │ ├── Demon (Goblin).xml
│ │ ├── Demon Parrot.xml
│ │ ├── Demon Skeleton.xml
│ │ ├── Demon.xml
│ │ ├── Destroyer.xml
│ │ ├── Dharalion.xml
│ │ ├── Diabolic Imp.xml
│ │ ├── Diblis the Fair.xml
│ │ ├── Dipthrah.xml
│ │ ├── Dire Penguin.xml
│ │ ├── Dirtbeard.xml
│ │ ├── Diseased Bill.xml
│ │ ├── Diseased Dan.xml
│ │ ├── Diseased Fred.xml
│ │ ├── Doctor Perhaps.xml
│ │ ├── Dog.xml
│ │ ├── Doom Deer.xml
│ │ ├── Doomhowl.xml
│ │ ├── Dracola.xml
│ │ ├── Dragon Hatchling.xml
│ │ ├── Dragon Lord Hatchling.xml
│ │ ├── Dragon Lord.xml
│ │ ├── Dragon.xml
│ │ ├── Draken Abomination.xml
│ │ ├── Draken Elite.xml
│ │ ├── Draken Spellweaver.xml
│ │ ├── Draken Warmaster.xml
│ │ ├── Drasilla.xml
│ │ ├── Dreadbeast.xml
│ │ ├── Dreadwing.xml
│ │ ├── Dryad.xml
│ │ ├── Dwarf Dispenser.xml
│ │ ├── Dwarf Geomancer.xml
│ │ ├── Dwarf Guard.xml
│ │ ├── Dwarf Henchman.xml
│ │ ├── Dwarf Miner.xml
│ │ ├── Dwarf Soldier.xml
│ │ ├── Dwarf.xml
│ │ ├── Dworc Fleshhunter.xml
│ │ ├── Dworc Venomsniper.xml
│ │ ├── Dworc Voodoomaster.xml
│ │ ├── Earth Elemental.xml
│ │ ├── Earth Overlord.xml
│ │ ├── Efreet.xml
│ │ ├── Elder Bonelord.xml
│ │ ├── Elephant.xml
│ │ ├── Elf Arcanist.xml
│ │ ├── Elf Scout.xml
│ │ ├── Elf.xml
│ │ ├── Energy Elemental.xml
│ │ ├── Energy Overlord.xml
│ │ ├── Enlightened of the Cult.xml
│ │ ├── Enraged Squirrel.xml
│ │ ├── Esmeralda.xml
│ │ ├── Essence of Darkness.xml
│ │ ├── Eternal Guardian.xml
│ │ ├── Evil Mastermind.xml
│ │ ├── Evil Sheep Lord.xml
│ │ ├── Evil Sheep.xml
│ │ ├── Eye of the Seven.xml
│ │ ├── Fahim the Wise.xml
│ │ ├── Fallen Mooh'Tah Master Ghar.xml
│ │ ├── Fatality.xml
│ │ ├── Fernfang.xml
│ │ ├── Ferumbras.xml
│ │ ├── Fire Devil.xml
│ │ ├── Fire Elemental.xml
│ │ ├── Fire Overlord.xml
│ │ ├── Flamethrower.xml
│ │ ├── Flamingo.xml
│ │ ├── Fluffy.xml
│ │ ├── Foreman Kneebiter.xml
│ │ ├── Frost Dragon Hatchling.xml
│ │ ├── Frost Dragon.xml
│ │ ├── Frost Giant.xml
│ │ ├── Frost Giantess.xml
│ │ ├── Frost Troll.xml
│ │ ├── Frostfur.xml
│ │ ├── Furious Troll.xml
│ │ ├── Fury of the Emperor.xml
│ │ ├── Fury.xml
│ │ ├── Gang Member.xml
│ │ ├── Gargoyle.xml
│ │ ├── Gazer.xml
│ │ ├── General Murius.xml
│ │ ├── Ghastly Dragon.xml
│ │ ├── Ghazbaran.xml
│ │ ├── Ghost.xml
│ │ ├── Ghoul.xml
│ │ ├── Giant Spider.xml
│ │ ├── Gladiator.xml
│ │ ├── Glitterscale.xml
│ │ ├── Gnarlhound.xml
│ │ ├── Gnorre Chyllson.xml
│ │ ├── Goblin Assassin.xml
│ │ ├── Goblin Leader.xml
│ │ ├── Goblin Scavenger.xml
│ │ ├── Goblin.xml
│ │ ├── Golgordan.xml
│ │ ├── Gozzler.xml
│ │ ├── Grand Mother Foulscale.xml
│ │ ├── Grandfather Tridian.xml
│ │ ├── Gravelord Oshuran.xml
│ │ ├── Green Djinn.xml
│ │ ├── Green Frog.xml
│ │ ├── Grim Reaper.xml
│ │ ├── Grimgor Guteater.xml
│ │ ├── Grorlam.xml
│ │ ├── Grynch Clan Goblin.xml
│ │ ├── Hacker.xml
│ │ ├── Hairman the Huge.xml
│ │ ├── Hand of Cursed Fate.xml
│ │ ├── Haunted Treeling.xml
│ │ ├── Haunter.xml
│ │ ├── Hell Hole.xml
│ │ ├── Hellfire Fighter.xml
│ │ ├── Hellgorak.xml
│ │ ├── Hellhound.xml
│ │ ├── Hellspawn.xml
│ │ ├── Heoni.xml
│ │ ├── Herald of Gloom.xml
│ │ ├── Hero.xml
│ │ ├── Hide.xml
│ │ ├── High Templar Cobrass.xml
│ │ ├── Hot Dog.xml
│ │ ├── Hunter.xml
│ │ ├── Husky.xml
│ │ ├── Hyaena.xml
│ │ ├── Hydra.xml
│ │ ├── Ice Golem.xml
│ │ ├── Ice Overlord.xml
│ │ ├── Ice Witch.xml
│ │ ├── Incineron.xml
│ │ ├── Infernal Frog.xml
│ │ ├── Infernalist.xml
│ │ ├── Inky.xml
│ │ ├── Insect Swarm.xml
│ │ ├── Island Troll.xml
│ │ ├── Jagged Earth Elemental.xml
│ │ ├── Juggernaut.xml
│ │ ├── Killer Caiman.xml
│ │ ├── Killer Rabbit.xml
│ │ ├── Kitty.xml
│ │ ├── Kongra.xml
│ │ ├── Koshei The Deathless.xml
│ │ ├── Kreebosh the Exile.xml
│ │ ├── Lancer Beetle.xml
│ │ ├── Larva.xml
│ │ ├── Latrivan.xml
│ │ ├── Lavahole.xml
│ │ ├── Lethal Lissy.xml
│ │ ├── Leviathan.xml
│ │ ├── Lich.xml
│ │ ├── Lion.xml
│ │ ├── Lizard Abomination.xml
│ │ ├── Lizard Chosen.xml
│ │ ├── Lizard Dragon Priest.xml
│ │ ├── Lizard Gate Guardian.xml
│ │ ├── Lizard High Guard.xml
│ │ ├── Lizard Legionnaire.xml
│ │ ├── Lizard Magistratus.xml
│ │ ├── Lizard Noble.xml
│ │ ├── Lizard Sentinel.xml
│ │ ├── Lizard Snakecharmer.xml
│ │ ├── Lizard Templar.xml
│ │ ├── Lizard Zaogun.xml
│ │ ├── Lord of the Elements.xml
│ │ ├── Lost Soul.xml
│ │ ├── Mad Scientist.xml
│ │ ├── Mad Sheep.xml
│ │ ├── Mad Technomancer.xml
│ │ ├── Madareth.xml
│ │ ├── Magic Pillar.xml
│ │ ├── Magicthrower.xml
│ │ ├── Mahrdis.xml
│ │ ├── Mammoth.xml
│ │ ├── Man in the Cave.xml
│ │ ├── Marid.xml
│ │ ├── Massacre.xml
│ │ ├── Massive Earth Elemental.xml
│ │ ├── Massive Energy Elemental.xml
│ │ ├── Massive Fire Elemental.xml
│ │ ├── Massive Water Elemental.xml
│ │ ├── Mechanical Fighter.xml
│ │ ├── Medusa.xml
│ │ ├── Menace.xml
│ │ ├── Mephiles.xml
│ │ ├── Mercury Blob.xml
│ │ ├── Merikh the Slaughterer.xml
│ │ ├── Merlkin.xml
│ │ ├── Midnight Spawn.xml
│ │ ├── Mimic.xml
│ │ ├── Minishabaal.xml
│ │ ├── Minotaur Archer.xml
│ │ ├── Minotaur Guard.xml
│ │ ├── Minotaur Mage.xml
│ │ ├── Minotaur.xml
│ │ ├── Monk.xml
│ │ ├── Monstor.xml
│ │ ├── Mooh'Tah Master.xml
│ │ ├── Morgaroth.xml
│ │ ├── Morguthis.xml
│ │ ├── Morik the Gladiator.xml
│ │ ├── Mr. Punish.xml
│ │ ├── Muddy Earth Elemental.xml
│ │ ├── Mummy.xml
│ │ ├── Munster.xml
│ │ ├── Mutated Bat.xml
│ │ ├── Mutated Human.xml
│ │ ├── Mutated Rat.xml
│ │ ├── Mutated Tiger.xml
│ │ ├── Necromancer.xml
│ │ ├── Necropharus.xml
│ │ ├── Nightmare Scion.xml
│ │ ├── Nightmare.xml
│ │ ├── Nightstalker.xml
│ │ ├── Nomad.xml
│ │ ├── Norgle Glacierbeard.xml
│ │ ├── Novice of the Cult.xml
│ │ ├── Omruc.xml
│ │ ├── Orc Berserker.xml
│ │ ├── Orc Leader.xml
│ │ ├── Orc Marauder.xml
│ │ ├── Orc Rider.xml
│ │ ├── Orc Shaman.xml
│ │ ├── Orc Spearman.xml
│ │ ├── Orc Warlord.xml
│ │ ├── Orc Warrior.xml
│ │ ├── Orc.xml
│ │ ├── Orchid Frog.xml
│ │ ├── Orcus the Cruel.xml
│ │ ├── Orshabaal.xml
│ │ ├── Overcharged Energy Element.xml
│ │ ├── Panda.xml
│ │ ├── Parrot.xml
│ │ ├── Penguin.xml
│ │ ├── Phantasm (Weak).xml
│ │ ├── Phantasm.xml
│ │ ├── Pig.xml
│ │ ├── Pillar.xml
│ │ ├── Pirate Buccaneer.xml
│ │ ├── Pirate Corsair.xml
│ │ ├── Pirate Cutthroat.xml
│ │ ├── Pirate Ghost.xml
│ │ ├── Pirate Marauder.xml
│ │ ├── Pirate Skeleton.xml
│ │ ├── Plaguesmith.xml
│ │ ├── Plaguethrower.xml
│ │ ├── Poacher.xml
│ │ ├── Poison Spider.xml
│ │ ├── Polar Bear.xml
│ │ ├── Priestess.xml
│ │ ├── Primitive.xml
│ │ ├── Quara Constrictor Scout.xml
│ │ ├── Quara Constrictor.xml
│ │ ├── Quara Hydromancer Scout.xml
│ │ ├── Quara Hydromancer.xml
│ │ ├── Quara Mantassin Scout.xml
│ │ ├── Quara Mantassin.xml
│ │ ├── Quara Pincher Scout.xml
│ │ ├── Quara Pincher.xml
│ │ ├── Quara Predator Scout.xml
│ │ ├── Quara Predator.xml
│ │ ├── Rabbit.xml
│ │ ├── Rahemos.xml
│ │ ├── Rat.xml
│ │ ├── Renegade Orc.xml
│ │ ├── Rift Brood.xml
│ │ ├── Rift Lord.xml
│ │ ├── Rift Phantom.xml
│ │ ├── Rift Scythe.xml
│ │ ├── Rift Worm.xml
│ │ ├── Roaring Water Elemental.xml
│ │ ├── Rocko.xml
│ │ ├── Rocky.xml
│ │ ├── Ron the Ripper.xml
│ │ ├── Rottie the Rotworm.xml
│ │ ├── Rotworm Queen.xml
│ │ ├── Rotworm.xml
│ │ ├── Rukor Zad.xml
│ │ ├── Sandcrawler.xml
│ │ ├── Scarab.xml
│ │ ├── Scorn of the Emperor.xml
│ │ ├── Scorpion.xml
│ │ ├── Sea Serpent.xml
│ │ ├── Seagull.xml
│ │ ├── Serpent Spawn.xml
│ │ ├── Shadow Hound.xml
│ │ ├── Shard of Corruption.xml
│ │ ├── Shardhead.xml
│ │ ├── Sharptooth.xml
│ │ ├── Sheep.xml
│ │ ├── Shredderthrower.xml
│ │ ├── Sibang.xml
│ │ ├── Silver Rabbit.xml
│ │ ├── Sir Valorcrest.xml
│ │ ├── Skeleton Warrior.xml
│ │ ├── Skeleton.xml
│ │ ├── Skunk.xml
│ │ ├── Slick Water Elemental.xml
│ │ ├── Slim.xml
│ │ ├── Slime.xml
│ │ ├── Smuggler Baron Silvertoe.xml
│ │ ├── Smuggler.xml
│ │ ├── Snake God Essence.xml
│ │ ├── Snake Thing.xml
│ │ ├── Snake.xml
│ │ ├── Son of Verminor.xml
│ │ ├── Souleater.xml
│ │ ├── Spectre.xml
│ │ ├── Spider.xml
│ │ ├── Spirit of Earth.xml
│ │ ├── Spirit of Fire.xml
│ │ ├── Spirit of Water.xml
│ │ ├── Spit Nettle.xml
│ │ ├── Spite of the Emperor.xml
│ │ ├── Splasher.xml
│ │ ├── Squidgy Slime.xml
│ │ ├── Squirrel.xml
│ │ ├── Stalker.xml
│ │ ├── Stone Golem.xml
│ │ ├── Stonecracker.xml
│ │ ├── Svoren the Mad.xml
│ │ ├── Swamp Troll.xml
│ │ ├── Tarantula.xml
│ │ ├── Teleskor.xml
│ │ ├── Terramite.xml
│ │ ├── Terror Bird.xml
│ │ ├── Thalas.xml
│ │ ├── The Abomination.xml
│ │ ├── The Axeorcist.xml
│ │ ├── The Big Bad One.xml
│ │ ├── The Blightfather.xml
│ │ ├── The Bloodtusk.xml
│ │ ├── The Collector.xml
│ │ ├── The Count.xml
│ │ ├── The Dark Dancer.xml
│ │ ├── The Dreadorian.xml
│ │ ├── The Evil Eye.xml
│ │ ├── The Frog Prince.xml
│ │ ├── The Hag.xml
│ │ ├── The Hairy One.xml
│ │ ├── The Halloween Hare.xml
│ │ ├── The Handmaiden.xml
│ │ ├── The Horned Fox.xml
│ │ ├── The Imperor.xml
│ │ ├── The Many.xml
│ │ ├── The Masked Marauder.xml
│ │ ├── The Mutated Pumpkin.xml
│ │ ├── The Noxious Spawn.xml
│ │ ├── The Obliverator.xml
│ │ ├── The Old Whopper.xml
│ │ ├── The Old Widow.xml
│ │ ├── The Pit Lord.xml
│ │ ├── The Plasmother.xml
│ │ ├── The Ruthless Herald.xml
│ │ ├── The Snapper.xml
│ │ ├── The Voice of Ruin.xml
│ │ ├── The Weakened Count.xml
│ │ ├── Thief.xml
│ │ ├── Thieving Squirrel.xml
│ │ ├── Thornback Tortoise.xml
│ │ ├── Thul.xml
│ │ ├── Tibia Bug.xml
│ │ ├── Tiger.xml
│ │ ├── Tiquandas Revenge.xml
│ │ ├── Tirecz.xml
│ │ ├── Toad.xml
│ │ ├── Tormented Ghost.xml
│ │ ├── Tortoise.xml
│ │ ├── Tremorak.xml
│ │ ├── Troll Champion.xml
│ │ ├── Troll Legionnaire.xml
│ │ ├── Troll.xml
│ │ ├── Undead Dragon.xml
│ │ ├── Undead Gladiator.xml
│ │ ├── Undead Jester.xml
│ │ ├── Undead Mine Worker.xml
│ │ ├── Undead Minion.xml
│ │ ├── Undead Prospector.xml
│ │ ├── Ungreez.xml
│ │ ├── Ushuriel.xml
│ │ ├── Valkyrie.xml
│ │ ├── Vampire Bride.xml
│ │ ├── Vampire Pig.xml
│ │ ├── Vampire.xml
│ │ ├── Vashresamun.xml
│ │ ├── Wailing Widow.xml
│ │ ├── War Golem.xml
│ │ ├── War Wolf.xml
│ │ ├── Warlock.xml
│ │ ├── Warlord Ruzad.xml
│ │ ├── Wasp.xml
│ │ ├── Water Elemental.xml
│ │ ├── Webster.xml
│ │ ├── Werewolf.xml
│ │ ├── Wild Warrior.xml
│ │ ├── Winter Wolf.xml
│ │ ├── Wisp.xml
│ │ ├── Witch.xml
│ │ ├── Wolf.xml
│ │ ├── Worker Golem.xml
│ │ ├── Wyrm.xml
│ │ ├── Wyvern.xml
│ │ ├── Xenia.xml
│ │ ├── Yaga the Crone.xml
│ │ ├── Yakchal.xml
│ │ ├── Yeti.xml
│ │ ├── Young Sea Serpent.xml
│ │ ├── Zarabustor.xml
│ │ ├── Zevelon Duskbringer.xml
│ │ ├── Zombie.xml
│ │ ├── Zugurosh.xml
│ │ └── Zulazza the Corruptor.xml
│ ├── mounts
│ │ ├── config.lua
│ │ └── lib.lua
│ ├── npcs
│ │ ├── Al Dee.xml
│ │ ├── Captain Bluebear.xml
│ │ ├── Cipfried.xml
│ │ ├── Definition
│ │ │ └── npcs.xsd
│ │ ├── Rachel.xml
│ │ ├── Suzy.xml
│ │ └── The Oracle.xml
│ ├── openTibiaFunctionsReference.lua
│ ├── outfits
│ │ ├── config.lua
│ │ └── lib.lua
│ ├── plugins
│ │ ├── actions
│ │ │ ├── lib.lua
│ │ │ ├── move creature.lua
│ │ │ ├── move item.lua
│ │ │ ├── rotate item.lua
│ │ │ ├── use item with creature.lua
│ │ │ ├── use item with item.lua
│ │ │ └── use item.lua
│ │ ├── ammunitions
│ │ │ ├── burst arrow example.lua
│ │ │ └── lib.lua
│ │ ├── config.lua
│ │ ├── creaturescripts
│ │ │ ├── advancelevel.lua
│ │ │ ├── advanceskill.lua
│ │ │ ├── death.lua
│ │ │ ├── earnachievement.lua
│ │ │ ├── kill.lua
│ │ │ ├── lib.lua
│ │ │ ├── login.lua
│ │ │ └── logout.lua
│ │ ├── globalevents
│ │ │ ├── lib.lua
│ │ │ ├── record.lua
│ │ │ ├── save.lua
│ │ │ ├── shutdown.lua
│ │ │ └── startup.lua
│ │ ├── items
│ │ │ ├── creation.lua
│ │ │ └── lib.lua
│ │ ├── lib.lua
│ │ ├── monsterattacks
│ │ │ ├── fire wave example.lua
│ │ │ └── lib.lua
│ │ ├── monsters
│ │ │ ├── creation.lua
│ │ │ └── lib.lua
│ │ ├── movements
│ │ │ ├── de equip.lua
│ │ │ ├── equip.lua
│ │ │ ├── lib.lua
│ │ │ ├── step in.lua
│ │ │ └── step out.lua
│ │ ├── npcs
│ │ │ ├── creation.lua
│ │ │ ├── default.lua
│ │ │ └── lib.lua
│ │ ├── players
│ │ │ ├── creation.lua
│ │ │ └── lib.lua
│ │ ├── raids
│ │ │ ├── lib.lua
│ │ │ └── rats.lua
│ │ ├── runes
│ │ │ ├── great fireball rune example.lua
│ │ │ └── lib.lua
│ │ ├── scripts
│ │ │ ├── lib.lua
│ │ │ └── npcs
│ │ │ │ ├── al dee.lua
│ │ │ │ ├── captain bluebear.lua
│ │ │ │ ├── cipfried.lua
│ │ │ │ ├── rachel.lua
│ │ │ │ ├── suzy.lua
│ │ │ │ └── the oracle.lua
│ │ ├── spells
│ │ │ ├── fire wave example.lua
│ │ │ └── lib.lua
│ │ ├── talkactions
│ │ │ ├── lib.lua
│ │ │ └── say.lua
│ │ └── weapons
│ │ │ ├── lib.lua
│ │ │ └── wand of inferno example.lua
│ ├── quests
│ │ ├── config.lua
│ │ └── lib.lua
│ ├── scripts
│ │ ├── config.lua
│ │ └── lib.lua
│ ├── server
│ │ ├── config.lua
│ │ └── lib.lua
│ ├── values
│ │ ├── config.lua
│ │ └── lib.lua
│ ├── vocations
│ │ ├── config.lua
│ │ └── lib.lua
│ └── world
│ │ ├── 772
│ │ ├── map-house.xml
│ │ ├── map-spawn.xml
│ │ └── map.otbm
│ │ ├── 860
│ │ ├── map-house.xml
│ │ ├── map-spawn.xml
│ │ └── map.otbm
│ │ └── 870
│ │ ├── map-house.xml
│ │ ├── map-spawn.xml
│ │ └── map.otbm
├── mtanksl.OpenTibia.GameData.projitems
└── mtanksl.OpenTibia.GameData.shproj
├── mtanksl.OpenTibia.Host.GUI
├── .gitignore
├── MainForm.Designer.cs
├── MainForm.cs
├── MainForm.resx
├── OnlinePlayersForm.Designer.cs
├── OnlinePlayersForm.cs
├── OnlinePlayersForm.resx
├── Program.cs
├── PromptForm.Designer.cs
├── PromptForm.cs
├── PromptForm.resx
├── RichTextboxLoggerProvider.cs
├── StatisticsForm.Designer.cs
├── StatisticsForm.cs
├── StatisticsForm.resx
├── mtanksl.OpenTibia.Host.GUI.csproj
└── tibia772.ico
├── mtanksl.OpenTibia.Host
├── .gitignore
├── Program.cs
├── mtanksl.OpenTibia.Host.csproj
└── tibia772.ico
├── mtanksl.OpenTibia.IO
├── .gitignore
├── ArrayExtensions.cs
├── ByteArrayArrayStream.cs
├── ByteArrayBufferedStream.cs
├── ByteArrayFileStream.cs
├── ByteArrayFileTreeStream.cs
├── ByteArrayMemoryFileTreeStream.cs
├── ByteArrayMemoryStream.cs
├── ByteArrayStream.cs
├── ByteArrayStreamReader.cs
├── ByteArrayStreamReaderExtensions.cs
├── ByteArrayStreamWriter.cs
├── ByteArrayStreamWriterExtensions.cs
└── mtanksl.OpenTibia.IO.csproj
├── mtanksl.OpenTibia.Network
├── .gitignore
├── Packets
│ ├── ChannelDto.cs
│ ├── CharacterDto.cs
│ ├── CounterOfferDto.cs
│ ├── ExtPlayersInfoDto.cs
│ ├── Incoming
│ │ ├── Battle
│ │ │ ├── AttackIncomingPacket.cs
│ │ │ └── FollowIncomingPacket.cs
│ │ ├── Button
│ │ │ ├── LogoutIncomingPacket.cs
│ │ │ ├── QuestsIncomingPacket.cs
│ │ │ └── StopIncomingPacket.cs
│ │ ├── Client
│ │ │ ├── EnterGameIncomingPacket.cs
│ │ │ ├── PongIncomingPacket.cs
│ │ │ ├── UpdateContainerIncomingPacket.cs
│ │ │ └── UpdateTileIncomingPacket.cs
│ │ ├── CombatControl
│ │ │ └── CombatControlsIncomingPacket.cs
│ │ ├── Console
│ │ │ ├── CloseChannelIncomingPacket.cs
│ │ │ ├── CloseNpcsChannelIncomingPacket.cs
│ │ │ ├── CloseReportRuleViolationChannelAnswerIncomingPacket.cs
│ │ │ ├── CloseReportRuleViolationChannelQuestionIncomingPacket.cs
│ │ │ ├── ExcludePlayerIncomingPacket.cs
│ │ │ ├── InvitePlayerIncomingPacket.cs
│ │ │ ├── OpenNewChannelIncomingPacket.cs
│ │ │ ├── ProcessReportRuleViolationIncomingPacket.cs
│ │ │ └── TalkIncomingPacket.cs
│ │ ├── Container
│ │ │ ├── CloseContainerIncomingPacket.cs
│ │ │ └── OpenParentContainerIncomingPacket.cs
│ │ ├── Control
│ │ │ ├── StopWalkIncomingPacket.cs
│ │ │ ├── TurnEastIncomingPacket.cs
│ │ │ ├── TurnNorthIncomingPacket.cs
│ │ │ ├── TurnSouthIncomingPacket.cs
│ │ │ ├── TurnWestIncomingPacket.cs
│ │ │ ├── WalkEastIncomingPacket.cs
│ │ │ ├── WalkNorthEastIncomingPacket.cs
│ │ │ ├── WalkNorthIncomingPacket.cs
│ │ │ ├── WalkNorthWestIncomingPacket.cs
│ │ │ ├── WalkSouthEastIncomingPacket.cs
│ │ │ ├── WalkSouthIncomingPacket.cs
│ │ │ ├── WalkSouthWestIncomingPacket.cs
│ │ │ ├── WalkToIncomingPacket.cs
│ │ │ └── WalkWestIncomingPacket.cs
│ │ ├── Dialog
│ │ │ ├── DebugAssertIncomingPacket.cs
│ │ │ ├── MountIncomingPacket.cs
│ │ │ ├── OpenQuestIncomingPacket.cs
│ │ │ ├── OpenedMyPrivateChannelIncomingPacket.cs
│ │ │ ├── OpenedNewChannelIncomingPacket.cs
│ │ │ ├── OpenedPrivateChannelIncomingPacket.cs
│ │ │ ├── ReportBugIncomingPacket.cs
│ │ │ ├── ReportRuleViolationIncomingPacket.cs
│ │ │ ├── SelectedCharacterIncomingPacket.cs
│ │ │ └── SelectedOutfitIncomingPacket.cs
│ │ ├── GameWindow
│ │ │ ├── EditListDialogIncomingPacket.cs
│ │ │ ├── EditTextDialogIncomingPacket.cs
│ │ │ ├── InviteToPartyIncomingPacket.cs
│ │ │ ├── JoinPartyIncomingPacket.cs
│ │ │ ├── LeavePartyIncomingPacket.cs
│ │ │ ├── LookIncomingPacket.cs
│ │ │ ├── MoveItemIncomingPacket.cs
│ │ │ ├── PassLeadershipToIncomingPacket.cs
│ │ │ ├── RevokePartyIncomingPacket.cs
│ │ │ ├── RotateItemIncomingPacket.cs
│ │ │ ├── SetOutfitIncomingPacket.cs
│ │ │ ├── SharedExperienceIncomingPacket.cs
│ │ │ ├── UseItemIncomingPacket.cs
│ │ │ ├── UseItemWithCreatureIncomingPacket.cs
│ │ │ └── UseItemWithItemIncomingPacket.cs
│ │ ├── Info
│ │ │ └── InfoIncomingPacket.cs
│ │ ├── NpcTrade
│ │ │ ├── BuyNpcTradeIncomingPacket.cs
│ │ │ ├── CloseNpcTradeIncomingPacket.cs
│ │ │ ├── LookItemNpcTradeIncomingPacket.cs
│ │ │ └── SellNpcTradeIncomingPacket.cs
│ │ ├── Trade
│ │ │ ├── AcceptTradeIncomingPacket.cs
│ │ │ ├── CancelOrRejectTradeIncomingPacket.cs
│ │ │ ├── LookItemTradeIncomingPacket.cs
│ │ │ └── TradeWithIncomingPacket.cs
│ │ └── Vip
│ │ │ ├── AddVipIncomingPacket.cs
│ │ │ └── RemoveVipIncomingPacket.cs
│ ├── MissionDto.cs
│ ├── MountDto.cs
│ ├── OfferDto.cs
│ ├── OutfitDto.cs
│ ├── Outgoing
│ │ ├── Battle
│ │ │ └── StopAttackAndFollowOutgoingPacket.cs
│ │ ├── Client
│ │ │ ├── PingOutgoingPacket.cs
│ │ │ ├── SendConnectionInfoOutgoingPacket.cs
│ │ │ ├── SendInfoOutgoingPacket.cs
│ │ │ ├── SendMapDownOutgoingPacket.cs
│ │ │ ├── SendMapEastOutgoingPacket.cs
│ │ │ ├── SendMapNorthOutgoingPacket.cs
│ │ │ ├── SendMapOutgoingPacket.cs
│ │ │ ├── SendMapSouthOutgoingPacket.cs
│ │ │ ├── SendMapUpOutgoingPacket.cs
│ │ │ ├── SendMapWestOutgoingPacket.cs
│ │ │ ├── SendTileOutgoingPacket.cs
│ │ │ ├── SendTilesOutgoingPacket.cs
│ │ │ └── StopWalkOutgoingPacket.cs
│ │ ├── Console
│ │ │ ├── CancelRuleViolationOutgoingPacket.cs
│ │ │ ├── CloseChannelOutgoingPacket.cs
│ │ │ ├── CloseRuleViolationOutgoingPacket.cs
│ │ │ ├── OpenChannelOutgoingPacket.cs
│ │ │ ├── OpenMyPrivateChannelOutgoingPacket.cs
│ │ │ ├── OpenPrivateChannelOutgoingPacket.cs
│ │ │ ├── OpenRuleViolationsChannelOutgoingPacket.cs
│ │ │ └── RemoveRuleViolationOutgoingPacket.cs
│ │ ├── Container
│ │ │ ├── CloseContainerOutgoingPacket.cs
│ │ │ ├── ContainerAddOutgoingPacket.cs
│ │ │ ├── ContainerRemoveOutgoingPacket.cs
│ │ │ ├── ContainerUpdateOutgoingPacket.cs
│ │ │ └── OpenContainerOutgoingPacket.cs
│ │ ├── Dialog
│ │ │ ├── OpenChannelDialogOutgoingPacket.cs
│ │ │ ├── OpenEditListDialogOutgoingPacket.cs
│ │ │ ├── OpenForYourInformationDialogOutgoingPacket.cs
│ │ │ ├── OpenMessageOfTheDayDialogOutgoingPacket.cs
│ │ │ ├── OpenPleaseWaitDialogOutgoingPacket.cs
│ │ │ ├── OpenQuestLineDialogOutgoingPacket.cs
│ │ │ ├── OpenQuestLogDialogOutgoingPacket.cs
│ │ │ ├── OpenSelectCharacterDialogOutgoingPacket.cs
│ │ │ ├── OpenSelectOutfitDialogOutgoingPacket.cs
│ │ │ ├── OpenShowOrEditTextDialogOutgoingPacket.cs
│ │ │ ├── OpenSorryDialogOutgoingPacket.cs
│ │ │ ├── OpenTutorialHintDialogOutgoingPacket.cs
│ │ │ └── OpenYouAreDeathDialogOutgoingPacket.cs
│ │ ├── GameWindow
│ │ │ ├── SetEnvironmentLightOutgoingPacket.cs
│ │ │ ├── SetFrameColorOutgoingPacket.cs
│ │ │ ├── SetHealthOutgoingPacket.cs
│ │ │ ├── SetLightOutgoingPacket.cs
│ │ │ ├── SetOutfitOutgoingPacket.cs
│ │ │ ├── SetPartyIconOutgoingPacket.cs
│ │ │ ├── SetSkullIconOutgoingPacket.cs
│ │ │ ├── SetSpeedOutgoingPacket.cs
│ │ │ ├── ShowAnimatedTextOutgoingPacket.cs
│ │ │ ├── ShowMagicEffectOutgoingPacket.cs
│ │ │ ├── ShowProjectileOutgoingPacket.cs
│ │ │ ├── ShowTextOutgoingPacket.cs
│ │ │ ├── ShowWindowTextOutgoingPacket.cs
│ │ │ ├── ThingAddOutgoingPacket.cs
│ │ │ ├── ThingRemoveOutgoingPacket.cs
│ │ │ ├── ThingUpdateOutgoingPacket.cs
│ │ │ └── WalkOutgoingPacket.cs
│ │ ├── Info
│ │ │ ├── BasicInfoOutgoingPacket.cs
│ │ │ ├── ExtPlayersInfoOutgoingPacket.cs
│ │ │ ├── MapInfoOutgoingPacket.cs
│ │ │ ├── MiscInfoOutgoingPacket.cs
│ │ │ ├── OwnerInfoOutgoingPacket.cs
│ │ │ ├── PlayersInfoOutgoingPacket.cs
│ │ │ ├── PlayersStatusInfoOutgoingPacket.cs
│ │ │ ├── SoftwareInfoOutgoingPacket.cs
│ │ │ └── XmlInfoOutgoingPacket.cs
│ │ ├── Inventory
│ │ │ ├── SlotAddOutgoingPacket.cs
│ │ │ └── SlotRemoveOutgoingPacket.cs
│ │ ├── Minimap
│ │ │ └── SetMarkerOutgoingPacket.cs
│ │ ├── NpcTrade
│ │ │ ├── CloseNpcTradeOutgoingPacket.cs
│ │ │ ├── InviteNpcTradeOutgoingPacket.cs
│ │ │ └── JoinNpcTradeOutgoingPacket.cs
│ │ ├── Skill
│ │ │ ├── SendSkillsOutgoingPacket.cs
│ │ │ └── SendStatusOutgoingPacket.cs
│ │ ├── StatusBar
│ │ │ └── SetSpecialConditionOutgoingPacket.cs
│ │ ├── Trade
│ │ │ ├── CloseTradeOutgoingPacket.cs
│ │ │ ├── InviteTradeOutgoingPacket.cs
│ │ │ └── JoinTradeOutgoingPacket.cs
│ │ └── Vip
│ │ │ ├── VipLoginOutgoingPacket.cs
│ │ │ ├── VipLogoutOutgoingPacket.cs
│ │ │ └── VipOutgoingPacket.cs
│ ├── QuestDto.cs
│ └── RequestedInfo.cs
├── Sockets
│ ├── Connection.cs
│ ├── DisconnectedEventArgs.cs
│ └── Listener.cs
└── mtanksl.OpenTibia.Network.csproj
├── mtanksl.OpenTibia.Plugins
├── .gitignore
├── Ammunitions
│ ├── BurstArrowAmmunitionPlugin.cs
│ └── PoisonArrowAmmunitionPlugin.cs
├── MonsterAttacks
│ ├── ArrowsMonsterAttackPlugin.cs
│ ├── AvalancheMonsterAttackPlugin.cs
│ ├── BaseDistanceMonsterAttackPlugin.cs
│ ├── BaseMeleeMonsterAttackPlugin.cs
│ ├── BaseRuneAreaMonsterAttackPlugin.cs
│ ├── BaseRuneTargetMonsterAttackPlugin.cs
│ ├── BaseSpellAreaMonsterAttackPlugin.cs
│ ├── BaseSpellBeamMonsterAttackPlugin.cs
│ ├── BerserkMonsterAttackPlugin.cs
│ ├── BoltsMonsterAttackPlugin.cs
│ ├── BoulderThrowMonsterAttackPlugin.cs
│ ├── BurstArrowsMonsterAttackPlugin.cs
│ ├── DeathStrikeMonsterAttackPlugin.cs
│ ├── DivineCalderaMonsterAttackPlugin.cs
│ ├── DivineMissileMonsterAttackPlugin.cs
│ ├── EnergyBeamMonsterAttackPlugin.cs
│ ├── EnergyBombMonsterAttackPlugin.cs
│ ├── EnergyFieldMonsterAttackPlugin.cs
│ ├── EnergyStrikeMonsterAttackPlugin.cs
│ ├── EnergyWaveMonsterAttackPlugin.cs
│ ├── EternalWinterMonsterAttackPlugin.cs
│ ├── EtherealSpearMonsterAttackPlugin.cs
│ ├── ExplosionMonsterAttackPlugin.cs
│ ├── FierceBerserkMonsterAttackPlugin.cs
│ ├── FireBombMonsterAttackPlugin.cs
│ ├── FireFieldMonsterAttackPlugin.cs
│ ├── FireWaveMonsterAttackPlugin.cs
│ ├── FireballMonsterAttackPlugin.cs
│ ├── FlameStrikeMonsterAttackPlugin.cs
│ ├── GreatEnergyBeamMonsterAttackPlugin.cs
│ ├── GreatFireballMonsterAttackPlugin.cs
│ ├── GroundshakerMonsterAttackPlugin.cs
│ ├── HasteMonsterAttackPlugin.cs
│ ├── HeavyMagicMissileMonsterAttackPlugin.cs
│ ├── HellsCoreMonsterAttackPlugin.cs
│ ├── HolyMissileMonsterAttackPlugin.cs
│ ├── IceStrikeMonsterAttackPlugin.cs
│ ├── IceWaveMonsterAttackPlugin.cs
│ ├── IcicleMonsterAttackPlugin.cs
│ ├── InvisibleMonsterAttackPlugin.cs
│ ├── KnivesMonsterAttackPlugin.cs
│ ├── LifeDrainMonsterAttackPlugin.cs
│ ├── LightMagicMissileMonsterAttackPlugin.cs
│ ├── ManaDrainMonsterAttackPlugin.cs
│ ├── MeleeMonsterAttackPlugin.cs
│ ├── ParalyseMonsterAttackPlugin.cs
│ ├── PoisonBombMonsterAttackPlugin.cs
│ ├── PoisonFieldMonsterAttackPlugin.cs
│ ├── RageOfTheSkiesMonsterAttackPlugin.cs
│ ├── SelfHealingMonsterAttackPlugin.cs
│ ├── SmallStonesMonsterAttackPlugin.cs
│ ├── SnowballsMonsterAttackPlugin.cs
│ ├── SoulfireMonsterAttackPlugin.cs
│ ├── SpearsMonsterAttackPlugin.cs
│ ├── StalagmiteMonsterAttackPlugin.cs
│ ├── StarsMonsterAttackPlugin.cs
│ ├── StoneShowerMonsterAttackPlugin.cs
│ ├── StrongHasteMonsterAttackPlugin.cs
│ ├── SuddenDeathMonsterAttackPlugin.cs
│ ├── TerraStrikeMonsterAttackPlugin.cs
│ ├── TerraWaveMonsterAttackPlugin.cs
│ ├── ThunderstormMonsterAttackPlugin.cs
│ ├── WhirlwindThrowMonsterAttackPlugin.cs
│ └── WrathOfNatureMonsterAttackPlugin.cs
├── Runes
│ ├── AvalancheRunePlugin.cs
│ ├── ChamaleonRunePlugin.cs
│ ├── CurePoisonRunePlugin.cs
│ ├── DesintegrateRunePlugin.cs
│ ├── DestroyFieldRunePlugin.cs
│ ├── EnergyBombRunePlugin.cs
│ ├── EnergyFieldRunePlugin.cs
│ ├── EnergyWallRunePlugin.cs
│ ├── ExplosionRunePlugin.cs
│ ├── FireBombRunePlugin.cs
│ ├── FireFieldRunePlugin.cs
│ ├── FireWallRunePlugin.cs
│ ├── FireballRunePlugin.cs
│ ├── GreatFireballRunePlugin.cs
│ ├── HeavyMagicMissileRunePlugin.cs
│ ├── HolyMissileRunePlugin.cs
│ ├── IcicleRunePlugin.cs
│ ├── IntenseHealingRunePlugin.cs
│ ├── LightMagicMissileRunePlugin.cs
│ ├── MagicWallRunePlugin.cs
│ ├── ParalyseRunePlugin.cs
│ ├── PoisonBombRunePlugin.cs
│ ├── PoisonFieldRunePlugin.cs
│ ├── PoisonWallRunePlugin.cs
│ ├── SoulFireRunePlugin.cs
│ ├── StalagmiteRunePlugin.cs
│ ├── StoneShowerRunePlugin.cs
│ ├── SuddenDeathRunePlugin.cs
│ ├── ThunderstormRunePlugin.cs
│ ├── UltimateHealingRunePlugin.cs
│ └── WildGrowthRunePlugin.cs
├── Spells
│ ├── BerserkSpellPlugin.cs
│ ├── BloodRageSpellPlugin.cs
│ ├── CancelInvisibilitySpellPlugin.cs
│ ├── ChallengeSpellPlugin.cs
│ ├── ChargeSpellPlugin.cs
│ ├── ConjureEnchantedSpearSpellPlugin.cs
│ ├── ConjureEnchantedStaffSpellPlugin.cs
│ ├── ConjureItemSpellPlugin.cs
│ ├── ConjureRuneSpellPlugin.cs
│ ├── CreatureIllusionSpellPlugin.cs
│ ├── CurePoisonSpellPlugin.cs
│ ├── DeathStrikeSpellPlugin.cs
│ ├── DivineCalderaSpellPlugin.cs
│ ├── DivineHealingSpellPlugin.cs
│ ├── DivineMissileSpellPlugin.cs
│ ├── EnergyBeamSpellPlugin.cs
│ ├── EnergyStrikeSpellPlugin.cs
│ ├── EnergyWaveSpellPlugin.cs
│ ├── EternalWinterSpellPlugin.cs
│ ├── EtherealSpearSpellPlugin.cs
│ ├── FierceBerserkSpellPlugin.cs
│ ├── FindPersonSpellPlugin.cs
│ ├── FireWaveSpellPlugin.cs
│ ├── FlameStrikeSpellPlugin.cs
│ ├── FoodSpellPlugin.cs
│ ├── GreatEnergyBeamSpellPlugin.cs
│ ├── GreatLightSpellPlugin.cs
│ ├── GroundshakerSpellPlugin.cs
│ ├── HasteSpellPlugin.cs
│ ├── HealFriendSpellPlugin.cs
│ ├── HellsCoreSpellPlugin.cs
│ ├── IceStrikeSpellPlugin.cs
│ ├── IceWaveSpellPlugin.cs
│ ├── IntenseHealingSpellPlugin.cs
│ ├── InvisibleSpellPlugin.cs
│ ├── LevitateDownSpellPlugin.cs
│ ├── LevitateUpSpellPlugin.cs
│ ├── LightHealingSpellPlugin.cs
│ ├── LightSpellPlugin.cs
│ ├── MagicRopeSpellPlugin.cs
│ ├── MagicShieldSpellPlugin.cs
│ ├── MassHealingSpellPlugin.cs
│ ├── ProtectorSpellPlugin.cs
│ ├── RageOfTheSkiesSpellPlugin.cs
│ ├── SharpshooterSpellPlugin.cs
│ ├── StrongHasteSpellPlugin.cs
│ ├── SwiftFootSpellPlugin.cs
│ ├── TeraWaveSpellPlugin.cs
│ ├── TerraStrikeSpellPlugin.cs
│ ├── UltimateHealingSpellPlugin.cs
│ ├── UltimateLightSpellPlugin.cs
│ ├── WhirlwindThrowSpellPlugin.cs
│ ├── WoundCleansingSpellPlugin.cs
│ └── WrathOfNatureSpellPlugin.cs
├── Weapons
│ ├── BaseWandAndRodWeaponPlugin.cs
│ ├── MoonlightRodWeaponPlugin.cs
│ ├── QuagmireRodWeaponPlugin.cs
│ ├── SnakebiteRodWeaponPlugin.cs
│ ├── TempestRodWeaponPlugin.cs
│ ├── ViperStarWeaponPlugin.cs
│ ├── VolcanicRodWeaponPlugin.cs
│ ├── WandOfCosmicEnergyWeaponPlugin.cs
│ ├── WandOfDragonbreathWeaponPlugin.cs
│ ├── WandOfInfernoWeaponPlugin.cs
│ ├── WandOfPlagueWeaponPlugin.cs
│ └── WandOfVortexWeaponPlugin.cs
└── mtanksl.OpenTibia.Plugins.csproj
├── mtanksl.OpenTibia.Security
├── .gitignore
├── Adler32.cs
├── Rsa.cs
├── Xtea.cs
└── mtanksl.OpenTibia.Security.csproj
├── mtanksl.OpenTibia.Tests
├── .gitignore
├── 1. Other tests
│ ├── PromiseTests.cs
│ ├── RecomputableTests.cs
│ └── RsaTests.cs
├── 2. Game tests
│ ├── 1. Incoming commands
│ │ ├── ParseEnterGameCommandTests.cs
│ │ └── ParseSelectedCharacterCommandTests.cs
│ ├── 2. Outgoing commands
│ │ ├── ShowAnimatedTextCommandTests.cs
│ │ ├── ShowMagicEffectCommandTests.cs
│ │ ├── ShowProjectileCommandTests.cs
│ │ └── ShowTextCommandTests.cs
│ ├── 3. Command handlers
│ │ ├── RotateItemChestHandlerTests.cs
│ │ └── RotateItemTransformHandlerTests.cs
│ └── 4. Event handlers
│ │ ├── AccountManagerLoginHandlerTests.cs
│ │ └── WelcomeHandlerTests.cs
├── Builder
│ ├── ActionBuilder.cs
│ ├── Assertion.cs
│ ├── IActionBuilder.cs
│ ├── IObserveBuilder.cs
│ ├── ObserveBuilder.cs
│ └── Test.cs
├── DebugLoggerProvider.cs
├── MockConnection.cs
├── MockMessageCollection.cs
├── MockMessageCollectionFactory.cs
├── MyTestContext.cs
├── data
│ └── server
│ │ └── config.lua
└── mtanksl.OpenTibia.Tests.csproj
├── mtanksl.OpenTibia.Threading
├── .gitignore
├── Dispatcher.cs
├── DispatcherEvent.cs
├── DispatcherEventCanceledEventArgs.cs
├── PriorityQueueOfT.cs
├── PriorityQueueOfTKeyOfTValue.cs
├── Scheduler.cs
├── SchedulerEvent.cs
├── Scope.cs
└── mtanksl.OpenTibia.Threading.csproj
├── mtanksl.OpenTibia.sln
└── server.png
/.gitignore:
--------------------------------------------------------------------------------
1 | .vs/
2 | Tools/
3 | /mtanksl.OpenTibia.Game.Common/Promises/Example.cs
--------------------------------------------------------------------------------
/debugging-lua-scripts.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mtanksl/OpenTibia/c7094bcf6f7a8ad693ad06a8eb0440ac9a95e390/debugging-lua-scripts.png
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Build/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 | bin/
4 | obj/
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Build/mtanksl.OpenTibia.Build.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net8.0
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 | bin/
4 | obj/
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/IRecomputableSource.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace OpenTibia.Common.Objects
4 | {
5 | public interface IRecomputableSource
6 | {
7 | event EventHandler Changed;
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/Component.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Objects
2 | {
3 | public abstract class Component
4 | {
5 | public GameObject GameObject { get; set; }
6 | }
7 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/DoorItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Objects
2 | {
3 | public class DoorItem : Item
4 | {
5 | public DoorItem(ItemMetadata metadata) : base(metadata)
6 | {
7 |
8 | }
9 |
10 | public byte DoorId { get; set; }
11 | }
12 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/FluidItem.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Structures;
2 |
3 | namespace OpenTibia.Common.Objects
4 | {
5 | public class FluidItem : Item
6 | {
7 | public FluidItem(ItemMetadata metadata) : base(metadata)
8 | {
9 |
10 | }
11 |
12 | public FluidType FluidType { get; set; }
13 | }
14 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/GameObject.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Objects
2 | {
3 | public abstract class GameObject
4 | {
5 | public bool IsDestroyed { get; set; }
6 |
7 | public uint Id { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/HouseTile.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Structures;
2 |
3 | namespace OpenTibia.Common.Objects
4 | {
5 | public class HouseTile : Tile
6 | {
7 | public HouseTile(Position position) : base(position)
8 | {
9 |
10 | }
11 |
12 | public HouseTile(Position position, int internalListCapacity) : base(position, internalListCapacity)
13 | {
14 |
15 | }
16 |
17 | public House House { get; set; }
18 | }
19 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/IBattleCollection.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Objects
2 | {
3 | public interface IBattleCollection
4 | {
5 | bool IsKnownCreature(uint creatureId, out uint removeId);
6 | }
7 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/IByteArrayStream.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.IO
2 | {
3 | public interface IByteArrayStream
4 | {
5 | int Position { get; }
6 |
7 | int Length { get; }
8 |
9 | void Seek(Origin origin, int offset);
10 |
11 | byte ReadByte();
12 |
13 | void Read(byte[] buffer, int offset, int count);
14 |
15 | void WriteByte(byte value);
16 |
17 | void Write(byte[] buffer, int offset, int count);
18 | }
19 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/IConnection.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Objects
2 | {
3 | public interface IConnection
4 | {
5 | string IpAddress { get; }
6 |
7 | IClient Client { get; set; }
8 |
9 | uint[] Keys { get; set; }
10 |
11 | void Send(IMessageCollection messageCollection);
12 |
13 | void Disconnect();
14 | }
15 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/IContainerCollection.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace OpenTibia.Common.Objects
4 | {
5 | public interface IContainerCollection
6 | {
7 | byte OpenContainer(Container container);
8 |
9 | void ReplaceContainer(Container container, byte containerId);
10 |
11 | void CloseContainer(byte containerId);
12 |
13 | Container GetContainer(byte containerId);
14 |
15 | IEnumerable GetContainers();
16 |
17 | IEnumerable > GetIndexedContainers();
18 | }
19 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/IContent.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Structures;
2 |
3 | namespace OpenTibia.Common.Objects
4 | {
5 | public interface IContent
6 | {
7 | TopOrder TopOrder { get; }
8 |
9 | IContainer Parent { get; set; }
10 | }
11 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/IIncomingPacket.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Objects;
2 | using OpenTibia.IO;
3 |
4 | namespace OpenTibia.Network.Packets.Incoming
5 | {
6 | public interface IIncomingPacket
7 | {
8 | void Read(IByteArrayStreamReader reader, IHasFeatureFlag features);
9 | }
10 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/IMapGetTile.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Structures;
2 |
3 | namespace OpenTibia.Common.Objects
4 | {
5 | public interface IMapGetTile
6 | {
7 | Tile GetTile(Position position);
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/IMessageCollection.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Network.Packets.Outgoing;
2 | using System;
3 | using System.Collections.Generic;
4 |
5 | namespace OpenTibia.Common.Objects
6 | {
7 | public interface IMessageCollection : IDisposable
8 | {
9 | void Add(IOutgoingPacket packet, IHasFeatureFlag features);
10 |
11 | IEnumerable GetMessages();
12 | }
13 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/IOutgoingPacket.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Objects;
2 | using OpenTibia.IO;
3 |
4 | namespace OpenTibia.Network.Packets.Outgoing
5 | {
6 | public interface IOutgoingPacket
7 | {
8 | void Write(IByteArrayStreamWriter writer, IHasFeatureFlag features);
9 | }
10 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/IWindowCollection.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace OpenTibia.Common.Objects
4 | {
5 | public interface IWindowCollection
6 | {
7 | uint OpenWindow(Window window);
8 |
9 | void ReplaceWindow(Window window, uint windowId);
10 |
11 | void CloseWindow(uint windowId);
12 |
13 | Window GetWindow(uint windowId);
14 |
15 | IEnumerable GetWindows();
16 |
17 | IEnumerable< KeyValuePair > GetIndexedWindows();
18 | }
19 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/Locker.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Objects
2 | {
3 | public class Locker : Container
4 | {
5 | public Locker(ItemMetadata metadata) : base(metadata)
6 | {
7 |
8 | }
9 |
10 | public Locker(ItemMetadata metadata, int internalListCapacity) : base(metadata, internalListCapacity)
11 | {
12 |
13 | }
14 |
15 | public ushort TownId { get; set; }
16 | }
17 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/Metadata/AttackItem.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace OpenTibia.Common.Objects
4 | {
5 | public class AttackItem
6 | {
7 | public string Name { get; set; }
8 |
9 | public int Interval { get; set; }
10 |
11 | public double Chance { get; set; }
12 |
13 | public int Min { get; set; }
14 |
15 | public int Max { get; set; }
16 |
17 | public Dictionary Attributes { get; set; }
18 | }
19 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/Metadata/DefenseItem.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace OpenTibia.Common.Objects
4 | {
5 | public class DefenseItem
6 | {
7 | public string Name { get; set; }
8 |
9 | public int Interval { get; set; }
10 |
11 | public double Chance { get; set; }
12 |
13 | public int Min { get; set; }
14 |
15 | public int Max { get; set; }
16 |
17 | public Dictionary Attributes { get; set; }
18 | }
19 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/Metadata/LootItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Objects
2 | {
3 | public class LootItem
4 | {
5 | public ushort OpenTibiaId { get; set; }
6 |
7 | public int KillsToGetOne { get; set; }
8 |
9 | public int CountMin { get; set; }
10 |
11 | public int CountMax { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/Metadata/VoiceCollection.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Objects
2 | {
3 | public class VoiceCollection
4 | {
5 | public int Interval { get; set; }
6 |
7 | public double Chance { get; set; }
8 |
9 | public VoiceItem[] Items { get; set; }
10 | }
11 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/Metadata/VoiceItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Objects
2 | {
3 | public class VoiceItem
4 | {
5 | public string Sentence { get; set; }
6 |
7 | public bool Yell { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/ReadableItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Objects
2 | {
3 | public class ReadableItem : Item
4 | {
5 | public ReadableItem(ItemMetadata metadata) : base(metadata)
6 | {
7 |
8 | }
9 |
10 | public string Text { get; set; }
11 |
12 | public string WrittenBy { get; set; }
13 |
14 | public uint WrittenDate { get; set; }
15 | }
16 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/SplashItem.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Structures;
2 |
3 | namespace OpenTibia.Common.Objects
4 | {
5 | public class SplashItem : Item
6 | {
7 | public SplashItem(ItemMetadata metadata) : base(metadata)
8 | {
9 |
10 | }
11 |
12 | public FluidType FluidType { get; set; }
13 | }
14 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/StackableItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Objects
2 | {
3 | public class StackableItem : Item
4 | {
5 | public StackableItem(ItemMetadata metadata) : base(metadata)
6 | {
7 |
8 | }
9 |
10 | public byte Count { get; set; }
11 |
12 | public override uint GetWeight()
13 | {
14 | return Count * base.GetWeight();
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/TeleportItem.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Structures;
2 |
3 | namespace OpenTibia.Common.Objects
4 | {
5 | public class TeleportItem : Item
6 | {
7 | public TeleportItem(ItemMetadata metadata) : base(metadata)
8 | {
9 |
10 | }
11 |
12 | public Position Position { get; set; }
13 | }
14 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/Town.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Structures;
2 |
3 | namespace OpenTibia.Common.Objects
4 | {
5 | public class Town
6 | {
7 | public ushort Id { get; set; }
8 |
9 | public string Name { get; set; }
10 |
11 | public Position Position { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Objects/Waypoint.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Structures;
2 |
3 | namespace OpenTibia.Common.Objects
4 | {
5 | public class Waypoint
6 | {
7 | public string Name { get; set; }
8 |
9 | public Position Position { get; set; }
10 | }
11 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/RecomputableSource.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace OpenTibia.Common.Objects
4 | {
5 | public class RecomputableSource : IRecomputableSource
6 | {
7 | public void Change()
8 | {
9 | OnChanged();
10 | }
11 |
12 | public event EventHandler Changed;
13 |
14 | protected virtual void OnChanged()
15 | {
16 | if (Changed != null)
17 | {
18 | Changed(this, EventArgs.Empty);
19 | }
20 | }
21 | }
22 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/AccountManagerType.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum AccountManagerType
4 | {
5 | None = 0,
6 |
7 | NewAccountManager = 1,
8 |
9 | AccountManager = 2
10 | }
11 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/Addon.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace OpenTibia.Common.Structures
4 | {
5 | [Flags]
6 | public enum Addon : byte
7 | {
8 | None = 0,
9 |
10 | First = 1,
11 |
12 | Second = 2,
13 |
14 | Both = First | Second
15 | }
16 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/AmmoAction.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum AmmoAction : byte
4 | {
5 | Remove = 1,
6 |
7 | Move = 2
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/AmmoType.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum AmmoType : byte
4 | {
5 | Bolt = 1,
6 |
7 | Arrow = 2
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/BlockType.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum BlockType : byte
4 | {
5 | None = 0,
6 |
7 | Shield = 1,
8 |
9 | Armor = 2,
10 |
11 | Immune = 3
12 | }
13 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/ChaseMode.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum ChaseMode : byte
4 | {
5 | StandWhileFighting = 0,
6 |
7 | ChaseOpponent = 1
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/Direction.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum Direction : byte
4 | {
5 | North = 0,
6 |
7 | East = 1,
8 |
9 | South = 2,
10 |
11 | West = 3
12 | }
13 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/FightMode.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum FightMode : byte
4 | {
5 | Offensive = 1,
6 |
7 | Balanced = 2,
8 |
9 | Defensive = 3
10 | }
11 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/FloorChange.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace OpenTibia.Common.Structures
4 | {
5 | [Flags]
6 | public enum FloorChange
7 | {
8 | None = 0,
9 |
10 | Down = 1,
11 |
12 | East = 2,
13 |
14 | North = 4,
15 |
16 | West = 8,
17 |
18 | South = 16,
19 |
20 | NorthEast = North | East,
21 |
22 | NorthWest = North | West,
23 |
24 | SouthWest = South | West,
25 |
26 | SouthEast = South | East
27 | }
28 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/FluidColor.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum FluidColor : byte
4 | {
5 | Empty = 0,
6 |
7 | Blue = 1,
8 |
9 | Purple = 2,
10 |
11 | Brown1 = 3,
12 |
13 | Brown2 = 4,
14 |
15 | Red = 5,
16 |
17 | Green = 6,
18 |
19 | Brown = 7,
20 |
21 | Yellow = 8,
22 |
23 | White = 9
24 | }
25 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/FrameColor.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum FrameColor : byte
4 | {
5 | Black = 0,
6 |
7 | Blue = 5,
8 |
9 | Green = 30,
10 |
11 | LightBlue = 35,
12 |
13 | Crystal = 65,
14 |
15 | Purple = 83,
16 |
17 | Platinum = 89,
18 |
19 | LightGrey = 129,
20 |
21 | DarkRed = 144,
22 |
23 | Red = 180,
24 |
25 | Orange = 198,
26 |
27 | Gold = 210,
28 |
29 | White = 215
30 | }
31 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/Gender.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum Gender : byte
4 | {
5 | Male = 0,
6 |
7 | Female = 1
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/MoveDirection.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum MoveDirection : byte
4 | {
5 | East = 1,
6 |
7 | NorthEast = 2,
8 |
9 | North = 3,
10 |
11 | NorthWest = 4,
12 |
13 | West = 5,
14 |
15 | SouthWest = 6,
16 |
17 | South = 7,
18 |
19 | SouthEast = 8
20 | }
21 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/OperatingSystem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum OperatingSystem : ushort
4 | {
5 | Linux = 1,
6 |
7 | Windows = 2
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/Origin.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.IO
2 | {
3 | public enum Origin
4 | {
5 | Begin,
6 |
7 | Current
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/Race.cs:
--------------------------------------------------------------------------------
1 | using System.Xml.Serialization;
2 |
3 | namespace OpenTibia.Common.Structures
4 | {
5 | public enum Race : byte
6 | {
7 | Blood = 0,
8 |
9 | Energy = 1,
10 |
11 | Fire = 2,
12 |
13 | Venom = 3,
14 |
15 | Undead = 4
16 | }
17 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/Rank.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum Rank : byte
4 | {
5 | Player = 0,
6 |
7 | Tutor = 1,
8 |
9 | Gamemaster = 2,
10 |
11 | AccountManager = 3
12 | }
13 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/SafeMode.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum SafeMode : byte
4 | {
5 | YouCanAttackAnyCharacter = 0,
6 |
7 | YouCannotAttackUnmarkedCharacter = 1
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/SkullIcon.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum SkullIcon : byte
4 | {
5 | None = 0,
6 |
7 | Yellow = 1,
8 |
9 | Green = 2,
10 |
11 | White = 3,
12 |
13 | Red = 4,
14 |
15 | Black = 5
16 | }
17 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/Slot.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum Slot : byte
4 | {
5 | Hotkey = 0,
6 |
7 | Head = 1,
8 |
9 | Necklace = 2,
10 |
11 | Backpack = 3,
12 |
13 | Body = 4,
14 |
15 | Right = 5,
16 |
17 | Left = 6,
18 |
19 | Legs = 7,
20 |
21 | Feet = 8,
22 |
23 | Ring = 9,
24 |
25 | Ammo = 10
26 | }
27 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/TopOrder.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum TopOrder : byte
4 | {
5 | Ground = 0,
6 |
7 | ///
8 | /// Carpet.
9 | ///
10 | HighPriority = 1,
11 |
12 | ///
13 | /// Decoration, not moveable.
14 | ///
15 | MediumPriority = 2,
16 |
17 | ///
18 | /// Arch.
19 | ///
20 | LowPriority = 3,
21 |
22 | Creature = 4,
23 |
24 | Other = 5
25 | }
26 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/Vocation.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum Vocation : byte
4 | {
5 | None = 0,
6 |
7 | Knight = 1,
8 |
9 | Paladin = 2,
10 |
11 | Druid = 3,
12 |
13 | Sorcerer = 4,
14 |
15 | EliteKnight = 5,
16 |
17 | RoyalPaladin = 6,
18 |
19 | ElderDruid = 7,
20 |
21 | MasterSorcerer = 8
22 | }
23 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/WarIcon.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum WarIcon : byte
4 | {
5 | None = 0,
6 |
7 | Green = 1,
8 |
9 | Red = 2,
10 |
11 | Blue = 3
12 | }
13 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/Structures/WeaponType.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Common.Structures
2 | {
3 | public enum WeaponType : byte
4 | {
5 | Sword = 1,
6 |
7 | Club = 2,
8 |
9 | Axe = 3,
10 |
11 | Shield = 4,
12 |
13 | Distance = 5,
14 |
15 | Wand = 6,
16 |
17 | Ammunition = 7
18 | }
19 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Common/mtanksl.OpenTibia.Common.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 | bin/
4 | obj/
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbHouse.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace OpenTibia.Data.Models
4 | {
5 | public class DbHouse
6 | {
7 | public int Id { get; set; }
8 |
9 | public int? OwnerId { get; set; }
10 |
11 |
12 | public DbPlayer Owner { get; set; }
13 |
14 | public ICollection HouseAccessLists { get; set; } = new List();
15 |
16 | public ICollection HouseItems { get; set; } = new List();
17 |
18 | }
19 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbHouseAccessList.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 |
3 | namespace OpenTibia.Data.Models
4 | {
5 | public class DbHouseAccessList
6 | {
7 | public int HouseId { get; set; }
8 |
9 | public int ListId { get; set; }
10 |
11 | [Required]
12 | public string Text { get; set; }
13 |
14 |
15 | public DbHouse House { get; set; }
16 | }
17 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbHouseItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Data.Models
2 | {
3 | public class DbHouseItem
4 | {
5 | public int HouseId { get; set; }
6 |
7 | public long SequenceId { get; set; }
8 |
9 | public long ParentId { get; set; }
10 |
11 | public int OpenTibiaId { get; set; }
12 |
13 | public int Count { get; set; }
14 |
15 | public byte[] Attributes { get; set; }
16 |
17 |
18 | public DbHouse House { get; set; }
19 | }
20 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbMotd.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 |
3 | namespace OpenTibia.Data.Models
4 | {
5 | public class DbMotd
6 | {
7 | public int Id { get; set; }
8 |
9 | [Required]
10 | [StringLength(255)]
11 | public string Message { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbPlayerAchievement.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 |
3 | namespace OpenTibia.Data.Models
4 | {
5 | public class DbPlayerAchievement
6 | {
7 | public int PlayerId { get; set; }
8 |
9 | [StringLength(255)]
10 | public string Name { get; set; }
11 |
12 |
13 | public DbPlayer Player { get; set; }
14 | }
15 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbPlayerBless.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 |
3 | namespace OpenTibia.Data.Models
4 | {
5 | public class DbPlayerBless
6 | {
7 | public int PlayerId { get; set; }
8 |
9 | [StringLength(255)]
10 | public string Name { get; set; }
11 |
12 |
13 | public DbPlayer Player { get; set; }
14 | }
15 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbPlayerDepotItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Data.Models
2 | {
3 | public class DbPlayerDepotItem
4 | {
5 | public int PlayerId { get; set; }
6 |
7 | public int SequenceId { get; set; }
8 |
9 | public int ParentId { get; set; }
10 |
11 | public int OpenTibiaId { get; set; }
12 |
13 | public int Count { get; set; }
14 |
15 | public byte[] Attributes { get; set; }
16 |
17 |
18 | public DbPlayer Player { get; set; }
19 | }
20 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbPlayerItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Data.Models
2 | {
3 | public class DbPlayerItem
4 | {
5 | public int PlayerId { get; set; }
6 |
7 | public int SequenceId { get; set; }
8 |
9 | public int ParentId { get; set; }
10 |
11 | public int OpenTibiaId { get; set; }
12 |
13 | public int Count { get; set; }
14 |
15 | public byte[] Attributes { get; set; }
16 |
17 |
18 | public DbPlayer Player { get; set; }
19 | }
20 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbPlayerKill.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace OpenTibia.Data.Models
4 | {
5 | public class DbPlayerKill
6 | {
7 | public int Id { get; set; }
8 |
9 | public int PlayerId { get; set; }
10 |
11 | public int TargetId { get; set; }
12 |
13 | public bool Unjustified { get; set; }
14 |
15 | public DateTime CreationDate { get; set; }
16 |
17 |
18 | public DbPlayer Player { get; set; }
19 |
20 | public DbPlayer Target { get; set; }
21 | }
22 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbPlayerOutfit.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Data.Models
2 | {
3 | public class DbPlayerOutfit
4 | {
5 | public int PlayerId { get; set; }
6 |
7 | public int OutfitId { get; set; }
8 |
9 | public int OutfitAddon { get; set; }
10 |
11 |
12 | public DbPlayer Player { get; set; }
13 | }
14 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbPlayerSpell.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 |
3 | namespace OpenTibia.Data.Models
4 | {
5 | public class DbPlayerSpell
6 | {
7 | public int PlayerId { get; set; }
8 |
9 | [StringLength(255)]
10 | public string Name { get; set; }
11 |
12 |
13 | public DbPlayer Player { get; set; }
14 | }
15 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbPlayerStorage.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Data.Models
2 | {
3 | public class DbPlayerStorage
4 | {
5 | public int PlayerId { get; set; }
6 |
7 | public int Key { get; set; }
8 |
9 | public int Value { get; set; }
10 |
11 |
12 | public DbPlayer Player { get; set; }
13 | }
14 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbPlayerVip.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Data.Models
2 | {
3 | public class DbPlayerVip
4 | {
5 | public int PlayerId { get; set; }
6 |
7 | public int VipId { get; set; }
8 |
9 |
10 | public DbPlayer Player { get; set; }
11 |
12 | public DbPlayer Vip { get; set; }
13 | }
14 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbServerStorage.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 |
3 | namespace OpenTibia.Data.Models
4 | {
5 | public class DbServerStorage
6 | {
7 | [Required]
8 | [StringLength(255)]
9 | public string Key { get; set; }
10 |
11 | [Required]
12 | [StringLength(255)]
13 | public string Value { get; set; }
14 | }
15 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Models/DbWorld.cs:
--------------------------------------------------------------------------------
1 | using System.ComponentModel.DataAnnotations;
2 |
3 | namespace OpenTibia.Data.Models
4 | {
5 | public class DbWorld
6 | {
7 | public int Id { get; set; }
8 |
9 | [Required]
10 | [StringLength(255)]
11 | public string Name { get; set; }
12 |
13 | [Required]
14 | [StringLength(255)]
15 | public string Ip { get; set; }
16 |
17 | public int Port { get; set; }
18 | }
19 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Repositories/IAccountRepository.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Data.Models;
2 | using System.Threading.Tasks;
3 |
4 | namespace OpenTibia.Data.Repositories
5 | {
6 | public interface IAccountRepository
7 | {
8 | Task GetAccount(string accountName, string accountPassword);
9 |
10 | Task GetAccountById(int id);
11 |
12 | Task GetAccountByName(string name);
13 |
14 | void AddDbAccount(DbAccount account);
15 | }
16 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Repositories/IBanRepository.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Data.Models;
2 | using System.Threading.Tasks;
3 |
4 | namespace OpenTibia.Data.Repositories
5 | {
6 | public interface IBanRepository
7 | {
8 | Task GetBanByAccountId(int accountId);
9 |
10 | Task GetBanByPlayerId(int playerId);
11 |
12 | Task GetBanByIpAddress(string ipAddress);
13 |
14 | void AddBan(DbBan ban);
15 |
16 | void RemoveBan(DbBan ban);
17 | }
18 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Repositories/IBugReportRepository.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Data.Models;
2 |
3 | namespace OpenTibia.Data.Repositories
4 | {
5 | public interface IBugReportRepository
6 | {
7 | void AddBugReport(DbBugReport bugReport);
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Repositories/IDebugAssertRepository.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Data.Models;
2 |
3 | namespace OpenTibia.Data.Repositories
4 | {
5 | public interface IDebugAssertRepository
6 | {
7 | void AddDebugAssert(DbDebugAssert debugAssert);
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Repositories/IHouseRepository.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Data.Models;
2 | using System.Threading.Tasks;
3 |
4 | namespace OpenTibia.Data.Repositories
5 | {
6 | public interface IHouseRepository
7 | {
8 | Task GetHouses();
9 |
10 | void AddHouse(DbHouse house);
11 | }
12 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Repositories/IMotdRepository.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Data.Models;
2 | using System.Threading.Tasks;
3 |
4 | namespace OpenTibia.Data.Repositories
5 | {
6 | public interface IMotdRepository
7 | {
8 | Task GetLastMessageOfTheDay();
9 |
10 | void AddMessageOfTheDay(DbMotd motd);
11 | }
12 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Repositories/IPlayerRepository.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Data.Models;
2 | using System.Threading.Tasks;
3 |
4 | namespace OpenTibia.Data.Repositories
5 | {
6 | public interface IPlayerRepository
7 | {
8 | Task GetPlayer(string accountName, string accountPassword, string playerName);
9 |
10 | Task GetPlayerByIds(int[] ids);
11 |
12 | Task GetPlayerByName(string name);
13 |
14 | void AddPlayer(DbPlayer player);
15 | }
16 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Repositories/IRuleViolationReportRepository.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Data.Models;
2 |
3 | namespace OpenTibia.Data.Repositories
4 | {
5 | public interface IRuleViolationReportRepository
6 | {
7 | void AddRuleViolationReport(DbRuleViolationReport ruleViolationReport);
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Repositories/IServerStorageRepository.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Data.Models;
2 | using System.Threading.Tasks;
3 |
4 | namespace OpenTibia.Data.Repositories
5 | {
6 | public interface IServerStorageRepository
7 | {
8 | Task GetServerStorages();
9 |
10 | Task GetServerStorageByKey(string key);
11 |
12 | void AddServerStorage(DbServerStorage serverStorage);
13 | }
14 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/Repositories/IWorldRepository.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Data.Models;
2 | using System.Threading.Tasks;
3 |
4 | namespace OpenTibia.Data.Repositories
5 | {
6 | public interface IWorldRepository
7 | {
8 | Task GetWorlds();
9 |
10 | Task GetWorldByName(string name);
11 | }
12 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Common/mtanksl.OpenTibia.Data.Common.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.InMemory/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 | bin/
4 | obj/
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.InMemory/mtanksl.OpenTibia.Data.InMemory.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.MsSql/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 | bin/
4 | obj/
5 | migrations/
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.MsSql/MsSqlContextFactory.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 | using Microsoft.EntityFrameworkCore.Design;
3 |
4 | namespace OpenTibia.Data.MsSql.Contexts
5 | {
6 | public class MsSqlContextFactory : IDesignTimeDbContextFactory
7 | {
8 | public MsSqlContext CreateDbContext(string[] args)
9 | {
10 | var optionsBuilder = new DbContextOptionsBuilder();
11 |
12 | return new MsSqlContext(args[0], optionsBuilder.Options);
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.MsSql/README.md:
--------------------------------------------------------------------------------
1 | # Adding migration
2 |
3 | dotnet ef migrations add Initial -- Server=localhost;Database=mtots;Trusted_Connection=True;
4 |
5 | # Scripting migration
6 |
7 | dotnet ef migrations script -- Server=localhost;Database=mtots;Trusted_Connection=True;
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.MySql/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 | bin/
4 | obj/
5 | migrations/
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.MySql/MySqlContextFactory.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 | using Microsoft.EntityFrameworkCore.Design;
3 |
4 | namespace OpenTibia.Data.MySql.Contexts
5 | {
6 | public class MySqlContextFactory : IDesignTimeDbContextFactory
7 | {
8 | public MySqlContext CreateDbContext(string[] args)
9 | {
10 | var optionsBuilder = new DbContextOptionsBuilder();
11 |
12 | return new MySqlContext(args[0], optionsBuilder.Options);
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.MySql/README.md:
--------------------------------------------------------------------------------
1 | # Adding migration
2 |
3 | dotnet ef migrations add Initial -- Server=localhost;Database=mtots;User=root;Password=;
4 |
5 | # Scripting migration
6 |
7 | dotnet ef migrations script -- Server=localhost;Database=mtots;User=root;Password=;
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.PostgreSql/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 | bin/
4 | obj/
5 | migrations/
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.PostgreSql/PostgreSqlContextFactory.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 | using Microsoft.EntityFrameworkCore.Design;
3 |
4 | namespace OpenTibia.Data.PostgreSql.Contexts
5 | {
6 | public class PostgreSqlContextFactory : IDesignTimeDbContextFactory
7 | {
8 | public PostgreSqlContext CreateDbContext(string[] args)
9 | {
10 | var optionsBuilder = new DbContextOptionsBuilder();
11 |
12 | return new PostgreSqlContext(args[0], optionsBuilder.Options);
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.PostgreSql/README.md:
--------------------------------------------------------------------------------
1 | # Adding migration
2 |
3 | dotnet ef migrations add Initial -- Server=localhost;Database=mtots;User Id=postgres;Password=;
4 |
5 | # Scripting migration
6 |
7 | dotnet ef migrations script -- Server=localhost;Database=mtots;User Id=postgres;Password=;
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Sqlite/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 | bin/
4 | obj/
5 | migrations/
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Sqlite/README.md:
--------------------------------------------------------------------------------
1 | # Adding migration
2 |
3 | dotnet ef migrations add Initial -- Data Source=database.db;
4 |
5 | # Scripting migration
6 |
7 | dotnet ef migrations script -- Data Source=database.db;
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Sqlite/SqliteContextFactory.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.EntityFrameworkCore;
2 | using Microsoft.EntityFrameworkCore.Design;
3 |
4 | namespace OpenTibia.Data.Sqlite.Contexts
5 | {
6 | public class SqliteContextFactory : IDesignTimeDbContextFactory
7 | {
8 | public SqliteContext CreateDbContext(string[] args)
9 | {
10 | var optionsBuilder = new DbContextOptionsBuilder();
11 |
12 | return new SqliteContext(args[0], optionsBuilder.Options);
13 | }
14 | }
15 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data.Sqlite/database.db.dist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mtanksl/OpenTibia/c7094bcf6f7a8ad693ad06a8eb0440ac9a95e390/mtanksl.OpenTibia.Data.Sqlite/database.db.dist
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 | bin/
4 | obj/
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data/Repositories/BugReportRepository.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Data.Contexts;
2 | using OpenTibia.Data.Models;
3 |
4 | namespace OpenTibia.Data.Repositories
5 | {
6 | public class BugReportRepository : IBugReportRepository
7 | {
8 | private DatabaseContext context;
9 |
10 | public BugReportRepository(DatabaseContext context)
11 | {
12 | this.context = context;
13 | }
14 |
15 | public void AddBugReport(DbBugReport bugReport)
16 | {
17 | context.BugReports.Add(bugReport);
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Data/mtanksl.OpenTibia.Data.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net8.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 | bin/
4 | obj/
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Otb/ItemGroup.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Otb
2 | {
3 | public enum ItemGroup : byte
4 | {
5 | None = 0,
6 |
7 | Ground = 1,
8 |
9 | Container = 2,
10 |
11 | Splash = 11,
12 |
13 | Fluid = 12,
14 |
15 | Deprecated = 14
16 | }
17 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Otb/OtbAttribute.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Otb
2 | {
3 | public enum OtbAttribute : byte
4 | {
5 | Empty = 0,
6 |
7 | OpenTibiaId = 16,
8 |
9 | TibiaId = 17,
10 |
11 | Speed = 20,
12 |
13 | SpriteHash = 32,
14 |
15 | MinimapColor = 33,
16 |
17 | MaxReadWriteChars = 34,
18 |
19 | MaxReadChars = 35,
20 |
21 | Light = 42,
22 |
23 | TopOrder = 43,
24 |
25 | Start = 254,
26 |
27 | End = 255
28 | }
29 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Otb/OtbType.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Otb
2 | {
3 | public enum OtbType : byte
4 | {
5 | Root = 0,
6 |
7 | OtbInfo = 1
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Otb/OtbVersion.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Otb
2 | {
3 | public enum OtbVersion : uint
4 | {
5 | Version1 = 1,
6 |
7 | Version2 = 2,
8 |
9 | Version3 = 3
10 | }
11 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Otbm/OtbmType.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Otbm
2 | {
3 | public enum OtbmType : byte
4 | {
5 | Root = 0,
6 |
7 | MapInfo = 2,
8 |
9 | Area = 4,
10 |
11 | Tile = 5,
12 |
13 | Item = 6,
14 |
15 | Towns = 12,
16 |
17 | Town = 13,
18 |
19 | HouseTile = 14,
20 |
21 | Waypoints = 15,
22 |
23 | Waypoint = 16
24 | }
25 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Otbm/OtbmVersion.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Otbm
2 | {
3 | public enum OtbmVersion : uint
4 | {
5 | Version1 = 0, // 0.5.0
6 |
7 | Version2 = 1, // 0.6.0
8 |
9 | Version3 = 2, // 0.6.1
10 |
11 | Version4 = 3 // 0.7.0 (revscriptsys)
12 | }
13 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Otbm/TileFlags.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace OpenTibia.FileFormats.Otbm
4 | {
5 | [Flags]
6 | public enum TileFlags : uint
7 | {
8 | ProtectionZone = 1,
9 |
10 | NoPvpZone = 4,
11 |
12 | NoLogoutZone = 8,
13 |
14 | PvpZone = 16,
15 |
16 | Refresh = 32
17 | }
18 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Monsters/AttackItem.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace OpenTibia.FileFormats.Xml.Monsters
4 | {
5 | public class AttackItem
6 | {
7 | public string Name { get; set; }
8 |
9 | public int Interval { get; set; }
10 |
11 | public double Chance { get; set; }
12 |
13 | public int? Min { get; set; }
14 |
15 | public int? Max { get; set; }
16 |
17 | public Dictionary Attributes { get; set; }
18 | }
19 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Monsters/ChangeTargetStrategy.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Xml.Monsters
2 | {
3 | public class ChangeTargetStrategy
4 | {
5 | public int Interval { get; set; }
6 |
7 | public double Chance { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Monsters/DefenseCollection.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace OpenTibia.FileFormats.Xml.Monsters
4 | {
5 | public class DefenseCollection
6 | {
7 | public double Mitigation { get; set; }
8 |
9 | public int Defense { get; set; }
10 |
11 | public int Armor { get; set; }
12 |
13 | public List Items { get; set; }
14 | }
15 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Monsters/DefenseItem.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace OpenTibia.FileFormats.Xml.Monsters
4 | {
5 | public class DefenseItem
6 | {
7 | public string Name { get; set; }
8 |
9 | public int Interval { get; set; }
10 |
11 | public double Chance { get; set; }
12 |
13 | public int? Min { get; set; }
14 |
15 | public int? Max { get; set; }
16 |
17 | public Dictionary Attributes { get; set; }
18 | }
19 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Monsters/HealthItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Xml.Monsters
2 | {
3 | public class HealthItem
4 | {
5 | public int Now { get; set; }
6 |
7 | public int Max { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Monsters/LightItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Xml.Monsters
2 | {
3 | public class LightItem
4 | {
5 | public int Level { get; set; }
6 |
7 | public int Color { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Monsters/LookItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Xml.Monsters
2 | {
3 | public class LookItem
4 | {
5 | public int TypeEx { get; set; }
6 |
7 | public int Type { get; set; }
8 |
9 | public int Head { get; set; }
10 |
11 | public int Body { get; set; }
12 |
13 | public int Legs { get; set; }
14 |
15 | public int Feet { get; set; }
16 |
17 | public int Addon { get; set; }
18 |
19 | public int Mount { get; set; }
20 |
21 | public int Corpse { get; set; }
22 | }
23 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Monsters/LootItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Xml.Monsters
2 | {
3 | public class LootItem
4 | {
5 | public ushort Id { get; set; }
6 |
7 | public int? CountMin { get; set; }
8 |
9 | public int? CountMax { get; set; }
10 |
11 | public int KillsToGetOne { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Monsters/TargetStrategy.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Xml.Monsters
2 | {
3 | public class TargetStrategy
4 | {
5 | public double Nearest { get; set; }
6 |
7 | public double Weakest { get; set; }
8 |
9 | public double MostDamage { get; set; }
10 |
11 | public double Random { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Monsters/VoiceCollection.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace OpenTibia.FileFormats.Xml.Monsters
4 | {
5 | public class VoiceCollection
6 | {
7 | public int Interval { get; set; }
8 |
9 | public double Chance { get; set; }
10 |
11 | public List Items { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Monsters/VoiceItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Xml.Monsters
2 | {
3 | public class VoiceItem
4 | {
5 | public string Sentence { get; set; }
6 |
7 | public int Yell { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Npcs/HealthItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Xml.Npcs
2 | {
3 | public class HealthItem
4 | {
5 | public int Now { get; set; }
6 |
7 | public int Max { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Npcs/LightItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Xml.Npcs
2 | {
3 | public class LightItem
4 | {
5 | public int Level { get; set; }
6 |
7 | public int Color { get; set; }
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Npcs/LookItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Xml.Npcs
2 | {
3 | public class LookItem
4 | {
5 | public int TypeEx { get; set; }
6 |
7 | public int Type { get; set; }
8 |
9 | public int Head { get; set; }
10 |
11 | public int Body { get; set; }
12 |
13 | public int Legs { get; set; }
14 |
15 | public int Feet { get; set; }
16 |
17 | public int Addon { get; set; }
18 |
19 | public int Mount { get; set; }
20 | }
21 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Npcs/VoiceCollection.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace OpenTibia.FileFormats.Xml.Npcs
4 | {
5 | public class VoiceCollection
6 | {
7 | public int Interval { get; set; }
8 |
9 | public double Chance { get; set; }
10 |
11 | public List Items { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/Xml/Npcs/VoiceItem.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.FileFormats.Xml.Npcs
2 | {
3 | public class VoiceItem
4 | {
5 | public string Sentence { get; set; }
6 | }
7 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.FileFormats/mtanksl.OpenTibia.FileFormats.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/.gitignore:
--------------------------------------------------------------------------------
1 | *.suo
2 | *.user
3 | bin/
4 | obj/
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/CommandHandlers/ICommandHandler.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Game.Commands;
2 | using OpenTibia.Game.Common;
3 | using System;
4 |
5 | namespace OpenTibia.Game.CommandHandlers
6 | {
7 | public interface ICommandHandler
8 | {
9 | bool IsDestroyed { get; set; }
10 |
11 | Guid Token { get; }
12 |
13 | Promise Handle(Func next, Command command);
14 | }
15 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/CommandHandlers/ICommandHandlerOfT.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Game.Commands;
2 | using OpenTibia.Game.Common;
3 | using System;
4 |
5 | namespace OpenTibia.Game.CommandHandlers
6 | {
7 | public interface ICommandHandler : ICommandHandler where T : Command
8 | {
9 | Promise Handle(Func next, T command);
10 | }
11 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/CommandHandlers/ICommandResultHandler.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Game.Commands;
2 | using OpenTibia.Game.Common;
3 | using System;
4 |
5 | namespace OpenTibia.Game.CommandHandlers
6 | {
7 | public interface ICommandResultHandler
8 | {
9 | bool IsDestroyed { get; set; }
10 |
11 | Guid Token { get; }
12 |
13 | PromiseResult Handle(Func> next, CommandResult command);
14 | }
15 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/CommandHandlers/ICommandResultHandlerOfT.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Game.Commands;
2 | using OpenTibia.Game.Common;
3 | using System;
4 |
5 | namespace OpenTibia.Game.CommandHandlers
6 | {
7 | public interface ICommandResultHandler : ICommandResultHandler where T : CommandResult
8 | {
9 | PromiseResult Handle(Func> next, T command);
10 | }
11 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Commands/Incoming/GameWindow/Look/ParseLookCommand.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Objects;
2 |
3 | namespace OpenTibia.Game.Commands
4 | {
5 | public abstract class ParseLookCommand : IncomingCommand
6 | {
7 | public ParseLookCommand(Player player)
8 | {
9 | Player = player;
10 | }
11 |
12 | public Player Player { get; set; }
13 | }
14 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Commands/Incoming/GameWindow/UseItem/ParseUseItemCommand.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Objects;
2 |
3 | namespace OpenTibia.Game.Commands
4 | {
5 | public abstract class ParseUseItemCommand : IncomingCommand
6 | {
7 | public ParseUseItemCommand(Player player)
8 | {
9 | Player = player;
10 | }
11 |
12 | public Player Player { get; set; }
13 | }
14 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Commands/Incoming/IgnoreCommand.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Objects;
2 | using OpenTibia.Game.Common;
3 |
4 | namespace OpenTibia.Game.Commands
5 | {
6 | public class IgnoreCommand : IncomingCommand
7 | {
8 | public IgnoreCommand(Player player)
9 | {
10 | Player = player;
11 | }
12 |
13 | public Player Player { get; set; }
14 |
15 | public override Promise Execute()
16 | {
17 | return Promise.Completed;
18 | }
19 | }
20 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Commands/IncomingCommand.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Game.Commands
2 | {
3 | public abstract class IncomingCommand : Command
4 | {
5 |
6 | }
7 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/ChannelCollection/Statement.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace OpenTibia.Game.Common.ServerObjects
4 | {
5 | public class Statement
6 | {
7 | public uint Id { get; set; }
8 |
9 | public int DatabasePlayerId { get; set; }
10 |
11 | public string Message { get; set; }
12 |
13 | public DateTime CreationDate { get; set; }
14 | }
15 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/CombatCollection/Hit.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | namespace OpenTibia.Game.Common.ServerObjects
4 | {
5 | public class Hit
6 | {
7 | public int Damage { get; set; }
8 |
9 | public DateTime LastAttack { get; set; }
10 | }
11 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/CombatCollection/ICombatCollection.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Objects;
2 | using System.Collections.Generic;
3 |
4 | namespace OpenTibia.Game.Common.ServerObjects
5 | {
6 | public interface ICombatCollection
7 | {
8 | void AddHitToTarget(Creature attacker, Creature target, int damage);
9 |
10 | Dictionary GetHitsByTarget(Creature target);
11 |
12 | Dictionary GetHitsByTargetAndRemove(Creature target);
13 | }
14 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/Config/ExperienceStagesConfig.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Game.Common.ServerObjects
2 | {
3 | public class ExperienceStagesConfig
4 | {
5 | public bool Enabled { get; set; }
6 |
7 | public LevelConfig[] Levels { get; set; }
8 | }
9 |
10 | public class LevelConfig
11 | {
12 | public int MinLevel { get; set; }
13 |
14 | public int MaxLevel { get; set; }
15 |
16 | public double Multiplier { get; set; }
17 | }
18 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/Config/RookingConfig.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Structures;
2 |
3 | namespace OpenTibia.Game.Common.ServerObjects
4 | {
5 | public class RookingConfig
6 | {
7 | public bool Enabled { get; set; }
8 |
9 | public ulong ExperienceThreshold { get; set; }
10 |
11 | public Position PlayerNewPosition { get; set; }
12 | }
13 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/Config/WorldType.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Game.Common.ServerObjects
2 | {
3 | public enum WorldType
4 | {
5 | NonPvp = 0,
6 |
7 | Pvp = 1
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/GuildCollection/IGuildCollection.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Objects;
2 | using System.Collections.Generic;
3 |
4 | namespace OpenTibia.Game.Common.ServerObjects
5 | {
6 | public interface IGuildCollection
7 | {
8 | int Count { get; }
9 |
10 | void AddGuild(Guild guild);
11 |
12 | void RemoveGuild(Guild guild);
13 |
14 | Guild GetGuildThatContainsMember(Player player);
15 |
16 | IEnumerable GetGuilds();
17 | }
18 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/IClientFactory.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Objects;
2 |
3 | namespace OpenTibia.Game.Common.ServerObjects
4 | {
5 | public interface IClientFactory
6 | {
7 | IClient Create();
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/IDatabaseFactory.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Game.Common.ServerObjects
2 | {
3 | public interface IDatabaseFactory
4 | {
5 | IDatabase Create();
6 | }
7 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/IGameObjectPool.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Objects;
2 | using System.Collections.Generic;
3 |
4 | namespace OpenTibia.Game.Common.ServerObjects
5 | {
6 | public interface IGameObjectPool
7 | {
8 | string GetPlayerNameFor(string ipAddress, int databasePlayerId, string playerName);
9 |
10 | void AddPlayer(Player player);
11 |
12 | IEnumerable GetPlayers();
13 |
14 | Player GetPlayerByName(string name);
15 | }
16 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/IMessageCollectionFactory.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Objects;
2 | using System;
3 |
4 | namespace OpenTibia.Game.Common.ServerObjects
5 | {
6 | public interface IMessageCollectionFactory : IDisposable
7 | {
8 | IMessageCollection Create();
9 | }
10 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/INpcFactory.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Objects;
2 | using OpenTibia.FileFormats.Xml.Npcs;
3 | using Npc = OpenTibia.Common.Objects.Npc;
4 |
5 | namespace OpenTibia.Game.Common.ServerObjects
6 | {
7 | public interface INpcFactory
8 | {
9 | void Start(NpcFile npcFile);
10 |
11 | NpcMetadata GetNpcMetadata(string name);
12 |
13 | Npc Create(string name, Tile spawn);
14 |
15 | void Attach(Npc npc);
16 |
17 | bool Detach(Npc npc);
18 |
19 | void ClearComponentsAndEventHandlers(Npc npc);
20 | }
21 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/IPathResolver.cs:
--------------------------------------------------------------------------------
1 | namespace OpenTibia.Game.Common.ServerObjects
2 | {
3 | public interface IPathResolver
4 | {
5 | bool Exists(string relativePath);
6 |
7 | string GetFullPath(string relativePath);
8 | }
9 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/IPathfinding.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Common.Structures;
2 |
3 | namespace OpenTibia.Game.Common.ServerObjects
4 | {
5 | public interface IPathfinding
6 | {
7 | bool CanThrow(Position fromPosition, Position toPosition);
8 |
9 | MoveDirection[] GetMoveDirections(Position fromPosition, Position toPosition, bool allowProtectionZone);
10 | }
11 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/IPluginLoader.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Reflection;
4 |
5 | namespace OpenTibia.Game.Common.ServerObjects
6 | {
7 | public interface IPluginLoader : IDisposable
8 | {
9 | void Start();
10 |
11 | Type GetType(string typeName);
12 |
13 | IEnumerable GetTypes(Type baseClass);
14 |
15 | Assembly GetAssembly(string pluginName);
16 |
17 | IEnumerable< KeyValuePair > GetAssemblies();
18 | }
19 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/IRandomization.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 |
3 | namespace OpenTibia.Game.Common.ServerObjects
4 | {
5 | public interface IRandomization
6 | {
7 | bool HasProbability(double probability);
8 |
9 | int Take(int minInclusive, int maxInclusive);
10 |
11 | T Take(IList array);
12 |
13 | T Take(IList array, int[] weights);
14 |
15 | T[] Shuffle(T[] array);
16 | }
17 | }
--------------------------------------------------------------------------------
/mtanksl.OpenTibia.Game.Common/Common/ServerObjects/IScriptCollection.cs:
--------------------------------------------------------------------------------
1 | using OpenTibia.Game.Scripts;
2 | using System;
3 | using System.Collections.Generic;
4 |
5 | namespace OpenTibia.Game.Common.ServerObjects
6 | {
7 | public interface IScriptCollection : IDisposable
8 | {
9 | void Start();
10 |
11 | object GetValue(string key);
12 |
13 | T GetScript() where T : Script;
14 |
15 | IEnumerable