├── .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